Établissement de connectivité interactive (ICE) : Un protocole pour la traversée de traducteur d'adresse réseau (NAT) pour les protocoles d'offre/réponse
- Statut: Proposed Standard
- Publié: April 2010
- Stream: IETF
- Remplace: RFC4091, RFC4092
- Remplacé par: RFC8445, RFC8839
- Errata: Pas d'errata
Résumé
Ce document décrit un protocole pour la traversée de traducteur d'adresse réseau (NAT) pour les sessions multimédias basées sur UDP établies avec le modèle d'offre/réponse. Ce protocole est appelé Établissement de connectivité interactive (ICE). ICE utilise le protocole STUN (Session Traversal Utilities for NAT) et son extension, TURN (Traversal Using Relay NAT). ICE peut être utilisé par tout protocole utilisant le modèle d'offre/réponse, tel que le protocole SIP (Session Initiation Protocol).
Statut de ce mémoire
Ceci est un document de la voie des normes Internet (Standards Track).
Ce document est un produit de l'Internet Engineering Task Force (IETF). Il représente le consensus de la communauté IETF. Il a fait l'objet d'un examen public et sa publication a été approuvée par l'Internet Engineering Steering Group (IESG). De plus amples informations sur les normes Internet sont disponibles dans la section 2 du RFC 5741.
Des informations sur le statut actuel de ce document, les éventuels errata et la manière de fournir des commentaires à son sujet peuvent être obtenues à l'adresse http://www.rfc-editor.org/info/rfc5245.
Notice de copyright
Copyright (c) 2010 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.
Ce document est soumis au BCP 78 et aux dispositions légales du IETF Trust relatives aux documents IETF (http://trustee.ietf.org/license-info) en vigueur à la date de publication de ce document. Veuillez examiner ces documents attentivement, car ils décrivent vos droits et restrictions concernant ce document. Les composants de code extraits de ce document doivent inclure le texte de la licence BSD simplifiée tel que décrit dans la section 4.e des dispositions légales du Trust et sont fournis sans garantie telle que décrite dans la licence BSD simplifiée.
Table des matières
- 1. Introduction
- 2. Overview of ICE (Aperçu d'ICE)
- 2.1. Gathering Candidate Addresses (Collecte des adresses candidates)
- 2.2. Connectivity Checks (Vérifications de connectivité)
- 2.3. Sorting Candidates (Tri des candidats)
- 2.4. Frozen Candidates (Candidats gelés)
- 2.5. Security for Checks (Sécurité des vérifications)
- 2.6. Concluding ICE (Conclusion d'ICE)
- 2.7. Lite Implementations (Implémentations légères)
- 3. Terminology (Terminologie)
- 4. Sending the Initial Offer (Envoi de l'offre initiale)
- 4.1. Full Implementation Requirements (Exigences d'implémentation complète)
- 4.2. Lite Implementation Requirements (Exigences d'implémentation légère)
- 4.3. Encoding the SDP (Encodage du SDP)
- 5. Receiving the Initial Offer (Réception de l'offre initiale)
- 5.1. Verifying ICE Support (Vérification du support ICE)
- 5.2. Determining Role (Détermination du rôle)
- 5.3. Gathering Candidates (Collecte des candidats)
- 5.4. Prioritizing Candidates (Priorisation des candidats)
- 5.5. Choosing Default Candidates (Choix des candidats par défaut)
- 5.6. Encoding the SDP (Encodage du SDP)
- 5.7. Forming the Check Lists (Formation des listes de vérification)
- 5.8. Scheduling Checks (Planification des vérifications)
- 6. Receipt of the Initial Answer (Réception de la réponse initiale)
- 7. Performing Connectivity Checks (Exécution des vérifications de connectivité)
- 7.1. STUN Client Procedures (Procédures client STUN)
- 7.1.1. Creating Permissions for Relayed Candidates (Création des permissions pour les candidats relayés)
- 7.1.2. Sending the Request (Envoi de la requête)
- 7.1.3. Processing the Response (Traitement de la réponse)
- 7.1.3.1. Failure Cases (Cas d'échec)
- 7.1.3.2. Success Cases (Cas de succès)
- 7.1.3.2.1. Discovering Peer Reflexive Candidates (Découverte des candidats réflexifs pairs)
- 7.1.3.2.2. Constructing a Valid Pair (Construction d'une paire valide)
- 7.1.3.2.3. Updating Pair States (Mise à jour des états des paires)
- 7.1.3.2.4. Updating the Nominated Flag (Mise à jour du drapeau Nominated)
- 7.1.3.3. Check List and Timer State Updates (Mises à jour de la liste de vérification et de l'état du minuteur)
- 7.2. STUN Server Procedures (Procédures serveur STUN)
- 7.2.1. Additional Procedures for Full Implementations (Procédures supplémentaires pour les implémentations complètes)
- 7.2.1.1. Detecting and Repairing Role Conflicts (Détection et réparation des conflits de rôles)
- 7.2.1.2. Computing Mapped Address (Calcul de l'adresse mappée)
- 7.2.1.3. Learning Peer Reflexive Candidates (Apprentissage des candidats réflexifs pairs)
- 7.2.1.4. Triggered Checks (Vérifications déclenchées)
- 7.2.1.5. Updating the Nominated Flag (Mise à jour du drapeau Nominated)
- 7.2.2. Additional Procedures for Lite Implementations (Procédures supplémentaires pour les implémentations légères)
- 7.2.1. Additional Procedures for Full Implementations (Procédures supplémentaires pour les implémentations complètes)
- 7.1. STUN Client Procedures (Procédures client STUN)
- 8. Concluding ICE Processing (Conclusion du traitement ICE)
- 9. Subsequent Offer/Answer Exchanges (Échanges d'offres/réponses ultérieurs)
- 9.1. Generating the Offer (Génération de l'offre)
- 9.2. Receiving the Offer and Generating an Answer (Réception de l'offre et génération d'une réponse)
- 9.2.1. Procedures for All Implementations (Procédures pour toutes les implémentations)
- 9.2.2. Procedures for Full Implementations (Procédures pour les implémentations complètes)
- 9.2.2.1. Existing Media Streams with ICE Running and no remote-candidates (Flux multimédias existants avec ICE en cours d'exécution et aucun remote-candidates)
- 9.2.2.2. Existing Media Streams with ICE Completed and no remote-candidates (Flux multimédias existants avec ICE terminé et aucun remote-candidates)
- 9.2.2.3. Existing Media Streams and remote-candidates (Flux multimédias existants et remote-candidates)
- 9.2.3. Procedures for Lite Implementations (Procédures pour les implémentations légères)
- 9.3. Updating the Check and Valid Lists (Mise à jour des listes de vérification et valides)
- 10. Keepalives (Keepalives)
- 11. Media Handling (Gestion des médias)
- 12. Usage with SIP (Utilisation avec SIP)
- 12.1. Latency Guidelines (Lignes directrices sur la latence)
- 12.2. SIP Option Tags and Media Feature Tags (Balises d'option SIP et balises de fonctionnalité multimédia)
- 12.3. Interactions with Forking (Interactions avec le forking)
- 12.4. Interactions with Preconditions (Interactions avec les préconditions)
- 12.5. Interactions with Third Party Call Control (Interactions avec le contrôle d'appel tiers)
- 13. Relationship with ANAT (Relation avec ANAT)
- 14. Extensibility Considerations (Considérations sur l'extensibilité)
- 15. Grammar (Grammaire)
- 15.1. "candidate" Attribute (Attribut "candidate")
- 15.2. "remote-candidates" Attribute (Attribut "remote-candidates")
- 15.3. "ice-lite" and "ice-mismatch" Attributes (Attributs "ice-lite" et "ice-mismatch")
- 15.4. "ice-ufrag" and "ice-pwd" Attributes (Attributs "ice-ufrag" et "ice-pwd")
- 15.5. "ice-options" Attribute (Attribut "ice-options")
- 16. Setting Ta and RTO (Définition de Ta et RTO)
- 17. Example (Exemple)
- 18. Security Considerations (Considérations de sécurité)
- 18.1. Attacks on Connectivity Checks (Attaques sur les vérifications de connectivité)
- 18.2. Attacks on Server Reflexive Address Gathering (Attaques sur la collecte d'adresses réflexives serveur)
- 18.3. Attacks on Relayed Candidate Gathering (Attaques sur la collecte de candidats relayés)
- 18.4. Attacks on the Offer/Answer Exchanges (Attaques sur les échanges d'offres/réponses)
- 18.5. Insider Attacks (Attaques internes)
- 18.6. Interactions with Application Layer Gateways and SIP (Interactions avec les passerelles de couche application et SIP)
- 19. STUN Extensions (Extensions STUN)
- 20. Operational Considerations (Considérations opérationnelles)
- 20.1. NAT and Firewall Types (Types de NAT et pare-feu)
- 20.2. Bandwidth Requirements (Exigences de bande passante)
- 20.3. ICE and ICE-lite (ICE et ICE-lite)
- 20.4. Troubleshooting and Performance Management (Dépannage et gestion des performances)
- 20.5. Endpoint Configuration (Configuration des terminaux)
- 21. IANA Considerations (Considérations IANA)
- 21.1. SDP Attributes (Attributs SDP)
- 21.1.1. candidate Attribute (Attribut candidate)
- 21.1.2. remote-candidates Attribute (Attribut remote-candidates)
- 21.1.3. ice-lite Attribute (Attribut ice-lite)
- 21.1.4. ice-mismatch Attribute (Attribut ice-mismatch)
- 21.1.5. ice-pwd Attribute (Attribut ice-pwd)
- 21.1.6. ice-ufrag Attribute (Attribut ice-ufrag)
- 21.1.7. ice-options Attribute (Attribut ice-options)
- 21.2. STUN Attributes (Attributs STUN)
- 21.3. STUN Error Responses (Réponses d'erreur STUN)
- 21.1. SDP Attributes (Attributs SDP)
- 22. IAB Considerations (Considérations IAB)
- 22.1. Problem Definition (Définition du problème)
- 22.2. Exit Strategy (Stratégie de sortie)
- 22.3. Brittleness Introduced by ICE (Fragilité introduite par ICE)
- 22.4. Requirements for a Long-Term Solution (Exigences pour une solution à long terme)
- 22.5. Issues with Existing NAPT Boxes (Problèmes avec les boîtiers NAPT existants)
- 23. Acknowledgements (Remerciements)
- 24. References (Références)
- Appendix A. Lite and Full Implementations (Implémentations légères et complètes)
- Appendix B. Design Motivations (Motivations de conception)
- B.1. Pacing of STUN Transactions (Cadencement des transactions STUN)
- B.2. Candidates with Multiple Bases (Candidats avec plusieurs bases)
- B.3. Purpose of the <rel-addr> and <rel-port> Attributes (Objectif des attributs <rel-addr> et <rel-port>)
- B.4. Importance of the STUN Username (Importance du nom d'utilisateur STUN)
- B.5. The Candidate Pair Priority Formula (La formule de priorité des paires de candidats)
- B.6. The remote-candidates Attribute (L'attribut remote-candidates)
- B.7. Why Are Keepalives Needed? (Pourquoi les keepalives sont-ils nécessaires ?)
- B.8. Why Prefer Peer Reflexive Candidates? (Pourquoi préférer les candidats réflexifs pairs ?)
- B.9. Why Send an Updated Offer? (Pourquoi envoyer une offre mise à jour ?)
- B.10. Why Are Binding Indications Used for Keepalives? (Pourquoi les indications de liaison sont-elles utilisées pour les keepalives ?)
- B.11. Why Is the Conflict Resolution Mechanism Needed? (Pourquoi le mécanisme de résolution de conflits est-il nécessaire ?)