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-04.txt><draft-ietf-aaa-diameter-05.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.MayJune 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. expires December 2001 [Page 1] Internet-Draft June 2001 Abstract The Diameter base protocol is intended to provide a AAA framework forCalhoun et al. expires October 2001 [Page 1] Internet-Draft May 2001Mobile-IP, NASREQ and ROAMOPS. This draft specifies the message format, transport, error reporting and security services to be used by all Diameterextensionsapplications and MUST be supported by all Diameter implementations.Calhoun et al. expires October 2001 [Page 2] Internet-Draft May 2001Table 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 DiameterextensionApplications 2.3.4ExtensionApplication authentication procedures 2.4 DiameterExtensionsApplications 2.5 Role of Diameter Agents 2.5.1 Relay Agents 2.5.2 Proxy Agents 2.5.3 Redirector Agents 2.5.4 Translation Agents 2.6 Diameter Server Discovery 2.7 Diameter Identity Encoding 3.0 Diameter Header 3.1 Command Code Definitions 3.2 Command Code ABNF specification 3.3 Diameter Command Naming Conventions3.3.1 Request/Answer 3.3.2 Indication/Failed Indication4.0 Diameter AVPs 4.1 AVP Header 4.2 Optional Header Elements 4.3 AVP Data Formats 4.4 Grouped AVP Values 4.4.1 Example AVP with a Grouped Data type 4.5 Diameter Base Protocol AVPs 5.0 Diameter message processing 5.1 Processing Local Messages 5.2 Message Forwarding5.1 Origin-FQDN5.2.1 Peer Table 5.3 Message Routing Calhoun et al. expires December 2001 [Page 2] Internet-Draft June 2001 5.3.1 Realm-Based Routing Table 5.3.2 Redirecting requests 5.3.3 Relaying and Proxying Requests 5.3.4 Relaying and Proxying Answers 5.3.5 Hiding Network Topology 5.4 Origin-Host AVP5.25.5 Origin-Realm AVP5.3 Destination-FQDN5.6 Destination-Host AVP 5.7 Destination-Realm AVP 5.8 Routing AVPs 5.8.1 Route-Record AVP 5.8.2 Proxy-Info AVP 5.8.3 Proxy-Host AVP 5.8.4 Proxy-State AVP 5.9 Redirect-Host AVP 6.0 Capabilities Negotiation 6.1ExtensionApplication Identifiers 6.2Device-Reboot-Ind (DRI) Command 6.2.1Capabilities-Exchange-Request 6.3 Capabilities-Exchange-Answer 6.4 Vendor-Id AVP6.2.26.5 Firmware-Revision AVP6.2.3 Auth-Extension-Id6.6 Auth-Application-Id AVP6.2.46.7 Host-IP-Address AVP6.2.56.8 Supported-Vendor-Id AVP6.2.66.9 Product-Name AVP6.2.7 Acct-Extension-Id6.10 Acct-Application-Id AVP 6.11 Vendor-Specific-Application-Id AVP 7.0 Transport Failure Detection 7.1 Device-Watchdog-Request 7.2 Device-Watchdog-Answer 7.3 Failover/Failback Procedures 8.0 Peer State MachineCalhoun et al. expires October 2001 [Page 3] Internet-Draft May 20018.1 States 8.2 Events 8.3 Actions 8.4 The Election Process 9.0 Error Handling 9.1End-to-End Error Handling 9.1.1Result-Code AVP9.1.1.19.1.1 Informational9.1.1.29.1.2 Success9.1.1.39.1.3 Protocol Errors 9.1.4 Transient Failures9.1.1.49.1.5 Permanent Failures9.1.2 Error-Message AVP 9.1.3 Error-Reporting-FQDN AVP9.2Hop-by-Hop Error Handling 9.2.1 Device-Status-Ind 9.2.2 DSI-Event AVP 9.2.2.1 Informational Events 9.2.2.2 Redirect Event 9.2.2.3 Transient Failure Events 9.2.2.4 Permanent Failure EventsMessage-Reject-Answer 9.3Failed-AVPError-Message AVP 9.4Offending-AVPError-Reporting-Host AVP 9.5Failed-Vendor-IdFailed-AVP AVP 10.0 "User" Sessions Calhoun et al. expires December 2001 [Page 3] Internet-Draft June 2001 10.1 Authorization Session State Machine 10.2 Accounting Session State Machine 10.3 Session-Id AVP 10.4 Authorization-Lifetime AVP 10.5 Session-Timeout AVP 10.6 User-Name AVP 10.7Max-Wait-Time AVP 10.8Session Termination10.8.1 Session-Termination-Ind 10.8.210.7.1 Session-Termination-Request10.8.310.7.2 Session-Termination-Answer11.0 Message Routing 11.1 Realm-Based Message Routing 11.1.1 Realm-Based Routing Table 11.2 Proxy and Redirect Server handling of requests 11.3 Redirect Server 11.3.1 Redirect-Host AVP 11.3.2 Redirect-Host-Address AVP 11.3.3 Redirect-Host-Port AVP 11.4 Proxy Server 11.4.1 Proxying Request and Indication messages 11.4.2 Proxying Answer and Failed Ind messages 11.4.3 Route-Record AVP 11.4.4 Proxy-Info AVP Calhoun et al. expires October 2001 [Page 4] Internet-Draft May 2001 11.4.5 Proxy-Address AVP 11.4.6 Proxy-State10.8 Aborting a Session 10.8.1 Abort-Session-Request 10.8.2 Abort-Session-Answer 10.9 Termination-Cause AVP11.4.7 Destination-Realm10.10 Inferring Session Termination from Origin-State-Id 10.11 Origin-State-Id AVP11.5 Applying Local Policies 11.6 Hiding Network Topology 11.7 Loop Detection 12.011.0 Accounting12.111.1 Server Directed Model12.211.2 Protocol Messages12.3 Extension11.3 Application document requirements12.411.4 Fault Resilience12.511.5 Accounting Records13.012.0 Accounting Command-Codes13.112.1 Accounting-Request(ACR) Command 13.212.2 Accounting-Answer(ACA) Command 13.3 Accounting-Status-Ind (ASI) Command 13.412.3 Accounting-Poll-Ind(API) Command 14.013.0 Accounting AVPs14.113.1 Accounting-Record-Type AVP14.213.2 Accounting-Interim-Interval AVP14.313.3 Accounting-Record-Number AVP14.4 Accounting-State AVP 14.513.4 Accounting-Session-Id AVP15.013.5 Accounting-Multi-Session-Id AVP 14.0 AVP Occurrence Table15.114.1 Base Protocol Command AVP Table15.214.2 Accounting AVP Table16.015.0 IANA Considerations16.115.1 AVP Header16.1.115.1.1 AVP Code16.1.215.1.2 AVP Flags16.215.2 Diameter Header16.2.115.2.1 Command Codes16.2.215.2.2 Message Flags16.3 Extension15.3 Application Identifier Values16.415.4 Result-Code AVP Values16.5 DSI-Event AVP Values 16.6 Accounting-State15.5 Accounting-Record-Type AVP Values16.7 Accounting-Record-Type15.6 Termination-Cause AVP Values16.815.7 Diameter TCP/SCTP Port Numbers17.0 Open Issues 18.016.0 Diameter protocol related configurable parameters19.017.0 Security Considerations20.0Calhoun et al. expires December 2001 [Page 4] Internet-Draft June 2001 18.0 References21.019.0 Acknowledgements22.020.0 Authors' Addresses23.021.0 Full Copyright Statement 22.0 Expiration Date Appendix A. Diameter Service Template Calhoun et al. expiresOctoberDecember 2001 [Page 5] Internet-DraftMayJune 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. expiresOctoberDecember 2001 [Page 6] Internet-DraftMayJune 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. -ProxyingRelaying, proxying andRe-directingre-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 withan application-specific extension,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 Diameterextensions.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. expiresOctoberDecember 2001 [Page 7] Internet-DraftMayJune 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. DiameterClientAgent Calhoun et al. expiresOctoberDecember 2001 [Page 8] Internet-DraftMayJune 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). DiameterServerNode A Diameterservernode is adevicehost thatis not actingimplements the Diameter protocol, and acts either as aNASClient, orFA. Servers can be proxy, redirect,as a Proxy, Redirector, Server orhome serversTranslation 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 ServerASee DiameterHome Server is one that authenticates and/or authorizes access for users of a particular realm. The same server MAY also act as a proxy or redirect server for other realms, in which case it is not acting as a Home Server for these realms.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.Proxy Server A proxy server ”ses the realm portion of the NAI to route Diameter messages. Proxy servers are typically used to minimize the number of security relationships that are required between Diameter servers. RealmCalhoun et al. expiresOctoberDecember 2001 [Page 9] Internet-DraftMayJune 2001The string in the NAI that immediately follows the '@' character. NAI realm names are requiredProxy In addition tobe unique,forwarding requests andare piggybacked onresponses, proxies enforce policies relating to resource usage and provisioning. This is typically accomplished by tracking theadministrationstate ofthe DNS namespace. Diameter makesNAS 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.Redirect Server A Diameter redirect server provides realmRelay 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 toaddress translation, by returning information necessary forunderstand the semantics of messages or non-routing AVPs, and are capable of handling any Diameterpeersapplications 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.Redirect servers are different from proxies since theySince Re-directs do notparticipatesit in theroutingforwarding 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 messagesbetween end Diameter nodes.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. expires December 2001 [Page 10] Internet-Draft June 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. Threeextensions toDiameter applications are defined by companion documents: NASREQ [7], Mobile IP [10], End-to-End Security [11]. These options are introduced in this document but specified elsewhere. Additionalextensions toDiametermayapplications MAY be defined in the future (see Section16.3). Calhoun et al. expires October 2001 [Page 10] Internet-Draft May 200115.3). DiameterserversClients MUST support theBasebase protocol, which includesAccounting, andaccounting. 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 MobileIP extensions.IP, MUST be referred to as "Diameter X Server" where X is the application which it supports, and not a "Diameter Server." DiameterClientsRelays and Redirectors are, by definition, protocol transparent, and MUST transparently support theBaseDiameter base protocol,including Accounting,which includes accounting, andMAYall Diameter applications. Calhoun et al. expires December 2001 [Page 11] Internet-Draft June 2001 Diameter Proxies MUST suppport the base protocol, which includes accounting. in addition, they MUST fully supportany other extension that wouldeach 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 berequiredreferred toprovide service.as "Diameter X Proxy" where X is the application which it supports, and not a "Diameter Proxy." 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 particularapplication of or extension to Diameter. We will refer to this as theDiameterextension.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 section 10.0 for more information). The communicating party may accept the request, or reject it by returninga responsean 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 Diameterextensionapplication 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 particularextension/application of Diameter. Exchanges of messages are either request/reply oriented, or in some special cases, do not require replies. All such messages that do not require replies have names ending with '-Ind' (short for Indication).Diameter application. The Diameter base protocol provides the Authorization-Lifetime AVP, which MAY be used byextensionsapplications 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 Diameterclients SHOULDprotocol is run on port TBD of both TCP and SCTP. Diameter clients MUST support either TCP or SCTP,butwhile agents and servers MUST supportTCP if SCTP is not available. futureboth. Future versions of this specificationmay mandate thatMAY Calhoun et al. expiresOctoberDecember 2001 [Page11]12] Internet-DraftMayJune 2001 mandate that clients support SCTP.Diameter servers MUST support both TCP and 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.TheThis behavior is handled via the Tc timer, whose recommendedconnection intervalvalue is 30 seconds.2.2 Securing2.1.1 SCTP Guidelines The following are guidelines for DiameterMessagesimplementations that support SCTP: 1. For interoperability: All Diametermessagesnodes MUST besecured between peers, and both TLS [38] and IP Security [37] are supported.prepared to receive Diameter messages on any SCTP stream in the 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 ForeignAgents, commonly referred to as clients,Agents MUST support IPSecurity, while servers MUSTSecurity [37], and MAY supportbothTLSand IP Security. The communication between a client and server MUST use IP Security, while communication between[38]. Diameter servers MUSTusesupport TLS, but the administrator MAY opt to configure IPSec instead of using TLS.All hosts runningOperating the Diameter protocolMUST have the necessarywithout any securitypolicies to ensure that unauthenticated Diameter packets aremechanism is notprocessed.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 Calhoun et al. expires December 2001 [Page 13] Internet-Draft June 2001 Defining a new AVP value is the best approach when a new application needs to make use of an existing Diameterextension,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.Calhoun et al. expires October 2001 [Page 12] Internet-Draft May 2001In 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 Diameterextension,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, it is highly recommended that a Grouped AVP be used (see Section 4.4). 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 existingextensionapplication MUST NOT be defined to have the 'M'andatory bit set. 2.3.3 Creating new DiameterextensionsApplications Should a new application require Diameter support, but it cannot fit within an existingextensionapplication without requiring major changes to the specification, it may be desirable to create a new Diameterextension.application. Major changes to anextensionapplication 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.Extensionapplication foo has a command that requires one round trip, but newextensionapplication bar has a command that requires two round trips to complete). - The method used to authenticate the user is drastically Calhoun et al. expires December 2001 [Page 14] Internet-Draft June 2001 different from any existingextension,application, and the authentication information cannot be carried within the AVPs defined in theextension.application. Note that the creation of a newextensionapplication should be viewed as a last resort. New Diameterextensionsapplications MUST define at least one Command Code, theCalhoun et al. expires October 2001 [Page 13] Internet-Draft May 2001expected AVPs in an ABNF [31] grammar (see section 3.2), and MAY also define new AVPs. If the Diameterextensionapplication has any accounting requirements, it MUST also specify the AVPs that are to be present in the Diameter Accounting messages (see section12.3).11.3). When possible, a new Diameterextensionapplication SHOULD attempt to re-use any existing Diameter AVP, in order to reduce the possibility of having multiple AVPs that carry similar information. Every DiameterExtensionapplication specification MUST have an IANA assignedExtensionApplication Identifier (see section 2.4). 2.3.4ExtensionApplication authentication procedures When possible,extensionsapplications SHOULD be designed such that new authentication methods MAY be added without requiring changes to theextension.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 DiameterExtensionApplication ComplianceExtensionApplication Identifiers are advertised during the capabilities exchange phase (see section 6.0). For a givenextension,application, there are two different ways of advertising support. First, advertising support of theextensionapplication via theAuth-Extension-IdAuth-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 theextensionapplication via theAcct-Extension-IdAcct-Application-Id implies that the sender supports the Accounting command codes defined in this specification, as well as the accounting AVPs defined in theextension'sapplication's specification. An implementation MAY add arbitrary AVPs to any command defined in anextension,application, including vendor-specific AVPs. However, implementations that add such AVPsMUST NOT havewith the Mandatory('M')'M' bitset. An implementation that adds AVPsset are notspecified in a command's ABNF,compliant, andsets the AVP's Mandatory bit MUST NOT advertise support of the extension. An implementation MAY support both a proprietary version of an extension by requesting an IANA extension identifier (see section 16.3), while supportingare at fault if theoriginal extension. Duringpeer rejects thecapabilities exchange, a Diameter node can determine whether to exchange messages usingrequest. If theproprietary or standard versionsender ofthe extension by inspecting the extensions advertised by the peer.Calhoun et al. expiresOctoberDecember 2001 [Page14]15] Internet-DraftMayJune 20012.5 Diameter Server Discovery Allowing for dynamic Diameter server discovery will makesuch a message wishes to provide service, itpossible for simpler and more robust deploymentMUST resend the message with the offending AVPs removed. 2.5 Role ofAAA services.Diameter Agents Inorderaddition topromote interoperable implementations of Diameter server discovery,client and servers, thefollowing mechanisms are described. These are based on existing IETF standards. There are two cases whereDiameterserver discovery may be performed. The firstprotocol introduces relays, redirectors, proxies and translation gateways, each of which iswhen adefined in Section 1.3. These Diameterclient needsagents are useful for several reasons: - They can distribute administration of systems todiscoverafirst-hop Diameter server. The second case is when a Diameter server needs to discover another serverconfigurable grouping, including the maintenance of security associations. - They can be used forfurther handlingconcentration of requests from an number of co-located or distributed NAS equipment sets to aDiameter operation. In both cases, the following 'search order' is recommended: 1. The Diameter implementation consults its listset ofstatic (manual) configured Diameter server locations. These will belike user groups. - They can do value-added processing to the requests or responses. - They can usediffor load balancing. - A complex network will have multiple authentication sources, theyexistcan sort requests andrespond. 2.forward towards the correct target. The Diameterimplementation uses SLPv2 [28] to discover Diameter services. The Diameter service template [32] is included in Appendix A. Itprotocol requires that agents maintain transaction state, which isrecommendedused for failover purposes. Transaction state implies thatSLPv2 security be deployed (this requires distributing keys to SLPv2 agents.) Thisupon forwarding a request, it's Hop-by-Hop identifier isdiscussed further in Appendix A. SLPv2 will allow Diameter implementationssaved, the field is replaced with a locally unique identifier, which is restored todiscoverits original value when thelocationcorresponding answer is received. The request's state is released upon receipt ofDiameter servers inthe answer. A stateless agent is one that only maintains transaction state. The Proxy-Info AVP allows stateless agent to add localsite, as well as their characteristics.state to a Diameterserversrequest, withspecific capabilities (say support fortheAccounting extension) 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 inprotocol's failover procedures requires that agents maintain a copy of pending requests. A stateful agent is one that maintains session state information, by keeping track of all authorized active sessions. Each authorized session is bound to a particulardomain. The Diameter implementationservice, and its state is considered active either until it is notified otherwise, or by expiration. Each authorized session hasto know in advancea expiration, whichdomain to look for anis communicated by Diameterserver in. This could be deduced, for example, fromservers via the'realm'Authorized-Lifetime AVP. Maintaining session state MAY be useful ina NAI that an Diameter implementation needed to perform an Diameter operation on. Diameter allows AAA peers to protect the integrity and privacy of communication as well as to perform end-point authentication. Still, it is prudent to employ DNS Security as a precaution when using DNS SRV RRscertain applications, such as: - Protocol translation (e.g. RADIUS <-> Diameter) - Limiting resources authorized tolook up the location ofa particular user - Per user or transaction auditing A Diameterserver. [34, 35, 36] 3.0agent MAY act in a stateful manner for some requests, while be stateless for others. A DiameterHeaderimplementation MAY act as Calhoun et al. expiresOctoberDecember 2001 [Page15]16] Internet-DraftMayJune 2001A summaryone type of agent for some requests, and as another type of agent for others. 2.5.1 Relay Agents Relay Agents are Diameter agents that accept requests and routes the message to another Diameterheader format is shown below. The fields are transmittedagent based on information found innetwork 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |r r r r r r r r r F A I R| Ver | Message Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop-by-Hop Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | End-to-End Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Command-Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVPs ... +-+-+-+-+-+-+-+-+-+-+-+-+- Flags The Message Flags field is thirteen bits. The following bits are assigned: r(eserved) MUST be zero - this flag bit is reserved for future use. F(ailed Ind) - The indication message was rejected. A(nswer) - Thethe message (e.g. Destination-Realm). This routing decision is performed using aresponse to a Request message. I(ndication) - This notification does not solicit a response. R(equest) - The message solicits an answer. These flags MUST be set depending onlist of supported domains, and known peers. This is known as thecommand code usedDiameter Routing Table, as is defined further in section x.x. Relays MAY be used to aggregate requests from multiple Network Access Servers (NASes) within aDiameter message. This enables the typecommon geographical area (POP). The use ofmessageRelays is advantageous since it eliminates the need for NASes to beinterpreted, even ifconfigured with thespecific command code is not recognized. Command Type Flags Set Indication - - - I Request - - R - Answer - A - - Failed Ind F - - - Anecessary security information it would otherwise require to communicate with Diameternode MUST NOT set these flagsservers inanyothercombination. Arealms. Likewise, this reduces the configuration load on Diameternode receiving a message in which these flagsservers that would otherwise be necessary when NASes arenot set appropriately MAY reject the message for this reason,added, 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 are stateless, and therefore SHOULDlog the event for diagnosis. Version This Version fieldNOT maintain session state, but MUSTbe set to 1 to indicate Diameter Version Calhoun et al. expires October 2001 [Page 16] Internet-Draft May 2001maintain transaction state. +------+ ---------> +------+ ---------> +------+ | | 1.Message Length The Message Length field is two octets and indicates the lengthRequest | | 2. Request | | | NAS | | DRL | | HMS | | | 4. Answer | | 3. Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 1: Relaying oftheDiametermessage including the header fields. Hop-by-Hop Identifiermessages TheHop-by-Hop Identifier field is four octets, and aids in matching requests and replies. The sender MUST ensure that the Hop-by-Hop identifierexample provided in Figure 1 depicts a requestor indication messageissued from NAS, which islocally unique (toan access device, for thesender) at any given time, and MAY attemptuser bob@abc.com. Prior toensure that the number is unique across reboots. The sender of an Answer or Failed Indication message MUST ensure thatissuing theHop- by-Hop Identifier field containsrequest, NAS performs a Diameter route lookup, using "abc.com" as thesame valuekey, and determines thatwas found inthecorresponding request. The Hop-by-Hop identifier is normally a monotonically increasing number, whose start value was randomly generated. Amessageof type Answer or Failed Indication thatisreceived with an unknown Hop-by-Hop Identifier MUSTto bediscarded. End-to-End Identifier Unlike the Hop-by-Hop Identifier, the End-to-End Identifier is used by serversrelayed todetect duplicate messages, and proxies MUST NOT modify this field. The sender of a request, answer, indication or failed indication message MUST insertDRL, which is alocally unique value in this field. The combination ofDiameter Relay. DRL performs theSession-Id AVPsame route lookup as NAS, andthis field is used to detect duplicates. Arelays the messageof type Answer or failed Indicationto HMS, which isreceived with a previously seen End-to-End Identifier, and is toabc.com's Home Diameter Server. HMS identifies that the request can be locallyconsumed (meaning thatsupported (via theDestination-FQDN AVP containsrealm), processes thelocal node's identity) SHOULD be silently discarded. Command-Code The Command-Code field is four octets,authentication and/or authorization request, andis used in order to communicate the command associatedreplies withthe message. The 32-bit address spacean answer, which ismanaged by IANA (see section 16.2). Vendor-ID In the event that the Command-Code field contains a vendor specific command, the four octet Vendor-ID field contains the IANA assigned "SMI Network Management Private Enterprise Codes" [2] value. If the Command-Code field contains an IETF standard Command, the Vendor-ID field MUST be set to zero (0). AVPs AVPs are a method of encapsulating information relevantrouted back totheNAS using Diametermessage. See section 4. for more information onrouting AVPs. Since Relays do not perform any application level processing, they provide relaying services for all Diameter applications, and Calhoun et al. expiresOctoberDecember 2001 [Page 17] Internet-DraftMayJune 20013.1 Command Codes There are two different command types supported intherefore MUST advertise the Relay Application Identifier. 2.5.2 Proxy Agents Similarly to Relays, Proxy agents route Diameterprotocol; Request/Answer and Indication messages. Each command type is assigned a command code, andmessages using thesub-typeDiameter Routing Table. However, they differ since they modify messages to implement policy enforcement. This requires that proxies maintain the state of their downstream peers (e.g.request or answer, Indication or Indication failure)access devices) to enforce resource usage, provide admission control, and provisioning. It isidentified viaimportant to note that although proxies MAY provide a value-add function for NASes, they do not allow access devices to use themessage flags fieldDiameter End-to-End Security application, since modifying messages breaks end-to-end authentication. Proxies MAY be used in call control centers or access ISPs that provide outsourced connections, they can monitor theDiameter header. Every Diameter message MUST contain a command codenumber and types of ports inits header's Command-Code field, which is useduse, and make allocation and admission decisions according todetermine the actiontheir configuration. Proxies thatiswish to limit resources MUST betaken for a particular message. The following Command Codes are defined in the Diameter base protocol: Command-Name Abbrev. Code Reference -------------------------------------------------------- Accounting-Answer ACA 271 13.2 Accounting-Poll-Ind API 273 13.4 Accounting-Request ACR 271 13.1 Accounting-Status-Ind ASI 279 13.3 Device-Reboot-Ind DRI 257 6.2 Device-Status-Ind DSI 282 9.2.1 Device-Watchdog-Answer DWA 280 7.2 Device-Watchdog-Req DWR 280 7.1 Session-Termination-Ind STI 274 10.8.1 Session-Termination- STR 275 10.8.2 Request Session-Termination- STA 275 10.8.3 Answer 3.2 Command Code ABNF specification Every Command Code defined MUST include a corresponding ABNF specification, which is used to define the AVPs that MUST, MAYstateful, and all Proxies MUST maintain transaction state. Proxy agents MUST NOT allow end-to-end security to bepresent. The following format is usedestablished between two peers if it expects to modify ANY non-routing AVP in messages exchanged between thedefinition: command-def = command-name "::=" diameter-message diameter-name = ALPHA *(ALPHA / DIGIT / "-") command-name = diameter-name ; The command-name haspeers. 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 use the Diameter routing table to determine where a given request should beCommand name, ; definedforwarded to. When a request is received by a Diameter redirector, a special answer is created, which includes the identity of the Diameter server(s) the originator of the request should contact directly. Redirectors are useful in scenarios where thebase or extendedDiameter; specifications. diameter-message = header [ *fixed] [ *required] [ *optional] [ *fixed] header = "<Diameter-Header:" command-id, message-flags">"routing configuration needs to be centralized. An example is a redirector that provides services to all members of a consortium, but does not wish to be burdened with relaying all messages between domains. This scenario is advantageous since it does not require that the consortium provide routing updates to its members when changes are Calhoun et al. expiresOctoberDecember 2001 [Page 18] Internet-DraftMayJune 2001fixed = [qual] "<" avp-spec ">"made to a member's infrastructure. Since redirectors do not relay messages, and only return an answer with the information necessary for Diameter agents to communicate directly, they do not modify messages, and therefore MUST NOT maintain session state. Further, since redirectors never relay requests, they are not required= [qual] "{" avp-spec "}" optional = [qual] "[" avp-name "]" ;to maintain transaction state. +------+ | | | 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 Theavp-nameexample provided in Figure 2 depicts a request issued from the'optional' rule cannot ; evaluateaccess device, NAS, for the user bob@abc.com. The message is forwarded by the NAS toany AVP Nameits relay, DRL, whichis included ;does not have a routing entry in its Diameter Routing Table for abc.com. DRL has afixed or required rule. qual = [min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ; The absence of any qualifiers impliesdefault route configured to DRD, which is a redirector thatone ; and only one such AVP MUST be present. ; ; NOTE: "[" and "]" havereturns adifferent meaning ; than in ABNF (see the optional rule, above). ; These braces cannot be usedredirect notification toexpress ; optional fixed rules (suchDLR, asan optional ; ICV atwell as HMS' contact information. Upon receipt of theend.) To do this, the convention ; is '0*1fixed'. min = 1*DIGIT ; The minimum number of timesredirect notification, DRL establishes a transport connection with HMS, if one doesn't already exist, and forwards theelement may ; be present. max = 1*DIGIT ; The maximum number of timesrequest to it. Since Redirectors do not perform any application level processing, they provide relaying services for all Diameter applications, and therefore MUST advertise theelement may ; be present. avp-spec = diameter-name ; The avp-spec hasRelay Application Identifier. 2.5.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 bean AVP Name, defined ; in the base or extendedused as aggregation servers to communicate with a Diameter; specifications. avp-name = avp-spec | "AVP" ; The string "AVP" standsinfrastructure, while allowing for*any* arbitrary ; AVP Name, which does not conflict with the ; required or fixed position AVPs defined in ;thecommand code definition. The following is a definition ofembedded systems to be migrated at afictitious command code: Example-Request ::= < Diameter-Header: 9999999, E > { User-Name } * { Origin-FQDN } * [ AVP ]slower pace. Calhoun et al. expiresOctoberDecember 2001 [Page 19] Internet-DraftMayJune 20013.3Given that the DiameterCommand Naming Conventions The following conventions are required forprotocol introduces thenamingconcept ofDiameter messages. Diameter commands typically start with an object name,long-lived authorized sessions, translation agents MUST be stateful andend with oneMUST maintain transaction state. Translation of messages can only occur if thefollowing verbs: 3.3.1 Request/Answer The Request/Answer message pair is used when a Diameter node requests that some action be performed by a peer (e.g. authorize a user, terminateagent recognizes the application of asession). The corresponding messageparticular request, and therefore MUSTcontain either a positive or negative result code, informing the requester whether the request was successful or not. Other information MAY also be returned in the Answer message.only advertise their locally supported applications. +------+ ---------> +------+ ---------> +------+ | | RADIUS Requestand| | Diameter Request | | | NAS | | TLA | | HMS | | | RADIUS Answermessages share the same command code,| | Diameter Answer | | +------+ <--------- +------+ <--------- +------+ mno.net mno.net abc.com Figure 3: Translation of RADIUS to Diameter 2.6 Diameter Agent Discovery Allowing for dynamic Diameter agent discovery will make it possible for simpler and more robust deployment of AAA services. In order to promote interoperable implementations of Diameter agent discovery, themessage flags field in thefollowing mechanisms are described. These are based on existing IETF standards. There are two cases where Diameterheaderagent discovery may be performed. The first isusedwhen a Diameter client needs toidentify whetherdiscover amessage is the request or answer. 3.3.2 Indication/Failed Indication Indicationfirst-hop Diameter agent. The second case isused eitherwhenthe node wishesa Diameter agent needs toinformdiscover another agent - for further handling of a Diameter operation. In both cases, thepeer that an event occurred, orfollowing 'search order' isrequesting that a particular functionrecommended: 1. The Diameter implementation consults its list of static (manual) configured Diameter agent locations. These will beperformed, but is not expecting a response. A successfully processed Indication message is not responded to. However, should an Indication message cause an error, a response is returned with the 'I' bit clearedused if they exist andthe 'F' bit set in therespond. 2. The Diameterheader's message flags field. 4.0implementation uses SLPv2 [28] to discover DiameterAVPs 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.services. Theeffect of such an AVP is specific, andDiameter service template [32] isspecifiedincluded ineach case by the AVP description. Each AVP of type OctetString MUSTAppendix A. It is recommended that SLPv2 security bepaddeddeployed (this requires distributing keys toalign on a 32 bit boundary, while other AVP types align naturally. NULL bytes are addedSLPv2 agents.) This is discussed further in Appendix A. SLPv2 will allow Diameter implementations to discover theend of the AVP Data field till a word boundary is reached. The lengthlocation ofthe padding is not reflectedDiameter agents in theAVP Length field. 4.1 AVP Headerlocal 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. Calhoun et al. expiresOctoberDecember 2001 [Page 20] Internet-DraftMayJune 2001 3. Thefields inDiameter implementation uses DNS to request theAVP header MUST be sentSRV RR [33] for the '_diameter._sctp' and/or '_diameter._tcp' server innetwork byte order.a particular domain. Theformat ofDiameter implementation has to know in advance which domain to look for an Diameter agent in. This could be deduced, for example, from 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AVP Length | Reserved |P|r|V|r|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-ID (opt) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+-+-+-+-+ AVP Code The AVP Code identifies'realm' in a NAI that an Diameter implementation needed to perform an Diameter operation on. Diameter allows AAA peers to protect theattribute uniquely. The first 256 AVP numbers are reserved for backward compatibility with RADIUSintegrity andareprivacy of communication as well as tobe interpretedperform end-point authentication. Still, it is prudent to employ DNS Security asper NASREQ [7]. AVP numbers 256 and abovea precaution when using DNS SRV RRs to look up the location of a Diameter agent. [34, 35, 36] 2.7 Diameter Identity Encoding Several Diameter AVPs are usedfor Diameter, which are allocated by IANA (see section 16.1). AVP Length The AVP Length field is two octets, and indicatesto include a node's identity, such as thelengthDestination-Host, Origin-Host, Route-Record, etc. The contents ofthis AVP includingsuch AVPs follow theAVP Code, AVP Length, AVP Flags, Reserved,Uniform Resource Identifiers (URI) syntax [29] rules specified below: Diameter-Identity = [protocol] fqdn [ port ] [ transport ] protocol-name = ( "diameter" | "radius" | "tacacs+" ) protocol = protocol-name "://" ; If absent, theVendor-ID field (if present) anddefault is "diameter://" fqdn = Fully Qualified Host Name port = ":" 1*DIGIT ; If absent, theAVP data.default Diameter port (TBD) is assumed. transport = ";transport=" ( "tcp" | "sctp" | "udp") ; Ifa messageabsent, the default SCTP [26] protocol isreceived with an invalid attribute length,assumed. ; UDP is ONLY used when themessage SHOULD be rejected. AVP Flagsprotocol is set to RADIUS TheAVP Flags field informs thefollowing are examples of valid Diameter hosthow each attribute must be handled. Note that subsequentidentities: host.abc.com:6666;transport=tcp diameter://host.abc.com diameter://host.abc.com:6666 diameter://host.abc.com;transport=tcp diameter://host.abc.com:6666;transport=tcp radius://host.abc.com:1813;transport=udp Calhoun et al. expires December 2001 [Page 21] Internet-Draft June 2001 3.0 Diameterextensions MAY define bits to be used withinHeader A summary of theAVP Header, and an unrecognized bit should be considered an error.Diameter header format is shown below. The'r' and the reserved bitsfields areunused and shouldtransmitted 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 r r 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 to0 and ignored on receipt, while the 'P' bit is defined in [11].1 to indicate Diameter Version 1. Message Length The'M' Bit, known as the Mandatory bit,Message Length field is two octets and indicateswhether supportthe length of theAVPDiameter message including the header fields. Command Flags The Command Flags field isrequired.eight bits. The following bits are assigned: R(equest) - Ifan AVP is received by a Home server or NAS with the 'M' bit enabled and the receiver does not support the AVP,set, the messageMUST be rejected. If such an AVPisreceived byaProxy or Redirect Server,request. If cleared, the message is an answer. r(eserved) - this flag bit is reserved for future use, and MUST beforwardedset toits logical destination,zero. Command-Code The Command-Code field is three octets, andMUST NOT be rejected. Itis used in order to communicate theresponsibility ofcommand associated with theoriginator of a message that is rejected for this purpose to correct the error. AVPs without the 'M' bit enabled are informational only and a receiver that receives a message with such an AVP that is not supported MAY simply ignore the AVP. Calhoun et al. expires October 2001 [Page 21] Internet-Draft May 2001message. The'V' bit, known as the Vendor-Specific bit, indicates whether the optional Vendor-ID field24-bit address space ispresent in the AVP header. When set the AVP Code belongs tomanaged by IANA (see section 15.2). Vendor-ID In thespecific vendor code address space. Unless otherwise noted, AVPs will haveevent that thefollowing default AVP FlagsCommand-Code fieldsettings: The 'M' bit MUST be set. The 'V' bit MUST NOT be set. 4.2 Optional Header Elements The AVP Headercontainsone optional field. This field is only present if the respective bit-flag is enabled. Vendor-ID The Vendor-ID field is present if the 'V' bit is set ina vendor specific command, theAVP Flags field. The optionalfour octet Vendor-ID field contains the IANA assigned "SMI Network Management Private Enterprise Codes" [2]value, encoded in network byte order.value. If the Command-Code field contains an IETF standard Calhoun et al. expires December 2001 [Page 22] Internet-Draft June 2001 Command, the Vendor-ID field MUST be set to zero (0). Any vendor wishing to implement a vendor-specific Diameterextensioncommand MUST use their own Vendor-ID along with their privately managedAVPCommand- Code address space, guaranteeing that they will not collide with any other vendor'sextensions,vendor-specific command, nor with future IETFextensions. A vendor ID value of zero (0) corresponds to the IETF adopted AVP values, as managed by the IANA. Since the absence of the vendor IDapplications. Hop-by-Hop Identifier The Hop-by-Hop Identifier fieldimpliesis four octets, and aids in matching requests and replies. The sender MUST ensure that theAVPHop-by-Hop identifier inquestiona request isnot vendor specific, implementations SHOULD not uselocally unique (to thezero (0) vendor ID. 4.3 AVP Data Formats The Data field is zero or more octetssender) at any given time, andcontains information specificMAY attempt to ensure that theAttribute. The format and length of the Data fieldnumber isdetermined by the AVP Code and AVP Length fields.unique across reboots. Theformatsender of an Answer message MUST ensure that theDataHop-by-Hop Identifier fieldMAY be one of the following data types. The interpretation of the values depends oncontains thespecification ofsame value that was found in theAVP. For example,corresponding 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 anOctetString mayunknown Hop-by-Hop Identifier MUST be discarded. End-to-End Identifier Unlike the Hop-by-Hop Identifier, the End-to-End Identifier is used totransmit human readable string datadetect duplicate messages, andUnsigned32 may be used to transmitrelay agents MUST NOT modify this field. The sender of atime value. Conventions for these common interpretations are described below. OctetStringrequest or answer message MUST insert a locally unique value in this field. Thedata contains arbitrary datacombination ofvariable length. Unless otherwise noted,the Origin-Host AVPLengthand this fieldMUST be set to at least 9 (13 if the 'V' bitisenabled). Dataused totransmit (human Calhoun et al. expires October 2001 [Page 22] Internet-Draft May 2001 readable) character string data uses the UTF-8 [24] character setdetect duplicates. An Answer message which is received with a previously seen End- to-End Identifier, and isNOT NULL-terminated. The minimum Length field MUSTto be9, but can be set to any value up to 65504 bytes. AVP Values of this typelocally consumed (meaning thatdo not align on a 32-bit boundary MUST have the necessary padding. Address 32 bit (IPv4) [17] or 128 bit (IPv6) [16] address, most significant octet first. The format of the address (IPv4 or IPv6) is determined by the length. If the attribute value is an IPv4 address,the Destination-Host AVPLength field MUST be 12 (16 if 'V' bit is enabled), otherwisecontains theAVP Length field MUSTlocal node's identity) SHOULD besetsilently discarded. AVPs AVPs are a method of encapsulating information relevant to24 (28 ifthe'V' bit is enabled)Diameter message. See section 4. forIPv6 addresses. Integer32 32 bit signed value, in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bitmore information on AVPs. 3.1 Command Codes Each command Request/Answer pair isenabled). Integer64 64 bit signed value, in network byte order. The AVP Length field MUST be set to 16 (20 ifassigned a command code, and the'V' bitsub-type (e.g. request or answer) isenabled). Unsigned32 32identified via the 'R' bitunsigned value,innetwork byte order. The AVP Lengththe Command Flags field of the Diameter header. Every Diameter message MUSTbe setcontain a command code in its header's Command-Code field, which is used to12 (16 ifdetermine the'V' bitaction that isenabled). Unsigned32 values usedtotransmit time data containsbe taken for a particular message. The following Command Codes are defined in thefour most significant octets returned from NTP [18], in network byte order. Unsigned64 64 bit unsigned value, in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). Float32 This represents floating point values of single precision as described by [30]. The 32 bit value is transmitted in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled). Float64 This represents floating point values of double precision as described by [30]. The 64 bit value is transmitted in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). Float128 This represents floating point values of quadruple precision as described by [30]. The 128 bit value is transmitted in networkDiameter base protocol: Calhoun et al. expiresOctoberDecember 2001 [Page 23] Internet-DraftMayJune 2001byte order. The AVP Length fieldCommand-Name Abbrev. Code Reference -------------------------------------------------------- Abort-Session-Request ASR 274 10.8.1 Abort-Session-Answer ASA 274 10.8.2 Accounting-Answer ACA 271 12.2 Accounting-Poll-Ind API 273 12.3 Accounting-Request ACR 271 12.1 Capabilities-Exchange- CER 257 6.2 Request Capabilities-Exchange- CEA 257 6.3 Answer Message-Reject-Answer MRA 282 9.2 Device-Watchdog-Answer DWA 280 7.2 Device-Watchdog-Request DWR 280 7.1 Session-Termination- STR 275 10.7.1 Request Session-Termination- STA 275 10.7.2 3.2 Command Code ABNF specification Every Command Code defined MUSTbe setinclude a corresponding ABNF specification, which is used to24 (28 ifdefine the'V' bit is enabled). Grouped The Data field is specified as a sequence of AVPs. Each of theseAVPsfollows - in the order in which they are specified - including their headersthat MUST, MAY andpadding.MUST NOT be present. TheAVP Length fieldfollowing format isset to 8 (12 if the 'V' bit is enabled) plusused in thetotal length of all included AVPs, including their headers and padding. 4.4 Grouped AVP Valuesdefinition: command-def = command-name "::=" diameter-message diameter-name = ALPHA *(ALPHA / DIGIT / "-") command-name = diameter-name ; TheDiameter protocol allows AVP values of type 'Grouped.' This implies that the Data field is actually a well defined sequence of AVPs. It is possible to include an AVP with a Grouped type within a Grouped type, that is,command-name has tonest them. AVPs within an AVP of type Grouped have the same padding requirements as non-Grouped AVPs, as defined in section 4.0. Grouped type AVP specifications include an ABNF grammar [31] specifying the required sequence of AVPs. Grouped AVP values MUSTbe Command name, ; defined in thespecified sequence and MUST NOT include other AVP values besides those specified by the Grouped AVP grammar. 4.4.1 Example AVP with a Grouped Data typebase or extended Diameter ; specifications. diameter-message = header [ *fixed] [ *required] [ *optional] [ *fixed] header = "<Diameter-Header:" command-id [r-bit] ">" command-id = 1*DIGIT ; TheExample AVP (AVPCommand Code999999) is of type Grouped and is usedassigned toclarify how Grouped AVP values work. The Grouped Data field hasthefollowing ABNF grammar: example-avp-val = Origin-FQDN Host-IP-Address Origin-FQDNcommand r-bit = ", REQUEST" ;See Section 5.1 Host-IP-Address =If present, the 'R' bit in the Command ;See Section 6.2.4 An Example AVP withFlags is set, indicating that theGrouped Data Origin-FQDN = "example.com", Host-IP-Address = "10.10.10.10" would be encodedmessage ; is a request, asfollows:opposed to an answer. fixed = [qual] "<" avp-spec ">" Calhoun et al. expiresOctoberDecember 2001 [Page 24] Internet-DraftMayJune 20010 1 2 3 4 5 6 7 +-------+-------+-------+-------+-------+-------+-------+-------+ 0 | Example AVP Header (AVP Coderequired =999999), Length[qual] "{" avp-spec "}" optional =40 | +-------+-------+-------+-------+-------+-------+-------+-------+ 8 | Origin-FQDN[qual] "[" avp-name "]" ; The avp-name in the 'optional' rule cannot ; evaluate to any AVPHeader (AVP Code = 264), LengthName which is included ; in a fixed or required rule. qual =19 | +-------+-------+-------+-------+-------+-------+-------+-------+ 16 | 'e' | 'x' | 'a' | 'm' | 'p' | 'l' | 'e' | '.' | +-------+-------+-------+-------+-------+-------+-------+-------+ 24 | 'c' | 'o' | 'm' |Padding| Host-IP-Addr[min] "*" [max] ; See ABNF conventions, RFC 2234 section 6.6. ; The absence of any qualifiers implies that ; one and only one such AVPHeader | +-------+-------+-------+-------+-------+-------+-------+-------+ 32 | (AVP CodeMUST 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 =257), Length1*DIGIT ; The minimum number of times the element may ; be present. max =12 | 0x0a | 0x0a | 0x0a | 0x0a | +-------+-------+-------+-------+-------+-------+-------+-------+ 4.5 Diameter Base Protocol AVPs1*DIGIT ; Thefollowing table describesmaximum number of times theDiameter AVPselement may ; be present. avp-spec = diameter-name ; The avp-spec has to be an AVP Name, defined ; in the baseprotocol, their AVP Code values, types, possible flag values and whether the AVP MAY be encrypted. +---------------------+ | AVPor 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. The following is a definition of a fictitious command code: Example-Request ::= < Diameter-Header: 9999999, REQUEST > { User-Name } * { Origin-Host } * [ AVP ] 3.3 Diameter Command Naming Conventions Calhoun et al. expires December 2001 [Page 25] Internet-Draft June 2001 The following conventions are required for the naming of Diameter messages. Diameter commands typically start with an object name, and end with either the Request or Answer verb. The Request/Answer message pair is used when a Diameter node requests that some action be performed by a peer (e.g. authorize a user, terminate a session). The corresponding answer MUST contain either a positive or negative result code, informing the 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 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 AVP of type OctetString MUST be padded to align on a 32 bit boundary, while other AVP types align naturally. NULL bytes are added to the end of the AVP Data field till a word boundary is reached. The length of the padding is not reflected in the AVP Length field. 4.1 AVP Header The fields in the AVP header MUST be sent in network byte order. The format of 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 ... +-+-+-+-+-+-+-+-+ Calhoun et al. expires December 2001 [Page 26] Internet-Draft June 2001 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 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 15.1). AVP Flags The AVP Flags field informs the receiver how each attribute must be handled. Note that subsequent Diameter applications MAY define bits to be used within the AVP Header, and an unrecognized bit should be considered an error. The 'r' and the reserved bits are unused and should be set to 0 and ignored on receipt, while 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' bit set is received by a Diameter node, the message MUST be rejected. Diameter Relay and Redirector agents MUST NOT reject messages with unrecognized AVPs. A Diameter node that sets the 'M' bit in an AVP that is not defined in a given message's ABNF is at fault if the message is rejected. In order to provide service to the user, the node at fault MUST re-issue a request either without the AVP, or without setting its 'M' bit. A Diameter node that rejects a message due to an unrecognized AVP with the 'M' bit set, and the AVP in question is defined in the message's ABNF is at fault. In most cases the initiator of the 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 is not supported MAY simply ignore the AVP. The 'V' bit, known as the Vendor-Specific bit, indicates whether the optional Vendor-ID field is present in the AVP header. 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 be set. The 'V' bit MUST 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, Calhoun et al. expires December 2001 [Page 27] Internet-Draft June 2001 the Vendor-ID field (if present) and the AVP data. If a message is received with an invalid attribute length, the message SHOULD be rejected. 4.2 Optional Header Elements The AVP Header contains one optional field. This field is only present if the respective bit-flag is enabled. Vendor-ID The Vendor-ID field is present if the 'V' bit is set in the AVP Flags field. The optional four octet Vendor-ID field contains the IANA 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 with their 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 the IETF adopted AVP values, as managed by the IANA. Since the absence of the vendor ID field implies that the AVP in question is not vendor specific, implementations SHOULD not use the zero (0) vendor ID. 4.3 AVP Data Formats The Data field is zero or more octets and contains information specific to the Attribute. The format and length of the Data field is determined by the AVP Code and AVP Length fields. The format of the Data field MAY be one of the following data types. The interpretation of the values depends on the specification of the AVP. For example, an OctetString may be used to transmit human readable string data and Unsigned32 may be used to transmit a time value. Conventions for these common interpretations are described below. OctetString The data contains arbitrary data of variable length. Unless otherwise noted, the AVP Length field MUST be set to at least 8 (12 if the 'V' bit is enabled). Data used to transmit (human readable) character string data uses the UTF-8 [24] character set and is NOT NULL-terminated. The minimum Length field MUST be 9, but can be set to any value up to 65504 bytes. AVP Values of this type that do not align on a 32-bit boundary MUST have the necessary padding. Calhoun et al. expires December 2001 [Page 28] Internet-Draft June 2001 Address 32 bit (IPv4) [17] or 128 bit (IPv6) [16] address, most significant octet first. The format of the address (IPv4 or IPv6) is determined by the length. If the attribute value is an IPv4 address, the AVP Length field MUST be 12 (16 if 'V' bit is enabled), otherwise the AVP Length field MUST be set to 24 (28 if the 'V' bit is enabled) for IPv6 addresses. Integer32 32 bit signed value, in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled). Integer64 64 bit signed value, in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). Unsigned32 32 bit unsigned value, in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled). Unsigned32 values used to transmit time data contains the four most significant octets returned from NTP [18], in network byte order. Unsigned64 64 bit unsigned value, in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). Float32 This represents floating point values of single precision as described by [30]. The 32 bit value is transmitted in network byte order. The AVP Length field MUST be set to 12 (16 if the 'V' bit is enabled). Float64 This represents floating point values of double precision as described by [30]. The 64 bit value is transmitted in network byte order. The AVP Length field MUST be set to 16 (20 if the 'V' bit is enabled). 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 to 24 (28 if the 'V' bit is enabled). Grouped The Data field is specified as a sequence of AVPs. Each of these AVPs follows including their headers and padding. The Calhoun et al. expires December 2001 [Page 29] Internet-Draft June 2001 AVP Length field is set to 8 (12 if the 'V' bit is enabled) plus the total length of all included AVPs, including their headers and padding. 4.4 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. Every Grouped AVP defined MUST include 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 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. ; Calhoun et al. expires December 2001 [Page 30] Internet-Draft June 2001 ; 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 ; 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.4.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" Calhoun et al. expires December 2001 [Page 31] Internet-Draft June 2001 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 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 December 2001 [Page 32] Internet-Draft June 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.5 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 December 2001 [Page 33] Internet-Draft June 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----| Accounting- 48214.213.2 Unsigned32 | M | P | | V | Y | Interim-Interval | | | | | | Accounting- 50 13.5 OctetString| M | P | | V | Y | Multi-Session-Id | | | | | | Accounting- 48514.313.3 Unsigned32 | M | P | | V | Y | Record-Number | | | | | | Accounting- 48014.113.1 Unsigned32 | M | P | | V | Y | Record-Type | | | | | | Accounting- 4414.513.4 OctetString| M | P | | V | Y | Session-Id | | | | | |Accounting-State 486 14.4 Unsigned32 | M | P | | V | Y | Acct-Extension-Acct- 2596.2.76.10 Integer32 | M | | | V |YN |IdApplication-Id | | | | | |Auth-Extension-Auth- 2586.2.36.6 Integer32 | M | | | V |YN |IdApplication-Id | | | | | | Authorization- 291 10.4 Unsigned32 | M | | | V | N | Lifetime | | | | | |Destination-FQDNDestination-Host 2935.35.6 OctetString| M | | | V |YN | Destination- 28311.4.75.7 OctetString| M | | | V | N | Realm | | | | | |DSI-Event 297 9.2.2 Unsigned32 | M | | | | N |Error-Message 2819.1.29.3 OctetString| | | | V | N |-----------------------------------------|----+-----+----+-----|----| Calhoun et al. expires October 2001 [Page 25] Internet-Draft May 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | | |SHLD| MUST|MAY | Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----|Error-Reporting- 2949.1.39.4 OctetString| | | | V |YN |FQDNHost | | | | | | Failed-AVP 2799.3 OctetString| M | | | | Y | Failed-Vendor-Id 2629.5Unsigned32 |OctetString| M | | | V | Y | Firmware- 2676.2.26.5 Unsigned32 | | | | V,M |YN | Revision | | | | | | Host-IP-Address 2576.2.46.7 Address | M | | | V | N |Max-Wait-Time 295 10.7 Unsigned32 | M | | | V | N | Offending-AVP 271 9.4 OctetString| M | | | V | N | Origin-FQDNOrigin-Host 2645.15.4 OctetString| M | | | V | N | Origin-Realm 2965.25.5 OctetString| M | | | V | N | Product-Name 2696.2.66.9 OctetString| | | | | N |Proxy-AddressProxy-Host 28011.4.55.8.3 Address | M | | | V | N | Proxy-Info 28411.4.45.8.2 Grouped | M | | | V | N | Proxy-State 3311.4.65.8.4 OctetString| M | | | V | N | Redirect-Host 29211.3.1 Grouped |5.9 OctetString| M | | | V | Y |Redirect-Host- 278 11.3.2 AddressResult-Code 268 9.1 Unsigned32 | M | | | V |Y | Address |N | Route-Record 282 5.8.1 OctetString| M | | | V |Redirect-Host- 277 11.3.3 Unsigned32N | Session-Id 263 10.3 OctetString| M | | | V | Y |PortSession-Timeout 27 10.5 Unsigned32 | M | | | V | N |Result-Code 268 9.1.1Origin-State-Id 278 10.11 Unsigned32 | M | | | V | N |Route-Record 282 11.4.3 OctetString|Supported- 265 6.8 Unsigned32 | M | | | V | N |Session-Id 263 10.3 OctetString| MVendor-Id | | | |Y|Session-Timeout 27 10.5 Unsigned32|M-----------------------------------------|----+-----+----+-----|----| Calhoun et al. expires December 2001 [Page 34] Internet-Draft June 2001 +---------------------+ | AVP Flag rules | |----+-----+----+-----|----+ AVP Section | |Y|SHLD| MUST|MAY |Supported- 265 6.2.5Attribute Name Code Defined Data Type |MUST| MAY | NOT| NOT|Encr| -----------------------------------------|----+-----+----+-----|----| Termination- 295 10.9 Unsigned32 | M | | | V | N |Vendor-IdCause | | | | | | User-Name 1 10.6 OctetString| M | | | V | Y | Vendor-Id 2666.2.16.4 Unsigned32 | M | | | V,M |YN | Vendor-Specific- 260 6.11 Grouped | M | | | V,M | N | Application-Id -----------------------------------------|----+-----+----+-----|----| 5.0Message ForwardingDiameter message processing All Diameter messages MUST include theOrigin-FQDN and Origin-Realm AVPs. These AVPs are used to identify the source of the message. When responding to a request or indication (via a failed indication) message, the Origin-FQDNOrigin-Host and Origin-RealmAVPsAVPs, which arereplaced withused to identify thelocal node's information.source of the message. The Destination-Host AVP MAY be present in requests, and MUST be present in answers. TheDestination-FQDNDestination-Host AVP is used when the destination of the message is fixed,such as: Calhoun et al. expires October 2001 [Page 26] Internet-Draft May 2001which includes: - Authentication requests that span multiple round trips - A Diameter message that uses a security mechanism that makes use of a pre-established session key shared between the source and the final destination of the message. - Server initiated messages that MUST be received by a specific Diameter client (e.g. access device), such as theSession- Termination-IndAbort- Session-Request message, which is used to request that a particular user's session be terminated.A message that includes the Destination-FQDN AVP containing the local hosts' identity is to be locally processed. Proxies receiving messages that contain the Destination-FQDNThe Destination-Realm AVP MUSTverify whether they are able to forward Diameter messages to the host specified in the AVP, andbe present ifso, MUST forwardthe messageto the host in question. Otherwise, theis routable. A messagerouting procedures described in section 11.0 MUST be followed. Unless otherwise specified, this section defines the Diameter AVPsthat MUST NOT beaddedrelayed, proxied or redirected MUST NOT include the Destination-Realm inall messages originated by a Diameter node (including nodes creating Answer messages). 5.1 Origin-FQDN AVPits ABNF. TheOrigin-FQDN AVP (AVP Code 264) isvalue oftype OctetString, encoded intheUTF-8 [24] format. ThisDestination-Realm AVPidentifies the endpoint which originated the Diameter message, i.e. the access device, home server, or broker. Proxy servers do not modify this AVP. All Diameter messages MUST includeMAY be extracted from theOrigin-FQDNUser-Name AVP,which containsor other application-specific methods. When a message is received, thehost name ofmessage is processed in theoriginator offollowing order: 1. If theDiametermessageand MUST follow the Fully Qualified Domain Name naming conventions. Note thatis destined for theOrigin-FQDN AVP may resolve to more than one address aslocal host, theDiameter peer may support more than one address. 5.2 Origin-Realm AVP The Origin-Realm AVP (AVP Code 296) is of type OctetString, encodedprocedures listed in section 5.1 are followed. 2. If theUTF-8 [24] format. This AVP containsmessage is intended for a Diameter peer with whom theRealm oflocal host is able to directly communicate with, theoriginator of any Diameter message. 5.3 Destination-FQDN AVP The Destination-FQDN AVP (AVP Code 293)procedures listed in section 5.2 are followed. This isof type OctetString, encodedknown as Message Forwarding. 3. The procedures listed inthe UTF-8 [24] format, and contains the Fully Qualifiedsection 5.3 are followed, which is known as Message Routing. Calhoun et al. expiresOctoberDecember 2001 [Page27]35] Internet-DraftMayJune 2001Domain Name (FQDN)4. If none of theintended recipient ofabove are successful, an answer is returned with themessage. This AVP MUST be presentResult-Code set to DIAMETER_UNABLE_TO_DELIVER. Note the processing rules contained inall unsolicited server initiated messages,this 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 bepresentin compliance with the protocol specification. 5.1 Processing Local Messages A requestor indication message, and MUSTis known to bepresent in Answer or failed Indication messages. The valuefor local comsumption when one of theDestination- FQDNfollowing conditions occur: - The Destination-Host AVPis set tocontains thevalue oflocal host's identity, - The Destination-Host AVP is not present, theOrigin-FQDNDestination-Realm AVPfound incontains amessage fromrealm the server is configured to process locally, and theintended target host. 6.0 Capabilities Exchange When twoDiameterpeers establishapplication is locally supported, or - The Destination-Realm AVP is not present. When atransport connection, they MUST sendrequest is locally processed, theDevice-Reboot-Ind message. This message has two purposes. First it allows a peer's identityfollowing procedures MUST be applied, in addition to any additional procedures that MAY bediscovered, and allows for capabilities exchange, such asdiscussed in thesupported protocol version number, andDiameter application defining thelocally supported extensions.command: - Thereceiver usessame Hop-by-Hop identifier in theextensions advertisedrequest is used inorder to determine whether it SHOULD send certain application-specific Diameter commands. A Diameter node MUST retainthesupported extensionsanswer. - The local host's identity is encoded inorder to ensure that unrecognized commands and/or AVPs are not sent to a peer. A receiverthe Origin-Host and Origin-Host AVPs. - The value ofa Device-Reboot-Ind message which does not have any extensionsthe Origin-Host AVP incommon withthesender MUST return a DSI message torequest is included in thepeeranswer's Destination-Host AVP. - The Result-Code AVP is added with its value indicating success or failure. - If theDSI-Event AVP set to DIAMETER_NO_COMMON_EXTENSION, and disconnectSession-Id is present in thetransport layer connection. The Device-Reboot-Ind messagerequest, it MUSTNOTbeproxied,included in the answer. - Any Route-Record orredirected. SinceProxy-Info AVPs in theDRI cannotrequest MUST beproxied, it is still possible that a upstream proxy receives a message for which it has no available peersadded tohandletheextension that corresponds toanswer message, in theCommand-Code. In such instances,same order they were present in theDevice-Status-Indrequest. When the local message isused (see Section 9.2.1) to informan answer, no additional procedures beyond those listed in thedownstreamspecific Diameter application are totake action. Withbe followed. 5.2 Message Forwarding Message forwarding is done using theexceptionDiameter Peer Table. The Diameter peer table contains all of theDevice-Reboot-Ind message, a message of type Request or Indicationpeers thatincludestheAuth-Extension-Id or Acct-Extension-Id AVPs, or a message with an extension-specific command code, MAY only be forwardedlocal node is able to directly communicate with. When ahost that has explicitly advertised support forrequest is received, and theextension (or has advertisedhost encoded in theWildcard Extension). 6.1 Extension Identifiers Each Diameter extension draft MUST have an IANA assigned Extension Identifier (see section 16.3). The base protocol does not require an Extension Identifier since its support is mandatory.Destination- Calhoun et al. expiresOctoberDecember 2001 [Page28]36] Internet-DraftMayJune 2001Extension Identifiers are communicated via two separate AVPs; Auth- Extension-Id and Acct-Extension-Id. The Auth-Extension-IdHost AVP isusedone that is present in the peer table, the message SHOULD be forwarded tocommunicate support fortheauthentication and authorization portion ofpeer. If the message received is anextension.answer, the host in the Destination- Host AVP is in the peer table, and there are no Route-Record AVPs in the message, the message MUST be forwarded to the peer. 5.2.1 Peer Table TheAcct-Extension-Id AVP, onDiameter Peer Table is used in message forwarding, and referenced by theother hand, communicates support forDomain Routing Table. A Peer Table entry contains theaccounting portionfollowing fields: - Peer name. The Fully Qualified Domain Name ofan extension.the peer. Thisseparation of AVPs allows a serverMAY be resolved locally, or known via the CER or CEA message. - Port Number. The port number the peer may be contacted on. - Protocol. Specifies whether TCP or SCTP is the protocol to use to communicatethat itwith the peer. - TLS Enabled. Specifies whether TLS iswilling to accept only accounting messages for a given extension. The following Extension Identifier values are defined: NASREQ 1 [7] End-to-End Security 2 [11] Resource Management 3 [29] Mobile-IP 4 [10] Wildcard Extension 0xffffffff Servers acting as Redirect or Proxy servers (see Section 11.0) MAY wishtoeither advertise all supported extensions, orbe used when communicating with the peer. 5.3 Message Routing Diameter request message routing is done via realms. A Diameter message that is proxyable MUST include the target realm in thewildcard extension.Destination-Realm AVP. Thereceiverrealm MAY be retrieved from the User-Name AVP, which is in the form of awildcard extension MUST assume thatNetwork Access Identifier (NAI). The realm portion of thesender supports all extensions. Proxy servers are responsible for finding a downstream server that supportsNAI is inserted in theextensionDestination-Realm AVP. Diameter agents have a list of locally supported realms, and MAY have aparticular message. If none can be found,list of externally supported realms. When aDSI messagerequest isreturned with the DSI-Event AVP set to DIAMETER_UNABLE_TO_DELIVER. 6.2 Device-Reboot-Ind (DRI) Command The Device-Reboot-Ind (DRI), indicated by the Command-Code set to 257 andreceived that includes a realm that is not locally supported, the messageflags' 'I' bit set,issentrouted toinform athe peerthat a reboot has, or will, occur. When Diameterconfigured in the Domain Routing Table table (see section 5.3.1). 5.3.1 Realm-Based Routing Table All Realm-Based routing lookups are performed against what isrun over SCTP [26], which allows for connectionscommonly known as the Domain Routing Table (see section 16.0). A Domain Routing Table Entry contains the following fields: - Domain Name. The Domain Name is analogous tospan multiple interfaces, hence multiple IP addresses,theDevice- Reboot-Ind message MUST contain one Host-IP-Address AVP for each potential IP addressrealm portion of the NAI. This is the field thatMAY be locallyis typically usedwhen transmitting Diameter messages. If a Diameter node receivesas aDRI message that resultsprimary key inan error, the message MUST be returned withthe'F' bit set, androuting table lookups. Note that some implementations perform their lookups based on longest-match- from-the-right on the'I' bit cleared. Message Formatrealm rather than requiring an exact match. Calhoun et al. expiresOctoberDecember 2001 [Page29]37] Internet-DraftMayJune 2001<Device-Reboot-Ind> ::= < Diameter Header: 257, I > { Origin-FQDN } { Origin-Realm } 1* { Host-IP-Address } { Vendor-Id } { Product-Name } * [ Supported-Vendor-Id ] * [ Auth-Extension-Id ] * [ Acct-Extension-Id ] [ Destination-FQDN ] [ Firmware-Revision ] * [ AVP ] 6.2.1 Vendor-Id AVP The Vendor-Id AVP (AVP Code 266)- Application Identifier. It isof type Unsigned32 and contains the IANA "SMI Network Management Private Enterprise Codes" [2] value assignedpossible for a routing entry to have a different destination based on thevendorAcct-Application-Id (for accounting messages) or Auth-Application-Id (for non- accounting messages) of the message. 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 message should be treated. The following actions are supported: 1. LOCAL - Diameterdevice. In combinationmessages that resolve to a routing entry with theSupported-Vendor-Id AVP (section 6.2.5),Local Action set to Local can be satisfied locally, and do not need to be routed to another server. 2. RELAY - All Diameter messages that fall within thisMAYcategory MUST beused in orderrouted toknow which vendor specific attributes maya next hop server, without modifying any non-routing AVPs. See sections 5.3.3 and 5.3.4 for relaying guidelines 3. PROXY - All Diameter messages that fall within this category MUST besentrouted to a next hop server. The local server MAY apply its local policies to the message by including new AVPs to thepeer. It is also envisionedmessage prior to routing. See sections 5.3.3 and 5.3.4 for relaying guidelines. 4. REDIRECT - Diameter messages that fall within this category MUST have thecombinationidentity of theVendor-Id, Product-Name (section 6.2.6)home Diameter server(s) appended, and returned to theFirmware-Revision (section 6.2.2) AVPs MAY provide very useful debugging information. A Vendor-Id valuesender ofzero intheDRI is reserved and indicates thatmessage. See section 5.3.2 for redirect guidelines. - Server Identifier - One or more servers theDiameter peermessage is to be routed to. These servers MUST also be present in theexperimental or concept stage and that an IANA Private Enterprise Number has yetPeer table. When the Local Action is set to RELAY or PROXY, this field contains the identity of the server(s) the message must beobtained byrouted to. When theimplementor. 6.2.2 Firmware-Revision AVP The Firmware-Revision AVP (AVP Code 267)Local Action field is set to REDIRECT, this field contains the identity oftype Unsigned32 andone or more servers the message should be redirected to. It isusedimportant toinform anote that Diameterpeeragents MUST support at least one of thefirmware revisionLOCAL, RELAY, PROXY or REDIRECT modes ofthe issuing device. For devices thatoperation. Agents do nothaveneed to support all modes of operation in order to conform with the protocol specification, but MUST follow the protocol compliance guidelines in section 2.0. Relay agents MUST NOT reorder AVPs, and proxies SHOULD NOT reorder AVPs. When afirmware revision (general purpose computers running Diameter software modules,request is routed, the target server MUST have advertised the Application Identifier (see section 6.1) forinstance),therevision ofgiven message, or have advertised itself as a relay or proxy agent. 5.3.2 Redirecting requests When a redirector agent receives a request whose routing entry is set to REDIRECT, it MUST answer the request with Message-Reject-Answer, while maintaining theDiameter software module may be reported instead. 6.2.3 Auth-Extension-Id AVP The Auth-Extension-Id AVP (AVP Code 258) is of type Unsigned32 and is usedHop-by-Hop Identifier inorder to advertise support oftheAuthenticationheader, andAuthorization portion of an extension (see Section 6.1). The Auth-Calhoun et al. expiresOctoberDecember 2001 [Page30]38] Internet-DraftMayJune 2001Extension-Id MUST also be present in all Authentication and/or Authorization messages that are defined in a separate Diameter specification and have an Extension ID assigned. 6.2.4 Host-IP-Address AVP The Host-IP-Addressinclude the Result-Code AVP(AVP Code 257) is of type Address and is usedtoinform a Diameter peerDIAMETER_REDIRECT_INDICATION. Each of thesender's IP address. All source addresses that a Diameter node expects to useservers associated withSCTP [26] MUST be advertised in the Device-Reboot-Ind message by including a Host-IP- Address AVP for each address. This AVP MUST ONLY be used in the Device-Reboot-Ind message. 6.2.5 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 the device vendor. This is used intheDevice-Reboot-Ind messagerouting entry are added inorder to inform the peer that the sender supports a subsetseparate Redirect-Host AVP. +------------------+ | Diameter | | Redirector Agent | +------------------+ ^ | 1. Request | | 2. MRA + joe@xyz.com | | 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 thevendor-specific commands and/or attributes defined byservers in thevendor identifiedRedirect-Host AVP(s). These certificates are encapsulated inthis AVP. 6.2.6 Product-Namea CMS-Cert AVP [11]. TheProduct-Name AVP (AVP Code 269) isreceiver oftype OctetString, encoded in the UTF-8 [24] format, and containsthevendor assigned name forMRA message with theproduct. The Product-NameResult-Code AVPSHOULD remain constant across firmware revisions forset to DIAMETER_REDIRECT_INDICATION uses thesame product. 6.2.7 Acct-Extension-Id AVP The Acct-Extension-Id AVP (AVP Code 259) is of type Unsigned32 and is usedhop-by-hop field inorderthe Diameter header toadvertise support ofidentify theAccounting portion of an extensionrequest in the pending message queue (see Section6.1). The Acct-Extension-Id MUST also be present in all Accounting messages7.3) thatare defined in a separate Diameter specification and have an Extension ID assigned. 7.0 Transport Failure Detection Given the nature of the Diameter protocol, itisrecommended that transport failuresto bedetected as soon as possible. Detecting such failures will minimizeredirected. If no transport connection exists with theoccurrence of messages sent to unavailable servers, resulting in unnecessary delays,new agent, one is created, andwill provide better Calhoun et al. expires October 2001 [Page 31] Internet-Draft May 2001 failover performance. In order to pro-actively detect such failures, the Diameter protocol definestheDevice-Watchdog-Request message, whichrequest is sent directly toan inactive peer.it. 5.3.3 Relaying and Proxying Requests Apeerrelay or proxy agent MUST check for forwarding loops before forwarding requests. A loop isconsidered inactivedetected ifno messages were sent or received fromthepeer withinserver finds its own address in a Route-Record AVP. When such an event occurs, thecurrent watchdog interval period (see Section 18.0), and no request messages are pendingagent MUST answer with thepeer. For implementations that have accessResult-Code AVP set tothe Retransmission Time-Out (RTO) value of the underlying transport connection,DIAMETER_LOOP_DETECTED. A relay or proxy agent MUST append aDWR SHOULDRoute-Record AVP that includes its identity to all requests forwarded. The last Route-Record AVP in all requests received MUST besent once per RTO ofvalidated, by ensuring thatconnection, plus the watchdog interval period, with a jittering of +/- 50%. If the DWR is unanswered,thetime untilhost encoded in thenext DWRAVP issent MUST be recalculated after exponentially backing offtheRTO portion. Whensame as thevalue ofpeer theDWR's current watchdog interval period reachesmessage was received from. The Hop-by-Hop identifier in themaximum watchdog interval (Section 18.0), backoffrequest isnot continued,saved, and replaced with a locally unique value. Calhoun et al. expires December 2001 [Page 39] Internet-Draft June 2001 Relay and Proxy agents MAY include thepeerProxy-Info AVP in requests if it requires access any local state information when the corresponding response ismarked as failed. DWR messages continuereceived. Alternatively, it MAY simply use local storage tobe sent (jittered) at the final interval for detection for failover.store state information. Thecurrent watchdog intervalmessage isreturnedthen forwarded toits starting point when a DWA is received orthepeer resumes activity. Implementationsnext hop, as identified in the Domain Routing Table. Figure 6 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) (Destination-Host=nas.mno.net) (Destination-Host=nas.mno.net) (Route-Record=drl.mno.net) Figure 6: Routing of Diameter messages 5.3.4 Relaying and Proxying Answers A relay or proxy agent MUST only process Answers whose last Route- Record AVP matches one of its identities. Any answers that do nothave accessconform tothe RTO SHOULD perform an Round Trip Time (RTT) measurement for a given peer when a Device- Watchdog-Answer message is received for a non-backed off DWR. The fixed RTO base shouldthis rule MUST bereplaced by RTT-Multiplier (Section 18.0) times the measured RTT. An example of the backoff sequence, excluding jitter, would be: 30+RTO , 30+2*RTO , 30+4*RTO , 30+8*RTO, 60, 60, 60 Note that exponential backoffdropped. The last Route-Record AVP MUST beperformedremoved from the message before it is forwarded to themaximumnext hop, which isreached. 7.1 Device-Watchdog-Request The Device-Watchdog-Request (DWR), indicatedidentified by theCommand-Code setsecond to280 andlast Route-Record AVP. If the last Proxy-Info AVP in the messageflags' 'R' bit set,issenttargeted toa peer when no traffic has been exchanged between two peers as defined in Section 7.0, and no requests are pending withthepeer. Message Format Calhoun et al. expires October 2001 [Page 32] Internet-Draft May 2001 <Device-Watchdog-Request> ::= <local DiameterHeader: 280, R> { Origin-FQDN } { Origin-Realm } [ Destination-FQDN ] 7.2 Device-Watchdog-Answer The Device-Watchdog-Answer (DWA), indicated by the Command-Code set to 280 andserver, themessage flags' 'A' bit set, is sent asAVP MUST be removed. If aresponse torelay or proxy agent receives an answer with a Result-Code AVP indicating a failure, it MUST NOT modify theDevice-Watchdog-Request message. A receivercontents of theDWAAVP. Any additional local errors detected SHOULDperform RTT calculationbe logged, but not reflected in theevent that the transport RTO information is not available. Message Format <Device-Watchdog-Answer> ::= < Diameter Header: 280, A > {Result-Code} { Origin-FQDN } { Origin-Realm } { Destination-FQDN } 7.3 Failover/Failback Procedures InAVP. If theevent that a transport failure is detectedagent receives an answer message with apeer, it is necessary for all pending requestResult-Code AVP indicating success, andindication messagesit wishes tobe forwardedmodify the AVP to indicate analternate server, if possible. This is commonly referred to as failover. In order for a Diameter node to perform failover procedures,error, itis necessary forMUST issue an STR on behalf of thenodeaccess device. Prior tomaintain a pending message queue for a given peer. When a response is received,forwarding themessage is removed fromanswer, thequeue. Theagent MUST restore the original Calhoun et al. expires December 2001 [Page 40] Internet-Draft June 2001 value of the Diameter header's Hop-by-Hop Identifierfieldfield. 5.3.5 Hiding Network Topology A Relay or Proxy agent routing messages outside of their administrative domain MAYbe usedneed tomatch the corresponding response withhide thequeued request. When a transport failureinternal Diameter topology. This isdetected,done by removing allmessagesRoute-Record AVPs in a request, and later adding them back into the corresponding answer, in thequeue are sentsame order. Such agents MUST take care toan alternate server, if possible. An examplenot assume that the absence ofa case where itany Route-Record AVPs implies the message isnot possibleforforwardlocal comsumption. 5.4 Origin-Host AVP The Origin-Host AVP (AVP Code 264) is of type OctetString, encoded in themessageUTF-8 [24] format, according toan alternate server is whenthemessage has a fixed destination,Diameter identity rules defined in section 2.7, and MUST be present in all Diameter messages. This AVP identifies theunavailable peer isendpoint which originated themessage's final destination (see Destination-FQDN AVP). Such an error requiresDiameter message, i.e. the access device, home server, or broker. Relay agents MUST NOT modify this AVP. Note that theserver return an DSI with the DSI-EventOrigin-Host AVPset to DIAMETER_UNABLE_TO_DELIVER. It is importantmay resolve tonote that multiple identical request or responses MAYmore than one address as the Diameter peer may support more than one address. This AVP SHOULD bereceivedplaced asa result of a failover.close to the Diameter header as possible. 5.5 Origin-Realm AVP TheEnd-to-End Identifier fieldOrigin-Realm AVP (AVP Code 296) is of type OctetString, encoded in the UTF-8 [24] format. This AVP contains the Realm of the originator of any Diameterheadermessage and MUST beused to identify duplicate messages. Calhoun et al. expires October 2001 [Page 33] Internet-Draft May 2001 As described in section 2.1, a connection request should be periodically attempted with the failed peerpresent inorder to re-establish the transport connection. Once a connection has been successfully established,all messagescan once againThis AVP SHOULD beforwardedplaced as close to thepeer. ThisDiameter header as possible. 5.6 Destination-Host AVP The Destination-Host AVP (AVP Code 293) iscommonly referredof type OctetString, encoded in the UTF-8 [24] format, according toas failback. 8.0 Peer State Machine Thisthe Diameter identity rules defined in sectioncontains a finite state machine, that2.7. This AVP MUST beobserved bypresent in allDiameter 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 mayunsolicited agent initiated messages, MAY bepassed. This state machinepresent in request messages, and MUST be present in Answer messages. The value of the Calhoun et al. expires December 2001 [Page 41] Internet-Draft June 2001 Destination-Host AVP isintendedset tohandle boththesimple case,value of the Origin-Host AVP found inwhich one peer initiatesaconnectionmessage from the intended target host. This AVP SHOULD be placed as close to theother,Diameter header as possible. 5.7 Destination-Realm AVP The Destination-Realm AVP (AVP Code 283) is of type OctetString, encoded in the UTF-8 [24] format, and contains thecomplex case,realm the message is to be routed to. The Destination-Realm AVP MUST NOT be present inwhich each peer simultaneously initiatesAnswer messages. Diameter Clients insert the realm portion of the User-Name AVP. Diameter servers initiating aconnection torequest message use theother. Invalue of thecomplex case, an election occurs to determine which transport connection will survive. I- is used to representOrigin-Realm AVP from a previous message received from theinitiator (connecting) connection, whileintended target host (unless it is known a priori). When present, theR-Destination-Realm AVP is used torepresentperform message routing decisions. Request messages whose ABNF does not list theresponder (listening) connection. The lack ofDestination-Realm AVP as aprefix indicates thatmandatory AVP are inherently non-routable messages. This AVP SHOULD be placed as close to theevent or actionDiameter header as possible. 5.8 Routing AVPs The 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 the Diameter CMS Security application [11]. 5.8.1 Route-Record AVP The Route-Record AVP (AVP Code 282) isthe same regardlessof type OctetString, encoded in theconnection on whichUTF-8 [24] format, according to theevent occurred.Diameter identity rules defined in section 2.7. Thestable states that a state machine may beidentity added inare Closed, I-Open and R-Open; all other states are intermediate. Note that I-Open and R-Open are equivalent except for whether the initiator or responder transport connection is used for communication. A DRI message is always sent onthis AVP MUST be theresponder connection immediately after acceptingsame as theconnection request. The non-elected connection will close down. All subsequent messages areidentity senton the elected connection. The state machine constrains onlyin thebehaviorOrigin-Host ofa Diameter implementation as seen by Diameter peers through events onthewire. Any implementation that produces equivalent resultsCapabilities- Exchange-Request message. 5.8.2 Proxy-Info AVP The Proxy-Info AVP (AVP Code = 284) isconsidered compliant. state event action next state ----------------------------------------------------------------- Closed Start I-Snd-Conn-Req Wait-Conn-Ack Calhoun et al. expires October 2001 [Page 34] Internet-Draft May 2001 R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-R-DRI Wait-Conn-Ack I-Rcv-Conn-Ack I-Snd-DRI Wait-I-DRI I-Rcv-Conn-Nack Cleanup Closed R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-Conn-Ack/ Wait-R-DRI Timeout Error Closed Wait-I-DRI I-Rcv-DRI Process-DRI I-Open R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-R-DRI/ Elect I-Peer-Disc I-Disc Closed Timeout Error Closed Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-DRI Wait-R-DRI/ Wait-R-DRI Elect I-Rcv-Conn-Nack Cleanup Wait-R-DRI R-Rcv-DRI Process-DRI Wait-Conn-Ack/ Elect Timeout Error Closed Wait-R-DRI/ R-Rcv-DRI Process-DRI, Wait-Returns Elect Elect I-Peer-Disc I-Disc Wait-R-DRI Timeout Error Closed Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-DRI,Elect Wait-Returns Elect I-Rcv-Conn-Nack R-Snd-DRI R-Open R-Peer-Disc R-Disc Wait-Conn-Ack-2 Timeout Error Closed Wait-Returns Win-Election I-Disc,R-Snd-DRI R-Open I-Peer-Disc I-Disc,R-Snd-DRI R-Open I-Rcv-DRI R-Disc I-Open R-Peer-Disc R-Disc Wait-I-DRI-2 Timeout Error Closed Wait-Conn-Ack-2 I-Rcv-Conn-Ack I-Snd-DRI Wait-I-DRI-2 I-Rcv-Conn-Nack Cleanup Closed R-Rcv-Conn-Req R-Snd-Conn-Nack Wait-Conn-Ack-2 Timeout Error Closed Wait-I-DRI-2 I-Rcv-DRI Process-DRI I-Open I-Peer-Disc I-Disc Closed R-Rcv-Conn-Req R-Snd-Conn-Nack Wait-I-DRI-2 Timeout Error Closed Wait-R-DRI R-Rcv-DRI Process_DRI, R-Openof type Grouped. The Grouped Data field has the following ABNF grammar: Calhoun et al. expiresOctoberDecember 2001 [Page35]42] Internet-DraftMayJune 2001R-Snd-DRI Timeout Error Closed R-Open Send-Message R-Snd-Non-DRI R-Open R-Rcv-Non-DRI Process R-Open R-WatchDog-Timer R-Snd-DWR R-Open R-Rcv-DWA Process-DWA R-Open Stop R-Snd-Disc Closed R-Peer-Disc R-Disc Closed R-Rcv-DRI Error Closed I-Open Send-Message I-Snd-Non-DRI I-Open I-Rcv-Non-DRI Process I-Open I-WatchDog-Timer I-Snd-DWR I-Open I-Rcv-DWA Process-DWA I-Open Stop I-Disc Closed I-Peer-Disc I-Disc Closed I-Rcv-DRI Error Closed R-Rcv-Conn-Req R-Snd-Conn-Nack I-Open 8.1 States FollowingProxy-Info ::= < AVP Header: 284 > { Proxy-Host } { Proxy-State } * [ AVP ] 5.8.3 Proxy-Host AVP The Proxy-Host AVP (AVP Code = 280) isa more detailed descriptionofeach automaton state. Closed A peer is initiallytype OctetString, encoded in theclosed state,UTF-8 [24] format, according to the Diameter identity rules defined in section 2.7. This AVP contains the identity of the host that added the Proxy-Info AVP. 5.8.4 Proxy-State AVP The Proxy-State AVP (AVP Code = 33) is of type OctetString, andno transport connection exists withcontains state local information, and MUST be treated as opaque data. 5.9 Redirect-Host AVP The Redirect-Host AVP (AVP Code 292) is of type OctetString, encoded in thepeer. Wait-Conn-Ack AUTF-8 [24] format, according to the Diameter identity rules defined in section 2.7. This AVP MUST be present in Message-Reject- Answer messages that include the Result-Code AVP set to DIAMETER_REDIRECT_INDICATION. Upon receiving the above, the receiving Diameter node SHOULD forward the request directly to the host identified in this AVP. 6.0 Capabilities Exchange When two Diameter peers establish a transportconnection has been initiated withconnection, they MUST exchange thepeer,Device Reboot messages, as specified in the peer state machine (see section 8.0). This message has two purposes. First it allows a peer's identity to be discovered, andan acknowledgement is pending. Wait-I-DRI The local Diameter node is waitingallows for capabilities exchange, such as thepeer to issue a DRI. Wait-Conn-Ack/Wait-R-DRI A transport connection indication fromsupported protocol version number, thepeer was received, while a transport connection has already beenlocallyinitiated. Wait-R-DRI/Elect Two transport connectionssupported Diameter applications, etc. The receiver only issues commands to its peers that havebeen established withadvertised support for thepeer, and a DRI is pending onDiameter application that defines theresponder connection. Wait-Conn-Ack/Electcommand. Atransport connection exists onDiameter node MUST cache theresponder connection, while an acknowledgment has yetsupported applications in order tobe received on the initiator connection.ensure that unrecognized commands and/or AVPs are not unnecessarily sent to a peer. A receiver of a Capabilities-Exchange-Req message which does not have Calhoun et al. expiresOctoberDecember 2001 [Page36]43] Internet-DraftMayJune 2001Wait-Returns Multiple transport connections caused an election to occur. Wait-Conn-Ack-2 While an acknowledgement toany applications in common with the sender MUST return alocally initiatedCapabilities-Exchange-Answer with the Result-Code AVP set to DIAMETER_NO_COMMON_APPLICATION, and SHOULD disconnect the transportconnection hasn't been received, an election has failedlayer connection. The Capabilities-Exchange-Request and Capabilities-Exchange-Answer messages MUST NOT be proxied, or redirected. Since theinitiator connection willCER/CEA messages cannot be proxied, it is still possible that an upstream proxy receives a message for which it has no available peers to handle the application that corresponds to the Command-Code. In such instances, the Message-Reject-Answer message is usedbetween(see Section 9.2.1) to inform thepeers. Wait-I-DRI-2 Followingdownstream to take action (e.g. re-routing request to anelection,alternate peer). With theinitiator connection won, andexception of the Capabilities-Exchange-Request message, a message of type Request that includes the Auth-Application-Id or Acct-Application-Id AVPs, or aDRI has yet tomessage with an application-specific command code, MAY only bereceived by the peer. Wait-R-DRI A transport connection indicationforwarded to a host that hasbeen received fromexplicitly advertised support for thepeer, and a DRIapplication (or hasyet to be received byadvertised thepeer. R-OpenRelay Application Identifier). 6.1 Application Identifiers Each Diameter application MUST have an IANA assigned Application Identifier (see section 15.3). Theresponder connection will be used to communicate with the peer. I-Openbase protocol does not require an application Identifier since its support is mandatory. Application Identifiers are communicated via two separate AVPs; Auth-Application-Id and Acct-Application-Id. Theinitiator connection will beAuth-Application-Id AVP is used to communicatewith the peer. 8.2 Events Transitions and actions in the automaton are caused by events. In this section we will ignoresupport for the-Iauthentication and-R prefix, since the actual event would be identical, but would occur on oneauthorization portion oftwo possible connections. Startan application. TheDiameter application has signaled that a connection should be initiated withAcct-Application-Id AVP, on thepeer. Rcv-Conn-Req A transport connection indication fromother hand, communicates support for thepeer has been received. Rcv-Conn-Ack A positive acknowledgement was received toaccounting portion of an application. This separation of AVPs allows alocally initiated transport connection. Rcv-Conn-Nack A negative acknowledgement was receivedserver toa locally initiated transport connection. Timeout An application-defined timer has expired while waitingcommunicate that it is willing to accept only accounting messages forsome event. Rcv-DRI A DRI message from the peer was received. Peer-Disc A disconnection indication froma given application. The following Application Identifier values are defined: NASREQ 1 [7] End-to-End Security 2 [11] Mobile-IP 4 [10] Relay 0xffffffff Relay and redirect agents MUST advertise thepeer wasProxy application identifier, while all other Diameter nodes MUST advertise locally Calhoun et al. expiresOctoberDecember 2001 [Page37]44] Internet-DraftMayJune 2001received. Win-Election An election was held, and the local node was the winner. Send-Message A Non-DRI message is to be sent. Rcv-Non-DRI A Non-DRI message was received. WatchDog-Timersupported applications. TheWatchdog timer expired, indicating thatreceiver of aDWRDevice Reboot messageis to be sent toadvertising Relay service MUST assume that thepeer. Rcv-DWA A DWA message was received. Stop Thesender supports all current and future applications. Diameterapplication has signaledrelay and proxy agents are responsible for finding a downstream server that supports the application of aconnection shouldparticular message. If none can beterminated (e.g., on system shutdown). 8.3 Actions Actions infound, a MRA message is returned with theautomaton are causedResult-Code AVP set to DIAMETER_UNABLE_TO_DELIVER. 6.2 Capabilities-Exchange-Request The Capabilities-Exchange-Request (CER), indicated byeventsthe Command- Code set to 257 andtypically indicatethetransmission of packets and/or an actionCommand Flags' 'R' bit set, is sent tobe taken oninform a peer that a reboot has occurred. When Diameter is run over SCTP [26], which allows for connections to span multiple interfaces, hence multiple IP addresses, theconnection. In this section we will ignoreCapabilities-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 <Capabilities-Exchange-Req> ::= < Diameter Header: 257, REQUEST > { 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-Answer The Capabilities-Exchange-Request (CEA), indicated by the-ICommand- Code set to 257 and-R prefix, since the actual action would be identical, but would occur on one of two possible connections. Snd-Conn-Req A transport connection is initiated withthepeer. Snd-Conn-Ack an acknowledgementCommand Flags' 'R' bit cleared, is sent in response to aconnect request, confirming that the transport layer connection is open. Snd-Conn-Nack A negative acknowledgementCER message. When Diameter issent in responserun over SCTP [26], which allows for connections toa connect request, indicating thatspan multiple interfaces, hence multiple IP addresses, therequest was refused. Snd-DRI A DRICapabilities-Exchange-Answer messageis sent to the peer. Cleanup If necessary, the connection is shutdown, and any local 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-DRI A received DRI is processed.MUST contain one Host-IP-Address Calhoun et al. expiresOctoberDecember 2001 [Page38]45] Internet-DraftMayJune 2001Disc The transport layer connection is disconnected, and local resources are freed. Elect An election occurs (see Section 8.4AVP formore information). Snd-Non-DRI A non-DRI message is sent. Snd-DWR A DWR message is sent. Process-DWA The DWA message is serviced. Process A non-DRIeach potential IP address that MAY be locally used when transmitting Diametermessage is serviced. 8.4 The Election Processmessages. Message Format <Capabilities-Exchange-Answer> ::= < Diameter Header: 257 > { Result-Code AVP } { 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 TheelectionVendor-Id AVP (AVP Code 266) isperformed onof type Unsigned32 and contains theresponder. The responder comparesIANA "SMI Network Management Private Enterprise Codes" [2] value assigned to theOrigin-FQDN received invendor of theDRI sent by its peerDiameter device. In combination withits own Origin-FQDN (which it may orthe Supported-Vendor-Id AVP (section 6.8), this MAY be used in order to know which vendor specific attributes maynot have actually sent). The transport layer connection withbe sent to thehigherpeer. It is also envisioned that the combination of the Vendor-Id, Product-Name (section 6.9) and the Firmware-Revision (section 6.5) AVPs MAY provide very useful debugging information. A Vendor-Id value ofOrigin-FQDN iszero in theoneCER or CEA messages is reserved and indicates thatsurvives. The comparison proceeds by consideringtheshorter OctetStringDiameter peer is in the experimental or concept stage and that an IANA Private Enterprise Number has yet to benull-paddedobtained by the implementor. 6.5 Firmware-Revision AVP The Firmware-Revision AVP (AVP Code 267) is of type Unsigned32 and is used to inform a Diameter peer of thelengthfirmware revision of thelonger, then performing an octet by octet unsigned comparison withissuing device. For devices that do not have a firmware revision (general purpose computers running Diameter software modules, for instance), thefirst octet being most significant. Hanging octets are assumedrevision of the Diameter software module may be reported instead. Calhoun et al. expires December 2001 [Page 46] Internet-Draft June 2001 6.6 Auth-Application-Id AVP The Auth-Application-Id AVP (AVP Code 258) is of type Unsigned32 and is used in order tohave value 0x80, but dimpled octets are ignored. 9.0 Error Handling This section will specifyadvertise support of thehow Diameter error handling occurs. There are two separate error typesAuthentication 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 areconsidered; end-to-end and hop-by-hop. 9.1 End-to-End Error Signaling An End-to-End error occurs whendefined in a separate Diameterentity sends a messagespecification andeitherhave anintermediate proxy, or the home server, wishesApplication ID assigned. This AVP SHOULD be placed as close toreturn a failure. When a diameter message of type Request is received, and an error is identified,the'A' bitDiameter header as possible. 6.7 Host-IP-Address AVP The Host-IP-Address AVP (AVP Code 257) issetof type Address andthe Result-Code AVPisaddedused to inform a Diameter peer of themessage. The sender MAY also include additional AVPssender's IP address. All source addresses thathelp identify the error condition. Certain Result-Code values requirea Diameter node expects to use with SCTP [26] MUST be advertised in thepresence of additional AVPs. WhenCER and CEA messages by including adiameter messageHost-IP-Address AVP for each address. This AVP MUST ONLY be used in the CER and CEA messages. 6.8 Supported-Vendor-Id AVP The Supported-Vendor-Id AVP (AVP Code 265) is of typeIndication is received,Unsigned32 andan error Calhoun et al. expires October 2001 [Page 39] Internet-Draft May 2001 is identified, the above procedures are followed exceptcontains the'F' bit is set, as opposedIANA "SMI Network Management Private Enterprise Codes" [2] value assigned to a vendor other than the'A' bit. In the event that an unrecognized AVPdevice vendor. This isreceived,used in the CER andit is marked as Mandatory (the 'M' bit is set),CEA messages in order to inform theResult-Code AVP is added withpeer that thevalue DIAMETER_AVP_UNSUPPORTED, as issender supports a subset of theFailed-AVP AVP, containingvendor-specific commands and/or AVPs defined by theoffendingvendor identified in this AVP.Should an6.9 Product-Name AVPbe received with an unrecognized value, the Result-CodeThe Product-Name AVP (AVP Code 269) isadded with its value set to DIAMETER_INVALID_AVP_VALUE, as isof type OctetString, encoded in theFailed-AVP AVP, containingUTF-8 [24] format, and contains theoffending AVP.vendor assigned name for the product. TheResult-CodeProduct-Name AVPlists many additional error conditions that may occur. 9.1.1 Result-CodeSHOULD remain constant across firmware revisions for the same product. 6.10 Acct-Application-Id AVP TheResult-CodeAcct-application-Id AVP (AVP Code268)259) is of type Unsigned32 andindicates whether a particular request was completed successfully or whether an error occurred. All Diameter messages of type *-Answer, as well as *-Ind messages with the 'F' bit set, MUST include one Result-Code AVP. A non-successful Result-Code AVP (one containing a non 2001 value) MUST include the Error-Reporting-FQDN AVP. The Result-Code data field contains an IANA-managed 32-bit address space representing errors (see section 16.4). Diameter provides the following classes of errors, all identified by the thousands digit: - 1xxx (Informational) - 2xxx (Success) - 4xxx (Transient Failures) - 5xxx (Permanent Failure) A non-recognize class (one whose first digitisnot defined in this section) MUST be handled as a permanent failure. 9.1.1.1 Informational Errors that fall within the Informational category areusedto inform a requester that the request cannot be immediately satisfied and a further response will be issuedin order to advertise support of thenear future. There are currently no errors that fall within this class. 9.1.1.2 Success ErrorsAccounting portion of an application (see Section 6.1). The Acct-Application-Id MUST also be present in all Accounting messages thatfall within the Success categoryareused to informdefined in a separate Diameter specification and have an Application ID assigned. Calhoun et al. expiresOctoberDecember 2001 [Page40]47] Internet-DraftMay 2001 peer that a request has been successfully completed. DIAMETER_SUCCESSJune 2001The Request was successfully completed. 9.1.1.3 Transient Failures Errors that fall withinThis AVP SHOULD be placed as close to thetransient failures category areDiameter 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 toinformadvertise support of apeer thatvendor-specific Diameter Application. Either therequest could not be satisfied atAuth-Application-Id or thetime it was received, butAcct- Application-Id AVP MAY beable to satisfypresent. Both AVPs MAY be present if they both contain therequestsame value. This AVP MUST also be present in all vendor-specific commands defined in thefuture. DIAMETER_AUTHENTICATION_REJECTED 4001 The authentication process for the user failed, most likely duevendor-specific application. This AVP SHOULD be placed as close toan invalid password used bytheuser. Further attempts MUST only be tried after promptingDiameter 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 } 7.0 Transport Failure Detection Given theuser for a new password. DIAMETER_END_2_END_SECURITY 4002 A proxy has detectednature of the Diameter protocol, it is recommended thatend-to-end security has been applied to portionstransport failures be detected as soon as possible. Detecting such failures will minimize the occurrence of messages sent to unavailable servers, resulting in unnecessary delays, and will provide better failover performance. The Device-Watchdog-Request and Device- Watchdog-Answer messages, defined in this section, are used to pro- actively detect transport failures. The watchdog behavior is controlled by theDiameter message,Tw timer, which ranges between 30 andthe proxy does not allow this security mode since it needs60 seconds. In order toalteravoid synchronization behaviors that can occur with fixed timers among distributed systems, each time themessagewatchdog interval is calculated with a jitter byapplying some local policies. DIAMETER_OUT_OF_SPACE 4003 A Diameter node receivedusing theaccounting request but was unable to commit it to stable storage dueTw value (which defaults to 30 seconds) and randomly adding or subtracting atemporary lack of space. 9.1.1.4 Permanent Failures Errors that fall within the permanent failures category are usedrandom value drawn between 0.5 and 2 seconds. Alternative calculations toinform the peer that the request failed,create jitter MAY be used. These MUST be pseudo-random andshouldnotbe attempted again. DIAMETER_USER_UNKNOWN 5001 A request was received forcyclic. When auser thatresponse isunknown, therefore authentication and/or authorization failed. DIAMETER_AVP_UNSUPPORTED 5002 The peer received a message that contained an AVP thatreceived, Tw isnot recognized or supportedreset. Receiving a watchdog from a peer constitutes activity, andwas marked with the Mandatory bit. A Diameter message with this error MUST contain one or more Failed-AVP AVP containingTw should be reset. On sending a message, if theAVPs that causedqueue is empty, then Tw is reset. If thefailure. DIAMETER_UNKNOWN_SESSION_ID 5003 The request or response contained an unknown Session-Id. DIAMETER_AUTHORIZATION_REJECTED 5004watchdog Calhoun et al. expiresOctoberDecember 2001 [Page41]48] Internet-DraftMay 2001 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 includeJune 2001 timer expires and theoffending AVPs withinqueue is empty, then aFailed-AVP AVP. DIAMETER_MISSING_AVP 5006 The request did not contain an AVP thatwatchdog packet isrequiredsent. 7.1 Device-Watchdog-Request The Device-Watchdog-Request (DWR), indicated by the Command-Code set to 280 and the CommandCode definition. If this valueFlags' 'R' bit set, is sent to a peer when no traffic has been exchanged between two peers as defined in Section 7.0, and no requests are pending with theResult- Code AVP,peer. Message Format <Device-Watchdog-Request> ::= < Diameter Header: 280, REQUEST > { Origin-Host } { Origin-Realm } { Destination-Host } 7.2 Device-Watchdog-Answer The Device-Watchdog-Answer (DWA), indicated by the Command-Code set to 280 and the Command Flags' 'R' bit cleared, is sent as aFailed-AVP AVP SHOULD be included inresponse to the Device-Watchdog-Request message.The data portionA receiver of theFailed-AVP MUST only containDWA SHOULD perform RTT calculation in theAVP Code ofevent that themissing AVP. DIAMETER_INVALID_CMS_DATA 5007 The Request didtransport RTO information is notcontainavailable. Message Format <Device-Watchdog-Answer> ::= < Diameter Header: 280 > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } 7.3 Failover/Failback Procedures In the event that avalid CMS-Data [11] AVP. DIAMETER_LOOP_DETECTED 5008 A Proxy or Redirect servertransport failure is detected with aloop while tryingpeer, it is necessary for all pending request messages togetbe 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 necessary for themessagenode to maintain a pending message queue for a given peer. When an answer message is received, theHome Diameter server.corresponding request is removed from the queue. ThemessageHop-by-Hop Identifier field MAY be used to match the answer with the queued request. Calhoun et al. expires December 2001 [Page 49] Internet-Draft June 2001 When a transport failure is detected, all messages in the queue are sent to an alternatepeer,agent, ifone is available, but the peer reporting the error has identifiedpossible. An example of aconfiguration problem. DIAMETER_AUTHORIZATION_FAILED 5009 A request was receivedcase where it is not possible forwhichforward theuser could not be authorized at this time. This error could occurmessage to an alternate server is when theusermessage hasalready expended allowed resources, or is only permitted to access services withinatime period. DIAMETER_CONTRADICTING_AVPS 5010 The Home Diameter server has detected AVPs in the request that contradicted each other,fixed destination, andis not willing to provide service totheuser. One or more Failed-AVP AVPs MUST be present, containingunavailable peer is theAVPs that contradicted each other. DIAMETER_AVP_NOT_ALLOWED 5011 A message was received withmessage's final destination (see Destination-Host AVP). Such anAVPerror requires thatMUST NOT be present. The Failed-AVP AVP MUST be included and contain the AVP Code oftheoffending AVP. DIAMETER_AVP_OCCURS_TOO_MANY_TIMES 5012 A message was received that includedagent return anAVP that appeared more often than permitted inMRA with themessage definition. The Failed-AVPResult-Code AVPMUSTset to DIAMETER_UNABLE_TO_DELIVER. It is important to note that multiple identical request or answer MAY beincluded and contain the AVP Codereceived as a result ofthe offending AVP. Calhoun et al. expires October 2001 [Page 42] Internet-Draft May 2001 DIAMETER_VENDOR_ID_UNSUPPORTED 5013a failover. TheHome Diameter server has detected vendor-specific AVPsEnd-to-End Identifier field in themessage, andDiameter header along with thevendor dictionary is not supported. One or more Failed-AVPOrigin-Host AVP MUST bepresent, containing the offending AVPs. 9.1.2 Error-Message AVP The Error-Message AVP (AVP Code 281) is of type OctetString. It isused to identify duplicate messages. As described in section 2.1, ahuman readable UTF-8 character encoded string. It MAY accompanyconnection request should be periodically attempted with the failed peer in order to re-establish the transport connection. Once aResult-Code AVPconnection has been successfully established, messages can once again be forwarded to the peer. This is commonly referred to as failback. 8.0 Peer State Machine This section contains ahuman readable error message. The Error-Message AVPfinite state machine, that MUST be observed by all Diameter 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. This state machine isnotintended tobe usefulhandle both the simple case, inreal-time,which one peer initiates a connection to the other, andSHOULD NOT be expectedthe complex case, in which each peer simultaneously initiates a connection tobe parsed by network entities. 9.1.3 Error-Reporting-FQDN AVP The Error-Reporting-FQDN AVP (AVP Code 294)the other. In the complex case, an election occurs to determine which transport connection will survive. I- is used to represent the initiator (connecting) connection, while the R- is used to represent the responder (listening) connection. The lack oftype OctetString, encoded ina prefix indicates that theUTF-8 [24] format. This AVP containsevent or action is theFQDNsame regardless of theDiameter host that setconnection on which theResult-Code AVP toevent occurred. The stable states that avalue other than 2001 (Success). This AVP is intended tostate machine may beused for troubleshooting purposes,in are Closed, I-Open andMUST be set when the Result-Code AVP indicates a failure. 9.2 Hop-by-Hop Error Handling ThereR-Open; all other states aremany instances where error conditions occur on a Diameter node,intermediate. Note thatneeds to be signaled to the downstream server,I-Open andnot necessarily to the Diameter client. Examples of such error conditionsR-Open areinability to forward aequivalent except for whether the initiator or responder transport connection is used for communication. A CER messageto a particular domain, etc. In these cases, returningis always sent on theerror back toinitiating connection immediately Calhoun et al. expires December 2001 [Page 50] Internet-Draft June 2001 after theDiameter clientconnection request is successfully completed. The non- elected connection will close down. All subsequent messages are sent on the elected connection. The state machine constrains onlycause delay, and perhaps confusion in roaming networks. Therefore, when such errors occur, it is necessary fortheerror to be handledbehavior of a Diameter implementation as seen by Diameter peers through events on thedownstream next hop, and some localwire. Any implementation that produces equivalent results is considered compliant. state event actionbe taken to rectify the problem, such as forwarding to a differentnexthop.state ----------------------------------------------------------------- Closed Start I-Snd-Conn-Req Wait-Conn-Ack R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-R-CER Wait-Conn-Ack I-Rcv-Conn-Ack I-Snd-CER Wait-I-CEA I-Rcv-Conn-Nack Cleanup Closed R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-Conn-Ack/ Wait-R-CER Timeout Error Closed Wait-I-CEA I-Rcv-CEA Process-CEA I-Open R-Rcv-Conn-Req R-Snd-Conn-Ack Wait-R-CER/ Elect I-Peer-Disc I-Disc Closed Timeout Error Closed Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-CER Wait-R-CER/ Wait-R-CER Elect I-Rcv-Conn-Nack Cleanup Wait-R-CER R-Rcv-CER Process-CER Wait-Conn-Ack/ Elect Timeout Error Closed Wait-R-CER/ R-Rcv-CER Process-CER, Wait-Returns Elect Elect I-Peer-Disc I-Disc Wait-R-CER 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-2 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-2 Timeout Error Closed Calhoun et al. expiresOctoberDecember 2001 [Page43]51] Internet-DraftMayJune 2001Request +--------+ Link Broken +-------------------------->|Diameter|----///----+ | +---------------------| | v +-----+---+ | DSI | Server | +--------+ |Diameter |<-+ (Unable to Forward) +--------+ |Diameter| |Client or| | | | Server |--+ +--------+ | Server | +---------+ | Request |Diameter| +--------+ +-------------------->| | ^ | Server |-----------+ +--------+ Figure 1 - Example of Per-HopWait-Conn-Ack-2 I-Rcv-Conn-Ack I-Snd-CER Wait-I-CEA-2 I-Rcv-Conn-Nack Cleanup Closed R-Rcv-Conn-Req R-Disc Wait-Conn-Ack-2 Timeout ErrorCondition If a messageClosed Wait-I-CEA-2 I-Rcv-CEA Process-CEA I-Open I-Peer-Disc I-Disc Closed R-Rcv-Conn-Req R-Disc Wait-I-CEA-2 Timeout Error Closed Wait-R-CER R-Rcv-CER Process_CER, R-Open R-Snd-CEA Timeout Error Closed R-Open Send-Message R-Snd-Non-DRI R-Open R-Rcv-Non-DRI Process R-Open R-WatchDog-Timer R-Snd-DWR R-Open R-Rcv-DWA Process-DWA R-Open Stop R-Snd-Disc Closed R-Peer-Disc R-Disc Closed R-Rcv-CER Error Closed I-Open Send-Message I-Snd-Non-DRI I-Open I-Rcv-Non-DRI Process I-Open I-WatchDog-Timer I-Snd-DWR I-Open I-Rcv-DWA Process-DWA I-Open Stop I-Disc Closed I-Peer-Disc I-Disc Closed I-Rcv-DRI Error Closed R-Rcv-Conn-Req R-Disc I-Open 8.1 States Following isreceived with an unrecognized Command-Code, an DSI messagea more detailed description of each automaton state. Closed A peer isreturned with the DSI-Event AVP containing the value DIAMETER_COMMAND_UNSUPPORTED. 9.2.1 Device-Status-Ind The Device-Status-Ind (DSI), indicated byinitially in theCommand-Code set to 282closed state, and no transport connection exists with themessage flags' 'I' bit set, is sent to inform a peer that an event has occurred.peer. Wait-Conn-Ack AFailed Indication would containtransport connection has been initiated with thesame Command-Code, but would require that only be 'F' bit be set. When apeer, and an acknowledgement is pending. Wait-I-CEA The local Diameter nodeissues a DSI message downstream,is waiting for thetargetpeerMUST attempttorectify the problem, orissue asimilar message downstream. The Device-Status-Ind message MUST NOT be proxied, but MAY be forwarded, as long as the Origin-FQDN and Origin-Realm AVPs are replaced to include the local node's identity. The Device-Status-Ind message MUST contain the same Hop-by-Hop Identifier value in the header as the message which motivated sending the DSI. IfDRI. Wait-Conn-Ack/Wait-R-CER A transport connection indication from theSession-Id AVPpeer waspresent in the original message, the same AVP MUST be present in the DSI. Message Format <Device-Status-Ind> ::= < Diameter Header: 282, I > { Origin-FQDN } { Origin-Realm } { DSI-Event } [ Destination-FQDN ] [ Session-Id ] * [ AVP ]received, while a transport connection has already Calhoun et al. expiresOctoberDecember 2001 [Page44]52] Internet-DraftMayJune 20019.2.2 DSI-Event AVP The DSI-Event AVP (AVP Code 297) is of type Unsigned32been locally initiated. Wait-R-CER/Elect Two transport connections have been established with the peer, andindicates that an event occurred which requires attention fromaDiameter peer. The DSI-Event contains an IANA-managed 32-bit address space representing events (see section 16.5). Diameter provides the following classes of event notification, all identified byDRI is pending on thethousands digit: - 1xxx (Informational Events) - 3xxx (Redirect Notification) - 4xxx (Transient Failure Events) - 5xxx (Permanent Failure Events)responder connection. Wait-Conn-Ack/Elect Anon-recognize class (one whose first digit is not defined in this section) MUST be handled as a permanent failure. 9.2.2.1 Informational Events Events that fall withintransport connection exists on the responder connection, while an acknowledgment has yet to be received on theInformational category are usedinitiator connection. Wait-Returns Multiple transport connections caused an election to occur. Wait-Conn-Ack-2 While an acknowledgement toinform a peer thatarequest cannotlocally initiated transport connection hasn't been received, an election has failed and the initiator connection will beimmediately satisfied,used between the peers. Wait-I-CEA-2 Following an election, the initiator connection won, and afurther response willDRI has yet to beissued inreceived by thenear future. DIAMETER_STILL_WORKING 1001peer. Wait-R-CER Arequest's Max-Wait-Timetransport connection indication hasexpired, andbeen received from therequest is still being serviced. This event MAY be sent priorpeer, and a DRI has yet to be received by theMax-Wait- Time expiration,peer. R-Open The responder connection will be used toinform the peer thatcommunicate with therequest is not expected topeer. I-Open The initiator connection will beserviced in the allotted time, but the request is not being abandoned. It is importantused tonote that receiving this event will result in another Diameter message being receivedcommunicate with thesame Hop-by-Hoppeer. 8.2 Events Transitions andEnd-to-End identifiers. 9.2.2.2 Redirect Event Errors that fall withinactions in theRedirect Event categoryautomaton areused to inform a peer thatcaused by events. In this section we will ignore therequest cannot be satisfied locally-I andshould instead be forwarded to another server. DIAMETER_REDIRECT_INDICATION 3001 A proxy or redirect server has determined that-R prefix, since therequest could notactual event would besatisfied locally and the initiatoridentical, but would occur on one ofthe requesttwo possible connections. Start The Diameter application has signaled that a connection shoulddirectbe initiated with therequest directly topeer. Rcv-Conn-Req A transport connection indication from theserver, whose contact informationpeer has beenadded to the response. 9.2.2.3 Transient Failure Eventsreceived. Calhoun et al. expiresOctoberDecember 2001 [Page45]53] Internet-DraftMayJune 2001Errors that fall within the transient failures category are usedRcv-Conn-Ack A positive acknowledgement was received to a locally initiated transport connection. Rcv-Conn-Nack A negative acknowledgement was received toinforma locally initiated transport connection. Timeout An application-defined timer has expired while waiting for some event. Rcv-CER A CER message from the peerthatwas received. Rcv-CEA A CEA message from therequest could not be satisfied atpeer was received. Peer-Disc A disconnection indication from thetime itpeer wasreceived, but MAY be able to satisfyreceived. Win-Election An election was held, and therequest iflocal node was theerrorwinner. Send-Message A Non-DRI message iscorrected. DIAMETER_UNSUPPORTED_TRANSFORM 4001to be sent. Rcv-Non-DRI A Non-DRI message wasreceived that included an CMS-Data AVP [11] that made use of an unsupported transform. 9.2.2.4 Permanent Failure Events Errorsreceived. WatchDog-Timer The Watchdog timer expired, indicating thatfall within the permanent failures category are useda DWR message is to be sent toinformthepeerpeer. Rcv-DWA A DWA message was received. Stop The Diameter application has signaled thatthe request failed, and cannota connection should besatisfiedterminated (e.g., on system shutdown). 8.3 Actions Actions in the automaton are caused by events and typically indicate theoriginatortransmission of packets and/or an action to be taken on theDevice-Status-Ind. The receiverconnection. In this section we will ignore the -I and -R prefix, since the actual action would be identical, but would occur on one ofa DSI messagetwo possible connections. Snd-Conn-Req A transport connection is initiated with theDSI-Event setpeer. Snd-Conn-Ack an acknowledgement is sent in response to avalueconnect request, confirming thatfalls within this event class SHOULD forwardthe transport layer connection is open. Snd-CER A CER messageto an alternate peer, if oneisavailable. DIAMETER_INVALID_ROUTE_RECORD 5001 The last Route-Record AVP insent to the peer. Calhoun et al. expires December 2001 [Page 54] Internet-Draft June 2001 Snd-CEA A CEA message isnot setsent to theidentity of the sender ofpeer. Cleanup If necessary, themessage. Seeconnection is shutdown, and any local 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-CER A received CER is processed. Process-CEA A received CEA is processed. Disc The transport layer connection is disconnected, and local resources are freed. Elect An election occurs (see Section11.08.4 for moreinformation. DIAMETER_COMMAND_UNSUPPORTED 5002information). Snd-Non-DRI A non-DRI message is sent. Snd-DWR A DWR message is sent. Process-DWA TheRequest contained a Command-Code that the receiver did not recognize or support. DIAMETER_UNABLE_TO_DELIVER 5003DWA message is serviced. Process A non-DRI Diameter message is serviced. 8.4 Therequest could not be delivered to a host that handles the realm, and extension, requested at this time. DIAMETER_REALM_NOT_SERVED 5004Election Process Theoriginator ofelection is performed on theDSI message could not deliverresponder. The responder compares themessage sinceOrigin-Host received in therealm requested is unknown. DIAMETER_TOO_BUSY 5005 When returned, a Diameter node SHOULD attempt toDRI sent by its peer with its own Origin-Host (which it may or may not have actually sent). The transport layer connection with themessage to an alternate peer. Thishigher valueMAY also be used to inform a peerof Origin-Host is the one that survives. The comparison proceeds by considering therequest is not expectedshorter OctetString to beprocessed withinnull-padded to theMax-Wait-Time value,length of the longer, then performing an octet by octet unsigned comparison with the first octet being most significant. Hanging octets are assumed to have value 0x80, but dimpled octets are ignored. 9.0 Error Handling There are two different types of errors in Diameter; protocol and applications. A protocol error isgiving upone that occurs at the base protocol level, and MAY require per hop attention (e.g. message routing error). Application errors, on therequest. DIAMETER_CANNOT_PROCESS_IN_TIME 5006 The time limitother hand, are generally occur due to a problem with a function specified in arequest's Max-Wait-Time AVP has expired, and no response is available. DIAMETER_NO_COMMON_EXTENSION 5007Diameter Calhoun et al. expiresOctoberDecember 2001 [Page46]55] Internet-DraftMayJune 2001This eventapplication (e.g. user authentication, Missing AVP). Result-Code AVP values that are used to report protocol errors MUST be used in the Message-Reject-Answer command. Unlike most Diameter commands, the Message-Reject-Answer does not have a corresponding request. When a request message isreturned whenreceived that causes aDRIprotocol error, the command code is changed to Message-Reject-Answer, 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. MRA | Relay 2 | +--------+ |Diameter |<-+ (Unable to Forward) +---------+ |Diameter| | | | Home | | Relay 1 |--+ +---------+ | Server | +---------+ | 3. Request |Diameter | +--------+ +-------------------->| | ^ | Relay 3 |-----------+ +---------+ Figure 4 - Example of Protocol Error causing MRA messageis received, and there are no common extensions supported between the peer. DIAMETER_UNSUPPORTED_VERSION 5008 This event is returned whenFigure 4 provides an example of aDRImessageis received, and theforwarded upstream by a Diameter relay. When the message isunsupported. 9.3 Failed-AVP AVP The Failed-AVP AVP (AVP Code 279) is of type Groupedreceived by Relay 2, andprovides debugging information in cases where ait detects that it cannot forward the requestis rejected or not fully processed duetoerroneous information in a specific AVP. The value of the Result-Code AVP will provide information onthereason for the Failed-AVP AVP. Failed-AVP = Offending-AVP Failed-Vendor-Id Offending-AVP = ; See Section 9.4 Failed-Vendor-Id = ; See Section 9.5 A Diameterhome server, an MRA messageMAY contain one or more Failed-AVP AVPs, each containing a completeis returned with the Result-Code AVP set to DIAMETER_UNABLE_TO_DELIVER. Given thatcould not be processed successfully. The possible reasons forthisAVP are the presence of an improperly constructed AVP, an unsupported or unrecognized AVP, an invalid AVP value, the omission of a required AVP,error falls within thepresence of an explicitly excluded AVP (see table 13.0), orprotocol error category, Relay 1 would take special action, and given thepresence of two or more occurrences of an AVP which table 15.1 restrictserror, attempt to0, 1, or 0-1 occurrences. +---------------------------------------------------------------+route the message through its alternate Relay 3. +---------+ 1. Request +---------+ 2. Request +---------+ |AVP Header (AVP Code = 279)Access |------------>|Diameter |------------>|Diameter |+---------------------------------------------------------------+|Offending-AVP AVP|+---------------------------------------------------------------+|Failed-Vendor-Id AVP|+---------------------------------------------------------------+ 9.4 Offending-AVP AVP The Offending-AVP AVP (AVP Code 271) is| Home | | Device |<------------| Relay |<------------| Server | +---------+ 4. Answer +---------+ 3. Answer +---------+ (Missing AVP) (Missing AVP) Figure 5 - Example of Application Error Answer message Figure 5 provides an example oftype OctetString and containsa Diameter message that caused an application error. When application errors occur, theoffending AVP. 9.5 Failed-Vendor-Id AVP The Failed-Vendor-Id AVP (AVP Code 262) is of type Unsigned32 and containsDiameter entity reporting theVendor-Id oferror clears the 'R' bit in the Command Flags, and adds the Result-Code AVPthat causedwith the proper value. Application errors do not require any proxy or relay agent involvement, and therefore theerror.Calhoun et al. expiresOctoberDecember 2001 [Page47]56] Internet-DraftMayJune 200110.0 "User" Sessions Diameter can provide two different type of servicesmessage would be forwarded back toapplications. The first involves authentication and authorization, and can optionally make use of accounting. The second only makes use of accounting. When a service makes use oftheauthentication and/or authorization portionoriginator ofan extension, and a user requests access to the network,theDiameter client issues an auth requestrequest. There are certain Result-Code AVP application errors that require additional AVPs toits local server. The auth request is defined in a service specific Diameter extension (e.g. NASREQ). The request contains a Session-Id AVP, which is usedbe present insubsequent messages (e.g. subsequent authorization, accounting, etc) relating totheuser's session. The Session-Idanswer, such as: - An unrecognized AVP isa means forreceived with theclient and servers'M' bit (Mandatory bit) set, causes an answer tocorrelate a Diameter messagebe sent witha user session. When a Diameter server authorizes a user to use network resources, it SHOULD addtheAuthorization-LifetimeResult-Code AVP set to DIAMETER_AVP_UNSUPPORTED, and theresponse. The Authorization-LifetimeFailed-AVP AVPdefines the maximum amount of time a user MAY make use ofcontaining theresources before another authorization requestoffending AVP. - An AVP that is received with an unrecognized value causes an answer to betransmitted to the server. If the server does not receive another authorization request beforereturned with thetimeout occurs, it SHOULD release any state information relatedResult-Code AVP set to DIAMETER_INVALID_AVP_VALUE, with theuser's session. Note thatFailed-AVP AVP containing theAuthorization-LifetimeAVPimplies how longcausing theDiameter servererror. - A command iswillingreceived with an AVP that is ommitted, yet is mandatory according topay for the services rendered, therefore a Diameter client SHOULD NOT expect payment for services rendered pastthesession expiration time.command's ABNF. Thebase protocol does not include any authorization request messages, since these are largely application-specific and are defined in a Diameter protocol extension document. However,receiver issues an answer with thebase protocol does define aResult-Code setof messages that are usedtoterminate 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 withDIAMETER_MISSING_AVP, and creates anextension,AVP with theSession-IdAVP Code and other fields set to the missing AVP's. The created AVP isstill usedthen added toidentify user sessions. However,thesession terminationFailed-AVP AVP. The Result-Code AVP contains additional errors conditions, and defines the expected behavior of each. 9.1 Result-Code AVP The Result-Code AVP (AVP Code 268) is of type Unsigned32 and indicates whether a particular request was completed successfully or whether an error occurred. All Diameter answer messagesare not used, sinceMUST include one Result-Code AVP. A non-successful Result-Code AVP (one containing asessionnon 2xxx value) MUST include the Error-Reporting-Host AVP if the host setting the Result-Code AVP issignaled as being terminated by issuing an accounting stop message. 10.1 Authorization Session State Machine This sectiondifferent from the identity encoded in the Origin-Host AVP. The Result-Code data field containsa finite state machine,an IANA-managed 32-bit address space representing errors (see section 15.4). Diameter provides thelife cyclefollowing classes ofDiameter sessions, and MUST be observed byerrors, allDiameter implementations that makes use ofidentified by theauthentication and/or Calhoun et al. expires October 2001 [Page 48] Internet-Draft May 2001 authorization portion of a Diameter extension. The term Service- Specific below refers to a messagethousands digit: - 1xxx (Informational) - 2xxx (Success) - 3xxx (Protocol Errors) - 4xxx (Transient Failures) - 5xxx (Permanent Failure) A non-recognize class (one whose first digit is not defined in this section) MUST be handled as aDiameter extension (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 response Pending Successful Service-Specific Grant Open Authorization response Access received Open Authorization-Lifetime about send Open to expire on access device service specific auth req Open Successful Service-Specific Extend Open Authorization response Access received Open Accounting message sent or process Open received Open Failed Service-Specific Discon. Closed Authorization response user/device received. Open Session-Timeout Expires on send STR Discon Access Device Open STI Received send STR Discon Open Session-Timeout or send STI Discon Authorization-Lifetime expires on home AAA server Discon STI Received ignore Disconpermanent failure. 9.1.1 Informational Calhoun et al. expiresOctoberDecember 2001 [Page49]57] Internet-DraftMayJune 2001Discon STR Received Send STA Closed Discon STA Received Discon. Closed user/device Closed TransitionErrors that fall within this category are used tostate Cleanup Wheninform theCleanuprequester that a request could not be satisfied, and additional action isinvoked, therequired on its part before access is granted. DIAMETER_MULTI_ROUND_AUTH 1001 This informational error is returned by a Diameternode MAY attemptserver torelease all resources forinform theparticular session. Any event not listed above MUST be considered as an error condition,access device that the authentication mechanism being used required multiple round trip, and aresponse, if applicable, MUSTsubsequent request needs to bereturnedissued in order for access tothe originator of the message. 10.2 Accounting Session State Machine For applicationsbe granted. 9.1.2 Success Errors thatonly require accounting services,fall within thefollowing state machine MUST be supported. 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 stopSuccess category are used to inform a peer that a requestsend Closed received, andhas been successfullyaccounting processed stop answer Discon Successful accounting discon. Closed stop answer received user/device Calhoun et al. expires October 2001 [Page 50] Internet-Draft Maycompleted. DIAMETER_SUCCESS 200110.3 Session-Id AVPTheSession-Id AVP (AVP Code 263) is of type OctetStringRequest was successfully completed. 9.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 usedto identifyin the Message-Rejected-Answer message, therefore aspecific session (see section 10.0).Diameter entity that wishes to return an error in this category MUST change the command code to Message-Rejected-Answer message. DIAMETER_INVALID_ROUTE_RECORD 3001 TheSession-Id data useslast Route-Record AVP in theUTF-8 [24] character set. All messages pertainingmessage is not set to the identity of the sender of the message. See Section 11.0 for more information. DIAMETER_COMMAND_UNSUPPORTED 3002 The Request contained aspecific session MUST include only one Session-Id AVP andCommand-Code that thesame value MUSTreceiver did not recognize or support. DIAMETER_UNABLE_TO_DELIVER 3003 The request could not beused throughoutdelivered to a host that handles theliferealm, and application, requested at this time. DIAMETER_REALM_NOT_SERVED 3004 The intended realm ofa session. When present,theSession-Idoffending message is unknown. DIAMETER_TOO_BUSY 3005 When returned, a Diameter node SHOULDappear immediately followingattempt to sent theDiameter Header (see section 3.0). For messages that do not pertainmessage to an alternate peer. Calhoun et al. expires December 2001 [Page 58] Internet-Draft June 2001 DIAMETER_INVALID_CMS_DATA 3006 The Request did not contain aspecific session, multiple Session-Id AVPsvalid 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 bepresent as long as they are encapsulated withinsent to anAVPalternate peer, if one is available, but the peer reporting the error has identified a configuration problem. DIAMETER_END_2_END_SECURITY 3008 A proxy has detected that end-to-end security has been applied to portions oftype Grouped. The Session-Id MUST be globally unique at any given timethe Diameter message, and the proxy does not allow this security mode since itis usedneeds to alter the message by applying some local policies. 9.1.4 Transient Failures Errors that fall within theservertransient failures category are used toidentify the session (or flow). The format ofinform a peer that thesession identifier SHOULDrequest could not beas follows: <Sender's Origin-FQDN><sender's port number> <monotonically increasing 32 bit value><optional value> The monotonically increasing 32 bit value SHOULD NOT start at zero upon reboot, but rather startsatisfied ata random value. This will minimizethepossibility of overlapping Session-Ids after a reboot. Alternatively, an implementationtime it was received, but MAYkeep track ofbe able to satisfy theincreasing valuerequest innon-volatile memory. The optional value is implementation specific but may include a modem's device Id, a layer 2 address, timestamp, etc. The session Id is created bytheDiameter device initiatingfuture. DIAMETER_AUTHENTICATION_REJECTED 4001 The authentication process for thesession, which inuser failed, mostcases is donelikely due to an invalid password used by theclient. Note that a Session-Id MAYuser. Further attempts MUST only beused by more than one extension (e.g. authenticationtried after prompting the user for aspecific service and accounting, both of which have separate extensions). 10.4 Authorization-Lifetime AVP The Authorization-Lifetime AVP (AVP Code 291) is of type Unsigned32 and containsnew password. DIAMETER_OUT_OF_SPACE 4002 A Diameter node received themaximum number of seconds of serviceaccounting request but was unable tobe providedcommit it to stable storage due to a temporary lack of space. 9.1.5 Permanent Failures Errors that fall within the permanent failures category are used to inform theuser beforepeer that theuser is to be re-authenticated and/or re- authorized. Great carerequest failed, and should not betaken when the Authorization- Lifetime valueattempted again. DIAMETER_USER_UNKNOWN 5001 A request was received for a user that isdetermined, sinceunknown, therefore authentication and/or authorization failed. DIAMETER_AVP_UNSUPPORTED 5002 The peer received alow value could create significant Diameter traffic, which could congest both the network and the servers. If both thismessage that contained an AVP that is not recognized or supported and was marked with theSession-TimeoutMandatory bit. A Diameter message with this error MUST contain one or more Failed-AVP AVPare present in a message, the value ofcontaining thelatter MUST NOT be smaller thanAVPs that caused the failure. Calhoun et al. expiresOctoberDecember 2001 [Page51]59] Internet-DraftMayJune 2001Authorization-Lifetime AVP. This AVP MAY be provided byDIAMETER_UNKNOWN_SESSION_ID 5003 The request contained an unknown Session-Id. DIAMETER_AUTHORIZATION_REJECTED 5004 A request was received for which theclient as a hint ofuser could not be authorized. This error could occur if themaximum duration that itservice requested iswillingnot permitted toaccept. However,theserver DOES NOT have to observeuser. 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 include thehint, and MAY returnoffending AVPs within avalueFailed-AVP AVP. DIAMETER_MISSING_AVP 5006 The request did not contain an AVP that issmaller thanrequired by thehint. A value of zero means that no re-authorization is required. 10.5 Session-Timeout AVP The Session-Timeout AVP (AVPCommand Code27) [1]definition. If this value isof type Unsigned32 and containssent in themaximum number of seconds of service toResult- Code AVP, a Failed-AVP AVP SHOULD beprovided toincluded in theuser before terminationmessage. The data portion of thesession. A session terminated due to the Session-Timeout expirationFailed-AVP MUSTNOT generate a re- authentication and/or re-authorization.contain an AVP header containing the AVP Code and vendor-Id. DIAMETER_AUTHORIZATION_FAILED 5007 Avalue of zero, orrequest was received for which theabsence of this AVP, means thatuser could not be authorized at thissession has an unlimited number of seconds before termination.time. ThisAVP MAY be provided byerror could occur when theclient asuser has already expended allowed resources, or is only permitted to access services within ahint oftime period. DIAMETER_CONTRADICTING_AVPS 5008 The Home Diameter server has detected AVPs in themaximum durationrequest thatitcontradicted each other, and is not willing toaccept. However, the server DOES NOT haveprovide service toobservethehint, and MAY return a value that is smaller thanuser. One or more Failed-AVP AVPs MUST be present, containing thehint. 10.6 User-NameAVPs that contradicted each other. DIAMETER_AVP_NOT_ALLOWED 5009 A message was received with an AVP that MUST NOT be present. TheUser-NameFailed-AVP AVP MUST be included and contain the AVP(AVPCode1) [1] isoftype OctetString, which containstheUser-Name. The value is represented as a UTF-8 character encoded stringoffending AVP. DIAMETER_AVP_OCCURS_TOO_MANY_TIMES 5010 A message was received that included an AVP that appeared more often than permitted ina format consistent withtheNAI specification [8]. 10.7 Max-Wait-Time AVP The Max-Wait-Time AVP (AVP Code 295) is of type Unsigned32,message definition. The Failed-AVP AVP MUST be included andcontainscontain themaximum numberAVP Code ofmillisecondsthedownstream server is willing to wait for a response. Aoffending AVP. DIAMETER_VENDOR_ID_UNSUPPORTED 5011 The Home Diameter serverthat determines that it cannot satisfy a request withinhas detected vendor-specific AVPs in therequested time MUST issue a DSI message withmessage, and theDSI-Event set to DIAMETER_STILL_WORKINGvendor dictionary is not supported. One orDIAMETER_CANNOT_PROCESS_IN_TIME. 10.8 Session Termination The Diameter Base Protocol provides a set of messages thatmore Failed-AVP MUST beused by any peer to explicitly request that a previously authenticated and/or authorized session be terminated. Sincepresent, containing the offending AVPs. Calhoun et al. expiresOctoberDecember 2001 [Page52]60] Internet-DraftMayJune 2001Session-IdDIAMETER_UNSUPPORTED_TRANSFORM 5012 A message was received that included an CMS-Data AVP [11] that made use of an unsupported transform. DIAMETER_NO_COMMON_APPLICATION 5013 This error istypically tied toreturned when aparticular service (i.e. Mobile IP, NASREQ, etc), the session termination messagesCEA message is received, and there areused to request that the service tied tono common applications supported between theSession Id be terminated. Session Termination MAY be initiated by a Diameter server, by issuingpeer. DIAMETER_UNSUPPORTED_VERSION 5014 This error is returned when aSession-Termination-Ind (STI)CEA messagetois received, and theaccess device. An access device MUST issue a Session-Termination-Request (STR)Diameter messageeither upon receipt of an STI, or when service to a particular useristerminated. A Diameter server MUST clean up resources (e.g. session state) if a session's authorization lifetime has expired, and no STR was received.unsupported. DIAMETER_UNABLE_TO_COMPLY 5015 Thisevent could occur if an access device was to unexpectedly reboot. An access device MUST issue Session-Termination-Request messages for all active session prior to an orderly reboot. 10.8.1 Session-Termination-Inderror is returned when a request is rejected for unspecified reasons. 9.2 Message-Reject-Answer TheSession-Termination-Ind (STI),Message-Reject-Answer (MRA), indicated by the Command-Code set to274282, and themessage flags' 'I'Command Flags' 'R' bitset, MAY becleared, is sentby any Diameter entity to the access devicein response to a request that has caused aparticular session be terminated. This message MAY beprotocol error. Although the command code is different from the one found in the request, the same procedures usedwhen a server detects that a session MUST be terminated, whichin issuing an answer message istypically done as a policy decision (e.g. local resources have been expended, etc).followed. TheDestination-FQDNResult-Code AVP MUST be present, andcontaininclude a value in thefully qualified domain name of"Protocol Error" category. Proxies receiving an MRA message MAY attempt to rectify theaccess deviceerror reported, if possible. In the event thatinitiatedno proxy is able to correct thesession (see section 10.0). A Failed STI would containproblem, thesame Command-Code, but would require that only be 'F' bitMRA will beset. Upon receipt ofreturned to theSTI message,originator of theaccess device MUST issue a Session-Terminate-Requestrequest message. Message FormatCalhoun et al. expires October 2001 [Page 53] Internet-Draft May 2001 <Session-Termination-Ind><Message-Reject-Answer> ::= < Diameter Header:274, I282 > < Session-Id > {Origin-FQDNOrigin-Host } { Origin-Realm } {User-Name } { Destination-RealmResult-Code } {Destination-FQDNDestination-Host }* [ AVP ] *[Proxy-InfoOrigin-State-Id ] * [Route-RecordAVP ]10.8.2 Session-Termination-Request9.3 Error-Message AVP TheSession-Termination-Request (STR), indicatedError-Message AVP (AVP Code 281) is of type OctetString. It is a Calhoun et al. expires December 2001 [Page 61] Internet-Draft June 2001 human readable UTF-8 character encoded string. 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.4 Error-Reporting-Host AVP The Error-Reporting-Host AVP (AVP Code 294) is of type OctetString, encoded in theCommand-Code setUTF-8 [24] format, according to275 andthemessage flags' 'R' bit set, is sent byDiameter identity rules defined in section 2.7. This AVP contains theaccess device to informidentity of the DiameterServerhost thatan authenticated and/or authorized session is being terminated. Ifset theSTR messageResult-Code AVP to a value other than 2001 (Success), only if the host setting the Result-Code isgenerated upon receipt of an STI,different from theRoute- Record AVPsone encoded in theSTIOrigin-Host AVP. This AVP is intended to be used for troubleshooting purposes, and MUSTNOTbeadded toset when theSTR. Message Format <Session-Termination-Request> ::= < Diameter Header: 275, R > < Session-Id > { Origin-FQDN } { Origin-Realm } { User-Name } { Destination-Realm } { Destination-FQDN } [ Max-Wait-Time ] * [Result- Code AVP indicates a failure. 9.5 Failed-AVP AVP] * [ Proxy-Info ] * [ Route-Record ] 10.8.3 Session-Termination-AnswerTheSession-Termination-Answer (STA), indicated by the Command-Code set to 275Failed-AVP AVP (AVP Code 279) is of type Grouped andthe message flags' 'A' bit set,provides debugging information in cases where a request issent by the Diameter Serverrejected or not fully processed due toacknowledge that the session has been terminated.erroneous information in a specific AVP. The value of the Result-Code AVPMUST be present, andwill 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 (see table 12.0), or the presence of two or more occurrences of an AVP which table 14.1 restricts to 0, 1, or 0-1 occurrences. A Diameter message MAY containan indicationone Failed-AVP AVP, containing the entire AVP thatan error occurred while servicingcould not be processed successfully. If theSTR. Upon sending or receiptfailure reason is omission of a required AVP, an AVP with theSTA, the Diameter Server MUST release all resources formissing AVP code, thesession indicated bymissing vendor id, and a zero filled payload of theSession-Id AVP. Any intermediate server inminimum required length for theProxy-Chain MAY also release anyommitted AVP will be added. AVP Format <Failed-AVP> ::= < AVP Header: 279 > 1* {AVP} 10.0 "User" Sessions Diameter can provide two different type of services to applications. Calhoun et al. expiresOctoberDecember 2001 [Page54]62] Internet-DraftMayJune 2001resources, if necessary. Message Format <Session-Termination-Answer> ::= <The first involves authentication and authorization, and can optionally 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 DiameterHeader: 275, A > <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> { Result-Code } { Origin-FQDN } { Origin-Realm } { Destination-FQDN } { User-Name } * [ AVP ] * [ Proxy-Info ] * [ Route-Record ] 11.0 Message Routing This section describesAVP, which is used in subsequent messages (e.g. subsequent authorization, accounting, etc) relating to theexpected behavior ofuser's session. The Session-Id AVP is aDiameter server acting asmeans for the client and servers to correlate aproxy or redirect server. 11.1 Realm-Based Message RoutingDiameterrequest and indicationmessagerouting is done via realms. Awith a user session. When a Diameterentity creatingserver authorizes amessage that is proxyable MUST includeuser to use network resources, it SHOULD add therealm inAuthorization-Lifetime AVP to theDestination-Realm AVP.answer message. Therealm MAY be retrieved from the User-Name AVP, which is inAuthorization-Lifetime AVP defines theformmaximum amount of time aNetwork Access Identifier (NAI). The realm portionuser MAY make use of theNAIresources before another authorization request isinserted into be transmitted to the server. If the server does not receive another authorization request before the timeout occurs, it SHOULD release any state information related to the user's session. Note that the Authorization-Lifetime AVP implies how long theDestination-Realm AVP.Diameterservers haveserver is willing to pay for the services rendered, therefore alist of locally supported realms,Diameter client SHOULD NOT expect payment for services rendered past the session expiration time. The base protocol does not include any authorization request messages, since these are largely application-specific andMAY haveare defined in alist of externally supported realms. WhenDiameter application document. However, the base protocol does define arequest or indication message is receivedset of messages thatincludes a realmare used to terminate user sessions. These are used to allow servers thatis not locally supported, the message is proxiedmaintain state information to free resources. When a service only makes use of the Accounting portion of the Diameterentity configuredprotocol, even inthe "route" table (see section 11.1.1). Figure 2 depicts an example where NAS iscombination with anaccess device and receives a request for network access from jow@abc.com. NAS looks up "abc.com" in its local realm route table and determines that the message must be proxied to PRS (Proxy Server). PRS does the same check, and proxiesapplication, themessageSession-Id is still used toHMS (Home Server). HMS checks its realm route table, and determines thatidentify user sessions. However, therealmsession termination messages are not used, since a session islocally supported, and processessignaled as being terminated by issuing an accounting stop message. 10.1 Authorization Session State Machine This section contains a finite state machine, representing theauthentication request,life cycle of Diameter sessions, andreturns the response. How the response actuallyMUST be observed by all Diameter implementations that makesit back to the senderuse of theoriginal request is describedauthentication 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). Calhoun et al. expires December 2001 [Page 63] Internet-Draft June 2001 The following table contains thenext section.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 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-Lifetime about send Open to expire on access device service specific auth req Open Successful Service-Specific Extend Open Authorization answer Access received Open Accounting message sent or process Open received Open Failed Service-Specific Discon. Closed Authorization answer user/device received. Open Session-Timeout Expires on send STR Discon Access Device Open SKR Received send SKA, Discon STR Open Session-Timeout or Cleanup Discon Calhoun et al. expiresOctoberDecember 2001 [Page55]64] Internet-DraftMayJune 2001(Origin-FQDN=nas.mno.net) (Origin-FQDN=nas.mno.net) (Origin-Realm=mno.net) (Origin-Realm=mno.net) (Destination-Realm=abc.com) (Destination-Realm=abc.com) (Route-Record=prs.mno.net) +------+ ------> +------+ ------> +------+ | | (Request) | | (Request) | | | NAS +-------------------+ PRS +-------------------+ HMS | | | | | | | +------+ <------ +------+ <------ +------+ mno.net (Answer) mno.net (Answer) abc.com (Origin-FQDN=hms.abc.com) (Origin-FQDN=hms.abc.com) (Origin-Realm=abc.com) (Origin-Realm=abc.com) (Destination-FQDN=nas.mno.net) (Destination-FQDN=nas.mno.net) (Route-Record=prs.mno.net) Figure 2: Realm-Based Routing The above example can also be used for Indication and Failed- Indication messages. 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, and still be in compliance with the protocol specification. 11.1.1 Realm-Based Routing Table All Realm-Based routing lookups are performed against what is commonly known as the Domain Routing Table (see section 18.0). A Domain Routing Table Entry contains the following fields: - Domain Name. The Domain Name is analogous to the realm portion of the NAI. This is the field that is typically used as a primary key in the routing table lookups. Note that some implementations perform their lookups based on longest-match- from-the-rightAuthorization-Lifetime expires onthe realm rather than requiring an exact match. - Extension Identifier. It is possible for a routing entryhome AAA server Open SKA Received Cleanup Closed Discon SKR Received ignore Discon Discon STR Received Send STA Closed Discon STA Received Discon. Closed user/device Closed Transition tohave a different destination based on the Auth-Extension-Id (for accounting messages) or Acct-Extension-Id (for non-accounting messages) ofstate Cleanup When themessage. This field is typically used as a secondary key field in routing table lookups. - Local Action. The Local Action fieldCleanup action isused to identify how a message should be treated. The following actions are supported: 1. LOCAL -invoked, the Diametermessages that resolvenode MAY attempt toa routing entry withrelease all resources for theLocal Action set to Local canparticular session. Any event not listed above MUST besatisfied locally,considered as an error condition, anddo not need toan answer, if applicable, MUST beforwardedreturned toanother server. 2. PROXY - All Diameter messagesthe originator of the message. 10.2 Accounting Session State Machine For applications thatfall within this categoryonly require accounting services, the following state machine MUST beforwarded to a next hop server. The localsupported. Calhoun et al. expiresOctoberDecember 2001 [Page56]65] Internet-DraftMayJune 2001server MAY apply its local policies to the message by including new AVPs to the message prior to forwarding. See section 11.4 for more information. 3. REDIRECT - Diameter messages that fall within this category MUST have the identityState 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/device 10.3 Session-Id AVP The Session-Id AVP (AVP Code 263) is ofthe home Diameter server(s) appended,type OctetString andreturnedis used tothe sender of the message. Seeidentify a specific session (see section11.3 for more information. - Server Identifier - One or more servers10.0). The Session-Id data uses themessage isUTF-8 [24] character set. All messages pertaining tobe forwarded to. Whena specific session MUST include only one Session-Id AVP and theLocal Action is set to PROXY, this field containssame value MUST be used throughout theidentitieslife ofthe server(s) the message must be forwarded to.a session. When present, theLocal Action field is set to REDIRECT, this field containsSession-Id SHOULD appear immediately following theHomeDiameterserver(s) for the realm. It is important to noteHeader (see section 3.0). For messages thatDiameter servers MUST support at least one of the PROXY, REDIRECT, or LOCAL modes of operation. Serversdo notneedpertain tosupport all modesa specific session, multiple Session-Id AVPs MAY be present as long as they are encapsulated within an AVP ofoperation in order to conform with the protocol specification. Serverstype Grouped. The Session-Id MUSTNOT reorder AVPsbe 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 withthe same AVP Code. Whenaccounting information. The Session-Id includes a Calhoun et al. expires December 2001 [Page 66] Internet-Draft June 2001 mandatory portion and an implementation-defined portion; amessage is being proxied,recommended format for theservers in a given domain routing entryimplementation-defined portion is outlined below. The Session-Id MUSThave advertisedbegin with theExtension Identifiersender's identity (see section6.1) for the given message, or have advertised the Wildcard Extension. 11.2 Proxy and Redirect Server handling of requests When a message2.7). The remainder oftype request or indication is received by a proxy or redirect server, and it is determined thattherequest cannotSession-Id MAY belocally handled, the next hop forany sequence that therequest is determined inclient can guarantee to be eternally unique; however, the followingorder: 1. If the Destination-FQDN AVPformat ispresent,recommended, (square brackets [] indicate an optional element): <client FQDN>[:<port>];<high 32 bits>;<low 32 bits>[;<optional value>] <high 32 bits> and <low 32 bits> are decimal representations of thehost specifiedhigh 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, theAVP can be directly contacted,high 32 bits of themessage is forwarded64-bit value MAY be initialized to thehost (see section 5.1time, and the low 32 bits MAY be initialized to 0. This will formore information), or 2. Ifpractical purposes eliminate theDestination-Realm AVP is present,possibility of overlapping Session-Ids after arouting table lookup is performed using the domain specific inreboot, assuming theAVP. A message that does not contain anyreboot process takes longer than a second. Alternatively, an implementation MAY keep track of theabove AVPs MUST NOT be routed. If the messageincreasing value inquestion cannot be handled locally, an answer or failed indication is sent with the Result-Code AVP set to an appropriate error condition. 11.3 Redirect Server A Redirect Servernon-volatile memory. <optional value> isone that provides Realm to Diameter Home Server address resolution. Whenimplementation specific but may include amessage is received bymodem's device Id, apeer, the Destination-Realm AVP (or the User-Name AVP iflayer 2 address, timestamp, etc. Example, in which theDestination-Realm Calhoun et al. expires October 2001 [Page 57] Internet-Draft May 2001 AVP is not present)standard port isextracted from the message,used and there isused to perform a lookupno optional value: accesspoint7.acme.com;1876543210;523 Example, 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 thedomain routing table. Implementations MAY also useDiameter device initiating theExtension Identifiers as a secondary keysession, which in most cases is done by thedomain routing table lookup. Successful routing table lookups will return one or more home Diameter serversclient. Note thatcould satisfya Session-Id MAY be used for both themessage.authorization and accounting commands of a given application. 10.4 Authorization-Lifetime AVP Thehome servers are encoded in one or more Redirect-Host AVPs,Authorization-Lifetime AVP (AVP Code 291) is of type Unsigned32 and contains theCommand-Code field is setmaximum number of seconds of service to be provided toDevice-Status-Ind. The Hop-by-Hop field intheDiameter headeruser before the user issetto be re-authenticated and/or re- authorized. Great care should be taken when the Authorization- Calhoun et al. expires December 2001 [Page 67] Internet-Draft June 2001 Lifetime valuefound in the message causing the redirect. +------------------+ | Diameter | | Redirect Server | +------------------+ ^ | Request | | DSI + joe@xyz.com | | DSI-Event = Redirect + | | Redirect-Host AVP(s) | v +----------+ Request +----------+ | abc.net |------------->| xyz.net | | Diameter | | Diameter | | Server |<-------------| Server | +----------+ Answer +----------+ Figure 3: Diameter Redirect Server Lastly, the DSI-Event AVPisadded withdetermined, since a low value could create significant Diameter traffic, which could congest both theData field ofnetwork and the agents. If both this AVPset to DIAMETER_REDIRECT_INDICATION,and themessage is returned to the sender of the request. Redirect servers MAY also include the certificate of the Home server(s). These certificatesSession-Timeout AVP areencapsulatedpresent in aCMS-Cert AVP [11]. When this occurs,message, theserver forwardingvalue of therequest directly tolatter MUST NOT be smaller than theHome Diameter server SHOULD include its own certificate inAuthorization-Lifetime AVP. This AVP MAY be provided by themessage. The receiverclient as a hint of theDSI message with the DSI-Event AVP setmaximum duration that it is willing toDIAMETER_REDIRECT_INDICATION uses the hop-by-hop field inaccept. However, theDiameter headerserver DOES NOT have toidentifyobserve themessage inhint, and MAY return a value that is smaller than thepending message queue (see Section 7.3)hint. A value of zero means that no re-authorization isto be redirected. 11.3.1 Redirect-Hostrequired. 10.5 Session-Timeout AVP TheRedirect-HostSession-Timeout AVP (AVP Code292)27) [1] is of typeGroupedUnsigned32 andis found in Device-Status-Ind messages that includecontains theDSI-Event AVP set to DIAMETER_REDIRECT_INDICATION. This AVP only needsmaximum number of seconds of service to beused ifprovided to thehostuser before termination of themessage is to be redirectedsession. A session terminated due tois not listening onthestandard Diameter port. Its Data field hasSession-Timeout expiration MUST NOT generate a re- authentication and/or re-authorization. A value of zero, or thefollowing ABNF Calhoun et al. expires October 2001 [Page 58] Internet-Draft May 2001 grammar: Redirect-Host = Redirect-Host-Address Redirect-Host-Port Redirect-Host-Address = ; See Section 11.3.2 Redirect-Host-Port = ; See Section 11.3.3 The Redirect-Host-Addressabsence of this AVP, means that this session has an unlimited number of seconds before termination. This AVPData field containsMAY be provided by theIP Addressclient as a hint of theDiameter hostmaximum duration that it is willing towhich the request MUST be redirected. The Redirect-Host-Port containsaccept. However, theport numberserver DOES NOT have towhichobserve therequest should be sent. Upon receipt of such a event,hint, andthis AVP, the receiving host SHOULD send the request directly to the host identified byMAY return a value that is smaller than theRedirect-Host-Address AVP. +---------------------------------------------------------------+ | AVP Header (AVP Code = 292) | +---------------------------------------------------------------+ | Redirect-Host-Address AVP | +---------------------------------------------------------------+ | Redirect-Host-Port AVP | +---------------------------------------------------------------+ 11.3.2 Redirect-Host-Addresshint. 10.6 User-Name AVP TheRedirect-Host-AddressUser-Name AVP (AVP Code278)1) [1] is of typeAddress. Its use is described in Section 11.3.1. 11.3.3 Redirect-Host-Port AVPOctetString, which contains the User-Name. TheRedirect-Host-Port AVP (AVP Code 277) is of type Unsigned32. Its usevalue isdescribedrepresented as a UTF-8 character encoded string inSection 11.3.1. 11.4 Proxy Server This section outlinesa format consistent with theprocessing rulesNAI specification [8]. 10.7 Session Termination It is necessary for a Diameterproxy servers. A proxy server can either be stateful or stateless. A ProxyserverMAY act in a stateful manner for some requests, and be stateless for others. There are two types of states that servers MAY wish to maintain; transaction and session. Maintaining transaction state impliesthat authorized aserver keeps a copy of a request messages, which is then used when the corresponding response is received. Maintaining transaction state also requires that the Hop-by-Hop identifier MUST be saved, and restoredsession toits original valuebe notified whenthe corresponding response messagethat session isreceived. A Proxy server MAY also add a Proxy-Info AVPno longer active, both for tracking purposes as well as to allow stateful agents torequest message, but MUST removerelease any resources that they may have provided for theAVP inuser's session. When a user session that required Diameter authorization terminates, thecorresponding response.access device that provided the service MUST issue a Session- Calhoun et al. expiresOctoberDecember 2001 [Page59]68] Internet-DraftMayJune 2001Maintaining session state implies that aTermination- Request (STR) message to the Diameter serverkeeps track of all "active" users.that authorized the service, to notify it that the session is no longer active. AnactiveSTR MUST be issued when a useris onesession 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 thathas beenwas authorized but never actually started. This could occur, for example, due to aparticular service, andsudden resource shortage in theserver hasaccess device, or because the access device is unwilling to provide the type of service requested in the authorization, or because the access device does notreceived any indicationsupport 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 theuser has relinquished access.result from success to failure, prior to forwarding the message to the access device. Astatelessproxyis onethatdoes not maintaincauses an authorized sessionstate, but MUST maintain transaction state. Transaction state SHOULDnot to bereleased after a request's corresponding response has been forwarded towardsstarted MUST issue an STR to therecipient, andDiameter server that authorized the session, since the access device hasbeen acknowledged byno way of knowing that theunderlying transport.session had been authorized. Astateful proxy is oneDiameter server thatmaintains both transaction andreceives an STR message MUST clean up resources (e.g., sessionstate,state) associated with thelatter being done by observing requestSession-Id specified in the STR, andresponses. Session state SHOULD be released once it is informed thatreturn auser and/or device has relinquished access.Session-Termination-Answer. AstatefulDiameter serverMAY provide the following features: - Protocol translation (e.g. RADIUS <-> Diameter) - Limitingalso MUST clean up resourcesauthorized to a particular user - Per userwhen the Session- Timeout expires, ortransaction auditing Home servers processing requests that includewhen theRoute-Record and/orAuthorization-Lifetime expires without re-authorization, regardless of whether an STR for that session is received. The access device is not expected to provide service beyond theProxy-Info AVPs MUST returnexpiration of theseAVPs intimers; thus, expiration of either of these timers implies that thesame order inaccess device may have unexpectedly shut down. 10.7.1 Session-Termination-Request The Session-Termination-Request (STR), indicated by thecorresponding response. 11.4.1 Proxying Request and Indication messages In additionCommand-Code set to 275 and therules defined in section 11.2, the following procedures MUST be handledCommand Flags' 'R' bit set, is sent by the access device to inform the Diameter Server that an authenticated and/or authorized session is being terminated. Message Format Calhoun et al. expires December 2001 [Page 69] Internet-Draft June 2001 <Session-Termination-Request> ::= < Diameter Header: 275, REQUEST > < Session-Id > { Origin-Host } { Origin-Realm } { Destination-Realm } { Destination-Host } { User-Name } { Termination-Cause } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ] 10.7.2 Session-Termination-Answer The Session-Termination-Answer (STA), indicated byproxy servers handling messages of type request or indication. Failed indications followtheproceduces in section 11.4.2. A proxy server MUST check for forwarding loops before proxying a request or indication message. Such as message has been looped ifCommand- Code set to 275 and theserver finds its own address in a Route-Record AVP. A Diameter server that proxies a request or indicationmessageMUST append a Route-Record AVP, which includes its identity.flags' 'R' bit clear, is sent by the DiameterServersServer to acknowledge the notification thatreceive messages MUST validatethelast Route-Recordsession has been terminated. The Result-Code AVPin the messageMUST be present, andensureMAY contain an indication that an error occurred while servicing thehost identified inSTR. Upon sending or receipt of theAVP isSTA, thesame asDiameter Server MUST release all resources for thesender ofsession indicated by themessage. A Proxy ServerSession-Id AVP. Any intermediate server in the Proxy-Chain MAY alsoinclude the Proxy-Inforelease any resources, if necessary. Message Format <Session-Termination-Answer> ::= < Diameter Header: 275 > < Session-Id > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } { User-Name } [ Origin-State-Id ] * [ AVPin] * [ Proxy-Info ] * [ Route-Record ] 10.8 Aborting arequest message, which is used to encode local state information. The Proxy- Info AVP is guaranteed to be present in the corresponding response. The message is then forwarded to the downstreamSession A Diameterserver, as identified inserver may request that theDomain Routing Table.access device stop providing service for a particular session by issuing an Abort-Session-Request (ASR). Calhoun et al.expires October 2001 [Page 60] Internet-Draft May 2001 Proxy Server MUST save the Hop-by-Hop Identifier in request messages, if the value ofexpires December 2001 [Page 70] Internet-Draft June 2001 For example, thefield is changed, with a locally unique value. The saved identifier MAY be encoded inDiameter server that originally authorized theProxy-Info AVP, and willsession may be requiredin the processing ofto cause that session to be stopped for credit or other reasons that were not anticipated when thecorresponding response. 11.4.2 Proxying Answer and Failed Ind messages A proxysession was first authorized. Or, an operator may maintain a management serverMUST only process messages of type Answer, or Ind messages withfor the'F' bit, whose last Route-Record AVP matches onepurpose ofits identities. Any responses that do not conformissuing ASRs tothis rule MUST be dropped. The last Route-Record AVP MUST be removedadministratively remove users from themessage before it is forwardednetwork. An access device that receives an ASR with Session-ID equal to a currently active session MAY stop thenext hop, which is identified by the second to last Route-Record AVP. Ifsession. Whether thelast Proxy-Info AVP inaccess device stops themessagesession or not istargeted to the local Diameter server,implementation- and/or configuration- dependent. For example, an access device may honor ASRs from certain agents only. In any case, theAVPaccess device MUSTbe removed. If a proxy server receives a responserespond with an Abort-Session-Answer, including a Result-Code AVPindicating a failure,to indicate what action itMUST NOT modifytook. Note that if thecontentsaccess device does stop the session upon receipt of an ASR, it issues an STR to theAVP. Any additional local errors detected SHOULD be logged, butauthorizing server (which may or may notreflected inbe the agent issuing the ASR) just as it would if the session were terminated for any other reason. 10.8.1 Abort-Session-Request The Abort-Session-Request (ASR), indicated by the Command-Code set to 274 and theResult-Code AVP. Priormessage flags' 'R' bit set, may be sent by any server toforwardingtheresponse, proxy servers MUST restoreaccess device that is providing session service, to request that theoriginal value ofsession identified by the Session-Id be stopped. Message Format <Abort-Session-Request> ::= < Diameterheader's Hop-by-Hop Identifier field. 11.4.3 Route-RecordHeader: 274, REQUEST > < Session-Id > { Origin-Host } { Origin-Realm } { Destination-Realm } { Destination-Host } [ Origin-State-Id ] * [ AVPThe] * [ Proxy-Info ] * [ Route-RecordAVP (AVP Code 282) is of type OctetString, encoded in the UTF-8 [24] format, and contains the Fully Qualified Domain Name of the Proxy appending this AVP to a Diameter message.] 10.8.2 Abort-Session-Answer TheFQDN added in this AVP MUST beAbort-Session-Answer (ASA), indicated by thesame asCommand-Code set to 274 and theFQDNmessage flags' 'R' bit clear, is sent in response to theOrigin- FQDN in the Device-Reboot-Ind message. 11.4.4 Proxy-Info AVP The Proxy-Info AVP (AVP Code = 284) is of type Grouped. The Grouped Data field has the following ABNF grammar: Proxy-Info = Proxy-Address Proxy-State Proxy-Address = ; See Section 11.4.5 Proxy-State = ; See Section 11.4.6ASR. TheProxy-AddressResult-Code AVPData field contains one ofMUST be present, and indicates theIP addressesdisposition of thesystem that created the AVP. This assists hosts in determining whether a Proxy-Info AVP is intended for the local host. The Proxy-request. Calhoun et al. expiresOctoberDecember 2001 [Page61]71] Internet-DraftMayJune 2001State AVP contains state information, and MUST be treated as opaque data. +---------------------------------------------------------------+ | AVP Header (AVP Code = 284) | +---------------------------------------------------------------+ | Proxy-Address AVP | +---------------------------------------------------------------+ | Proxy-State AVP | +---------------------------------------------------------------+ 11.4.5 Proxy-Address AVP The Proxy-Address AVP (AVP Code = 280)If the session identified by Session-Id in the ASR was successfully terminated, Result-Code isof type Address. Its useset to DIAMETER_SUCCESS. If the session isdescribed in Section 11.4.4. 11.4.6 Proxy-State AVP The Proxy-State AVP (AVP Code = 33)not currently active, Result-Code isof type OctetString. Its useset to DIAMETER_UNKNOWN_SESSION_ID. If the access device does not stop the session for any other reason, Result-Code isdescribed in Section 11.4.4. 11.4.7 Destination-Realmset to DIAMETER_UNABLE_TO_COMPLY. Message Format <Abort-Session-Answer> ::= < Diameter Header: 274 > < Session-Id > { Result-Code } { Origin-Host } { Origin-Realm } { Destination-Host } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ] 10.9 Termination-Cause AVP TheDestination-RealmTermination-Cause AVP (AVP Code283)295) is of typeOctetString, encoded in the UTF-8 [24] format,Unsigned32, andcontainsis used to indicate therealmreason why a session was terminated on themessageaccess 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 tobe routed to. The Destination-Realm AVP MUST NOT be present in Answer or failed Indication messages. Diameter Clients inserttherealm portionreceipt of theUser-Name AVP. Home servers initiating a request or indication message use theauthorization answer message. DIAMETER_BAD_ANSWER 3 This valueofindicates that theOrigin-Realm AVP from a previous messageauthorization answer receivedfrom the intended target host (unless it is known a priori). When present, the Destination-Realm AVP is used to perform message routing decisions. 11.5 Applying Local Policies Proxies MAY apply local access policies to Diameter requests, or responses,byadding, changing or deleting AVPs inthemessages. Proxies that apply local policies MUST NOT allow end-to-end security on any messages that traverse through it, unless security is terminated locally. A proxy wishing to modify a Diameter message to enforce some local policy that detects that end-to-end security has been appliedaccess device was not processed successfully. DIAMETER_ADMINISTRATIVE 4 The user was not granted access, or was disconnected, due to administrative reasons, such as themessage MUST returnreceipt of aresponseSession-Kill- Request message. DIAMETER_LINK_BROKEN 5 The communication to theoriginator with the Result-Codeuser was abruptly disconnected. 10.10 Inferring Session Termination from Origin-State-Id Calhoun et al. expiresOctoberDecember 2001 [Page62]72] Internet-DraftMayJune 2001setOrigin-State-Id is used toDIAMETER_END_2_END_SECURITY. The originatorallow 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 therequest MAY re-issuedevice has lost its sessions since the last connection. By including Origin-State-Id in request messages, an access device also allows a server withno end-to-end security ifwhich itfalls within its local policy. Incommunicates via proxy to make such a determination. However, a server that is not directly connected with theeventaccess device will not discover that theHome Diameter serveraccess device has been restarted unless and until it receives a new requestwith contradictory information (possibly due to some proxy addingfrom the access device. Thus, use of this mechanism across proxies is opportunistic rather than reliable, but useful nonetheless. When alocal policy),Diameter server receives a Origin-State-Id that is greater than the Origin-State-Id previously received from the same issuer, itMAY acceptmay assume that thelatest AVP, or MAY returnissuer has lost state since theresponse withprevious message and that all sessions that were active under theResult-Code AVP setlower Origin-State- Id have been terminated. The Diameter server MAY clean up all session state associated with such lost sessions, and MAY also issues STRs for all such lost sessions that were authorized on downstream servers, toDIAMETER_CONTRADICTING_AVPS. However, an access device receivingallow session state to be cleaned up globally. 10.11 Origin-State-Id AVP The Origin-State-Id AVP (AVP Code 278), of type Unsigned32, is aresponsemonotonically increasing value thatcontains contradictory information SHOULD reject service to the user. 11.6 Hiding Network Topology Proxies forwarding requests to servers outsideis advanced whenever a Diameter entity restarts with loss oftheir administrative domainprevious state, for example upon reboot. Origin-State-Id MAYhide the internal network topology. Servers perform this by removing all Route-Record AVPsbe included intheany Diameter message,and maintains the Route-Record AVPs to add to the corresponding response. Such serversincluding CER. A Diameter entity issuing this AVP MUSTstill add their own Route-Recordcreate a higher value for this AVP each time its state is reset. A Diameter entity MAY set Origin-State-Id to therequest prior to forwarding. 11.7 Loop Detection When a Diameter Proxy or Redirect server receives a requesttime of startup, orindication message,itMUST examine all Route-Record AVPsMAY use an incrementing counter retained in non-volatile memory across restarts. The Origin-State-Id, if present, MUST reflect themessage to determine whether such an AVP already exists withstate of thelocal server's identity.entity indicated by Origin-Host. Ifan AVP with the local host's identity is found in the request,a proxy modifies Origin-Host, it MUST either remove Origin-State-Id or modify it appropriately as well. Typically, Origin-State-Id is used by anindicationaccess device thatthe message is being looped through the same set of proxies. When such an event occurs, the Diameter serveralways starts up with no active sessions; thatdetects the loop returnsis, any session active prior to restart will have been been lost. By including Origin-State-Id in aresponsemessage, it allows other Diameter entities to infer that sessions associated withthe Result-Code AVPa lower Origin-State-Id are no longer active. If an Calhoun et al. expires December 2001 [Page 73] Internet-Draft June 2001 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 toDIAMETER_LOOP_DETECTED. 12.00. 11.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.12.111.1 Server Directed Model The server directed model means that the device generating the accounting data gets information from either the authorization serverCalhoun et al. expires October 2001 [Page 63] Internet-Draft May 2001(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 bythis extension.Diameter. Should Batched Accounting be required in the future, a new Diameterextensionapplication 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 (orproxies in between)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.12.211.2 Protocol Messages A Diameter node that receives a successful authentication and/or authorization messages from the Home AAA Server, MUST collect Calhoun et al. expires December 2001 [Page 74] Internet-Draft June 2001 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.12.3 Extension11.3 Application document requirements EachService-SpecificDiameterextensionapplication (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".Calhoun et al. expires October 2001 [Page 64] Internet-Draft May 2001Theextensionapplication 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.12.411.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 asserversagents 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. A furtherextensionapplication of this protocol may include AVPs to control Calhoun et al. expires December 2001 [Page 75] Internet-Draft June 2001 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.12.511.5 Accounting Records In all accounting records the Session-Id and User-Name AVPs MUST be present. Ifstrongend-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, norCalhoun et al. expires October 2001 [Page 65] Internet-Draft May 2001recommended, that thestrongend-to-end authentication cover any additional AVPs since the Data and Service Specific AVP, and associatedCMS-Data,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 on an access device for any given session.13.0Calhoun et al. expires December 2001 [Page 76] Internet-Draft June 2001 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. Note that sometimes such sequence of records is related to a higher-level session, possibly spanning several DIAMETER clients. The linking of such record sequences together lies, however, outside DIAMETER and is typically performed by postprocessing systems. It is the responsibility of the particular Diameter application specification to define a sufficient set of AVPs so that this correlation can be done based on, for instance, IP addresses. Likewise, the application specifications MUST also define the exact concept of a session that is being accounted. For instance, the NASREQ DIAMETER application treats a single PPP connection to a Network Access Server as one session. 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. That is, it is not allowed to mix record types, such as sending interim records followed by an event record. A particular Diameter application specification MUST define which kind of sequences should be used. 12.0 Accounting Command-Codes This section defines new Command-Code values that MUST be supported by all Diameter implementations that provide Accounting services.13.112.1 Accounting-Request(ACR) CommandThe Accounting-Request command, indicated by the Command-Code field set to 271 and themessage flags'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 abroker,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 countersignatureCalhoun et al. expires October 2001 [Page 66] Internet-Draft May 2001procedures described in [11]. The AVP listed below SHOULD include service specific accounting AVPs, as described in section12.3.11.3. Calhoun et al. expires December 2001 [Page 77] Internet-Draft June 2001 Message Format <Accounting-Request> ::= < Diameter Header: 271,RREQUEST > < Session-Id > {Acct-Extension-IdAcct-Application-Id } { User-Name } {Origin-FQDNOrigin-Host } { Origin-Realm } { Destination-Realm } { Accounting-Record-Type } { Accounting-Record-Number } { Accounting-Session-Id } [ Accounting-Interim-Interval ] [Max-Wait-TimeOrigin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]13.212.2 Accounting-Answer(ACA) CommandThe Accounting-Answer command, indicated by the Command-Code field set to 271 and themessage flags' 'A'Command Flags' 'R' bitset,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-DataAVP 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. The AVP listed below SHOULD include service specific accounting AVPs, as described in section 12.3. Calhoun et al. expires October 2001 [Page 67] Internet-Draft May 2001 Message Format <Accounting-Answer> ::= < Diameter Header: 271, A > < Session-Id > { Acct-Extension-Id } { User-Name } { Result-Code } { Origin-FQDN } { Origin-Realm } { Destination-FQDN } { Accounting-Record-Type } { Accounting-Record-Number } { Accounting-Session-Id } [ Error-Reporting-FQDN ] [ Accounting-Interim-Interval ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ] 13.3 Accounting-Status-Ind (ASI) Command The Accounting-Status-Ind command, indicated by the Command-Code field set to 279 and the message flags' 'I' bit set, is sent by a Diameter node in order to inform its peer of whether Accounting messages will be sent in the future. A Diameter node that is about to be taken out of service SHOULD issue an Accounting-Status-Ind message, with the Accounting-State AVP set to DISABLED. Prior to sending such a message, every attempt SHOULD be made to transmit any pending accounting messages. A Failed ASI would contain the same Command-Code, but would require that only be 'F' bitAVP signed by the responder to provide strong AVP authentication, which MAY beset. Aused for the purposes of repudiation. Only the target Diameternode that detected that it is able to issue Accounting messages MUST issue an Accounting-Status-Ind message,Server, known as the home Diameter Server, SHOULD respond with theAccounting-StateAccounting-Answer command. The AVPset to ENABLED.listed below SHOULD include service specific accounting AVPs, as described in section 11.3. Calhoun et al. expiresOctoberDecember 2001 [Page68]78] Internet-DraftMayJune 2001 Message Format<Accounting-Status-Ind><Accounting-Answer> ::= < Diameter Header:279, I271, A > < Session-Id > {Acct-Extension-IdAcct-Application-Id } { User-Name } { Result-Code } {Origin-FQDNOrigin-Host } { Origin-Realm } {Destination-RealmDestination-Host } { Accounting-Record-Type } { Accounting-Record-Number } {Accounting-StateAccounting-Session-Id } [ Error-Reporting-Host ] [ Accounting-Interim-Interval ] [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]13.412.3 Accounting-Poll-Ind(API) CommandThe Accounting-Poll-Ind command, indicated by the Command-Code field set to 273 and the message flags' 'I' bit set, is sent by a Diameter Server in order to force the peer to send current accounting data. This data MUST include not yet sent accounting records from completed sessions, as well as INTERIM_RECORD records from all ongoing sessions. A Failed API would contain the same Command-Code, but would require that only be 'F' bit be set. Diameter implementations MAY support the Accounting-Poll-Ind command. An implementation still conforms to this specification if API is not supported. The receiver MUST use the Accounting-Request command to send the accounting data. The use of Accounting-Poll-Ind is useful in situations where a Diameter server comes up after an unscheduled downtime, and wishes to synchronize with the client(s) sooner than at the end of the next INTERIM_RECORD or at the end of a session. Warning: The use of the Accounting-Poll-Ind message is discouraged in roaming networks, since it is unfeasible for a server to attempt to poll all of it's roaming partner's Diameter peers. Calhoun et al. expiresOctoberDecember 2001 [Page69]79] Internet-DraftMayJune 2001 Message Format <Accounting-Poll-Ind> ::= < Diameter Header: 273, I > < Session-Id > {Acct-Extension-IdAcct-Application-Id } {Destination-FQDNDestination-Host } {Origin-FQDNOrigin-Host } { Origin-Realm } { Destination-Realm } { Accounting-Session-Id } [ Origin-State-Id ] * [ AVP ] * [ Proxy-Info ] * [ Route-Record ]14.013.0 Accounting AVPs This section contains AVPs that describe accounting usage information related to a specific session.14.113.1 Accounting-Record-Type AVP The Accounting-Record-Type AVP (AVP Code 480) is of type Unsigned32 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. 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 Diameterextensions.applications. The selection of whether to useINTERIM_RECORD records is directed by the Accounting-Interim-Calhoun et al. expiresOctoberDecember 2001 [Page70]80] Internet-DraftMayJune 2001 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.14.213.2 Accounting-Interim-Interval AVP The Accounting-Interim-Interval AVP (AVP Code 482) is of type Unsigned32 and is sent from the Diameterauthenticating/authorizinghome 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 thehome- organization.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.14.313.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 inmatching accounting records with confirmations. An easy way toCalhoun et al. expiresOctoberDecember 2001 [Page71]81] Internet-DraftMayJune 2001produce unique numbers is to set the value to 0 formatching accounting recordsof 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. 14.4 Accounting-State AVP The Accounting-State AVP (AVP Code 486) is of type Unsigned32 and is used to communicate to a peer whether Accounting messages will be sent in the future. A node that issues an ASIwiththe Accounting- State AVP set to DISABLED is informing its peer that it will no longer be transmitting Accounting messages until a subsequent ASI messageconfirmations. An easy way to produce unique numbers issent withto set theAccounting-State AVPvalue to 0 for records of type EVENT_RECORD and START_RECORD, and set the value toENABLED. The following values have been defined:1ENABLEDfor the first INTERIM_RECORD, 2DISABLED 14.5for the second, and so on until the value for STOP_RECORD is one more than for the last INTERIM_RECORD. 13.4 Accounting-Session-Id AVP The Accounting-Session-Id AVP (AVP Code 44) is of type OctetString, and SHOULD be encoded in UTF-8 format[13].[13], following the format specified in section 10.3. 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.15.013.5 Accounting-Multi-Session-Id AVP The Accounting-Multi-Session-Id AVP (AVP Code 50) is of type OctetString and SHOULD be encoded in UTF08 format [13], following the format specified in section 10.3. 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 same Acounting-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.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 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. Calhoun et al. expiresOctoberDecember 2001 [Page72]82] Internet-DraftMayJune 200115.114.1 Base Protocol Command AVP Table The table in this section is limited to the non-accounting Command Codes defined in this specification.+---------------------------++-----------------------------------+ | Command-Code ||---+---+---+---+---+---+---+|---+---+---+---+---+---+---+---+---+ Attribute Name|DRI|DSI|DWR|DWA|STI|STR|STA| ------------------------------|---+---+---+---+---+---+---| Acct-Extension-Id|CER|CEA|MRA|DWR|DWA|ASR|ASA|STR|STA| ------------------------------|---+---+---+---+---+---+---+---+---| Acct-Application-Id |0+ |0+ |0 |0 |0 |0 |0 |0 |0 |Auth-Extension-IdAuth-Application-Id |0+ |0+ |0 |0 |0 |0 |0 |0 |0 | Authorization-Lifetime |0 |0 |0 |0 |0 |0 |0 |0 |0 |Destination-FQDN |0-1|0-1|0-1|1Destination-Host |0-1|0-1|1 |0-1|1 |1 |1 |0-1|1 | Destination-Realm |0 |0 |0 |0|1 |1 |0 | DSI-Event|0 |1 |0|0 |0 |0|1 |0 | Error-Message |0 |0 |0 |0 |0 |0 |0-1|0 |0 |Error-Reporting-FQDNError-Reporting-Host |0 |0 |0 |0 |0 |0 |0-1|0 |0 | Failed-AVP |0 |0+ |0+ |0 |0+ |0 |0+ |0 |0+ | Firmware-Revision|0-1|0|0-1|0-1|0 |0 |0 |0 |0 |0 |0 | Host-IP-Address |1+ |1+ |0 |0 |0 |0 |0 |0| Max-Wait-Time |0 |0 |0+ |0 |0 |0|0 |Origin-FQDNOrigin-Host |1 |1 |1 |1 |1 |1 |1 |1 |1 | Origin-Realm |1 |1 |1 |1 |1 |1 |1 |1 |1 | Product-Name |1 |1 |0 |0 |0 |0 |0 |0 |0 | Proxy-Info |0 |0 |0 |0 |0 |0+ |0+ |0+ |0+ | Redirect-Host |0 |0 |0 |0 |0 |0 |0 |0 |0 | Result-Code |0|0|1 |1 |0 |1 |0 |0 |0 |1 | Route-Record |0 |0 |0 |0 |0 |0+ |0+ |0+ |0+ | Session-Id |0|0-1|0|0 |1 |0 |0 |1 |1 |1 |1 | Session-Timeout |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 | Termination-Cause |0 |0 |0 |0 |0 |0 |0 |1 |0 | User-Name |0 |0 |0 |0 |0 |1 |1 |1 |1 | Vendor-Id |1 |1 |0 |0 |0 |0 |0 |0 |0 |------------------------------|---+---+---+---+---+---+---| 15.2Vendor-Specific-Application-Id|0+ |0+ |0 |0 |0 |0 |0 |0 |0 | ------------------------------|---+---+---+---+---+---+---+---+---| 14.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. Calhoun et al. expiresOctoberDecember 2001 [Page73]83] Internet-DraftMayJune 2001+-----------------------++-----------------+ | Command-Code ||-----+-----+-----+-----+|-----+-----+-----+ Attribute Name | ACR | ACA |ASI |API |------------------------------|-----+-----+-----+-----+------------------------------|-----+-----+-----+ Accounting-Interim-Interval | 0-1 | 0-1 | 0 | Accounting-Multi-Session-Id | 0-1 | 0-1 | 0 | Accounting-Record-Number | 1 | 1 | 0 |0 |Accounting-Record-Type | 1 | 1 | 0 |0 |Accounting-Session-Id | 1 | 1 |0 | 1 | Accounting-State | 0 | 0 |1 |0 | Acct-Extension-IdAcct-Application-Id | 1 | 1 | 1 |1 | Destination-FQDNDestination-Host | 0+ | 1 |0+ |0-1 | Destination-Realm | 1 | 0 | 1 |1 | Error-Reporting-FQDNError-Reporting-Host | 0 | 0+ | 0 |0 |Max-Time-Wait | 0+ | 0 | 0 |0 | Origin-FQDN | 1Origin-Host | 1 | 1 | 1 | Origin-Realm | 1 | 1 | 1 |1 |Proxy-Info | 0+ | 0+ |0+ |0 | Route-Record | 0+ | 0+ | 0+ |0+ |Result-Code | 0 | 1 | 0 |0 |Session-Id | 1 | 1 |0 |1 |------------------------------|-----+-----+-----+-----+ 16.0------------------------------|-----+-----+-----+ 15.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.16.115.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.16.1.115.1.1 AVP Code the AVP Code namespace is used to identify attributes. When the 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 assignmentthrough Designated Expertvia Specification Required [12]. Calhoun et al. expiresOctoberDecember 2001 [Page74]84] Internet-DraftMayJune 2001 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-259, 262-269, 271, 277-284, 291-297,257-260, 263-269, 278-284, 291- 297, 480, 482 and 485-486. See section 4.5 for the assignment of the namespace in this specification.16.1.215.1.2 AVP Flags There are 16 bits in the AVP Flags field of the AVP header, defined in section 4.0. This document assigns bit 1 ('M'andatory), bit 3 ('V'endor Specific) and bit 5 ('P'rotected). The remaining bits should only be assigned via a Standards Action [12].16.215.2 Diameter Header As defined in section 3.0, the Diameter header contains two fields that require IANA namespace management; Command Code andMessageCommand Flags.16.2.115.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, 271, 273-275,279-280280 and 282. See section 3.1 for the assignment of the namespace in this specification.16.2.2 Message15.2.2 Command Flags There arethirteeneight bits in the Command Flags field of the Diameter header. This document assigns bit1 ('R'esponse), bit 2 ('I'nterrogation) and bit 3 ('E'xpected Reply).8 ('R'equest). Bits41 through13 should7 MUST only be assigned via a Standards Action [12].16.3 Extension15.3 Application IdentifiersCalhoun et al. expires October 2001 [Page 75] Internet-Draft May 2001As defined in section 6.1, theExtensionApplication Identifier is used to Calhoun et al. expires December 2001 [Page 85] Internet-Draft June 2001 identify a specific DiameterExtension.Application. All values, other than zero (0) are available for assignment via Standards Action [12]. Note that the Diameter protocol is not intended to be extended for any purpose. Anyextensionsapplications defined MUST ensure that they fit within the existing framework, and that no changes to the base protocol are required.16.415.4 Result-Code AVP Values As defined in Section9.1.1,9.1, the Result-Code AVP (AVP Code 268) defines the values 1001, 2001, 4001-4003 and5001-5013. All remaining values are available for assignment via IETF Consensus [12]. 16.5 DSI-Event AVP Values As defined in Section 9.2.2, the DSI-Event AVP (AVP Code 297) defines the values 1001, 3001, 4001 and 5001-5008.5001-5015. All remaining values are available for assignment via IETF Consensus [12].16.6 Accounting-State15.5 Accounting-Record-Type AVP Values As defined in Section14.4,13.1, theAccounting-StateAccounting-Record-Type AVP (AVP Code486)480) defines the values1-2.1-4. All remaining values are available for assignment via IETF Consensus [12].16.7 Accounting-Record-Type15.6 Termination-Cause AVP Values As defined in Section14.1,10.9, theAccounting-Record-TypeTermination-Cause AVP (AVP Code480)295) defines the values1-4.1-5. All remaining values are available for assignment via IETF Consensus [12].16.815.7 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.Calhoun et al. expires October 2001 [Page 76] Internet-Draft May 2001 17.0 Open Issues The following are the open issues that SHOULD be addressedIANA should also replace "TBD" infuture versions of the Diameter protocol: - AVPs with time values are represented by Unsigned32 type data. This value is a timestamp consistentsection 2.7 withNTP [18]. This field is expected to expire sometimethe port number assigned in2038. Future investigation SHOULD be done to determine if a 64 bit time format could be used. 18.0section 2.1 16.0 Diameter protocol related configurable parameters This section contains the configurable parameters that are found throughout this document: Calhoun et al. expires December 2001 [Page 86] Internet-Draft June 2001 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.RTT-MultiplierTc timer TheRound Trip Time Multiplier is usedTc timer controls the frequency that transport connection attempts are done todetermine whenaDWR message is to be sent to an inactive peer.peer with whom no active transport connection exists. The recommendedvalusvalue is4. Watchdog Interval Period30 seconds. Tw timer TheWatchdog Interval Period isTw timer controls the frequencyat which DWRthe watchdog messages are to be sent to inactive peers. The recommended value is 30 seconds.19.017.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 partyDiameter Calhoun et al. expires October 2001 [Page 77] Internet-Draft May 2001 brokers,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, theextensionDiameter 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.20.018.0 References [1] C. Rigney, A. Rubens, W. Simpson, S. Willens, "Remote Authenti- cation Dial In User Service (RADIUS)", RFC 2865, June2000.2000. Calhoun et al. expires December 2001 [Page 87] Internet-Draft June 2001 [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 NASREQExtension", draft-ietf-aaa-diameter-nasreq-04.txt,Application", draft-ietf-aaa-diameter-nasreq-05.txt, IETF work in progress,MayJune 2001. [8] Aboba, Beadles "The Network Access Identifier." RFC 2486. Janu- ary 1999. [10] P. Calhoun, C. Perkins, "Diameter Mobile IPExtensions", draft- ietf-aaa-diameter-mobileip-04.txt,Application", draft-ietf-aaa-diameter-mobileip-05.txt, IETF work in progress,MayJune 2001. [11] P. Calhoun, W. Bulley, S. Farrell, "DiameterEnd-2-EndCMS SecurityExtension", draft-ietf-aaa-diameter-e2e-sec-04.txtappli- cation", draft-ietf-aaa-diameter-cms-sec-00.txt (work in pro- gress),MayJune 2001. [12] Narten, Alvestrand,"Guidelines for Writing an IANACalhoun et al. expires October 2001 [Page 78] Internet-Draft May 2001 ConsiderationsConsidera- 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, March 1997. [14] Myers, Ankney, Malpani, Galperin, Adams, "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol (OCSP)", RFC 2560, June 1999. [15] D. Harkins, D. Carrel, "The Internet Key Exchange (IKE)", RFC 2409, November 1998. [16] Hinden, Deering, "IP Version 6 Addressing Architecture", RFC 2373, July 1998. [17] ISI, "Internet Protocol", RFC 791, September 1981. [18] Mills, "Simple Network Time Protocol (SNTP) Version 4 for IPv4, Calhoun et al. expires December 2001 [Page 88] Internet-Draft June 2001 IPv6 and OSI, RFC 2030, October 1996. [19] Housley, Ford, Polk, Solo, "Internet X.509 Public Key Infras- tructure Certificate and CRL Profile", RFC 2459, January 1999. [20] B. Aboba, G. Zorn, "Criteria for Evaluating Roaming Protocols", RFC 2477, January 1999. [21] M. Beadles, D. Mitton, "Criteria for Evaluating Network Access Server Protocols", draft-ietf-nasreq-criteria-05.txt, IETF work in progress, June 2000. [22] T. Hiller and al, "CDMA2000 Wireless Data Requirements for AAA", draft-hiller-cdma2000-aaa-02.txt, IETF work in progress, Sep- tember 2000. [23] S. Glass, S. Jacobs, C. Perkins, "Mobile IP Authentication, Authorization, and Accounting Requirements". RFC 2977. October 2000. [24] F. Yergeau, "UTF-8, a transformation format of ISO 10646", RFC 2279, January 1998. [25] L. J. Blunk, J. R. Vollbrecht, "PPP Extensible Authentication Protocol (EAP)." RFC 2284, March 1998. [26] R. Stewart et al., "Stream Control Transmission Protocol". RFC 2960. October 2000. [27] Postel, J. "Transmission Control Protocol", RFC 793, JanuaryCalhoun et al. expires October 2001 [Page 79] Internet-Draft May 20011981. [28] E. Guttman, C. Perkins, J. Veizades, M. Day. "Service Location Protocol, Version 2", RFC 2165, June 1999. [29]P. Calhoun, "DiameterT. Berners-Lee, R. Fielding, U.C. Irvine, L. Masinter, "Uniform ResourceManagement", draft-calhoun- diameter-res-mgmt-06.txt, IETF Work in Progress, February 2001.Identifiers (URI): Generic Syntax". RFC 2396, August 1998. [30] Institute of Electrical and Electronics Engineers, "IEEE Stan- dard for Binary Floating-Point Arithmetic", ANSI/IEEE Standard 754-1985, August 1985. [31] D. Crocker, P. Overell, "Augmented BNF for Syntax Specifica- tions: ABNF", RFC 2234, November 1997. [32] E. Guttman, C. Perkins, J. Kempf, "Service Templates and Ser- vice: Schemes", RFC 2609, June 1999. Calhoun et al. expires December 2001 [Page 89] Internet-Draft June 2001 [33] A. Gulbrandsen, P. Vixie, L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000. [34] D. Eastlake, "Domain Name System Security Extensions", RFC 2535, March 1999. [35] D. Eastlake, "DNS Security Operational Considerations", RFC 2541, March 1999. [36] D. Eastlake, "DNS Request and Transaction Signatures ( SIG(0)s )", RFC 2931, September 2000. [37] S. Kent, R. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998. [38] T. Dierks, C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999. [39] "The Communications of the ACM" Vol.33, No.6 (June 1990), pp. 677-680. [40] B. Aboba, J. Arkko, D. Harrington. "Introduction to Accounting Management", RFC 2975, October 2000. [41] A. Shacham, R. Monsour, R. Pereira, M. Thomas, "IP Payload Compression Protocol (IPComp)", RFC 2393, December 1998. [42] W. Simpson, "The Point-to-Point Protocol (PPP)", RFC 1661, STD 51, July 1994.Calhoun et al. expires October 2001 [Page 80] Internet-Draft May 2001[43] B. Aboba, J. Lu, J. Alsop, J. Ding, W. Wang, "Review of Roaming Implementations", RFC 2194, September 1997. [44] B. Aboba, J. Vollbrecht, "Proxy Chaining and Policy Implementa- tion in Roaming", RFC 2607, June 1999. [45] C. Perkins, Editor. IP Mobility Support. RFC 2002, October 1996. [46] IANA, "RADIUS Types", http://www.isi.edu/in- notes/iana/assignments/radius-types21.019.0 Acknowledgements The authors would like to thank Nenad Trifunovic, Tony Johansson and Pankaj Patel for their participation in the pre-IETF Document Reading Party. AllisonMankin'sMankin's, Jonathan Wood and Bernard Aboba's assistance Calhoun et al. expires December 2001 [Page 90] Internet-Draft June 2001 was invaluable in working out transport issues, and similarly with Steven Bellovin's help in the security area. Paul Funk and David Mitton were instrumental in getting the Peer State Machine correct, and our deep thanks go to them for their time. Text in this document was also provided by Paul Funk, Mark Eklund, Mark Jones and Dave Spence. The authors would also like to acknowledge the following people for their contribution in the development of the Diameter protocol:Bernard Aboba,William Bulley,Mark Eklund,David Frascone, Daniel C. Fox, Lol Grant, Ignacio Goyret, Nancy Greene, Peter Heitman, Fredrik Johansson, Mark Jones, Martin Julien, Paul Krumviede, Fergal Ladley, Ryan Moats, VictorMuslin,Mus- lin, Kenneth Peirce, Stephen Farrell, Sumit Vakil, John R.Vollbrecht,Vollbrecht and Jeff Weisbergand Jonathan Wood 22.020.0 Authors' Addresses Questions about this memo can be directed to: Pat R. Calhoun Network and Security Research Center, Sun Laboratories Sun Microsystems, Inc. 15 Network Circle Menlo Park, California, 94025 USA Phone: +1 650-786-7733 Fax: +1 650-786-6445 E-mail: pcalhoun@eng.sun.comCalhoun et al. expires October 2001 [Page 81] Internet-Draft May 2001Haseeb Akhtar Wireless Technology Labs Nortel Networks 2221 Lakeside Blvd. Richardson, TX 75082-4399 USA Phone: +1 972-684-8850 E-Mail: haseeb@nortelnetworks.com Calhoun et al. expires December 2001 [Page 91] Internet-Draft June 2001 Jari Arkko Oy LM Ericsson Ab 02420 Jorvas Finland Phone: +358 40 5079256 E-Mail: Jari.Arkko@ericsson.com Erik Guttman Solaris Advanced Development Sun Microsystems, Inc. Eichhoelzelstr. 7 74915 Waibstadt Germany Phone: +49-7263-911-701 E-mail: erik.guttman@germany.sun.com Allan C. Rubens Tut Systems, Inc. 220 E. Huron, Suite 260 Ann Arbor, MI 48104 USA Phone: +1 734-995-1697 E-Mail: arubens@tutsys.com Glen Zorn Cisco Systems, Inc. 500 108th Avenue N.E., Suite 500 Bellevue, WA 98004 USA Phone: +1 425 438 8218Calhoun et al. expires October 2001 [Page 82] Internet-Draft May 2001 23.021.0 Full Copyright Statement Copyright (C) The Internet Society (2001). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are Calhoun et al. expires December 2001 [Page 92] Internet-Draft June 2001 included on all such copies and derivative works. However, this docu- ment itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of develop- ing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The lim- ited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DIS- CLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.24.022.0 Expiration Date This memo is filed as<draft-ietf-aaa-diameter-04.txt><draft-ietf-aaa-diameter-05.txt> and expires inOctoberDecember 2001. Calhoun et al. expiresOctoberDecember 2001 [Page83]93] Internet-DraftMayJune 2001 Appendix A. Diameter Service Template The following service template describes the attributes used by Diam- eter servers to advertise themselves. This simplifies the process of selecting an appropriate server to communicate with. A Diameter client can request specific Diameter servers based on characteristics of the Diameter service desired (for example, an AAA server to use for accounting.) Name of submitter: "Erik Guttman" <Erik.Guttman@sun.com> Language of service template: en Security Considerations: Diameter clients and servers use various cryptographic mechanisms to protect communication integrity, confidentiality as well as perform end-point authentication. It would thus be difficult if not impossible for an attacker to advertise itself using SLPv2 and pose as a legitimate Diameter peer without proper preconfigured secrets or cryptographic keys. Still, as Diameter services are vital for network operation it is important to use SLPv2 authenti- cation to prevent an attacker from modifying or eliminating ser- vice advertisements for legitimate Diameter servers. Template text: -------------------------template begins here----------------------- template-type=service:diameter template-version=0.0 template-description= The Diameter protocol is defined by draft-ietf-aaa-diameter-04.txt template-url-syntax= url-path= ; Thestandard servicediameter URLsyntaxformat isused.described in section 2.7. ;For example: 'service:diameter://aaa.example.com:1812Example: 'diameter://aaa.example.com:1812;transport=tcp Calhoun et al. expiresOctoberDecember 2001 [Page84]94] Internet-DraftMayJune 2001supported-extensions=supported-auth-applications= string L M # This attribute lists the Diameterextensionsapplications supported by the # AAA implementation. Theextensionsapplicationss currently defined are: #ExtensionApplication Name Defined by #------------------------------- ----------------------------------- # NASREQ draft-ietf-aaa-diameter-nasreq-04.txt # MobileIP draft-ietf-aaa-diameter-mobileip-04.txt #End-to-EndCMS Securitydraft-ietf-aaa-diameter-e2e-sec-02.txtdraft-ietf-aaa-diameter-cms-sec-00.txt #Resource Management draft-calhoun-diameter-res-mgmt-06.txt# Notes: # . Diameter implementations support one or more applications. # . Additional applications may be defined in the future. # An updated service template will be created at that time. # NASREQ,MobileIP,CMS Security supported-acct-applications= string L M # This attribute lists the Diameter applications supported by the # AAA implementation. The applicationss currently defined are: # Application Name Defined by # ---------------- ----------------------------------- # NASREQ draft-ietf-aaa-diameter-nasreq-04.txt # MobileIP draft-ietf-aaa-diameter-mobileip-04.txt # CMS Security draft-ietf-aaa-diameter-cms-sec-00.txt # # Notes: # . Diameter implementations support one or moreextensions.applications. # . Additionalextensionsapplications may be defined in the future. # An updated service template will be created at that time. #NASREQ,MobileIP,Accounting,End-to-End Security,Resource ManagementNASREQ,MobileIP,CMS Security supported-transports= string L M SCTP # This attribute lists the supported transports that the Diameter # implementation accepts. Note that a compliant Diameter # implementation MUST support SCTP, though it MAY support other # transports, too. SCTP,TCP -------------------------template ends here----------------------- Calhoun et al. expiresOctoberDecember 2001 [Page85]95] ----