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

12. Inserting Trickled Candidate Pairs into a Checklist (トリクル候補ペアのチェックリストへの挿入)

ローカルエージェントが候補をトリクルし、そのローカル候補から候補ペアを形成した後(セクション9)、またはリモートエージェントがトリクル候補を受信し、そのリモート候補から候補ペアを形成した後(セクション11)、Trickle ICEエージェントは、このセクションで定義されているように、新しい候補ペアをチェックリストに追加します。

このセクションで定義されている手順の理解を容易にするために、エージェント内のすべてのチェックリストの次の表形式表現を検討してください(最初は、基礎の1つ、つまりf5に候補ペアがないことに注意してください):

+=================+====+====+====+====+====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+====+
|| s1 (Audio.RTP) | F | F | F | | |
+-----------------+----+----+----+----+----+
|| s2 (Audio.RTCP) | F | F | F | F | |
+-----------------+----+----+----+----+----+
|| s3 (Video.RTP) | F | | | | |
+-----------------+----+----+----+----+----+
|| s4 (Video.RTCP) | F | | | | |
+-----------------+----+----+----+----+----+

表1: チェックリスト状態の例

Trickle ICEは、「静的」チェックリストセットに適用されるすべてのこれらのルールを保持します。これは、Trickle ICEエージェントが、すべての候補ペアが既に存在する状態で接続性チェックを開始する場合、候補ペアの状態が変化する方法が通常のICEエージェントと区別できないことを意味します。

もちろん、Trickle ICEとの主な違いは、接続性チェックの開始後に候補が到着する可能性があるため、チェックリストセットが動的に更新される可能性があることです。これが発生すると、エージェントは、以下に説明するように、新しく形成された候補ペアの状態を設定します。

ルール1: 新しく形成された候補ペアが、その基礎のすべての候補ペアの中で最も低いコンポーネントIDを持つ場合、またはコンポーネントIDが等しい場合は最も高い優先度を持つ場合(つまり、列の最も高い候補ペアである場合)、状態を待機 (Waiting)に設定します。

ルール2: その基礎に対して成功 (Succeeded)状態の候補ペアが少なくとも1つある場合、状態を待機 (Waiting)に設定します。

ルール3: 前のルールのいずれも適用されない場合、状態を凍結 (Frozen)に設定します。

候補ペアが待機状態に配置されても、[RFC8445]のルールは引き続き適用されるため、接続性チェックは実行中 (Running)状態のチェックリストからのみ実行されることに注意してください。したがって、候補ペアに対して実際に接続性チェックが実行されるまで、候補ペアが待機と凍結の間で複数回状態を変更する可能性があります。