5.3. 能力交換 (Capabilities Exchange)
2 つの Diameter ピアがトランスポート接続を確立すると, ピア状態機械 (セクション 5.6) で指定されるとおり能力交換メッセージを交換しなければなりません (MUST). これによりピアの識別と能力 (プロトコル版, サポートする Diameter アプリケーション識別子, セキュリティ機構など) が分かります.
受信側は, コマンドを定義する Diameter アプリケーションのサポートを宣伝したピアに対してのみコマンドを発行します. Diameter ノードはサポートする Application Id をキャッシュし, 認識できないコマンドや AVP を不必要に送らないようにしなければなりません (MUST).
送信者と共通アプリケーションがない Capabilities-Exchange-Request (CER) を受け取った場合, Result-Code AVP を DIAMETER_NO_COMMON_APPLICATION にした Capabilities-Exchange-Answer (CEA) を返さなければならず (MUST), トランスポート接続を切断すべきです (SHOULD). リレー (relay, セクション 2.4) を宣伝するピアからの CER または CEA は, 共通アプリケーションがあるものとして解釈しなければなりません (MUST).
CER 受信者は, 自身の Application Id 集合と CER 内のすべての Application-Id 系 AVP (Auth-Application-Id, Acct-Application-Id, Vendor-Specific-Application-Id) の積集合で共通アプリケーションを決定しなければなりません (MUST). Vendor-Specific-Application-Id 内の Vendor-Id AVP の値は計算に使ってはいけません (MUST NOT). CEA 送信者は, 受信者へのヒントとしてサポートするすべてのアプリケーションを含めるべきです (SHOULD).
Diameter 実装は CER/CEA の前に TLS/TCP と DTLS/SCTP 接続の確立を最初に試みるべきです (SHOULD). 本書に完全適合しない旧実装のために, Inband-Security AVP によるトランスポートセキュリティの交渉もよいです (MAY). この場合, 共通セキュリティ機構がない CER 受信者は Result-Code を DIAMETER_NO_COMMON_SECURITY にした CEA を返さなければならず (MUST), トランスポートを切断すべきです (SHOULD).
未知のピアからの CER は黙って破棄してもよく (MAY), Result-Code を DIAMETER_UNKNOWN_PEER にした CEA を返してもよいです (MAY). いずれもトランスポートは閉じます. 未知のホストからの CER を許可するポリシーなら成功 CEA もよいです (MAY). 未知ピアの CER に成功 CEA を返した場合, ピアエントリの寿命はトランスポート接続の寿命と等しくなります. トランスポート障害時, 未知ピア向けの未処理トランザクションは破棄してよいです.
CER と CEA はプロキシ, リダイレクト, リレーしてはいけません (MUST NOT).
CER/CEA はプロキシできないため, 上流エージェントがコマンドコードに対応するアプリケーションを扱えるピアを持たないメッセージを受け取ることがあります. その場合応答で E ビットをセットし Result-Code を DIAMETER_UNABLE_TO_DELIVER にして, 下流に再ルーティングなどの措置を取らせます (セクション 7).
Capabilities-Exchange-Request を除き, Auth-Application-Id または Acct-Application-Id を含む Request 型メッセージ, またはアプリケーション固有コマンドコードを持つメッセージは, そのアプリケーションのサポート (または Relay Application Id) を明示的に宣伝したホストにのみ転送してよいです (MAY).