Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols
Request for Comments: 5245
Obsoletes: 4091, 4092
Category: Standards Track
ISSN: 2070-1721
jdrosen.net
April 2010
Abstract
This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based multimedia sessions established with the offer/answer model. This protocol is called Interactive Connectivity Establishment (ICE). ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN). ICE can be used by any protocol utilizing the offer/answer model, such as the Session Initiation Protocol (SIP).
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc5245.
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents
- 1. Introduction
- 2. Overview of ICE
- 3. Terminology
- 4. Sending the Initial Offer
- 5. Receiving the Initial Offer
- 6. Receipt of the Initial Answer
- 7. Performing Connectivity Checks
- 8. Concluding ICE Processing
- 9. Subsequent Offer/Answer Exchanges
- 9.1. Generating the Offer
- 9.2. Receiving the Offer and Generating an Answer
- 9.3. Updating the Check and Valid Lists
- 10. Keepalives
- 11. Media Handling
- 12. Usage with SIP
- 13. Relationship with ANAT
- 14. Extensibility Considerations
- 15. Grammar
- 16. Setting Ta and RTO
- 17. Example
- 18. Security Considerations
- 19. STUN Extensions
- 20. Operational Considerations
- 21. IANA Considerations
- 22. IAB Considerations
- 23. Acknowledgements
- 24. References
- Appendix A. Lite and Full Implementations
- Appendix B. Design Motivations
- B.1. Pacing of STUN Transactions
- B.2. Candidates with Multiple Bases
- B.3. Purpose of the <rel-addr> and <rel-port> Attributes
- B.4. Importance of the STUN Username
- B.5. The Candidate Pair Priority Formula
- B.6. The remote-candidates Attribute
- B.7. Why Are Keepalives Needed?
- B.8. Why Prefer Peer Reflexive Candidates?
- B.9. Why Send an Updated Offer?
- B.10. Why Are Binding Indications Used for Keepalives?
- B.11. Why Is the Conflict Resolution Mechanism Needed?