The Cable Guy - Februar 2006

Auswahl von Quell- und Zieladressen bei IPv6

Veröffentlicht: 31. Jan 2006
*

Einleitung

Im Gegensatz zu IPv4-Hosts können IPv6-Hosts über mehrere Adressen pro LAN- oder VPN-Schnittstelle verfügen. Diese können für verschiedene Einsatzzwecke genutzt werden:

Unterschiedliche Bereiche: Eine LAN-Schnittstelle eines IPv6-Hosts kann zum Beispiel über eine Adresse für das lokale Subnetz und zusätzlich entweder über eine globale Adresse (für das gesamte Internet) oder eine Adresse für den gesamten Standort der Organisation (standortlokal) verfügen. In einigen Fällen kann es sogar möglich sein, dass die LAN-Schnittstelle alle drei Adressarten gleichzeitig nutzt.

Unterschiedliche Stati: Automatisch konfigurierte Adressen können "nicht ausgeschlossen" oder "ausgeschlossen" sein.

Unterschiedliche Einsatzzwecke: Bei globalen Adressprefixen ist es möglich, temporäre (mit einer zufällig festgelegten Schnittstellen-ID) und öffentliche Adressen (mit einer Schnittstellen-ID, die auf der IEEE 802-Adresse des LAN-Adapters basiert) zu verwenden. Mobile IPv6-Knoten können eine Home-Adresse und eine andere mobile Adresse haben.

Zusätzlich verfügt ein IPv6/IPv4-Host über eine oder mehrere Tunnelschnittstellen, die ebenfalls lokale, globale oder standortlokale Adressen haben können.

Der typische IPv4-Host hat eine Schnittstelle, der eine IPv4-Adresse zugewiesen ist. Er löst Namen über DNS auf, und beim Aufbau der Kommunikation ist recht einfach festzustellen, welche Adresse Quelle und welche Ziel ist. Die Quelladresse ist die, die der Schnittstelle des Hosts zugewiesen ist. Die Zieladresse ist die vom DNS zurückgegebene IP-Adresse.

Ein typischer IPv6-Host hat mehrere Schnittstellen mit mehreren IPv6-Adressen, und der DNS-Server gibt mehrere IPv6-Adressen zurück. Das Festlegen der Quell- und Zieladresse ist somit etwas komplexer. Die beiden Adressen hängen von Zweck und Umfang der Verbindung ab. Wenn er mit einer globalen Adresse kommuniziert, sollte der IPv6-Host zum Beispiel keine lokale Adresse als Quelladresse wählen. Außerdem müssen die möglichen Zieladressen nach Relevanz sortiert werden.

Um die Auswahl der Quell- und Zieladresse zu standardisieren, wurden in RFC 3484 (englischsprachig) die folgenden Algorithmen definiert:

Ein Algorithmus zur Auswahl von Quelladressen, der die beste Quelladresse für die Kommunikation mit einer gegebenen Zieladresse sucht.

Ein Algorithmus, der eine Liste der möglichen Zieladressen nach deren Relevanz sortiert.

Diese beiden Funktionen brauchen also nicht mehr durch die jeweilige IPv6-Anwendung selbst implementiert werden.

Wenn die Anwendung selbst eine Quelladresse angibt, wird der Quell-Algorithmus nicht genutzt. Wenn die Anwendung statt eines Namens eine Zieladresse angibt, wird auch der Zielalgorithmus nicht verwendet. Außerdem kann die Anwendung die Reihenfolge der vom Zielalgorithmus definierten Reihenfolge der Zieladressen ignorieren.

Damit Sie eine administrative Kontrolle über die Auswahl der Quell- und Zieladressen durch die Algorithmen haben, wurde in RFC 3484 zusätzlich eine lokale Richtlinientabelle definiert. In dieser Tabelle finden sich Einträge mit den folgenden Informationen:

Ein Adressprefix: Mit ihm wird der beste Eintrag der Tabelle für eine Quell- oder Zieladresse bestimmt. Dieses Verfahren entspricht dem IPv6-Prozess der Routenerkennung - der beste Eintrag ist einfach der mit der größtmöglichen Prefix-Übereinstimmung.

Ein Prioritätswert: Mit diesem Wert kann eine Zieladresse gegenüber einer anderen bevorzugt werden. Wenn zum Beispiel zwei Zieladressen (D1 und D2) verglichen werden und die Priorität von D1 größer ist als die von D2, dann wird D1 gegenüber D2 bevorzugt.

