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プロトコルの最小限の要求として、で規定されている。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                                                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

コマンド 
各コマンドには、要求・応答共に利用されるコマンド・コードが割り当てられている。

属性値ペア 
    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 ...
   +-+-+-+-+-+-+-+-+

状態機械 

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基本プロトコル

インターネットのプロトコル
インターネット標準
コンピュータ・ネットワーク・セキュリティ
認証プロトコル
3588