ICE – Interactive Connectivity Establishment

Abkürzung: ICE

ICE ermittelt, über welchen Weg zwei Endpunkte hinter NAT tatsächlich Daten austauschen können. Es probiert alle Möglichkeiten durch und wählt die beste davon aus.

Definition ICE

ICE ist in RFC 8445 festgelegt und löst ein Problem, an dem STUN und TURN einzeln scheitern: Keines der beiden Verfahren weiß im Voraus, welcher Weg zwischen zwei bestimmten Endpunkten funktioniert.

Der Ansatz ist pragmatisch. Statt die Netzsituation zu analysieren, sammelt jede Seite alle Adressen, unter denen sie erreichbar sein könnte, tauscht die Liste mit der Gegenseite aus und probiert alle Kombinationen durch. Was antwortet, wird verwendet.

Die Adressen

Jeder Endpunkt sammelt bis zu vier Arten:

  • Eigene Adresse. Was die Netzwerkschnittstelle tatsächlich trägt. Im selben Netz funktioniert das direkt.
  • Öffentliche Adresse. Über einen STUN-Server ermittelt. Das Gerät fragt dort, unter welcher Adresse seine Pakete ankommen.
  • Während der Prüfung entdeckte Adresse. Ergibt sich, wenn bei den Prüfungen eine Adresse auftaucht, die vorher nicht bekannt war.
  • Vermittelte Adresse. Über einen TURN-Server. Der gesamte Verkehr läuft dann über diesen Server. Der letzte Ausweg, weil er Bandbreite beim Betreiber kostet und Verzögerung hinzufügt.

Der Ablauf

Beide Seiten senden ihre Liste im Rahmen der Sitzungsbeschreibung. Danach prüft jede Seite jede Kombination aus eigener und fremder Adresse, indem sie kleine Testpakete schickt und auf Antwort wartet.

Die Kombinationen sind nach Vorlieben geordnet. Direkte Wege stehen vor vermittelten, weil sie schneller sind und niemanden belasten. Aus den erfolgreichen Prüfungen wird die am besten bewertete ausgewählt.

Die Prüfpakete erfüllen einen zweiten Zweck. Sie öffnen in den beteiligten Routern die Rückwege, weil ein ausgehendes Paket dort einen Eintrag hinterlässt. Ein Teil der Verbindungen kommt überhaupt erst dadurch zustande, dass beide Seiten gleichzeitig zu senden beginnen.

Damit die Sitzung nicht wartet, bis alle Adressen gesammelt sind, gibt es eine Variante, bei der Adressen nachgereicht werden, sobald sie bekannt sind. Das verkürzt den Verbindungsaufbau spürbar.

Wo ICE eingesetzt wird

In der Kommunikation im Browser ist ICE vorgeschrieben. Jede Verbindung dort läuft über dieses Verfahren.

In der klassischen IP-Telefonie ist es die Ausnahme. Deutsche Anbieter setzen es an Teilnehmeranschlüssen üblicherweise nicht ein. Stattdessen wird das NAT-Problem anders gelöst: Der Anbieter antwortet an die Adresse, von der die Pakete tatsächlich kamen, oder ein Session Border Controller in seinem Netz nimmt den Medienstrom entgegen und reicht ihn weiter.

Das erklärt, warum ICE in Endgeräten für die Telefonie selten überhaupt einstellbar ist, während es bei Videokonferenzen im Browser selbstverständlich mitläuft.

Abgrenzung

STUN ermittelt die eigene öffentliche Adresse. Es ist ein Baustein von ICE, aber allein nicht ausreichend, weil es nicht prüft, ob der so gefundene Weg tatsächlich funktioniert.

TURN vermittelt den Verkehr über einen Server. Ebenfalls ein Baustein, aber der teuerste, weil aller Verkehr über fremde Infrastruktur läuft.

Symmetrisches RTP ist die einfachere Lösung für denselben Zweck: an die Adresse antworten, von der die Pakete kamen. In der Telefonie verbreiteter als ICE.

Quellen

  • RFC 8445: Interactive Connectivity Establishment (ICE)
  • RFC 8838: Trickle ICE, Incremental Provisioning of Candidates
  • RFC 8489: Session Traversal Utilities for NAT (STUN)
  • RFC 8656: Traversal Using Relays around NAT (TURN)

Erstellt: