DIAMETERは、RADIUSの後継となる認証・認可・課金 (AAA: Authentication, Authorization, Accounting) プロトコルである。
RADIUSからの改善点 DIAMETERという名前は、RADIUSプロトコルにかけた駄洒落である (直径:diameterは半径:radiusの2倍になる)。DIAMETERはRADIUSとの後方互換性はないが、RADIUSからのアップグレード・パスを提供している。 RADIUSとの主な違いは、 RADIUSで使われているUDPではなく、信頼性のあるトランスポート・プロトコルであるTCPやSCTPを用いる トランスポート層のセキュリティ (IPsecまたはTLS) を利用可能 RADIUSからの移行をサポート RADIUSよりも大きな属性値ペアと識別子のアドレス空間を持つ (8ビットから32ビットに拡張) サーバ発のメッセージもサポートする点を除き、クライアント・サーバ型のプロトコルである ステートフルおよびステートレスのモデルを利用できる DNSのSRV・NAPTRレコードを用いたピアの動的発見 機能ネゴシエーション アプリケーション層での肯定応答をサポートし、フェイルオーバーの方法とステートマシーンを定義 エラー通知 改善されたローミングサポート 新しいコマンドと属性の定義を利用した簡単な拡張 32ビットの区切り ユーザーセッションと課金管理の基本サポート
プロトコルの詳細 Diameter基本プロトコルは、AAAプロトコルの最小限の要求として、で規定されている。Diameterアプリケーションは、新しいコマンドや属性を追加することにより基本プロトコルを拡張することができる。ただし、ここで言うアプリケーションとはプログラムのことではなく、Diameterに基づいたプロトコルのことを指す。DIAMETERのセキュリティは、すでに十分に確立されたプロトコルであるIPsecやTLSによって提供される。
パケット・フォーマット 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
コマンド 各コマンドには、要求・応答共に利用されるコマンド・コードが割り当てられている。
コマンド名略称コード AA-RequestAAR265 AA-AnswerAAA265 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-AnswerSTA275User-Authorization-RequestUAR300User-Authorization-AnswerUAA300Server-Assignment-RequestSAR301Server-Assignment-AnswerSAA301Location-Info-RequestLIR302Location-Info-AnswerLIA302Multimedia-Auth-RequestMAR303Multimedia-Auth-AnswerMAA303Registration-Termination-RequestRTR304Registration-Termination-AnswerRTA304Push-Profile-RequestPPR305Push-Profile-AnswerPPA305
属性値ペア 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 ... +-+-+-+-+-+-+-+-+
属性名コードデータ型 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
状態機械
The defines a core state machine for maintaining connections between peers and processing messages. This is part of the basic protocol functionality and all stacks should support it and as such abstract from the connectivity related operations.
Additionally, application specific state machines can be introduced either later or at a higher abstraction layer. The defines an authorization and an accounting state machine.
メッセージ・フロー
アプリケーション Diameter アプリケーションとはアプリケーションソフトウェアのことではなく、Diameter基本プロトコルに基づいたプロトコルのことである。各アプリケーションはアプリケーション識別子によって定義され、新しいコマンドコードや必須属性値ペアを追加することができる。新しいオプション属性値ペアを追加すること自体は新しいアプリケーションを必要とはしない。
Diameterアプリケーションの例: Diameter Mobile IPv4 Application (MobileIP, ) Diameter Network Access Server Application (NASREQ, ) Diameter Extensible Authentication Protocol Application () Diameter Credit-Control Application (DCCA, ) Diameter Session Initiation Protocol Application () IP Multimedia Subsystemで使われる様々なアプリケーション
外部リンク freeDiameter Open Diameter Documentation Page Cisco IOS ソフトウェア (RADIUSとDIAMETERの違いの一覧がある) Open DiameterのDebianパッケージ jdiameter、Java用Diameter基本プロトコル