3. Diameter ヘッダ
3. Diameter ヘッダ
Diameter ヘッダフォーマットの概要を以下に示します. フィールドはネットワークバイトオーダーで送信されます.
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 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
Version (バージョン)
このバージョンフィールドは、Diameter バージョン 1 を示すために 1 に設定しなければなりません (MUST).
Message Length (メッセージ長)
メッセージ長フィールドは 3 オクテットで、ヘッダフィールドとパディングされた AVP を含む Diameter メッセージの長さを示します. したがって、メッセージ長フィールドは常に 4 の倍数です.
Command Flags (コマンドフラグ)
コマンドフラグフィールドは 8 ビットです. 以下のビットが割り当てられています:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|R P E T r r r r|
+-+-+-+-+-+-+-+-+
R(equest) (要求)
設定されている場合、メッセージは要求です. クリアされている場合、メッセージは応答です.
P(roxiable) (プロキシ可能)
設定されている場合、メッセージはプロキシ、中継、またはリダイレクトされる可能性があります (MAY). クリアされている場合、メッセージはローカルで処理されなければなりません (MUST).
E(rror) (エラー)
設定されている場合、メッセージにはプロトコルエラーが含まれており、メッセージはこのコマンドに対して記述された CCF に準拠しません. 'E' ビットが設定されたメッセージは、一般的にエラーメッセージと呼ばれます. このビットは要求メッセージで設定してはなりません (MUST NOT) (セクション 7.2 を参照).
T(Potentially retransmitted message) (再送信の可能性があるメッセージ)
このフラグは、リンクフェイルオーバー手順の後に設定され、重複要求の削除を支援します. まだ確認されていない要求を再送信する際に、リンク障害による重複の可能性の指示として設定されます. このビットは、要求を初めて送信する際にクリアしなければなりません (MUST); それ以外の場合、送信者はこのフラグを設定しなければなりません (MUST). Diameter エージェントは、単一の受信要求に基づいて送信する要求の数についてのみ関心を持つ必要があります; 他のエンティティによる再送信を追跡する必要はありません. T フラグが設定された要求を受信した Diameter エージェントは、転送された要求で T フラグを設定したままにしなければなりません (MUST). 以前のメッセージに対してエラー応答メッセージ (例: プロトコルエラー) を受信した場合、このフラグを設定してはなりません (MUST NOT). 要求に対してサーバーから応答を受信しておらず、要求が再度送信された場合にのみ設定できます. このフラグは応答メッセージで設定してはなりません (MUST NOT).
r(eserved) (予約済み)
これらのフラグビットは将来の使用のために予約されています; ゼロに設定されなければならず (MUST)、受信者によって無視されます.
Command Code (コマンドコード)
コマンドコードフィールドは 3 オクテットで、メッセージに関連付けられたコマンドを通信するために使用されます. 24 ビットアドレス空間は IANA によって管理されます (セクション 3.1 を参照). コマンドコード値 16,777,214 および 16,777,215 (16 進値 FFFFFE-FFFFFF) は実験的使用のために予約されています (セクション 11.2 を参照).
Application-ID (アプリケーション ID)
Application-ID は 4 オクテットで、メッセージがどのアプリケーションに適用されるかを識別するために使用されます. アプリケーションは、認証アプリケーション、アカウンティングアプリケーション、またはベンダー固有のアプリケーションである可能性があります.
ヘッダの Application-ID フィールドの値は、メッセージに含まれる関連する Application-Id AVP の値と同じでなければなりません (MUST).
Hop-by-Hop Identifier (ホップバイホップ識別子)
ホップバイホップ識別子は、(ネットワークバイトオーダーの) 符号なし 32 ビット整数フィールドで、要求と応答のマッチングを支援します. 送信者は、要求のホップバイホップ識別子が、特定の接続上の任意の時点で一意であることを保証しなければならず (MUST)、再起動後も番号が一意であることを保証しようと試みることができます (MAY). 応答メッセージの送信者は、ホップバイホップ識別子フィールドに、対応する要求で見つかったのと同じ値が含まれていることを保証しなければなりません (MUST). ホップバイホップ識別子は通常、単調に増加する番号であり、その開始値はランダムに生成されます. 未知のホップバイホップ識別子で受信した応答メッセージは破棄されなければなりません (MUST).
End-to-End Identifier (エンドツーエンド識別子)
エンドツーエンド識別子は、(ネットワークバイトオーダーの) 符号なし 32 ビット整数フィールドで、重複メッセージを検出するために使用されます. 再起動時に、実装は上位 12 ビットに現在時刻の下位 12 ビットを含め、下位 20 ビットをランダム値に設定することができます (MAY). 要求メッセージの送信者は、各メッセージに一意の識別子を挿入しなければなりません (MUST). 識別子は、再起動後であっても、少なくとも 4 分間ローカルで一意のままでなければなりません (MUST). 応答メッセージの発信者は、エンドツーエンド識別子フィールドに、対応する要求で見つかったのと同じ値が含まれていることを保証しなければなりません (MUST). エンドツーエンド識別子は、いかなる種類の Diameter エージェントによっても変更されてはなりません (MUST NOT). Origin-Host AVP (セクション 6.3) とこのフィールドの組み合わせは、重複を検出するために使用されます. 重複要求は同じ応答を送信する原因となるべきであり (SHOULD) (ホップバイホップ識別子フィールドと存在する可能性のあるルーティング AVP を除く)、元の要求が処理されたときに設定された状態に影響を与えてはなりません (MUST NOT). ローカルで消費される (セクション 6.2 を参照) 重複応答メッセージは、静かに破棄されるべきです (SHOULD).
AVPs
AVP は、Diameter メッセージに関連する情報をカプセル化する方法です. AVP の詳細については、セクション 4 を参照してください.