|
DIAMETER
- For the geometric term, see diameter.
Internet protocol suite
| Layer |
Protocols |
| Application |
DNS, TLS/SSL, TFTP, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, TELNET, BitTorrent, RTP, rlogin, … |
| Transport |
TCP, UDP, DCCP, SCTP, IL, RUDP, … |
| Network |
IP (IPv4, IPv6), ICMP, IGMP, ARP, RARP, … |
| Link |
Ethernet, Wi-Fi, Token ring, PPP, SLIP, FDDI, ATM, DTM, Frame Relay, SMDS, … |
Diameter is an AAA (authentication, authorization and accounting) protocol for applications such as network access or IP mobility. The basic concept is to provide a base protocol that can be extended in order to provide AAA services to new access technologies. Diameter is intended to work in both local and roaming AAA situations.
Upgrade from RADIUS
The name is a pun on the RADIUS protocol, which is the predecessor (a diameter is twice the radius). Diameter is not directly backwards compatible, but provides an upgrade path for RADIUS. The main differences are :
- it uses reliable transport protocols (TCP or SCTP, not UDP)
- it uses transport level security (IPsec or TLS)
- it has transition support for RADIUS
- it has larger address space for AVPs (Attribute Value Pairs) and identifiers (32-bit instead of 8-bit)
- it is a peer-to-peer protocol, not client-server : supports server-initiated messages
- both stateful and stateless models can be used
- it has dynamic discovery of peers (using DNS SRV and NAPTR)
- it has capability negotiation
- it supports application layer acknowledgements, defines failover methods and statemachines (RFC 3539)
- it has error notification
- it has better roaming support
- it is easier extended, new commands and attributes can be defined
- is aligned on 32 bit boundaries
- basic support for user-sessions and accounting is built in
Protocol description
The Diameter Base Protocol is defined by RFC 3588, and defines the minimum requirements for an AAA protocol. Diameter Applications can extend the base protocol, by adding new commands and/or attributes. An application is not a program, but a protocol based on Diameter. Diameter security is provided by IPSEC or TLS, both well-regarded protocols.
Packet format
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| command flags | Command-Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Application-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hop-by-Hop Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| End-to-End Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AVPs ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
Commands
Each command is assigned a command code, which is used for both requests and answers.
| Command-Name |
Abbr. |
Code |
| Abort-Session-Request |
ASR |
274 |
| Abort-Session-Answer |
ASA |
274 |
| Accounting-Request |
ACR |
271 |
| Accounting-Answer |
ACA |
271 |
| Capabilities-Exchange-Request |
CER |
257 |
| Capabilities-Exchange-Answer |
CEA |
257 |
| Device-Watchdog-Request |
DWR |
280 |
| Device-Watchdog-Answer |
DWA |
280 |
| Disconnect-Peer-Request |
DPR |
282 |
| Disconnect-Peer-Answer |
DPA |
282 |
| Re-Auth-Request |
RAR |
258 |
| Re-Auth-Answer |
RAA |
258 |
| Session-Termination-Request |
STR |
275 |
| Session-Termination-Answer |
STA |
275 |
Attribute-Value Pairs (AVP)
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 ...
+-+-+-+-+-+-+-+-+
| Attribute-Name |
Code |
Data Type |
| Acct-Interim-Interval |
85 |
Unsigned32 |
| Accounting-Realtime-Required |
483 |
Enumerated |
| Acct-Multi-Session-Id |
50 |
UTF8String |
| Accounting-Record-Number |
485 |
Unsigned32 |
| Accounting-Record-Type |
480 |
Enumerated |
| Accounting-Session-Id |
44 |
OctetString |
| Accounting-Sub-Session-Id |
287 |
Unsigned64 |
| Acct-Application-Id |
259 |
Unsigned32 |
| Auth-Application-Id |
258 |
Unsigned32 |
| Auth-Request-Type |
274 |
Enumerated |
| Authorization-Lifetime |
291 |
Unsigned32 |
| Auth-Grace-Period |
276 |
Unsigned32 |
| Auth-Session-State |
277 |
Enumerated |
| Re-Auth-Request-Type |
285 |
Enumerated |
| Class |
25 |
OctetString |
| Destination-Host |
293 |
DiamIdent |
| Destination-Realm |
283 |
DiamIdent |
| Disconnect-Cause |
273 |
Enumerated |
| E2E-Sequence |
300 |
Grouped |
| Error-Message |
281 |
UTF8String |
| Error-Reporting-Host |
294 |
DiamIdent |
| Event-Timestamp |
55 |
Time |
| Experimental-Result |
297 |
Grouped |
| Experimental-Result-Code |
298 |
Unsigned32 |
| Failed-AVP |
279 |
Grouped |
| Firmware-Revision |
267 |
Unsigned32 |
| Host-IP-Address |
257 |
Address |
| Inband-Security-Id |
299 |
Unsigned32 |
| Multi-Round-Time-Out |
272 |
Unsigned32 |
| Origin-Host |
264 |
DiamIdent |
| Origin-Realm |
296 |
DiamIdent |
| Origin-State-Id |
278 |
Unsigned32 |
| Product-Name |
269 |
UTF8String |
| Proxy-Host |
280 |
DiamIdent |
| Proxy-Info |
284 |
Grouped |
| Proxy-State |
33 |
OctetString |
| Redirect-Host |
292 |
DiamURI |
| Redirect-Host-Usage |
261 |
Enumerated |
| Redirect-Max-Cache-Time |
262 |
Unsigned32 |
| Result-Code |
268 |
Unsigned32 |
| Route-Record |
282 |
DiamIdent |
| Session-Id |
263 |
UTF8String |
| Session-Timeout |
27 |
Unsigned32 |
| Session-Binding |
270 |
Unsigned32 |
| Session-Server-Failover |
271 |
Enumerated |
| Supported-Vendor-Id |
265 |
Unsigned32 |
| Termination-Cause |
295 |
Enumerated |
| User-Name |
1 |
UTF8String |
| Vendor-Id |
266 |
Unsigned32 |
| Vendor-Specific-Application-Id |
260 |
Grouped |
State machines
Message flows
Applications
A Diameter Application isn't a software application, but a protocol based on the DIAMETER Base protocol (defined in RFC 3588). Each application is defined by an application identifier, and can add new command codes and/or new mandatory AVPs. Adding a new optional AVP doesn't require a new application.
Examples of Diameter applications :
External links
|