Skip to main content

13. Generating an End-of-Candidates Indication (生成候选地址结束指示)

🇨🇳 中文

一旦与特定数据流关联的ICE会话的所有候选地址收集完成或过期,代理将为该会话生成"候选地址结束 (end-of-candidates)"指示,并通过信令通道将其传达给远程代理。尽管指示的确切形式取决于使用协议,但该指示必须 (MUST) 指定生成 (generation)(用户名片段和密码组合),以便代理可以将候选地址结束指示与特定的ICE会话相关联。该指示可以通过以下方式传达:

  • 作为启动请求的一部分(这通常是半渐进式 (half trickle) 的初始ICE描述的情况)
  • 与代理可以为数据流发送的最后一个候选地址一起
  • 作为独立通知(例如,在对服务器的STUN绑定请求或TURN分配请求超时且代理不再主动收集候选地址之后)

及时传达候选地址结束指示对于避免歧义并加速ICE处理的结束非常重要。特别是:

  • 受控的Trickle ICE代理应该 (SHOULD) 在完成数据流的收集后传达候选地址结束指示,除非ICE处理在代理有机会完成收集之前终止。
  • 控制代理可以 (MAY) 在为所有数据流传达候选地址结束指示之前结束ICE处理。但是,建议 (RECOMMENDED) 控制代理尽可能传达候选地址结束指示,以保持一致性并使中间盒和受控代理了解ICE处理的最新状态。

在渐进式交换期间(而不是作为初始ICE描述或其响应的一部分)传达候选地址结束指示时,使用协议有责任定义将指示与一个或多个特定数据流关联的方法。

如果代理确定收集已持续超过可接受的时间段,则代理可以 (MAY) 选择在候选地址收集实际完成之前生成候选地址结束指示。但是,代理在传达候选地址结束指示后禁止 (MUST NOT) 传达任何更多候选地址。

执行半渐进式时,代理应该 (SHOULD) 将候选地址结束指示与其初始ICE描述一起传达,除非它计划可能渐进式交换额外的候选地址(例如,以防远程方结果支持Trickle ICE)。

代理传达候选地址结束指示后,它将按照第8节的说明更新相应检查列表的状态。从那时起,代理禁止 (MUST NOT) 在此ICE会话中渐进式交换任何新候选地址。因此,只有通过ICE重启才能将新候选地址添加到协商中(参见第15节)。

本规范不会覆盖用于结束ICE处理的常规ICE语义。因此,即使传达了候选地址结束指示,代理仍需要经过候选地址对提名。此外,如果已为组件和数据流提名了候选地址对,即使未收到所有数据流的候选地址结束指示,ICE处理可以 (MAY) 仍然结束。在所有情况下,按照 [RFC8445] 第8.1.1节所述提名候选地址对后,代理禁止 (MUST NOT) 在ICE会话中渐进式交换任何新候选地址。


🇬🇧 English

Once all candidate gathering is completed or expires for an ICE session associated with a specific data stream, the agent will generate an "end-of-candidates" indication for that session and convey it to the remote agent via the signaling channel. Although the exact form of the indication depends on the using protocol, the indication MUST specify the generation (Username Fragment and Password combination), so that an agent can correlate the end-of-candidates indication with a particular ICE session. The indication can be conveyed in the following ways:

  • As part of an initiation request (which would typically be the case with the initial ICE description for half trickle)
  • Along with the last candidate an agent can send for a stream
  • As a standalone notification (e.g., after STUN Binding requests or TURN Allocate requests to a server time out and the agent is no longer actively gathering candidates)

Conveying an end-of-candidates indication in a timely manner is important in order to avoid ambiguities and speed up the conclusion of ICE processing. In particular:

  • A controlled Trickle ICE agent SHOULD convey an end-of-candidates indication after it has completed gathering for a data stream, unless ICE processing terminates before the agent has had a chance to complete gathering.
  • A controlling agent MAY conclude ICE processing prior to conveying end-of-candidates indications for all streams. However, it is RECOMMENDED for a controlling agent to convey end-of-candidates indications whenever possible for the sake of consistency and to keep middleboxes and controlled agents up-to-date on the state of ICE processing.

When conveying an end-of-candidates indication during trickling (rather than as a part of the initial ICE description or a response thereto), it is the responsibility of the using protocol to define methods for associating the indication with one or more specific data streams.

An agent MAY also choose to generate an end-of-candidates indication before candidate gathering has actually completed, if the agent determines that gathering has continued for more than an acceptable period of time. However, an agent MUST NOT convey any more candidates after it has conveyed an end-of-candidates indication.

