Zum Hauptinhalt springen

Appendix A. Lite and Full Implementations (Lite- und Full-Implementierungen)

ICE ermöglicht zwei Arten von Implementierungen. Eine Full-Implementierung unterstützt die Rollen controlling und controlled in einer Sitzung und kann auch Adressensammlung durchführen. Im Gegensatz dazu ist eine Lite-Implementierung eine minimalistische Implementierung, die wenig mehr tut, als auf STUN-Prüfungen zu antworten.

Da ICE erfordert, dass beide Endpunkte es unterstützen, um einem der beiden Endpunkte Vorteile zu bringen, ist die inkrementelle Bereitstellung von ICE in einem Netzwerk komplizierter. Viele Sitzungen beinhalten einen Endpunkt, der sich selbst nicht hinter einem NAT befindet und sich nicht um NAT-Traversal kümmern würde. Ein sehr häufiger Fall ist, dass ein Endpunkt, der NAT-Traversal benötigt (wie ein VoIP-Hardphone oder Softphone), einen Anruf an eines dieser Geräte tätigt. Selbst wenn das Telefon eine Full-ICE-Implementierung unterstützt, wird ICE überhaupt nicht verwendet, wenn das andere Gerät es nicht unterstützt. Die Lite-Implementierung ermöglicht einen kostengünstigen Einstiegspunkt für diese Geräte. Sobald sie die Lite-Implementierung unterstützen, können Full-Implementierungen eine Verbindung zu ihnen herstellen und die vollen Vorteile von ICE nutzen.

Folglich ist eine Lite-Implementierung nur für Geräte geeignet, die immer mit dem öffentlichen Internet verbunden sind und eine öffentliche IP-Adresse haben, unter der sie Pakete von jedem Korrespondenten empfangen können. ICE funktioniert nicht, wenn eine Lite-Implementierung hinter einem NAT platziert wird.

ICE erlaubt einer Lite-Implementierung, einen einzelnen IPv4-host-Kandidaten und mehrere IPv6-Adressen zu haben. In diesem Fall werden Kandidatenpaare vom controlling Agenten unter Verwendung eines statischen Algorithmus ausgewählt, wie z. B. der in RFC 3484, der von dieser Spezifikation empfohlen wird. Statische Mechanismen zur Adressauswahl sind jedoch immer fehleranfällig, da sie niemals die tatsächliche Topologie widerspiegeln können und niemals tatsächliche Garantien für die Konnektivität bieten können. Sie sind immer Heuristiken. Wenn ein Agent ICE also nur implementiert, um zwischen seinen IPv4- und IPv6-Adressen zu wählen, und keine seiner IP-Adressen hinter einem NAT liegt, wird die Verwendung von Full ICE dennoch RECOMMENDED, um die robusteste Form der Adressauswahl zu ermöglichen.

Es ist wichtig zu beachten, dass die Lite-Implementierung zu dieser Spezifikation hinzugefügt wurde, um ein Sprungbrett zur Full-Implementierung zu bieten. Selbst für Geräte, die immer nur mit einer einzigen IPv4-Adresse mit dem öffentlichen Internet verbunden sind, ist eine Full-Implementierung vorzuziehen, wenn dies erreichbar ist. Eine Full-Implementierung reduziert die Rufaufbauzeiten, da der aggressive Modus von ICE verwendet werden kann. Full-Implementierungen erhalten auch die Sicherheitsvorteile von ICE, die nicht mit NAT-Traversal zusammenhängen; insbesondere wird der in Abschnitt 18 beschriebene Voice-Hammer-Angriff nur für Full-Implementierungen verhindert, nicht für Lite. Schließlich kommt es oft vor, dass ein Gerät, das heute eine öffentliche Adresse hat, morgen in einem Netzwerk platziert wird, in dem es sich hinter einem NAT befindet. Es ist schwierig, über die Lebensdauer eines Geräts oder Produkts hinweg definitiv zu wissen, dass es immer im öffentlichen Internet verwendet wird. Eine Full-Implementierung bietet die Gewissheit, dass die Kommunikation immer funktioniert.