Interactive Connectivity Establishment (ICE) More...
See Table of Contents below.
Interactive Connectivity Establishment (ICE) is the ultimate weapon a client can have in its NAT traversal solution arsenals, as it promises that if there is indeed one path for two clients to communicate, then ICE will find this path. And if there are more than one paths which the clients can communicate, ICE will use the best/most efficient one.
ICE works by combining several protocols (such as STUN and TURN) altogether and offering several candidate paths for the communication, thereby maximising the chance of success, but at the same time also has the capability to prioritize the candidates, so that the more expensive alternative (namely relay) will only be used as the last resort when else fails. ICE negotiation process involves several stages:
The ICE stream transport is a ready to use object which performs the above ICE operations as well as provides application with interface to send and receive data using the negotiated path.
Please see ICE stream transport on how to use this object.
If the ICE stream transport is not suitable for use for some reason, you will need to implement your own ICE transport, by combining the ICE Session with your own means to send and receive packets. The ICE stream transport provides the best example on how to do this.
The ice_demo, an interactive ICE endpoint sample demonstrates how to use ICE stream transport without using signaling protocol such as SIP. It provides interactive user interface to create and manage the ICE sessions as well as to exchange SDP with another ice_demo instance.
Also see PJNATH Samples and screenshots for other samples.