Ein Label: Mit diesem Wert werden Quelladressen bevorzugt, wenn ihr Label dem der Zieladresse entspricht. Wenn zum Beispiel zwei Quelladressen zur Auswahl stehen (S1 und S2) - und das Label von S1 dem der Zieladresse (D) entspricht, das Label von S2 jedoch nicht - dann wird S1 verwendet.

Unter Windows XP Service Pack 2, Windows XP Service Pack 1, Windows Server 2003, Windows Vista oder Windows Server "Longhorn" können Sie sich die Richtlinientabelle mit dem Befehl netsh interface ipv6 show prefixpolicy anzeigen lassen. Die Ausgabe sieht zum Beispiel so aus:

Precedence  Label  Prefix
----------  -----  --------------------------------
         5      5  3ffe:831f::/32
        10      4  ::ffff:0:0/96
        20      3  ::/96
        30      2  2002::/16
        40      1  ::/0
        50      0  ::1/128

Mit den Befehlen netsh interface ipv6 add prefixpolicy, netsh interface ipv6 set prefixpolicy und netsh interface ipv6 delete prefixpolicy können Sie die Tabelle verwalten.

In den folgenden Abschnitten finden Sie eine genauere Beschreibung der Algorithmen zur Auswahl der Quell- und Zieladresse. Außerdem gebe ich ein Beispiel für ihre Anwendung.

Zum SeitenanfangZum Seitenanfang

Der Algorithmus zur Auswahl der Quelladresse

Zweck dieses Algorithmus ist es, aus allen verfügbaren Quelladressen die mit der größtmöglichen Relevanz auszuwählen. Bei Hosts besteht die Liste der möglichen Kandidaten aus den Unicast-Adressen, die der Schnittstelle zugewiesen sind, die dem Ziel am nächsten ist. Bei Routern können diese Adressen jeder Schnittstelle des Routers sein.

Der Algorithmus vergleicht zwei Quelladressen mit der Zieladresse und stellt fest, welche von beiden die höhere Relevanz hat. Durch das interaktive Vergleichen der Liste aller Kandidaten wird so die Adresse mit der höchsten Relevanz ermittelt.

Beim Vergleich von zwei Quelladressen (S1 und S2) mit einer Zieladresse (D) wird die folgende Analyse durchgeführt:

1.

Es wird die Quelladresse bevorzugt, die der Zieladresse entspricht.

Wenn S1 = D dann S1.
Wenn S2 = D dann S2.
Wenn weder S1 noch S2 D entspricht, haben S1 und S2 die gleiche Priorität.

2.

Es wird die Quelladresse bevorzugt, die denselben Bereich wie die Zieladresse hat.

Wenn der Bereich von S1 kleiner ist als der von S2, wird S2 bevorzugt - andernfalls S1.
Wenn der Bereich von S2 kleiner ist als der von S1, wird S1 bevorzugt - andernfalls S2.
Wenn die Bereiche von S1 und S2 dem von D entsprechen oder beide kleiner sind, dann haben beide die gleiche Priorität.

3.

Es wird die Adresse bevorzugt, die nicht ausgeschlossen ist.

Wenn S2 ausgeschlossen ist und S1 nicht, dann wird S1 bevorzugt.
Wenn S1 ausgeschlossen ist und S2 nicht, dann wird S2 bevorzugt.
Wenn beide Adressen ausgeschlossen sind oder beide nicht ausgeschlossen sind, dann haben beide die gleiche Priorität.

4.

Bei mobilen Knoten wird die Home-Adresse bevorzugt.

Wenn S1 die Home-Adresse und mobile Adresse ist und S2 nicht, dann wird S1 bevorzugt.
Wenn S1 die Home-Adresse ist und S2 die mobile, dann wird S1 bevorzugt.
Wenn S2 die Home-Adresse und mobile Adresse ist und S1 nicht, dann wird S2 bevorzugt.
Wenn S2 die Home-Adresse ist und S1 die mobile, dann wird S2 bevorzugt.
Wenn weder S1 noch S2 die Home-Adresse ist, dann haben S1 und S2 die gleiche Priorität.

Weitere Informationen zu Home-Adressen und mobilen Adressen finden Sie im Cable Guy-Artikel Eine Einführung zu Mobile IPv6.

5.

Bei Routern wird die Adresse der Schnittstelle bevorzugt, die dem Ziel am nächsten ist.

