Zum Hauptinhalt springen

3. Behandlung von Hostname-Auflösungsanfragen (Hostname Resolution Query Handling)

Wenn ein Client sowohl IPv4- als auch IPv6-Konnektivität hat und versucht, eine Verbindung mit einem benannten Host herzustellen, muss er sowohl AAAA- als auch A-DNS-Abfragen senden. Beide Abfragen SHOULD so schnell wie möglich nacheinander durchgeführt werden, wobei die AAAA-Abfrage zuerst und unmittelbar gefolgt von der A-Abfrage durchgeführt wird.

Implementierungen SHOULD NOT darauf warten, dass beide Familien von Antworten zurückkehren, bevor der Verbindungsaufbau versucht wird. Wenn eine Abfrage nicht zurückkehrt oder deutlich länger braucht, um zurückzukehren, kann das Warten auf die zweite Adressfamilie den Verbindungsaufbau der ersten erheblich verzögern. Daher SHOULD der Client die DNS-Auflösung als asynchron behandeln. Beachten Sie, dass, wenn die Plattform keine asynchrone DNS-API bietet, dieses Verhalten simuliert werden kann, indem zwei separate synchrone Abfragen auf verschiedenen Threads durchgeführt werden, eine pro Adressfamilie.

Der Algorithmus läuft wie folgt ab: Wenn zuerst eine positive AAAA-Antwort (eine Antwort mit mindestens einem gültigen AAAA-Datensatz) empfangen wird, wird der erste IPv6-Verbindungsversuch sofort gestartet. Wenn aufgrund von Neuordnung zuerst eine positive A-Antwort empfangen wird, SHOULD der Client eine kurze Zeit auf die AAAA-Antwort warten, um sicherzustellen, dass IPv6 Vorrang gegeben wird (es ist üblich, dass die AAAA-Antwort der A-Antwort um einige Millisekunden folgt). Diese Verzögerung wird als "Resolution Delay" (Auflösungsverzögerung) bezeichnet. Der empfohlene Wert für die Auflösungsverzögerung beträgt 50 Millisekunden. Wenn eine positive AAAA-Antwort innerhalb der Auflösungsverzögerungsperiode empfangen wird, startet der Client sofort den IPv6-Verbindungsversuch. Wenn eine negative AAAA-Antwort (kein Fehler, keine Daten) innerhalb der Auflösungsverzögerungsperiode empfangen wird oder die AAAA-Antwort bis zum Ende der Auflösungsverzögerungsperiode nicht empfangen wurde, SHOULD der Client zur Sortierung der Adressen (siehe Abschnitt 4) und gestaffelten Verbindungsversuchen (siehe Abschnitt 5) übergehen, wobei alle bisher zurückgegebenen IPv4-Adressen verwendet werden. Wenn die AAAA-Antwort eintrifft, während diese Verbindungsversuche laufen, aber bevor eine Verbindung hergestellt wurde, werden die neu empfangenen IPv6-Adressen in die Liste der verfügbaren Kandidatenadressen aufgenommen (siehe Abschnitt 6) und der Prozess der Verbindungsversuche wird mit den hinzugefügten IPv6-Adressen fortgesetzt, bis eine Verbindung hergestellt ist.

3.1. Behandlung mehrerer DNS-Serveradressen (Handling Multiple DNS Server Addresses)

Wenn mehrere DNS-Serveradressen für das aktuelle Netzwerk konfiguriert sind, kann der Client die Option haben, seine DNS-Abfragen über IPv4 oder IPv6 zu senden. Im Einklang mit dem Happy Eyeballs-Ansatz SHOULD Abfragen zuerst über IPv6 gesendet werden (beachten Sie, dass sich dies nicht auf das Senden von AAAA- oder A-Abfragen bezieht, sondern vielmehr auf die Adresse des DNS-Servers selbst und die IP-Version, die zum Transport von DNS-Nachrichten verwendet wird). Wenn DNS-Abfragen, die an die IPv6-Adresse gesendet werden, keine Antworten erhalten, kann diese Adresse als bestraft markiert werden und Abfragen können an andere DNS-Serveradressen gesendet werden.

Da native IPv6-Bereitstellungen häufiger werden und IPv4-Adressen erschöpft sind, wird erwartet, dass IPv6-Konnektivität innerhalb von Netzwerken bevorzugt behandelt wird. Wenn ein DNS-Server so konfiguriert ist, dass er über IPv6 erreichbar ist, sollte IPv6 als bevorzugte Adressfamilie angenommen werden.

Client-Systeme SHOULD NOT eine explizite Grenze für die Anzahl der DNS-Server haben, die konfiguriert werden können, entweder manuell oder durch das Netzwerk. Wenn eine solche Grenze aufgrund von Hardwarebeschränkungen erforderlich ist, SHOULD der Client mindestens eine Adresse von jeder Adressfamilie aus der verfügbaren Liste verwenden.