When performing half trickle, an agent SHOULD convey an end-of-candidates indication together with its initial ICE description unless it is planning to potentially trickle additional candidates (e.g., in case the remote party turns out to support Trickle ICE).

After an agent conveys the end-of-candidates indication, it will update the state of the corresponding checklist as explained in Section 8. Past that point, an agent MUST NOT trickle any new candidates within this ICE session. Therefore, adding new candidates to the negotiation is possible only through an ICE restart (see Section 15).

This specification does not override regular ICE semantics for concluding ICE processing. Therefore, even if end-of-candidates indications are conveyed, an agent will still need to go through pair nomination. Also, if pairs have been nominated for components and data streams, ICE processing MAY still conclude even if end-of-candidates indications have not been received for all streams. In all cases, an agent MUST NOT trickle any new candidates within an ICE session after nomination of a candidate pair as described in Section 8.1.1 of [RFC8445].


🇯🇵 日本語

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

  • 開始リクエストの一部として(これは通常、ハーフトリクル (half trickle) の初期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)


🇫🇷 Français

Une fois que toute la collecte de candidats est terminée ou expire pour une session ICE associée à un flux de données spécifique, l'agent générera une indication de « fin des candidats (end-of-candidates) » pour cette session et la transmettra à l'agent distant via le canal de signalisation. Bien que la forme exacte de l'indication dépende du protocole utilisateur, l'indication DOIT (MUST) spécifier la génération (combinaison de fragment de nom d'utilisateur et de mot de passe), afin qu'un agent puisse corréler l'indication de fin des candidats avec une session ICE particulière. L'indication peut être transmise des manières suivantes :

  • Dans le cadre d'une demande d'initiation (ce qui serait typiquement le cas avec la description ICE initiale pour le half trickle)
  • Avec le dernier candidat qu'un agent peut envoyer pour un flux
  • En tant que notification autonome (par exemple, après l'expiration des demandes de liaison STUN ou des demandes d'allocation TURN vers un serveur et que l'agent ne collecte plus activement de candidats)

Transmettre une indication de fin des candidats en temps opportun est important pour éviter les ambiguïtés et accélérer la conclusion du traitement ICE. En particulier :

  • Un agent Trickle ICE contrôlé DEVRAIT (SHOULD) transmettre une indication de fin des candidats après avoir terminé la collecte pour un flux de données, sauf si le traitement ICE se termine avant que l'agent n'ait eu la possibilité de terminer la collecte.
  • Un agent de contrôle PEUT (MAY) conclure le traitement ICE avant de transmettre les indications de fin des candidats pour tous les flux. Cependant, il est RECOMMANDÉ (RECOMMENDED) pour un agent de contrôle de transmettre les indications de fin des candidats chaque fois que possible pour des raisons de cohérence et pour maintenir les middleboxes et les agents contrôlés à jour sur l'état du traitement ICE.

Lors de la transmission d'une indication de fin des candidats pendant le trickling (plutôt que dans le cadre de la description ICE initiale ou d'une réponse à celle-ci), il incombe au protocole utilisateur de définir des méthodes pour associer l'indication à un ou plusieurs flux de données spécifiques.

Un agent PEUT (MAY) également choisir de générer une indication de fin des candidats avant que la collecte de candidats ne soit effectivement terminée, si l'agent détermine que la collecte s'est poursuivie pendant plus qu'une période de temps acceptable. Cependant, un agent NE DOIT PAS (MUST NOT) transmettre d'autres candidats après avoir transmis une indication de fin des candidats.

Lors de l'exécution d'un half trickle, un agent DEVRAIT (SHOULD) transmettre une indication de fin des candidats avec sa description ICE initiale, sauf s'il prévoit de potentiellement trickler des candidats supplémentaires (par exemple, au cas où la partie distante s'avère prendre en charge Trickle ICE).

Après qu'un agent a transmis l'indication de fin des candidats, il mettra à jour l'état de la liste de vérification correspondante comme expliqué dans la Section 8. Passé ce point, un agent NE DOIT PAS (MUST NOT) trickler de nouveaux candidats dans cette session ICE. Par conséquent, l'ajout de nouveaux candidats à la négociation n'est possible que par un redémarrage ICE (voir Section 15).

Cette spécification ne remplace pas la sémantique ICE régulière pour conclure le traitement ICE. Par conséquent, même si des indications de fin des candidats sont transmises, un agent devra toujours passer par la nomination de paire. De plus, si des paires ont été nommées pour des composants et des flux de données, le traitement ICE PEUT (MAY) toujours se conclure même si des indications de fin des candidats n'ont pas été reçues pour tous les flux. Dans tous les cas, un agent NE DOIT PAS (MUST NOT) trickler de nouveaux candidats dans une session ICE après la nomination d'une paire de candidats comme décrit dans la Section 8.1.1 de [RFC8445].


