2

私は、Diameter プロトコルの Python 実装に取り​​組んでいます。このシナリオでDiameterピアの場合、予想される動作はどうなるのだろうか:

  1. Peer1 は CER を Peer2 に送信します
  2. Peer2 は CEA を Peer1 に送信します (結果コード DIAMETER_SUCCESS: 2001 を使用)
  3. 直径接続の準備が整いました。
  4. 一部の直径トラフィック
  5. Peer1 は別の CER を Peer2 に再送信します
  6. Peer2 の予想される動作は何ですか?

peer2 は接続を閉じましたか? それとも Peer2 が CEA を再送信する必要がありますか?

このシナリオが発生するべきではないことはわかっていますが、... peer2 にバグのある実装がある場合。

rfc6733 ではそれについて何も見ていません。

ありがとう

4

4 に答える 4

1

rfc6733でわかるように、最初の接続を維持するか、新しい接続を開始することができます

CER メッセージは常に、接続要求が正常に完了した直後に開始接続で送信されます。選挙の場合、2 つの接続のうちの 1 つがシャットダウンされます。

于 2012-11-27T16:59:05.933 に答える
0

CER と CEA は、Diameter ピア間の特定のライブ接続に対して 1 回だけ発生する必要があります。それを期待したり、既存のセッション [dmtr] のコンテキスト内で処理しなければならないことは正しくないようです。理想的には、これが発生する前にトランスポート接続を切断する必要があります。また、SCTP / TLS を使用すると、ポイントに到達する前に 3 ウェイ ハンドシェイク全体が確実に行われます。処理をより適切に定義するために、トランスポート層の状態遷移を慎重に処理する必要があるかもしれません。

于 2014-04-26T06:11:01.167 に答える
0

実際、RFCはそれについて非常に具体的です:

   CER メッセージは常に開始接続ですぐに送信されます。
   接続要求が正常に完了した後。その場合
   選挙が終わると、2 つの接続のうちの 1 つがシャットダウンします。の
   ローカルの Origin-Host が
   Diameter エンティティがピアのそれよりも高くなっています。イニシエーター
   ピアの Origin-Host の方が高い場合、接続は存続します。全て
   後続のメッセージは、存続している接続で送信されます。ご了承ください
   1 つのピアでの選択の結果は、
   他の結果の逆。

要約すると、リクエストで別の Origin-Host を使用しない限り、1 つの接続 (最新のもの) のみが存続する必要があります。

この状況は、TCP を使用していて、ピア 1 がピア 2 に通知せずに再起動された場合、それほど珍しいことではありません。したがって、peer2 は、peer1 が再接続し、最新 (最新) の接続を使用できるようにする必要があります。そうしないと、watchdog が破棄するまで、peer1 との間のメッセージがブロックされます。

于 2015-07-09T18:23:43.900 に答える