Wenn S1 einer Schnittstelle zuwiesen ist, über die Pakete an D gesendet werden, dann wird S1 bevorzugt.
Wenn S2 einer Schnittstelle zuwiesen ist, über die Pakete an D gesendet werden, dann wird S2 bevorzugt.
Wenn weder S1 noch S2 einer solchen Schnittstelle zugewiesen sind oder wenn beide diesem Kriterium entsprechen, dann haben beide Adressen die gleiche Priorität.

6.

Es wird die Quelladresse bevorzugt, die das gleiche Label wie die Zieladresse hat.

Wenn das Label von S1 dem von D entspricht und das von S2 nicht, dann wird S1 bevorzugt.
Wenn das Label von S2 dem von D entspricht und das von S1 nicht, dann wird S2 bevorzugt.
Wenn die Labels beider Adressen dem von D entsprechen, oder beide Labels nicht dem von D entsprechen, dann haben beide Adressen die gleiche Priorität.

7.

Es werden öffentliche Quelladressen gegenüber temporären Adressen bevorzugt.

Wenn S1 eine öffentliche Adresse ist und S2 nicht, dann wird S1 bevorzugt.
Wenn S2 eine öffentliche Adresse ist und S1 nicht, dann wird S2 bevorzugt.
Wenn beide Adressen öffentlich oder temporär sind, dann haben beide die gleiche Priorität.

8.

Es wird die Adresse mit der längsten Übereinstimmung im Prefix bevorzugt.

Wenn die Übereinstimmung im Prefix mit D bei S1 größer ist als S2, dann wird S1 bevorzugt.
Wenn die Übereinstimmung im Prefix mit D bei S2 größer ist als S1, dann wird S2 bevorzugt.
Wenn die Übereinstimmung bei beiden gleich groß ist, dann haben beide die gleiche Priorität.

Zum SeitenanfangZum Seitenanfang

Der Algorithmus zur Auswahl der Zieladresse

Zweck dieses Algorithmus ist es, die Liste der möglichen IPv4- und IPv6-Adressen von der höchsten bis zur geringsten Relevanz zu sortieren. IPv4-Zieladressen werden als Mapped-Adressen behandelt (::ffff: w.x.y.z) und ihr Bereich bei öffentlichen IPv4-Adressen als global, bei privaten IPv4-Adressen als standortlokal und bei APIPA-Adressen als lokal behandelt.

Der Algorithmus vergleicht zwei Zieladressen und stellt fest, welche von beiden die größere Relevanz hat. Er sortiert die Liste, indem er iterativ alle Adressen durchläuft.

Bei Vergleich von zwei Zieladressen (D1 und D2) wird die folgende Analyse durchgeführt:

1.

Es wird die Adresse bevorzugt, die erreichbar ist.

Wenn D2 als nicht erreichbar bekannt ist oder wenn die Quelladresse für D2 nicht definiert ist, dann wird D1 bevorzugt.
Wenn D1 als nicht erreichbar bekannt ist oder ist wenn die Quelladresse für D1 nicht definiert ist, dann wird D2 bevorzugt.
Wenn beide Adressen erreichbar oder unerreichbar sind, dann haben beide die gleiche Priorität.

2.

Es wird die Adresse bevorzugt, deren Bereich dem der Quelladresse entspricht.

Wenn der Bereich von D1 dem der Quelladresse entspricht und der von D2 nicht, dann wird D1 bevorzugt.
Wenn der Bereich von D2 dem der Quelladresse entspricht und der von D1 nicht, dann wird D2 bevorzugt.
Wenn der Bereich beider Adressen dem der Quelladresse entspricht oder beide Bereiche nicht dem der Quelladresse entsprechen, dann haben beide die gleiche Priorität.

3.

Es wird die Adresse bevorzugt, die nicht ausgeschlossen ist.

Wenn D2 ausgeschlossen ist und D1 nicht, dann wird D1 bevorzugt.
Wenn D1 ausgeschlossen ist und D2 nicht, dann wird D2 bevorzugt.
Wenn beide Adressen ausgeschlossen sind oder beide nicht ausgeschlossen sind, dann haben beide die gleiche Priorität.

4.

Bei mobilen Knoten wird die Home-Adresse bevorzugt.

Wenn D1 eine Home-Adresse und eine mobile Adresse ist und D2 nicht, dann wird D1 bevorzugt.
Wenn D1 eine Home-Adresse ist und D2 eine mobile, dann wird D1 bevorzugt.
Wenn D2 eine Home-Adresse und eine mobile Adresse ist und D1 nicht, dann wird D2 bevorzugt.
Wenn D2 eine Home-Adresse ist und D1 eine mobile, dann wird D2 bevorzugt.
Wenn weder D1 noch D2 eine Home-Adresse ist, dann haben D1 und D2 die gleiche Priorität.

