RFC 8445 / START HERE
ICE, before the details
ICE: Interactive Connectivity Establishment
ICE helps two applications find a working network path between them. It gathers candidate addresses and tests which pairs can communicate.
The idea in one picture
Participants gather candidate paths
Connectivity checks test them
A working path is selected
A simplified picture of the idea; the chapters explain the actual mechanisms.
Why it exists
Home routers, firewalls, and different network arrangements make direct communication unpredictable. Testing paths is more useful than assuming one will work.
A familiar example
A video-calling app checks direct and relayed routes before selecting a path for media.
Helpful background
You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.
What you’ll learn next
Begin with chapter one, or choose a topic.
- Gather possible addressesICE collects local, server-reflexive, and relayed candidate addresses.→
- Check candidate pairsLocal and remote candidates form prioritized pairs that must be tested for connectivity.→
- Nominate a selected pathThe controlling agent nominates a valid pair using a check with USE-CANDIDATE.→
- Restart changes the credentialsAn ICE restart forms a new connectivity-establishment session using new credentials.→
- Traversal is not media encryptionA selected transport path does not itself encrypt or authenticate the media payload.→
This introduction explains RFC 8445 (2018). Read the original RFC ↗