Interactive Connectivity Establishment (ICE): Un protocollo per l'attraversamento di Network Address Translator (NAT) per protocolli Offer/Answer
- Stato: Proposed Standard
- Pubblicato: April 2010
- Stream: IETF
- Sostituisce: RFC4091, RFC4092
- Sostituito da: RFC8445, RFC8839
- Errata: Nessun errata
Astratto
Questo documento descrive un protocollo per l'attraversamento di Network Address Translator (NAT) per sessioni multimediali basate su UDP stabilite con il modello offer/answer. Questo protocollo è chiamato Interactive Connectivity Establishment (ICE). ICE fa uso del protocollo Session Traversal Utilities for NAT (STUN) e della sua estensione, Traversal Using Relay NAT (TURN). ICE può essere utilizzato da qualsiasi protocollo che utilizza il modello offer/answer, come il Session Initiation Protocol (SIP).
Stato di questo promemoria
Questo è un documento Internet Standards Track.
Questo documento è un prodotto della Internet Engineering Task Force (IETF). Rappresenta il consenso della comunità IETF. Ha ricevuto una revisione pubblica ed è stato approvato per la pubblicazione dall'Internet Engineering Steering Group (IESG). Ulteriori informazioni sugli standard Internet sono disponibili nella Sezione 2 della RFC 5741.
Informazioni sullo stato attuale di questo documento, eventuali errata e come fornire feedback su di esso possono essere ottenute all'indirizzo http://www.rfc-editor.org/info/rfc5245.
Avviso di copyright
Copyright (c) 2010 IETF Trust e le persone identificate come autori del documento. Tutti i diritti riservati.
Questo documento è soggetto al BCP 78 e alle disposizioni legali dell'IETF Trust relative ai documenti IETF (http://trustee.ietf.org/license-info) in vigore alla data di pubblicazione di questo documento. Si prega di esaminare attentamente questi documenti, poiché descrivono i propri diritti e restrizioni rispetto a questo documento. I componenti di codice estratti da questo documento devono includere il testo della licenza BSD semplificata come descritto nella Sezione 4.e delle disposizioni legali del Trust e sono forniti senza garanzia come descritto nella licenza BSD semplificata.
Sommario
- 1. Introduction (Introduzione)
- 2. Overview of ICE (Panoramica di ICE)
- 2.1. Gathering Candidate Addresses (Raccolta di indirizzi candidati)
- 2.2. Connectivity Checks (Controlli di connettività)
- 2.3. Sorting Candidates (Ordinamento dei candidati)
- 2.4. Frozen Candidates (Candidati congelati)
- 2.5. Security for Checks (Sicurezza per i controlli)
- 2.6. Concluding ICE (Conclusione di ICE)
- 2.7. Lite Implementations (Implementazioni Lite)
- 3. Terminology (Terminologia)
- 4. Sending the Initial Offer (Invio dell'offerta iniziale)
- 4.1. Full Implementation Requirements (Requisiti di implementazione completa)
- 4.2. Lite Implementation Requirements (Requisiti di implementazione Lite)
- 4.3. Encoding the SDP (Codifica dell'SDP)
- 5. Receiving the Initial Offer (Ricezione dell'offerta iniziale)
- 5.1. Verifying ICE Support (Verifica del supporto ICE)
- 5.2. Determining Role (Determinazione del ruolo)
- 5.3. Gathering Candidates (Raccolta dei candidati)
- 5.4. Prioritizing Candidates (Prioritizzazione dei candidati)
- 5.5. Choosing Default Candidates (Scelta dei candidati predefiniti)
- 5.6. Encoding the SDP (Codifica dell'SDP)
- 5.7. Forming the Check Lists (Formazione delle liste di controllo)
- 5.8. Scheduling Checks (Pianificazione dei controlli)
- 6. Receipt of the Initial Answer (Ricezione della risposta iniziale)
- 7. Performing Connectivity Checks (Esecuzione dei controlli di connettività)
- 7.1. STUN Client Procedures (Procedure client STUN)
- 7.1.1. Creating Permissions for Relayed Candidates (Creazione di permessi per candidati inoltrati)
- 7.1.2. Sending the Request (Invio della richiesta)
- 7.1.3. Processing the Response (Elaborazione della risposta)
- 7.1.3.1. Failure Cases (Casi di fallimento)
- 7.1.3.2. Success Cases (Casi di successo)
- 7.1.3.2.1. Discovering Peer Reflexive Candidates (Scoperta di candidati Peer Reflexive)
- 7.1.3.2.2. Constructing a Valid Pair (Costruzione di una coppia valida)
- 7.1.3.2.3. Updating Pair States (Aggiornamento degli stati della coppia)
- 7.1.3.2.4. Updating the Nominated Flag (Aggiornamento del flag Nominated)
- 7.1.3.3. Check List and Timer State Updates (Aggiornamenti della lista di controllo e dello stato del timer)
- 7.2. STUN Server Procedures (Procedure server STUN)
- 7.2.1. Additional Procedures for Full Implementations (Procedure aggiuntive per implementazioni complete)
- 7.2.1.1. Detecting and Repairing Role Conflicts (Rilevamento e riparazione dei conflitti di ruolo)
- 7.2.1.2. Computing Mapped Address (Calcolo dell'indirizzo mappato)
- 7.2.1.3. Learning Peer Reflexive Candidates (Apprendimento dei candidati Peer Reflexive)
- 7.2.1.4. Triggered Checks (Controlli attivati)
- 7.2.1.5. Updating the Nominated Flag (Aggiornamento del flag Nominated)
- 7.2.2. Additional Procedures for Lite Implementations (Procedure aggiuntive per implementazioni Lite)
- 7.2.1. Additional Procedures for Full Implementations (Procedure aggiuntive per implementazioni complete)
- 7.1. STUN Client Procedures (Procedure client STUN)
- 8. Concluding ICE Processing (Conclusione dell'elaborazione ICE)
- 9. Subsequent Offer/Answer Exchanges (Scambi offer/answer successivi)
- 9.1. Generating the Offer (Generazione dell'offerta)
- 9.2. Receiving the Offer and Generating an Answer (Ricezione dell'offerta e generazione di una risposta)
- 9.2.1. Procedures for All Implementations (Procedure per tutte le implementazioni)
- 9.2.2. Procedures for Full Implementations (Procedure per implementazioni complete)
- 9.2.2.1. Existing Media Streams with ICE Running and no remote-candidates (Flussi multimediali esistenti con ICE in esecuzione e nessun remote-candidates)
- 9.2.2.2. Existing Media Streams with ICE Completed and no remote-candidates (Flussi multimediali esistenti con ICE completato e nessun remote-candidates)
- 9.2.2.3. Existing Media Streams and remote-candidates (Flussi multimediali esistenti e remote-candidates)
- 9.2.3. Procedures for Lite Implementations (Procedure per implementazioni Lite)
- 9.3. Updating the Check and Valid Lists (Aggiornamento delle liste di controllo e valide)
- 10. Keepalives (Keepalives)
- 11. Media Handling (Gestione dei media)
- 12. Usage with SIP (Utilizzo con SIP)
- 12.1. Latency Guidelines (Linee guida sulla latenza)
- 12.2. SIP Option Tags and Media Feature Tags (Tag di opzione SIP e tag di funzionalità multimediali)
- 12.3. Interactions with Forking (Interazioni con il forking)
- 12.4. Interactions with Preconditions (Interazioni con le precondizioni)
- 12.5. Interactions with Third Party Call Control (Interazioni con il controllo delle chiamate di terze parti)
- 13. Relationship with ANAT (Relazione con ANAT)
- 14. Extensibility Considerations (Considerazioni sull'estensibilità)
- 15. Grammar (Grammatica)
- 15.1. "candidate" Attribute (Attributo "candidate")
- 15.2. "remote-candidates" Attribute (Attributo "remote-candidates")
- 15.3. "ice-lite" and "ice-mismatch" Attributes (Attributi "ice-lite" e "ice-mismatch")
- 15.4. "ice-ufrag" and "ice-pwd" Attributes (Attributi "ice-ufrag" e "ice-pwd")
- 15.5. "ice-options" Attribute (Attributo "ice-options")
- 16. Setting Ta and RTO (Impostazione di Ta e RTO)
- 17. Example (Esempio)
- 18. Security Considerations (Considerazioni sulla sicurezza)
- 18.1. Attacks on Connectivity Checks (Attacchi ai controlli di connettività)
- 18.2. Attacks on Server Reflexive Address Gathering (Attacchi alla raccolta di indirizzi Server Reflexive)
- 18.3. Attacks on Relayed Candidate Gathering (Attacchi alla raccolta di candidati inoltrati)
- 18.4. Attacks on the Offer/Answer Exchanges (Attacchi agli scambi offer/answer)
- 18.5. Insider Attacks (Attacchi interni)
- 18.6. Interactions with Application Layer Gateways and SIP (Interazioni con Application Layer Gateway e SIP)
- 19. STUN Extensions (Estensioni STUN)
- 20. Operational Considerations (Considerazioni operative)
- 20.1. NAT and Firewall Types (Tipi di NAT e firewall)
- 20.2. Bandwidth Requirements (Requisiti di larghezza di banda)
- 20.3. ICE and ICE-lite (ICE e ICE-lite)
- 20.4. Troubleshooting and Performance Management (Risoluzione dei problemi e gestione delle prestazioni)
- 20.5. Endpoint Configuration (Configurazione dell'endpoint)
- 21. IANA Considerations (Considerazioni IANA)
- 21.1. SDP Attributes (Attributi SDP)
- 21.1.1. candidate Attribute (Attributo candidate)
- 21.1.2. remote-candidates Attribute (Attributo remote-candidates)
- 21.1.3. ice-lite Attribute (Attributo ice-lite)
- 21.1.4. ice-mismatch Attribute (Attributo ice-mismatch)
- 21.1.5. ice-pwd Attribute (Attributo ice-pwd)
- 21.1.6. ice-ufrag Attribute (Attributo ice-ufrag)
- 21.1.7. ice-options Attribute (Attributo ice-options)
- 21.2. STUN Attributes (Attributi STUN)
- 21.3. STUN Error Responses (Risposte di errore STUN)
- 21.1. SDP Attributes (Attributi SDP)
- 22. IAB Considerations (Considerazioni IAB)
- 22.1. Problem Definition (Definizione del problema)
- 22.2. Exit Strategy (Strategia di uscita)
- 22.3. Brittleness Introduced by ICE (Fragilità introdotta da ICE)
- 22.4. Requirements for a Long-Term Solution (Requisiti per una soluzione a lungo termine)
- 22.5. Issues with Existing NAPT Boxes (Problemi con le scatole NAPT esistenti)
- 23. Acknowledgements (Ringraziamenti)
- 24. References (Riferimenti)
- Appendix A. Lite and Full Implementations (Implementazioni Lite e complete)
- Appendix B. Design Motivations (Motivazioni di progettazione)
- B.1. Pacing of STUN Transactions (Ritmo delle transazioni STUN)
- B.2. Candidates with Multiple Bases (Candidati con basi multiple)
- B.3. Purpose of the <rel-addr> and <rel-port> Attributes (Scopo degli attributi <rel-addr> e <rel-port>)
- B.4. Importance of the STUN Username (Importanza del nome utente STUN)
- B.5. The Candidate Pair Priority Formula (La formula di priorità della coppia di candidati)
- B.6. The remote-candidates Attribute (L'attributo remote-candidates)
- B.7. Why Are Keepalives Needed? (Perché sono necessari i keepalives?)
- B.8. Why Prefer Peer Reflexive Candidates? (Perché preferire i candidati Peer Reflexive?)
- B.9. Why Send an Updated Offer? (Perché inviare un'offerta aggiornata?)
- B.10. Why Are Binding Indications Used for Keepalives? (Perché le indicazioni di binding vengono utilizzate per i keepalives?)
- B.11. Why Is the Conflict Resolution Mechanism Needed? (Perché è necessario il meccanismo di risoluzione dei conflitti?)