5.

Es wird die Adresse bevorzugt, die das gleiche Label wie die Quelladresse hat.

Wenn das Label von D1 dem der Quelladresse entspricht und das von D2 nicht, dann wird D1 bevorzugt.
Wenn das Label von D2 dem der Quelladresse entspricht und das von D1 nicht, dann wird D2 bevorzugt.
Wenn die Labels beider Adressen dem der Quelladresse entsprechen oder beide Labels nicht dem der Quelladresse entsprechen, dann haben beide Adressen die gleiche Priorität.

6.

Es wird die Adresse bevorzugt, die in der Richtlinientabelle die höhere Priorität hat.

Wenn die Priorität von D1 höher ist als die von D2, dann wird D1 bevorzugt.
Wenn die Priorität von D2 höher ist als die von D1, dann wird D2 bevorzugt.
Wenn die Priorität bei beiden Adressen gleich ist, dann wird keine von beiden bevorzugt.

7.

Es wird eine native IPv6 Zieladresse gegenüber einer IPv6-Transition-Adresse bevorzugt.

Wenn D2 über eine IPv6-Transition-Technologie erreicht wird und D1 nicht, dann wird D1 bevorzugt.
Wenn D1 über eine IPv6-Transition-Technologie erreicht wird und D2 nicht, dann wird D2 bevorzugt.
Wenn beide Adressen native IPv6-Adressen sind oder beide Adresse keine nativen Adressen, dann haben beide die gleiche Priorität.

IPv6-Transition-Technologien sind zum Beispiel ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) und 6to4. Weitere Informationen finden Sie im Artikel IPv6 Transition Technologies (englischsprachig).

8.

Es wird die Adresse bevorzugt, die den kleinsten Bereich hat.

Wenn der Bereich von D1 kleiner ist als der von D2, wird D2 bevorzugt - andernfalls D1.
Wenn der Bereich von D2 kleiner ist als der von D1, wird D1 bevorzugt - andernfalls D2.
Wenn die Bereiche von S1 und S2 gleich sind, dann haben beide die gleiche Priorität.

9.

Es wird die Adresse mit der längsten Übereinstimmung im Prefix bevorzugt.

Wenn die Übereinstimmung im Prefix mit der Quelladresse bei D1 größer ist als D2, dann wird D1 bevorzugt.
Wenn die Übereinstimmung im Prefix mit der Quelladresse bei D2 größer ist als D1, dann wird D2 bevorzugt.
Wenn die Übereinstimmung bei beiden gleich groß ist, dann haben beide die gleiche Priorität.

10.

Die Reihenfolge der Zieladressen wird nicht geändert.

Zum SeitenanfangZum Seitenanfang

Ein Beispiel zur Auswahl von Adressen

Host A ist ein IPv6/IPv4-Host, der mehrere Schnittstellen und mehrere Adressen pro Schnittstelle hat. Host A erstellt und versendet eine DNS-Namensauflösungsanfrage für alle Ressourceneinträge des Namens web.example.com. In der DNS-Antwort sind eine IPv4-Adresse und mehrere IPv6-Adressen enthalten.

IPv6 geht nun auf Host A folgendermaßen vor:

1.

Er legt mit dem Algorithmus zur Auswahl der Quelladresse die Quelladresse mit der höchsten Relevanz fest.

2.

Er legt mit dem Algorithmus zur Auswahl der Zieladresse eine Reihenfolge für die IPv4- und IPv6-Zieladressen fest.

Die sortierte Liste mit Zieladressen wird dann der Anwendung zur Verfügung gestellt. Diese kann mit jeder der Zieladressen in der Liste einen Verbindungsversuch starten.

Host A könnte zum Beispiel mit den folgenden Adressen konfiguriert sein:

LAN-Schnittstelle:

3ffe:ffff:21a5:a454:2aa:ff:fe21:5c2f (globale Adresse, nicht ausgeschlossen, öffentlich)

3ffe:ffff:21a5:a454:20da:3198:2c50:1a57 (globale Adresse, nicht ausgeschlossen, temporär)

3ffe:ffff:21a5:a454:1d15:9c:8e4c:902b (globale Adresse, ausgeschlossen, temporär)

