DIAMETERは、RADIUSの後継となる認証・認可・課金 (AAA: Authentication, Authorization, Accounting) プロトコルである。

RADIUSからの改善点 編集

DIAMETERという名前は、RADIUSプロトコルにかけた駄洒落である (直径:diameterは半径:radiusの2倍になる)。DIAMETERはRADIUSとの後方互換性はないが、RADIUSからのアップグレード・パスを提供している。 RADIUSとの主な違いは、

  • RADIUSで使われているUDPではなく、信頼性のあるトランスポート・プロトコルであるTCPSCTPを用いる
  • トランスポート層のセキュリティ (IPsecまたはTLS) を利用可能
  • RADIUSからの移行をサポート
  • RADIUSよりも大きな属性値ペアと識別子のアドレス空間を持つ (8ビットから32ビットに拡張)
  • サーバ発のメッセージもサポートする点を除き、クライアント・サーバ型のプロトコルである
  • ステートフルおよびステートレスのモデルを利用できる
  • DNSのSRV・NAPTRレコードを用いたピアの動的発見
  • 機能ネゴシエーション
  • アプリケーション層での肯定応答をサポートし、フェイルオーバーの方法とステートマシーンを定義
  • エラー通知
  • 改善されたローミングサポート
  • 新しいコマンドと属性の定義を利用した簡単な拡張
  • 32ビットの区切り
  • ユーザーセッションと課金管理の基本サポート

プロトコルの詳細 編集

Diameter基本プロトコルは、AAAプロトコルの最小限の要求として、RFC 3588で規定されている。Diameterアプリケーションは、新しいコマンドや属性を追加することにより基本プロトコルを拡張することができる。ただし、ここで言うアプリケーションとはプログラムのことではなく、Diameterに基づいたプロトコルのことを指す。DIAMETERのセキュリティは、すでに十分に確立されたプロトコルであるIPsecTLSによって提供される。

パケット・フォーマット 編集

   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-Request AAR 265
AA-Answer AAA 265
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
User-Authorization-Request UAR 300
User-Authorization-Answer UAA 300
Server-Assignment-Request SAR 301
Server-Assignment-Answer SAA 301
Location-Info-Request LIR 302
Location-Info-Answer LIA 302
Multimedia-Auth-Request MAR 303
Multimedia-Auth-Answer MAA 303
Registration-Termination-Request RTR 304
Registration-Termination-Answer RTA 304
Push-Profile-Request PPR 305
Push-Profile-Answer PPA 305

属性値ペア 編集

   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-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

状態機械 編集

The RFC 3588 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 RFC 3588 defines an authorization and an accounting state machine.

メッセージ・フロー 編集

アプリケーション 編集

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で使われる様々なアプリケーション

外部リンク 編集