# Patent

## Title
Methods, systems, and computer readable media for configurable diameter address resolution

## Abstract

Methods, systems, and computer readable media for configurable Diameter address resolution are disclosed. One method includes, at a Diameter signaling router (DSR), sending Diameter signaling messages to and receiving Diameter signaling messages from Diameter signaling entities in a network. The method further includes providing for configuration of a plurality of routing entity identities and an order for preferentially using the routing entity identities in performing Diameter address resolution. The method further includes routing Diameter signaling messages using Diameter address information determined in the Diameter routing address resolution.

## Background
PRIORITY CLAIM
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/454,462, filed Mar. 18, 2011; the disclosure of which is incorporated herein by reference in its entirety.


TECHNICAL FIELD
The subject matter described herein relates to routing Diameter messages. More particularly, the subject matter described herein relates to methods, systems, and computer readable media for configurable Diameter address resolution.
BACKGROUND
In Diameter networks, it may be desirable to for network operators to direct Diameter signaling messages for specific subscribers or subscriber groups to nodes assigned to the subscribers or subscriber groups. For example, a network operator may have more than one home subscriber server (HSS), policy and charging rules function (PCRF), or online charging system (OCS). The network operator may desire to define end to end routing from one or more mobility management entities (MMEs), serving GPRS support nodes (SGSNs), or other nodes to the HSSs, PCRFs, or OCSs, such that messages pertaining to specific subscribers or subscriber groups are directed to specific nodes. Conventional Diameter routing that requires the message originator to specify the final destination host or realm for a message may not be scalable. In addition, different Diameter signaling messages may include different parameters that identify subscribers or subscriber devices and that are located in different attribute value pairs of the Diameter signaling messages. It may be desirable to use some of these parameters for routing or routing address resolution. Accordingly, there exists a need for configurable Diameter address resolution.
SUMMARY
Methods, systems, and computer readable media for configurable Diameter address resolution are disclosed. One method includes, at a Diameter signaling router (DSR), sending Diameter signaling messages to and receiving Diameter signaling messages from Diameter signaling entities in a network. The method further includes providing for configuration of a plurality of routing entity identities and an order for preferentially using the routing entity identities in Diameter address resolution. The method further includes routing Diameter signaling messages using Diameter address information determined in the Diameter routing address resolution.
As used herein, the term “routing entity identity” refers to an identifier in a Diameter signaling message that identifies a subscriber, a subscriber device, or other entity that can be resolved into Diameter address information, such as a destination host, a destination realm, or both.
The subject matter described herein may be implemented using non-transitory computer readable medium having stored thereon executable instructions that when executed by the processor of a computer control the computer to perform steps. In one implementation, the subject matter described herein may be implemented in software embodied in a computer readable medium and executable by a processor. Exemplary computer readable media suitable use with the subject matter described herein include disk memory devices, chip memory devices, programmable logic devices, and application specific integrated circuits. In addition, a computer readable medium that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across plural devices or computing platforms.



BRIEF DESCRIPTION OF THE DRAWINGS
Preferred embodiments of the subject matter described herein will now be explained with reference to the accompanied drawing of which:
FIG. 1 is a network diagram illustrating a DSR capable of performing Diameter address resolution according to an embodiment of the subject matter described herein;
FIG. 2 is a network diagram illustrating a DSR that simultaneously appears as different Diameter node types according to an embodiment of the subject matter described herein;
FIG. 3 is a block diagram illustrating a hierarchy of tables used for Diameter address resolution according to an embodiment of the subject mattered described herein;
FIG. 4 is a block diagram illustrating an exemplary internal architecture for DSR configured to perform Diameter address resolution according to an embodiment of the subject matter described herein;
FIG. 5 is a network diagram illustrating a hierarchy of DSRs capable of performing Diameter address resolution with individual address resolution override according to an embodiment of the subject described herein;
FIG. 6 is a network diagram illustrating prevention of identical address resolution by multiple DSRs configured with Diameter address resolution according to an embodiment of the subject matter described herein; and
FIG. 7 is a flow chart of an exemplary process for configurable Diameter address resolution according to an embodiment of the subject matter described herein.



