利用者:NKEISK/DIAMETER
表示
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プロトコルの最小限の要求として、RFC 3588で規定されている。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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
コマンド
[編集]各コマンドには、要求・応答共に利用されるコマンド・コードが割り当てられている。
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 |
属性値ペア
[編集]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 |
状態機械
[編集]メッセージ・フロー
[編集]アプリケーション
[編集]Diameter アプリケーションとはアプリケーションソフトウェアのことではなく、Diameter基本プロトコルに基づいたプロトコルのことである。各アプリケーションはアプリケーション識別子によって定義され、新しいコマンドコードや必須属性値ペアを追加することができる。新しいオプション属性値ペアを追加すること自体は新しいアプリケーションを必要とはしない。
Diameterアプリケーションの例:
- Diameter Mobile IPv4 Application (MobileIP, RFC 4004)
- Diameter Network Access Server Application (NASREQ, RFC 4005)
- Diameter Extensible Authentication Protocol Application (RFC 4072)
- Diameter Credit-Control Application (DCCA, RFC 4006)
- Diameter Session Initiation Protocol Application (RFC 4740)
- IP Multimedia Subsystemで使われる様々なアプリケーション
外部リンク
[編集]- Open Diameter
- Cisco IOS ソフトウェア (RADIUSとDIAMETERの違いの一覧がある)
- Open DiameterのDebianパッケージ
- Java用Diameter基本プロトコル