🇩🇪 Deutsch

Sobald die gesamte Kandidatensammlung für eine ICE-Sitzung, die mit einem bestimmten Datenstrom verbunden ist, abgeschlossen ist oder abläuft, generiert der Agent eine „Ende-der-Kandidaten (end-of-candidates)"-Anzeige für diese Sitzung und übermittelt sie über den Signalisierungskanal an den entfernten Agent. Obwohl die genaue Form der Anzeige vom verwendeten Protokoll abhängt, MUSS (MUST) die Anzeige die Generation (Kombination aus Benutzername-Fragment und Passwort) angeben, damit ein Agent die Ende-der-Kandidaten-Anzeige mit einer bestimmten ICE-Sitzung korrelieren kann. Die Anzeige kann auf folgende Weise übermittelt werden:

  • Als Teil einer Initiierungsanforderung (was typischerweise bei der anfänglichen ICE-Beschreibung für Half Trickle der Fall wäre)
  • Zusammen mit dem letzten Kandidaten, den ein Agent für einen Stream senden kann
  • Als eigenständige Benachrichtigung (z. B. nachdem STUN-Binding-Anfragen oder TURN-Allocate-Anfragen an einen Server abgelaufen sind und der Agent keine Kandidaten mehr aktiv sammelt)

Die rechtzeitige Übermittlung einer Ende-der-Kandidaten-Anzeige ist wichtig, um Mehrdeutigkeiten zu vermeiden und den Abschluss der ICE-Verarbeitung zu beschleunigen. Insbesondere:

  • Ein kontrollierter Trickle-ICE-Agent SOLLTE (SHOULD) eine Ende-der-Kandidaten-Anzeige übermitteln, nachdem er die Sammlung für einen Datenstrom abgeschlossen hat, es sei denn, die ICE-Verarbeitung wird beendet, bevor der Agent die Gelegenheit hatte, die Sammlung abzuschließen.
  • Ein kontrollierender Agent KANN (MAY) die ICE-Verarbeitung abschließen, bevor er Ende-der-Kandidaten-Anzeigen für alle Streams übermittelt. Es wird jedoch EMPFOHLEN (RECOMMENDED), dass ein kontrollierender Agent Ende-der-Kandidaten-Anzeigen wann immer möglich übermittelt, um Konsistenz zu wahren und Middleboxes und kontrollierte Agenten über den Zustand der ICE-Verarbeitung auf dem Laufenden zu halten.

Bei der Übermittlung einer Ende-der-Kandidaten-Anzeige während des Tricklings (anstatt als Teil der anfänglichen ICE-Beschreibung oder einer Antwort darauf) liegt es in der Verantwortung des verwendeten Protokolls, Methoden zur Zuordnung der Anzeige zu einem oder mehreren bestimmten Datenströmen zu definieren.

Ein Agent KANN (MAY) auch wählen, eine Ende-der-Kandidaten-Anzeige zu generieren, bevor die Kandidatensammlung tatsächlich abgeschlossen ist, wenn der Agent feststellt, dass die Sammlung länger als eine akzeptable Zeitspanne fortgesetzt wurde. Ein Agent DARF jedoch NICHT (MUST NOT) weitere Kandidaten übermitteln, nachdem er eine Ende-der-Kandidaten-Anzeige übermittelt hat.

Bei der Durchführung von Half Trickle SOLLTE (SHOULD) ein Agent eine Ende-der-Kandidaten-Anzeige zusammen mit seiner anfänglichen ICE-Beschreibung übermitteln, es sei denn, er plant möglicherweise, zusätzliche Kandidaten zu trickeln (z. B. falls die entfernte Partei Trickle ICE unterstützt).

Nachdem ein Agent die Ende-der-Kandidaten-Anzeige übermittelt hat, aktualisiert er den Zustand der entsprechenden Checkliste wie in Abschnitt 8 erläutert. Ab diesem Zeitpunkt DARF (MUST NOT) ein Agent in dieser ICE-Sitzung keine neuen Kandidaten mehr tricklen. Daher ist das Hinzufügen neuer Kandidaten zur Verhandlung nur durch einen ICE-Neustart möglich (siehe Abschnitt 15).

