メインコンテンツまでスキップ

13. Generating an End-of-Candidates Indication (候補終了指示の生成)

特定のデータストリームに関連付けられたICEセッションのすべての候補収集が完了または期限切れになると、エージェントはそのセッションの「候補終了」(end-of-candidates)指示を生成し、シグナリングチャネルを介してリモートエージェントに送信します。指示の正確な形式は使用プロトコルに依存しますが、指示はジェネレーション(Username FragmentとPasswordの組み合わせ)を指定しなければなりません (MUST)。これにより、エージェントは候補終了指示を特定のICEセッションと関連付けることができます。指示は以下の方法で送信できます:

  • 開始要求の一部として(これは通常、ハーフトリクルの初期ICE記述の場合です)
  • エージェントがストリームに対して送信できる最後の候補と一緒に
  • スタンドアロン通知として(例えば、サーバーへのSTUNバインディング要求またはTURN割り当て要求が期限切れになり、エージェントがもはや積極的に候補を収集していない後)

候補終了指示をタイムリーに送信することは、あいまいさを回避し、ICE処理の完了を加速するために重要です。特に:

  • 制御されたTrickle ICEエージェントは、データストリームの収集を完了した後、候補終了指示を送信すべきです (SHOULD)。ただし、エージェントが収集を完了する機会を得る前にICE処理が完了する場合を除きます。
  • 制御するエージェントは、すべてのストリームの候補終了指示を送信する前にICE処理を完了してもかまいません (MAY)。ただし、制御するエージェントが、一貫性を保ち、ミドルボックスと制御されたエージェントにICE処理の状態を通知するために、可能な限り候補終了指示を送信することが推奨されます (RECOMMENDED)。

初期ICE記述またはそれへの応答の一部としてではなく、トリクリング中に候補終了指示を送信する場合、指示を1つ以上の特定のデータストリームに関連付ける方法を定義することは、使用プロトコルの責任です。

エージェントは、候補収集が実際に完了する前に候補終了指示を生成することも選択できます (MAY)。エージェントが収集が許容可能な時間を超えて続いていると判断した場合です。ただし、エージェントは、候補終了指示を送信した後に他の候補を送信してはなりません (MUST NOT)。

ハーフトリクルを実行する場合、エージェントは、追加の候補をトリクルする可能性がある場合(例えば、リモート側がTrickle ICEをサポートしていることが判明した場合)を除き、初期ICE記述と一緒に候補終了指示を送信すべきです (SHOULD)。

エージェントが候補終了指示を送信した後、セクション8で説明されているように、対応するチェックリストの状態を更新します。この時点以降、エージェントは、そのICEセッション内で新しい候補をトリクルしてはなりません (MUST NOT)。したがって、ネゴシエーションに新しい候補を追加することは、ICE再起動によってのみ可能です(セクション15を参照)。

この仕様は、ICE処理を完了するための通常のICEセマンティクスを置き換えるものではありません。したがって、候補終了指示が送信されても、エージェントはペアの指名を続ける必要があります。さらに、コンポーネントとデータストリームに対してペアが指名されている場合、すべてのストリームの候補終了指示が受信されていなくても、ICE処理は完了してもかまいません (MAY)。すべての場合において、エージェントは、[RFC8445]のセクション8.1.1で説明されているように候補ペアが指名された後、ICEセッション内で新しい候補をトリクルしてはなりません (MUST NOT)。