1. Introduction (Introduction)
Le protocole ICE (Interactive Connectivity Establishment) [RFC8445] décrit comment un agent ICE collecte des candidats, échange des candidats avec un agent ICE pair et crée des paires de candidats. Une fois les paires collectées, l'agent ICE effectuera des vérifications de connectivité et finira par nommer et sélectionner les paires qui seront utilisées pour envoyer et recevoir des données dans une session de communication.
Le respect des procédures dans [RFC8445] peut entraîner des temps d'établissement quelque peu longs pour les sessions de communication, car la collecte de candidats implique souvent l'interrogation de serveurs STUN (Session Traversal Utilities for NAT) [RFC5389] et l'allocation de candidats relayés sur des serveurs TURN (Traversal Using Relay NAT) [RFC5766]. Bien que de nombreuses procédures ICE puissent être effectuées en parallèle, les exigences de rythme de [RFC8445] doivent toujours être respectées.
Ce document définit « Trickle ICE », un mode d'opération supplémentaire d'ICE dans lequel les candidats peuvent être échangés de manière incrémentale dès qu'ils deviennent disponibles (et simultanément avec la collecte d'autres candidats). Les vérifications de connectivité peuvent également commencer dès que les paires de candidats ont été créées. Comme Trickle ICE permet d'effectuer la collecte de candidats et les vérifications de connectivité en parallèle, la méthode peut considérablement accélérer le processus d'établissement d'une session de communication.
Ce document définit également comment découvrir le support de Trickle ICE, comment les procédures dans [RFC8445] sont modifiées ou complétées lors de l'utilisation de Trickle ICE, et comment un agent Trickle ICE peut interopérer avec un agent ICE conforme à [RFC8445].
Ce document ne définit aucune utilisation spécifique au protocole de Trickle ICE. Au lieu de cela, les détails spécifiques au protocole pour Trickle ICE sont définis dans des documents d'utilisation séparés. Des exemples de tels documents sont [RFC8840] (qui définit l'utilisation avec le protocole SIP (Session Initiation Protocol) [RFC3261] et le protocole SDP (Session Description Protocol) [RFC4566]) et [XEP-0176] (qui définit l'utilisation avec le protocole XMPP (Extensible Messaging and Presence Protocol) [RFC6120]). Cependant, certains des exemples dans le document utilisent SDP et le modèle Offre/Réponse (Offer/Answer) [RFC3264] pour expliquer les concepts sous-jacents.
Le diagramme suivant illustre un échange Trickle ICE réussi avec un protocole d'utilisation qui suit le modèle Offre/Réponse :
Alice Bob
| Offre |
|---------------------------------------------->|
| Candidats supplémentaires |
|---------------------------------------------->|
| Réponse |
|<----------------------------------------------|
| Candidats supplémentaires |
|<----------------------------------------------|
| Candidats supplémentaires et vérifications |
|<--------------------------------------------->|
|<========== CONNEXION ÉTABLIE ================>|
Figure 1 : Flux (Flow)
Le corps principal de ce document est structuré pour décrire le comportement des agents Trickle ICE dans l'ordre approximatif des opérations et des interactions lors d'une session ICE :
- Détermination du support de Trickle ICE
- Génération de la description ICE initiale
- Traitement de la description ICE initiale et génération de la réponse ICE initiale
- Traitement de la réponse ICE initiale
- Formation de listes de vérification, élagage des candidats, exécution des vérifications de connectivité, etc.
- Collecte et transmission des candidats après la description ICE initiale et la réponse
- Traitement des candidats trickle entrants
- Génération et traitement de l'indication de fin de candidats
- Traitement des redémarrages ICE
Il existe une expérience opérationnelle considérable avec la technique derrière Trickle ICE, remontant à 2005 (lorsque l'extension XMPP Jingle a défini un « dribble mode » tel que spécifié dans [XEP-0176]) ; ce document intègre les retours de ceux qui ont implémenté et déployé la technique au fil des ans.