Francais | English | Espanõl

DIAMETER

From Wikipedia, the free encyclopedia

Jump to: navigation, search
For the geometric term, see Diameter

Contents

[edit] 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 can use 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 client-server protocol, with exception of supporting some server-initiated messages as well
  • 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 more easily extended; new commands and attributes can be defined
  • it is aligned on 32 bit boundaries
  • it has basic support for user-sessions and accounting

[edit] 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.

[edit] 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 ...
  +-+-+-+-+-+-+-+-+-+-+-+-+-


[edit] Commands

Each command is assigned a command code, which is used for both requests and answers.

Command-NameAbbr.Code
Abort-Session-RequestASR274
Abort-Session-AnswerASA274
Accounting-RequestACR271
Accounting-AnswerACA271
Capabilities-Exchange-RequestCER257
Capabilities-Exchange-AnswerCEA257
Device-Watchdog-RequestDWR280
Device-Watchdog-AnswerDWA280
Disconnect-Peer-RequestDPR282
Disconnect-Peer-AnswerDPA282
Re-Auth-RequestRAR258
Re-Auth-AnswerRAA258
Session-Termination-RequestSTR275
Session-Termination-AnswerSTA275


[edit] 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-NameCodeData Type
Acct-Interim-Interval85Unsigned32
Accounting-Realtime-Required483Enumerated
Acct-Multi-Session-Id50UTF8String
Accounting-Record-Number485Unsigned32
Accounting-Record-Type480Enumerated
Accounting-Session-Id44OctetString
Accounting-Sub-Session-Id287Unsigned64
Acct-Application-Id259Unsigned32
Auth-Application-Id258Unsigned32
Auth-Request-Type274Enumerated
Authorization-Lifetime291Unsigned32
Auth-Grace-Period276Unsigned32
Auth-Session-State277Enumerated
Re-Auth-Request-Type285Enumerated
Class25OctetString
Destination-Host293DiamIdent
Destination-Realm283DiamIdent
Disconnect-Cause273Enumerated
E2E-Sequence300Grouped
Error-Message281UTF8String
Error-Reporting-Host294DiamIdent
Event-Timestamp55Time
Experimental-Result297Grouped
Experimental-Result-Code298Unsigned32
Failed-AVP279Grouped
Firmware-Revision267Unsigned32
Host-IP-Address257Address
Inband-Security-Id299Unsigned32
Multi-Round-Time-Out272Unsigned32
Origin-Host264DiamIdent
Origin-Realm296DiamIdent
Origin-State-Id278Unsigned32
Product-Name269UTF8String
Proxy-Host280DiamIdent
Proxy-Info284Grouped
Proxy-State33OctetString
Redirect-Host292DiamURI
Redirect-Host-Usage261Enumerated
Redirect-Max-Cache-Time262Unsigned32
Result-Code268Unsigned32
Route-Record282DiamIdent
Session-Id263UTF8String
Session-Timeout27Unsigned32
Session-Binding270Unsigned32
Session-Server-Failover271Enumerated
Supported-Vendor-Id265Unsigned32
Termination-Cause295Enumerated
User-Name1UTF8String
Vendor-Id266Unsigned32
Vendor-Specific-Application-Id260Grouped

[edit] State machines

[edit] Message flows


[edit] 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 :

[edit] External links

Image:Nuvola apps kruler.pngThis standards- or measurement-related article is a stub. You can help Wikipedia by expanding it.
cs:DIAMETER

de:DIAMETER es:DIAMETER it:DIAMETER ro:DIAMETER ru:DIAMETER

Personal tools