DETAILED DESCRIPTION
The subject matter described herein includes methods, systems, and computer readable media for configurable Diameter address resolution. In one exemplary implementation, Diameter address resolution may be provisioned on a DSR. FIG. 1 is a network diagram illustrating a Diameter signaling router with Diameter address resolution according to an embodiment of the subject matter described herein. Referring to FIG. 1, DSR 100 includes network interfaces 102 for sending Diameter messages to and receiving Diameter messages from various network nodes, a Diameter address resolution module 104 for resolving Diameter addresses based on parameters in the messages, and a routing module (RM) 105.
According to an aspect of the subject matter described herein, Diameter address resolution module 104 may provide for configuration of routing entity identities used to search received Diameter signaling messages and, if located, to be used in Diameter address resolution. For example, Diameter address resolution module 104 may include a configuration interface accessible via a terminal local to DSR 100 and/or over a network that allows a user, such as a manufacturer or network operator, to populate data structures with routing entity identifiers, message command codes, preferences among routing entity identity identifiers, attribute value pairs to search for the routing entity identifiers, routing exception rules, and other parameters associated with Diameter address resolution. Exemplary data structures that may be populated by the user will be described in detail below.
In the network illustrated in FIG. 1, DSR 100 is connected to one or more MME nodes 106, one or more call session control function (CSCF) nodes 108, one or more SGSNs 110, one or more HSSs 112 one or more PCRF nodes 114, and one or more online or offline charging system (OCS or OFCS) nodes 116. In order for the network operator to be able to flexibly provision subscriber records among such nodes, configurable address resolution may be required. In one implementation, Diameter address resolution module 104 provides for configuration of a preferred hierarchy of address resolution rules to be applied to received Diameter signaling messages. For example, Diameter user identities, such as international mobile station identifiers (IMSIs), mobile subscriber ISDN numbers (MSISDNs), and IP multimedia public identities (IMPUs), can be assigned a preference order such that a received message is searched to determine when a preferred user identify is present. If that identity is present, Diameter address resolution module 104 may use that identity in an address resolution lookup. If that identity is not present, Diameter address resolution module 104 may use a next most preferred identity to perform the address resolution lookup. In one exemplary implementation, Diameter address resolution may be Diameter-application-independent to support user identity routing of Diameter application messages to any Diameter node via network operator configuration. For example, a Diameter signaling message having a particular user identity may be routed to a Diameter node provisioned for that user identity, independently of Diameter application identifying information in the message.
A DSR that supports Diameter address resolution may simultaneously support the roles of a Diameter proxy agent and a Diameter redirect agent on the same DSR. FIG. 2 illustrates this capability. In FIG. 2, DSR 100 simultaneously supports Diameter proxy and redirect agent roles, depending on the application ID or interface. For example, for the S6a interface, DSR 100 functions as a Diameter proxy agent. The S6a interface is the interface between the MME and the HSS. Accordingly, for Diameter signaling messages between MME 106 and HSS 112, DSR 100 may function as a proxy agent. Similarly, on the Cx interface, DSR 100 may function as a redirect agent. The Cx interface is the interface between the CSCF and the HSS. Accordingly, for messages between CSCF 108 and HSS 112, DSR 100 may function as a redirect agent. The remaining interfaces are specified in table 200 that may be implemented DSR 100.
Diameter address resolution that may be implemented by DSR 100 preferably resolves message parameters into a destination address. The network operator may be able to configure at least one of the following parameters for each destination address:

    
    
        Destination Address Name
        For Proxy Agent Addressing:
        
            Realm
            Host (fully qualified domain name (FQDN)
        
        
        For redirected addressing:
        
            Diameter URI
            Note: Redirect agents respond with a Diameter URI containing the destination address's FQDN and other optional parameters.
        
        
        Allow subsequent address resolutions:
        
            Subsequent address resolutions, i.e., multiple address resolutions for the same Diameter signaling message by different DSRs, may be permitted or not, depending on the preference of the network operator. For example, it may be desirable to allow subsequent address resolutions if an address resolution hierarchy is being implemented. However, if each DSR is configured with at least some overlapping address resolution database entries, steps may be taken to prevent multiple invocations of the same Diameter address resolution for the same message. Exemplary steps will be described in detail below.
        
        
        Address resolution may be based on the following message content:
        
            Application ID
            Command code
            User identity

DSR 100 may obtain various different types of user identities for address resolution from different types of nodes. The following types of user identities may be obtained from the corresponding nodes:

        
        
        Subscriber data concerning a specific MS from the HSS by use of each of the following references: IMSI, MSISDN
        Subscriber IP multimedia service data containing a specific IMS subscription from the HSS: private user identity, public user identity
        PSI IP multimedia service data from the HSS: public service identity
        Subscriber data concerning a specific MS from the VLRs: IMSI, P-TMSI
        Subscriber data concerning a specific a MS from the SGSN: IMSI, P-TMSI, IMEI
        Subscriber data concerning a specific MS from the GGSN: IMSI, IMEI
        Subscriber data concerning a specific MS from the MME: IMSI. 3GPP TS 23.008 defines different types of identities that can be associated with a user or subscriber. Different types of identities may be used in different domains. Circuit switched and packet switched domain user identities that may be used include:
        IMSI, as defined 3GGP TS 23.003. The IMSI is permanent subscriber data. The IMSI may be stored in the HLR, HSS, VLR, SGSN, S4-SGSN, GGSN, MME, S-GW, P-GW, and SMLC.
        MSISDN. The MSISDN is permanent subscriber data that is stored in the HLR, VLR, and GN/GP-SGSN.
    
    


Other types of user identities may be used by DSR 100 in performing Diameter address resolution are IP multimedia domain user identities as specified in 3GPP TS 23.008 Section 3. Examples of IMS user identities are as follows:

    
    
        Private User Identity
        
            Applicable to IMS subscribers only
            As defined in 3GPP TS 23.002, takes the form of a network access identifier (NAI), in the form “username@realm”, as defined in RFC 4282
            Note: As defined in 3GPP TS 23.008 section 3.1, a private user identity either can be an IMPI (IP multimedia private identity), if the authentication data comes from the IM domain or it can be derived from the IMSI if the authentication data comes from the CS/PS domain
            Permanent subscriber data stored in the HSS and in the S-CSCF
        
        
        Public User Identity
        
            An IMS subscriber can have one or several instances of public user identity or wildcarded public user identity
            As defined in 3GPP TS 23.002, takes the form of a SIP or TEL URI
            Permanent subscriber data stored in HSS, S-CSCF and BSF
            Assumption: This always refers to the IMPU (IP multimedia public identity)
        
        
        Private Service Identity
        
            Applicable to a PSI user
            Similar to a private user identity in the form of NAI
            Permanent data stored in the HSS and in the S-CSCF
        
        
        Public Service Identity (PSI)
        
            Identifies a service, or a specific resource created for a service on an application service
            May match either to a distinct PSI or a wildcarded PSI that is stored in the HSS
            As defined in 3GPP TS 23.002, takes the form of a SIP or TEL URI
            Permanent data stored in HSS or S-CSCF
        
        
    
    


Table 1 shown below illustrates an example of user identities that may be used by DSR 100 in performing Diameter address resolution.







TABLE 1







Diameter Message Parameters that are Candidates for Address Resolution












Interface
3GPP



Dest Node


(Application ID)
Spec
Command Code
Routing Entity Identities Supported
AVP (Spec)
Type





Cx (16777216)
29.228
LIR (Location-Information)
IMPU (M)
Public-Identity
HSS



29.229
MAR (Multimedia-Information)
IMPU (M), IMSI (M)
Public-Identity, User-Name




SAR (Server-Assignment)
IMPU (C), IMSI (C)
PubIic-ldentity*,User-Name




UAR (User-Authorization)
IMPU (M), IMSI (M)
Public-Identity, User-Name


S6a/S6d (16777251)
29.272
AIR (Authentication-Info)
IMSI (M)
User-Name
HSS




PUR (Purge)
IMSI (M)
User-Name




ULR (Update Location)
IMSI (M)
User-Name


Sh (16777217)
29.328
PUR (Profile-Update)
IMPU (C), MSISDN (C)
User-Identity (Grouped)
HSS



29.329
SNR (Subscribe-Notifications)
IMPU (C), MSISDN (C)
User-Identity (Grouped)




UDR (User-Data)
IMPU (C), MSISDN (C)
User-Identity (Grouped)


Zh (16777221)
29.109
MAR (Multimedia-Information)
IMPU (O), IMPI (O)
Public-Identity, User-Name
HSS


Gx (16777224)
29.210
CCR (Credit-Control)
MSISDN (O), IMSI (O), IMPU (O)
Subscription-Id* (Grouped)
PCRF


Gx (16777238)
29.212

IPv4 Address (O)
Framed-IP-Address





IPv6 Prefix Address (O)
Framed-IPv6-Prefix


Gx over Gy
29.210
CCR (Credit-Control)
Same as Gx
Same as Gx
PCRF


(16777225)


Rx (16777236)
29.214
AAR (Authorize-Authenticate)
Same as Gx
Same as Gx
PCRF




STR (Session-Termination)??


Ro**** (4**)
32.225
CCR (Credit-Control)
Same as Gx
Same as Gx
OCS



32.299


Ga/Gz (3***)
32.295
ACR (Accounting)
IMSI (O)
User-Name
OFCS


Rf (3***)
32.225
ACR (Accounting)
IMSI (O)
User-Name
OFCS



32.299

MSISDN (O), IMSI (O), IMPU (O)
Service-Information* (Grouped)





In Table 1, the following legend applies:


*Multiple Instances are possible


**Diameter Credit Control Application (DCCA) defined in RFC 4006


***Diameter Base Accounting Application defined in RFC 3588


****Gy functionality included in Ro


(M) Mandatory Information Element (IE)


(C) Conditional IE


(O) Optional IE






According to an aspect of the subject matter described herein, DSR 100 and more specifically, Diameter address resolution module 104, may implement a routing entity identity preference list where messages are searched for specific routing entity identities and routing rules are applied according to preferences among the routing entity identities. As illustrated in Table 1, Diameter messages may have one or more routing entity identities. The user identities may be conditional and optional, which means that sometimes a message has an IMSI only, sometimes an IMPU only, sometimes an MSISDN only, and sometimes combinations of these parameters. Diameter address resolution module 104 may provide a generic framework that allows the operator to determine, through user configuration, which routing entity identity types in each message to use for an address resolution. Routing entity identity preferences may be supported by the routing entity identity preference list implemented in DSR100 and that is configurable by the network operator. The routing entity identity preference list may include multiple identities ordered according to a network operator's preference for each application ID, command code ordered pair. The routing entity identity preference list may define routing entity identities that can be used for address resolution and the order in which address resolution should look for the user identities in a message. For example, for the Cx interface in Table 1, the routing entity identity preference list for the ordered pair (Cx interface (16777216), *) may be:
1. IMPU—look for an IMPU first; and
2. IMSI—if a valid IMPU is not found, then look for an IMSI
Each type of routing entity identity may be carried in a finite set of message attribute value pairs (AVPs). In the 3GPP applications listed in Table 1, the routing entity identities that address resolution may support can be located in the AVPs specified in Table 2 below.







TABLE 2







AVPs for Routing Entity Identity Types









AVPs














Routing



Sub-





Entity
User-
Public-

scrip-
Service-
Framed-
Framed-


Identity
Iden-
Iden-
User-
tion-
Informa-
IP-
IPv6-


Type
tity
tity
Name
Id
tion
Address
Prefix





IMSI


X
X
X




MSISDN
X


X
X


IMPU
X
X

X
X


IPv4





X


Address


IPv6






X


Address









Table 2 lists combinations of routing entity identities and AVPs that may be present in Diameter signaling messages and used by address resolution module 104. However, the subject matter described herein is not limited to the examples in Table 2. Using any routing entity identity and AVP combination to search received Diameter signaling messages and perform address resolution is intended to be within the scope of the subject matter described herein.
One implementation, to provide a generic framework to support any Diameter application, Diameter address resolution module 104 will look for a routing entity identity type in the set of AVPs shown in Table 2 regardless of the application ID or command code in the received message. Address resolution module 104 will initially search the message looking for the AVP's that may contain the highest priority routing entity identity type that the operator has defined. As shown in Table 2, a routing entity identity type may be located in more than one AVP. This will be described in more detail below. Routing entity identities may also be embedded in AVPs of type “grouped”.
When address resolution module 104 encounters an AVP which may contain the desired routing entity identity type for which it is searching, Diameter address resolution module 104 may perform the following:
Determine whether the routing entity identity type is actually in the AVP (This mainly applies to grouped AVPs); and
If the desired routing entity identity type is found, than the address content may be verified (e.g., doesn't contain any invalid address characters). Address normalization may be performed to eliminate such characters. Address normalization will be described in more detail below.
If the desired routing entity identity is not found in the candidate AVP or the AVP contains the desired routing entity identity but its content is not supported by address resolution module 104, then address resolution module 104 may continue searching the message for another candidate AVP. Because multiple instances of AVPs may exist in the same message, address resolution module 104 may search through all AVPs and AVPs instances in the message that may contain the desired routing entity identity until a valid address is found.
If a valid routing entity identity is not found for the highest priority routing entity identity preference, and a next highest routing entity identity preference has been defined, then an address resolution module 104 will repeat the above procedure by searching the message for the next highest priority routing entity identity that has been defined. The procedure may be repeated until a valid routing entity identity is found or the preference list is exhausted. If no routing entity identity is found, then routing exception handling may be performed. Routing exception handling will be described in more detail below. If a valid address is found, then routing entity identity searching is complete. Address resolution module 104 may take the address digits and search a data structure referred to as a digit range table (DRT) associated with the application ID, command code, and routing entity identity type, looking for a match. If the DRT search fails (no matches), then routing fails and no further address resolution processing of the ingress message will occur. Routing exception handling with then be performed. If the DRT search is successful, then the destination address associated with the matching entry is used for routing the message. Individual address override may also be performed, as will be described in more detail below.
In the preceding paragraph, it is indicated that address resolution module 104 serially searches a received message until a valid routing entity identity is found. However, the subject matter described herein is not limited to such an embodiment. In an alternate embodiment, address resolution module 104 may search a received message for all possible routing entities and then perform the DRT lookup on the entities in the priority order configured by the user until a lookup is successful. A DRT is a set of addresses for a user or routing entity identity type which are serviced by server type (e.g., IMS-HSS, LTE-HSS, PCRF, OCS, OFCS). Each entry in the DRT may be a continuous block or range of addresses which are serviced by one of the servers (e.g., LTE-HSS1). A DRT may be associated with a destination address, which is typically a specific Diameter node assigned a FQDN. FIG. 3 is an example of a data structure for a DRT that may be used by Diameter address resolution module 104. Referring to FIG. 3, an ingress message received by Diameter address resolution module 104 is searched for its most preferred routing entity identity. That identity, if present, is used to locate a destination address using the hierarchy illustrated in FIG. 3. If the most preferred identity is not present, then address resolution using the hierarchy illustrated in FIG. 3 is performed using the next most preferred routing entity identity.
Once the address is resolved using the hierarchy illustrated in FIG. 3, final routing is performed. Final routing may be performed by routing module 105 illustrated in FIG. 1. The final routing that is performed may depend on the Diameter node type for the ingress application ID, as illustrated in FIG. 2.

    
    
        If the user configurable Diameter node type for the ingress application ID is proxy agent, final routing may be performed as follows:
        
            If the destination address has been configured with a Realm:
            
                Address resolution module 104 will replace the destination realm and destination host AVPs in the ingress message with a destination-realm, and, if the destination address has a FQDN, also insert a single destination host AVP immediately after the header
            
            
            Otherwise (destination address has been configured with a FQDN only):
            
                Address resolution will replace the destination host AVP in the ingress message with a single destination host AVP after the header
            
            
        
        
        If the user configurable Diameter node type for the ingress application ID is redirect agent, final routing may be performed as follows:
        
            If the destination address has been configured with a Diameter URI:
            
                Send a Normal redirect agent answer response with E bit=1, result-code value=3006 (DIAMETER_REDIRECT_INDICATION), and a single redirect-host AVP with a resolved destination addresses Diameter URI
                Note: Diameter supports the ability for a redirect agent to respond with a prioritized list of destinations (multiple instances of the redirect host AVP). However, this capability is optional.
            
            
            Otherwise (destination address has been misconfigured for sending redirect responses):
            
                Send an abnormal redirect agent answer response with result-code equals 5012 (DIAMETER_UNABLE_TO_COMPLY)
                Generate OAM event
            
            
        
        
    
    


Once the final address is resolved, the message is forwarded to the Diameter routing layer where the message is routed from the ingress Diameter message processing module to the egress Diameter processing module associated with the destination. FIG. 4 illustrates an exemplary architecture for DSR 100. In FIG. 4, DSR 100 includes a plurality of message processors 400 connected to each other via a bus 402. Each message processor includes an address resolution module 104 and a routing module 105. For ingress messages, the receiving address resolution module 104 determines the Diameter routing address and the routing module 105 forwards the message to the message processor 400 associated with the next hop to that address. The egress message processor 400 may maintain Diameter routing layer message queues, which may be used to abort routing if the queues are full and thereby control the flow of messages directed to a particular destination node.
According to another aspect of the subject matter described herein, address resolution module 104 may perform routing exception processing if it is unable to find a Diameter destination address for a message. Routing exception processing may be configurable, and may be performed as follows:

    
    
        Address resolution module 104 encounter problems which prevent it from successfully finding a Destination Address for the message:
        
            (1) The Application ID in the ingress message is not provisioned for Address Resolution
            (2) The Application ID is valid but the Command Code in the message is not provisioned for address resolution
            (3) The message does not contain a routing entity specified in the routing entity identity for the ordered pair (Application ID, Command Code)
            (4) A valid routing entity identity was found but did not match a DRT entry
        
        
        If the Application ID is not supported by address resolution (as determined from user-configuration) then the Diameter routing layer address resolution table (which defines application identities for which address resolution is to be performed) is most likely mis-aligned with address resolution's configuration.
        
            An application-specific response cannot be sent
            Address resolution may send an Answer response with Result-Code AVP value set to 3007 (DIAMETER_APPLICATION_UNSUPPORTED)
        
        
        For routing exceptions associated with Application IDs supported by address resolution (exceptions 2-4 above), address resolution module 104 may provide the following user-configurable ACTION options:
        
            Forward route the message unchanged (Default)
            Forward route the message with a Default Destination
            Send Answer response with a user-configurable Result-Code or Experimental-Result-Code value
        
        
        The routing exception ACTIONs will be user-configurable “per exception type” and “per Application ID*”
        
            Note: For the Diameter interfaces illustrated in FIG. 2, there appears to be no Command Codes within the same Diameter application which can be routed to a different default destination type (e.g., HSS versus PCRF). If this is needed, then the routing exception action “Default Destination” option should be configurable per (Application ID, Command Code)
        
        
    
    


Address Ranges and Address Normalization
As set forth in FIG. 3, tables 302, 304, and 306 used to resolve Diameter destination addresses may include ranges of addresses that are compared to the preferred user identity identified in a received message. An address range may include a range of digits, such as 9195550000-9195559999. Ranges may be of different sizes. For example, the range 303200-3032999 may coexist with the aforementioned 919 range. Ranges with equal start and end values may be supported. Address ranges may be supported for all user identity types, including IPv4 and IPv6 addresses.
Many characters present in an AVP may not be part of the user identity that is used to search the range tables illustrated in FIG. 3. For such identities, address resolution module 104 may perform address normalization. Address normalization may include removing prefixes such as “SIP:” and “TEL:+” from SIP and tel URIs in the messages. Similarly, suffixes such as “@ domain” in URIs and NAIs must be ignored. Visual separators, such as “.”, “-”, and “/” commonly found in URIs must be ignored. As an example of address normalization that may be performed by Diameter address resolution module 104, the raw AVP address: “tel:+1-919-444-1212” may be converted to “9194441212” after normalization.
AVPs Containing User Identities
As set forth above, address resolution module 104 may perform address resolution based on any one or more of the following AVPs that contain user identity address information.

    
    
        User-Identity
        Public-Identity
        MSISDN
        Subscription-ID
        Service-Information
        Framed-IP-Address
        Framed-IPv6-Prefix
    
    


The user identity AVP contains either the IMPU or the MSISDN. The IMPU is embedded in a public identity value pair. The MSISDN is embedded in a MSISDN AVP.
The public identity AVP contains an IMPU. The IMPU may be a type UTF-8 string and may be in the form of SIP URI or a tel URI.
The MSISDN AVP contains the MSISDN in international format. The MSISDN may be encoded as a TBCD string with two digits per octet. The MSISDN AVP contains the IMPI or the IMSI. The user identity address will be stored in the user name portion of the NAI. An example of an IMSI that may be encoded in the NAI is IMSI@ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org. An example of an IMPI that may be encoded in the NAI is 9194441212@vzw.com.
The subscription ID AVP may contain one of five user identity types as defined by the embedded subscription ID type AVP. The types that may be included are end user E.164 number, end user IMSI, end user SIP URI, end user NAI, or end user private address.
The service information AVP may contain one or more subscription ID AVPs. The subscription ID AVPs and the service information AVP may contain the identities described above. The framed IP address AVP may contain an IPv4 address of the subscriber. Similarly, the framed IPv6 prefix AVP may contain the IPv6 prefix of the subscriber's IPv6 address. The prefix is the routable portion of the IPv6 address.
Public identity and subscription ID AVPs may include SIP and/or tel URIs. SIP and tel URIs contain the IMPU of an IMS user. Because SIP and tel URIs have a canonical form, address resolution module 104 may extract the appropriate data, such as the E.164 number used to perform the address resolution.
Individual Address Resolution Override
In the example illustrated in FIG. 3, identities are used to search ranges of addresses. Range based address resolution assumes that all of the addresses of a certain type (e.g., IMSI) are divided into ranges that are allocated to a destination. It may be desirable to override range based address resolution for individual addresses. For example, as illustrated in FIG. 5, multiple DSRs 100 may be deployed in a hierarchical network. As messages arrive at gateway DSR 100A, its address resolution module may be provisioned to route the messages to one or more province DSRs 100B, 100C, or 100D. Each province DSR may perform the final address resolution and final routing. Address resolution at gateway DSR 100A may or may not be to the final destination. For example, if the operator wants final destination routing decisions to occur at the provinces, then the operator may configure gateway DSR 100A to resolve the addresses to the province DSRs.
At each province DSR 100B, 100C, or 100D, the operator may want the flexibility to transparently move subscribers (i.e., without forcing subscribers to change their phone numbers or subscriber identities). In this example, gateway DSR 100A will perform HSS address resolution to either province DSR 100B, 100C, or 100D. When gateway DSR 100A forwards a message to province DSR 100B, province DSR 100B may perform address resolution a second time to determine the final destination address. However, some of the subscribers in province 1 may have been moved to province 2. After the address resolution on province 100B successfully resolves to a destination address, province DSR 100B may review an individual override table associated with the DRT in province DSR 100B to see if the user identity address has been moved. If the user identity address is found, IOT resolution takes precedence over DRT resolution.
For each DRT that address resolution overriding is supported, a separate IOT will be required. An IOT may be configured with the following attributes:

    
    
        IOT Name
        DRT Name (which is associated with this IOT
        Address String
        For Proxy Agent addressing:
        
            Realm
            Host (FQDN)
        
        
        For Redirect Agent addressing:
        
            DiameterURI
        
        
        Allow Subsequent Address Resolutions: No (Default), Yes
        
            See subsequent slides on this topic

The use of Realm, Host, and DiameterURI values in the IOT as identical to the same attributes in the destination address table illustrated in FIG. 3.

        
        
    
    


Preventing Multiple Invocations of the Same Address Resolution Application
According to another aspect of the subject matter described herein, a DSR provisioned with address resolution as described herein may include the capability to prevent multiple identical address resolutions to be performed on the same message. This problem may occur if more than one DSR with overlapping address resolution data is deployed in a customer's network, as illustrated in FIG. 6. In FIG. 6, DSRs 1001 and 1002 are deployed in a customer's network. If DSR 1001 performs an address resolution, it is desirable to ensure that DSR 1002 does not perform the same address resolution on the same message. In one implementation, plural address resolution prevention may be configured on a per DRT and per IOT entry basis. For example, in the individual address resolution override use case, all of the HSS DRT entries in gateway DSR 100A may be configured to allow subsequent address resolutions to occur at the province DSRs. However, if the gateway DSRs HSS-DRT supports an IOT, any entries in the IOT which resolve to a final destination address are preferably not configured to allow subsequent address resolutions to occur. Once an address resolution is performed on a message, the message may be marked, based on the DRT or IOT entry, to indicate that the address resolution has been performed. If a subsequent address resolution is attempted on the same message, the marking from the previous address resolution may prevent the address resolution from being performed. A system wide user configurable parameter may also be used to disable the prevention solution.
FIG. 7 is a flow chart illustrating an exemplary overall steps for Diameter address resolution according to an embodiment of the subject matter described herein. Referring to FIG. 7, in step 700, a Diameter signaling message is received. For example, the message may be received by DSR 100 illustrated in FIG. 1. In step 702, it is determined whether Diameter address resolution applies to the message. DSR 100 may be configured such that specific applications IDs are provisioned for Diameter address resolution and others are configured for routing only. Table 1 shown above illustrates exemplary application identifiers for which address resolution may be configured.
If in step 702 it is determined that Diameter address resolution does not apply, control proceeds to step 704 where an operator configurable routing exception processing in action is performed. For example, DSR 100 may be configured to route the message unchanged, route the message to a default destination, or send an answer with a user configurable result code or experimental result code value.
Returning to step 702, if it is determined that Diameter address resolution applies, control proceeds to step 706 with a message is searched for an operator configurable preferred routing entity identity. As set forth above, the network operator may provision a list of preferred routing entity identities and attribute value pairs where the identities are located to be used in searching a received message. In step 708, if the preferred identity is determined to be present in the message, control proceeds to step 710 where one or more Diameter address resolution lookups are performed using the preferred identity. The lookup may be performed in a data structure, such as that illustrated in FIG. 3.
In step 712, it is determined whether the lookup was successful. If the lookup was successful in locating a matching entry, control proceeds to step 714 where operator configurable replacement or insertion of Diameter routing parameters and final routing are performed. As set forth above, if the received message is being routed, operator configurable replacement of parameters in the received message, such as the destination realm and/or the destination host, may be performed. The message may then be routed. If a new message, such as an answer to a received Diameter request, is being formed, the Diameter routing parameters located in the lookup may be inserted in the answer message and the message may be sent to the originator of the Diameter request.
Returning to step 708, if the preferred routing entity identity is determined not to be present in the received message, control proceeds to step 716 where it is determined whether the identity is the last identity in the preferred identity list. If the identity is the last identity, control proceeds to step 704 where operator configurable routing exception processing is performed as set forth above. If the identity is not the last identity in the preferred identity list, control proceeds to step 718 where the next identity is retrieved and then to step 706 where the message is searched for the next identity. Similarly, in step 712, if the Diameter address resolution lookup is not successful, control proceeds to step 716 where it is determined whether the identity for which the Diameter address resolution lookup was performed is the last identity in the preferred identity list. If the identity is the last identity, control proceeds to step 704 where operator configurable routing exception processing is performed. If in step 716, the identity is not the last identity, the next identity is extracted from the message in step 718 and control returns to step 706 where the message is searched for the next operator configurable preferred routing entity identity. The process may continue until the address resolution is performed or a routing exception occurs. The process may be repeated for each received Diameter signaling message.
It will be understood that various details of the presently disclosed subject matter may be changed without departing from the scope of the presently disclosed subject matter. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.

## Claims

1. A Diameter signaling router (DSR) including:
a network interface for sending Diameter signaling messages to and receiving Diameter signaling messages from Diameter signaling entities in a network;
a Diameter address resolution module configured to provide for configuration of a plurality of routing entity identities and an order of preference for using the plurality of routing entity identities in performing Diameter address resolution, wherein the Diameter address resolution module searches attribute value pairs within a received Diameter signaling message for specific routing entity identities by searching a received Diameter signaling message for a most preferred routing entity identity specified by the order, and, in response to failing to locate the most preferred routing entity identity, searching for a next most preferred routing entity identity, and, if located, using the next most preferred network routing entity identity in performing the routing address resolution, determines which routing entity identity to use for the message based on the configured order of preference by using, in the order, routing entity identities located in the message to perform the routing address resolution until an instance of the routing address resolution is successful, and uses the determined routing entity identity to look up Diameter address information; and
a Diameter routing module configured to route the Diameter signaling message using the Diameter address information determined by the Diameter routing address resolution module, wherein the routing entity identity comprises an identifier in a Diameter signaling message that identifies an entity and that is resolved into Diameter address information.

2. The system of claim 1 wherein the Diameter address resolution module provides for configuration of specific attribute value pairs to be searched for the routing entity identities.

3. The system of claim 1 wherein the Diameter address resolution module is configured to provide for configuration of routing exceptions for Diameter signaling messages for which the Diameter routing address resolution fails.

4. The system of claim 3 wherein the routing exceptions include forwarding received Diameter messages, routing received Diameter messages to a default destination, or formulating a Diameter answer message with a configurable error code.

5. The system of claim 1 wherein the Diameter address resolution module is configured to replace Diameter address information in received Diameter signaling messages to be routed or to insert the Diameter address information determined in the Diameter address resolution into Diameter response messages generated in response to received Diameter request messages.

6. The system in claim 1 wherein the DSR is configured to function as a Diameter proxy agent and as a Diameter redirect agent.

7. The system in claim 1 wherein the Diameter address resolution module is configured to perform an individual address override lookup for a routing entity identity and, if successful, to bypass a range based Diameter routing address resolution lookup.

8. The system of claim 7 wherein the individual override lookup allows records for individual subscribers to be moved among Diameter service nodes.

9. The system of claim 1 wherein the Diameter address resolution module is configured to prevent multiple invocations of the same Diameter address resolution by marking a Diameter signaling message for which a Diameter routing address resolution is performed.

10. A method for configurable Diameter address resolution, the method comprising:
in a Diameter signaling router (DSR):
sending Diameter signaling messages to and receiving Diameter signaling messages from Diameter signaling entities in a network;
providing for configuration of a plurality of routing entity identities and an order of preference for using the plurality of routing entity identities in performing Diameter address resolution; and
receiving a Diameter signaling message, searching attribute value pairs within the received message for specific routing entity identities by searching a received Diameter signaling message for a most preferred routing entity identity specified by the order, and, in response to failing to locate the most preferred routing entity identity, searching for a next most preferred routing entity identity, and, if located, using the next most preferred network routing entity identity in performing the routing address resolution, determining which routing entity identity to use for the message based on the configured order of preference by using, in the order, routing entity identities located in the message to perform the routing address resolution until an instance of the routing address resolution is successful, using the determined routing entity identity to look up Diameter address information, and routing the received message using the Diameter address information, wherein the routing entity identity comprises an identifier in a Diameter signaling message that identifies an entity and that is resolved into Diameter address information.

11. The method of claim 10 comprising providing for configuration of specific attribute value pairs in which the DSR is configured to search for the routing entity identities.

12. The method of claim 10 comprising providing for configuration of routing exceptions for Diameter signaling messages for which the Diameter routing address resolution fails.

13. The method of claim 12 wherein the routing exceptions include routing the messages, routing the messages to a default destination, and generating an answer message with an error code.

14. The method of claim 10 comprising replacing Diameter destination parameters in received messages to be routed or inserting Diameter address information determined in the Diameter address resolution in Diameter response messages to be transmitted in response to Diameter request messages.

15. The method of claim 10 comprising, at the DSR, functioning as both a Diameter proxy agent and a Diameter redirect agent.

16. The method of claim 10 wherein performing the Diameter address resolution comprises performing a lookup in an individual address override table followed by a lookup in a range-based table if the lookup in the individual address override table fails.

17. The method of claim 16 wherein the individual override table is provisioned with routing entity identities corresponding to subscribers whose records have been moved among Diameter service nodes.

18. The method of claim 10 comprising marking egress Diameter signaling messages for which address resolution is successful to prevent multiple invocations of the same Diameter address resolution.

19. A non-transitory readable medium having stored thereon executable instructions that, when executed by a processor of a computer, control the computer to perform steps comprising:
in a network node for sending Diameter signaling messages to and receiving Diameter signaling messages from Diameter signaling entities in a network:
providing for configuration of a plurality of routing entity identities and an order of preference for using the plurality of routing entity identities in performing Diameter address resolution; and
receiving a Diameter signaling message, searching attribute value pairs within the received message for specific routing entity identities by searching a received Diameter signaling message for a most preferred routing entity identity specified by the order, and, in response to failing to locate the most preferred routing entity identity, searching for a next most preferred routing entity identity, and, if located, using the next most preferred network routing entity identity in performing the routing address resolution, determining which routing entity identity to use for the message based on the configured order of preference by using, in the order, routing entity identities located in the message to perform the routing address resolution until an instance of the routing address resolution is successful, using the determined routing entity identity to look up Diameter address information, and routing the received message using the Diameter address information, wherein the routing entity identity comprises an identifier in a Diameter signaling message that identifies an entity and that is resolved into Diameter address information.