view Side-By-Side changes
AAA Working Group Pat R. Calhoun Internet-Draft Sun Microsystems, Inc. Category: Standards Track Haseeb Akhtar<draft-ietf-aaa-diameter-06.txt><draft-ietf-aaa-diameter-07.txt> Nortel Networks Jari Arkko Oy LM Ericsson Ab Erik Guttman Sun Microsystems, Inc. Allan C. Rubens Tut Systems, Inc. Glen Zorn Cisco Systems, Inc.JuneJuly 2001 Diameter Base Protocol Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at: http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at: http://www.ietf.org/shadow.html. Distribution of this memo is unlimited. Copyright (C) The Internet Society 2001. All Rights Reserved. Calhoun et al. expiresDecember 2001January 2002 [Page 1] Internet-DraftJuneJuly 2001 Abstract The Diameter base protocol is intended to provide a AAA framework for Mobile-IP, NASREQ and ROAMOPS. This draft specifies the message format, transport, error reporting and security services to be used by all Diameter applications and MUST be supported by all Diameter implementations. Table of Contents 1.0 Introduction 1.1 Diameter Protocol 1.2 Requirements language 1.3 Terminology 2.0 Protocol Overview 2.1 Transport 2.1.1 SCTP Guidelines 2.2 Securing Diameter Messages 2.3 Diameter Protocol Extensibility 2.3.1 Defining new AVP Values 2.3.2 Creating new AVPs 2.3.3 Creating a new Diameter Applications 2.3.4 Application authentication procedures 2.4 DiameterApplicationsApplication Compliance 2.5 Application Identifiers 2.6 Peer Table 2.7 Realm-Based Routing Table 2.8 Role of Diameter Agents2.5.12.8.1 Relay Agents2.5.22.8.2 Proxy Agents2.5.32.8.3 Redirector Agents2.5.42.8.4 Translation Agents2.6 Diameter Server Discovery3.0 Diameter Header 3.1 Command Code Definitions 3.2 Command Code ABNF specification 3.3 Diameter Command Naming Conventions 4.0 Diameter AVPs 4.1 AVP Header 4.2 Optional Header Elements 4.3 AVP Data Formats 4.4 Derived AVP Data Formats 4.5 Grouped AVP Values 4.5.1 Example AVP with a Grouped Data type 4.6 Diameter Base Protocol AVPs 5.0 Diameter Peers 5.1 Connecting to Peers 5.2 Diameter Peer Discovery Calhoun et al. expires January 2002 [Page 2] Internet-Draft July 2001 5.3 Capabilities Negotiation 5.3.1 Capabilities-Exchange-Request 5.3.2 Capabilities-Exchange-Answer 5.3.3 Vendor-Id AVP 5.3.4 Firmware-Revision AVP 5.3.5 Host-IP-Address AVP 5.3.6 Supported-Vendor-Id AVP 5.3.7 Product-Name AVP 5.3.8 Alternate-Peer AVP 5.4 Disconnecting Peer connections 5.4.1 Disconnect-Peer-Request 5.4.2 Disconnect-Peer-Answer 5.4.3 Disconnect-Cause AVP 5.5 Transport Failure Detection 5.5.1 Device-Watchdog-Request 5.5.2 Device-Watchdog-Answer 5.5.3 Transport Failure Algorithm 5.5.4 Failover/Failback Procedures 5.6 Peer State Machine 5.6.1 Incoming connections 5.6.2 Events 5.6.3 Actions 5.6.4 The Election Process 6.0 Diameter message processing5.16.1 Diameter request routing overview5.1.16.1.1 Originating a Request5.1.26.1.2 Sending a Request5.1.36.1.3 Receiving Requests 6.1.4 Processing Local RequestsCalhoun et al. expires December 2001 [Page 2] Internet-Draft June 2001 5.1.46.1.5 Request Forwarding5.1.5 Peer Table 5.1.66.1.6 Request Routing5.1.7 Realm-Based Routing Table 5.1.86.1.7 Redirecting requests5.1.96.1.8 Relaying and Proxying Requests5.26.1.9 Relaying and Proxying Server-Initiated Requests 6.2 Diameter Answer Processing5.2.16.2.1 Processing received Answers5.2.26.2.2 Relaying and Proxying Answers5.36.3 Hiding Network Topology5.46.4 Origin-Host AVP5.56.5 Origin-Realm AVP5.66.6 Destination-Host AVP5.76.7 Destination-Realm AVP5.86.8 Routing AVPs5.8.16.8.1 Route-Record AVP5.8.26.8.2 Proxy-Info AVP5.8.36.8.3 Proxy-Host AVP5.8.46.8.4 Proxy-State AVP5.9 Redirect-Host AVP 5.10 Redirect-Host-Usage AVP 5.11 Redirect-Max-Cache-Time AVP 6.0 Capabilities Negotiation 6.1 Application Identifiers 6.2 Capabilities-Exchange-Request 6.3 Capabilities-Exchange-Answer 6.4 Vendor-Id AVP 6.5 Firmware-Revision AVP 6.6 Auth-Application-Id AVP 6.7 Host-IP-Address AVP 6.8 Supported-Vendor-Id6.8.5 Source-Route AVP Calhoun et al. expires January 2002 [Page 3] Internet-Draft July 2001 6.9Product-NameAuth-Application-Id AVP 6.10 Acct-Application-Id AVP 6.11 Vendor-Specific-Application-Id AVP 6.12 Redirect-Host AVP 6.13 Redirect-Host-Usage AVP 6.14 Redirect-Max-Cache-Time AVP 7.0Transport Failure Detection 7.1 Device-Watchdog-Request 7.2 Device-Watchdog-Answer 7.3 Failover/Failback Procedures 8.0 Peer State Machine 8.1 Incoming connections 8.2 Events 8.3 Actions 8.4 The Election Process 9.0Error Handling9.17.1 Result-Code AVP9.1.17.1.1 Informational9.1.27.1.2 Success9.1.37.1.3 Protocol ErrorsCalhoun et al. expires December 2001 [Page 3] Internet-Draft June 2001 9.1.47.1.4 Transient Failures9.1.57.1.5 Permanent Failures9.2 Message-Reject-Answer 9.37.2 Error Bit 7.3 Error-Message AVP9.47.4 Error-Reporting-Host AVP9.57.5 Failed-AVP AVP10.08.0 Diameter User Sessions10.18.1 Authorization Session State Machine10.28.2 Accounting Session State Machine10.38.3 Server-Initiated Re-Auth10.3.18.3.1 Re-Auth-Request10.3.28.3.2 Re-Auth-Answer10.48.4 Session Termination10.4.18.4.1 Session-Termination-Request10.4.28.4.2 Session-Termination-Answer10.58.5 Aborting a Session10.5.18.5.1 Abort-Session-Request10.5.28.5.2 Abort-Session-Answer10.68.6 Inferring Session Termination from Origin-State-Id10.78.7 Auth-Request-Type AVP 8.8 Session-Id AVP10.88.9 Authorization-Lifetime AVP10.98.10 Auth-Grace-Period AVP 8.11 Auth-Session-State AVP 8.12 Re-Auth-Request-Type AVP 8.13 Session-Timeout AVP10.108.14 User-Name AVP10.118.15 Termination-Cause AVP10.128.16 Origin-State-Id AVP10.138.17 Session-Binding AVP10.148.18 Session-Server-Failover AVP10.158.19 Multi-Round-Time-Out AVP10.168.20 Class AVP11.09.0 Accounting11.19.1 Server Directed Model11.29.2 Protocol Messages11.39.3 Application document requirements11.4Calhoun et al. expires January 2002 [Page 4] Internet-Draft July 2001 9.4 Fault Resilience11.59.5 Accounting Records11.69.6 Correlation of Accounting Records12.09.7 Accounting Command-Codes12.19.7.1 Accounting-Request12.29.7.2 Accounting-Answer13.09.8 Accounting AVPs13.19.8.1 Accounting-Record-Type AVP13.29.8.2 Accounting-Interim-Interval AVP13.39.8.3 Accounting-Record-Number AVP13.49.8.4 Accounting-Session-Id AVP13.59.8.5 Accounting-Multi-Session-Id AVP14.010.0 AVP Occurrence Table14.110.1 Base Protocol Command AVP Table14.210.2 Accounting AVP TableCalhoun et al. expires December 2001 [Page 4] Internet-Draft June 2001 15.011.0 IANA Considerations15.111.1 AVP Header15.1.111.1.1 AVP Code15.1.211.1.2 AVP Flags15.211.2 Diameter Header15.2.111.2.1 Command Codes15.2.211.2.2 Message Flags15.311.3 Application Identifier Values15.411.4 Result-Code AVP Values15.511.5 Accounting-Record-Type AVP Values15.611.6 Termination-Cause AVP Values15.711.7 Redirect-Host-Usage AVP Values15.811.8 Session-Server-Failover AVP Values15.911.9 Session-Binding AVP Values15.1011.10 Diameter TCP/SCTP Port Numbers16.011.11 Disconnect-Cause AVP Values 11.12 Auth-Request-Type AVP Values 11.13 Auth-Session-State AVP Values 11.14 Re-Auth-Request-Type AVP Values 12.0 Diameter protocol related configurable parameters17.013.0 Security Considerations18.014.0 References19.015.0 Acknowledgements20.016.0 Authors' Addresses21.017.0 Full Copyright Statement22.018.0 Expiration Date Appendix A. Diameter Service Template Calhoun et al. expiresDecember 2001January 2002 [Page 5] Internet-DraftJuneJuly 2001 1.0 Introduction Historically, the RADIUS protocol has been used to provide AAA services for dial-up PPP [42] and terminal server access. Over time, routers and network access servers (NAS) have increased in complexity and density, making the RADIUS protocol increasingly unsuitable for use in such networks. The Roaming Operations Working Group (ROAMOPS) has published a set of specifications [20, 43, 44] that define how a PPP user can gain access to the Internet without having to dial into his/her home service provider's modem pool. This is achieved by allowing service providers to cross-authenticate their users. Effectively, a user can dial into any service provider's point of presence (POP) that has a roaming agreement with his/her home Internet service provider (ISP), the benefit being that the user does not have to incur a long distance charge while traveling, which can sometimes be quite expensive. Given the number of ISPs today, ROAMOPS realized that requiring each ISP to set up roaming agreements with all other ISPs did not scale. Therefore, the working group defined a "broker", which acts as an intermediate server, whose sole purpose is to set up these roaming agreements. A collection of ISPs and a broker is called a "roaming consortium". There are many such brokers in existence today; many also provide settlement services for member ISPs. The Mobile-IP Working Group has recently changed its focus to inter administrative domain mobility, which is a requirement for cellular carriers wishing to deploy IETF-based mobility protocols. The current cellular carriers requirements [22, 23] are very similar to the ROAMOPS model, with the exception that the access protocol is Mobile-IP [45] instead of PPP. The Diameter protocol was not designed from the ground up. Instead, the basic RADIUS model was retained while fixing the flaws in the RADIUS protocol itself. Diameter does not share a common protocol data unit (PDU) with RADIUS, but does borrow sufficiently from the protocol to ease migration. The basic concept behind Diameter is to provide a base protocol that can be extended in order to provide AAA services to new access technologies. Currently, the protocol only concerns itself with Internet access, both in the traditional PPP sense as well as taking into account the ROAMOPS model, and Mobile-IP. Although Diameter could be used to solve a wider set of AAA problems, we are currently limiting the scope of the protocol in order to Calhoun et al. expiresDecember 2001January 2002 [Page 6] Internet-DraftJuneJuly 2001 ensure that the effort remains focused on satisfying the requirements of network access. Note that a truly generic AAA protocol used by many applications might provide functionality not provided by Diameter. Therefore, it is imperative that the designers of new applications understand their requirements before using Diameter. 1.1 Diameter Protocol The Diameter protocol allows peers to exchange a variety of messages. The base protocol provides the following facilities: - Delivery of AVPs (attribute value pairs) - Capabilities negotiation, as required in [20] - Error notification - Extensibility, through addition of new commands and AVPs, as required in [21] All data delivered by the protocol is in the form of an AVP. Some of these AVP values are used by the Diameter protocol itself, while others deliver data associated with particular applications which employ Diameter. AVPs may be added arbitrarily to Diameter messages, so long as the required AVPs are included and AVPs which are explicitly excluded are not included. AVPs are used by base Diameter protocol to support the following required features: - Transporting of user authentication information, for the purposes of enabling the Diameter server to authenticate the user. - Transporting of service specific authorization information, between client and servers, allowing the peers to decide whether a user's access request should be granted. - Exchanging resource usage information, which MAY be used for accounting purposes, capacity planning, etc. - Relaying, proxying and re-directing of Diameter messages through a server hierarchy. The Diameter base protocol provides the minimum requirements needed for an AAA transport protocol, as required by NASREQ [21], Mobile IP [22, 23], and ROAMOPS [20]. The base protocol is not intended to be used by itself, and must be used with a Diameter application, such as Mobile IP [10]. The Diameter protocol was heavily inspired and builds upon the tradition of the RADIUS [1] protocol. See section 2.4. for more information on Diameter applications. Any node can initiate a request. In that sense, Diameter is a peer to peer protocol. In this document, a Diameter client is the device that normally initiates a request for authentication and/or authorization Calhoun et al. expiresDecember 2001January 2002 [Page 7] Internet-DraftJuneJuly 2001 of a user. A Diameter server is the device that either forwards the request to another Diameter server (known as a proxy), or one that performs the actual authentication and/or authorization of the user based on some profile. Given that the server MAY send unsolicited messages to clients, it is possible for the server to initiate such messages. An example of an unsolicited message would be for a request that the client issue an accounting update. 1.2 Requirements language In this document, the key words "MAY", "MUST", "MUST NOT", "optional", "recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as described in [13]. 1.3 Terminology Accounting The act of collecting information on resource usage for the purpose of trend analysis, auditing, billing, or cost allocation. Accounting record A session record represents a summary of the resource consumption of a user over the entire session. Accounting gateways creating the session record may do so by processing interim accounting events or accounting events from several Authentication The act of verifying the identity of an entity (subject). Authorization The act of determining whether a requesting entity (subject) will be allowed access to a resource (object). AVP The Diameter protocol consists of a header followed by one or more Attribute-Value-Pair (AVP). The AVP includes a header and is used to encapsulation authentication, authorization or accounting information. Broker A broker is a business term commonly used in AAA infrastructures. A broker is either a relay, proxy or redirect server, and MAY be operated by roaming consortiums. Diameter Agent Calhoun et al. expiresDecember 2001January 2002 [Page 8] Internet-DraftJuneJuly 2001 A Diameter Agent is a host that is providing either server, relay, proxy or redirector services. Diameter Client A Diameter Client is a device at the edge of the network that performs access control. An example of a Diameter client is a Network Access Server (NAS) or a Foreign Agent (FA). Diameter Node A Diameter node is a host that implements the Diameter protocol, and acts either as a Client, or as a Proxy, Redirector, Server or Translation agent. Diameter Server A Diameter Server is one that handles authentication, authorization and accounting requests for a particular realm. By its very nature, a Diameter Server MUST support Diameter applications in addition to the base protocol. Downstream Server Diameter Proxy servers identify a downstream server as one that is providing routing services towards the Diameter client. Home Domain A Home Domain is the administrative domain with whom the user maintains an account relationship. Home Server See Diameter Server. Interim accounting An interim accounting message provides a snapshot of usage during a user's session. It is typically implemented in order to provide for partial accounting of a user's session in the event of a device reboot or other network problem that prevents the reception of a session summary message or session record. Local Domain A local domain is the administrative domain providing services to a user. An administrative domain MAY act as a local domain for certain users, while being a home domain for others. Network Access Identifier The Network Access Identifier, or NAI [3], is used in the Diameter protocol to extract a user's identity and realm. The identity is used to identify the user during authentication and/or authorization, while the realm is used for message routing purposes. Calhoun et al. expiresDecember 2001January 2002 [Page 9] Internet-DraftJuneJuly 2001 Proxy In addition to forwarding requests and responses, proxies enforce policies relating to resource usage and provisioning. This is typically accomplished by tracking the state of NAS devices. While proxies typically do not respond to client Requests prior to receiving a Response from the server, they may originate Reject messages in cases where policies are violated. As a result, proxies need to understand the semantics of the messages passing through them, and may not support all Diameter applications. Realm The string in the NAI that immediately follows the '@' character. NAI realm names are required to be unique, and are piggybacked on the administration of the DNS namespace. Diameter makes use of the realm, also loosely referred to as domain, to determine whether messages can be satisfied locally, or whether they must be proxied. Real-time Accounting Real-time accounting involves the processing of information on resource usage within a defined time window. Time constraints are typically imposed in order to limit financial risk. Relay Relays forward requests and responses based on routing-related AVPs and domain forwarding table entries. Since relays do not enforce policies, they do not examine or alter non-routing AVPs. As a result, relays never originate messages, do not need to understand the semantics of messages or non-routing AVPs, and are capable of handling any Diameter applications or message type. Since relays make decisions based on information in routing AVPs and domain forwarding tables they do not keep state on NAS resource usage or conversations in progress. Redirector Rather than forwarding requests and responses between clients and servers, Re-directs refer clients to servers and allow them to communicate directly. Since Re-directs do not sit in the forwarding path, they do not alter any AVPs transitting between client and server. Re-direct proxies do not originate messages and are capable of handling any message type, although they may be configured only to re-direct messages of certain types, while acting as Routing or Policy proxies for other types. As with Routing proxies, re-directs do not keep state with respect to conversations or NAS resources. Roaming Relationships Calhoun et al. expiresDecember 2001January 2002 [Page 10] Internet-DraftJuneJuly 2001 Roaming relationships include relationships between companies and ISPs, relationships among peer ISPs within a roaming association, and relationships between an ISP and a roaming consortia. Together, the set of relationships forming a path between a local ISP's authentication proxy and the home authentication server is known as the roaming relationship path. Session The Diameter protocol is session based. When an authorization request is initially transmitted, it includes a session identifier that is used for the duration of the session. The Session- Identifier AVP contains the identifier and must be globally unique.devices serving the same user.Upstream Server Diameter Proxy servers identify an upstream server as one that is providing routing services towards the home server for a particular message. 2.0 Protocol Overview The base Diameter protocol is never used on its own. It is always extended for a particular application. Three Diameter applications are defined by companion documents: NASREQ [7], Mobile IP [10], CMS Security [11]. These options are introduced in this document but specified elsewhere. Additional Diameter applications MAY be defined in the future (see Section15.3).11.3). Diameter Clients MUST support the base protocol, which includes accounting. In addition, they MUST fully support each Diameter application which is needed to implement the client's service, e.g. NASREQ and/or Mobile IP. A Diameter Client which does not support both NASREQ and Mobile IP, MUST be referred to as "Diameter X Client" where X is the application which it supports, and not a "Diameter Client." Diameter Servers must support the base protocol, which includes accounting. In addition, they MUST fully support each Diameter application which is needed to implement the intended service, e.g. NASREQ and/or Mobile IP. A Diameter Server which does not support both NASREQ and Mobile IP, MUST be referred to as "Diameter X Server" where X is the application which it supports, and not a "Diameter Server." Diameter Relays and Redirectors are, by definition, protocol transparent, and MUST transparently support the Diameter base protocol, which includes accounting, and all Diameter applications. Calhoun et al. expiresDecember 2001January 2002 [Page 11] Internet-DraftJuneJuly 2001 Diameter Proxies MUSTsuppportsupport the base protocol, which includes accounting. in addition, they MUST fully support each Diameter application which is needed to implement proxied services, e.g. NASREQ and/or Mobile IP. A Diameter Proxy which does not support also both NASREQ and Mobile IP, MUST be referred to as "Diameter X Proxy" where X is the application which it supports, and not a "Diameter Proxy." The CMS Diameter security application [11] contains two features: 1. A set of messages that allows a Diameter node to establish a security association, which is used to secure AVPs within a Diameter message, even though the message may traverse intermediate Diameter agents. A set of AVPs are also defined to sign and encrypt AVPs, as well as to transport certificates. This feature MUST be supported by Diameter server and proxy agents, SHOULD be supported by Diameter clients, and MAY be supported by relay and redirector agents. 2. A set of messages, known as PDSR and PDSA, allows a Diameter client to request that an agent establish a Diameter security association with a server in a specific realm. This feature MUST be supported by Diameter clients and Proxy agents, and MAY be supported by Diameter servers, relay and redirector agents. The base Diameter protocol concerns itself with capabilities negotiation, and how messages are sent and how peers may eventually be abandoned. The base protocol also defines certain rules which apply to all exchanges of messages between Diameter peers. Communication between Diameter peers begins with one peer sending a message to another Diameter peer. The set of AVPs included in the message is determined by a particular Diameter application. One AVP that is included to reference a user's session is the Session-Id. The initial request for authentication and/or authorization of a user would include the Session-Id. The Session-Id is then used in all subsequent messages to identify the user's session (see section10.08.0 for more information). The communicating party may accept the request, or reject it by returning an answer message with Result-Code AVP set to indicate an error occurred. The specific behavior of the diameter server or client receiving a request depends on the Diameter application employed. Session state (associated with a Session-Id) MUST be freed upon receipt of the Session-Termination-Request, Session-Termination- Answer, expiration of authorized service time in the Session-Timeout AVP, and according to rules established in a particular Diameter application. Calhoun et al. expiresDecember 2001January 2002 [Page 12] Internet-DraftJuneJuly 2001 The Diameter base protocol provides the Authorization-Lifetime AVP, which MAY be used by applications to specify the duration of a specific authorized session. 2.1 Transport The base Diameter protocol is run on port TBD of both TCP [27] and SCTP [26] transport protocols (for interoperability test purposes port 1812 will be used until IANA assigns a port to the protocol). When used with TLS [38], The Diameter protocol is run on port TBD of both TCP and SCTP. Diameter clients MUST support either TCP or SCTP, while agents and servers MUST support both. Future versions of this specification MAY mandate that clients support SCTP. A Diameter node MAY initiate connections from any source port, but MUST be prepared to receive connections on port TBD. Note that the source and destination addresses used in request and replies MAY any of a peer's valid IP addresses. A given Diameter process SHOULD use the same port number to send all messages to aid in identifying which process sent a given message. More than one Diameter process MAY exist within a single host, so the sender's port number is needed to discriminate them. When no transport connection exists with a peer, an attempt to connect SHOULD be periodically attempted. This behavior is handled via the Tc timer, whose recommended value is 30 seconds. When connecting to a peer, and either zero or more transports are specified, SCTP SHOULD be tried first, followed by TCP. See section2.65.2 for more information on peer discovery. Diameter implementations SHOULD be able to interpret ICMP protocol and port unreachable messages as explicit indications that the server is not reachable, in addition to interpreting ECONNREFUSED (a reset from the transport) and timed-out connection attempts. 2.1.1 SCTP Guidelines The following are guidelines for Diameter implementations that support SCTP: 1. For interoperability: All Diameter nodes MUST be prepared to receive Diameter messages on any SCTP stream in the Calhoun et al. expiresDecember 2001January 2002 [Page 13] Internet-DraftJuneJuly 2001 association. 2. To prevent blocking: All Diameter nodes SHOULD utilize all SCTP streams available to the association to prevent head-of-the- line blocking. 2.2 Securing Diameter Messages Diameter clients, such as Network Access Servers (NASes) and Foreign Agents MUST support IP Security [37], and MAY support TLS [38]. Diameter servers MUST support TLS, but the administrator MAY opt to configure IPSec instead of using TLS. Operating the Diameter protocol without any security mechanism is not recommended. 2.3 Diameter Protocol Extensibility There are various ways the Diameter protocol can be extended. This section is intended to assist protocol designers in selecting the best method of using the Diameter protocol. 2.3.1 Defining new AVP Values Defining a new AVP value is the best approach when a new application needs to make use of an existing Diameter application, but requires that an existing AVP communicate different service-specific information (e.g. NAS-Port-Type set to avian carriers). When an existing AVP can be used to communicate the new information, this approach is preferred over creating new AVPs. In order to allocate a new AVP value, a request MUST be sent to IANA, with a detailed explanation of the value. Furthermore, if the command code on which the AVP value is to be used would require a different set of mandatory AVPs be present, the list of AVPs must accompany the request. 2.3.2 Creating new AVPs New AVPs may be created when a new application requiring Diameter support can make use of an existing Diameter application, but requires new AVPs to communicate service-specific information. Prior to defining the AVP, the AVP type MUST be one of the types listed in section 4.3. In the event that a logical grouping of AVPs is necessary, and multiple "groups" are possible in a given command, Calhoun et al. expiresDecember 2001January 2002 [Page 14] Internet-DraftJuneJuly 2001 it is highly recommended that a Grouped AVP be used (see Section 4.5). In order to create a new AVP, a request MUST be sent to IANA, with a detailed explanation of the AVP, its type and possible values. Furthermore, the request MUST include the commands that would make use of the AVP. Note that new AVPS to be used with an existing application MUST NOT be defined to have the 'M'andatory bit set. 2.3.3 Creating new Diameter Applications Should a new application require Diameter support, but it cannot fit within an existing application without requiring major changes to the specification, it may be desirable to create a new Diameter application. Major changes to an application include: - Requiring a whole different set of mandatory AVPs to a command - Requiring a command that has a different number of round trips to satisfy a request (e.g. application foo has a command that requires one round trip, but new application bar has a command that requires two round trips to complete). - The method used to authenticate the user is drastically different from any existing application, and the authentication information cannot be carried within the AVPs defined in the application. Note that the creation of a new application should be viewed as a last resort. New Diameter applications MUST define at least one Command Code, the expected AVPs in an ABNF [31] grammar (see section 3.2), and MAY also define new AVPs. If the Diameter application has any accounting requirements, it MUST also specify the AVPs that are to be present in the Diameter Accounting messages (see section11.3).9.3). When possible, a new Diameter application SHOULD attempt to re-use any existing Diameter AVP, in order to reduce the possibility of having multiple AVPs that carry similar information. Every Diameter application specification MUST have an IANA assigned Application Identifier (see section 2.4). 2.3.4 Application authentication procedures When possible, applications SHOULD be designed such that new Calhoun et al. expiresDecember 2001January 2002 [Page 15] Internet-DraftJuneJuly 2001 authentication methods MAY be added without requiring changes to the application. This MAY require that new AVP values be assigned to represent the new authentication transform, or any other scheme that produces similar results. When possible, authentication frameworks, such as Extensible Authentication Protocol [25], SHOULD be used. 2.4 Diameter Application Compliance Application Identifiers are advertised during the capabilities exchange phase (see section6.0).2.5). For a given application, there are two different ways of advertising support. First, advertising support of the application via the Auth-Application-Id implies that the sender supports all authentication and authorization command codes, and the AVPs specified in the associated ABNFs, described in the specification. Second, advertising support of the application via the Acct-Application-Id implies that the sender supports the Accounting command codes defined in this specification, as well as the accounting AVPs defined in the application's specification. An implementation MAY add arbitrary AVPs to any command defined in an application, including vendor-specific AVPs. However, implementations that add such AVPs with the Mandatory 'M' bit set are not compliant, and are at fault if the peer rejects the request. If the sender of such a message wishes to provide service, it MUST resend the message with the offending AVPs removed. 2.5Role ofApplication Identifiers Each DiameterAgents In addition to client and servers,application MUST have an IANA assigned Application Identifier (see section 11.3). The base protocol does not require an application Identifier since its support is mandatory. During the capabilities exchange, Diameterprotocol introduces relays, redirectors, proxies and translation gateways, eachnodes inform their peers of locally supported applications. Furthermore, all Diameter messages contain an application identifier, which isdefinedused inSection 1.3. These Diameter agentsthe message forwarding process. The following Application Identifier values areuseful for several reasons: - They can distribute administration of systems to a configurable grouping, includingdefined: NASREQ 1 [7] End-to-End Security 2 [11] Mobile-IP 4 [10] Relay 0xffffffff Relay and redirect agents MUST advertise themaintenance of security associations. - They can be used for concentrationRelay application identifier, while all other Diameter nodes MUST advertise locally supported applications. The receiver ofrequests from an number of co-located or distributed NAS equipment sets to a set of like user groups. - They can do value-added processing to the requests or responses. - They can be used for load balancing. - A complex network will have multiple authentication sources, they can sort requests and forward towards the correct target. The Diameter protocol requires that agents maintain transaction state, which is used for failover purposes. Transaction state implies that upon forwarding a request, it's Hop-by-Hop identifier is saved, the field is replaced withalocally unique identifier, which isCapabilities Exchange Calhoun et al. expiresDecember 2001January 2002 [Page 16] Internet-DraftJuneJuly 2001restored to its original value whenmessage advertising Relay service MUST assume that thecorresponding answer is received. The request's state is released upon receipt ofsender supports all current and future applications. Diameter relay and proxy agents are responsible for finding an upstream server that supports theanswer. A stateless agentapplication of a particular message. If none can be found, an error message isone that only maintains transaction state. The Proxy-Inforeturned with the Result-Code AVPallows stateless agents to add local stateset toaDIAMETER_UNABLE_TO_DELIVER. 2.6 Peer Table The Diameterrequest, withPeer Table is used in message forwarding, and referenced by theguarantee thatDomain Routing Table. A Peer Table entry contains thesame state will be presentfollowing fields: - Host identity. following the conventions described for the DiameterIdentity derived AVP data format in section 4.4. This MAY be resolved locally, or dynamically updated via theanswer. However,Origin- Host AVP of theprotocol's failover procedures require that agents maintain a copy of pending requests. A stateful agentCER or CEA messages. - Status. This isone that maintains sessionthe stateinformation, by keeping trackofall authorized active sessions. Each authorized session is bound to a particular service,the peer entry, andits state is considered active either until it is notified otherwise, or by expiration. Each authorized session has a expiration, which is communicated by Diameter servers viaMUST match one of theAuthorized-Lifetime AVP. Maintaining session state MAY be usefulvalues listed incertain applications, such as: - Protocol translation (e.g. RADIUS <-> Diameter)section 5.6. -Limiting resources authorized toRole. This field specifies whether aparticular userpeer is a primary, secondary or alternate. -Per userStatic ortransaction auditing A Diameter agent MAY act inDynamic. Specifies whether astateful manner for some requests, while be stateless for others. A Diameter implementation MAY act as one type of agent for some requests, and as another type of agent for others. 2.5.1 Relay Agents Relay Agentspeer entry was statically configured, or dynamically discovered. - Expiration time. Specifies the time which dynamically discovered peer table entries areDiameter agents that accept requests and route messagestoother Diameter agents based on information found inbe either refreshed, or expired. - TLS Enabled. Specifies whether TLS is to be used when communicating with themessagespeer. - Additional security information, when needed (e.g.Destination-Realm). Thiskeys, certificates) 2.7 Realm-Based Routing Table All Realm-Based routingdecision islookups are performedusing a list of supported domains, and known peers. Thisagainst what is commonly known as theDiameterDomain RoutingTable, as is defined further inTable (see section5.1.7. Relays MAY be used to aggregate requests from multiple Network Access Servers (NASes) within a common geographical area (POP). The use of Relays is advantageous since it eliminates12.0). A Domain Routing Table Entry contains theneed for NASes to be configured withfollowing fields: - Realm Name. This is thenecessary security information they would otherwise require to communicate with Diameter serversfield that is typically used as a primary key inother realms. Likewise, this reducestheconfiguration load on Diameter serversrouting table lookups. Note thatwould otherwise be necessary when NASes are added, changedsome implementations perform their lookups based on longest-match- from-the-right on the realm rather than requiring an exact match. - Application Identifier. It is possible for a route entry to have a different destination based on the Acct-Application-Id (for accounting messages) ordeleted. Relays modify Diameter messages by inserting, and removing, routing information, but do not modify any other portionAuth-Application-Id (for non-accounting messages) ofathe message.Further, Relays inherent simplicity implies that they are stateless,This field is typically used as a secondary key field in routing table lookups. - Local Action. The Local Action field is used to identify how a Calhoun et al. expiresDecember 2001January 2002 [Page 17] Internet-DraftJuneJuly 2001and therefore SHOULD NOT maintain session state, but MUST maintain transaction state. +------+ ---------> +------+ ---------> +------+ | |message should be treated. The following actions are supported: 1.Request | |LOCAL - Diameter messages that resolve to a route entry with the Local Action set to Local can be satisfied locally, and do not need to be routed to another server. 2.Request | | | NAS | | DRL | | HMS | | | 4. Answer | | 3. Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 1: Relaying ofRELAY - All Diameter messagesThe example provided in Figure 1 depicts a request issued from NAS, which is an access device, for the user bob@abc.com. Priorthat fall within this category MUST be routed toissuing the request, NAS performsa next hop server, without modifying any non-routing AVPs. See section 6.1.8 for relaying guidelines 3. PROXY - All Diameterroute lookup, using "abc.com" as the key, and determinesmessages thatthe message is tofall within this category MUST berelayedrouted toDRL, which isaDiameter Relay. DRL performs the same route lookup as NAS, and relaysnext hop server. The local server MAY apply its local policies to the message by including new AVPs toHMS, which is abc.com's Home Diameter Server. HMS identifies that the request can be locally supported (via the realm), processestheauthentication and/or authorization request, and replies with an answer, which is routed backmessage prior toNAS using Diameter routing AVPs. Since Relays do not perform any application level processing, they provide relaying servicesrouting. See section 6.1.8 forallrelaying guidelines. 4. REDIRECT - Diameterapplications, and thereforemessages that fall within this category MUSTadvertisehave theRelay Application Identifier. 2.5.2 Proxy Agents Similarly to Relays, Proxy agents route Diameter messages usingidentity of the home DiameterRouting Table. However, they differ since they modify messagesserver(s) appended, and returned toimplement policy enforcement. This requires that proxies maintainthestatesender oftheir downstream peers (e.g. access devices) to enforce resource usage, provide admission control, and provisioning. It is important to note that although proxies MAY provide a value-add function for NASes, they do not allow access devices to usetheDiameter CMS Security application, since modifying messages breaks authentication. Proxies MAY be used in call control centersmessage. See section 6.1.7 for redirect guidelines. - Server Identifier. One oraccess ISPs that provide outsourced connections, they can monitormore servers thenumber and types of ports in use, and make allocation and admission decisions according to their configuration. Proxies that wishmessage is tolimit resources MUSTbestateful, and all Proxies MUST maintain transaction state. Calhoun et al. expires December 2001 [Page 18] Internet-Draft June 2001 Proxy agentsrouted to. These servers MUSTNOT allow CMS security toalso beestablished between two peers if it expects to modify ANY non-routing AVPpresent inmessages exchanged between the peers. See [11] for more information. Since enforcing policies requires an understanding of the service being provided, Proxies MUST only advertise the Diameter applications they support. 2.5.3 Redirector Agents Redirector agents provide Realm to Server address resolution, and usetheDiameter routing table to determine where a given request should be forwarded.Peer table. Whena request is received by a Diameter redirector, a special answerthe Local Action iscreated, which includesset to RELAY or PROXY, this field contains the identity of theDiameterserver(s) theoriginatormessage must be routed to. When the Local Action field is set to REDIRECT, this field contains the identity of one or more servers therequestmessage shouldcontact directly. Redirectors are useful in scenarios where the Diameter routing configuration needs tobecentralized. An example isredirected to. - Static or Dynamic. Specifies whether aredirectorroute entry was statically configured, or dynamically discovered. - Expiration time. Specifies the time which dynamically discovered a route table entry expire. It is important to note thatprovides servicesDiameter agents MUST support at least one of the LOCAL, RELAY, PROXY or REDIRECT modes of operation. Agents do not need to support allmembersmodes ofa consortium, but does not wishoperation in order tobe burdenedconform withrelaying all messages between domains. This scenario is advantageous since it does not require thattheconsortium provideprotocol specification, but MUST follow the protocol compliance guidelines in section 2.0. Relay agents MUST NOT reorder AVPs, and proxies SHOULD NOT reorder AVPs. The routingupdates to its members when changes are made totable MAY include amember's infrastructure. Since redirectors do not relay messages, and only return an answer with the information necessarydefault entry which MUST be used forDiameter agents to communicate directly, they do not modify messages. Since redirectors do not receive answer messages, they cannot maintain session state. Further, since redirectors never relay requests, they areany requests notrequired to maintain transaction state.matching any of the other entries. Theexample provided in Figure 2 depictsrouting table MAY consist of only such an entry. When a requestissued fromis routed, theaccess device, NAS, fortarget server MUST have advertised theuser bob@abc.com. The message is forwarded byApplication Identifier (see section 2.5) for theNAS to its relay, DRL, which does notgiven message, or have advertised itself as arouting entry in itsrelay or proxy agent. 2.8 Role of DiameterRouting Table for abc.com. DRL has a default route configured to DRD, which is a redirector that returns a redirect notificationAgents In addition toDLR, as well as HMS' contact information. Upon receipt of the redirect notification, DRL establishes a transport connection with HMS, if one doesn't already exist,client andforwardsservers, therequest to it.Diameter protocol introduces Calhoun et al. expiresDecember 2001January 2002 [Page19]18] Internet-DraftJuneJuly 2001+------+ | | | DRD | | | +------+ ^ | 2. Request | | 3. Redirection | | Notification | v +------+ ---------> +------+ ---------> +------+ | | 1. Request | | 4. Request | | | NAS | | DRL | | HMS | | | 6. Answer | | 5. Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 2: Redirecting a Diameter Message Since Redirectors do not perform any application level processing, they provide relaying services for all Diameter applications,relays, redirectors, proxies andtherefore MUST advertise the Relay Application Identifier. 2.5.4 Translation Agents A Translation Agent is a device that providestranslationbetween two protocols (e.g. RADIUS<->Diameter, TACACS+<->Diameter). Translationgateways, each of which is defined in Section 1.3. These Diameter agents arelikely to be used as aggregation servers to communicate with a Diameter infrastructure, while allowinguseful forthe embeddedseveral reasons: - They can distribute administration of systems tobe migrated ataslower pace. Given that the Diameter protocol introducesconfigurable grouping, including theconceptmaintenance oflong-lived authorized sessions, translation agents MUSTsecurity associations. - They can bestateful and MUST maintain transaction state. Translationused for concentration ofmessages can only occur if the agent recognizes the applicationrequests from an number ofa particular request, and therefore MUST only advertise their locally supported applications. +------+ ---------> +------+ ---------> +------+ | | RADIUS Request | | Diameter Request | | |co-located or distributed NAS| | TLA | | HMS | | | RADIUS Answer | | Diameter Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 3: Translationequipment sets to a set ofRADIUSlike user groups. - They can do value-added processing toDiameter 2.6 Diameter Agent Discovery Calhoun et al. expires December 2001 [Page 20] Internet-Draft June 2001 Allowingthe requests or responses. - They can be used fordynamic Diameter agent discoveryload balancing. - A complex network willmake it possible for simplerhave multiple authentication sources, they can sort requests andmore robust deployment of AAA services. In order to promote interoperable implementations of Diameter agent discovery,forward towards thefollowing mechanisms are described. These are based on existing IETF standards. There are two cases where Diameter agent discovery may be performed.correct target. Thefirst is when a Diameter client needs to discover a first-hopDiameteragent. The second caseprotocol requires that agents maintain transaction state, which iswhen a Diameter agent needs to discover another agent -used forfurther handling offailover purposes. Transaction state implies that upon forwarding aDiameter operation. In both cases,request, it's Hop-by-Hop identifier is saved, thefollowing 'search order'field isrecommended: 1. The Diameter implementation consults its list of static (manual) configured Diameter agent locations. These will be used if they exist and respond. 2. The Diameter implementation uses SLPv2 [28]replaced with a locally unique identifier, which is restored todiscover Diameter services.its original value when the corresponding answer is received. TheDiameter service template [32]request's state isincluded in Appendix A. Itreleased upon receipt of the answer. A stateless agent isrecommendedone thatSLPv2 security be deployed (this requires distributing keys to SLPv2 agents.) This is discussed further in Appendix A. SLPv2 will allow Diameter implementations to discover the location of Diameteronly maintains transaction state. The Proxy-Info AVP allows stateless agentsin theto add localsite, as well as their characteristics.state to a Diameteragentsrequest, withspecific capabilities (say support fortheMobile IP application) can be requested, and only thoseguarantee that the same state will bediscovered. 3. The Diameter implementation uses DNS to requestpresent in theSRV RR [33] foranswer. However, the'_diameter._sctp' and/or '_diameter._tcp' server in a particular domain. The Diameter implementation has to know in advance which domain to look forprotocol's failover procedures require that agents maintain aDiametercopy of pending requests. A stateful agentin. This could be deduced, for example, from the 'realm' in a NAIis one thata Diameter implementation neededmaintains session state information, by keeping track of all authorized active sessions. Each authorized session is bound toperformaDiameter operation on. 3.1 If the destination addressparticular service, and its state is considered active either until it is notified otherwise, or by expiration. Each authorized session has anumeric IP address, the requestor contacts the peer at the given address andexpiration, which is communicated by Diameter servers via theport number specifiedAuthorized-Lifetime AVP. Maintaining session state MAY be useful inthe SRV record or, if not specified, the default port (TBD). 3.2 The results of the querycertain applications, such as: - Protocol translation (e.g. RADIUS <-> Diameter) - Limiting resources authorized to a particular user - Per user orqueriestransaction auditing A Diameter agent MAY act in a stateful manner for some requests, while be stateless for others. A Diameter implementation MAY act as one type of agent for some requests, and as another type of agent for others. 2.8.1 Relay Agents Relay Agents aremergedDiameter agents that accept requests andorderedroute Calhoun et al. expires January 2002 [Page 19] Internet-Draft July 2001 messages to other Diameter agents based onpriority. Then, the searching technique outlinedinformation found in[46]the messages (e.g. Destination-Realm). This routing decision is performed using a list of supported domains, and known peers. This is known as the Diameter Routing Table, as is defined further in section 2.7. Relays MAY be used toselect servers in order.aggregate requests from multiple Network Access Servers (NASes) within a common geographical area (POP). Therequestor attempts to contact each peer inuse of Relays is advantageous since it eliminates theorder listed, atneed for NASes to be configured with theport number specifiednecessary security information they would otherwise require to communicate with Diameter servers in other realms. Likewise, this reduces theSRV record. If none of theconfiguration load on Diameter serverscanthat would otherwise becontacted, the requestor gives up. If there Calhoun et al. expires December 2001 [Page 21] Internet-Draft June 2001 are no SRV records, DNS address recordsnecessary when NASes areused, as described below. 3.3 If thereadded, changed or deleted. Relays modify Diameter messages by inserting, and removing, routing information, but do not modify any other portion of a message. Further, Relays inherent simplicity implies that they areno SRV records, the requestor queries the DNS server for address recordsstateless, and therefore SHOULD NOT maintain session state, but MUST maintain transaction state. +------+ ---------> +------+ ---------> +------+ | | 1. Request | | 2. Request | | | NAS | | DRL | | HMS | | | 4. Answer | | 3. Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 1: Relaying of Diameter messages The example provided in Figure 1 depicts a request issued from NAS, which is an access device, for thedestination address '_diameter._sctp'.domain or '_diameter._tcp'.domain. Address records include A RR's, AAAA RR's, A6 RR's or other similar records, chosen accordinguser bob@abc.com. Prior to issuing therequestor's network protocol capabilities. Ifrequest, NAS performs a Diameter route lookup, using "abc.com" as theDNS server returns no address records,key, and determines that therequestor gives up. If there are address records,message is to be relayed to DRL, which is a Diameter Relay. DRL performs the samerulesroute lookup asin step 3.2 apply. Requestors MUST NOT cache query results except according toNAS, and relays therules in [47]. Diameter allows AAA peersmessage toprotect the integrity and privacy of communication as well as to perform end-point authentication. Still, itHMS, which isprudentabc.com's Home Diameter Server. HMS identifies that the request can be locally supported (via the realm), processes the authentication and/or authorization request, and replies with an answer, which is routed back toemploy DNS Security as a precaution whenNAS usingDNS SRV RRs to look up the location of aDiameteragent. [34, 35, 36] 3.0 Diameter Header A summary of therouting AVPs. Since Relays do not perform any application level processing, they provide relaying services for all Diameterheader format is shown below. The fields are transmitted in network byte order. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ver | Message Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R P r r r r r r| Command-Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop-by-Hop Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | End-to-End Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVPs ... +-+-+-+-+-+-+-+-+-+-+-+-+- Version This Version fieldapplications, and therefore MUSTbe set to 1advertise the Relay Application Identifier. 2.8.2 Proxy Agents Similarly toindicateRelays, Proxy agents route DiameterVersion 1.messages using the Diameter Routing Table. However, they differ since they modify Calhoun et al. expiresDecember 2001January 2002 [Page22]20] Internet-DraftJuneJuly 2001Message Length The Message Length field is two octets and indicatesmessages to implement policy enforcement. This requires that proxies maintain thelengthstate ofthe Diameter message including the header fields. Command Flags The Command Flags field is eight bits. The following bits are assigned: R(equest) - If set, the messagetheir downstream peers (e.g. access devices) to enforce resource usage, provide admission control, and provisioning. It is important to note that although proxies MAY provide arequest. If cleared, the message is an answer. P(roxiable) - If set,value-add function for NASes, they do not allow access devices to use themessageDiameter CMS Security application, since modifying messages breaks authentication. Proxies MAY beproxied. If cleared,used in call control centers or access ISPs that provide outsourced connections, they can monitor themessagenumber and types of ports in use, and make allocation and admission decisions according to their configuration. Proxies that wish to limit resources MUST belocally processed. r(eserved) - this flag bit is reserved for future use,stateful, and all Proxies MUST maintain transaction state. Proxy agents MUST NOT allow CMS security to besetestablished between two peers if it expects tozero. Command-Code The Command-Code field is three octets, and is usedmodify ANY non-routing AVP inorder to communicatemessages exchanged between thecommand associated withpeers. See [11] for more information. Since enforcing policies requires an understanding of themessage. The 24-bitservice being provided, Proxies MUST only advertise the Diameter applications they support. 2.8.3 Redirector Agents Redirector agents provide Realm to Server addressspaceresolution, and use the Diameter routing table to determine where a given request should be forwarded. When a request ismanagedreceived byIANA (see section 15.2). Vendor-ID Ina Diameter redirector, a special answer is created, which includes theevent thatidentity of theCommand-Code field contains a vendor specific command, the four octet Vendor-ID field containsDiameter server(s) theIANA assigned "SMI Network Management Private Enterprise Codes" [2] value. Iforiginator of theCommand-Code field contains an IETF standard Command,request should contact directly. Redirectors are useful in scenarios where theVendor-ID field MUST be set to zero (0). Any vendor wishingDiameter routing configuration needs toimplementbe centralized. An example is avendor-specific Diameter command MUST use their own Vendor-ID along with their privately managed Command- Code address space, guaranteeingredirector thatthey willprovides services to all members of a consortium, but does notcollide with any other vendor's vendor-specific command, norwish to be burdened withfuture IETF applications. Hop-by-Hop Identifier The Hop-by-Hop Identifier fieldrelaying all messages between domains. This scenario isfour octets, and aids in matching requests and replies. The sender MUST ensureadvantageous since it does not require that theHop-by-Hop identifier inconsortium provide routing updates to its members when changes are made to arequest is locally unique (to the sender) at any given time,member's infrastructure. Since redirectors do not relay messages, andMAY attempt to ensure that the number is unique across reboots. The sender ofonly return anAnswer message MUST ensure that the Hop-by-Hop Identifier field contains the same value that was found in the corresponding request. The Hop-by-Hop identifier is normally a monotonically increasing number, whose start value was randomly generated. Ananswermessage that is receivedwithan unknown Hop-by-Hop Identifier MUST be discarded. End-to-End Identifier Unlike the Hop-by-Hop Identifier,theEnd-to-End Identifier is usedinformation necessary for Diameter agents todetect duplicate messages, andcommunicate directly, they do not modify messages. Since redirectors do not receive answer messages, they cannot maintain session state. Further, since redirectors never relayagents MUST NOTrequests, they are not Calhoun et al. expiresDecember 2001January 2002 [Page23]21] Internet-DraftJuneJuly 2001modify this field.required to maintain transaction state. Thesender ofexample provided in Figure 2 depicts a requestor answerissued from the access device, NAS, for the user bob@abc.com. The messageMUST insertis forwarded by the NAS to its relay, DRL, which does not have alocally unique valuerouting entry inthis field. The combination of the Origin-Host AVP and this field is usedits Diameter Routing Table for abc.com. DRL has a default route configured todetect duplicates. An Answer messageDRD, which isreceived withapreviously seen End- to-End Identifier, and is to be locally consumed (see Section 5.2) SHOULD be silently discarded. AVPs AVPs areredirector that returns amethod of encapsulating information relevantredirect notification to DRL, as well as HMS' contact information. Upon receipt of theDiameter message. See section 4. for more information on AVPs. 3.1 Command Codes Each command Request/Answer pair is assignedredirect notification, DRL establishes acommand code,transport connection with HMS, if one doesn't already exist, and forwards thesub-type (e.g.requestor answer) is identified via the 'R' bit in the Command Flags field of the Diameter header. Every Diameter message MUST contain a command code in its header's Command-Code field, which is used to determine the action that istobe taken for a particular message. The following Command Codes are defined in the Diameter base protocol: Command-Name Abbrev. Code Reference -------------------------------------------------------- Abort-Session-Request ASR 274 10.5.1 Abort-Session-Answer ASA 274 10.5.2 Accounting-Request ACR 271 12.1 Accounting-Answer ACA 271 12.2 Capabilities-Exchange- CER 257 6.2it. +------+ | | | DRD | | | +------+ ^ | 2. RequestCapabilities-Exchange- CEA 257 6.3 Answer Device-Watchdog-Request DWR 280 7.1 Device-Watchdog-Answer DWA 280 7.2 Message-Reject-Answer MRA 282 9.2 Re-Auth-Request RAR 258 10.3.1 Re-Auth-Answer RAA 258 10.3.2 Session-Termination- STR 275 10.4.1| | 3. Redirection | | Notification | v +------+ ---------> +------+ ---------> +------+ | | 1. RequestSession-Termination- STA 275 10.4.2| | 4. Request | | | NAS | | DRL | | HMS | | | 6. Answer3.2 Command Code ABNF specification Every Command Code defined MUST include| | 5. Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 2: Redirecting acorresponding ABNF specification, whichDiameter Message Since Redirectors do not perform any application level processing, they provide relaying services for all Diameter applications, and therefore MUST advertise the Relay Application Identifier. 2.8.4 Translation Agents A Translation Agent is a device that provides translation between two protocols (e.g. RADIUS<->Diameter, TACACS+<->Diameter). Translation agents are likely to be used as aggregation servers todefinecommunicate with a Diameter infrastructure, while allowing for theAVPsembedded systems to be migrated at a slower pace. Given that the Diameter protocol introduces the concept of long-lived authorized sessions, translation agents MUSTor MAYbe stateful and MUST maintain transaction state. Translation of messages can only occur if the agent recognizes the application of a particular request, and therefore MUST only Calhoun et al. expiresDecember 2001January 2002 [Page24]22] Internet-DraftJuneJuly 2001present. The following format is used in the definition: command-def = command-name "::=" diameter-message diameter-name = ALPHA *(ALPHA / DIGIT / "-") command-name = diameter-name ; The command-name hasadvertise their locally supported applications. +------+ ---------> +------+ ---------> +------+ | | RADIUS Request | | Diameter Request | | | NAS | | TLA | | HMS | | | RADIUS Answer | | Diameter Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 3: Translation of RADIUS tobe Command name, ; defined inDiameter 3.0 Diameter Header A summary of thebase or extendedDiameter; specifications. diameter-message = header [ *fixed] [ *required] [ *optional] [ *fixed]header= "<Diameter-Header:" command-id [r-bit] [p-bit] ">" command-id = 1*DIGIT ;format is shown below. TheCommand Code assignedfields are transmitted in network byte order. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ver | Message Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R P E r r r r r| Command-Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop-by-Hop Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | End-to-End Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVPs ... +-+-+-+-+-+-+-+-+-+-+-+-+- Version This Version field MUST be set to 1 to indicate Diameter Version 1. Message Length The Message Length field is three octets and indicates thecommand r-bit = ", REQ" ; If present,length of the'R' bit inDiameter message including the header fields. Command;Flags The Command Flags field is eight bits. The following bits are assigned: R(equest) - If set,indicating thatthe message;is arequest, as opposed to an answer. p-bit = ", PXY" ;request. Ifpresent, the 'P' bit incleared, theCommand ; Flagsmessage is an answer. P(roxiable) - If set,indication thatthe message; is proxiable. fixed = [qual] "<" avp-spec ">" ; Defines the fixed position of an AVP required = [qual] "{" avp-spec "}" ; The AVP MUSTMAY bepresent optional = [qual] "[" avp-name "]" ; The avp-name inproxied. If cleared, the'optional' rule cannot ; evaluate to any AVP Name which is included ; in a fixed or required rule. qual = [min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ; The absence of any qualifiers implies that ; one and only one such AVPmessage MUST bepresent. ; ; NOTE: "[" and "]" have a different meaning ; than in ABNF (see the optional rule, above). ; These braces cannot be used to expresslocally processed. Calhoun et al. expiresDecember 2001January 2002 [Page25]23] Internet-DraftJuneJuly 2001; optional fixed rules (such as an optional ; ICV atE(rror) - If set, theend.) To do this,message contains a protocol error, and theconvention ; is '0*1fixed'. min = 1*DIGIT ; The minimum number of timesmessage will not conform to theelement may ; be present. The default value is zero. max = 1*DIGIT ; The maximum number of timesABNF described for this command. Messages with theelement may ; be present. The default value'E' bit set isinfinity. avp-spec = diameter-name ; The avp-spec hascommonly referred tobeas anAVP Name, defined ;error message. This bit MUST NOT be set inthe base or extended Diameter ; specifications. avp-name = avp-spec | "AVP" ; The string "AVP" standsrequest messages. See section 7.2. r(eserved) - this flag bit is reserved for*any* arbitrary ; AVP Name, which does not conflict with the ; required or fixed position AVPs defined in ; the command code definition.future use, and MUST be set to zero. Command-Code ThefollowingCommand-Code field isa definition of a fictitious command code: Example-Request ::= < Diameter-Header: 9999999, REQ, PXY > { User-Name } * { Origin-Host } * [ AVP ] 3.3 Diameter Command Naming Conventions The following conventions are required for the naming of Diameter messages. Diameter commands typically start with an object name,three octets, andendis used in order to communicate the command associated witheithertheRequest or Answer verb.message. TheRequest/Answer message pair24-bit address space isused when a Diameter node requests that some action be performedmanaged bya peer (e.g. authorize a user, terminate a session). The corresponding answer MUST contain either a positive or negative result code, informingIANA (see section 11.2). Vendor-ID In therequester whetherevent that therequest was successful or not. Other information MAY also be returned inCommand-Code field contains a vendor specific command, theAnswer message. Request and Answer messages sharefour octet Vendor-ID field contains thesame command code, andIANA assigned "SMI Network Management Private Enterprise Codes" [2] value. If theR(equest) bit inCommand-Code field contains an IETF standard Command, theDiameter header is usedVendor-ID field MUST be set toidentify whetherzero (0). Any vendor wishing to implement amessage is the request or answer. Calhoun et al. expires December 2001 [Page 26] Internet-Draft June 2001 4.0 Diameter AVPsvendor-specific DiameterAVPs carry specific authentication, accountingcommand MUST use their own Vendor-ID along with their privately managed Command- Code address space, guaranteeing that they will not collide with any other vendor's vendor-specific command, nor with future IETF applications. Hop-by-Hop Identifier The Hop-by-Hop Identifier field is four octets, andauthorization information, security information as well as configuration details foraids in matching requests and replies. The sender MUST ensure that the Hop-by-Hop identifier in a request is locally unique (to the sender) at any given time, andreply. Some AVPsMAYbe listed more than once.attempt to ensure that the number is unique across reboots. Theeffectsender ofsuchanAVP is specific, and is specifiedAnswer message MUST ensure that the Hop-by-Hop Identifier field contains the same value that was found ineach case bytheAVP description. Each AVP of type OctetStringcorresponding request. The Hop-by-Hop identifier is normally a monotonically increasing number, whose start value was randomly generated. An answer message that is received with an unknown Hop-by-Hop Identifier MUST bepaddeddiscarded. End-to-End Identifier The End-to-End Identifier is used toalign on a 32 bit boundary, while other AVP types align naturally. NULL bytesdetect duplicate messages. Upon reboot, the high order 12 bits areaddedinitiated to contain theendlow order 12 bits of current time, while theAVP Data field till a word boundarylow order 20 bits isreached. The lengthset to a random value. Senders of request or answer messages MUST insert a unique identifier on each message, by incrementing thepadding is not reflected in the AVP Length field. 4.1 AVP Header The fields in the AVP headeridentifier by one (1). The End-to-End Identifier MUST NOT besent in network byte order.modified by relay agents. Theformatcombination of theheader is: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V M P r r r r r| AVP Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID (opt) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+-+-+-+-+ AVP Code The AVP Code, combined with the Vendor-Id field, identifies the attribute uniquely. The first 256 AVP numbers are reserved for backward compatibility with RADIUSOrigin-Host and this field is used to detect duplicates. Duplicate answer messages that are to beinterpreted as per NASREQ [7]. AVP numbers 256 and above are used for Diameter, which are allocated by IANAlocally consumed (seesection 15.1). AVP Flags The AVP Flags field informs the receiver how each attribute must be handled. The 'r' (reserved) bits are unused and SHOULD be set to 0. Note that subsequent Diameter applications MAY define additional bits within the AVP Header, and an unrecognized bitSection 6.2) SHOULD beconsidered an error. The 'P' bit is defined in [11]. The 'M' Bit, known as the Mandatory bit, indicates whether support of the AVP is required. If an unrecognized AVP with the 'M' bitCalhoun et al. expiresDecember 2001January 2002 [Page27]24] Internet-DraftJuneJuly 2001set is received by a Diameter node,silently discarded. AVPs AVPs are a method of encapsulating information relevant to themessage MUST be rejected.DiameterRelay and Redirector agents MUST NOT reject messages with unrecognizedmessage. See section 4. for more information on AVPs.A Diameter node that sets the 'M' bit in an AVP that3.1 Command Codes Each command Request/Answer pair isnot defined inassigned agiven message's ABNF is at fault ifcommand code, and themessagesub-type (e.g. request or answer) isrejected. In order to provide service toidentified via theuser,'R' bit in thenode at fault MUST re-issue a request either withoutCommand Flags field of theAVP, or without setting its 'M' bit. ADiameternode that rejects aheader. Every Diameter messagedueMUST contain a command code in its header's Command-Code field, which is used toan unrecognized AVP with the 'M' bit set, anddetermine theAVP in questionaction that is to be taken for a particular message. The following Command Codes are defined in themessage'sDiameter base protocol: Command-Name Abbrev. Code Reference -------------------------------------------------------- Abort-Session-Request ASR 274 8.5.1 Abort-Session-Answer ASA 274 8.5.2 Accounting-Request ACR 271 9.7.1 Accounting-Answer ACA 271 9.7.2 Capabilities-Exchange- CER 257 5.3.1 Request Capabilities-Exchange- CEA 257 5.3.2 Answer Device-Watchdog-Request DWR 280 5.5.1 Device-Watchdog-Answer DWA 280 5.5.2 Disconnect-Peer-Request DPR 282 5.4.1 Disconnect-Peer-Answer DPA 282 5.4.2 Re-Auth-Request RAR 258 8.3.1 Re-Auth-Answer RAA 258 8.3.2 Session-Termination- STR 275 8.4.1 Request Session-Termination- STA 275 8.4.2 Answer 3.2 Command Code ABNF specification Every Command Code defined MUST include a corresponding ABNF specification, which isat fault. In most cases the initiator of the failing request will not provide serviceused to define theuser.AVPswith the 'M' bit cleared are informational only and a receiverthatreceives a message with such an AVP that is not supportedMUST or MAYsimply ignore the AVP.be present. The'V' bit, known as the Vendor-Specific bit, indicates whether the optional Vendor-ID fieldfollowing format ispresentused in theAVP header. When setdefinition: command-def = command-name "::=" diameter-message Calhoun et al. expires January 2002 [Page 25] Internet-Draft July 2001 diameter-name = ALPHA *(ALPHA / DIGIT / "-") command-name = diameter-name ; The command-name has to be Command name, ; defined in theAVPbase or extended Diameter ; specifications. diameter-message = header [ *fixed] [ *required] [ *optional] [ *fixed] header = "< Diameter-Header:" command-id [r-bit] [p-bit] [e-bit] ">" command-id = 1*DIGIT ; The Command Codebelongsassigned to thespecific vendor code address space. Unless otherwise noted, AVPs will havecommand r-bit = ", REQ" ; If present, thefollowing default AVP Flags field settings: The 'M' bit MUST be set. The 'V''R' bitMUST NOT be set. AVP Length The AVP Length field is three octets, and indicates the length of this AVP including the AVP Code, AVP Length, AVP Flags, Reserved,in theVendor-ID field (if present) andCommand ; Flags is set, indicating that theAVP data. If amessage ; isreceived witha request, as opposed to aninvalid attribute length,answer. p-bit = ", PXY" ; If present, themessage SHOULD be rejected. 4.2 Optional Header Elements The AVP Header contains one optional field. This field is only present if'P' bit in therespective bit-flagCommand ; Flags isenabled. Vendor-ID The Vendor-ID fieldset, indication that the message ; ispresent ifproxiable. e-bit = ", ERR" ; If present, the'V''E' bitis setin theAVPCommand ; Flagsfield. The optional four octet Vendor-ID fieldis set, indication that the answer ; message contains a Result-Code AVP in ; theIANA assigned "SMI Network Management Private Enterprise Codes" [2] value, encoded"protocol error" class. fixed = [qual] "<" avp-spec ">" ; Defines the fixed position of an AVP required = [qual] "{" avp-spec "}" ; The AVP MUST be present optional = [qual] "[" avp-name "]" ; The avp-name innetwork byte order. Any vendor wishingthe 'optional' rule cannot ; evaluate toimplementany AVP Name which is included ; in avendor-specific Diameterfixed or required rule. qual = [min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ; The absence of any qualifiers implies that ; one and only one such AVP MUSTuse their own Vendor-ID along with their privately managed AVP address space,be present. ; Calhoun et al. expiresDecember 2001January 2002 [Page28]26] Internet-DraftJuneJuly 2001guaranteeing that they will not collide with any other vendor's vendor-specific AVP, nor with future IETF applications. A vendor ID value of zero (0) corresponds to; NOTE: "[" and "]" have a different meaning ; than in ABNF (see theIETF adopted AVP values,optional rule, above). ; These braces cannot be used to express ; optional fixed rules (such asmanaged byan optional ; ICV at theIANA. Sinceend.) To do this, theabsenceconvention ; is '0*1fixed'. min = 1*DIGIT ; The minimum number of times thevendor ID field implies that the AVP in questionelement may ; be present. The default value isnot vendor specific, implementations SHOULD not usezero. max = 1*DIGIT ; The maximum number of times thezero (0) vendor ID. 4.3 AVP Base Data Formatelement may ; be present. TheData fielddefault value iszero or more octets and contains information specificinfinity. avp-spec = diameter-name ; The avp-spec has to be an AVP Name, defined ; in theAttribute.base or extended Diameter ; specifications. avp-name = avp-spec | "AVP" ; Theformat and length ofstring "AVP" stands for *any* arbitrary ; AVP Name, which does not conflict with theData field is determined by; required or fixed position AVPs defined in ; theAVP Code and AVP Length fields.command code definition. Theformatfollowing is a definition of a fictitious command code: Example-Request ::= < Diameter-Header: 9999999, REQ, PXY > { User-Name } * { Origin-Host } * [ AVP ] 3.3 Diameter Command Naming Conventions The following conventions are required for theData field MUST be onenaming of Diameter messages. Diameter commands typically start with an object name, and end with either thefollowing base data typesRequest or Answer verb. The Request/Answer message pair is used when adata type derived from the base data types. In the eventDiameter node requests that some action be performed by anew AVP Base Data Format is needed,peer (e.g. authorize anew version of this RFC must be created. OctetStringuser, terminate a session). Thedata contains arbitrary data of variable length. Unless otherwise noted, the AVP Length fieldcorresponding answer MUSTbe set to at least 8 (12 ifcontain either a positive or negative result code, informing the'V' bit is enabled).requester whether the request was successful or not. Other information MAY also be returned in the Answer message. Request and Answer messages share the same command code, and the Calhoun et al. expires January 2002 [Page 27] Internet-Draft July 2001 R(equest) bit in the Diameter header is used to identify whether a message is the request or answer. 4.0 Diameter AVPs Diameter AVPs carry specific authentication, accounting and authorization information, security information as well as configuration details for the request and reply. Some AVPs MAY be listed more than once. The effect of such an AVP is specific, and is specified in each case by the AVP description. Each AVPValuesofthistypethat do notOctetString MUST be padded to align on a32-bit boundary MUST have the necessary padding. Integer3232 bitsigned value, in network byte order. Theboundary, while other AVPLength field MUST be settypes align naturally. NULL bytes are added to12 (16 ifthe'V' bit is enabled). Integer64 64 bit signed value, in network byte order. Theend of the AVPLengthData fieldMUST be set to 16 (20 iftill a word boundary is reached. The length of the'V' bitpadding isenabled). Unsigned32 32 bit unsigned value,not reflected innetwork byte order. Thethe AVP Lengthfieldfield. 4.1 AVP Header The fields in the AVP header MUST beset to 12 (16 if the 'V' bit is enabled). Unsigned64 64 bit unsigned value,sent in network byte order. TheAVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). Float32 This represents floating point valuesformat ofsingle precision as described by [30].the header is: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V M P r r r r r| AVP Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID (opt) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+-+-+-+-+ AVP Code The32 bit value is transmitted in network byte order.AVP Code, combined with the Vendor-Id field, identifies the attribute uniquely. The first 256 AVPLengthnumbers are reserved for backward compatibility with RADIUS and are to be interpreted as per NASREQ [7]. AVP numbers 256 and above are used for Diameter, which are allocated by IANA (see section 11.1). AVP Flags The AVP Flags fieldMUSTinforms the receiver how each attribute must be handled. The 'r' (reserved) bits are unused and SHOULD be set to12 (16 if0. Note that subsequent Diameter applications MAY define additional bits within theFloat64AVP Header, and an unrecognized bit Calhoun et al. expiresDecember 2001January 2002 [Page29]28] Internet-DraftJuneJuly 2001This represents floating point values of double precision as described by [30].SHOULD be considered an error. The64'P' bitvalueistransmitteddefined innetwork byte order.[11]. TheAVP Length field MUST be set to 16 (20 if'M' Bit, known as theFloat128 This represents floating point valuesMandatory bit, indicates whether support ofquadruple precision as described by [30]. The 128 bit valuethe AVP istransmitted in network byte order. Therequired. If an unrecognized AVPLength field MUST be set to 24 (28 ifwith theGrouped The Data field'M' bit set isspecified asreceived by asequence ofDiameter node, the message MUST be rejected. Diameter Relay and Redirector agents MUST NOT reject messages with unrecognized AVPs.Each of these AVPs follows - inA Diameter node that sets theorder'M' bit inwhich they are specified - including their headers and padding. Thean AVPLength fieldthat isset to 8 (12not defined in a given message's ABNF is at fault if the'V' bitmessage isenabled) plus the total length of all included AVPs, including their headers and padding. 4.4 Derived AVP Data Formatsrejected. Inadditionorder to provide service to theAVP Base Data Formats, applications may define data formats derived from the AVP Base Data Formats. New AVP Derived Data Formats MUST be registered with IANA. An application that uses AVP Derived Data Formats other than those defined inuser, thebase protocolnode at fault MUSThavere-issue asection "AVP Derived Data Formats" that includes each of these formats. In that section, each format isrequest eitherdefinedwithout the AVP, orlisted withwithout setting its 'M' bit. A Diameter node that rejects areferencemessage due to an unrecognized AVP with theRFC that defines this format. If'M' bit set, and the AVPDerived Data Formatin question isdefined, it SHOULD use a format similar todefined in theformat definitions below. The below AVP Derived DATA Formats are commonly used by applications. IPAddress The IPAddress formatmessage's ABNF isderived fromat fault. In most cases theOctetString AVP Base Format. It represents 32 bit (IPv4) [17] or 128 bit (IPv6) [16] address, most significant octet first. The formatinitiator of theaddress (IPv4 or IPv6)failing request will not provide service to the user. AVPs with the 'M' bit cleared are informational only and a receiver that receives a message with such an AVP that isdetermined bynot supported MAY simply ignore thelength. IfAVP. The 'V' bit, known as theattribute valueVendor-Specific bit, indicates whether the optional Vendor-ID field isan IPv4 address,present in the AVPLengthheader. When set the AVP Code belongs to the specific vendor code address space. Unless otherwise noted, AVPs will have the following default AVP Flags field settings: The 'M' bit MUST be12 (16 ifset. The 'V' bit MUST NOT be set. AVP Length The AVP Length field isenabled), otherwisethree octets, and indicates the length of this AVPLengthincluding the AVP Code, AVP Length, AVP Flags, Reserved, the Vendor-ID fieldMUST(if present) and the AVP data. If a message is received with an invalid attribute length, the message SHOULD beset to 24 (28rejected. 4.2 Optional Header Elements The AVP Header contains one optional field. This field is only present if the'V' bitrespective bit-flag isenabled) for IPv6 addresses. Timeenabled. Vendor-ID TheTime formatVendor-ID field isderived frompresent if theUnsigned32 AVP Base Format. This is 32'V' bitunsigned value containingis set in the AVP Flags field. The optional fourmost significant octets returned from NTP [18], in network byte order.octet Vendor-ID field contains the Calhoun et al. expiresDecember 2001January 2002 [Page30]29] Internet-DraftJuneJuly 2001This represent the number of seconds since 0h on 1 January 1900IANA assigned "SMI Network Management Private Enterprise Codes" [2] value, encoded in network byte order. Any vendor wishing to implement a vendor-specific Diameter AVP MUST use their own Vendor-ID along withrespecttheir privately managed AVP address space, guaranteeing that they will not collide with any other vendor's vendor-specific AVP, nor with future IETF applications. A vendor ID value of zero (0) corresponds to theCoordinated Universal Time (UTC). On 6h 28m 16s UTC, 7 February 2036IETF adopted AVP values, as managed by thetime value will overflow. NTP [18] describes a procedure to extendIANA. Since thetime to 2104. UTF8String The UTF8String formatabsence of the vendor ID field implies that the AVP in question isderived fromnot vendor specific, implementations SHOULD not use theOctetStringzero (0) vendor ID. 4.3 AVP BaseFormat. ThisData Format The Data field isa human readable string represented using the ISO/IEC IS 10646-1 character set, encoded as an OctetString usingzero or more octets and contains information specific to theUTF-8 [29] transformationAttribute. The formatdescribed in RFC 2279. Since additional code points are addedand length of the Data field is determined byamendments tothe10646 standard from time to time, implementationsAVP Code and AVP Length fields. The format of the Data field MUST beprepared to encounter any code point from 0x00000001 to 0x7fffffff. Byte sequences that do not correspond to the valid UTF-8 encodingone ofa code pointthe following base data types orare outside this range are prohibited. Note that sinceacode point of 0x00000000 is prohibited, no octet will containdata type derived from the base data types. In the event that avaluenew AVP Base Data Format is needed, a new version of0x00.this RFC must be created. OctetString Theusedata contains arbitrary data ofcontrol codes SHOULDvariable length. Unless otherwise noted, the AVP Length field MUST beavoided. When it is necessaryset torepresent a newline,at least 8 (12 if thecontrol code sequence CR LF SHOULD be used. The use'V' bit is enabled). AVP Values ofleading or trailing white space SHOULD be avoided. For code pointsthis type that do notdirectly supported by user interface hardware or software, an alternative means of entry and display, such as hexadecimal, MAY be provided. For information encoded in 7-bit US-ASCII,align on a 32-bit boundary MUST have theUTF-8 encoding is identicalnecessary padding. Integer32 32 bit signed value, in network byte order. The AVP Length field MUST be set to 12 (16 if theUS-ASCII encoding. UTF-8 may require multiple bytes'V' bit is enabled). Integer64 64 bit signed value, in network byte order. The AVP Length field MUST be set torepresent a single character / code point; thus16 (20 if thelength of a UTF8String'V' bit is enabled). Unsigned32 32 bit unsigned value, inoctets maynetwork byte order. The AVP Length field MUST bedifferent from the number of characters encoded. Note thatset to 12 (16 if thesize of an UTF8String'V' bit ismeasuredenabled). Unsigned64 64 bit unsigned value, inoctets, not characters.network byte order. TheUTF8StringAVP Length field MUSTnot contain any octets with a value of zero. DiameterIdentity The DiameterIdentity format is derived from the OctetString AVP Base Format. It uses the UTF-8 encoding and hasbe set to 16 (20 if thesame'V' bit is enabled). Float32 This represents floating point values of single precision as Calhoun et al. expiresDecember 2001January 2002 [Page31]30] Internet-DraftJuneJuly 2001requirements as the UTF8String. In addition, it must follow the Uniform Resource Identifiers (URI) syntax [29] rules specified below: Diameter-Identity = [scheme-name] fqdn [ port ] [ transport ] scheme-name = "aaa://" aaa-protocol "/" ; If absent, the default BASE for relative URI references ;described by [30]. The 32 bit value isaaa://diameter/ aaa-protocol = ( "diameter" | "radius" | "tacacs+" ) fqdn = Fully Qualified Host Name port = ":" 1*DIGIT ; One of the ports usedtransmitted in network byte order. The AVP Length field MUST be set tolisten for incoming connections. ; If absent,12 (16 if thedefault Diameter port (TBD) is assumed. transport = ";transport=" ( "tcp" | "sctp" | "udp") ; OneFloat64 This represents floating point values ofthe transports used to listen for incoming ; connections. If absent, the default SCTP [26] protocoldouble precision as described by [30]. The 64 bit value is; assumed. UDPtransmitted in network byte order. The AVP Length field MUSTNOTbeused whenset to 16 (20 if theaaa-protocol field ;Float128 This represents floating point values of quadruple precision as described by [30]. The 128 bit value is transmitted in network byte order. The AVP Length field MUST be set todiameter.24 (28 if the Grouped Thefollowing are examples of valid Diameter host identities: host.abc.com;transport=tcp host.abc.com:6666;transport=tcp aaa://diameter/host.abc.com aaa://diameter/host.abc.com:6666 aaa://diameter/host.abc.com:6666;transport=tcp aaa://radius/host.abc.com:1813;transport=udp The first two forms are relative URI references, against the default base of aaa://diameter/. Since multiple Diameter processes on a single host cannot listen for incoming connections on the same port onData field is specified as agiven protocol,sequence of AVPs. Each of these AVPs follows - in theDiameterIdentityorder in which they are specified - including their headers and padding. The AVP Length field isguaranteedset tobe unique per host. A Diameter node MAY advertise different identities on each connection, via the CER and CEA's Origin-Host AVP, but the same identity MUST be used throughout8 (12 if theduration of a connection. When comparing AVPs of this format, it'V' bit isnecessary to add any absent fields withenabled) plus thedefault values priortotal length of all included AVPs, including their headers and padding. 4.4 Derived AVP Data Formats In addition to thecomparison. Calhoun et al. expires December 2001 [Page 32] Internet-Draft June 2001 For example, diameter-host.abc.com would be expanded to aaa://diameter/diameter-host.abc.com:TBD;protocol=sctp. Enumerated Enumerated isAVP Base Data Formats, applications may define data formats derived from theInteger32AVP BaseFormat. This contains a list of valid values and their interpretation and is described in the DiameterData Formats. New AVP Derived Data Formats MUST be registered with IANA. An applicationintroducing the AVP. 4.5 Groupedthat uses AVPValues The DiameterDerived Data Formats other than those defined in the base protocolallows AVP valuesMUST have a section "AVP Derived Data Formats" that includes each oftype 'Grouped.' This impliesthese formats. In thatthe Data fieldsection, each format isactuallyeither defined or listed with asequence of AVPs. It is possiblereference toinclude anthe RFC that defines this format. If the AVPwith a Grouped type withinDerived Data Format is defined, it SHOULD use aGrouped type, that is,format similar tonest them. AVPs within an AVP of type Grouped havethesame padding requirements as non-Grouped AVPs, as defined in section 4.0.format definitions below. The below AVPCode numbering space of all AVPs included in a Grouped AVPDerived DATA Formats are commonly used by applications. IPAddress The IPAddress format is derived from thesame as for non-grouped AVPs. Further, if anyOctetString AVP Base Format. It represents 32 bit (IPv4) [17] or 128 bit (IPv6) [16] address, most significant octet first. The format of theAVPs encapsulated within a Grouped AVP hasaddress (IPv4 or IPv6) is determined by the'M' (mandatory) bit set,length. If theGrouped AVP itself MUST also includeattribute value is an IPv4 address, the'M' bit set. All AVPs included in a Grouped AVP Every GroupedAVPdefinedLength field MUSTinclude a corresponding grammar, using ABNF [31] (with modifications), as defined below. avp-def = name "::=" avp name-fmt = ALPHA *(ALPHA / DIGIT / "-") name = name-fmt ; The name has tobe 12 (16 if 'V' bit is enabled), otherwise thename of an AVP, ; defined in the base or extended Diameter ; specifications. avp = header [ *fixed] [ *required] [ *optional] [ *fixed] header = "<AVP-Header:" avpcode ">" avpcode = 1*DIGIT ; TheAVPCode assignedLength field MUST be set to 24 (28 if theGrouped AVP fixed = [qual] "<" avp-spec ">" required = [qual] "{" avp-spec "}"'V' bit is enabled) for IPv6 addresses. Time The Time format is derived from the Unsigned32 AVP Base Format. Calhoun et al. expiresDecember 2001January 2002 [Page33]31] Internet-DraftJuneJuly 2001optional = [qual] "[" avp-name "]" ; The avp-nameThis is 32 bit unsigned value containing the four most significant octets returned from NTP [18], in network byte order. This represent the'optional' rule cannot ; evaluatenumber of seconds since 0h on 1 January 1900 with respect toany AVP Name which is included ; inthe Coordinated Universal Time (UTC). On 6h 28m 16s UTC, 7 February 2036 the time value will overflow. NTP [18] describes afixed or required rule. qual = [min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ;procedure to extend the time to 2104. UTF8String Theabsence of any qualifiers implies that ; one and only one suchUTF8String format is derived from the OctetString AVPMUST be present. ; ; NOTE: "[" and "]" haveBase Format. This is adifferent meaning ; than in ABNF (seehuman readable string represented using theoptional rule, above). ; These braces cannot be used to express ; optional fixed rules (suchISO/IEC IS 10646-1 character set, encoded as anoptional ; ICV at the end.) To do this,OctetString using theconvention ; is '0*1fixed'. min = 1*DIGIT ; The minimum number of timesUTF-8 [29] transformation format described in RFC 2279. Since additional code points are added by amendments to theelement may ; be present. max = 1*DIGIT ;10646 standard from time to time, implementations MUST be prepared to encounter any code point from 0x00000001 to 0x7fffffff. Byte sequences that do not correspond to the valid UTF-8 encoding of a code point or are outside this range are prohibited. Note that since a code point of 0x00000000 is prohibited, no octet will contain a value of 0x00. Themaximum numberuse oftimes the element may ;control codes SHOULD bepresent. avp-spec = name-fmt ; The avp-spec hasavoided. When it is necessary tobe an AVP Name, defined ; inrepresent a newline, thebase or extended Diameter ; specifications. avp-name = avp-spec | "AVP" ;control code sequence CR LF SHOULD be used. Thestring "AVP" stands for *any* arbitrary ; AVP Name, which doesuse of leading or trailing white space SHOULD be avoided. For code points notconflict with the ; requireddirectly supported by user interface hardware orfixed position AVPs definedsoftware, an alternative means of entry and display, such as hexadecimal, MAY be provided. For information encoded in;7-bit US-ASCII, thecommandUTF-8 encoding is identical to the US-ASCII encoding. UTF-8 may require multiple bytes to represent a single character / codedefinition. 4.5.1 Example AVP withpoint; thus the length of aGrouped Data type The Example AVP (AVP Code 999999) isUTF8String in octets may be different from the number oftype Grouped andcharacters encoded. Note that the size of an UTF8String isused to clarify how Grouped AVP values work.measured in octets, not characters. TheGrouped Data field has the following ABNF grammar: Example-AVP ::= < AVP Header: 999999 > { Origin-Host } 1*{ Session-Id } *[ AVP ]UTF8String MUST not contain any octets with a value of zero. Calhoun et al. expiresDecember 2001January 2002 [Page34]32] Internet-DraftJuneJuly 2001An Example AVP with Grouped Data follows.DiameterIdentity TheOrigin-Host AVPDiameterIdentity format isrequired.derived from the OctetString AVP Base Format. It uses the UTF-8 encoding and has the same requirements as the UTF8String. Inthis case: Origin-Host = "example.com". One or more Session-Idsaddition, it mustfollow. Here there are two: Session-Id = "grump.example.com:33041;23432;893;0AF3B81" Session-Idfollow the Uniform Resource Identifiers (URI) syntax [29] rules specified below: Diameter-Identity ="grump.example.com:33054;23561;2358;0AF3B82" optional AVPs included are Recovery-Policyfqdn [ port ] [ transport ] [ protocol ] aaa-protocol =<binary> 2163bc1d0ad82371f6bc09484133c3f09ad74a0dd5346d54195a7cf0b35 2cabc881839a4fdcfbc1769e2677a4c1fb499284c5f70b48f58503a45c5 c2d6943f82d5930f2b7c1da640f476f0e9c9572a50db8ea6e51e1c2c7bd f8bb43dc995144b8dbe297ac739493946803e1cee3e15d9b765008a1b2a cf4ac777c80041d72c01e691cf751dbf86e85f509f3988e5875dc905119 26841f00f0e29a6d1ddc1a842289d440268681e052b30fb638045f7779c 1d873c784f054f688f5001559ecff64865ef975f3e60d2fd7966b8c7f92 Futuristic-Acct-Record( "diameter" | "radius" | "tacacs+" ) protocol =<binary> fe19da5802acd98b07a5b86cb4d5d03f0314ab9ef1ad0b67111ff3b90a0 57fe29620bf3585fd2dd9fcc38ce62f6cc208c6163c008f4258d1bc88b8 17694a74ccad3ec69269461b14b2e7a4c111fb239e33714da207983f58c 41d018d56fe938f3cbf089aac12a912a2f0d1923a9390e5f789cb2e5067 d3427475e49968f841 The data for";protocol=" aaa-protocol ; If absent, theoptional AVPsdefault AAA protocol ; isrepresented in hex since the formatdiameter. fqdn = Fully Qualified Host Name port = ":" 1*DIGIT ; One ofthese AVPs is neither known atthetime of definitionports used to listen for ; incoming connections. ; If absent, ; the default Diameter port (TBD) is ; assumed. transport-protocol = ( "tcp" | "sctp" | "udp" ) transport = ";transport=" transport-protocol ; One of theExample-AVP group, nor (likely) attransports used to listen ; for incoming connections. If absent, ; thetimedefault SCTP [26] protocol is ; assumed. UDP MUST NOT be used when ; theexample instance of this AVPaaa-protocol field isinterpreted - except by Diameter implementations which support the samesetof AVPs.to ; diameter. Theencoding example illustrates how padding is used, how length fieldsfollowing arecalculated and how AVPs do not have to beginexamples of valid Diameter host identities: host.abc.com;transport=tcp host.abc.com:6666;transport=tcp aaa://host.abc.com;protocol=diameter aaa://host.abc.com:6666;protocol=diameter aaa://host.abc.com:6666;transport=tcp;protocol=diameter aaa://host.abc.com:1813;transport=udp;protocol=radius Since multiple Diameter processes on8 byte boundaries. Also note that AVPs may be present in the Grouped AVP value which the receivera single host cannotinterpret (here,listen for incoming connections on theRecover-Policy and Futuristic-Acct-Record AVPs). This AVP wouldsame port on a given protocol, the DiameterIdentity is guaranteed to beencoded as follows:unique per Calhoun et al. expiresDecember 2001January 2002 [Page35]33] Internet-DraftJuneJuly 20010 1 2 3 4 5 6 7 +-------+-------+-------+-------+-------+-------+-------+-------+ 0 | Example AVP Header (AVP Code = 999999), Length = 468 | +-------+-------+-------+-------+-------+-------+-------+-------+ 8 |host. A Diameter node MAY advertise different identities on each connection, via the CER and CEA's Origin-Host AVP, but the same identity MUST be used throughout the duration of a connection. When comparing AVPs of this format, it is necessary to add any absent fields with the default values prior to the comparison. For example, diameter-host.abc.com would be expanded to aaa://diameter/diameter-host.abc.com:TBD;protocol=sctp. Enumerated Enumerated is derived from the Integer32 AVPHeader (AVP Code = 264), Length = 19 | +-------+-------+-------+-------+-------+-------+-------+-------+ 16 | 'e' | 'x' | 'a' | 'm' | 'p' | 'l' | 'e' | '.' | +-------+-------+-------+-------+-------+-------+-------+-------+ 24 | 'c' | 'o' | 'm' |Padding| Session-Id AVP Header | +-------+-------+-------+-------+-------+-------+-------+-------+ 32 | (AVP Code = 263), Length = 50 | 'g' | 'r' | 'u' | 'm' | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 64 | 'A' | 'F' | '3' | 'B' | '8' | '1' |Padding|Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 68 | Session-Id AVP Header (AVP Code = 263), Length = 51 | +-------+-------+-------+-------+-------+-------+-------+-------+ 72 | 'g' | 'r' | 'u' | 'm' | 'p' | '.' | 'e' | 'x' | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 104 | '0' | 'A' | 'F' | '3' | 'B' | '8' | '2' |Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 112 | Recovery-Policy Header (AVP Code = 8341), Length = 223 | +-------+-------+-------+-------+-------+-------+-------+-------+ 120 | 0x21 | 0x63 | 0xbc | 0x1d | 0x0a | 0xd8 | 0x23 | 0x71 | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 320 | 0x2f | 0xd7 | 0x96 | 0x6b | 0x8c | 0x7f | 0x92 |Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 328 | Futuristic-Acct-Record Header (AVP Code = 15930), Length = 137| +-------+-------+-------+-------+-------+-------+-------+-------+ 336 | 0xfe | 0x19 | 0xda | 0x58 | 0x02 | 0xac | 0xd9 | 0x8b | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 464 | 0x41 |Padding|Padding|Padding| +-------+-------+-------+-------+ 4.6 DiameterBaseProtocol AVPs The following table describesFormat. This contains a list of valid values and their interpretation and is described in the DiameterAVPs defined inapplication introducing thebase protocol, theirAVP. IPFilterRule The IPFilterRule format is derived from the OctetString AVPCode values, types, possible flag valuesBase Format. It uses the UTF-8 encoding andwhetherhas theAVP MAYsame requirements as the UTF8String. Packets may beencrypted. Calhoun et al. expires December 2001 [Page 36] Internet-Draft June 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Typefiltered based on the following information that is associated with it: Direction (in or out) Source and destination IP address (possibly masked) Protocol Source and destination port (lists or ranges) TCP flags IP fragment flag IP options ICMP types Rules for the appropriate direction are evaluated in order, with the first matched rule terminating the evaluation. Each packet is evaluated once. If no rule matches, the packet is dropped if the last rule evaluated was a permit, and passed if the last rule was a deny. IPFilterRule filters MUST follow the format: action dir proto from src to dst [options] action permit - Allow packets that match the rule. deny - Drop packets that match the rule. dir "in" is from the terminal, "out" is to the terminal. proto An IP protocol specified by number. The "ip" Calhoun et al. expires January 2002 [Page 34] Internet-Draft July 2001 keyword means any protocol will match. src and dst <address/mask> [ports] The <address/mask> may be specified as: ipno An IPv4 or IPv6 number in dotted- quad or canonical IPv6 form. Only this exact IP number will match the rule. ipno/bits An IP number as above with a mask width of the form 1.2.3.4/24. In this case all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version and the IP number MUST NOT have bits set beyond the mask. The sense of the match can be inverted by preceding an address with the not modifier, causing all other addresses to be matched instead. This does not affect the selection of port numbers. The keyword "any" is 0.0.0.0/0 or the IPv6 equivalent. The keyword "assigned" is the address or set of addresses assigned to the terminal. The first rule SHOULD be "deny in ip !assigned". With the TCP, UDP and SCTP protocols, optional ports may be specified as: {port|port-port}[,port[,...]] The `-' notation specifies a range of ports (including boundaries). Fragmented packets which have a non-zero offset (i.e. not the first fragment) will never match a rule which has one or more port specifications. See the frag option for details on matching fragmented packets. options: frag Match if the packet is a fragment and this is not the first fragment of the datagram. frag may not be used in conjunction with either tcpflags or TCP/UDP port specifications. Calhoun et al. expires January 2002 [Page 35] Internet-Draft July 2001 ipoptions spec Match if the IP header contains the comma separated list of options specified in spec. The supported IP options are: ssrr (strict source route), lsrr (loose source route), rr (record packet route) and ts (timestamp). The absence of a particular option may be denoted with a `!'. tcpoptions spec Match if the TCP header contains the comma separated list of options specified in spec. The supported TCP options are: mss (maximum segment size), window (tcp window advertisement), sack (selective ack), ts (rfc1323 timestamp) and cc (rfc1644 t/tcp connection count). The absence of a particular option may be denoted with a `!'. established TCP packets only. Match packets that have the RST or ACK bits set. setup TCP packets only. Match packets that have the SYN bit set but no ACK bit. tcpflags spec TCP packets only. Match if the TCP header contains the comma separated list of flags specified in spec. The supported TCP flags are: fin, syn, rst, psh, ack and urg. The absence of a particular flag may be denoted with a `!'. A rule which contains a tcpflags specification can never match a fragmented packet which has a non-zero offset. See the frag option for details on matching fragmented packets. icmptypes types ICMP packets only. Match if the ICMP type is in the list types. The list may be specified as any combination of ranges or individual types separated by commas. The supported ICMP types are: echo reply (0), destination unreachable (3), Calhoun et al. expires January 2002 [Page 36] Internet-Draft July 2001 source quench (4), redirect (5), echo request (8), router advertisement (9), router solicitation (10), time-to-live exceeded (11), IP header bad (12), timestamp request (13), timestamp reply (14), information request (15), information reply (16), address mask request (17) and address mask reply (18). There is one kind of packet that the access device MUST always discard, that is an IP fragment with a fragment offset of one. This is a valid packet, but it only has one use, to try to circumvent firewalls. An access device that is unable to interpret or apply a deny rule MUST terminate the session. An access device that is unable to interpret or apply a permit rule MAY apply a more restrictive rule. An access device MAY apply deny rules of its own before the supplied rules, for example to protect the access device owner's infrastructure. The rule syntax is a modified subset of ipfw(8) from FreeBSD, and the ipfw.c code may provide a useful base for implementations. QoSFilterRule The QosFilterRule format is derived from the OctetString AVP Base Format. It uses the UTF-8 encoding and has the same requirements as the UTF8String. Packets may be marked or metered based on the following information that is associated with it: Direction (in or out) Source and destination IP address (possibly masked) Protocol Source and destination port (lists or ranges) DSCP values (no mask or range) Rules for the appropriate direction are evaluated in order, with the first matched rule terminating the evaluation. Each packet is evaluated once. If no rule matches, the packet is treated as best effort. QoSFilterRule filters MUST follow the format: action dir proto from src to dst [options] tag - Mark packet with a specific DSCP [49]. The DSCP option MUST be included. Calhoun et al. expires January 2002 [Page 37] Internet-Draft July 2001 meter - Meter traffic. The metering options MUST be included. dir "in" is from the terminal, "out" is to the terminal. proto An IP protocol specified by number. The "ip" keyword means any protocol will match. src and dst <address/mask> [ports] The <address/mask> may be specified as: ipno An IPv4 or IPv6 number in dotted- quad or canonical IPv6 form. Only this exact IP number will match the rule. ipno/bits An IP number as above with a mask width of the form 1.2.3.4/24. In this case all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version and the IP number MUST NOT have bits set beyond the mask. The sense of the match can be inverted by preceding an address with the not modifier, causing all other addresses to be matched instead. This does not affect the selection of port numbers. The keyword "any" is 0.0.0.0/0 or the IPv6 equivalent. The keyword "assigned" is the address or set of addresses assigned to the terminal. The first rule SHOULD be "deny in ip !assigned". With the TCP, UDP and SCTP protocols, optional ports may be specified as: {port|port-port}[,port[,...]] The `-' notation specifies a range of ports (including boundaries). options: DSCP <color> color values as defined in [49]. Exact matching Calhoun et al. expires January 2002 [Page 38] Internet-Draft July 2001 of DSCP values is required (no masks or ranges). the "deny" can replace the color_under or color_over values in the meter action for rate- dependent packet drop. metering <rate> <color_under> <color_over> The metering option provides Assured Forwarding, as defined in [50], and MUST be present if the action is set to meter. The rate option is the throughput, in bits per second, which is used by the access device to mark packets. Traffic above the rate is marked with the color_over codepoint, while traffic under the rate is marked with the color_under codepoint. The color_under and color_over options contain the drop preferences, and MUST conform to the recommended codepoint keywords described in [50] (e.g. AF13). The metering option also supports the strict limit on traffic required by Expedited Forwarding, as defined in [51]. The color_over option may contain the keyword "drop" to prevent forwarding of traffic that exceeds the rate parameter. The rule syntax is a modified subset of ipfw(8) from FreeBSD, and the ipfw.c code may provide a useful base for implementations. 4.5 Grouped AVP Values The Diameter protocol allows AVP values of type 'Grouped.' This implies that the Data field is actually a sequence of AVPs. It is possible to include an AVP with a Grouped type within a Grouped type, that is, to nest them. AVPs within an AVP of type Grouped have the same padding requirements as non-Grouped AVPs, as defined in section 4.0. The AVP Code numbering space of all AVPs included in a Grouped AVP is the same as for non-grouped AVPs. Further, if any of the AVPs encapsulated within a Grouped AVP has the 'M' (mandatory) bit set, the Grouped AVP itself MUST also include the 'M' bit set. All AVPs included in a Grouped AVP Every Grouped AVP defined MUST include a corresponding grammar, using ABNF [31] (with modifications), as defined below. Calhoun et al. expires January 2002 [Page 39] Internet-Draft July 2001 avp-def = name "::=" avp name-fmt = ALPHA *(ALPHA / DIGIT / "-") name = name-fmt ; The name has to be the name of an AVP, ; defined in the base or extended Diameter ; specifications. avp = header [ *fixed] [ *required] [ *optional] [ *fixed] header = "<AVP-Header:" avpcode ">" avpcode = 1*DIGIT ; The AVP Code assigned to the Grouped AVP fixed = [qual] "<" avp-spec ">" required = [qual] "{" avp-spec "}" optional = [qual] "[" avp-name "]" ; The avp-name in the 'optional' rule cannot ; evaluate to any AVP Name which is included ; in a fixed or required rule. qual = [min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ; The absence of any qualifiers implies that ; one and only one such AVP MUST be present. ; ; NOTE: "[" and "]" have a different meaning ; than in ABNF (see the optional rule, above). ; These braces cannot be used to express ; optional fixed rules (such as an optional ; ICV at the end.) To do this, the convention ; is '0*1fixed'. min = 1*DIGIT ; The minimum number of times the element may ; be present. max = 1*DIGIT ; The maximum number of times the element may ; be present. avp-spec = name-fmt ; The avp-spec has to be an AVP Name, defined Calhoun et al. expires January 2002 [Page 40] Internet-Draft July 2001 ; in the base or extended Diameter ; specifications. avp-name = avp-spec | "AVP" ; The string "AVP" stands for *any* arbitrary ; AVP Name, which does not conflict with the ; required or fixed position AVPs defined in ; the command code definition. 4.5.1 Example AVP with a Grouped Data type The Example AVP (AVP Code 999999) is of type Grouped and is used to clarify how Grouped AVP values work. The Grouped Data field has the following ABNF grammar: Example-AVP ::= < AVP Header: 999999 > { Origin-Host } 1*{ Session-Id } *[ AVP ] An Example AVP with Grouped Data follows. The Origin-Host AVP is required. In this case: Origin-Host = "example.com". One or more Session-Ids must follow. Here there are two: Session-Id = "grump.example.com:33041;23432;893;0AF3B81" Session-Id = "grump.example.com:33054;23561;2358;0AF3B82" optional AVPs included are Recovery-Policy = <binary> 2163bc1d0ad82371f6bc09484133c3f09ad74a0dd5346d54195a7cf0b35 2cabc881839a4fdcfbc1769e2677a4c1fb499284c5f70b48f58503a45c5 c2d6943f82d5930f2b7c1da640f476f0e9c9572a50db8ea6e51e1c2c7bd f8bb43dc995144b8dbe297ac739493946803e1cee3e15d9b765008a1b2a cf4ac777c80041d72c01e691cf751dbf86e85f509f3988e5875dc905119 26841f00f0e29a6d1ddc1a842289d440268681e052b30fb638045f7779c 1d873c784f054f688f5001559ecff64865ef975f3e60d2fd7966b8c7f92 Futuristic-Acct-Record = <binary> fe19da5802acd98b07a5b86cb4d5d03f0314ab9ef1ad0b67111ff3b90a0 Calhoun et al. expires January 2002 [Page 41] Internet-Draft July 2001 57fe29620bf3585fd2dd9fcc38ce62f6cc208c6163c008f4258d1bc88b8 17694a74ccad3ec69269461b14b2e7a4c111fb239e33714da207983f58c 41d018d56fe938f3cbf089aac12a912a2f0d1923a9390e5f789cb2e5067 d3427475e49968f841 The data for the optional AVPs is represented in hex since the format of these AVPs is neither known at the time of definition of the Example-AVP group, nor (likely) at the time when the example instance of this AVP is interpreted - except by Diameter implementations which support the same set of AVPs. The encoding example illustrates how padding is used, how length fields are calculated and how AVPs do not have to begin on 8 byte boundaries. Also note that AVPs may be present in the Grouped AVP value which the receiver cannot interpret (here, the Recover-Policy and Futuristic-Acct-Record AVPs). This AVP would be encoded as follows: Calhoun et al. expires January 2002 [Page 42] Internet-Draft July 2001 0 1 2 3 4 5 6 7 +-------+-------+-------+-------+-------+-------+-------+-------+ 0 | Example AVP Header (AVP Code = 999999), Length = 468 | +-------+-------+-------+-------+-------+-------+-------+-------+ 8 | Origin-Host AVP Header (AVP Code = 264), Length = 19 | +-------+-------+-------+-------+-------+-------+-------+-------+ 16 | 'e' | 'x' | 'a' | 'm' | 'p' | 'l' | 'e' | '.' | +-------+-------+-------+-------+-------+-------+-------+-------+ 24 | 'c' | 'o' | 'm' |Padding| Session-Id AVP Header | +-------+-------+-------+-------+-------+-------+-------+-------+ 32 | (AVP Code = 263), Length = 50 | 'g' | 'r' | 'u' | 'm' | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 64 | 'A' | 'F' | '3' | 'B' | '8' | '1' |Padding|Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 68 | Session-Id AVP Header (AVP Code = 263), Length = 51 | +-------+-------+-------+-------+-------+-------+-------+-------+ 72 | 'g' | 'r' | 'u' | 'm' | 'p' | '.' | 'e' | 'x' | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 104 | '0' | 'A' | 'F' | '3' | 'B' | '8' | '2' |Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 112 | Recovery-Policy Header (AVP Code = 8341), Length = 223 | +-------+-------+-------+-------+-------+-------+-------+-------+ 120 | 0x21 | 0x63 | 0xbc | 0x1d | 0x0a | 0xd8 | 0x23 | 0x71 | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 320 | 0x2f | 0xd7 | 0x96 | 0x6b | 0x8c | 0x7f | 0x92 |Padding| +-------+-------+-------+-------+-------+-------+-------+-------+ 328 | Futuristic-Acct-Record Header (AVP Code = 15930), Length = 137| +-------+-------+-------+-------+-------+-------+-------+-------+ 336 | 0xfe | 0x19 | 0xda | 0x58 | 0x02 | 0xac | 0xd9 | 0x8b | +-------+-------+-------+-------+-------+-------+-------+-------+ . . . +-------+-------+-------+-------+-------+-------+-------+-------+ 464 | 0x41 |Padding|Padding|Padding| +-------+-------+-------+-------+ 4.6 Diameter Base Protocol AVPs The following table describes the Diameter AVPs defined in the base protocol, their AVP Code values, types, possible flag values and whether the AVP MAY be encrypted. Calhoun et al. expires January 2002 [Page 43] Internet-Draft July 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----| Accounting- 48213.29.8.2 Unsigned32 | M | P | | V | Y | Interim-Interval | | | | | | Accounting- 5013.59.8.5 OctetString| M | P | | V | Y | Multi-Session-Id | | | | | | Accounting- 48513.39.8.3 Unsigned32 | M | P | | V | Y | Record-Number | | | | | | Accounting- 48013.1 Unsigned329.8.1 Enumerated | M | P | | V | Y | Record-Type | | | | | | Accounting- 4413.49.8.4 OctetString| M | P | | V | Y | Session-Id | | | | | | Acct- 259 6.10 Integer32 | M | | | V | N | Application-Id | | | | | | Alternate-Peer 275 5.3.8 OctetString| M | | | V | N | Auth- 2586.66.9 Integer32 | M | | | V | N | Application-Id | | | | | | Auth-Request- 274 8.7 Enumerated | M | | | V | N | Type | | | | | | Authorization- 29110.88.9 Unsigned32 | M | P | | V | N | Lifetime | | | | | | Auth-Grace- 276 8.10 Unsigned32 | M | P | | V | N | Period | | | | | | Auth-Session- 277 8.11 Enumerated | M | P | | V | N | State | | | | | | Re-Auth-Request- 285 8.12 Enumerated | M | P | | V | N | Type | | | | | | Class 2510.168.20 OctetString| M | P | | V | Y | Destination-Host 2935.66.6 OctetString| M | | | V | N | Destination- 2835.76.7 OctetString| M | | | V | N | Realm | | | | | | Disconnect-Cause 273 5.4.3 Enumerated | M | | | V | N | Error-Message 2819.37.3 OctetString| | | | V | N | Error-Reporting- 2949.47.4 OctetString| | | | V | N | Host | | | | | | Failed-AVP 2799.57.5 OctetString| M | P | | V |YN | Firmware- 2676.55.3.4 Unsigned32 | | | | V,M | N | Revision | | | | | | Host-IP-Address 2576.75.3.5 IPAddress | M | | | V | N | Multi-Round- 27210.158.19 Unsigned32 | M | P | | V | Y | Time-Out | | | | | | Origin-Host 2645.46.4 OctetString| M | | | V | N | Origin-Realm 2965.56.5 OctetString| M | | | V | N | -----------------------------------------|----+-----+----+-----|----| Calhoun et al. expires January 2002 [Page 44] Internet-Draft July 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----| Origin-State-Id 278 8.16 Unsigned32 | M | | | V | N | Product-Name 2696.95.3.7 OctetString| | | | V | N | Proxy-Host 2805.8.36.8.3 IPAddress | M | | | V | N | Proxy-Info 2845.8.26.8.2 Grouped | M | | | V | N | Proxy-State 335.8.46.8.4 OctetString| M | | | V | N | Redirect-Host 2925.96.12 OctetString| M | | | V |YN | Redirect-Host- 2615.106.13 Enumerated | M | | | V | N | Usage | | | | | | Redirect-Max- 2625.116.14 Unsigned32 | M | | | V | N | Cache-Time | | | | | | Result-Code 2689.17.1 Unsigned32 | M | | | V | N |-----------------------------------------|----+-----+----+-----|----| Calhoun et al. expires December 2001 [Page 37] Internet-Draft June 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----|Route-Record 2825.8.16.8.1 OctetString| M | | | V | N | Session-Id 26310.78.8 OctetString| M | | | V | Y | Session-Timeout 2710.9 Unsigned32 | M | | | V | N | Origin-State-Id 278 10.128.13 Unsigned32 | M | | | V | N | Session-Binding 27010.138.17 Unsigned32 | M | | | V | Y | Session-Server- 27110.148.18 Enumerated | M | | | V | Y | Failover | | | | | | Source-Route 286 6.8.5 OctetString| M | | | V | N | Supported- 2656.85.3.6 Unsigned32 | M | | | V | N | Vendor-Id | | | | | | Termination- 29510.118.15 Enumerated | M | | | V | N | Cause | | | | | | User-Name 110.108.14 OctetString| M | | | V | Y | Vendor-Id 2666.45.3.3 Unsigned32 | M | | |V,MV | N | Vendor-Specific- 260 6.11 Grouped | M | | |V,MV | N | Application-Id | | | | | | -----------------------------------------|----+-----+----+-----|----| 5.0 Diametermessage processingPeers This section describes how a Diameter nodes establish connections and communicate with peers. 5.1 Peer Connections Although a Diameter node may have many possible peers that it is able to communicate with, it may not be economical to have an established connection to all of them. At a minimum, a Diameter node SHOULD have an established connection with a primary and secondary peer, and MAY have additional connections, if it is deemed necessary. Calhoun et al. expires January 2002 [Page 45] Internet-Draft July 2001 When a peer is deemed suspect, which could occur for various reasons, including not receiving a DWA within an alloted timeframe, no new requests should be forwarded to the peer, but failover procedures are not invoked. When an active peer is moved to this mode, additional connections SHOULD be established to ensure that the necessary number of active connections exists. There are two ways that a peer is removed from the suspect peer list: 1. The peer is no longer reachable, causing the transport connection to be shutdown. The peer is moved to the closed state. 2. Three watchdog messages are exchanged with accepted round trip times, and the connection to the peer is considered stabilized. 5.2 Diameter Peer Discovery Allowing for dynamic Diameter agent discovery will make it possible for simpler and more robust deployment of Diameter services. In order to promote interoperable implementations of Diameter peer discovery, the following mechanisms are described. These are based on existing IETF standards. There are two cases where Diameter peer discovery may be performed. The first is when a Diameter client needs to discover a first-hop Diameter agent. The second case is when a Diameter agent needs to discover another agent - for further handling of a Diameter operation. In both cases, the following 'search order' is recommended: 1. The Diameter implementation consults its list of static (manual) configured Diameter agent locations. These will be used if they exist and respond. 2. The Diameter implementation uses SLPv2 [28] to discover Diameter services. The Diameter service template [32] is included in Appendix A. It is recommended that SLPv2 security be deployed (this requires distributing keys to SLPv2 agents.) This is discussed further in Appendix A. SLPv2 will allow Diameter implementations to discover the location of Diameter agents in the local site, as well as their characteristics. Diameter agents with specific capabilities (say support for the Mobile IP application) can be requested, and only those will be discovered. 3. The Diameter implementation uses DNS to request the SRV RR [33] for the '_diameter._sctp' and/or '_diameter._tcp' server in a Calhoun et al. expires January 2002 [Page 46] Internet-Draft July 2001 particular domain. The Diameter implementation has to know in advance which domain to look for a Diameter agent in. Thissection describes howcould be deduced, for example, from the 'realm' in a NAI that a Diameterrequestsimplementation needed to perform a Diameter operation on. 3.1 If the destination address is a numeric IP address, the requestor contacts the peer at the given address andanswersthe port number specified in the SRV record or, if not specified, the default port (TBD). 3.2 The results of the query or queries are merged and ordered based on priority. Then, the searching technique outlined in [46] is used to select servers in order. The requestor attempts to contact each peer in the order listed, at the port number specified in the SRV record. If none of the servers can be contacted, the requestor gives up. If there are no SRV records, DNS address records are used, as described below. 3.3 If there are no SRV records, the requestor queries the DNS server for address records for the destination address '_diameter._sctp'.domain or '_diameter._tcp'.domain. Address records include A RR's, AAAA RR's, A6 RR's or other similar records, chosen according to the requestor's network protocol capabilities. If the DNS server returns no address records, the requestor gives up. If there arecreated and processed. 5.1address records, the same rules as in step 3.2 apply. Requestors MUST NOT cache query results except according to the rules in [47]. Diameterrequest routing overview A request is sent towards its final destination using a combination ofallows AAA peers to protect theDestination-Realmintegrity andDestination-Host AVPs, in oneprivacy ofthese three combinations: - a request that is not proxiable (suchcommunication as well asCER) MUST NOT contain either Destination-Realm or Destination-Host AVPs. - a request that needstobe sentperform end-point authentication. Still, it is prudent to employ DNS Security as ahome server serving a specific realm, but notprecaution when using DNS SRV RRs toa specific server (such aslook up thefirst request of a serieslocation ofround-trips), MUST contain a Destination-Realm AVP, but MUST NOT containaDestination-Host AVP. - a request that needsDiameter agent [34, 35, 36]. A dynamically discovered peer causes an entry in the Peer Table (see section 2.6) to besent to a specific home server among those servingcreated. Note that entries created via DNS MUST expire (or be refreshed) within the DNS TTL. If agivenpeer is discovered outside of the local realm,MUST contain botha routing table entry (see Section 2.7) for theDestination- Realm and Destination-Host AVPs. The Destination-Host AVPpeer's realm isusedcreated. The routing table entry's expiration MUST match the peer's expiration value. 5.3 Capabilities Exchange Calhoun et al. expires January 2002 [Page 47] Internet-Draft July 2001 When two Diameter peers establish a transport connection, they MUST exchange the Capabilities Exchange messages, asdescribed above whenspecified in thedestinationpeer state machine (see section 5.6). This message allows the discovery of a peer's identity and its capabilities (protocol version number, supported Diameter applications, etc.) The receiver only issues commands to its peers that have advertised support for therequest is fixed, which includes: Calhoun et al. expires December 2001 [Page 38] Internet-Draft June 2001 - Authentication requestsDiameter application thatspan multiple round trips -defines the command. A Diametermessagenode MUST cache the supported applications in order to ensure thatusesunrecognized commands and/or AVPs are not unnecessarily sent to asecurity mechanism that makes usepeer. A receiver of apre-established session key shared between the source and the final destination ofCapabilities-Exchange-Req (CER) message which does not have any applications in common with themessage. - Server initiated messages thatsender MUSTbe received byreturn aspecific Diameter client (e.g. access device), such asCapabilities-Exchange-Answer (CEA) with theAbort- Session-Request message, which is usedResult-Code AVP set torequest that a particular user's session be terminated.DIAMETER_NO_COMMON_APPLICATION, and SHOULD disconnect the transport layer connection. Note thatan agent can forwardreceiving arequest toCER or CEA from ahost described in the Destination-Host AVP only if the host in question is included in itspeertable (see sections 5.1.4 and 5.1.5). Otherwise, the request is routed based on the Destination-Realm onlyadvertising itself as a Relay (seesections 5.1.6 and 5.1.7). The Destination-Realm AVP MUST be present if the message is routable. A message thatsection 2.5) MUSTNOTberelayed, proxied or redirected MUST NOT includeinterpreted as having common applications with theDestination-Realm in its ABNF.peer. Thevalue of the Destination-Realm AVP MAYCER and CEA messages MUST NOT beextracted from the User-Name AVP,proxied, orother application-specific methods. Whenredirected. Since the CER/CEA messages cannot be proxied, it is still possible that an upstream proxy receives a messageis received,for which it has no available peers to handle themessageapplication that corresponds to the Command-Code. In such instances, the 'E' bit isprocessedset in thefollowing order: 1. If theanswer messageis destined for(see Section 7.2) to inform thelocal host,downstream to take action (e.g. re-routing request to an alternate peer). With theprocedures listed in section 5.1.1 are followed. 2. Ifexception of the Capabilities-Exchange-Request message, a messageis intended forof type Request that includes the Auth-Application-Id or Acct-Application-Id AVPs, or aDiameter peermessage withwhom the local host is ablean application-specific command code, MAY only be forwarded todirectly communicate with,a host that has explicitly advertised support for theprocedures listed in section 5.1.2 are followed. This is known as Message Forwarding. 3. The procedures listed in section 5.1.4 are followed, which is known as Message Routing. 4. If none ofapplication (or has advertised theabove are successful, an answer is returned withRelay Application Identifier). 5.3.1 Capabilities-Exchange-Request The Capabilities-Exchange-Request (CER), indicated by theResult-CodeCommand- Code set toDIAMETER_UNABLE_TO_DELIVER. Note the processing rules contained in this section are intended to be used as general guidelines to Diameter developers. Certain implementations MAY use different methods than the ones described here,257 andstill be in compliance withtheprotocol specification. 5.1.1 OriginatingCommand Flags' 'R' bit set, is sent to inform aRequestpeer that a reboot has occurred. Upon detection of a transport failure, this message MUST NOT be sent to an alternate peer. Whencreating a request, in additionDiameter is run over SCTP [26], which allows for connections toany other procedures described inspan multiple interfaces, hence multiple IP addresses, theapplication definitionCapabilities-Exchange-Request message MUST contain one Host-IP- Address AVP for each potential IP address thatspecific request, the following procedures MUSTMAY befollowed: -locally used Calhoun et al. expires January 2002 [Page 48] Internet-Draft July 2001 when transmitting Diameter messages. Message Format <Capabilities-Exchange-Req> ::= < Diameter Header: 257, REQ > { Origin-Host } { Origin-Realm } 1* { Host-IP-Address } { Vendor-Id } { Product-Name } [ Origin-State-Id ] * [ Supported-Vendor-Id ] * [ Auth-Application-Id ] * [ Acct-Application-Id ] * [ Alternate-Peer ] [ Destination-Host ] [ Firmware-Revision ] * [ AVP ] 5.3.2 Capabilities-Exchange-Answer The Capabilities-Exchange-Request (CEA), indicated by theCommand-Code should beCommand- Code set to 257 and theappropriate value - theCommand Flags' 'R' bitshould be set - the End-to-End Identifier should be setcleared, is sent in response to a CER message. When Diameter is run over SCTP [26], which allows for connections to span multiple interfaces, hence multiple IP addresses, the Capabilities-Exchange-Answer message MUST contain one Host-IP-Address AVP for each potential IP address that MAY be locallyuniqueused when transmitting Diameter messages. Message Format Calhoun et al. expiresDecember 2001January 2002 [Page39]49] Internet-DraftJuneJuly 2001value - the<Capabilities-Exchange-Answer> ::= < Diameter Header: 257 > { Result-Code } { Origin-Host } { Origin-Realm } 1* { Host-IP-Address } { Vendor-Id } { Product-Name } [ Origin-State-Id ] * [ Supported-Vendor-Id ] * [ Auth-Application-Id ] * [ Acct-Application-Id ] * [ Alternate-Peer ] [ Destination-Host ] [ Firmware-Revision ] * [ AVP ] 5.3.3 Vendor-Id AVP The Vendor-Id AVP (AVP Code 266) is of type Unsigned32 andOrigin-Realm AVPs MUST be set tocontains theappropriate values, usedIANA "SMI Network Management Private Enterprise Codes" [2] value assigned toidentifythesourcevendor of themessage -Diameter device. In combination with theDestination-Host and Destination-Realm AVPs MUSTSupported-Vendor-Id AVP (section 5.3.6), this MAY beset to the appropriate values as describedused insection 5.1. 5.1.2 Sending a Request When sending a request, either originated locally, or as the result of a forwarding or routing operation, the following procedures MUST be followed: - the Hop-by-Hop Identifier should be setorder toa locally unique value - the message shouldknow which vendor specific attributes may besaved in the list of pending requests Other actionssent toperform on the message based on the particular roletheagentpeer. It isplaying are described inalso envisioned that thefollowing sections. 5.1.3 Processing Local Requests A request is known to be for local comsumption when onecombination of thefollowing conditions occur: - The Destination-Host AVP contains the local host's identity, - The Destination-Host AVP is not present, the Destination-Realm AVP contains a realm the server is configured to process locally,Vendor-Id, Product-Name (section 5.3.7) and theDiameter application is locally supported, or - The Destination-Realm AVP is not present. When a request is locally processed, the rulesFirmware-Revision (section 5.3.4) AVPs MAY provide very useful debugging information. A Vendor-Id value of zero insection 5.2 should be used to generatethecorresponding answer. 5.1.4 Request Forwarding Request forwardingCER or CEA messages isdone usingreserved and indicates that the DiameterPeer Table. The Diameterpeertable contains all ofis in thepeersexperimental or concept stage and that an IANA Private Enterprise Number has yet to be obtained by thelocal nodeimplementor. 5.3.4 Firmware-Revision AVP The Firmware-Revision AVP (AVP Code 267) isableof type Unsigned32 and is used todirectly communicate with. Wheninform arequest is received, andDiameter peer of thehost encoded infirmware revision of theDestination- Host AVP is oneissuing device. For devices thatis present in the peer table,do not have a firmware revision (general purpose computers running Diameter software modules, for instance), themessage SHOULD be forwarded torevision of thepeer. 5.1.5 Peer Table TheDiameterPeer Table is used in message forwarding, and referencedsoftware module may be reported instead. 5.3.5 Host-IP-Address AVP Calhoun et al. expiresDecember 2001January 2002 [Page40]50] Internet-DraftJuneJuly 2001by the Domain Routing Table. A Peer Table entry contains the following fields: - Host identity, followingThe Host-IP-Address AVP (AVP Code 257) is of type IPAddress and is used to inform a Diameter peer of theconventions described forsender's IP address. All source addresses that a Diameter node expects to use with SCTP [26] MUST be advertised in theDiameterIdentity derivedCER and CEA messages by including a Host- IP-Address AVPdata format in section 4.4.for each address. ThisMAYAVP MUST ONLY beresolved locally, or dynamically updated viaused in the CER and CEA messages. 5.3.6 Supported-Vendor-Id AVP The Supported-Vendor-Id AVP (AVP Code 265) is of type Unsigned32 and contains the IANA "SMI Network Management Private Enterprise Codes" [2] value assigned to a vendor other than theOrigin- Host AVP ofdevice vendor. This is used in the CERorand CEAmessages. - TLS Enabled. Specifies whether TLS ismessages in order tobe used when communicating withinform thepeer. - Additional security information, when needed (e.g. keys, certificates) 5.1.6 Request Routing Diameter request message routing is done via realms. A Diameter messagepeer thatis proxyable MUST includethetarget realm insender supports a subset of theDestination-Realmvendor-specific commands and/or AVPs defined by the vendor identified in this AVP. 5.3.7 Product-Name AVP Therealm MAY be retrieved from the User-Name AVP, whichProduct-Name AVP (AVP Code 269) isin the formofa Network Access Identifier (NAI).type UTF8String, and contains the vendor assigned name for the product. Therealm portion ofProduct-Name AVP SHOULD remain constant across firmware revisions for theNAIsame product. 5.3.8 Alternate-Peer AVP The Alternate-Peer AVP (AVP Code 275) isinserted in the Destination-Realm AVP. Diameter agents MAY have a listoflocally supported realms,type DiameterIdentity, andMAY have a list of externally supported realms. When a request is received that includes a realm that is not locally supported, the message is routed tocontains the URI of an alternate peerconfiguredthat MAY be used inthe Domain Routing Table table (see section 5.1.7). 5.1.7 Realm-Based Routing Table All Realm-Basedserver-initiated requests, when routinglookups are performed against what is commonly known asusing theDomain Routing Table (see section 16.0). A Domain Routing Table Entry containsSource-Route AVP. 5.4 Disconnecting Peer connections When a Diameter node disconnects one its transport connections, its peer cannot know thefollowing fields: - Realm Name. This isreason for thefielddisconnect, and will most likely assume thatis typically used asaprimary keyconnectivity problem occurred, or that the peer has rebooted. In these cases, the peer may periodically attempt to reconnect, as stated in section 2.1. In therouting table lookups. Noteevent thatsome implementations perform their lookups based on longest-match- from-the-right ontherealm rather than requiring an exact match. - Application Identifier. It is possible fordisconnect was arouting entry to haveresult of either adifferent destination based on the Acct-Application-Id (for accounting messages) or Auth-Application-Id (for non- accounting messages)shortage of internal resources, or simply that themessage. This field is typically used as a secondary key fieldnode inrouting table lookups. - Local Action. The Local Action field is used to identify how a message should be treated. The following actions are supported: 1. LOCAL -question has no intentions of forwarding any Diameter messagesthat resolvetoa routing entry withtheLocal Action set to Local can be satisfied locally, and dopeer in the foreseeable future, a periodic connection request would notneed toberouted to another server. 2. RELAY - Allwelcomed. The Disconnection-Reason AVP contains the reason the Diametermessages that fall within thisnode issued the Disconnect- Peer-Request message. The Disconnect-Peer-Request message is used by a Diameter node to Calhoun et al. expiresDecember 2001January 2002 [Page41]51] Internet-DraftJuneJuly 2001category MUST be routedinform its peer of its intent to disconnect the transport layer, and that the peer shouldn't reconnect unless it has anext hop server, without modifying any non-routing AVPs. See section 5.1.9 for relaying guidelines 3. PROXY - All Diametervalid reason to do so (e.g. message to be forwarded). Upon receipt of the message, the Disconnect-Peer-Answer is returned, which SHOULD contain an error if messagesthat fall within this category MUSThave recently berouted toforwarded, and are likely in flight, which would otherwise cause anext hop server.race condition. Thelocal server MAY apply its local policies toreceiver of themessageDisconnect-Peer-Answer initiates the transport disconnect. 5.4.1 Disconnect-Peer-Request The Disconnect-Peer-Request (DPR), indicated byincluding new AVPsthe Command-Code set to 282 and themessage priorCommand Flags' 'R' bit set, is sent torouting. See section 5.1.9 for relaying guidelines. 4. REDIRECT - Diameter messages that fall within this category MUST havea peer to inform its intentions to shutdown theidentitytransport connection. Upon detection ofthe homea transport failure, this message MUST NOT be sent to an alternate peer. Message Format <Disconnect-Peer-Request> ::= < Diameterserver(s) appended, and returnedHeader: 282, REQ > { Origin-Host } { Origin-Realm } { Destination-Host } { Disconnect-Cause } 5.4.2 Disconnect-Peer-Answer The Disconnect-Peer-Answer (DPA), indicated by the Command-Code set to 282 and thesender ofCommand Flags' 'R' bit cleared, is sent as a response to the Disconnect-Peer-Request message.See section 5.1.8 for redirect guidelines. - Server Identifier - One or more serversUpon receipt of this message, themessagetransport connection isto be routed to. These serversshutdown. Message Format <Disconnect-Peer-Answer> ::= < Diameter Header: 282 > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } 5.4.3 Disconnect-Cause AVP The Disconnect-Cause AVP (AVP Code 273) is of type Enumerated. A Diameter node MUSTalso be presentinclude this AVP in thePeer table. When the Local Action is setDisconnect-Peer-Request message toRELAY or PROXY, this field containsinform theidentitypeer of theserver(s)reason for its intention to Calhoun et al. expires January 2002 [Page 52] Internet-Draft July 2001 shutdown the transport connection. The following values are supported: REBOOTING 0 A scheduled reboot is imminent. BUSY 1 The peer's internal resources are constrained, and it has determined that themessage musttransport connection needs to berouted to. Whenshutdown. DO_NOT_WANT_TO_TALK_TO_YOU 2 The peer has determined that it does not see a need for theLocal Action field is settransport connection toREDIRECT, this field containsexist, since it does not expect any messages to be exchanged in theidentityforeseeable future. 5.5 Transport Failure Detection Given the nature ofone or more serversthemessage should be redirected to. ItDiameter protocol, it isimportant to noterecommended thatDiameter agents MUST support at least one oftransport failures be detected as soon as possible. Detecting such failures will minimize theLOCAL, RELAY, PROXY or REDIRECT modes of operation. Agents do not need to support all modesoccurrence ofoperation in ordermessages sent toconform with the protocol specification, but MUST follow the protocol compliance guidelinesunavailable agents, resulting insection 2.0. Relay agents MUST NOT reorder AVPs,unnecessary delays, andproxies SHOULD NOT reorder AVPs.will provide better failover performance. Therouting table MAY include a default entry which MUST beDevice-Watchdog-Request and Device- Watchdog-Answer messages, defined in this section, are usedfor any requests not matching any of the other entries.to pro- actively detect transport failures. 5.5.1 Device-Watchdog-Request Therouting table MAY consist of only such an entry. When a request is routed, the target server MUST have advertisedDevice-Watchdog-Request (DWR), indicated by theApplication Identifier (see section 6.1) forCommand-Code set to 280 and thegiven message, or have advertised itself as a relay or proxy agent. 5.1.8 Redirecting requests When a redirector agent receives a request whose routing entryCommand Flags' 'R' bit set, issetsent toREDIRECT, ita peer when no traffic has been exchanged between two peers (see Section 5.5.3). Upon detection of a transport failure, this message MUSTanswer the request with Message-Reject-Answer, while maintaining the Hop-by-Hop Identifier inNOT be sent to an alternate peer. Message Format <Device-Watchdog-Request> ::= < Diameter Header: 280, REQ > { Origin-Host } { Origin-Realm } { Destination-Host } 5.5.2 Device-Watchdog-Answer The Device-Watchdog-Answer (DWA), indicated by theheader,Command-Code set to 280 andincludetheResult-Code AVPCommand Flags' 'R' bit cleared, is sent as a response toDIAMETER_REDIRECT_INDICATION. Each of the servers associated withtherouting entry are added in separate Redirect-Host AVP.Device-Watchdog-Request message. Calhoun et al. expiresDecember 2001January 2002 [Page42]53] Internet-DraftJuneJuly 2001+------------------+ |Message Format <Device-Watchdog-Answer> ::= < Diameter| | Redirector Agent | +------------------+ ^ | 1. Request | | 2. MRA + joe@xyz.com | |Header: 280 > { Result-Code= DIAMETER_REDIRECT_INDICATION + | | Redirect-Host AVP(s) | v +---------+ 3. Request +----------+ | abc.net |------------->| xyz.net | | Relay | | Diameter | | Agent |<-------------| Server | +---------+ 4. Answer +----------+ Figure 7: Diameter Redirect Server Redirector agents MAY also include the certificate of the servers} { Origin-Host } { Origin-Realm } { Destination-Host } 5.5.3 Transport Failure Algorithm The watchdog behavior is controlled by an algorithm defined inthe Redirect-Host AVP(s). These certificatesthis section. Note that implementations areencapsulated innot restricted to the algorithm defined herein, but SHOULD implement an algorithm that produces similar results. In this section, we will refer to aCMS-Cert AVP [11]. The receiver ofmemory control structure that contains all information regarding a specific peer as a Peer Control Block, or PCB. For theMRA message withpurposes of illustrating theResult-Code AVP set to DIAMETER_REDIRECT_INDICATION usesalgorithm, each PCB contains thehop-by-hopfollowing fields: Status - This fieldin the Diameter header to identifyrepresents therequestlevel of confidence in thepending message queue (see Section 7.3) that is to be redirected. If no transport connection exists withalgorithm. The following values are defined: OKAY indicates thenew agent, oneconnection iscreated, andpresumed working WAIT_DWA indicates that a DWR has been sent but a DWA has not yet been received SUSPECT indicates therequestconnection issent directly to it. 5.1.9 Relaying and Proxying Requests A relaypossibly congested orproxy agent MUST check for forwarding loops before forwardingdown Pending - This boolean field is set to TRUE when there are no outstanding unanswered requests.A loopT isdetected iftheserver finds its own addresswatchdog timer, measured ina Route-Record AVP.seconds. Every second, T is decremented. Whensuch an event occurs, the agent MUST answer withit reaches 0, theResult-Code AVP set to DIAMETER_LOOP_DETECTED. A relay or proxy agent MUST append a Route-Record AVP that includes its identity to all requests forwarded.OnTimerElapsed event (see below) is invoked. Thelast Route-Record AVP in all requests received MUST be validated, by ensuring thatalgorithm uses thehost encodedfollowing time constants, which have default values but may be configured differently in an implementation: Ti, theAVP is the same as the peer the message was received from. The Hop-by-Hop identifier inidle time, represents therequestnumber of seconds that must elapse when there issaved, and replaced withno activity, before alocally unique value.DWR is sent. Thesourcedefault value ofthe requestTi isalso saved, which includes30 seconds. In order to avoid synchronization behaviors that can occur with fixed timers among distributed systems, each time Ti is calculated with a jitter by using theIP address, portTi configured (or default) value andprotocol. Relayrandomly adding or subtracting a random value drawn between 0.5 andProxy agents MAY include the Proxy-Info AVP in requests if it requires access any local state information when the corresponding response is received. Alternatively, it MAY simply use local storage2 seconds. Calhoun et al. expiresDecember 2001January 2002 [Page43]54] Internet-DraftJuneJuly 2001 Alternative calculations tostore state information. The message is then forwarded to the next hop, as identified increate jitter MAY be used. These MUST be pseudo-random and not cyclic. Tr, theDomain Routing Table. Figure 6 provides an example of message routing usingrequest pending time, represents theprocedures listed in these sections. (Origin-Host=nas.mno.net) (Origin-Host=nas.mno.net) (Origin-Realm=mno.net) (Origin-Realm=mno.net) (Destination-Realm=abc.com) (Destination-Realm=abc.com) (Route-Record=drl.mno.net) +------+ ------> +------+ ------> +------+ | | (Request) | | (Request) | | | NAS +-------------------+ DRL +-------------------+ HMS | | | | | | | +------+ <------ +------+ <------ +------+ mno.net (Answer) mno.net (Answer) abc.com (Origin-Host=hms.abc.com) (Origin-Host=hms.abc.com) (Origin-Realm=abc.com) (Origin-Realm=abc.com) Figure 6: Routingnumber ofDiameterseconds that must elapse when there are requests pending but no messages5.2 Diameter Answer Processing When an requesthave been received, before a DWR islocally processed, the following procedures MUST be applied to create the associated answer, in addition to any additional procedures that MAYsent. Tr should bediscussed in the Diameter application defining the command: -less than Ti. Thesame Hop-by-Hop identifier indefault value of Tr is 10 seconds. Tw, therequestwatchdog pending time, represents the number of seconds that must elapse after a DWR isused insent but no DWA has been received, before theanswer. -PCB's Status field is set to SUSPECT. Thelocal host's identitydefault value of Tw isencoded in5 seconds. Td, theOrigin-Host AVP. - The Destination-Hostdisconnect timer, the number of seconds that must elapse when the PCB's Status field is set to SUSPECT andDestination-Realm AVPs MUST NOT be present inno DWA has been received, before theanswer message. - The Result-Code AVPconnection isadded with itsstopped. The default valueindicating success or failure. - Ifof Td is 5 seconds. Pseudo-code for theSession-Idalgorithm ispresent inas follows: /* * OnSendRequest() is called whenever a request is sent on * connection */ OnSendRequest(pcb) { if pcb->Status = OKAY AND T > Tr T = Tr } /* * OnReceiveNonDWA() is called whenever a message other * than DWA is received from therequest, it MUSTpeer. This message MAY * beincluded in the answer. - Any Proxy-Info AVPs in thea requestMUST be added to the answer message, in the same order they were present in the request. 5.2.1 Processing received Answers A Diameter clientorproxy MUST match the Hop-by-Hop Identifier inanansweranswer. */ OnReceiveNonDWA(pcb) { if pcb->Status = OKAY if pcb->Pending T = Tr else T = Ti } /* * OnReceiveDWA() is called whenever a DWA is receivedagainst the list of pending requests. The corresponding message should be removed* from thelist of pendingpeer. */ Calhoun et al. expiresDecember 2001January 2002 [Page44]55] Internet-DraftJuneJuly 2001requests. It SHOULD ignore answers received that do not match a known Hop-by-Hop Identifier. 5.2.2 Relaying and Proxying Answers IfOnReceiveDWA(pcb) { if pcb->status = WAIT_DWA OR pcb->Status = SUSPECT if pcb->Pending T = Tr else T = Ti } /* * OnTimerElapsed() is called by some timer services * whenever T reaches zero (0). */ OnTimerElapsed(pcb) { if pcb->status = OKAY SendWatchdog(pcb) pcb->status = WAIT_DWA else if pcb->status = WAIT_DWA pcb->status = SUSPECT T = Td else if pcb->status = SUSPECT StopConnection(pcb) FailoverProcedures(pcb) } 5.5.4 Failover/Failback Procedures In theanswerevent that a transport failure isfordetected with a peer, it is necessary for all pending requestwhich was proxied or relayed, the agent MUST restore the original value of themessages to be forwarded to an alternate agent, if possible. This is commonly referred to as failover. In order for a Diameterheader's Hop- by-Hop Identifier field. If the last Proxy-Info AVP innode to perform failover procedures, it is necessary for the node to maintain a pending message queue for a given peer. When an answer message istargeted toreceived, thelocal Diameter server,corresponding request is removed from theAVP MUSTqueue. The Hop-by-Hop Identifier field MAY beremoved beforeused to match the answeris forwarded. If a relay or proxy agent receives an answerwith the queued request. When aResult-Code AVP indicatingtransport failure is detected, all messages in the queue are sent to an alternate agent, if possible. An example of afailure,case where itMUST NOT modifyis not possible for forward thecontents ofmessage to an alternate server is when theAVP. Any additional local errors detected SHOULD be logged, but not reflected inmessage has a fixed destination, and theResult-Code AVP. Ifunavailable peer is the message's final destination (see Destination-Host AVP). Such an error requires that the agentreceivesreturn an answer message witha Result-Code AVP indicating success,the 'E' bit set andit wishes to modifythe Result-Code AVP set toindicate an error, it MUST issue an STR on behalfDIAMETER_UNABLE_TO_DELIVER. Calhoun et al. expires January 2002 [Page 56] Internet-Draft July 2001 It is important to note that multiple identical request or answer MAY be received as a result ofthe access device.a failover. Theagent MUST then sendEnd-to-End Identifier field in theanswerDiameter header along with the Origin-Host AVP MUST be used to identify duplicate messages. As described in section 2.1, a connection request should be periodically attempted with thehost which it receivedfailed peer in order to re-establish theoriginal request from. 5.3 Hiding Network Topology A Relay or Proxy agent routingtransport connection. Once a connection has been successfully established, messagesoutside of their administrative domain MAY needcan once again be forwarded tohidetheinternal Diameter topology.peer. This isdone by removing all Route-Record AVPs incommonly referred to as failback. 5.6 Peer State Machine This section contains arequest. 5.4 Origin-Host AVP The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, andfinite state machine, that MUST bepresent inobserved by all Diametermessages.implementations. Each Diameter node MUST follow the state machine described below when communicating with each peer. Multiple actions are separated by commas, and may continue on succeeding lines as space requires. Similarly, state and next state may also span multiple lines as space requires. There may be at most one transport connection between any two peers over which Diameter messages may be passed. ThisAVP identifiesstate machine is intended to handle both theendpointsimple case, in whichoriginatedone peer initiates a connection to theDiameter message, i.e.other, and the complex case, in which each peer simultaneously initiates a connection to the other. In the complex case, an election occurs to determine which transport connection will survive. It is important to note that theaccess device, home server, or broker. Relay agentsport on which a connection is initiated MUST NOTmodify this AVP. The value ofbe theOrigin-Host AVPport Diameter listens for incoming connections. I- isguaranteedused tobe unique within a single host. Note thatrepresent theOrigin-Host AVP may resolve to more than one address asinitiator (connecting) connection, while theDiameter peer may support more than one address. Calhoun et al. expires December 2001 [Page 45] Internet-Draft June 2001 This AVP SHOULD be placed as closeR- is used to represent theDiameter header as possible. 5.5 Origin-Realm AVPresponder (listening) connection. TheOrigin-Realm AVP (AVP Code 296) islack oftype UTF8String. This AVP containsa prefix indicates that theRealm ofevent or action is theoriginatorsame regardless ofany Diameter message and MUST be present in all messages This AVP SHOULD be placed as close totheDiameter header as possible. 5.6 Destination-Host AVPconnection on which the event occurred. TheDestination-Host AVP (AVP Code 293) is of type DiameterIdentity. This AVP MUSTstable states that a state machine may bepresentin are Closed, I-Open and R-Open; allunsolicited agent initiated messages, MAY be present in request messages,other states are intermediate. Note that I-Open andMUST NOT be present in Answer messages. The absence of the Destination-Host AVP will cause a message to be sent to any Diameter server supporting the application within the realm specified in Destination-Realm AVP. This AVP SHOULD be placed as close to the Diameter header as possible. 5.7 Destination-Realm AVP The Destination-Realm AVP (AVP Code 283)R-Open are equivalent except for whether the initiator or responder transport connection isof type UTF8String, and containsused for communication. A CER message is always sent on therealminitiating connection immediately after themessageconnection request isto be routed to.successfully completed. In the case of an election, one of the two connections will shut down. TheDestination- Realm AVP MUST NOT be present in Answer messages. Diameter Clients insertresponder connection will survive if therealm portionOrigin-Host of theUser-Name AVP.local Diameterservers initiating a request message use the valueentity is higher than that of theOrigin-Realm AVP from a previous message received frompeer; theintended target host (unless it is known a priori). When present,initiator connection will survive if theDestination-Realm AVPpeer's Origin-Host isused to perform message routing decisions. Requesthigher. All subsequent messageswhose ABNF does not listare sent on theDestination-Realm AVP as a mandatory AVPsurviving connection. Note that Calhoun et al. expires January 2002 [Page 57] Internet-Draft July 2001 the results of an election on one peer areinherently non-routable messages. This AVP SHOULD be placed as closeguaranteed to be the inverse of the results on the other. The state machine constrains only the behavior of a Diameterheaderimplementation aspossible. 5.8 Routing AVPsseen by Diameter peers through events on the wire. Any implementation that produces equivalent results is considered compliant. state event action next state ----------------------------------------------------------------- Closed Start I-Snd-Conn-Req Wait-Conn-Ack R-Conn-CER R-Accept, R-Open Process_CER, R-Snd-CEA Wait-Conn-Ack I-Rcv-Conn-Ack I-Snd-CER Wait-I-CEA I-Rcv-Conn-Nack Cleanup Closed R-Conn-CER R-Accept, Wait-Conn-Ack/ Process-CER Elect Timeout Error Closed Wait-I-CEA I-Rcv-CEA Process-CEA I-Open R-Conn-CER R-Accept, Wait-Returns Process_CER, Elect I-Peer-Disc I-Disc Closed I-Rcv-Non-CEA Error Closed Timeout Error Closed Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-CER,Elect Wait-Returns Elect I-Rcv-Conn-Nack R-Snd-CEA R-Open R-Peer-Disc R-Disc Wait-Conn-Ack R-Conn-CER R-Reject Wait-Conn-Ack/ Elect Timeout Error Closed Wait-Returns Win-Election I-Disc,R-Snd-CEA R-Open I-Peer-Disc I-Disc,R-Snd-CEA R-Open I-Rcv-CEA R-Disc I-Open R-Peer-Disc R-Disc Wait-I-CEA R-Conn-CER R-Reject Wait-Returns Timeout Error Closed R-Open Send-Message R-Snd-Message R-Open R-Rcv-Message Process R-Open WatchDog-Timer R-Snd-DWR R-Open R-Rcv-DWR Process-DWR, R-Open Calhoun et al. expiresDecember 2001January 2002 [Page46]58] Internet-DraftJuneJuly 2001The AVPs defined in this section are Diameter AVPs used for routing purposes. These AVPs change as Diameter messages are processed by agents, and therefore MUST NOT be protected using theR-Snd-DWA R-Rcv-DWA Process-DWA R-Open R-Conn-CER R-Reject R-Open Stop R-Disc Closed R-Peer-Disc R-Disc Closed R-Rcv-CER Error Closed R-Rcv-CEA Error Closed I-Open Send-Message I-Snd-Message I-Open I-Rcv-Message Process I-Open WatchDog-Timer I-Snd-DWR I-Open I-Rcv-DWR Process-DWR, I-Open I-Snd-DWA I-Rcv-DWA Process-DWA I-Open R-Conn-CER R-Reject I-Open Stop I-Disc Closed I-Peer-Disc I-Disc Closed I-Rcv-CER Error Closed I-Rcv-CEA Error Closed 5.6.1 Incoming connections When a connection request is received from a DiameterCMS Security application [11]. 5.8.1 Route-Record AVP The Route-Record AVP (AVP Code 282)peer, it isof type DiameterIdentity. The identity added in this AVP MUST be the same as the one sentnot, in theOrigin-Host ofgeneral case, possible to know theCapabilities-Exchange-Request message. 5.8.2 Proxy-Info AVP The Proxy-Info AVP (AVP Code 284) isidentity oftype Grouped. The Grouped Data field has the following ABNF grammar: Proxy-Info ::= < AVP Header: 284 > { Proxy-Host } { Proxy-State } * [ AVP ] 5.8.3 Proxy-Host AVP The Proxy-Host AVP (AVP Code 280)that peer until a CER isof type DiameterIdentity. This AVP containsreceived from it. This is because the identity ofthea Diameter peer is determined by hostthat addedand port; and theProxy-Info AVP. 5.8.4 Proxy-State AVP The Proxy-State AVP (AVP Code 33)source port of an incoming connection is arbitrary. Upon receipt oftype OctetString, and containsCER, the identity of the connecting peer can be uniquely determined from Origin-Host. For this reason, a Diameter peer must employ logic separate from the statelocal information,machine to receive connection requests, accept them, andMUST be treated as opaque data. 5.9 Redirect-Host AVP The Redirect-Host AVP (AVP Code 292)await CER. Once CER arrives on a new connection, the Origin-Host which identifies the peer isof type DiameterIdentity. This AVP MUST be present in Message-Reject-Answer messagesused to locate the state machine associated with thatincludepeer, and theResult-Code AVP setnew connection and CER are passed toDIAMETER_REDIRECT_INDICATION. Upon receiving the above,thereceiving Diameter nodestate machine as an R-Conn-CER event. The logic that handles incoming connections SHOULDforwardclose and discard therequest directlyconnection if any message other than CER arrives, or if an implementation-defined timeout occurs prior tothe host identifiedreceipt of CER. Because handling of incoming connections up to and including receipt of CER requires logic separate from that of any individual state machine associated with a particular peer, it is described separately in thisAVP. The server containedsection rather than in theRedirect-Host SHOULD be used for all messages pertaining to this session.state machine below. Calhoun et al. expiresDecember 2001January 2002 [Page47] Internet-Draft June 2001 5.10 Redirect-Host-Usage AVP The Redirect-Host-Usage AVP (AVP Code 261) is of type Enumerated. This AVP MAY be present59] Internet-Draft July 2001 5.6.2 Events Transitions and actions inMessage-Reject-Answer messages that includetheResult-Code AVP set to DIAMETER_REDIRECT_INDICATION. When present,automaton are caused by events. In thisAVP dictates howsection we will ignore therouting entry resulting from-I and -R prefix, since theMRA is toactual event would beused. The following values are supported: DONT_CACHE 0identical, but would occur on one of two possible connections. Start Thehost specified in the Redirect-Host AVPDiameter application has signaled that a connection shouldnotbecached. This is the default value. ALL_SESSION 1 All messages within the same session, as defined by the same value ofinitiated with theSession-ID AVP MAY be sentpeer. R-Conn-CER A new incoming connection and associated CER has arrived. Rcv-Conn-Ack A positive acknowledgement was received to a locally initiated transport connection. Rcv-Conn-Nack A negative acknowledgement was received to a locally initiated transport connection. Timeout An application-defined timer has expired while waiting for some event. Rcv-CER A CER message from thehost specified inpeer was received. Rcv-CEA A CEA message from theRedirect-Host AVP. ALL_REALM 2 All messages destined forpeer was received. Rcv-Non-CEA A message other than CEA from therealm requested MAY be sent topeer was received. Peer-Disc A disconnection indication from thehost specified inpeer was received. Win-Election An election was held, and theRedirect-Host AVP. REALM_AND_APPLICATION 3 All messages forlocal node was theapplication requestedwinner. Send-Message A message is to be sent. Rcv-Message A message other than CER, CEA, DWR, or DWA was received. WatchDog-Timer The Watchdog timer expired, indicating that a DWR message is tothe realm specified MAYbe sent to thehost specifiedpeer. Rcv-DWR A DWR message was received. Rcv-DWA A DWA message was received. Stop The Diameter application has signaled that a Calhoun et al. expires January 2002 [Page 60] Internet-Draft July 2001 connection should be terminated (e.g., on system shutdown). 5.6.3 Actions Actions in theRedirect- Host AVP. ALL_APPLICATION 4 All messages forautomaton are caused by events and typically indicate theapplication requested MAY be senttransmission of packets and/or an action to be taken on thehost specified inconnection. In this section we will ignore theRedirect-Host AVP. ALL_HOST 5 All messages thatI- and R- prefix, since the actual action would besent toidentical, but would occur on one of two possible connections. Snd-Conn-Req A transport connection is initiated with thehost that generatedpeer. Accept The incoming connection associated with theMRA MAY be sent toR- Conn-CER is accepted as thehost specified inresponder connection. Reject The incoming connection associated with theRedirect-Host AVP. 5.11 Redirect-Max-Cache-Time AVPR- Conn-CER is disconnected. Process-CER TheRedirect-Max-Cache-Time AVP (AVP Code 262)CER associated with the R-Conn-CER isof type Unsigned32. This AVP MUST be presentprocessed. Snd-Conn-Ack an acknowledgement is sent inMessage-Reject-Answer messagesresponse to a connect request, confirming thatincludetheResult-Code AVP settransport layer connection is open. Snd-CER A CER message is sent toDIAMETER_REDIRECT_INDICATION, andtheRedirect-Host-Usage AVP setpeer. Snd-CEA A CEA message is sent toa non-zero value. This AVP contains the maximum number of secondsthepeer and route table entries, created as a result ofpeer. Cleanup If necessary, theRedirect-Host, will be cached. Note that once a host created due to a redirect indicationconnection isno longer reachable,shutdown, and anyassociated peerlocal resources are freed. Error The transport layer connection is disconnected, either politely or abortively, in response to an error condition. Local resources are freed. Process-CEA A received CEA is processed. Disc The transport layer connection is disconnected, androuting table entries MUST be deleted.local resources are freed. Elect An election occurs (see Section 8.4 for more information). Snd-Message A message is sent. Calhoun et al. expiresDecember 2001January 2002 [Page48]61] Internet-DraftJuneJuly 20016.0 Capabilities Exchange When two Diameter peers establish a transport connection, they MUST exchangeSnd-DWR A DWR message is sent. Snd-DWA A DWA message is sent. Process-DWR The DWR message is serviced. Process-DWA The DWA message is serviced. Process A message is serviced. 5.6.4 The Election Process The election is performed on theCapabilities Exchange messages, as specifiedresponder. The responder compares the Origin-Host received in the CER sent by its peerstate machine (see section 8.0). This message allows the discovery of a peer's identity andwith itscapabilities (protocol version number, supportedown Origin-Host. If the local Diameterapplications, etc.)entity's Origin-Host is higher than the peer's, a Win-Election event is issued locally. Thereceiver only issues commandscomparison proceeds by considering the shorter OctetString to be null-padded toits peers that have advertised support fortheDiameter application that defineslength of thecommand. A Diameter node MUST cachelonger, then performing an octet by octet unsigned comparison with thesupported applications in orderfirst octet being most significant. Hanging octets are assumed toensure that unrecognized commands and/or AVPshave value 0x80, but dimpled octets are ignored. 6.0 Diameter message processing This section describes how Diameter requests and answers arenot unnecessarilycreated and processed. 6.1 Diameter request routing overview A request is senttotowards its final destination using apeer. A receivercombination ofa Capabilities-Exchange-Req (CER) message which does not have any applications in common withthesender MUST return a Capabilities-Exchange-Answer (CEA) with the Result-Code AVP set to DIAMETER_NO_COMMON_APPLICATION,Destination-Realm andSHOULD disconnect the transport layer connection. Note that receiving a CER or CEA from a peer advertising itself asDestination-Host AVPs, in one of these three combinations: - aRelay (see section 6.1) MUST be interpretedrequest that is not proxiable (such ashaving common applications with the peer. The CER and CEA messagesCER) MUST NOTbe proxied,contain either Destination-Realm orredirected. Since the CER/CEA messages cannot be proxied, it is still possible that an upstream proxy receivesDestination-Host AVPs. - amessage for which it has no available peers to handle the applicationrequest thatcorresponds to the Command-Code. In such instances, the Message-Reject-Answer message is used (see Section 9.2.1)needs toinform the downstreambe sent totake action (e.g. re-routing requesta home server serving a specific realm, but not toan alternate peer). Witha specific server (such as theexceptionfirst request ofthe Capabilities-Exchange-Request message,amessageseries oftype Request that includes the Auth-Application-Id or Acct-Application-Id AVPs, orround-trips), MUST contain amessage with an application-specific command code, MAY only be forwarded toDestination-Realm AVP, but MUST NOT contain ahost that has explicitly advertised support for the application (or has advertised the Relay Application Identifier). 6.1 Application Identifiers Each Diameter applicationDestination-Host AVP. - a request that needs to be sent to a specific home server among those serving a given realm, MUSThave an IANA assigned Application Identifier (see section 15.3). The base protocol does not require an application Identifier since its support is mandatory. Application Identifiers are communicated via two separate AVPs; Auth-Application-Idcontain both the Destination- Realm andAcct-Application-Id.Destination-Host AVPs. TheAuth-Application-IdDestination-Host AVP is usedto communicate support foras described above when theauthentication andCalhoun et al. expiresDecember 2001January 2002 [Page49]62] Internet-DraftJuneJuly 2001authorization portiondestination ofan application. The Acct-Application-Id AVP, on the other hand, communicates support fortheaccounting portionrequest is fixed, which includes: - Authentication requests that span multiple round trips - A Diameter message that uses a security mechanism that makes use ofan application. This separationa pre-established session key shared between the source and the final destination ofAVPs allowsthe message. - Server initiated messages that MUST be received by aserverspecific Diameter client (e.g. access device), such as the Abort- Session-Request message, which is used tocommunicaterequest thatit is willinga particular user's session be terminated. Note that an agent can forward a request toaccept only accounting messages foragiven application.host described in the Destination-Host AVP only if the host in question is included in its peer table (see section 2.6). Otherwise, the request is routed based on the Destination-Realm only (see sections 6.1.6). Thefollowing Application Identifier values are defined: NASREQ 1 [7] End-to-End Security 2 [11] Mobile-IP 4 [10] Relay 0xffffffff Relay and redirect agentsDestination-Realm AVP MUST be present if the message is routable. A message that MUST NOT be relayed, proxied or redirected MUSTadvertiseNOT include theRelay application identifier, while all other Diameter nodes MUST advertise locally supported applications.Destination-Realm in its ABNF. Thereceivervalue of the Destination-Realm AVP MAY be extracted from the User-Name AVP, or other application-specific methods. When aCapabilities Exchangemessageadvertising Relay service MUST assume thatis received, thesender supports all current and future applications. Diameter relay and proxy agents are responsible for finding an upstream server that supportsmessage is processed in theapplication of a particular message.following order: 1. Ifnone can be found, a MRAthe message isreturned withdestined for theResult-Code AVP set to DIAMETER_UNABLE_TO_DELIVER. 6.2 Capabilities-Exchange-Request The Capabilities-Exchange-Request (CER), indicated bylocal host, theCommand- Code set to 257 andprocedures listed in section 6.1.1 are followed. 2. If theCommand Flags' 'R' bit set,message issent to inform a peer thatintended for areboot has occurred. WhenDiameter peer with whom the local host isrun over SCTP [26], which allows for connectionsable tospan multiple interfaces, hence multiple IP addresses,directly communicate, theCapabilities-Exchange-Request message MUST contain one Host-IP- Address AVP for each potential IP address that MAY be locally used when transmitting Diameter messages. Message Format Calhoun et al. expires December 2001 [Page 50] Internet-Draft June 2001 <Capabilities-Exchange-Req> ::= < Diameter Header: 257, REQ > { Origin-Host } { Origin-Realm } 1* { Host-IP-Address } { Vendor-Id } { Product-Name } [ Origin-State-Id ] * [ Supported-Vendor-Id ] * [ Auth-Application-Id ] * [ Acct-Application-Id ] [ Destination-Host ] [ Firmware-Revision ] * [ AVP ] 6.3 Capabilities-Exchange-Answerprocedures listed in section 6.1.2 are followed. This is known as Message Forwarding. 3. TheCapabilities-Exchange-Request (CEA), indicated byprocedures listed in section 6.1.5 are followed, which is known as Message Routing. 4. If none of theCommand- Codeabove are successful, an answer is returned with the Result-Code set to257 andDIAMETER_UNABLE_TO_DELIVER. Note theCommand Flags' 'R' bit cleared, is sentprocessing rules contained inresponsethis section are intended to be used as general guidelines to Diameter developers. Certain implementations MAY use different methods than the ones described here, and still be in compliance with the protocol specification. 6.1.1 Originating aCER message.Request WhenDiameter is run over SCTP [26], which allows for connectionscreating a request, in addition tospan multiple interfaces, hence multiple IP addresses,any other procedures described in theCapabilities-Exchange-Answer message MUST contain one Host-IP-Address AVPapplication definition foreach potential IP addressthatMAYspecific request, the following procedures MUST be followed: - the Command-Code should be set to the appropriate value - the 'R' bit should be set - the End-to-End Identifier should be set to a locallyused when transmitting Diameter messages. Message Format <Capabilities-Exchange-Answer> ::= < Diameter Header: 257 > { Result-Code } { Origin-Host } { Origin-Realm } 1* { Host-IP-Address } { Vendor-Id } { Product-Name } [ Origin-State-Id ] * [ Supported-Vendor-Id ] * [ Auth-Application-Id ] * [ Acct-Application-Id ] [ Destination-Host ] [ Firmware-Revision ] * [ AVP ] 6.4 Vendor-Id AVP The Vendor-Id AVP (AVP Code 266) is of type Unsigned32 and containsunique Calhoun et al. expiresDecember 2001January 2002 [Page51]63] Internet-DraftJuneJuly 2001the IANA "SMI Network Management Private Enterprise Codes" [2]valueassigned- the Origin-Host and Origin-Realm AVPs MUST be set to thevendorappropriate values, used to identify the source of theDiameter device. In combination withmessage - theSupported-Vendor-Id AVP (section 6.8), this MAY be used in order to know which vendor specific attributes mayDestination-Host and Destination-Realm AVPs MUST besentset to thepeer. It is also envisioned thatappropriate values as described in section 6.1. 6.1.2 Sending a Request When sending a request, either originated locally, or as thecombinationresult of a forwarding or routing operation, theVendor-Id, Product-Name (section 6.9) andfollowing procedures MUST be followed: - theFirmware-Revision (section 6.5) AVPs MAY provide very useful debugging information. A Vendor-IdHop-by-Hop Identifier should be set to a locally unique valueof zero- The message should be saved in theCER or CEA messages is reserved and indicates thatlist of pending requests. Other actions to perform on theDiameter peermessage based on the particular role the agent is playing are described in theexperimentalfollowing sections. 6.1.3 Receiving Requests A relay orconcept stage and thatproxy agent MUST check for forwarding loops when receiving requests. A loop is detected if the server finds its own identity in a Route-Record AVP. When such anIANA Private Enterprise Number has yet to be obtained byevent occurs, theimplementor. 6.5 Firmware-Revision AVP The Firmware-Revisionagent MUST answer with the Result-Code AVP(AVP Code 267) is of type Unsigned32 andset to DIAMETER_LOOP_DETECTED. 6.1.4 Processing Local Requests A request isusedknown toinform a Diameter peer of the firmware revision of the issuing device. For devices that do not have a firmware revision (general purpose computers running Diameter software modules,be forinstance), the revisionlocal consumption when one of theDiameter software module may be reported instead. 6.6 Auth-Application-Idfollowing conditions occur: - The Destination-Host AVP contains the local host's identity, - TheAuth-Application-IdDestination-Host AVP(AVP Code 258) is of type Unsigned32 andisused in order to advertise support ofnot present, theAuthentication and Authorization portion of an application (see Section 6.1). The Auth- Application-Id MUST also be present in all Authentication and/or Authorization messages that are defined in a separate Diameter specification and have an Application ID assigned. ThisDestination-Realm AVPSHOULD be placed as closecontains a realm the server is configured to process locally, and the Diameterheader as possible. 6.7 Host-IP-Address AVPapplication is locally supported, or - TheHost-IP-AddressDestination-Realm AVP(AVP Code 257)isof type IPAddress andnot present. When a request is locally processed, the rules in section 6.2 should be used toinform agenerate the corresponding answer. 6.1.5 Request Forwarding Request forwarding is done using the Diameter Peer Table. The Diameter peer table contains all of thesender's IP address. All source addressespeers thata Diameterthe local nodeexpectsis able touse with SCTP [26] MUST be advertised in the CER and CEA messages by including a Host- IP-Address AVP for each address. This AVP MUST ONLY be used in the CER and CEA messages.directly communicate with. Calhoun et al. expiresDecember 2001January 2002 [Page52]64] Internet-DraftJuneJuly 20016.8 Supported-Vendor-Id AVP The Supported-Vendor-Id AVP (AVP Code 265)When a request isof type Unsigned32received, andcontains the IANA "SMI Network Management Private Enterprise Codes" [2] value assigned to a vendor other thanthedevice vendor. This is usedhost encoded in theCER and CEA messagesDestination- Host AVP is one that is present inorder to informthe peerthattable, thesender supports a subset ofmessage SHOULD be forwarded to thevendor-specific commands and/or AVPs defined bypeer. 6.1.6 Request Routing Diameter request message routing is done via realms. A Diameter message that is proxyable MUST include thevendor identifiedtarget realm inthisthe Destination-Realm AVP.6.9 Product-Name AVPTheProduct-Name AVP (AVP Code 269) is of type UTF8String, and containsrealm MAY be retrieved from thevendor assigned name forUser-Name AVP, which is in theproduct.form of a Network Access Identifier (NAI). TheProduct-Name AVP SHOULD remain constant across firmware revisions forrealm portion of thesame product. 6.10 Acct-Application-Id AVP The Acct-application-Id AVP (AVP Code 259)NAI is inserted in the Destination-Realm AVP. Diameter agents MAY have a list oftype Unsigned32locally supported realms, and MAY have a list of externally supported realms. When a request isused in orderreceived that includes a realm that is not locally supported, the message is routed toadvertise support oftheAccounting portion of an application (see Section 6.1). The Acct-Application-Id MUST also be present in all Accounting messages that are definedpeer configured in the Domain Routing Table table (see section 2.7). 6.1.7 Redirecting requests When aseparate Diameter specification and have an Application ID assigned. This AVP SHOULD be placed as closeredirector agent receives a request whose routing entry is set to REDIRECT, it MUST reply with an answer message with theDiameter header as possible. 6.11 Vendor-Specific-Application-Id AVP The Vendor-Specific-Application-Id AVP (AVP Code 260) is of type Grouped'E' bit set, while maintaining the Hop-by-Hop Identifier in the header, andis usedinclude the Result-Code AVP toadvertise supportDIAMETER_REDIRECT_INDICATION. Each ofa vendor-specific Diameter Application. EithertheAuth-Application-Id orservers associated with theAcct- Application-Id AVP MAY be present. Both AVPsrouting entry are added in separate Redirect-Host AVP. +------------------+ | Diameter | | Redirector Agent | +------------------+ ^ | 2. command + 'E' bit 1. Request | | Result-Code = joe@xyz.com | | DIAMETER_REDIRECT_INDICATION + | | Redirect-Host AVP(s) | v +---------+ 3. Request +----------+ | abc.net |------------->| xyz.net | | Relay | | Diameter | | Agent |<-------------| Server | +---------+ 4. Answer +----------+ Figure 4: Diameter Redirect Server Redirector agents MAYbe present if they both contain the same value. This AVP MUSTalsobe present in all vendor-specific commands defined ininclude thevendor-specific application. This AVP SHOULD be placed as close tocertificate of theDiameter header as possible.servers in the Redirect-Host AVP(s). These certificates are encapsulated in a CMS-Cert AVPFormat[11]. Calhoun et al. expiresDecember 2001January 2002 [Page53]65] Internet-DraftJuneJuly 2001<Vendor-Specific-Application-Id> ::= < AVP Header: 260 > 1* [ Vendor-Id ] 0*1{ Auth-Application-Id } 0*1{ Acct-Application-Id } 7.0 Transport Failure Detection Given the natureThe receiver of theDiameter protocol, it is recommended that transport failures be detected as soon as possible. Detecting such failures will minimizeanswer message with theoccurrence of messages sent to unavailable servers, resulting in unnecessary delays, and will provide better failover performance. The Device-Watchdog-Request'E' bit set, andDevice- Watchdog-Answer messages, defined in this section, are usedthe Result-Code AVP set topro- actively detect transport failures. The watchdog behavior is controlled byDIAMETER_REDIRECT_INDICATION uses theTw timer, which ranges between 30 and 60 seconds. In orderhop-by- hop field in the Diameter header toavoid synchronization behaviorsidentify the request in the pending message queue (see Section 5.3) thatcan occuris to be redirected. If no transport connection exists withfixed timers among distributed systems, each timethewatchdog intervalnew agent, one iscalculated with a jitter by usingcreated, and theTw value (which defaultsrequest is sent directly to30 seconds)it. 6.1.8 Relaying andrandomly addingProxying Requests A relay orsubtractingproxy agent MUST append arandom value drawn between 0.5 and 2 seconds. Alternative calculationsRoute-Record AVP tocreate jitter MAY be used. These MUST be pseudo-randomall requests forwarded. The AVP contains the identity of the peer the request was received from. The Hop-by-Hop identifier in the request is saved, andnot cyclic. Whenreplaced with aresponse is received, Twlocally unique value. The source of the request isreset. Receiving a watchdog from a peer constitutes activity,also saved, which includes the IP address, port andTw should be reset. On sending a message,protocol. Relay and Proxy agents MAY include the Proxy-Info AVP in requests if it requires access any local state information when thequeuecorresponding response isempty, then Twreceived. Alternatively, it MAY simply use local storage to store state information. The message isreset. Ifthen forwarded to thewatchdog timer expiresnext hop, as identified in the Domain Routing Table. Figure 5 provides an example of message routing using the procedures listed in these sections. (Origin-Host=nas.mno.net) (Origin-Host=nas.mno.net) (Origin-Realm=mno.net) (Origin-Realm=mno.net) (Destination-Realm=abc.com) (Destination-Realm=abc.com) (Route-Record=drl.mno.net) +------+ ------> +------+ ------> +------+ | | (Request) | | (Request) | | | NAS +-------------------+ DRL +-------------------+ HMS | | | | | | | +------+ <------ +------+ <------ +------+ mno.net (Answer) mno.net (Answer) abc.com (Origin-Host=hms.abc.com) (Origin-Host=hms.abc.com) (Origin-Realm=abc.com) (Origin-Realm=abc.com) Figure 5: Routing of Diameter messages 6.1.9 Relaying and Proxying Server-Initiated Requests Server-initiated messages MUST include thequeue is empty, then a watchdog packet is sent. 7.1 Device-Watchdog-Request The Device-Watchdog-Request (DWR), indicated by the Command-Code setSource-Route AVPs, whose contents are identical to280 andtheCommand Flags' 'R' bit set, is sent to a peer when no traffic has been exchanged between two peers as definedRecord-Route AVPs received inSection 7.0, and norequestsare pending with the peer. Message Format <Device-Watchdog-Request> ::= < Diameter Header: 280, REQ > { Origin-Host } { Origin-Realm } { Destination-Host } 7.2 Device-Watchdog-AnswerCalhoun et al. expiresDecember 2001January 2002 [Page54]66] Internet-DraftJuneJuly 2001The Device-Watchdog-Answer (DWA), indicated by the Command-Code set to 280 and the Command Flags' 'R' bit cleared, is sent as a response to the Device-Watchdog-Request message. Message Format <Device-Watchdog-Answer> ::= < Diameter Header: 280 > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } 7.3 Failover/Failback Procedures Infrom theevent that a transport failure is detected with a peer, it is necessary for all pending request messages to be forwarded to an alternate agent, if possible. This is commonly referred to as failover. In order for a Diameter node to perform failover procedures, it is necessaryaccess device for thenode to maintain a pending message queue for agivenpeer. When an answer message is received,session, but in the reverse order. Agents receiving requests with one or more Source-Route AVP MUST use thecorresponding request is removed fromlast Source-Route AVP in thequeue. The Hop-by-Hop Identifier field MAY be usedrequest tomatchdetermine theanswer withrequest's next hop. In thequeued request. When a transport failure is detected, all messagesevent that the next hop encoded in thequeue are sent to an alternate agent, if possible. An example of a case where itSource-Route is notpossible for forward the message toreachable, an alternateserver is when the message has a fixed destination, andpeer MAY be used if theunavailablepeerisin question had advertised such peers via themessage's final destination (see Destination-Host AVP). Such an error requires thatAlternate-Peer AVP in theagent return an MRA withCER or CEA message. 6.2 Diameter Answer Processing When a request is locally processed, theResult-Code AVP setfollowing procedures MUST be applied toDIAMETER_UNABLE_TO_DELIVER. It is importantcreate the associated answer, in addition tonoteany additional procedures thatmultiple identical request or answerMAY bereceived as a result of a failover. The End-to-End Identifier fielddiscussed in the Diameterheader along withapplication defining theOrigin-Host AVP MUST be used to identify duplicate messages. As describedcommand: - The same Hop-by-Hop identifier insection 2.1, a connection request should be periodically attempted withthefailed peerrequest is used inorder to re-establish the transport connection. Once a connection has been successfully established, messages can once again be forwarded tothepeer. Thisanswer. - The local host's identity iscommonly referred to as failback. 8.0 Peer State Machine Calhoun et al. expires December 2001 [Page 55] Internet-Draft June 2001 This section contains a finite state machine, thatencoded in the Origin-Host AVP. - The Destination-Host and Destination-Realm AVPs MUST NOT beobserved by all Diameter implementations. Each Diameter node MUST followpresent in thestate machine described below when communicatinganswer message. - The Result-Code AVP is added witheach peer. Multiple actions are separated by commas, and may continue on succeeding lines as space requires. Similarly, state and next state may also span multiple lines as space requires. There mayits value indicating success or failure. - If the Session-Id is present in the request, it MUST beat most one transport connection between any two peers over which Diameter messages mayincluded in the answer. - Any Proxy-Info AVPs in the request MUST bepassed. This state machine is intendedadded tohandle boththesimple case,answer message, inwhich one peer initiates a connectionthe same order they were present in the request. - The 'P' bit is set to theother, andsame value as thecomplex case,one inwhich each peer simultaneously initiates a connection totheother. Inrequest. 6.2.1 Processing received Answers A Diameter client or proxy MUST match thecomplex case,Hop-by-Hop Identifier in anelection occurs to determine which transport connection will survive.answer received against the list of pending requests. The corresponding message should be removed from the list of pending requests. Itis important to noteSHOULD ignore answers received thatthe port on whichdo not match aconnectionknown Hop-by-Hop Identifier. 6.2.2 Relaying and Proxying Answers If the answer isinitiatedfor a request which was proxied or relayed, the agent MUSTNOT berestore the original value of the Diameter header's Hop- by-Hop Identifier field. If theport Diameter listens for incoming connections. I-last Proxy-Info AVP in the message isusedtargeted torepresenttheinitiator (connecting) connection, whilelocal Calhoun et al. expires January 2002 [Page 67] Internet-Draft July 2001 Diameter server, theR- is used to representAVP MUST be removed before theresponder (listening) connection. The lack ofanswer is forwarded. If aprefix indicates that the eventrelay oraction isproxy agent receives an answer with a Result-Code AVP indicating a failure, it MUST NOT modify thesame regardlesscontents of theconnection on which the event occurred. The stable states that a state machine mayAVP. Any additional local errors detected SHOULD be logged, but not reflected inare Closed, I-Open and R-Open; all other states are intermediate. Note that I-Open and R-Open are equivalent except for whethertheinitiator or responder transport connection is used for communication. A CER message is always sent on the initiating connection immediately afterResult-Code AVP. If theconnection request is successfully completed. Inagent receives an answer message with a Result-Code AVP indicating success, and it wishes to modify thecase ofAVP to indicate anelection, oneerror, it MUST issue an STR on behalf of thetwo connections will shut down.access device. Theresponder connection will survive if the Origin-Host ofagent MUST then send thelocal Diameter entity is higher than that ofanswer to thepeer;host which it received theinitiator connection will survive iforiginal request from. 6.3 Hiding Network Topology A Relay or Proxy agent routing messages outside of their administrative domain MAY need to hide thepeer'sinternal Diameter topology. This is done by removing all Route-Record AVPs in a request. 6.4 Origin-Host AVP The Origin-Host AVP (AVP Code 264) ishigher. All subsequent messages are sent on the surviving connection. Note that the resultsofan election on one peer are guaranteed totype DiameterIdentity, and MUST be present in all Diameter messages. This AVP identifies theinverse ofendpoint which originated theresults onDiameter message, i.e. theother.access device, home server, or broker. Relay agents MUST NOT modify this AVP. Thestate machine constrains only the behaviorvalue ofa Diameter implementation as seen by Diameter peers through events onthewire. Any implementation that produces equivalent resultsOrigin-Host AVP isconsidered compliant. state event action next state ----------------------------------------------------------------- Closed Start I-Snd-Conn-Req Wait-Conn-Ack R-Conn-CER R-Accept, R-Open Process_CER, Calhoun et al. expires December 2001 [Page 56] Internet-Draft June 2001 R-Snd-CEA Wait-Conn-Ack I-Rcv-Conn-Ack I-Snd-CER Wait-I-CEA I-Rcv-Conn-Nack Cleanup Closed R-Conn-CER R-Accept, Wait-Conn-Ack/ Process-CER Elect Timeout Error Closed Wait-I-CEA I-Rcv-CEA Process-CEA I-Open R-Conn-CER R-Accept, Wait-Returns Process_CER, Elect I-Peer-Disc I-Disc Closed I-Rcv-Non-CEA Error Closed Timeout Error Closed Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-CER,Elect Wait-Returns Elect I-Rcv-Conn-Nack R-Snd-CEA R-Open R-Peer-Disc R-Disc Wait-Conn-Ack R-Conn-CER R-Reject Wait-Conn-Ack/ Elect Timeout Error Closed Wait-Returns Win-Election I-Disc,R-Snd-CEA R-Open I-Peer-Disc I-Disc,R-Snd-CEA R-Open I-Rcv-CEA R-Disc I-Open R-Peer-Disc R-Disc Wait-I-CEA R-Conn-CER R-Reject Wait-Returns Timeout Error Closed R-Open Send-Message R-Snd-Message R-Open R-Rcv-Message Process R-Open WatchDog-Timer R-Snd-DWR R-Open R-Rcv-DWR Process-DWR, R-Open R-Snd-DWA R-Rcv-DWA Process-DWA R-Open R-Conn-CER R-Reject R-Open Stop R-Disc Closed R-Peer-Disc R-Disc Closed R-Rcv-CER Error Closed R-Rcv-CEA Error Closed I-Open Send-Message I-Snd-Message I-Open I-Rcv-Message Process I-Open WatchDog-Timer I-Snd-DWR I-Open I-Rcv-DWR Process-DWR, I-Open I-Snd-DWA I-Rcv-DWA Process-DWA I-Openguaranteed to be unique within a single host. Note that the Origin-Host AVP may resolve to more than one address as the Diameter peer may support more than one address. This AVP SHOULD be placed as close to the Diameter header as possible. 6.5 Origin-Realm AVP The Origin-Realm AVP (AVP Code 296) is of type UTF8String. This AVP contains the Realm of the originator of any Diameter message and MUST be present in all messages This AVP SHOULD be placed as close to the Diameter header as Calhoun et al. expiresDecember 2001January 2002 [Page57]68] Internet-DraftJuneJuly 2001R-Conn-CER R-Reject I-Open Stop I-Disc Closed I-Peer-Disc I-Disc Closed I-Rcv-CER Error Closed I-Rcv-CEA Error Closed 8.1 Incoming connections When a connectionpossible. 6.6 Destination-Host AVP The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity. This AVP MUST be present in all unsolicited agent initiated messages, MAY be present in request messages, and MUST NOT be present in Answer messages. The absence of the Destination-Host AVP will cause a message to be sent to any Diameter server supporting the application within the realm specified in Destination-Realm AVP. This AVP SHOULD be placed as close to the Diameter header as possible. 6.7 Destination-Realm AVP The Destination-Realm AVP (AVP Code 283) isreceivedof type UTF8String, and contains the realm the message is to be routed to. The Destination- Realm AVP MUST NOT be present in Answer messages. Diameter Clients insert the realm portion of the User-Name AVP. Diameter servers initiating a request message use the value of the Origin-Realm AVP from aDiameter peer,previous message received from the intended target host (unless it isnot, inknown a priori). When present, thegeneral case, possibleDestination-Realm AVP is used toknowperform message routing decisions. Request messages whose ABNF does not list theidentity of that peer untilDestination-Realm AVP as aCER is received from it.mandatory AVP are inherently non-routable messages. Thisis becauseAVP SHOULD be placed as close to theidentity of aDiameterpeer is determinedheader as possible. 6.8 Routing AVPs The AVPs defined in this section are Diameter AVPs used for routing purposes. These AVPs change as Diameter messages are processed byhost and port;agents, and therefore MUST NOT be protected using thesource port of an incoming connectionDiameter CMS Security application [11]. 6.8.1 Route-Record AVP The Route-Record AVP (AVP Code 282) isarbitrary. Upon receiptofCER, thetype DiameterIdentity. The identityof the connecting peer can be uniquely determined from Origin-Host. Foradded in thisreason, a Diameter peer must employ logic separate fromAVP MUST be thestate machine to receive connection requests, accept them, and await CER. Once CER arrives on a new connection,same as the one sent in the Calhoun et al. expires January 2002 [Page 69] Internet-Draft July 2001 Origin-Hostwhich identifiesof thepeerCapabilities-Exchange-Request message. 6.8.2 Proxy-Info AVP The Proxy-Info AVP (AVP Code 284) isused to locateof type Grouped. The Grouped Data field has thestate machine associated withfollowing ABNF grammar: Proxy-Info ::= < AVP Header: 284 > { Proxy-Host } { Proxy-State } * [ AVP ] 6.8.3 Proxy-Host AVP The Proxy-Host AVP (AVP Code 280) is of type DiameterIdentity. This AVP contains the identity of the host thatpeer, andadded thenew connectionProxy-Info AVP. 6.8.4 Proxy-State AVP The Proxy-State AVP (AVP Code 33) is of type OctetString, andCER are passed to thecontains statemachinelocal information, and MUST be treated asan R-Conn-CER event.opaque data. 6.8.5 Source-Route AVP Thelogic that handles incoming connections SHOULD close and discard the connection if any message other than CER arrives, or if an implementation-defined timeout occurs prior to receiptSource-Route AVP (AVP Code 286) is ofCER. Because handlingtype DiameterIdentity. This AVP is used for routing decisions by agents for server-initiated messages. The order ofincoming connections up to and including receiptthe Source-Route AVPs MUST be the inverse ofCER requires logic separate from thatthe Route-Record AVPs ofany individual state machine associated with a particular peer, it is described separately in this section rather than inauth messages received by thestate machine below. 8.2 Events Transitionsserver for the session in question. 6.9 Auth-Application-Id AVP The Auth-Application-Id AVP (AVP Code 258) is of type Unsigned32 andactionsis used in order to advertise support of theautomaton are caused by events. In this section we will ignore the -IAuthentication and-R prefix, since the actual event would be identical, but would occur on oneAuthorization portion oftwo possible connections. Start The Diameteran applicationhas signaled(see Section 2.5). The Auth- Application-Id MUST also be present in all Authentication and/or Authorization messages that are defined in aconnection should be initiated with the peer. R-Conn-CER A new incoming connectionseparate Diameter specification andassociated CER has arrived. Rcv-Conn-Ack A positive acknowledgement was receivedhave an Application ID assigned. This AVP SHOULD be placed as close toathe Diameter header as possible. Calhoun et al. expiresDecember 2001January 2002 [Page58]70] Internet-DraftJuneJuly 2001locally initiated transport connection. Rcv-Conn-Nack A negative acknowledgement was received6.10 Acct-Application-Id AVP The Acct-application-Id AVP (AVP Code 259) is of type Unsigned32 and is used in order toa locally initiated transport connection. Timeout An application-defined timer has expired while waiting for some event. Rcv-CER A CER message fromadvertise support of thepeer was received. Rcv-CEA A CEA message fromAccounting portion of an application (see Section 2.5). The Acct-Application-Id MUST also be present in all Accounting messages that are defined in a separate Diameter specification and have an Application ID assigned. This AVP SHOULD be placed as close to thepeer was received. Rcv-Non-CEA A message other than CEA fromDiameter header as possible. 6.11 Vendor-Specific-Application-Id AVP The Vendor-Specific-Application-Id AVP (AVP Code 260) is of type Grouped and is used to advertise support of a vendor-specific Diameter Application. Either thepeer was received. Peer-Disc A disconnection indication fromAuth-Application-Id or thepeer was received. Win-Election An election was held, andAcct- Application-Id AVP MAY be present. Both AVPs MAY be present if they both contain thelocal node wassame value. This AVP MUST also be present in all vendor-specific commands defined in thewinner. Send-Message A message is tovendor-specific application. This AVP SHOULD besent. Rcv-Message A message other than CER, CEA, DWR, or DWA was received. WatchDog-Timerplaced as close to the Diameter header as possible. AVP Format <Vendor-Specific-Application-Id> ::= < AVP Header: 260 > 1* [ Vendor-Id ] 0*1{ Auth-Application-Id } 0*1{ Acct-Application-Id } 6.12 Redirect-Host AVP TheWatchdog timer expired, indicating that a DWR messageRedirect-Host AVP (AVP Code 292) istoof type DiameterIdentity. This AVP MUST besentpresent if the answer message's 'E' bit is set and the Result-Code AVP is set to DIAMETER_REDIRECT_INDICATION. Upon receiving thepeer. Rcv-DWR A DWR message was received. Rcv-DWA A DWA message was received. Stop The Diameter application has signaled that a connection should be terminated (e.g., on system shutdown). 8.3 Actions Actions inabove, theautomaton are caused by events and typically indicatereceiving Diameter node SHOULD forward thetransmission of packets and/or an actionrequest directly tobe taken ontheconnection. Inhost identified in thissection we will ignore the I- and R- prefix, sinceAVP. The server contained in theactual action wouldRedirect-Host SHOULD beidentical, but would occur on one of two possible connections. Snd-Conn-Req A transport connection is initiated with the peer.used for all messages pertaining to this session. 6.13 Redirect-Host-Usage AVP Calhoun et al. expiresDecember 2001January 2002 [Page59]71] Internet-DraftJuneJuly 2001AcceptTheincoming connection associated withRedirect-Host-Usage AVP (AVP Code 261) is of type Enumerated. This AVP MAY be present in answer messages whose 'E' bit is set and theR- Conn-CERResult-Code AVP isacceptedset to DIAMETER_REDIRECT_INDICATION. When present, this AVP dictates how the routing entry resulting from the Redirect-Host is to be used. The following values are supported: DONT_CACHE 0 The host specified in the Redirect-Host AVP should not be cached. This is the default value. ALL_SESSION 1 All messages within the same session, as defined by the same value of the Session-ID AVP MAY be sent to theresponder connection. Reject The incoming connection associated withhost specified in theR- Conn-CER is disconnected. Process-CER The CER associated withRedirect-Host AVP. ALL_REALM 2 All messages destined for theR-Conn-CER is processed. Snd-Conn-Ack an acknowledgement isrealm requested MAY be sent to the host specified inresponsethe Redirect-Host AVP. REALM_AND_APPLICATION 3 All messages for the application requested toa connect request, confirming thatthetransport layer connection is open. Snd-CER A CER message isrealm specified MAY be sent to thepeer. Snd-CEA A CEA message ishost specified in the Redirect- Host AVP. ALL_APPLICATION 4 All messages for the application requested MAY be sent to thepeer. Cleanup If necessary, the connection is shutdown, and any local resources are freed. Error The transport layer connection is disconnected, either politely or abortively,host specified inresponsethe Redirect-Host AVP. ALL_HOST 5 All messages that would be sent toan error condition. Local resources are freed. Process-CEA A received CEA is processed. Disc The transport layer connection is disconnected, and local resources are freed. Elect An election occurs (see Section 8.4 for more information). Snd-Message A message is sent. Snd-DWR A DWR message is sent. Snd-DWA A DWA message is sent. Process-DWR The DWR message is serviced. Process-DWA The DWA message is serviced. Process A message is serviced. 8.4 The Election Process The election is performed ontheresponder. The responder compares Calhoun et al. expires December 2001 [Page 60] Internet-Draft June 2001host that generated theOrigin-Host receivedRedirect-Host MAY be sent to the host specified in the Redirect-Host AVP. 6.14 Redirect-Max-Cache-Time AVP The Redirect-Max-Cache-Time AVP (AVP Code 262) is of type Unsigned32. This AVP MUST be present inthe CER sent by its peer with its own Origin-Host. If the local Diameter entity's Origin-Hostanswer messages whose 'E' bit ishigher thanset, thepeer's, a Win-Election eventResult-Code AVP isissued locally. The comparison proceeds by considering the shorter OctetStringset tobe null-paddedDIAMETER_REDIRECT_INDICATION and the Redirect-Host-Usage AVP set to a non-zero value. This AVP contains thelengthmaximum number of seconds thelonger, then performing an octet by octet unsigned comparison withpeer and route table entries, created as a result of thefirst octet being most significant. Hanging octets are assumedRedirect-Host, will be cached. Note that once a host created due tohave value 0x80, but dimpled octets are ignored. 9.0a redirect indication is no longer reachable, any associated peer and routing table entries MUST be deleted. Calhoun et al. expires January 2002 [Page 72] Internet-Draft July 2001 7.0 Error Handling There are two different types of errors in Diameter; protocol and applications. A protocol error is one that occurs at the base protocol level, and MAY require per hop attention (e.g. message routing error). Application errors, on the other hand, are generally occur due to a problem with a function specified in a Diameter application (e.g. user authentication, Missing AVP). Result-Code AVP values that are used to report protocol errors MUST only beusedpresent inthe Message-Reject-Answer command. Unlike most Diameter commands, the Message-Reject-Answer does not have a corresponding request.answer messages whose 'E' bit is set. When a request message is received that causes a protocol error,the command codean answer message ischanged to Message-Reject-Answer,returned with the 'E' bit set, and the Result-Code AVP is set to the appropriate protocol error value. As the answer is sent back towards the originator of the request, each proxy or relay agent MAY take action on the message. 1. Request +---------+ Link Broken +-------------------------->|Diameter |----///----+ | +---------------------| | v +------+--+ | 2.MRAanswer + 'E' set | Relay 2 | +--------+ |Diameter |<-+ (Unable to Forward) +---------+ |Diameter| | | | Home | | Relay 1 |--+ +---------+ | Server | +---------+ | 3. Request |Diameter | +--------+ +-------------------->| | ^ | Relay 3 |-----------+ +---------+ Figure47 - Example of Protocol Error causingMRAanswer message Figure47 provides an example of a message forwarded upstream by a Diameter relay. When the message is received by Relay 2, and it detects that it cannot forward the request to the home server, anMRAanswer message is returned with the 'E' bit set and the Result-Code AVP set toCalhoun et al. expires December 2001 [Page 61] Internet-Draft June 2001DIAMETER_UNABLE_TO_DELIVER. Given that this error falls within the protocol error category, Relay 1 would take special action, and given the error, attempt to route the message through its alternate Relay 3. +---------+ 1. Request +---------+ 2. Request +---------+ | Access |------------>|Diameter |------------>|Diameter | | | | | | Home | | Device |<------------| Relay |<------------| Server | +---------+ 4. Answer +---------+ 3. Answer +---------+ (Missing AVP) (Missing AVP) Figure58 - Example of Application Error Answer message Figure58 provides an example of a Diameter message that caused an Calhoun et al. expires January 2002 [Page 73] Internet-Draft July 2001 application error. When application errors occur, the Diameter entity reporting the error clears the 'R' bit in the Command Flags, and adds the Result-Code AVP with the proper value. Application errors do not require any proxy or relay agent involvement, and therefore the message would be forwarded back to the originator of the request. There are certain Result-Code AVP application errors that require additional AVPs to be present in the answer. In these cases, the Diameter node that sets the Result-Code AVP to indicate the error MUST add the AVPs. Examples are: - An unrecognized AVP is received with the 'M' bit (Mandatory bit) set, causes an answer to be sent with the Result-Code AVP set to DIAMETER_AVP_UNSUPPORTED, and the Failed-AVP AVP containing the offending AVP. - An AVP that is received with an unrecognized value causes an answer to be returned with the Result-Code AVP set to DIAMETER_INVALID_AVP_VALUE, with the Failed-AVP AVP containing the AVP causing the error. - A command is received with an AVP that isommitted,omitted, yet is mandatory according to the command's ABNF. The receiver issues an answer with the Result-Code set to DIAMETER_MISSING_AVP, and creates an AVP with the AVP Code and other fields set to the missing AVP's. The created AVP is then added to the Failed-AVP AVP. The Result-Code AVP contains additional errors conditions, and defines the expected behavior of each.9.17.1 Result-Code AVP The Result-Code AVP (AVP Code 268) is of type Unsigned32 and indicates whether a particular request was completed successfully orCalhoun et al. expires December 2001 [Page 62] Internet-Draft June 2001whether an error occurred. All Diameter answer messages MUST include one Result-Code AVP. A non-successful Result-Code AVP (one containing a non 2xxx value) MUST include the Error-Reporting-Host AVP if the host setting the Result-Code AVP is different from the identity encoded in the Origin-Host AVP. The Result-Code data field contains an IANA-managed 32-bit address space representing errors (see section15.4).11.4). Diameter provides the following classes of errors, all identified by the thousands digit: - 1xxx (Informational) - 2xxx (Success) - 3xxx (Protocol Errors) - 4xxx (Transient Failures) - 5xxx (Permanent Failure) Calhoun et al. expires January 2002 [Page 74] Internet-Draft July 2001 A non-recognize class (one whose first digit is not defined in this section) MUST be handled as a permanent failure.9.1.17.1.1 Informational Errors that fall within this category are used to inform the requester that a request could not be satisfied, and additional action is required on its part before access is granted. DIAMETER_MULTI_ROUND_AUTH 1001 This informational error is returned by a Diameter server to inform the access device that the authentication mechanism being used required multiple round trip, and a subsequent request needs to be issued in order for access to be granted.9.1.27.1.2 Success Errors that fall within the Success category are used to inform a peer that a request has been successfully completed. DIAMETER_SUCCESS 2001 The Request was successfully completed. DIAMETER_LIMITED_SUCCESS 2002 When returned, the request was successfully completed, but additional processing is required by the application in order to provideservice to the user. 9.1.3 Protocol Errors Calhoun et al. expires December 2001 [Page 63] Internet-Draft June 2001service to the user. 7.1.3 Protocol Errors Errors that fall within the Protocol Error category SHOULD be treated on a per-hop basis, and Diameter proxies MAY attempt to correct the error, if it is possible. Note that these errors MUST only be used inthe Message-Rejected-Answer message, therefore a Diameter entity that wishes to return an error in this category MUST change the command code to Message-Rejected-Answer message.answer messages whose 'E' bit is set. DIAMETER_INVALID_ROUTE_RECORD 3001 The last Route-Record AVP in the message is not set to the identity of the sender of the message. See Section11.09.0 for more information. DIAMETER_COMMAND_UNSUPPORTED 3002 The Request contained a Command-Code that the receiver did not recognize or support. DIAMETER_UNABLE_TO_DELIVER 3003 Calhoun et al. expires January 2002 [Page 75] Internet-Draft July 2001 The realm requested is recognized, but no host within the realm was available to process the request. This event occurs if no Diameter server supporting the requested application is reachable within the intended realm. DIAMETER_REALM_NOT_SERVED 3004 The intended realm of the request is not recognized. DIAMETER_TOO_BUSY 3005 When returned, a Diameter node SHOULD attempt to send the message to an alternate peer. This error MUST only be used when a specific server is requested, and it cannot provide the requested service. DIAMETER_INVALID_CMS_DATA 3006 The Request did not contain a valid CMS-Data [11] AVP. DIAMETER_LOOP_DETECTED 3007 An agent detected a loop while trying to get the message to the Home Diameter server. The message MAY be sent to an alternate peer, if one is available, but the peer reporting the error has identified a configuration problem.DIAMETER_END_2_END_SECURITYDIAMETER_CMS_SECURITY 3008 A proxy has detected thatend-to-endCMS security has been applied to portions of the Diameter message, and the proxy does not allow this security mode since it needs to alter the message by applying some local policies. DIAMETER_REDIRECT_INDICATION 3009 A redirector has determined that the request could not be satisfied locally and the initiator of the request should direct the request directly to the server, whose contactCalhoun et al. expires December 2001 [Page 64] Internet-Draft June 2001information has been added to the response. When set, the Redirect-Host AVP MUST be present.9.1.4DIAMETER_APPLICATION_UNSUPPORTED 3010 A request was sent for an application that is not supported. DIAMETER_INVALID_HDR_BITS 3011 A request was received whose bits in the Diameter header were either set to an invalid combination, or to a value that is inconsistent with the command code's definition. 7.1.4 Transient Failures Errors that fall within the transient failures category are used to Calhoun et al. expires January 2002 [Page 76] Internet-Draft July 2001 inform a peer that the request could not be satisfied at the time it was received, but MAY be able to satisfy the request in the future. DIAMETER_AUTHENTICATION_REJECTED 4001 The authentication process for the user failed, most likely due to an invalid password used by the user. Further attempts MUST only be tried after prompting the user for a new password. DIAMETER_OUT_OF_SPACE 4002 A Diameter node received the accounting request but was unable to commit it to stable storage due to a temporary lack of space.9.1.57.1.5 Permanent Failures Errors that fall within the permanent failures category are used to inform the peer that the request failed, and should not be attempted again. DIAMETER_USER_UNKNOWN 5001 A request was received for a user that is unknown, therefore authentication and/or authorization failed. DIAMETER_AVP_UNSUPPORTED 5002 The peer received a message that contained an AVP that is not recognized or supported and was marked with the Mandatory bit. A Diameter message with this error MUST contain one or more Failed-AVP AVP containing the AVPs that caused the failure. DIAMETER_UNKNOWN_SESSION_ID 5003 The request contained an unknown Session-Id. DIAMETER_AUTHORIZATION_REJECTED 5004 A request was received for which the user could not be authorized. This error could occur if the service requested is not permitted to the user. DIAMETER_INVALID_AVP_VALUE 5005 The request contained an AVP with an invalid value in its data portion. A Diameter message indicating this error MUST includeCalhoun et al. expires December 2001 [Page 65] Internet-Draft June 2001the offending AVPs within a Failed-AVP AVP. DIAMETER_MISSING_AVP 5006 The request did not contain an AVP that is required by the Command Code definition. If this value is sent in the Result- Code AVP, a Failed-AVP AVP SHOULD be included in the message. The Failed-AVP AVP MUST contain an example of the missing AVP Calhoun et al. expires January 2002 [Page 77] Internet-Draft July 2001 complete with the Vendor-Id if applicable. The value field of the missing AVP should be of correct minimum length and contain zeroes. DIAMETER_RESOURCES_EXCEEDED 5007 A request was received that cannot be authorized because the user has already expended allowed resources. An example of this error condition is a user that is restricted to one dial-up PPP port, attempts to establish a second PPP connection. DIAMETER_CONTRADICTING_AVPS 5008 The Home Diameter server has detected AVPs in the request that contradicted each other, and is not willing to provide service to the user. One or more Failed-AVP AVPs MUST be present, containing the AVPs that contradicted each other. DIAMETER_AVP_NOT_ALLOWED 5009 A message was received with an AVP that MUST NOT be present. The Failed-AVP AVP MUST be included and contain a copy of the offending AVP. DIAMETER_AVP_OCCURS_TOO_MANY_TIMES 5010 A message was received that included an AVP that appeared more often than permitted in the message definition. The Failed-AVP AVP MUST be included and contain a copy of the first instance of the offending AVP that exceeded the maximum number of occurrences DIAMETER_UNSUPPORTED_TRANSFORM 5011 A message was received that included an CMS-Data AVP [11] that made use of an unsupported transform. DIAMETER_NO_COMMON_APPLICATION 5012 This error is returned when a CEA message is received, and there are no common applications supported between the peer. DIAMETER_UNSUPPORTED_VERSION 5013 This error is returned when aCEA message isrequest was received,and the Diameter messagewhose version number is unsupported. DIAMETER_UNABLE_TO_COMPLY 5014Calhoun et al. expires December 2001 [Page 66] Internet-Draft June 2001This error is returned when a request is rejected for unspecified reasons. DIAMETER_INVALID_BIT_IN_HEADER 5015 This error is returned when an unrecognized bit in the Diameter header is set to one (1). Calhoun et al. expires January 2002 [Page 78] Internet-Draft July 2001 DIAMETER_INVALID_AVP_LENGTH 5016 The request contained an AVP with an invalid length. A Diameter message indicating this error MUST include the offending AVPs within a Failed-AVP AVP. DIAMETER_INVALID_MESSAGE_LENGTH 5017 This error is returned when a request isreceived with an invalid message length. 9.2 Message-Reject-Answer The Message-Reject-Answer (MRA), indicated by the Command-Code set to 282, and the Command Flags' 'R' bit cleared, is sent in response to a request that has caused a protocol error. Although the command code is different from the one found in the request, the same procedures used in issuing an answer message is followed. The Result-Code AVP MUST be present, and include a value in the "Protocol Error" category. Proxies receivingreceived with anMRAinvalid messageMAY attempt to rectifylength. 7.2 Error Bit The 'E' (Error Bit) in the Diameter header is set when the request caused a protocol-related errorreported, if possible. In(see section 7.1.3). When set, theevent that no proxy is ableanswer message will not conform tocorrecttheproblem,ABNF specification for theMRAcommand, and willbe returnedinstead conform to theoriginator of the request message.following ABNF: Message Format<Message-Reject-Answer><answer-message> ::= < Diameter Header:282code, ERR > < Session-Id > { Origin-Host } { Origin-Realm } { Result-Code } { Destination-Host } [ Origin-State-Id ] [ Error-Reporting-Host ] * [ AVP ]9.3Note that the code used in the header is the same that the one found in the request message, but with the 'R' bit cleared and the 'E' bit set. 7.3 Error-Message AVPCalhoun et al. expires December 2001 [Page 67] Internet-Draft June 2001The Error-Message AVP (AVP Code 281) is of type UTF8String. It MAY accompany a Result-Code AVP as a human readable error message. The Error-Message AVP is not intended to be useful in real-time, and SHOULD NOT be expected to be parsed by network entities.9.47.4 Error-Reporting-Host AVP The Error-Reporting-Host AVP (AVP Code 294) is of type DiameterIdentity. This AVP contains the identity of the Diameter host that sent the Result-Code AVP to a value other than 2001 (Success), only if the host setting the Result-Code is different from Calhoun et al. expires January 2002 [Page 79] Internet-Draft July 2001 the one encoded in the Origin-Host AVP. This AVP is intended to be used for troubleshooting purposes, and MUST be set when the Result- Code AVP indicates a failure.9.57.5 Failed-AVP AVP The Failed-AVP AVP (AVP Code 279) is of type Grouped and provides debugging information in cases where a request is rejected or not fully processed due to erroneous information in a specific AVP. The value of the Result-Code AVP will provide information on the reason for the Failed-AVP AVP. The possible reasons for this AVP are the presence of an improperly constructed AVP, an unsupported or unrecognized AVP, an invalid AVP value, the omission of a required AVP, the presence of an explicitly excluded AVP (seetable 12.0),tables in section 10.0), or the presence of two or more occurrences of an AVP whichtable 14.1 restrictsis restricted to 0, 1, or 0-1 occurrences. A Diameter message MAY contain one Failed-AVP AVP, containing the entire AVP that could not be processed successfully. If the failure reason is omission of a required AVP, an AVP with the missing AVP code, the missing vendor id, and a zero filled payload of the minimum required length for theommittedomitted AVP will be added. AVP Format <Failed-AVP> ::= < AVP Header: 279 > 1* {AVP}10.08.0 Diameter User Sessions Diameter can provide two different type of services to applications. The first involves authentication and authorization, and canCalhoun et al. expires December 2001 [Page 68] Internet-Draft June 2001optionally make use of accounting. The second only makes use of accounting. When a service makes use of the authentication and/or authorization portion of an application, and a user requests access to the network, the Diameter client issues an auth request to its local server. The auth request is defined in a service specific Diameter application (e.g. NASREQ). The request contains a Session-Id AVP, which is used in subsequent messages (e.g. subsequent authorization, accounting, etc) relating to the user's session. The Session-Id AVP is a means for the client and servers to correlate a Diameter message with a user session. Calhoun et al. expires January 2002 [Page 80] Internet-Draft July 2001 When a Diameter server authorizes a user to use networkresources,resources for a finite amount of time, and itSHOULDis willing to extend the authorization via a future request, it MUST add theAuthorization-LifetimeAuthorization- Lifetime AVP to the answer message. The Authorization-Lifetime AVP defines the maximumamountnumber oftimeseconds a user MAY make use of the resources before another authorization request isto be transmitted toexpected by the server.IfThe Auth-Grace-Period AVP contains theserver does not receive another authorization request beforenumber of seconds following thetimeout occurs, it SHOULDexpiration of the Authorization-Lifetime, after which the server will releaseanyan state information related to the user's session. Note that if payment for services is expected by the serving realm from the user's home realm, the Authorization-LifetimeAVPAVP, combined with the Auth-Grace-Period AVP, implieshow longtheDiameter servermaximum length the session the home realm is willing topay forbe fiscally responsible for. Services provided past the expiration of the Authorization-Lifetime and Auth-Grace-Perioc AVPs is the responsibility of theservices rendered, therefore a Diameter client SHOULD NOT expect payment foraccess device. Of course, the actual cost of services renderedpastis clearly outside thesession expiration time.scope of the protocol. An access deviceMAY include an Authorization-Lifetime AVP withthat does not expect to send avalue of zerore-authorization or a session termination request toinformtheDiameterserverthatMAY include theauthorization requested will only occur once, and no further auth messages are to be sentAuth- Session-State AVP withthis particular session identifier. The Diameter server MAY acceptthe value set to NO_STATE_MAINTAINED as a hintfrom the access device, or it MAY override the Authorization-Lifetime into theanswer message with a non-zero value. By accepting an Authorization-Lifetime with a zero value,server. If theDiameterserver accepts the hint, it agrees thatit will not receive a indication ofsince no session termination message will be received once service to the user is terminated,and thereforeit cannot maintain state for the session. If the answer message from the server contains a different value in the Auth-Session-State AVP (or the default value if the AVP is absent), the access device MUST follow the server's directives. Note thata zero Authorization-Lifetimethe value NO_STATE_MAINTAINED MUST NOT beusedset in subsequent re- authorizationmessages.requests and answers. The base protocol does not include any authorization request messages, since these are largely application-specific and are defined in a Diameter application document. However, the base protocol does define a set of messages that are used to terminate user sessions. These are used to allow servers that maintain state information to free resources. When a service only makes use of the Accounting portion of the Diameter protocol, even in combination with an application, the Session-Id is still used to identify user sessions. However, theCalhoun et al. expires December 2001 [Page 69] Internet-Draft June 2001session termination messages are not used, since a session is signaled as being terminated by issuing an accounting stop message.10.18.1 Authorization Session State Machine This section contains a finite state machine, representing the life cycle of Diameter sessions, and MUST be observed by all Diameter Calhoun et al. expires January 2002 [Page 81] Internet-Draft July 2001 implementations that makes use of the authentication and/or authorization portion of a Diameter application. The term Service- Specific below refers to a message defined in a Diameter application (e.g. Mobile IP, NASREQ). The following table contains the authorization session state machine. State Event Action New State ------------------------------------------------------------- Idle Client or Device Requests send Pending access service specific auth req Idle Service-Specific authorization send serv. Open request received, and specific successfully processed answer Pending Successful Service-Specific Grant Open Authorization answer Access received withnon-zero Authorization-Lifetimedefault Auth-Session-State value Pending Successful Service-Specific Grant Active Authorization answer Access received withzero Authorization-LifetimeAuth-Session- State set to NO_SESSION_MAINTAINED Pending Successful Service-Specific Sent STR Discon authorization answer received but service not provided Pending Error processing successful Sent STR Discon Service-Specific authorization answer Open Authorization-Lifetimeaboutsend Opento expireexpires on access device service specific auth reqCalhoun et al. expires December 2001 [Page 70] Internet-Draft June 2001Open Successful Service-Specific Extend Open Authorization answer Access received Open Accounting message sent or process Open received Calhoun et al. expires January 2002 [Page 82] Internet-Draft July 2001 Open Failed Service-Specific Discon. Closed Authorization answer user/device received. Open Session-Timeout Expires on send STR Discon Access Device OpenSKRASR Received sendSKA,ASA, Discon STR OpenSession-Timeout orAuthorization-Lifetime (and Cleanup DisconAuthorization-LifetimeAuth-Grace-Period) expires on homeAAAserver. Open Session-Timeout expires on Cleanup Discon home server OpenSKAASA Received Cleanup Closed DisconSKRASR Received ignore Discon Discon STR Received Send STA Closed Discon STA Received Discon. Closed user/device Active Service to user is terminated Cleanup Closed Closed Transition to state Cleanup When the Cleanup action is invoked, the Diameter node MAY attempt to release all resources for the particular session. Any event not listed above MUST be considered as an error condition, and an answer, if applicable, MUST be returned to the originator of the message.10.28.2 Accounting Session State Machine For applications that only require accounting services, the following state machine MUST be supported. Calhoun et al. expiresDecember 2001January 2002 [Page71]83] Internet-DraftJuneJuly 2001 State Event Action New State ------------------------------------------------------------- Idle Client or device requests send Pending access accounting start req. Idle Accounting start request send Open received, and successfully accounting processed. start answer Pending Successful accounting grant Open start answer received access Open Receive Interim Record send Open accounting answer Open User service terminated send Discon accounting stop req. Open Accounting stop request send Closed received, and successfully accounting processed stop answer Discon Successful accounting discon. Closed stop answer received user/device10.38.3 Server-Initiated Re-Auth A Diameter server may initiate a re-authentication and/or re- authorization service for a particular session by issuing a Re-Auth- Request (RAR). For example, for pre-paid services, the Diameter server that originally authorized a session may need some confirmation that the user is still using the services. An access device that receives a RAR message with Session-Id equal to a currently active session MUST initiate a re-auth towards the user, if the service supports this particular feature. Each Diameter application MUST state whether service-initiated re-auth is supported, since some applications do not allow for access devices to prompt the user for re-auth. Calhoun et al. expiresDecember 2001January 2002 [Page72]84] Internet-DraftJuneJuly 200110.3.18.3.1 Re-Auth-Request The Re-Auth-Request (RAR), indicated by the Command-Code set to 258 and the message flags' 'R' bit set, may be sent by any server to the access device that is providing session service, to request that the user be re-authenticated and/or re-authorized. Message Format <Re-Auth-Request> ::= < Diameter Header: 258, REQ, PXY > < Session-Id > { Origin-Host } { Origin-Realm } { Destination-Realm } { Destination-Host } { Re-Auth-Request-Type } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.3.2* [ Source-Route ] 8.3.2 Re-Auth-Answer The Re-Auth-Answer (RAA), indicated by the Command-Code set to 258 and the message flags' 'R' bit clear, is sent in response to the RAR. The Result-Code AVP MUST be present, and indicates the disposition of the request. A successful RAA message MUST be followed by an application-specific authentication and/or authorization message. Message Format <Re-Auth-Answer> ::= < Diameter Header: 258, PXY > < Session-Id > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.48.4 Session Termination Calhoun et al. expires January 2002 [Page 85] Internet-Draft July 2001 It is necessary for a Diameter server that authorized a session to beCalhoun et al. expires December 2001 [Page 73] Internet-Draft June 2001notified when that session is no longer active, both for tracking purposes as well as to allow stateful agents to release any resources that they may have provided for the user's session. When a user session that required Diameter authorization terminates, the access device that provided the service MUST issue a Session- Termination- Request (STR) message to the Diameter server that authorized the service, to notify it that the session is no longer active. An STR MUST be issued when a user session terminates for any reason, including user logoff, expiration of Session-Timeout, administrative action, termination upon receipt of an Abort-Session- Request (see below), orderly shutdown of the access device, etc. The access device also MUST issue an STR for a session that was authorized but never actually started. This could occur, for example, due to a sudden resource shortage in the access device, or because the access device is unwilling to provide the type of service requested in the authorization, or because the access device does not support a mandatory AVP returned in the authorization, etc. It is also possible that a session that was authorized is never actually started due to action of a proxy. For example, a proxy may modify an authorization answer, converting the result from success to failure, prior to forwarding the message to the access device. A proxy that causes an authorized session not to be started MUST issue an STR to the Diameter server that authorized the session, since the access device has no way of knowing that the session had been authorized. A Diameter server that receives an STR message MUST clean up resources (e.g., session state) associated with the Session-Id specified in the STR, and return a Session-Termination-Answer. A Diameter server also MUST clean up resources when the Session- Timeout expires, or when the Authorization-Lifetime and the Auth- Grace-Period AVPs expires withoutre-authorization,receipt of a re-authorization request, regardless of whether an STR for that session is received. The access device is not expected to provide service beyond the expiration of these timers; thus, expiration of either of these timers implies that the access device may have unexpectedly shut down.10.4.18.4.1 Session-Termination-Request The Session-Termination-Request (STR), indicated by the Command-Code set to 275 and the Command Flags' 'R' bit set, is sent by the access Calhoun et al. expires January 2002 [Page 86] Internet-Draft July 2001 device to inform the Diameter Server that an authenticated and/or authorized session is being terminated.Calhoun et al. expires December 2001 [Page 74] Internet-Draft June 2001Message Format <Session-Termination-Req> ::= < Diameter Header: 275, REQ, PXY > < Session-Id > { Origin-Host } { Origin-Realm } { Destination-Realm } { Destination-Host } { User-Name } { Termination-Cause } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.4.28.4.2 Session-Termination-Answer The Session-Termination-Answer (STA), indicated by the Command- Code set to 275 and the message flags' 'R' bit clear, is sent by the Diameter Server to acknowledge the notification that the session has been terminated. The Result-Code AVP MUST be present, and MAY contain an indication that an error occurred while servicing the STR. Upon sending or receipt of the STA, the Diameter Server MUST release all resources for the session indicated by the Session-Id AVP. Any intermediate server in the Proxy-Chain MAY also release any resources, if necessary. Message Format <Session-Termination-Answer> ::= < Diameter Header: 275, PXY > < Session-Id > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } { User-Name } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.58.5 Aborting a Session Calhoun et al. expires January 2002 [Page 87] Internet-Draft July 2001 A Diameter server may request that the access device stop providing service for a particular session by issuing an Abort-Session-RequestCalhoun et al. expires December 2001 [Page 75] Internet-Draft June 2001(ASR). For example, the Diameter server that originally authorized the session may be required to cause that session to be stopped for credit or other reasons that were not anticipated when the session was first authorized. Or, an operator may maintain a management server for the purpose of issuing ASRs to administratively remove users from the network. An access device that receives an ASR with Session-ID equal to a currently active session MAY stop the session. Whether the access device stops the session or not is implementation- and/or configuration- dependent. For example, an access device may honor ASRs from certain agents only. In any case, the access device MUST respond with an Abort-Session-Answer, including a Result-Code AVP to indicate what action it took. Note that if the access device does stop the session upon receipt of an ASR, it issues an STR to the authorizing server (which may or may not be the agent issuing the ASR) just as it would if the session were terminated for any other reason.10.5.18.5.1 Abort-Session-Request The Abort-Session-Request (ASR), indicated by the Command-Code set to 274 and the message flags' 'R' bit set, may be sent by any server to the access device that is providing session service, to request that the session identified by the Session-Id be stopped. Message Format <Abort-Session-Request> ::= < Diameter Header: 274, REQ, PXY > < Session-Id > { Origin-Host } { Origin-Realm } { Destination-Realm } { Destination-Host } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.5.28.5.2 Abort-Session-Answer Calhoun et al. expires January 2002 [Page 88] Internet-Draft July 2001 The Abort-Session-Answer (ASA), indicated by the Command-Code set to 274 and the message flags' 'R' bit clear, is sent in response to theCalhoun et al. expires December 2001 [Page 76] Internet-Draft June 2001ASR. The Result-Code AVP MUST be present, and indicates the disposition of the request. If the session identified by Session-Id in the ASR was successfully terminated, Result-Code is set to DIAMETER_SUCCESS. If the session is not currently active, Result-Code is set to DIAMETER_UNKNOWN_SESSION_ID. If the access device does not stop the session for any other reason, Result-Code is set to DIAMETER_UNABLE_TO_COMPLY. Message Format <Abort-Session-Answer> ::= < Diameter Header: 274, PXY > < Session-Id > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]10.68.6 Inferring Session Termination from Origin-State-Id Origin-State-Id is used to allow rapid detection of terminated sessions for which no STR would have been issued, due to unanticipated shutdown of an access device. By including Origin-State-Id in CER/CAA messages, an access device allows a next-hop server to determine immediately upon connection whether the device has lost its sessions since the last connection. By including Origin-State-Id in request messages, an access device also allows a server with which it communicates via proxy to make such a determination. However, a server that is not directly connected with the access device will not discover that the access device has been restarted unless and until it receives a new request from the access device. Thus, use of this mechanism across proxies is opportunistic rather than reliable, but useful nonetheless. When a Diameter server receives a Origin-State-Id that is greater than the Origin-State-Id previously received from the same issuer, it may assume that the issuer has lost state since the previous message and that all sessions that were active under the lower Origin-State- Calhoun et al. expires January 2002 [Page 89] Internet-Draft July 2001 Id have been terminated. The Diameter server MAY clean up all session state associated with such lost sessions, and MAY also issues STRsCalhoun et al. expires December 2001 [Page 77] Internet-Draft June 2001for all such lost sessions that were authorized on upstream servers, to allow session state tobe cleaned up globally. 10.7be cleaned up globally. 8.7 Auth-Request-Type AVP The Auth-Request-Type AVP (AVP Code 274) is of type Enumerated and is included in application-specific auth requests to inform the peers whether a user is to be authenticated only, authorized only or both. Note any value other than both MAY cause RADIUS interoperability issues. The following values are defined: AUTHENTICATE_ONLY 1 The request being sent is for authentication only, and MUST contain the relevant application specific authentication AVPs that are needed by the Diameter server to authenticate the user. AUTHORIZE_ONLY 2 The request being sent is for authorization only, and MUST contain the application specific authorization AVPs that are necessary to identify the service being requested/offered. AUTHORIZE_AUTHENTICATE 3 The request contains a request for both authentication and authorization. The request MUST include both the relevant application specific authentication information, and authorization information necessary to identify the service being requested/offered/. 8.8 Session-Id AVP The Session-Id AVP (AVP Code 263) is of type UTF8String and is used to identify a specific session (see section10.0).8.0). All messages pertaining to a specific session MUST include only one Session-Id AVP and the same value MUST be used throughout the life of a session. When present, the Session-Id SHOULD appear immediately following the Diameter Header (see section 3.0). The Session-Id MUST be globally and eternally unique, as it is meant to uniquely identify a user session without reference to any other information, and may be needed to correlate historical authentication information with accounting information. The Session-Id includes a mandatory portion and an implementation-defined portion; a recommended format for the implementation-defined portion is outlined Calhoun et al. expires January 2002 [Page 90] Internet-Draft July 2001 below. The Session-Id MUST begin with the sender's identity encoded in the DiameterIdentity type (see section 4.4). The remainder of the Session-Id MAY be any sequence that the client can guarantee to be eternally unique; however, the following format is recommended, (square brackets [] indicate an optional element):<diameterIdentity>;<high<DiameterIdentity>;<high 32 bits>;<low 32 bits>[;<optional value>] <high 32 bits> and <low 32 bits> are decimal representations of the high and low 32 bits of a monotonically increasing 64-bit value. The 64-bit value is rendered in two part to simplify formatting by 32-bit processors. At startup, the high 32 bits of the 64-bit value MAY be initialized to the time, and the low 32 bits MAY be initialized to 0. This will for practical purposes eliminate the possibility of overlapping Session-Ids after a reboot, assuming the reboot process takes longer than a second. Alternatively, an implementation MAY keep track of the increasing value in non-volatile memory. <optional value> is implementation specific but may include a modem's device Id, a layer 2 address, timestamp, etc. Example, in which the standard port is used and there is no optional value: aaa://diameter/accesspoint7.acme.com;1876543210;523 or accesspoint7.acme.com;1876543210;523Calhoun et al. expires December 2001 [Page 78] Internet-Draft June 2001Example, in which a non-standard port is used and there is an optional value: accesspoint7.acme.com:831;1876543210;523;mobile@200.1.1.88 The session Id is created by the Diameter device initiating the session, which in most cases isdonedone by the client. Note that a Session-Id MAY be used for both the authorization and accounting commands of a given application. 8.9 Authorization-Lifetime AVP The Authorization-Lifetime AVP (AVP Code 291) is of type Unsigned32 and contains the maximum number of seconds of service to be provided to the user before the user is to be re-authenticated and/or re- authorized. Great care should be taken when the Authorization- Lifetime value is determined, since a low, non-zero, value could create significant Diameter traffic, which could congest both the network and the agents. Calhoun et al. expires January 2002 [Page 91] Internet-Draft July 2001 A value of zero (0) means that immediate re-auth is necessary by the access device. This is typically used in cases where multiple authentication methods are used, and a successful auth response with this AVP set to one is used to signal that the next authentication method is to be immediately initiated. The absence of this AVP, or a value of all ones (-1) means no re-auth is expected. If both this AVP and the Session-Timeout AVP are present in a message, the value of the latter MUST NOT be smaller than the Authorization-Lifetime AVP. An Authorization-Lifetime AVP MAY be present in a re-authorization messages, and contains the number of seconds the user is authorized to receive service from the time the re-auth answer message is received by theclient. Note that a Session-Idaccess device. This AVP MAY beused for bothprovided by theauthorization and accounting commandsclient as a hint of the maximum lifetime that it is willing to accept. However, the server MAY return agiven application. 10.8 Authorization-Lifetimevalue that is equal to, or smaller, than the one provided by the client. 8.10 Auth-Grace-Period AVP TheAuthorization-LifetimeAuth-Grace-Period AVP (AVP Code291)276) is of type Unsigned32 and contains themaximumnumber of seconds the Diameter server will wait following the expiration ofservice tothe Authorization-Lifetime AVP before cleaning up resources for the session. This AVP MAY be providedtoby theuser beforeclient as a hint of theusermaximum lifetime that it is willing tobe re-authenticated and/or re- authorized. Great care should be taken whenaccept. However, theAuthorization- Lifetime value is determined, sinceserver MAY return alow, non-zero,valuecould create significant Diameter traffic, which could congest boththat is equal to, or smaller, than thenetwork andone provided by theagents. If both thisclient. 8.11 Auth-Session-State AVP The Auth-Session-State AVP (AVP Code 277) is of type Enumerated andthe Session-Timeoutspecifies whether state is maintained for a particular session. The client MAY include this AVPare presentin requests as amessage,hint to the server. The following values are supported: STATE_MAINTAINED 0 This valueofis used to specify that session state is being maintained, and thelatteraccess device MUSTNOT be smaller thanissue a session termination message when service to theAuthorization-Lifetime AVP.user is terminated. ThisAVP MAYis the default value. Calhoun et al. expires January 2002 [Page 92] Internet-Draft July 2001 NO_STATE_MAINTAINED 1 This value is used to specify that no session termination messages will beprovidedsent by the access device upon expiration of the Authorization-Lifetime. 8.12 Re-Auth-Request-Type AVP The Re-Auth-Request-Type AVP (AVP Code 285) is of type Enumerated and is included in application-specific auth answers to inform the clientas a hintof themaximum duration that it is willing to accept. However,action expected upon expiration of theserver DOES NOT have to observeAuthorization-Lifetime. The following values are defined: AUTHORIZE_ONLY 0 An authorization only re-auth is expected upon expiration of thehint, and MAY return a value thatAuthorization-Lifetime. This issmaller thanthehint. Adefault valueof zero means that no re-authorizationif the AVP isrequired,not present in answer messages that include the Authorization-Lifetime. AUTHORIZE_AUTHENTICATE 1 An authentication andno session termination message will be sent toauthorization re-auth is expected upon expiration of theDiameter server. 10.9Authorization-Lifetime. 8.13 Session-Timeout AVP The Session-Timeout AVP (AVP Code 27) [1] is of type Unsigned32 and contains the maximum number of seconds of service to be provided to the user before termination of the session. When both the Session- Timeout and the Authorization-Lifetime AVPs are present in an answer message, the former MUST be equal to or greater than the value of the latter. A sessionterminatedthat terminates on an access device due to theSession-Timeoutexpiration of the Session-Timeout MUSTNOT generatecause an STR to be issued, unless both the access device and the home server had previously agreed that no session termination messages would be sent (see section 8.9). A Session-Timeout AVP MAY be present in are- authentication and/or re-authorization.re-authorization messages, and contains the number of seconds from the beginning of the re-auth. A value of zero, or the absence of this AVP, means that this session has an unlimited number of seconds before termination. This AVP MAY be provided by the client as a hint of the maximumdurationtimeout that it is willing to accept. However, the serverDOES NOT have to observe the hint, andMAY return a value that issmallerequal to, or smaller, than thehint.one provided by the client. Calhoun et al. expiresDecember 2001January 2002 [Page79]93] Internet-DraftJuneJuly 200110.108.14 User-Name AVP The User-Name AVP (AVP Code 1) [1] is of type UTF8String, which contains the User-Name, in a format consistent with the NAI specification [8].10.118.15 Termination-Cause AVP The Termination-Cause AVP (AVP Code 295) is of type Enumerated, and is used to indicate the reason why a session was terminated on the access device. The following values are defined: DIAMETER_LOGOUT 1 The user initiated a disconnect DIAMETER_SERVICE_NOT_PROVIDED 2 This value is used when the user disconnected prior to the receipt of the authorization answer message. DIAMETER_BAD_ANSWER 3 This value indicates that the authorization answer received by the access device was not processed successfully. DIAMETER_ADMINISTRATIVE 4 The user was not granted access, or was disconnected, due to administrative reasons, such as the receipt of aSession-Kill- RequestAbort- Session-Request message. DIAMETER_LINK_BROKEN 5 The communication to the user was abruptly disconnected.10.128.16 Origin-State-Id AVP The Origin-State-Id AVP (AVP Code 278), of type Unsigned32, is a monotonically increasing value that is advanced whenever a Diameter entity restarts with loss of previous state, for example upon reboot. Origin-State-Id MAY be included in any Diameter message, including CER. A Diameter entity issuing this AVP MUST create a higher value for this AVP each time its state is reset. A Diameter entity MAY set Origin-State-Id to the time of startup, or it MAY use an incrementing counter retained in non-volatile memory across restarts. The Origin-State-Id, if present, MUST reflect the state of the entity indicated by Origin-Host. If a proxy modifies Origin-Host, it MUST Calhoun et al. expiresDecember 2001January 2002 [Page80]94] Internet-DraftJuneJuly 2001 either remove Origin-State-Id or modify it appropriately as well. Typically, Origin-State-Id is used by an access device that always starts up with no active sessions; that is, any session active prior to restart will have been been lost. By including Origin-State-Id in a message, it allows other Diameter entities to infer that sessions associated with a lower Origin-State-Id are no longer active. If an access device does not intend for such inferences to be made, it MUST either not include Origin-State-Id in any message, or set its value to 0.10.138.17 Session-Binding AVP The Session-Binding AVP (AVP Code 270) is of type Unsigned32, and MAY be present in application-specific authorization answer messages. If present, this AVP MAY inform the Diameter client that all future application-specific re-auth messages for this session MUST be sent to the same authorization server. This AVP MAY also specify that a Session-Termination-Request message for this session MUST be sent to the same authorizing server. This field is a bit mask, and the following bits have been defined: RE_AUTH 1 When set, future re-auth messages for this session MUST NOT include the Destination-Host AVP. When cleared, the default value, the Destination-Host AVP MUST be present in all re-auth messages for this session. STR 2 When set, the STR message for this session MUST NOT include the Destination-Host AVP. When cleared, the default value, the Destination-Host AVP MUST be present in the STR message for this session. ACCOUNTING 4 When set, all accounting messages for this session MUST NOT include the Destination-Host AVP. When cleared, the default value, the Destination-Host AVP MUST be present in all accounting messages for this session.10.148.18 Session-Server-Failover AVP The Session-Server-Failover AVP (AVP Code 271) is of type Enumerated, and MAY be present in application-specific authorization answer Calhoun et al. expiresDecember 2001January 2002 [Page81]95] Internet-DraftJuneJuly 2001 messages that either do not include the Session-Binding AVP or include the Session-Binding AVP with any of the bits set to a zero value. If present, this AVP MAY inform the Diameter client that if a re-auth or STR message fails due to a delivery problem, the Diameter client SHOULD issue a subsequent message without the Destination-Host AVP. When absent, the default value is REFUSE_SERVICE. The following values are supported: REFUSE_SERVICE 0 If either the re-auth or the STR message delivery fails, terminate service with the user, and do not attempt any subsequent attempts. TRY_AGAIN 1 If either the re-auth or the STR message delivery fails, resend the failed message without the Destination-Host AVP present. ALLOW_SERVICE 2 If re-auth message delivery fails, assume that re-authorization succeeded. If STR message delivery fails, terminate the session. TRY_AGAIN_ALLOW_SERVICE 3 If either the re-auth or the STR message delivery fails, resend the failed message without the Destination-Host AVP present. If the second delivery fails for re-auth, assume re- authorization succeeded. If the second delivery fails for STR, terminate the session.10.158.19 Multi-Round-Time-Out AVP The Multi-Round-Time-Out AVP (AVP Code 272) is of type Unsigned32, and SHOULD be present in application-specific authorization answer messages whose Result-Code AVP is set to DIAMETER_MULTI_ROUND_AUTH. This AVP contains the maximum number of seconds that the access device MUST provide the user in responding to an authentication request.10.168.20 Class AVP The Class AVP (AVP Code 25) is of type OctetString and is used to by Diameter servers to return state information to the access device. When one or more Class AVPs are present in application-specific authorization answer messages, they MUST be present in subsequent re-authorization, session termination and accounting messages. Class Calhoun et al. expiresDecember 2001January 2002 [Page82]96] Internet-DraftJuneJuly 2001 AVPs found in a re-authorization answer message override the ones found in any previous authorization answer message. Diameter server implementations SHOULD NOT return Class AVPs that require more than 4096 bytes of storage on the Diameter client. A Diameter client that receives Class AVPs whose size exceeds local available storage MUST terminate the session.11.09.0 Accounting This accounting protocol is based on a server directed model with capabilities for real-time delivery of accounting information. Several fault resilience methods [40] have been built in to the protocol in order minimize loss of accounting data in various fault situations and under different assumptions about the capabilities of the used devices.11.19.1 Server Directed Model The server directed model means that the device generating the accounting data gets information from either the authorization server (if contacted) or the accounting server regarding the way accounting data shall be forwarded. This information includes accounting record timeliness requirements. As discussed in [40], real-time transfer of accounting records is a requirement, such as the need to perform credit limit checks and fraud detection. Note that batch accounting is not a requirement, and is therefore not supported by Diameter. Should Batched Accounting be required in the future, a new Diameter application will need to be created, or it could be handled using another protocol. The authorization server (chain) directs the selection of proper transfer strategy, based on its knowledge of the user and relationships of roaming partnerships. The server (or agents) uses the Accounting-Interim-Interval AVP to control the operation of the Diameter peer operating as a client. The Accounting-Interim-Interval AVP, when present, instructs the Diameter node acting as a client to produce accounting records continuously even during a session. The Diameter accounting server MAY override the interim interval by including an Accounting-Interim-Interval AVP in the Accounting-Answer message. When the AVP is present, the latest value received SHOULD be used in the generation of interim accounting messages.11.29.2 Protocol Messages Calhoun et al. expiresDecember 2001January 2002 [Page83]97] Internet-DraftJuneJuly 2001 A Diameter node that receives a successful authentication and/or authorization messages from the Home AAA Server, MUST collect accounting information for the session. The Accounting-Request message is used to transmit the accounting information to the Home AAA server, which MUST reply with the Accounting-Answer message to confirm reception. The Accounting-Answer message includes the Result-Code AVP, which MAY indicate that an error was present in the accounting message. A rejected Accounting-Request message SHOULD cause the user's session to be terminated. Each Diameter Accounting protocol message MAY be compressed using IPComp [41] in order to reduce the used network bandwidth, which MAY use IKE [15] to negotiate the compression parameters.11.39.3 Application document requirements Each Diameter application (e.g. NASREQ, MobileIP), MUST define their Service-Specific AVPs that MUST be present in the Accounting-Request message in a section entitled "Accounting AVPs". The application MUST assume that the AVPs described in this document will be present in all Accounting messages, so only their respective service-specific AVPs need to be defined in this section.11.49.4 Fault Resilience Diameter Base protocol mechanisms are used to overcome small message loss and network faults of temporary nature. Diameter peers acting as clients MUST implement the use of failover to guard against server failures and certain network failures. Diameter peers acting as agents or related off-line processing systems MUST detect duplicate accounting records caused by the sending of same record to several servers and duplication of messages in transit. This detection MUST be based on the inspection of the Session-Id and Accounting-Record-Number AVP pairs. Diameter clients MAY have non-volatile memory for the safe storage of accounting records over reboots or extended network failures, network partitions, and server failures. If such memory is available the client SHOULD store new accounting records there as soon as the records are created and until a positive acknowledgement of their reception from the Diameter Server has been received. Upon a reboot, the client MUST starting sending the records in the non-volatile memory to the accounting server with appropriate modifications in termination cause, session length, and other relevant information in the records. Calhoun et al. expiresDecember 2001January 2002 [Page84]98] Internet-DraftJuneJuly 2001 A further application of this protocol may include AVPs to control how many accounting records may at most be stored in the Diameter client without committing them to the non-volatile memory or transferring them to the Diameter server. The client SHOULD NOT remove the accounting data from any of its memory areas before the correct Accounting-Answer has been received. The client MAY remove oldest, undelivered or yet unacknowledged accounting data if it runs out of resources such as memory. It is an implementation dependent matter for the client to accept new sessions under this condition.11.59.5 Accounting Records In all accounting records the Session-Id and User-Name AVPs MUST be present. If end-to-end authentication is required, as described in [11], the CMS-Data AVP may be used to authenticate the Accounting Data and Service Specific AVPs. It is not typically necessary, nor recommended, that the end-to-end authentication cover any additional AVPs since the Data and Service Specific AVP, and associated CMS- Data, MAY need to be submitted to a third party. Different types of accounting records are sent depending on the actual type of accounted service and the authorization server's directions for interim accounting. If the accounted service is a one-time event, meaning that the start and stop of the event are simultaneous, then the Accounting-Record-Type AVP MUST be present and set to the value EVENT_RECORD. If the accounted service is of a measurable length, then the AVP MUST use the values START_RECORD, STOP_RECORD, and possibly, INTERIM_RECORD. If the authorization server has directed interim accounting to be enabled for the session, but no interim interval was specified, two accounting records MUST be generated for each service of type session. When the initial Accounting-Request is sent for a given session is sent, the Accounting-Record-Type AVP MUST be set to the value START_RECORD. When the last Accounting-Request is sent, the value MUST be STOP_RECORD. If a specified interim interval exists, the Diameter client MUST produce additional records between the START_RECORD and STOP_RECORD, marked INTERIM_RECORD. The production of these records is directed both by Accounting-Interim-Interval as well as any re-authentication or re-authorization of the session. The Diameter client MUST overwrite any previous interim accounting records that are locally stored for delivery, if a new record is being generated for the same session. This ensures that only one pending interim record can exist Calhoun et al. expiresDecember 2001January 2002 [Page85]99] Internet-DraftJuneJuly 2001 on an access device for any given session. A particular value of Accounting-Session-Id MUST appear only in one sequence of accounting records from a DIAMETER client, except for the purposes of retransmission. The one sequence that is sent MUST be either one record with Accounting-Record-Type AVP set to the value EVENT_RECORD, or several records starting with one having the value START_RECORD, followed by zero or more INTERIM_RECORD, and a single STOP_RECORD. A particular Diameter application specification MUST define the type of sequences that MUST be used.11.69.6 Correlation of Accounting Records The Diameter protocol's Session-Id AVP, which is globally unique (see section10.7),8.8), is used during the authorization phase to identify a particular session. Services that do not require any authorization still use the Session-Id AVP to identify sessions. However, there are certain applications that require multiple accounting sub-sessions. Such applications would send messages with a constant Session-Id AVP, but a different Accounting-Session-Id AVP. In these cases, correlation is performed using the Session-Id. Furthermore, there are certain applications where a user receives service from different access devices (e.g. Mobile IP), each with their own unique Session-Id. In such cases, the Accounting-Multi- Session-Id AVP is used for correlation. During authorization, a server that determines that a request is for an existing session, SHOULD include the Accounting-Multi-Session-Id AVP, which the access device MUST include in all subsequent accounting messages. The Accounting-Multi-Session-Id AVP MAY include the value of the original Session-Id. It's contents are implementation specific, but MUST be globally unique across other Accounting-Multi-Session-Id, and MUST NOT change during the life of a session. A Diameter application document MUST define the exact concept of a session that is being accounted, and MAY define the concept of a multi-session. For instance, the NASREQ DIAMETER application treats a single PPP connection to a Network Access Server as one session, and a set of Multilink PPP sessions as one multi-session.12.09.7 Accounting Command-Codes This section defines new Command-Code values that MUST be supported by all Diameter implementations that provide Accounting services. Calhoun et al. expiresDecember 2001January 2002 [Page86]100] Internet-DraftJuneJuly 200112.19.7.1 Accounting-Request The Accounting-Request command, indicated by the Command-Code field set to 271 and the Command Flags' 'R' bit set, is sent by a Diameter node, acting as a client, in order to exchange accounting information with a peer. When the Accounting-Request is being submitted to a third party (e.g. settlement service), and includes the CMS-Data AVP [11], the CMS-Data AVP MUST be signed by both the local and home Diameter server using the countersignature procedures described in [11]. The AVP listed below SHOULD include service specific accounting AVPs, as described in section11.3.9.3. Message Format <Accounting-Request> ::= < Diameter Header: 271, REQ, PXY > < Session-Id > { Acct-Application-Id } { User-Name } { Origin-Host } { Origin-Realm } { Destination-Realm } { Accounting-Record-Type } { Accounting-Record-Number } { Accounting-Session-Id } [ Accounting-Interim-Interval ] [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]12.29.7.2 Accounting-Answer The Accounting-Answer command, indicated by the Command-Code field set to 271 and the Command Flags' 'R' bit cleared, is used to acknowledge an Accounting-Request command. The Accounting-Answer command contains the same Session-Id and MAY contains the same Accounting Description and Usage AVPs that were sent in the Accounting-Request command. If the CMS-Data AVP was present in the Accounting-Request, the corresponding ACA message MUST include the CMS-Data AVP signed by the responder to provide strong AVP authentication, which MAY be used for the purposes of repudiation. Only the target Diameter Server, known as the home Diameter Server, SHOULD respond with the Accounting-Answer command. Calhoun et al. expiresDecember 2001January 2002 [Page87]101] Internet-DraftJuneJuly 2001 The AVP listed below SHOULD include service specific accounting AVPs, as described in section11.3.9.3. Message Format <Accounting-Answer> ::= < Diameter Header: 271, PXY > < Session-Id > { Acct-Application-Id } { User-Name } { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } { Accounting-Record-Type } { Accounting-Record-Number } { Accounting-Session-Id } [ Error-Reporting-Host ] [ Accounting-Interim-Interval ] [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]13.09.8 Accounting AVPs This section contains AVPs that describe accounting usage information related to a specific session.13.19.8.1 Accounting-Record-Type AVP The Accounting-Record-Type AVP (AVP Code 480) is of type Enumerated and contains the type of accounting record being sent. The following values are currently defined for the Accounting-Record-Type AVP: EVENT_RECORD 1 An Accounting Event Record is used to indicate that a one-time event has occurred (meaning that the start and end of the event are simultaneous). This record contains all information relevant to the service, and is the only record of the service. START_RECORD 2 An Accounting Start, Interim, and Stop Records are used to indicate that a service of a measurable length has been given. An Accounting Start Record is used to initiate an accounting session, and contains accounting information that is relevant to the initiation of the session. Calhoun et al. expiresDecember 2001January 2002 [Page88]102] Internet-DraftJuneJuly 2001 INTERIM_RECORD 3 An Interim Accounting Record contains cumulative accounting information for an existing accounting session. Interim Accounting Records SHOULD be sent every time a re- authentication or re-authorization occurs. Further, additional interim record triggers MAY be defined by application-specific Diameter applications. The selection of whether to use INTERIM_RECORD records is directed by the Accounting-Interim- Interval AVP. STOP_RECORD 4 An Accounting Stop Record is sent to terminate an accounting session and contains cumulative accounting information relevant to the existing session.13.29.8.2 Accounting-Interim-Interval AVP The Accounting-Interim-Interval AVP (AVP Code 482) is of type Unsigned32 and is sent from the Diameter home authorization server to the Diameter client. The client uses information in this AVP to decide how and when to produce accounting records. With different values in this AVP, service sessions can result in one, two, or two+N accounting records, based on the needs of the home-organization. The following accounting record production behavior is directed by the inclusion of this AVP: 1. The omission of the Accounting-Interim-Interval AVP or its inclusion with Value field set to 0 means that EVENT_RECORD, START_RECORD, and STOP_RECORD are produced, as appropriate for the service. 2. The inclusion of the AVP with Value field set to a non-zero value means that INTERIM_RECORD records MUST be produced between the START_RECORD and STOP_RECORD records. The Value field of this AVP is the nominal interval between these records in seconds. The Diameter node that originates the accounting information, known as the client, MUST produce the first INTERIM_RECORD record roughly at the time when this nominal interval has elapsed from the START_RECORD, the next one again as the interval has elapsed once more, and so on until the session ends and a STOP_RECORD record is produced. The client MUST ensure that the interim record production times are randomized so that large accounting message storms are not created either among records or around a common service start time. Calhoun et al. expiresDecember 2001January 2002 [Page89]103] Internet-DraftJuneJuly 200113.39.8.3 Accounting-Record-Number AVP The Accounting-Record-Number AVP (AVP Code 485) is of type Unsigned32 and identifies this record within one session. As Session-Id AVPs are globally unique, the combination of Session-Id and Accounting- Record-Number AVPs is also globally unique, and can be used in matching accounting records with confirmations. An easy way to produce unique numbers is to set the value to 0 for records of type EVENT_RECORD and START_RECORD, and set the value to 1 for the first INTERIM_RECORD, 2 for the second, and so on until the value for STOP_RECORD is one more than for the last INTERIM_RECORD.13.49.8.4 Accounting-Session-Id AVP The Accounting-Session-Id AVP (AVP Code 44) is of type UTF8String, following the format specified in section10.7.8.8. The Accounting- Session-Id is not used by the Diameter protocol, since the Session-Id defined in [1] is used for both authentication/authorization and accounting purposes. However, a RADIUS/Diameter gateway MAY need to include the Accounting-Session-Id in Diameter accounting messages.13.59.8.5 Accounting-Multi-Session-Id AVP The Accounting-Multi-Session-Id AVP (AVP Code 50) is of type UTF8String, following the format specified in section10.7.8.8. The Accounting-Multi-Session-Id AVP is used to link together multiple related accounting sessions, where each session would have a unique Accounting-Session-Id, but the sameAcounting-Multi-Session-IdAccounting-Multi-Session-Id AVP. This AVP MAY be returned by the Diameter server in an authorization answer, and MUST be used in all accounting messages for the given session.14.010.0 AVP Occurrence Table The following tables presents the AVPs defined in this document, and specifies in which Diameter messages they MAY, or MAY NOT be present. Note that AVPs that can only be present within a Grouped AVP are not represented in this table. The table uses the following symbols: 0 The AVP MUST NOT be present in the message. 0+ Zero or more instances of the AVP MAY be present in the message. 0-1 Zero or one instance of the AVP MAY be present in the message. It is considered an error if there are more than Calhoun et al. expiresDecember 2001January 2002 [Page90]104] Internet-DraftJuneJuly 2001 once instance of the AVP. 1 One instance of the AVP MUST be present in the message. 1+ At least one instance of the AVP MUST be present in the message.14.110.1 Base Protocol Command AVP Table The table in this section is limited to the non-accounting Command Codes defined in this specification.+-----------------------------------+Calhoun et al. expires January 2002 [Page 105] Internet-Draft July 2001 +-----------------------------------------------+ | Command-Code ||---+---+---+---+---+---+---+---+---+|---+---+---+---+---+---+---+---+---+---+---+---+ Attribute Name|CER|CEA|MRA|DWR|DWA|ASR|ASA|STR|STA| ------------------------------|---+---+---+---+---+---+---+---+---||CER|CEA|DPR|DPA|DWR|DWA|RAR|RAA|ASR|ASA|STR|STA| --------------------|---+---+---+---+---+---+---+---+---+---+---+---| Acct-Application-Id |0+ |0+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Alternate-Peer |0+ |0+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Auth-Application-Id |0+ |0+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |Authorization-LifetimeAuth-Grace-Period |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Auth-Request-Type |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Auth-Session-State |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Authorization- |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Lifetime | | | | | | | | | | | | | Class |0 |0 |0 |0 |0+ |0 |0 |0 |0 |0 |0+ |0+ | Destination-Host |0-1|0|0|1 |1 |0-1|0 |1 |1 |1 |0 |0-1|0 | Destination-Realm |0 |0 |0 |0 |0 |0 |1 |0 |1 |0 |1 |0 |Error-MessageDisconnect-Cause |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0|0-1|0|0 |Error-Reporting-HostError-Message |0 |0-1|0 |0-1|0 |0-1|0 |0-1|0 |0-1|0 |0-1| Error-Reporting-Host|0 |0 |0 |0 |0 |0|0-1|0|0||0-1|0 |0-1|0 |0-1| Failed-AVP |0 |0+|0+|0 |0 |0 |0+ |0 |0 |0 |0+ |0 |0+ | Firmware-Revision |0-1|0-1|0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Host-IP-Address |1+ |1+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |Multi-Round-Time-OutMulti-Round-Time-Out|0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Origin-Host |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 | Origin-Realm |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 | Origin-State-Id |0-1|0-1|0 |0 |0-1|0-1|0-1|0-1|0-1|0-1|0-1|0-1| Product-Name |1 |1 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Proxy-Info |0 |0 |0 |0 |0 |0 |0+ |0+ |0+ |0+ |0+ |0+ | Redirect-Host |0 |0|0+ |0|0 |0 |0 |0 |0| Redirect-Host-Usage|0+ |0 |0+ |0 |0+ | Redirect-Host-Usage |0 |0 |0 |0 |0 |0| Redirect-Max-Cache-Time|0 |0-1|0 |0-1|0 |0-1| Redirect-Max-Cache- |0|0+|0 |0 |0 |0 |0 |0 |0-1|0 |0-1|0 |0-1| Time | | | | | | | | | | | | | Result-Code |0 |1 |0 |1 |0 |1 |0 |1 |0 |0 |0 |1 | Re-Auth-Request-Type|0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 | Route-Record |0 |0 |0 |0 |0 |0 |0+ |0 |0+ |0+ |0+ |0+ | Session-Binding |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Session-Id |0 |0|1|0 |0 |0 |0 |1 |1 |1 |1 |1 |1 |Session-Server-FailoverSession-Server- |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Failover | | | | | | | | | | | | | Session-Timeout |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Source-Route |0 |0 |0 |0 |0 |0 |0+ |0 |0 |0 |0 |0 |Origin-State-Id |0-1|0-1|0-1|0-1|0-1|0-1|0-1|0-1|0-1|Supported-Vendor-Id |0+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | Termination-Cause |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |1 |0 | User-Name |0 |0 |0 |0 |0 |0 |0 |0 |1 |1 |1 |1 | Vendor-Id |1 |1 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |Vendor-Specific-Application-Id|0+Vendor-Specific- |0+ |0+ |0 |0 |0 |0 |0 |0+ |0 |0 |0 |0 | Application-Id | | | |------------------------------|---+---+---+---+---+---+---+---+---|| | | | | | | | | --------------------|---+---+---+---+---+---+---+---+---+---+---+---| Calhoun et al. expiresDecember 2001January 2002 [Page91]106] Internet-DraftJuneJuly 200114.210.2 Accounting AVP Table The table in this section is used to represent which AVPs defined in this document are to be present in the Accounting messages. +-----------+ | Command | | Code | |-----+-----+ Attribute Name | ACR | ACA | ------------------------------|-----+-----+ Accounting-Interim-Interval | 0-1 | 0-1 | Accounting-Multi-Session-Id | 0-1 | 0-1 | Accounting-Record-Number | 1 | 1 | Accounting-Record-Type | 1 | 1 | Accounting-Session-Id | 1 | 1 | Acct-Application-Id | 1 | 1 | Class | 0+ | 0+ | Destination-Host | 0-1 | 0 | Destination-Realm | 1 | 0 | Error-Reporting-Host | 0 | 0+ | Max-Time-Wait | 0+ | 0 | Origin-Host | 1 | 1 | Origin-Realm | 1 | 1 | Proxy-Info | 0+ | 0+ | Route-Record | 0+ | 0+ | Result-Code | 0 | 1 | Session-Id | 1 | 1 | ------------------------------|-----+-----+15.011.0 IANA Considerations This document defines a number of assigned numbers to be maintained by the IANA. This section explains the criteria to be used by the IANA to assign additional numbers in each of these lists. The following subsections describe the assignment policy for the namespaces defined elsewhere in this document.15.111.1 AVP As defined in section 4.0, the AVP header contains two fields that requires IANA namespace management; the AVP Code and Flags field.15.1.111.1.1 AVP Code the AVP Code namespace is used to identify attributes. When the Calhoun et al. expiresDecember 2001January 2002 [Page92]107] Internet-DraftJuneJuly 2001 Vendor ID value is set to zero (0), IANA will maintain a registry of assigned AVP codes, and in some cases also their values. AVP Codes 0-254 are managed separately as RADIUS Attribute Types [46], while the remaining namespace is available for assignment via Specification Required [12]. Vendor-Specific AVP Codes, where the Vendor-Id field in the AVP header is set to a non-zero value, is for Private Use. This document defines the AVP Codes257-272, 278-284,257-286, 291-297, 480, 482 and 485-486. See section 4.6 for the assignment of the namespace in this specification.15.1.211.1.2 AVP Flags There are 8 bits in the AVP Flags field of the AVP header, defined in section 4.0. This document assigns bit 8 ('V'endor Specific), bit 7 ('M'andatory) and bit 6 ('P'rotected). The remaining bits should only be assigned via a Standards Action [12].15.211.2 Diameter Header As defined in section 3.0, the Diameter header contains two fields that require IANA namespace management; Command Code and Command Flags.15.2.111.2.1 Command Codes The Command Code namespace is used to identify Diameter commands. The values 0-255 are reserved for RADIUS backward compatibility, and are defined as "RADIUS Packet Type Codes" in [46]. The remaining values are available via Standards Action [12]. Vendor-Specific Command Codes, where the Vendor-Id field in the Diameter header is set to a non-zero value, is for Private Use. This document defines the Command Codes 257, 258, 271, 274-275, 280 and 282. See section 3.1 for the assignment of the namespace in this specification.15.2.211.2.2 Command Flags There are eight bits in the Command Flags field of the Diameter header. This document assigns bit 8('R'equest) and('R'equest), bit 7('P'roxy).('P'roxy) and Calhoun et al. expiresDecember 2001January 2002 [Page93]108] Internet-DraftJuneJuly 2001 bit 6 ('E'rror). Bits 1 through65 MUST only be assigned via a Standards Action [12].15.311.3 Application Identifiers As defined in section6.1,2.5, the Application Identifier is used to identify a specific Diameter Application. All values, other than zero (0) are available for assignment via Standards Action [12]. Vendor-Specific Application Identifiers, encoded in the Vendor- Specific-Application-Id Grouped AVP, with the Vendor-Id AVP set to the vendor's enterprise number, is for Private Use. Note that the Diameter protocol is not intended to be extended for any purpose. Any applications defined MUST ensure that they fit within the existing framework, and that no changes to the base protocol are required.15.411.4 Result-Code AVP Values As defined in Section9.1,7.1, the Result-Code AVP (AVP Code 268) defines the values 1001, 2001-2002,3001-3009,3001-3011, 4001-4003 and 5001-5017. All remaining values are available for assignment via IETF Consensus [12].15.511.5 Accounting-Record-Type AVP Values As defined in Section13.1,9.8.1, the Accounting-Record-Type AVP (AVP Code 480) defines the values 1-4. All remaining values are available for assignment via IETF Consensus [12].15.611.6 Termination-Cause AVP Values As defined in Section10.10,8.14, the Termination-Cause AVP (AVP Code 295) defines the values 1-5. All remaining values are available for assignment via IETF Consensus [12].15.711.7 Redirect-Host-Usage AVP Values As defined in Section5.10,6.13, the Redirect-Host-Usage AVP (AVP Code 261) defines the values 0-5. All remaining values are available for assignment via IETF Consensus [12]. Calhoun et al. expiresDecember 2001January 2002 [Page94]109] Internet-DraftJuneJuly 200115.811.8 Session-Server-Failover AVP Values As defined in Section10.14,8.18, the Session-Server-Failover AVP (AVP Code 271) defines the values 0-3. All remaining values are available for assignment via IETF Consensus [12].15.911.9 Session-Binding AVP Values As defined in Section10.13,8.17, theSession-Server-FailoverSession-Binding AVP (AVP Code 270) defines the bits 1-4. All remaining bits are available for assignment via IETF Consensus [12].15.1011.10 Diameter TCP/SCTP Port Numbers An IANA request has been placed for TCP and SCTP port numbers. The IANA has informed the authors that "TBD" should be used in section 2.1 this document, and will be updated by the RFC editor during the RFC publication process. IANA should also replace "TBD" insectionsections 4.4 and 5.2 with the port number assigned in section2.1 16.02.1. 11.11 Disconnect-Cause AVP Values As defined in Section 5.4.3, the Disconnect-Cause AVP (AVP Code 273) defines the values 0-2. All remaining values are available for assignment via IETF Consensus [12]. 11.12 Auth-Request-Type AVP Values As defined in Section 8.7, the Auth-Request-Type AVP (AVP Code 274) defines the values 1-3. All remaining values are available for assignment via IETF Consensus [27]. 11.13 Auth-Session-State AVP Values As defined in Section 8.11, the Auth-Session-State AVP (AVP Code 277) defines the values 0-1. All remaining values are available for assignment via IETF Consensus [27]. 11.14 Re-Auth-Request-Type AVP Values Calhoun et al. expires January 2002 [Page 110] Internet-Draft July 2001 As defined in Section 8.12, the Re-Auth-Request-Type AVP (AVP Code 285) defines the values 0-1. All remaining values are available for assignment via IETF Consensus [27]. 12.0 Diameter protocol related configurable parameters This section contains the configurable parameters that are found throughout this document: Diameter Peer A Diameter entity MAY communicate with peers that are statically configured. A statically configured Diameter peer would require that either the IP address or the fully qualified domain name (FQDN) be supplied, which would then be used to resolve through DNS. Realm Routing Table A Diameter Proxy server routes messages based on the realm portion of a Network Access Identifier (NAI). The server MUST have a table of Realms Names, and the address of the peer to which the message must be forwarded to. The routing table MAY also include a "default route", which is typically used for all messages that cannot be locally processed. Tc timer The Tc timer controls the frequency that transport connection attempts are done to a peer with whom no active transportCalhoun et al. expires December 2001 [Page 95] Internet-Draft June 2001connection exists. The recommended value is3030 seconds. Td timer The Td timer controls the termination of connections with peer in the SUSPECT state. The recommended value is 5 seconds.TwTi timer TheTwTi timer controls the frequency the watchdog messages are to be sent toinactiveidle peers. The recommended value is 30 seconds.17.0Tr timer The Tr timer controls the frequency the watchdog messages are to be sent to peers when there are pending requests, but not messages have been received from the peer. The recommended value is 10 seconds. Tw timer The Tw timer controls the changing of a peer to the SUSPECT state when no answer is received to a watchdog request. The recommended value is 5 seconds. Calhoun et al. expires January 2002 [Page 111] Internet-Draft July 2001 13.0 Security Considerations The Diameter base protocol assumes that messages are secured by using either IP Security, or TLS. This security model is acceptable in environments where there are no untrusted third party relay, proxy, or redirect servers. When third party brokers or redirect servers are used, strong application level security SHOULD be required, such as non- repudiation. When the communicating peers do require this level of security either for legal or business purposes, the Diameter application defined in [11] MAY be used. This security model provides AVP-level authentication, and the encryption mechanism is designed such that only the target host has the keying information required to decrypt the information.18.014.0 References [1] C. Rigney, A. Rubens, W. Simpson, S. Willens, "Remote Authenti- cation Dial In User Service (RADIUS)", RFC 2865, June 2000. [2] Reynolds, Postel, "Assigned Numbers", RFC 1700, October 1994. [3] Postel, "User Datagram Protocol", RFC 768, August 1980. [4] Rivest, "The MD5 Message-Digest Algorithm", RFC 1321, April 1992. [5] Kaufman, Perlman, Speciner, "Network Security: Private Communi- cations in a Public World", Prentice Hall, March 1995, ISBN 0- 13-061466-1. [6] Krawczyk, Bellare, Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, January 1997. [7] P. Calhoun, W. Bulley, A. Rubens, J. Haag, "Diameter NASREQ Application",draft-ietf-aaa-diameter-nasreq-05.txt,draft-ietf-aaa-diameter-nasreq-07.txt, IETF work in progress,JuneJuly 2001.Calhoun et al. expires December 2001 [Page 96] Internet-Draft June 2001[8] Aboba, Beadles "The Network Access Identifier." RFC 2486. Janu- ary 1999. [10] P. Calhoun, C. Perkins, "Diameter Mobile IP Application",draft-ietf-aaa-diameter-mobileip-05.txt,draft-ietf-aaa-diameter-mobileip-07.txt, IETF work in progress,JuneJuly 2001. Calhoun et al. expires January 2002 [Page 112] Internet-Draft July 2001 [11] P. Calhoun, W. Bulley, S. Farrell, "Diameter CMS Security appli- cation",draft-ietf-aaa-diameter-cms-sec-00.txtdraft-ietf-aaa-diameter-cms-sec-01.txt (work in pro- gress),JuneJuly 2001. [12] Narten, Alvestrand,"Guidelines for Writing an IANA Considera- tions Section in RFCs", BCP 26, RFC 2434, October 1998 [13] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, M