Aller au contenu principal

13. Generating an End-of-Candidates Indication (Génération d'une indication de fin des candidats)

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 « 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 d'utilisation, 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 de les manières suivantes :

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

La transmission d'une indication de fin des candidats en temps opportun est importante 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, à moins que le traitement ICE ne se termine avant que l'agent n'ait eu la possibilité de terminer la collecte.
  • Un agent contrôlant peut (MAY) conclure le traitement ICE avant de transmettre des indications de fin des candidats pour tous les flux. Cependant, il est recommandé (RECOMMENDED) qu'un agent contrôlant transmette des indications de fin des candidats dans la mesure du possible par souci de cohérence et pour tenir les middleboxes et les agents contrôlés au courant de 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 d'utilisation 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 réellement terminée, si l'agent détermine que la collecte s'est poursuivie pendant plus d'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 de half trickle, un agent devrait (SHOULD) transmettre une indication de fin des candidats avec sa description ICE initiale, sauf s'il prévoit potentiellement de trickle des candidats supplémentaires (par exemple, au cas où la partie distante s'avérerait 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. Au-delà de ce point, un agent ne doit pas (MUST NOT) trickle de nouveaux candidats au sein de 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 paires. De plus, si des paires ont été nominées pour des composants et des flux de données, le traitement ICE peut (MAY) encore 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) trickle de nouveaux candidats au sein d'une session ICE après la nomination d'une paire de candidats comme décrit dans la Section 8.1.1 de [RFC8445].