Zum Hauptinhalt springen

4. Sortierung von Adressen (Sorting Addresses)

Bevor versucht wird, sich mit einer der aufgelösten Zieladressen zu verbinden, sollte der Client die Reihenfolge definieren, in der die Versuche gestartet werden sollen. Sobald die Reihenfolge definiert ist, kann der Client einen einfachen Algorithmus verwenden, um jede Option nach einer kurzen Verzögerung um die Wette laufen zu lassen (siehe Abschnitt 5). Es ist wichtig, dass die geordnete Liste alle Adressen aus beiden Familien enthält, die bis zu diesem Zeitpunkt empfangen wurden, da dies es dem Client ermöglicht, den Wettlaufeffekt von Happy Eyeballs für die gesamte Liste zu erhalten, nicht nur für die erste IPv4- und die erste IPv6-Adresse.

Zunächst MUST der Client die bis zu diesem Zeitpunkt empfangenen Adressen mithilfe der Zieladressauswahl (Destination Address Selection) ([RFC6724], Abschnitt 6) sortieren.

Wenn der Client zustandsbehaftet ist und eine Historie der erwarteten Rundlaufzeiten (RTT, Round-Trip Time) für die Routen zum Zugriff auf jede Adresse hat, SHOULD er eine Zieladressauswahlregel zwischen den Regeln 8 und 9 hinzufügen, die Adressen mit niedrigeren RTTs bevorzugt. Wenn der Client verfolgt, welche Adressen er in der Vergangenheit verwendet hat, SHOULD er eine weitere Zieladressauswahlregel zwischen der RTT-Regel und Regel 9 hinzufügen, die verwendete Adressen gegenüber nicht verwendeten bevorzugt. Dies hilft Servern, die die IP-Adresse des Clients während der Authentifizierung verwenden, wie es bei TCP Fast Open [RFC7413] und einigen Cookies des Hypertext Transport Protocol (HTTP) der Fall ist. Diese historischen Daten MUST NOT über verschiedene Netzwerkschnittstellen hinweg verwendet werden und SHOULD gelöscht werden, wann immer ein Gerät das Netzwerk wechselt, mit dem es verbunden ist.

Als Nächstes SHOULD der Client die geordnete Liste modifizieren, um Adressfamilien zu verschachteln. Welche Adressfamilie auch immer zuerst in der Liste steht, sollte von einer Adresse der anderen Adressfamilie gefolgt werden; das heißt, wenn die erste Adresse in der sortierten Liste IPv6 ist, sollte die erste IPv4-Adresse in der Liste nach oben verschoben werden, um die zweite in der Liste zu sein. Eine Implementierung MAY eine Adressfamilie stärker bevorzugen wollen, indem sie mehrere Adressen dieser Familie versuchen lässt, bevor die andere Familie versucht wird. Die Anzahl der zusammenhängenden Adressen der ersten Adressfamilie wird als "First Address Family Count" (Anzahl der ersten Adressfamilie) bezeichnet und kann ein konfigurierbarer Wert sein. Dies wird durchgeführt, um zu vermeiden, dass durch eine lange Liste von Adressen einer bestimmten Adressfamilie gewartet werden muss, wenn die Konnektivität über diese Adressfamilie beeinträchtigt ist.

Beachten Sie, dass die in diesem Abschnitt beschriebene Adressauswahl nur für Zieladressen gilt; die Quelladressauswahl (Source Address Selection) ([RFC6724], Abschnitt 5) wird einmal pro Zieladresse durchgeführt und liegt außerhalb des Umfangs dieses Dokuments.