Interactive Connectivity Establishment (ICE): Ein Protokoll zur Überquerung von Network Address Translators (NAT) für Offer/Answer-Protokolle
- Status: Proposed Standard
- Veröffentlicht: April 2010
- Stream: IETF
- Ersetzt: RFC4091, RFC4092
- Ersetzt durch: RFC8445, RFC8839
- Errata: Keine Errata
Zusammenfassung
Dieses Dokument beschreibt ein Protokoll zur Überquerung von Network Address Translators (NAT) für UDP-basierte Multimedia-Sitzungen, die mit dem Offer/Answer-Modell aufgebaut wurden. Dieses Protokoll wird Interactive Connectivity Establishment (ICE) genannt. ICE nutzt das Session Traversal Utilities for NAT (STUN)-Protokoll und dessen Erweiterung Traversal Using Relay NAT (TURN). ICE kann von jedem Protokoll verwendet werden, das das Offer/Answer-Modell nutzt, wie z. B. das Session Initiation Protocol (SIP).
Status dieses Memos
Dies ist ein Internet Standards Track-Dokument.
Dieses Dokument ist ein Produkt der Internet Engineering Task Force (IETF). Es repräsentiert den Konsens der IETF-Gemeinschaft. Es wurde öffentlich geprüft und von der Internet Engineering Steering Group (IESG) zur Veröffentlichung freigegeben. Weitere Informationen zu Internetstandards finden Sie in Abschnitt 2 von RFC 5741.
Informationen zum aktuellen Status dieses Dokuments, zu etwaigen Errata und dazu, wie Sie Feedback dazu geben können, erhalten Sie unter http://www.rfc-editor.org/info/rfc5245.
Urheberrechtshinweis
Copyright (c) 2010 IETF Trust und die als Dokumentautoren identifizierten Personen. Alle Rechte vorbehalten.
Dieses Dokument unterliegt BCP 78 und den gesetzlichen Bestimmungen des IETF Trust in Bezug auf IETF-Dokumente (http://trustee.ietf.org/license-info), die zum Zeitpunkt der Veröffentlichung dieses Dokuments gelten. Bitte lesen Sie diese Dokumente sorgfältig durch, da sie Ihre Rechte und Einschränkungen in Bezug auf dieses Dokument beschreiben. Aus diesem Dokument extrahierte Codekomponenten müssen den Text der vereinfachten BSD-Lizenz enthalten, wie in Abschnitt 4.e der gesetzlichen Bestimmungen des Trust beschrieben, und werden ohne Gewährleistung bereitgestellt, wie in der vereinfachten BSD-Lizenz beschrieben.
Inhaltsverzeichnis
- 1. Introduction (Einführung)
- 2. Overview of ICE (Überblick über ICE)
- 2.1. Gathering Candidate Addresses (Sammeln von Kandidatenadressen)
- 2.2. Connectivity Checks (Konnektivitätsprüfungen)
- 2.3. Sorting Candidates (Sortieren von Kandidaten)
- 2.4. Frozen Candidates (Eingefrorene Kandidaten)
- 2.5. Security for Checks (Sicherheit für Prüfungen)
- 2.6. Concluding ICE (Abschluss von ICE)
- 2.7. Lite Implementations (Lite-Implementierungen)
- 3. Terminology (Terminologie)
- 4. Sending the Initial Offer (Senden des ursprünglichen Angebots)
- 4.1. Full Implementation Requirements (Anforderungen an vollständige Implementierungen)
- 4.2. Lite Implementation Requirements (Anforderungen an Lite-Implementierungen)
- 4.3. Encoding the SDP (Kodierung des SDP)
- 5. Receiving the Initial Offer (Empfang des ursprünglichen Angebots)
- 5.1. Verifying ICE Support (Überprüfung der ICE-Unterstützung)
- 5.2. Determining Role (Bestimmung der Rolle)
- 5.3. Gathering Candidates (Sammeln von Kandidaten)
- 5.4. Prioritizing Candidates (Priorisierung von Kandidaten)
- 5.5. Choosing Default Candidates (Auswahl von Standardkandidaten)
- 5.6. Encoding the SDP (Kodierung des SDP)
- 5.7. Forming the Check Lists (Erstellen der Prüflisten)
- 5.8. Scheduling Checks (Planung von Prüfungen)
- 6. Receipt of the Initial Answer (Empfang der ursprünglichen Antwort)
- 7. Performing Connectivity Checks (Durchführung von Konnektivitätsprüfungen)
- 7.1. STUN Client Procedures (STUN-Client-Verfahren)
- 7.1.1. Creating Permissions for Relayed Candidates (Erstellen von Berechtigungen für weitergeleitete Kandidaten)
- 7.1.2. Sending the Request (Senden der Anfrage)
- 7.1.3. Processing the Response (Verarbeitung der Antwort)
- 7.1.3.1. Failure Cases (Fehlerfälle)
- 7.1.3.2. Success Cases (Erfolgsfälle)
- 7.1.3.2.1. Discovering Peer Reflexive Candidates (Entdeckung von Peer-Reflexive-Kandidaten)
- 7.1.3.2.2. Constructing a Valid Pair (Konstruktion eines gültigen Paares)
- 7.1.3.2.3. Updating Pair States (Aktualisierung von Paarzuständen)
- 7.1.3.2.4. Updating the Nominated Flag (Aktualisierung des Nominated-Flags)
- 7.1.3.3. Check List and Timer State Updates (Aktualisierungen von Prüfliste und Timer-Status)
- 7.2. STUN Server Procedures (STUN-Server-Verfahren)
- 7.2.1. Additional Procedures for Full Implementations (Zusätzliche Verfahren für vollständige Implementierungen)
- 7.2.1.1. Detecting and Repairing Role Conflicts (Erkennung und Reparatur von Rollenkonflikten)
- 7.2.1.2. Computing Mapped Address (Berechnung der abgebildeten Adresse)
- 7.2.1.3. Learning Peer Reflexive Candidates (Lernen von Peer-Reflexive-Kandidaten)
- 7.2.1.4. Triggered Checks (Ausgelöste Prüfungen)
- 7.2.1.5. Updating the Nominated Flag (Aktualisierung des Nominated-Flags)
- 7.2.2. Additional Procedures for Lite Implementations (Zusätzliche Verfahren für Lite-Implementierungen)
- 7.2.1. Additional Procedures for Full Implementations (Zusätzliche Verfahren für vollständige Implementierungen)
- 7.1. STUN Client Procedures (STUN-Client-Verfahren)
- 8. Concluding ICE Processing (Abschluss der ICE-Verarbeitung)
- 9. Subsequent Offer/Answer Exchanges (Nachträgliche Offer/Answer-Austausche)
- 9.1. Generating the Offer (Generierung des Angebots)
- 9.2. Receiving the Offer and Generating an Answer (Empfang des Angebots und Generierung einer Antwort)
- 9.2.1. Procedures for All Implementations (Verfahren für alle Implementierungen)
- 9.2.2. Procedures for Full Implementations (Verfahren für vollständige Implementierungen)
- 9.2.2.1. Existing Media Streams with ICE Running and no remote-candidates (Bestehende Medien-Streams mit laufendem ICE und ohne remote-candidates)
- 9.2.2.2. Existing Media Streams with ICE Completed and no remote-candidates (Bestehende Medien-Streams mit abgeschlossenem ICE und ohne remote-candidates)
- 9.2.2.3. Existing Media Streams and remote-candidates (Bestehende Medien-Streams und remote-candidates)
- 9.2.3. Procedures for Lite Implementations (Verfahren für Lite-Implementierungen)
- 9.3. Updating the Check and Valid Lists (Aktualisierung der Prüf- und Gültigkeitslisten)
- 10. Keepalives (Keepalives)
- 11. Media Handling (Medienbehandlung)
- 12. Usage with SIP (Verwendung mit SIP)
- 12.1. Latency Guidelines (Latenz-Richtlinien)
- 12.2. SIP Option Tags and Media Feature Tags (SIP-Option-Tags und Medien-Feature-Tags)
- 12.3. Interactions with Forking (Interaktionen mit Gabelung)
- 12.4. Interactions with Preconditions (Interaktionen mit Vorbedingungen)
- 12.5. Interactions with Third Party Call Control (Interaktionen mit der Anrufsteuerung durch Dritte)
- 13. Relationship with ANAT (Beziehung zu ANAT)
- 14. Extensibility Considerations (Überlegungen zur Erweiterbarkeit)
- 15. Grammar (Grammatik)
- 15.1. "candidate" Attribute ("candidate"-Attribut)
- 15.2. "remote-candidates" Attribute ("remote-candidates"-Attribut)
- 15.3. "ice-lite" and "ice-mismatch" Attributes ("ice-lite"- und "ice-mismatch"-Attribute)
- 15.4. "ice-ufrag" and "ice-pwd" Attributes ("ice-ufrag"- und "ice-pwd"-Attribute)
- 15.5. "ice-options" Attribute ("ice-options"-Attribut)
- 16. Setting Ta and RTO (Einstellung von Ta und RTO)
- 17. Example (Beispiel)
- 18. Security Considerations (Sicherheitsüberlegungen)
- 18.1. Attacks on Connectivity Checks (Angriffe auf Konnektivitätsprüfungen)
- 18.2. Attacks on Server Reflexive Address Gathering (Angriffe auf das Sammeln von server-reflexiven Adressen)
- 18.3. Attacks on Relayed Candidate Gathering (Angriffe auf das Sammeln von weitergeleiteten Kandidaten)
- 18.4. Attacks on the Offer/Answer Exchanges (Angriffe auf die Offer/Answer-Austausche)
- 18.5. Insider Attacks (Insider-Angriffe)
- 18.6. Interactions with Application Layer Gateways and SIP (Interaktionen mit Application Layer Gateways und SIP)
- 19. STUN Extensions (STUN-Erweiterungen)
- 20. Operational Considerations (Betriebliche Überlegungen)
- 21. IANA Considerations (IANA-Überlegungen)
- 21.1. SDP Attributes (SDP-Attribute)
- 21.1.1. candidate Attribute (candidate-Attribut)
- 21.1.2. remote-candidates Attribute (remote-candidates-Attribut)
- 21.1.3. ice-lite Attribute (ice-lite-Attribut)
- 21.1.4. ice-mismatch Attribute (ice-mismatch-Attribut)
- 21.1.5. ice-pwd Attribute (ice-pwd-Attribut)
- 21.1.6. ice-ufrag Attribute (ice-ufrag-Attribut)
- 21.1.7. ice-options Attribute (ice-options-Attribut)
- 21.2. STUN Attributes (STUN-Attribute)
- 21.3. STUN Error Responses (STUN-Fehlerantworten)
- 21.1. SDP Attributes (SDP-Attribute)
- 22. IAB Considerations (IAB-Überlegungen)
- 22.1. Problem Definition (Problemdefinition)
- 22.2. Exit Strategy (Ausstiegsstrategie)
- 22.3. Brittleness Introduced by ICE (Durch ICE eingeführte Sprödigkeit)
- 22.4. Requirements for a Long-Term Solution (Anforderungen an eine langfristige Lösung)
- 22.5. Issues with Existing NAPT Boxes (Probleme mit vorhandenen NAPT-Boxen)
- 23. Acknowledgements (Danksagungen)
- 24. References (Referenzen)
- Appendix A. Lite and Full Implementations (Lite- und vollständige Implementierungen)
- Appendix B. Design Motivations (Design-Motivationen)
- B.1. Pacing of STUN Transactions (Pacing von STUN-Transaktionen)
- B.2. Candidates with Multiple Bases (Kandidaten mit mehreren Basen)
- B.3. Purpose of the <rel-addr> and <rel-port> Attributes (Zweck der <rel-addr>- und <rel-port>-Attribute)
- B.4. Importance of the STUN Username (Bedeutung des STUN-Benutzernamens)
- B.5. The Candidate Pair Priority Formula (Die Prioritätsformel für Kandidatenpaare)
- B.6. The remote-candidates Attribute (Das remote-candidates-Attribut)
- B.7. Why Are Keepalives Needed? (Warum werden Keepalives benötigt?)
- B.8. Why Prefer Peer Reflexive Candidates? (Warum Peer-Reflexive-Kandidaten bevorzugen?)
- B.9. Why Send an Updated Offer? (Warum ein aktualisiertes Angebot senden?)
- B.10. Why Are Binding Indications Used for Keepalives? (Warum werden Binding Indications für Keepalives verwendet?)
- B.11. Why Is the Conflict Resolution Mechanism Needed? (Warum wird der Konfliktlösungsmechanismus benötigt?)