draft-ietf-dime-rfc3588bis-01.txt   draft-ietf-dime-rfc3588bis-02.txt 
DIME V. Fajardo, Ed. DIME V. Fajardo, Ed.
Internet-Draft Toshiba America Research Internet-Draft Toshiba America Research
Intended status: Standards Track J. Loughney Intended status: Standards Track J. Loughney
Expires: August 2, 2007 Nokia Research Center Expires: September 4, 2007 Nokia Research Center
January 29, 2007 March 3, 2007
Diameter Base Protocol Diameter Base Protocol
draft-ietf-dime-rfc3588bis-01.txt draft-ietf-dime-rfc3588bis-02.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 35 skipping to change at page 1, line 35
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 2, 2007. This Internet-Draft will expire on September 4, 2007.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
Abstract Abstract
The Diameter base protocol is intended to provide an Authentication, The Diameter base protocol is intended to provide an Authentication,
Authorization and Accounting (AAA) framework for applications such as Authorization and Accounting (AAA) framework for applications such as
network access or IP mobility. Diameter is also intended to work in network access or IP mobility. Diameter is also intended to work in
skipping to change at page 2, line 37 skipping to change at page 2, line 37
1.2.5. Application Authentication Procedures . . . . . . . 15 1.2.5. Application Authentication Procedures . . . . . . . 15
1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 16 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 16
2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 23 2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 23
2.1. Transport . . . . . . . . . . . . . . . . . . . . . . . . 24 2.1. Transport . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.1. SCTP Guidelines . . . . . . . . . . . . . . . . . . 25 2.1.1. SCTP Guidelines . . . . . . . . . . . . . . . . . . 25
2.2. Securing Diameter Messages . . . . . . . . . . . . . . . 25 2.2. Securing Diameter Messages . . . . . . . . . . . . . . . 25
2.3. Diameter Application Compliance . . . . . . . . . . . . . 25 2.3. Diameter Application Compliance . . . . . . . . . . . . . 25
2.4. Application Identifiers . . . . . . . . . . . . . . . . . 26 2.4. Application Identifiers . . . . . . . . . . . . . . . . . 26
2.5. Connections vs. Sessions . . . . . . . . . . . . . . . . 26 2.5. Connections vs. Sessions . . . . . . . . . . . . . . . . 26
2.6. Peer Table . . . . . . . . . . . . . . . . . . . . . . . 27 2.6. Peer Table . . . . . . . . . . . . . . . . . . . . . . . 27
2.7. Realm-Based Routing Table . . . . . . . . . . . . . . . . 28 2.7. Routing Table . . . . . . . . . . . . . . . . . . . . . . 28
2.8. Role of Diameter Agents . . . . . . . . . . . . . . . . . 30 2.8. Role of Diameter Agents . . . . . . . . . . . . . . . . . 30
2.8.1. Relay Agents . . . . . . . . . . . . . . . . . . . . 31 2.8.1. Relay Agents . . . . . . . . . . . . . . . . . . . . 31
2.8.2. Proxy Agents . . . . . . . . . . . . . . . . . . . . 32 2.8.2. Proxy Agents . . . . . . . . . . . . . . . . . . . . 32
2.8.3. Redirect Agents . . . . . . . . . . . . . . . . . . 32 2.8.3. Redirect Agents . . . . . . . . . . . . . . . . . . 32
2.8.4. Translation Agents . . . . . . . . . . . . . . . . . 33 2.8.4. Translation Agents . . . . . . . . . . . . . . . . . 33
2.9. End-to-End Security Framework . . . . . . . . . . . . . . 34 2.9. End-to-End Security Framework . . . . . . . . . . . . . . 34
2.10. Diameter Path Authorization . . . . . . . . . . . . . . . 35 2.10. Diameter Path Authorization . . . . . . . . . . . . . . . 35
3. Diameter Header . . . . . . . . . . . . . . . . . . . . . . . 37 3. Diameter Header . . . . . . . . . . . . . . . . . . . . . . . 37
3.1. Command Codes . . . . . . . . . . . . . . . . . . . . . . 40 3.1. Command Codes . . . . . . . . . . . . . . . . . . . . . . 40
3.2. Command Code ABNF specification . . . . . . . . . . . . . 41 3.2. Command Code ABNF specification . . . . . . . . . . . . . 41
skipping to change at page 3, line 15 skipping to change at page 3, line 15
4.3. Derived AVP Data Formats . . . . . . . . . . . . . . . . 48 4.3. Derived AVP Data Formats . . . . . . . . . . . . . . . . 48
4.4. Grouped AVP Values . . . . . . . . . . . . . . . . . . . 56 4.4. Grouped AVP Values . . . . . . . . . . . . . . . . . . . 56
4.4.1. Example AVP with a Grouped Data type . . . . . . . . 57 4.4.1. Example AVP with a Grouped Data type . . . . . . . . 57
4.5. Diameter Base Protocol AVPs . . . . . . . . . . . . . . . 60 4.5. Diameter Base Protocol AVPs . . . . . . . . . . . . . . . 60
5. Diameter Peers . . . . . . . . . . . . . . . . . . . . . . . 63 5. Diameter Peers . . . . . . . . . . . . . . . . . . . . . . . 63
5.1. Peer Connections . . . . . . . . . . . . . . . . . . . . 63 5.1. Peer Connections . . . . . . . . . . . . . . . . . . . . 63
5.2. Diameter Peer Discovery . . . . . . . . . . . . . . . . . 63 5.2. Diameter Peer Discovery . . . . . . . . . . . . . . . . . 63
5.3. Capabilities Exchange . . . . . . . . . . . . . . . . . . 66 5.3. Capabilities Exchange . . . . . . . . . . . . . . . . . . 66
5.3.1. Capabilities-Exchange-Request . . . . . . . . . . . 67 5.3.1. Capabilities-Exchange-Request . . . . . . . . . . . 67
5.3.2. Capabilities-Exchange-Answer . . . . . . . . . . . . 68 5.3.2. Capabilities-Exchange-Answer . . . . . . . . . . . . 68
5.3.3. Vendor-Id AVP . . . . . . . . . . . . . . . . . . . 68 5.3.3. Vendor-Id AVP . . . . . . . . . . . . . . . . . . . 69
5.3.4. Firmware-Revision AVP . . . . . . . . . . . . . . . 69 5.3.4. Firmware-Revision AVP . . . . . . . . . . . . . . . 69
5.3.5. Host-IP-Address AVP . . . . . . . . . . . . . . . . 69 5.3.5. Host-IP-Address AVP . . . . . . . . . . . . . . . . 69
5.3.6. Supported-Vendor-Id AVP . . . . . . . . . . . . . . 69 5.3.6. Supported-Vendor-Id AVP . . . . . . . . . . . . . . 69
5.3.7. Product-Name AVP . . . . . . . . . . . . . . . . . . 69 5.3.7. Product-Name AVP . . . . . . . . . . . . . . . . . . 70
5.4. Disconnecting Peer connections . . . . . . . . . . . . . 69 5.4. Disconnecting Peer connections . . . . . . . . . . . . . 70
5.4.1. Disconnect-Peer-Request . . . . . . . . . . . . . . 70 5.4.1. Disconnect-Peer-Request . . . . . . . . . . . . . . 70
5.4.2. Disconnect-Peer-Answer . . . . . . . . . . . . . . . 70 5.4.2. Disconnect-Peer-Answer . . . . . . . . . . . . . . . 71
5.4.3. Disconnect-Cause AVP . . . . . . . . . . . . . . . . 71 5.4.3. Disconnect-Cause AVP . . . . . . . . . . . . . . . . 71
5.5. Transport Failure Detection . . . . . . . . . . . . . . . 71 5.5. Transport Failure Detection . . . . . . . . . . . . . . . 72
5.5.1. Device-Watchdog-Request . . . . . . . . . . . . . . 71 5.5.1. Device-Watchdog-Request . . . . . . . . . . . . . . 72
5.5.2. Device-Watchdog-Answer . . . . . . . . . . . . . . . 72 5.5.2. Device-Watchdog-Answer . . . . . . . . . . . . . . . 72
5.5.3. Transport Failure Algorithm . . . . . . . . . . . . 72 5.5.3. Transport Failure Algorithm . . . . . . . . . . . . 73
5.5.4. Failover and Failback Procedures . . . . . . . . . . 72 5.5.4. Failover and Failback Procedures . . . . . . . . . . 73
5.6. Peer State Machine . . . . . . . . . . . . . . . . . . . 73 5.6. Peer State Machine . . . . . . . . . . . . . . . . . . . 73
5.6.1. Incoming connections . . . . . . . . . . . . . . . . 75 5.6.1. Incoming connections . . . . . . . . . . . . . . . . 76
5.6.2. Events . . . . . . . . . . . . . . . . . . . . . . . 76 5.6.2. Events . . . . . . . . . . . . . . . . . . . . . . . 76
5.6.3. Actions . . . . . . . . . . . . . . . . . . . . . . 77 5.6.3. Actions . . . . . . . . . . . . . . . . . . . . . . 77
5.6.4. The Election Process . . . . . . . . . . . . . . . . 79 5.6.4. The Election Process . . . . . . . . . . . . . . . . 79
5.6.5. Capabilities Update . . . . . . . . . . . . . . . . 79 5.6.5. Capabilities Update . . . . . . . . . . . . . . . . 79
6. Diameter message processing . . . . . . . . . . . . . . . . . 80 6. Diameter message processing . . . . . . . . . . . . . . . . . 80
6.1. Diameter Request Routing Overview . . . . . . . . . . . . 80 6.1. Diameter Request Routing Overview . . . . . . . . . . . . 80
6.1.1. Originating a Request . . . . . . . . . . . . . . . 81 6.1.1. Originating a Request . . . . . . . . . . . . . . . 81
6.1.2. Sending a Request . . . . . . . . . . . . . . . . . 82 6.1.2. Sending a Request . . . . . . . . . . . . . . . . . 82
6.1.3. Receiving Requests . . . . . . . . . . . . . . . . . 82 6.1.3. Receiving Requests . . . . . . . . . . . . . . . . . 82
6.1.4. Processing Local Requests . . . . . . . . . . . . . 82 6.1.4. Processing Local Requests . . . . . . . . . . . . . 82
skipping to change at page 5, line 14 skipping to change at page 5, line 14
8.15. Termination-Cause AVP . . . . . . . . . . . . . . . . . . 126 8.15. Termination-Cause AVP . . . . . . . . . . . . . . . . . . 126
8.16. Origin-State-Id AVP . . . . . . . . . . . . . . . . . . . 127 8.16. Origin-State-Id AVP . . . . . . . . . . . . . . . . . . . 127
8.17. Session-Binding AVP . . . . . . . . . . . . . . . . . . . 128 8.17. Session-Binding AVP . . . . . . . . . . . . . . . . . . . 128
8.18. Session-Server-Failover AVP . . . . . . . . . . . . . . . 128 8.18. Session-Server-Failover AVP . . . . . . . . . . . . . . . 128
8.19. Multi-Round-Time-Out AVP . . . . . . . . . . . . . . . . 129 8.19. Multi-Round-Time-Out AVP . . . . . . . . . . . . . . . . 129
8.20. Class AVP . . . . . . . . . . . . . . . . . . . . . . . . 129 8.20. Class AVP . . . . . . . . . . . . . . . . . . . . . . . . 129
8.21. Event-Timestamp AVP . . . . . . . . . . . . . . . . . . . 130 8.21. Event-Timestamp AVP . . . . . . . . . . . . . . . . . . . 130
9. Accounting . . . . . . . . . . . . . . . . . . . . . . . . . 131 9. Accounting . . . . . . . . . . . . . . . . . . . . . . . . . 131
9.1. Server Directed Model . . . . . . . . . . . . . . . . . . 131 9.1. Server Directed Model . . . . . . . . . . . . . . . . . . 131
9.2. Protocol Messages . . . . . . . . . . . . . . . . . . . . 132 9.2. Protocol Messages . . . . . . . . . . . . . . . . . . . . 132
9.3. Application document requirements . . . . . . . . . . . . 132 9.3. Accounting Application Extension and Requirements . . . . 132
9.4. Fault Resilience . . . . . . . . . . . . . . . . . . . . 132 9.4. Fault Resilience . . . . . . . . . . . . . . . . . . . . 133
9.5. Accounting Records . . . . . . . . . . . . . . . . . . . 133 9.5. Accounting Records . . . . . . . . . . . . . . . . . . . 134
9.6. Correlation of Accounting Records . . . . . . . . . . . . 134 9.6. Correlation of Accounting Records . . . . . . . . . . . . 135
9.7. Accounting Command-Codes . . . . . . . . . . . . . . . . 135 9.7. Accounting Command-Codes . . . . . . . . . . . . . . . . 135
9.7.1. Accounting-Request . . . . . . . . . . . . . . . . . 135 9.7.1. Accounting-Request . . . . . . . . . . . . . . . . . 135
9.7.2. Accounting-Answer . . . . . . . . . . . . . . . . . 136 9.7.2. Accounting-Answer . . . . . . . . . . . . . . . . . 136
9.8. Accounting AVPs . . . . . . . . . . . . . . . . . . . . . 137 9.8. Accounting AVPs . . . . . . . . . . . . . . . . . . . . . 137
9.8.1. Accounting-Record-Type AVP . . . . . . . . . . . . . 137 9.8.1. Accounting-Record-Type AVP . . . . . . . . . . . . . 137
9.8.2. Acct-Interim-Interval . . . . . . . . . . . . . . . 138 9.8.2. Acct-Interim-Interval . . . . . . . . . . . . . . . 138
9.8.3. Accounting-Record-Number AVP . . . . . . . . . . . . 138 9.8.3. Accounting-Record-Number AVP . . . . . . . . . . . . 139
9.8.4. Acct-Session-Id AVP . . . . . . . . . . . . . . . . 139 9.8.4. Acct-Session-Id AVP . . . . . . . . . . . . . . . . 139
9.8.5. Acct-Multi-Session-Id AVP . . . . . . . . . . . . . 139 9.8.5. Acct-Multi-Session-Id AVP . . . . . . . . . . . . . 139
9.8.6. Accounting-Sub-Session-Id AVP . . . . . . . . . . . 139 9.8.6. Accounting-Sub-Session-Id AVP . . . . . . . . . . . 140
9.8.7. Accounting-Realtime-Required AVP . . . . . . . . . . 139 9.8.7. Accounting-Realtime-Required AVP . . . . . . . . . . 140
10. AVP Occurrence Table . . . . . . . . . . . . . . . . . . . . 141 10. AVP Occurrence Table . . . . . . . . . . . . . . . . . . . . 141
10.1. Base Protocol Command AVP Table . . . . . . . . . . . . . 141 10.1. Base Protocol Command AVP Table . . . . . . . . . . . . . 141
10.2. Accounting AVP Table . . . . . . . . . . . . . . . . . . 142 10.2. Accounting AVP Table . . . . . . . . . . . . . . . . . . 142
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144
11.1. AVP Header . . . . . . . . . . . . . . . . . . . . . . . 144 11.1. AVP Header . . . . . . . . . . . . . . . . . . . . . . . 144
11.1.1. AVP Codes . . . . . . . . . . . . . . . . . . . . . 144 11.1.1. AVP Codes . . . . . . . . . . . . . . . . . . . . . 144
11.1.2. AVP Flags . . . . . . . . . . . . . . . . . . . . . 145 11.1.2. AVP Flags . . . . . . . . . . . . . . . . . . . . . 145
11.2. Diameter Header . . . . . . . . . . . . . . . . . . . . . 145 11.2. Diameter Header . . . . . . . . . . . . . . . . . . . . . 145
11.2.1. Command Codes . . . . . . . . . . . . . . . . . . . 145 11.2.1. Command Codes . . . . . . . . . . . . . . . . . . . 145
11.2.2. Command Flags . . . . . . . . . . . . . . . . . . . 146 11.2.2. Command Flags . . . . . . . . . . . . . . . . . . . 146
skipping to change at page 14, line 23 skipping to change at page 14, line 23
requiring new AVPs, addition of EAP methods does not require the requiring new AVPs, addition of EAP methods does not require the
creation of a new authentication application. creation of a new authentication application.
Creation of a new application should be viewed as a last resort. An Creation of a new application should be viewed as a last resort. An
implementation MAY add arbitrary non-mandatory AVPs to any command implementation MAY add arbitrary non-mandatory AVPs to any command
defined in an application, including vendor-specific AVPs without defined in an application, including vendor-specific AVPs without
needing to define a new application. Please refer to Section 11.1.1 needing to define a new application. Please refer to Section 11.1.1
for details. for details.
In order to justify allocation of a new application identifier, In order to justify allocation of a new application identifier,
Diameter applications MUST define one Command Code, or add new Diameter applications MUST define one Command Code, add new mandatory
mandatory AVPs to the ABNF. AVPs to the ABNF or significantly change the state machine or
processing rules of an existing application.
The expected AVPs MUST be defined in an ABNF [RFC2234] grammar (see The expected AVPs MUST be defined in an ABNF [RFC2234] grammar (see
Section 3.2). If the Diameter application has accounting Section 3.2). If the Diameter application has accounting
requirements, it MUST also specify the AVPs that are to be present in requirements, it MUST also specify the AVPs that are to be present in
the Diameter Accounting messages (see Section 9.3). However, just the Diameter Accounting messages (see Section 9.3). However, just
because a new authentication application id is required, does not because a new authentication application id is required, does not
imply that a new accounting application id is required. imply that a new accounting application id is required.
When possible, a new Diameter application SHOULD reuse existing When possible, a new Diameter application SHOULD reuse existing
Diameter AVPs, in order to avoid defining multiple AVPs that carry Diameter AVPs, in order to avoid defining multiple AVPs that carry
skipping to change at page 19, line 44 skipping to change at page 19, line 44
Real-time Accounting Real-time Accounting
Real-time accounting involves the processing of information on Real-time accounting involves the processing of information on
resource usage within a defined time window. Time constraints are resource usage within a defined time window. Time constraints are
typically imposed in order to limit financial risk. typically imposed in order to limit financial risk.
Relay Agent or Relay Relay Agent or Relay
Relays forward requests and responses based on routing-related Relays forward requests and responses based on routing-related
AVPs and realm routing table entries. Since relays do not make AVPs and routing table entries. Since relays do not make policy
policy decisions, they do not examine or alter non-routing AVPs. decisions, they do not examine or alter non-routing AVPs. As a
As a result, relays never originate messages, do not need to result, relays never originate messages, do not need to understand
understand the semantics of messages or non-routing AVPs, and are the semantics of messages or non-routing AVPs, and are capable of
capable of handling any Diameter application or message type. handling any Diameter application or message type. Since relays
make decisions based on information in routing AVPs and realm
Since relays make decisions based on information in routing AVPs forwarding tables they do not keep state on NAS resource usage or
and realm forwarding tables they do not keep state on NAS resource sessions in progress.
usage or sessions in progress.
Redirect Agent Redirect Agent
Rather than forwarding requests and responses between clients and Rather than forwarding requests and responses between clients and
servers, redirect agents refer clients to servers and allow them servers, redirect agents refer clients to servers and allow them
to communicate directly. Since redirect agents do not sit in the to communicate directly. Since redirect agents do not sit in the
forwarding path, they do not alter any AVPs transiting between forwarding path, they do not alter any AVPs transiting between
client and server. Redirect agents do not originate messages and client and server. Redirect agents do not originate messages and
are capable of handling any message type, although they may be are capable of handling any message type, although they may be
configured only to redirect messages of certain types, while configured only to redirect messages of certain types, while
skipping to change at page 27, line 37 skipping to change at page 27, line 37
that Diameter messages pertaining to the session, both application that Diameter messages pertaining to the session, both application
specific and those that are defined in this document such as ASR/ASA, specific and those that are defined in this document such as ASR/ASA,
RAR/RAA and STR/STA MUST carry the application identifier of the RAR/RAA and STR/STA MUST carry the application identifier of the
application. Diameter messages pertaining to peer connection application. Diameter messages pertaining to peer connection
establishment and maintenance such as CER/CEA, DWR/DWA and DPR/DPA establishment and maintenance such as CER/CEA, DWR/DWA and DPR/DPA
MUST carry an application id of zero (0). MUST carry an application id of zero (0).
2.6. Peer Table 2.6. Peer Table
The Diameter Peer Table is used in message forwarding, and referenced The Diameter Peer Table is used in message forwarding, and referenced
by the Realm Routing Table. A Peer Table entry contains the by the Routing Table. A Peer Table entry contains the following
following fields: fields:
Host identity Host identity
Following the conventions described for the DiameterIdentity Following the conventions described for the DiameterIdentity
derived AVP data format in Section 4.4. This field contains the derived AVP data format in Section 4.4. This field contains the
contents of the Origin-Host (Section 6.3) AVP found in the CER or contents of the Origin-Host (Section 6.3) AVP found in the CER or
CEA message. CEA message.
StatusT StatusT
skipping to change at page 28, line 23 skipping to change at page 28, line 23
entries are to be either refreshed, or expired. entries are to be either refreshed, or expired.
TLS Enabled TLS Enabled
Specifies whether TLS is to be used when communicating with the Specifies whether TLS is to be used when communicating with the
peer. peer.
Additional security information, when needed (e.g., keys, Additional security information, when needed (e.g., keys,
certificates) certificates)
2.7. Realm-Based Routing Table 2.7. Routing Table
All Realm-Based routing lookups are performed against what is All Realm-Based routing lookups are performed against what is
commonly known as the Realm Routing Table (see Section 12). A Realm commonly known as the Routing Table (see Section 12). A Routing
Routing Table Entry contains the following fields: Table Entry contains the following fields:
Realm Name Realm Name
This is the field that is typically used as a primary key in the This is the field that is typically used as a primary key in the
routing table lookups. Note that some implementations perform routing table lookups. Note that some implementations perform
their lookups based on longest-match-from-the-right on the realm their lookups based on longest-match-from-the-right on the realm
rather than requiring an exact match. rather than requiring an exact match.
Application Identifier Application Identifier
skipping to change at page 31, line 25 skipping to change at page 31, line 25
be stateless for others. A Diameter implementation MAY act as one be stateless for others. A Diameter implementation MAY act as one
type of agent for some requests, and as another type of agent for type of agent for some requests, and as another type of agent for
others. others.
2.8.1. Relay Agents 2.8.1. Relay Agents
Relay Agents are Diameter agents that accept requests and route Relay Agents are Diameter agents that accept requests and route
messages to other Diameter nodes based on information found in the messages to other Diameter nodes based on information found in the
messages (e.g., Destination-Realm). This routing decision is messages (e.g., Destination-Realm). This routing decision is
performed using a list of supported realms, and known peers. This is performed using a list of supported realms, and known peers. This is
known as the Realm Routing Table, as is defined further in Section known as the Routing Table, as is defined further in Section 2.7.
2.7.
Relays MAY be used to aggregate requests from multiple Network Access Relays MAY be used to aggregate requests from multiple Network Access
Servers (NASes) within a common geographical area (POP). The use of Servers (NASes) within a common geographical area (POP). The use of
Relays is advantageous since it eliminates the need for NASes to be Relays is advantageous since it eliminates the need for NASes to be
configured with the necessary security information they would configured with the necessary security information they would
otherwise require to communicate with Diameter servers in other otherwise require to communicate with Diameter servers in other
realms. Likewise, this reduces the configuration load on Diameter realms. Likewise, this reduces the configuration load on Diameter
servers that would otherwise be necessary when NASes are added, servers that would otherwise be necessary when NASes are added,
changed or deleted. changed or deleted.
skipping to change at page 66, line 36 skipping to change at page 66, line 36
sent to a peer. sent to a peer.
A receiver of a Capabilities-Exchange-Req (CER) message that does not A receiver of a Capabilities-Exchange-Req (CER) message that does not
have any applications in common with the sender MUST return a have any applications in common with the sender MUST return a
Capabilities-Exchange-Answer (CEA) with the Result-Code AVP set to Capabilities-Exchange-Answer (CEA) with the Result-Code AVP set to
DIAMETER_NO_COMMON_APPLICATION, and SHOULD disconnect the transport DIAMETER_NO_COMMON_APPLICATION, and SHOULD disconnect the transport
layer connection. Note that receiving a CER or CEA from a peer layer connection. Note that receiving a CER or CEA from a peer
advertising itself as a Relay (see Section 2.4) MUST be interpreted advertising itself as a Relay (see Section 2.4) MUST be interpreted
as having common applications with the peer. as having common applications with the peer.
The receiver of the Capabilities-Exchange-Request (CER) MUST
determine common applications by computing the intersection of its
own set of supported application identifiers against all of the
application indentifier AVPs (Auth-Application-Id,
Acct-Application-Id and Vendor-Specific-Application-Id) present in
the CER. The value of the Vendor-Id AVP in the Vendor-Specific-
Application-Id MUST not be used during computation. The sender of
the Capabilities-Exchange-Answer (CEA) SHOULD include all of its
supported applications as a hint to the receiver regarding all of its
application capabilities.
Similarly, a receiver of a Capabilities-Exchange-Req (CER) message Similarly, a receiver of a Capabilities-Exchange-Req (CER) message
that does not have any security mechanisms in common with the sender that does not have any security mechanisms in common with the sender
MUST return a Capabilities-Exchange-Answer (CEA) with the Result-Code MUST return a Capabilities-Exchange-Answer (CEA) with the Result-Code
AVP set to DIAMETER_NO_COMMON_SECURITY, and SHOULD disconnect the AVP set to DIAMETER_NO_COMMON_SECURITY, and SHOULD disconnect the
transport layer connection. transport layer connection.
CERs received from unknown peers MAY be silently discarded, or a CEA CERs received from unknown peers MAY be silently discarded, or a CEA
MAY be issued with the Result-Code AVP set to DIAMETER_UNKNOWN_PEER. MAY be issued with the Result-Code AVP set to DIAMETER_UNKNOWN_PEER.
In both cases, the transport connection is closed. If the local In both cases, the transport connection is closed. If the local
policy permits receiving CERs from unknown hosts, a successful CEA policy permits receiving CERs from unknown hosts, a successful CEA
skipping to change at page 69, line 31 skipping to change at page 69, line 47
Host-IP- Address AVP for each address. This AVP MUST ONLY be used in Host-IP- Address AVP for each address. This AVP MUST ONLY be used in
the CER and CEA messages. the CER and CEA messages.
5.3.6. Supported-Vendor-Id AVP 5.3.6. Supported-Vendor-Id AVP
The Supported-Vendor-Id AVP (AVP Code 265) is of type Unsigned32 and The Supported-Vendor-Id AVP (AVP Code 265) is of type Unsigned32 and
contains the IANA "SMI Network Management Private Enterprise Codes" contains the IANA "SMI Network Management Private Enterprise Codes"
[RFC3232] value assigned to a vendor other than the device vendor. [RFC3232] value assigned to a vendor other than the device vendor.
This is used in the CER and CEA messages in order to inform the peer This is used in the CER and CEA messages in order to inform the peer
that the sender supports (a subset of) the vendor-specific AVPs that the sender supports (a subset of) the vendor-specific AVPs
defined by the vendor identified in this AVP. defined by the vendor identified in this AVP. The value of this AVP
SHOULD NOT be set to zero. Multiple instances of this AVP containing
the same value SHOULD NOT be sent.
5.3.7. Product-Name AVP 5.3.7. Product-Name AVP
The Product-Name AVP (AVP Code 269) is of type UTF8String, and The Product-Name AVP (AVP Code 269) is of type UTF8String, and
contains the vendor assigned name for the product. The Product-Name contains the vendor assigned name for the product. The Product-Name
AVP SHOULD remain constant across firmware revisions for the same AVP SHOULD remain constant across firmware revisions for the same
product. product.
5.4. Disconnecting Peer connections 5.4. Disconnecting Peer connections
skipping to change at page 70, line 14 skipping to change at page 70, line 35
The Disconnect-Peer-Request message is used by a Diameter node to The Disconnect-Peer-Request message is used by a Diameter node to
inform its peer of its intent to disconnect the transport layer, and inform its peer of its intent to disconnect the transport layer, and
that the peer shouldn't reconnect unless it has a valid reason to do that the peer shouldn't reconnect unless it has a valid reason to do
so (e.g., message to be forwarded). Upon receipt of the message, the so (e.g., message to be forwarded). Upon receipt of the message, the
Disconnect-Peer-Answer is returned, which SHOULD contain an error if Disconnect-Peer-Answer is returned, which SHOULD contain an error if
messages have recently been forwarded, and are likely in flight, messages have recently been forwarded, and are likely in flight,
which would otherwise cause a race condition. which would otherwise cause a race condition.
The receiver of the Disconnect-Peer-Answer initiates the transport The receiver of the Disconnect-Peer-Answer initiates the transport
disconnect. disconnect. The sender of the Disconnect-Peer-Answer should be able
to detect the transport closure and cleanup the connection.
5.4.1. Disconnect-Peer-Request 5.4.1. Disconnect-Peer-Request
The Disconnect-Peer-Request (DPR), indicated by the Command-Code set The Disconnect-Peer-Request (DPR), indicated by the Command-Code set
to 282 and the Command Flags' 'R' bit set, is sent to a peer to to 282 and the Command Flags' 'R' bit set, is sent to a peer to
inform its intentions to shutdown the transport connection. Upon inform its intentions to shutdown the transport connection. Upon
detection of a transport failure, this message MUST NOT be sent to an detection of a transport failure, this message MUST NOT be sent to an
alternate peer. alternate peer.
Message Format Message Format
skipping to change at page 79, line 8 skipping to change at page 79, line 8
Process-DWR The DWR message is serviced. Process-DWR The DWR message is serviced.
Process-DWA The DWA message is serviced. Process-DWA The DWA message is serviced.
Process A message is serviced. Process A message is serviced.
5.6.4. The Election Process 5.6.4. The Election Process
The election is performed on the responder. The responder compares The election is performed on the responder. The responder compares
the Origin-Host received in the CER sent by its peer with its own the Origin-Host received in the CER with its own Origin-Host as two
Origin-Host. If the local Diameter entity's Origin-Host is higher streams of octets. If the local Origin-Host lexicographically
than the peer's, a Win-Election event is issued locally. succeeds the received Origin-Host a Win-Election event is issued
locally.
The comparison proceeds by considering the shorter OctetString to be To be consistent with DNS case insensitivity, octets that fall in the
padded with zeros so that it length is the same as the length of the ASCII range 'a' through 'z' MUST compare equally to their upper-case
longer, then performing an octet-by-octet unsigned comparison with counterparts between 'A' and 'Z', i.e. value 0x41 compares equal to
the first octet being most significant. Any remaining octets are 0x61, 0x42 to 0x62 and so forth up to and including 0x5a and 0x7a.
assumed to have value 0x80.
5.6.5. Capabilities Update 5.6.5. Capabilities Update
A Diameter node MUST initiate peer capabilities update by sending a A Diameter node MUST initiate peer capabilities update by sending a
Capabilities-Exchange-Req (CER) to all its peers which supports peer Capabilities-Exchange-Req (CER) to all its peers which supports peer
capabilities update and is in OPEN state. The receiver of CER in capabilities update and is in OPEN state. The receiver of CER in
open state MUST process and reply to the CER as a described in open state MUST process and reply to the CER as a described in
Section 5.3. The CEA which the receiver sends MUST contain its Section 5.3. The CEA which the receiver sends MUST contain its
latest capabilities. Note that peers which successfully process the latest capabilities. Note that peers which successfully process the
peer capabilities update SHOULD also update their routing tables to peer capabilities update SHOULD also update their routing tables to
skipping to change at page 83, line 28 skipping to change at page 83, line 28
Application-Id or Vendor-Specific-Application-Id instead of the Application-Id or Vendor-Specific-Application-Id instead of the
application id in the message header as a secondary measure. The application id in the message header as a secondary measure. The
realm MAY be retrieved from the User-Name AVP, which is in the form realm MAY be retrieved from the User-Name AVP, which is in the form
of a Network Access Identifier (NAI). The realm portion of the NAI of a Network Access Identifier (NAI). The realm portion of the NAI
is inserted in the Destination-Realm AVP. is inserted in the Destination-Realm AVP.
Diameter agents MAY have a list of locally supported realms and Diameter agents MAY have a list of locally supported realms and
applications, and MAY have a list of externally supported realms and applications, and MAY have a list of externally supported realms and
applications. When a request is received that includes a realm applications. When a request is received that includes a realm
and/or application that is not locally supported, the message is and/or application that is not locally supported, the message is
routed to the peer configured in the Realm Routing Table (see Section routed to the peer configured in the Routing Table (see Section 2.7).
2.7).
Realm names and application identifiers are the minimum supported
routing criteria, additional routing information maybe needed to
support redirect semantics.
6.1.7. Predictive Loop Avoidance 6.1.7. Predictive Loop Avoidance
Before forwarding or routing a request, Diameter agents, in addition Before forwarding or routing a request, Diameter agents, in addition
to processing done in Section 6.1.3, SHOULD check for the presence of to processing done in Section 6.1.3, SHOULD check for the presence of
candidate route's peer identity in any of the Route-Record AVPs. In candidate route's peer identity in any of the Route-Record AVPs. In
an event of the agent detecting the presence of a candidate route's an event of the agent detecting the presence of a candidate route's
peer identity in a Route-Record AVP, the agent MUST ignore such route peer identity in a Route-Record AVP, the agent MUST ignore such route
for the Diameter request message and attempt alternate routes if any. for the Diameter request message and attempt alternate routes if any.
In case all the candidate routes are eliminated by the above In case all the candidate routes are eliminated by the above
skipping to change at page 84, line 51 skipping to change at page 84, line 51
which includes the IP address, port and protocol. which includes the IP address, port and protocol.
A relay or proxy agent MAY include the Proxy-Info AVP in requests if A relay or proxy agent MAY include the Proxy-Info AVP in requests if
it requires access to any local state information when the it requires access to any local state information when the
corresponding response is received. Proxy-Info AVP has certain corresponding response is received. Proxy-Info AVP has certain
security implications and SHOULD contain an embedded HMAC with a security implications and SHOULD contain an embedded HMAC with a
node-local key. Alternatively, it MAY simply use local storage to node-local key. Alternatively, it MAY simply use local storage to
store state information. store state information.
The message is then forwarded to the next hop, as identified in the The message is then forwarded to the next hop, as identified in the
Realm Routing Table. Routing Table.
Figure 6 provides an example of message routing using the procedures Figure 6 provides an example of message routing using the procedures
listed in these sections. listed in these sections.
(Origin-Host=nas.mno.net) (Origin-Host=nas.mno.net) (Origin-Host=nas.mno.net) (Origin-Host=nas.mno.net)
(Origin-Realm=mno.net) (Origin-Realm=mno.net) (Origin-Realm=mno.net) (Origin-Realm=mno.net)
(Destination-Realm=example.com) (Destination- (Destination-Realm=example.com) (Destination-
Realm=example.com) Realm=example.com)
(Route-Record=nas.example.net) (Route-Record=nas.example.net)
+------+ ------> +------+ ------> +------+ +------+ ------> +------+ ------> +------+
| | (Request) | | (Request) | | | | (Request) | | (Request) | |
| NAS +-------------------+ DRL +-------------------+ HMS | | NAS +-------------------+ DRL +-------------------+ HMS |
| | | | | | | | | | | |
+------+ <------ +------+ <------ +------+ +------+ <------ +------+ <------ +------+
example.net (Answer) example.net (Answer) example.com example.net (Answer) example.net (Answer) example.com
(Origin-Host=hms.example.com) (Origin-Host=hms.example.com) (Origin-Host=hms.example.com) (Origin-Host=hms.example.com)
(Origin-Realm=example.com) (Origin-Realm=example.com) (Origin-Realm=example.com) (Origin-Realm=example.com)
Figure 6: Routing of Diameter messages Figure 6: Routing of Diameter messages
Relay agents does not require full validation of incoming messages.
At the minimum, validation of the message header and relevant routing
AVPs has to be done when relaying messages.
6.2. Diameter Answer Processing 6.2. Diameter Answer Processing
When a request is locally processed, the following procedures MUST be When a request is locally processed, the following procedures MUST be
applied to create the associated answer, in addition to any applied to create the associated answer, in addition to any
additional procedures that MAY be discussed in the Diameter additional procedures that MAY be discussed in the Diameter
application defining the command: application defining the command:
o The same Hop-by-Hop identifier in the request is used in the o The same Hop-by-Hop identifier in the request is used in the
answer. answer.
skipping to change at page 100, line 6 skipping to change at page 100, line 6
offending AVP. offending AVP.
DIAMETER_AVP_OCCURS_TOO_MANY_TIMES 5009 DIAMETER_AVP_OCCURS_TOO_MANY_TIMES 5009
A message was received that included an AVP that appeared more A message was received that included an AVP that appeared more
often than permitted in the message definition. The Failed-AVP often than permitted in the message definition. The Failed-AVP
AVP MUST be included and contain a copy of the first instance of AVP MUST be included and contain a copy of the first instance of
the offending AVP that exceeded the maximum number of occurrences the offending AVP that exceeded the maximum number of occurrences
DIAMETER_NO_COMMON_APPLICATION 5010 DIAMETER_NO_COMMON_APPLICATION 5010
This error is returned when a CER message is received, and there This error is returned when a node that is not acting as a relay
are no common applications supported between the peers. and supporting a specific set of application has an empty
intersection with the set of application advertised by its peer.
DIAMETER_UNSUPPORTED_VERSION 5011 DIAMETER_UNSUPPORTED_VERSION 5011
This error is returned when a request was received, whose version This error is returned when a request was received, whose version
number is unsupported. number is unsupported.
DIAMETER_UNABLE_TO_COMPLY 5012 DIAMETER_UNABLE_TO_COMPLY 5012
This error is returned when a request is rejected for unspecified This error is returned when a request is rejected for unspecified
reasons. reasons.
skipping to change at page 132, line 26 skipping to change at page 132, line 26
Accounting-Realtime-Required AVP received earlier for the session in Accounting-Realtime-Required AVP received earlier for the session in
question. question.
Each Diameter Accounting protocol message MAY be compressed, in order Each Diameter Accounting protocol message MAY be compressed, in order
to reduce network bandwidth usage. If IPsec and IKE are used to to reduce network bandwidth usage. If IPsec and IKE are used to
secure the Diameter session, then IP compression [RFC3173] MAY be secure the Diameter session, then IP compression [RFC3173] MAY be
used and IKE [RFC2409] MAY be used to negotiate the compression used and IKE [RFC2409] MAY be used to negotiate the compression
parameters. If TLS is used to secure the Diameter session, then TLS parameters. If TLS is used to secure the Diameter session, then TLS
compression [RFC2246] MAY be used. compression [RFC2246] MAY be used.
9.3. Application document requirements 9.3. Accounting Application Extension and Requirements
Each Diameter application (e.g., NASREQ, MobileIP), MUST define their Each Diameter application (e.g., NASREQ, MobileIP), MUST define their
Service-Specific AVPs that MUST be present in the Accounting-Request Service-Specific AVPs that MUST be present in the Accounting-Request
message in a section entitled "Accounting AVPs". The application message in a section entitled "Accounting AVPs". The application
MUST assume that the AVPs described in this document will be present MUST assume that the AVPs described in this document will be present
in all Accounting messages, so only their respective service-specific in all Accounting messages, so only their respective service-specific
AVPs need to be defined in this section. AVPs need to be defined in this section.
Applications have the option of using one or both of the following
accounting application extension models:
Coupled Accounting Service
The accounting messages will carry the application identifier of
the application that is using it. The application itself will
process the received accounting records or forward them to an
accounting server. There is no accounting application
advertisement required during capabilities exchange and the
accounting messages will be routed the same as any of the other
application messages.
Split Accounting Service