fec0:3a4f:78ea:a454:2aa:ff:fe21:5c2f (standortlokale Adresse, nicht ausgeschlossen)

fe80::2aa:ff:fe21:5c2f (lokale Adresse, nicht ausgeschlossen)

157.60.17.211 (öffentliche IPv4-Adresse [globaler Bereich], nicht ausgeschlossen)

Tunnelingschnittstelle:

3ffe:ffff:21a5:a499::5efe:157.60.17.211 (globale ISATAP-Adresse, nicht ausgeschlossen)

fe80::5efe:157.60.17.211 (lokale Adresse, nicht ausgeschlossen)

Die DNS-Anfrage für web.example.com gibt die folgenden Adressen zurück:

207.73.118.98 (öffentliche IPv4-Adresse [globaler Bereich])

3ffe:ffff:21a5:a4ca:2aa:ff:fe35:2c1a (globale Adresse)

3ffe:ffff:21a5:a499::5efe:207.73.118.98 (globale ISATAP-Adresse)

fec0:3a4f:2a34:1aa7:2aa:ff:fe35:2c1a (standortlokale Adresse)

Das Ergebnis des Algorithmus zur Auswahl der Quelladresse sieht so aus:

Für Zieladresse 3ffe:ffff:21a5:a4ca:2aa:ff:fe35:2c1a ist die bevorzugte Quelladresse 3ffe:ffff:21a5:a454:2aa:ff:fe21:5c2f (globale Adresse, nicht ausgeschlossen, öffentlich). Der Bereich stimmt überein, es handelt sich um eine öffentliche Adresse, und sie verfügt über die längste Prefix-Übereinstimmung mit dem Ziel.

Für Zieladresse 3ffe:ffff:21a5:a499::5efe:207.73.118.98 ist die bevorzugte Quelladresse 3ffe:ffff:21a5:a499::5efe:157.60.17.211 (globale ISATAP-Adresse, nicht ausgeschlossen). Der Bereich stimmt überein, und sie verfügt über die längste Prefix-Übereinstimmung mit dem Ziel.

Für Zieladresse fec0:3a4f:2a34:1aa7:2aa:ff:fe35:2c1a ist die bevorzugte Quelladresse fec0:3a4f:78ea:a454:2aa:ff:fe21:5c2f (standortlokal, nicht ausgeschlossen). Der Bereich stimmt überein, und sie verfügt über die längste Prefix-Übereinstimmung mit dem Ziel.

Das Ergebnis des Algorithmus zur Sortierung der Zieladressen sieht so aus:

fec0:3a4f:2a34:1aa7:2aa:ff:fe35:2c1a (kleinster Bereich)

3ffe:ffff:21a5:a4ca:2aa:ff:fe35:2c1a (native Adressen werden gegenüber ISATAP-Adressen bevorzugt)

3ffe:ffff:21a5:a499::5efe:207.73.118.98 (ISATAP-Adressen werden gegenüber IPv4-Adressen bevorzugt)

207.73.118.98

Host A versucht also mit den folgenden Quell- und Zieladressen eine Verbindung zu web.example.com aufzubauen:

Quelladresse fec0:3a4f:78ea:a454:2aa:ff:fe21:5c2f, Zieladresse fec0:3a4f:2a34:1aa7:2aa:ff:fe35:2c1a

Quelladresse 3ffe:ffff:21a5:a454:2aa:ff:fe21:5c2f, Zieladresse 3ffe:ffff:21a5:a4ca:2aa:ff:fe35:2c1a

Quelladresse 3ffe:ffff:21a5:a499::5efe:157.60.17.211, Zieladresse 3ffe:ffff:21a5:a499::5efe:207.73.118.98

Quelladresse 157.60.17.211, Zieladresse 207.73.118.98

IPv6-Adressen werden gegenüber IPv4-Adressen bevorzugt, weil der Eintrag für IPv4-Adressen in der Richtlinientabelle (Adressprefix ::ffff:0:0/96) einen geringeren Prioritätswert hat.

Anmerkung: Eine Anwendung wie Ping.exe kann die Adressliste ignorieren und stattdessen die von der DNS-Abfrage zurückgegebenen Adressen verwenden.

Zum SeitenanfangZum Seitenanfang

Zusätzliche Informationen

Weitere Informationen zum Thema finden Sie unter den folgenden Quellen:

Internet Protocol Version 6-Webseite (englischspachig)

Whitepaper: Introduction to IP Version 6 (englischspachig)


Zum SeitenanfangZum Seitenanfang