Diese Spezifikation überschreibt nicht die regulären ICE-Semantiken zum Abschluss der ICE-Verarbeitung. Daher muss ein Agent auch dann, wenn Ende-der-Kandidaten-Anzeigen übermittelt werden, die Paar-Nominierung durchlaufen. Außerdem KANN (MAY) die ICE-Verarbeitung abgeschlossen werden, wenn Paare für Komponenten und Datenströme nominiert wurden, auch wenn Ende-der-Kandidaten-Anzeigen nicht für alle Streams empfangen wurden. In allen Fällen DARF (MUST NOT) ein Agent nach der Nominierung eines Kandidatenpaars, wie in Abschnitt 8.1.1 von [RFC8445] beschrieben, in einer ICE-Sitzung keine neuen Kandidaten mehr tricklen.


🇮🇹 Italiano

Una volta completata o scaduta tutta la raccolta di candidati per una sessione ICE associata a un flusso di dati specifico, l'agente genererà un'indicazione di « fine dei candidati (end-of-candidates) » per quella sessione e la trasmetterà all'agente remoto tramite il canale di segnalazione. Sebbene la forma esatta dell'indicazione dipenda dal protocollo utilizzato, l'indicazione DEVE (MUST) specificare la generazione (combinazione di frammento nome utente e password), in modo che un agente possa correlare l'indicazione di fine dei candidati con una particolare sessione ICE. L'indicazione può essere trasmessa nei seguenti modi:

  • Come parte di una richiesta di avvio (che sarebbe tipicamente il caso con la descrizione ICE iniziale per half trickle)
  • Insieme all'ultimo candidato che un agente può inviare per un flusso
  • Come notifica autonoma (ad esempio, dopo che le richieste di binding STUN o le richieste di allocazione TURN a un server scadono e l'agente non sta più raccogliendo attivamente candidati)

Trasmettere un'indicazione di fine dei candidati in modo tempestivo è importante per evitare ambiguità e accelerare la conclusione dell'elaborazione ICE. In particolare:

  • Un agente Trickle ICE controllato DOVREBBE (SHOULD) trasmettere un'indicazione di fine dei candidati dopo aver completato la raccolta per un flusso di dati, a meno che l'elaborazione ICE non termini prima che l'agente abbia avuto la possibilità di completare la raccolta.
  • Un agente di controllo PUÒ (MAY) concludere l'elaborazione ICE prima di trasmettere indicazioni di fine dei candidati per tutti i flussi. Tuttavia, è RACCOMANDATO (RECOMMENDED) per un agente di controllo trasmettere indicazioni di fine dei candidati quando possibile per motivi di coerenza e per mantenere aggiornati middlebox e agenti controllati sullo stato dell'elaborazione ICE.

Quando si trasmette un'indicazione di fine dei candidati durante il trickling (piuttosto che come parte della descrizione ICE iniziale o di una risposta ad essa), è responsabilità del protocollo utilizzato definire metodi per associare l'indicazione a uno o più flussi di dati specifici.

Un agente PUÒ (MAY) anche scegliere di generare un'indicazione di fine dei candidati prima che la raccolta di candidati sia effettivamente completata, se l'agente determina che la raccolta è continuata per più di un periodo di tempo accettabile. Tuttavia, un agente NON DEVE (MUST NOT) trasmettere altri candidati dopo aver trasmesso un'indicazione di fine dei candidati.

Quando si esegue half trickle, un agente DOVREBBE (SHOULD) trasmettere un'indicazione di fine dei candidati insieme alla sua descrizione ICE iniziale, a meno che non stia pianificando di potenzialmente trickle candidati aggiuntivi (ad esempio, nel caso in cui la parte remota risulti supportare Trickle ICE).

Dopo che un agente trasmette l'indicazione di fine dei candidati, aggiornerà lo stato della checklist corrispondente come spiegato nella Sezione 8. Oltre quel punto, un agente NON DEVE (MUST NOT) trickle nuovi candidati all'interno di questa sessione ICE. Pertanto, l'aggiunta di nuovi candidati alla negoziazione è possibile solo attraverso un riavvio ICE (vedere Sezione 15).

Questa specifica non sovrascrive la semantica ICE regolare per concludere l'elaborazione ICE. Pertanto, anche se vengono trasmesse indicazioni di fine dei candidati, un agente dovrà comunque passare attraverso la nomination della coppia. Inoltre, se le coppie sono state nominate per componenti e flussi di dati, l'elaborazione ICE PUÒ (MAY) ancora concludersi anche se non sono state ricevute indicazioni di fine dei candidati per tutti i flussi. In tutti i casi, un agente NON DEVE (MUST NOT) trickle nuovi candidati all'interno di una sessione ICE dopo la nomination di una coppia di candidati come descritto nella Sezione 8.1.1 di [RFC8445].