Interactive Connectivity Establishment
Interactive Connectivity Establishment (ICE) is a technique used in computer networking involving network address translators (NATs) in Internet applications of Voice over Internet Protocol (VoIP), peer-to-peer communications, video, instant messaging and other interactive media. In such applications, NAT traversal is an important component to facilitate communications involving hosts on private network installations, often located behind firewalls.
ICE is developed by the Internet Engineering Task Force MMUSIC working group and is published as RFC 5245,[1] which has obsoleted RFC 4091.[2]
Overview
Network address translation (NAT) became an effective technique in delaying the exhaustion of the available address pool of Internet Protocol version 4, which is inherently limited to around four billion unique addresses. NAT gateways track outbound requests from a private network and maintain the state of each established connection to later direct responses from the peer on the public network to the peer in the private network, which would otherwise not be directly addressable.
VoIP, peer-to-peer, and many others applications require address information of communicating peers within the data streams of the connection, rather than only in the Internet Protocol packet headers. For example, the Session Initiation Protocol (SIP) communicates the IP address of network clients for registration with a location service, so that telephone calls may be routed to registered clients. ICE provides a framework with which a communicating peer may discover and communicate its public IP address so that it can be reached by other peers.
Session Traversal Utilities for NAT (STUN) is a standardized protocol for such address discovery including NAT classification. Traversal Using Relays around NAT (TURN) places a third-party server to relay messages between two clients when direct media traffic between peers is not allowed by a firewall.
IETF specifications
- RFC 5389: Session Traversal Utilities for NAT (STUN).
- RFC 5766: Traversal Using Relays around NAT (TURN): Relay Extensions to STUN.
- RFC 5245: Interactive Connectivity Establishment (ICE): A Protocol for NAT Traversal for Offer/Answer Protocols.
- RFC 6544: TCP Candidates with Interactive Connectivity Establishment (ICE)
See also
- Realm-Specific IP (RSIP)
- Middlebox Middlebox Communications (MIDCOM)
- Universal Plug and Play (UPnP)
- NAT Port Mapping Protocol (NAT-PMP)
- Port Control Protocol (PCP)
References
- ↑ RFC 5245, Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols, J. Rosenberg (April 2010)
- ↑ RFC 4091, The Alternative Network Address Types (ANAT) Semantics for the Session Description Protocol (SDP) Grouping Framework, G. Camarillo, J. Rosenberg (June 2005)
External links
- IETF Journal article on ICE - read first
- MMUSIC working group
- BEHAVE working group
- PJNATH - Open Source ICE, STUN, and TURN Library
- libnice: GLib ICE library
- free library supports ICE
- TURN Server - High-Performance Open Source TURN/STUN server (BSD license) and client library (C)