3. Protokollübersicht (Protocol Overview)
Dieses Protokoll löst eine Reihe von Problemen im Zusammenhang mit der Interaktion zwischen Knoten, die an denselben Link angeschlossen sind. Es definiert Mechanismen zur Lösung jedes der folgenden Probleme:
Router-Erkennung (Router Discovery): Wie Hosts Router lokalisieren, die sich auf einem angeschlossenen Link befinden.
Präfix-Erkennung (Prefix Discovery): Wie Hosts die Menge der Adresspräfixe entdecken, die definieren, welche Ziele für einen angeschlossenen Link on-link sind. (Knoten verwenden Präfixe, um Ziele zu unterscheiden, die on-link residieren, von solchen, die nur über einen Router erreichbar sind.)
Parameter-Erkennung (Parameter Discovery): Wie ein Knoten Link-Parameter (wie die Link-MTU) oder Internet-Parameter (wie den Hop-Limit-Wert) lernt, die in ausgehenden Paketen platziert werden sollen.
Adress-Autokonfiguration (Address Autoconfiguration): Führt die Mechanismen ein, die erforderlich sind, um Knoten zu ermöglichen, eine Adresse für eine Schnittstelle auf zustandslose Weise zu konfigurieren. Die zustandslose Adress-Autokonfiguration wird in [ADDRCONF] spezifiziert.
Adressauflösung (Address resolution): Wie Knoten die Link-Layer-Adresse eines On-Link-Ziels (z. B. eines Nachbarn) bestimmen, wenn nur die IP-Adresse des Ziels gegeben ist.
Next-Hop-Bestimmung (Next-hop determination): Der Algorithmus zur Abbildung einer IP-Zieladresse auf die IP-Adresse des Nachbarn, an den der Verkehr für das Ziel gesendet werden soll. Der Next-Hop kann ein Router oder das Ziel selbst sein.
Neighbor Unreachability Detection: Wie Knoten feststellen, dass ein Nachbar nicht mehr erreichbar ist. Für Nachbarn, die als Router verwendet werden, können alternative Standard-Router ausprobiert werden. Für Routers und Hosts kann die Adressauflösung erneut durchgeführt werden.
Duplicate Address Detection: Wie ein Knoten feststellt, ob eine Adresse, die er verwenden möchte, bereits von einem anderen Knoten verwendet wird oder nicht.
Redirect: Wie ein Router einen Host über einen besseren First-Hop-Knoten informiert, um ein bestimmtes Ziel zu erreichen.
Neighbor Discovery definiert fünf verschiedene ICMP-Pakettypen: Ein Paar aus Router Solicitation und Router Advertisement-Nachrichten, ein Paar aus Neighbor Solicitation und Neighbor Advertisement-Nachrichten sowie eine Redirect-Nachricht. Die Nachrichten dienen folgenden Zwecken:
Router Solicitation: Wenn eine Schnittstelle aktiviert wird, können Hosts Router Solicitations senden, die Router auffordern, Router Advertisements sofort zu generieren, anstatt zu ihrem nächsten geplanten Zeitpunkt.
Router Advertisement: Router werben für ihre Präsenz zusammen mit verschiedenen Link- und Internet-Parametern entweder periodisch oder als Antwort auf eine Router Solicitation-Nachricht. Router Advertisements enthalten Präfixe, die zur Bestimmung verwendet werden, ob eine andere Adresse denselben Link teilt (On-Link-Bestimmung) und/oder Adresskonfiguration, einen vorgeschlagenen Hop-Limit-Wert usw.
Neighbor Solicitation: Wird von einem Knoten gesendet, um die Link-Layer-Adresse eines Nachbarn zu bestimmen oder um zu überprüfen, ob ein Nachbar über eine zwischengespeicherte Link-Layer-Adresse noch erreichbar ist. Neighbor Solicitations werden auch für Duplicate Address Detection verwendet.
Neighbor Advertisement: Eine Antwort auf eine Neighbor Solicitation-Nachricht. Ein Knoten kann auch unaufgeforderte Neighbor Advertisements senden, um eine Link-Layer-Adressänderung anzukündigen.
Redirect: Wird von Routern verwendet, um Hosts über einen besseren First Hop für ein Ziel zu informieren.
Auf Multicast-fähigen Links sendet jeder Router periodisch ein Router Advertisement-Paket per Multicast, das seine Verfügbarkeit ankündigt. Ein Host empfängt Router Advertisements von allen Routern und erstellt eine Liste von Standard-Routern. Router generieren Router Advertisements häufig genug, dass Hosts innerhalb weniger Minuten von ihrer Präsenz erfahren, aber nicht häufig genug, um sich auf das Fehlen von Advertisements zu verlassen, um Router-Ausfälle zu erkennen; ein separater Neighbor Unreachability Detection-Algorithmus bietet Fehlererkenn
ung.
Router Advertisements enthalten eine Liste von Präfixen, die für die On-Link-Bestimmung und/oder autonome Adresskonfiguration verwendet werden; Flags, die mit den Präfixen verbunden sind, spezifizieren die beabsichtigten Verwendungen eines bestimmten Präfixes. Hosts verwenden die beworbenen On-Link-Präfixe, um eine Liste zu erstellen und zu pflegen, die bei der Entscheidung verwendet wird, wann das Ziel eines Pakets on-link oder jenseits eines Routers ist. Beachten Sie, dass ein Ziel on-link sein kann, auch wenn es von keinem beworbenen On-Link-Präfix abgedeckt wird. In solchen Fällen kann ein Router ein Redirect senden, das den Sender informiert, dass das Ziel ein Nachbar ist.
Router Advertisements (und Flags pro Präfix) ermöglichen es Routern, Hosts darüber zu informieren, wie die Adress-Autokonfiguration durchzuführen ist. Zum Beispiel können Router angeben, ob Hosts DHCPv6 und/oder autonome (zustandslose) Adresskonfiguration verwenden sollen.
Router Advertisement-Nachrichten enthalten auch Internet-Parameter wie das Hop-Limit, das Hosts in ausgehenden Paketen verwenden sollten, und optional Link-Parameter wie die Link-MTU. Dies erleichtert die zentralisierte Verwaltung kritischer Parameter, die auf Routern gesetzt und automatisch an alle angeschlossenen Hosts weitergegeben werden können.
Knoten führen die Adressauflösung durch, indem sie eine Neighbor Solicitation per Multicast senden, die den Zielknoten auffordert, seine Link-Layer-Adresse zurückzugeben. Neighbor Solicitation-Nachrichten werden an die Solicited-Node-Multicast-Adresse der Zieladresse per Multicast gesendet. Das Ziel gibt seine Link-Layer-Adresse in einer Unicast-Neighbor Advertisement-Nachricht zurück. Ein einzelnes Request-Response-Paar von Paketen reicht aus, damit sowohl der Initiator als auch das Ziel die Link-Layer-Adressen des jeweils anderen auflösen können; der Initiator schließt seine Link-Layer-Adresse in die Neighbor Solicitation ein.
Neighbor Solicitation-Nachrichten können auch verwendet werden, um festzustellen, ob mehr als einem Knoten dieselbe Unicast-Adresse zugewiesen wurde. Die Verwendung von Neighbor Solicitation-Nachrichten für Duplicate Address Detection wird in [ADDRCONF] spezifiziert.
Neighbor Unreachability Detection erkennt den Ausfall eines Nachbarn oder den Ausfall des Forward-Pfads zum Nachbarn. Dies erfordert eine positive Bestätigung, dass an einen Nachbarn gesendete Pakete diesen Nachbarn tatsächlich erreichen und von seiner IP-Schicht ordnungsgemäß verarbeitet werden. Neighbor Unreachability Detection verwendet Bestätigungen aus zwei Quellen. Wenn möglich, liefern Protokolle der oberen Schicht eine positive Bestätigung, dass eine Verbindung „Forward Progress" macht, d. h., dass zuvor gesendete Daten nachweislich korrekt zugestellt wurden (z. B. wurden kürzlich neue Acknowledgments empfangen). Wenn keine positive Bestätigung durch solche „Hinweise" kommt, sendet ein Knoten Unicast-Neighbor Solicitation-Nachrichten, die Neighbor Advertisements als Erreichbarkeitsbestätigung vom Next Hop anfordern. Um unnötigen Netzwerkverkehr zu reduzieren, werden Probe-Nachrichten nur an Nachbarn gesendet, an die der Knoten aktiv Pakete sendet.
Zusätzlich zur Behandlung der oben genannten allgemeinen Probleme behandelt Neighbor Discovery auch die folgenden Situationen:
Link-Layer-Adressänderung (Link-layer address change) - Ein Knoten, der weiß, dass sich seine Link-Layer-Adresse geändert hat, kann einige (unaufgeforderte) Neighbor Advertisement-Pakete an alle Knoten per Multicast senden, um zwischengespeicherte Link-Layer-Adressen, die ungültig geworden sind, schnell zu aktualisieren. Beachten Sie, dass das Senden unaufgeforderter Advertisements nur eine Leistungsverbesserung ist (z. B. unzuverlässig). Der Neighbor Unreachability Detection-Algorithmus stellt sicher, dass alle Knoten die neue Adresse zuverlässig entdecken, obwohl die Verzögerung etwas länger sein kann.
Inbound-Load-Balancing (Inbound load balancing) - Knoten mit replizierten Schnittstellen möchten möglicherweise den Empfang eingehender Pakete über mehrere Netzwerkschnittstellen auf demselben Link verteilen. Solche Knoten haben mehrere Link-Layer-Adressen, die derselben Schnittstelle zugewiesen sind. Beispielsweise könnte ein einzelner Netzwerktreiber mehrere Netzwerkschnittstellenkarten als eine einzelne logische Schnittstelle mit mehreren Link-Layer-Adressen darstellen. Neighbor Discovery ermöglicht es einem Router, Load-Balancing für an ihn adressierten Verkehr durchzuführen, indem Router die Quell-Link-Layer-Adresse aus Router Advertisement-Paketen weglassen können, wodurch Nachbarn gezwungen werden, Neighbor Solicitation-Nachrichten zu verwenden, um Link-Layer-Adressen von Routern zu lernen. Zurückgegebene Neighbor Advertisement-Nachrichten können dann Link-Layer-Adressen enthalten, die sich je nach, z. B., wer die Solicitation ausgegeben hat, unterscheiden. Diese Spezifikation definiert keinen Mechanismus, der es Hosts ermöglicht, eingehende Pakete zu verteilen. Siehe [LD-SHRE].
Anycast-Adressen (Anycast addresses) - Anycast-Adressen identifizieren einen aus einer Menge von Knoten, die einen äquivalenten Dienst bereitstellen, und mehrere Knoten auf demselben Link können so konfiguriert werden, dass sie dieselbe Anycast-Adresse erkennen. Neighbor Discovery behandelt Anycasts, indem Knoten erwarten, mehrere Neighbor Advertisements für dasselbe Ziel zu empfangen. Alle Advertisements für Anycast-Adressen sind als Non-Override-Advertisements gekennzeichnet. Ein Non-Override-Advertisement ist eines, das die von einem anderen Advertisement gesendeten Informationen nicht aktualisiert oder ersetzt. Diese Advertisements werden später im Kontext von Neighbor Advertisement-Nachrichten diskutiert. Dies ruft spezifische Regeln auf, um zu bestimmen, welches der potenziell mehreren Advertisements verwendet werden soll.
Proxy-Advertisements (Proxy advertisements) - Ein Knoten, der bereit ist, Pakete im Namen einer Zieladresse zu akzeptieren, die nicht auf Neighbor Solicitations antworten kann, kann Non-Override Neighbor Advertisements ausgeben. Proxy-Advertisements werden von Mobile IPv6 Home Agents verwendet, um die Adressen mobiler Knoten zu verteidigen, wenn sie sich off-link bewegen. Es ist jedoch nicht als allgemeiner Mechanismus zur Behandlung von Knoten gedacht, die z. B. dieses Protokoll nicht implementieren.
3.1. Vergleich mit IPv4 (Comparison with IPv4)
Das IPv6 Neighbor Discovery-Protokoll entspricht einer Kombination der IPv4-Protokolle Address Resolution Protocol [ARP], ICMP Router Discovery [RDISC] und ICMP Redirect [ICMPv4]. In IPv4 gibt es kein allgemein vereinbartes Protokoll oder Mechanismus für Neighbor Unreachability Detection, obwohl das Hosts Requirements-Dokument [HR-CL] einige mögliche Algorithmen für Dead Gateway Detection (eine Teilmenge der Probleme, die Neighbor Unreachability Detection angeht) spezifiziert.
Das Neighbor Discovery-Protokoll bietet eine Vielzahl von Verbesserungen gegenüber dem IPv4-Protokollsatz:
-
Router Discovery ist Teil des Basis-Protokollsatzes; es ist nicht erforderlich, dass Hosts die Routing-Protokolle „belauschen".
-
Router Advertisements tragen Link-Layer-Adressen; kein zusätzlicher Paketaustausch ist erforderlich, um die Link-Layer-Adresse des Routers aufzulösen.
-
Router Advertisements tragen Präfixe für einen Link; es ist nicht erforderlich, einen separaten Mechanismus zur Konfiguration der „Netzmaske" zu haben.
-
Router Advertisements ermöglichen die Adress-Autokonfiguration.
-
Router können eine MTU für Hosts zur Verwendung auf dem Link werben, wodurch sichergestellt wird, dass alle Knoten denselben MTU-Wert auf Links verwenden, die keine klar definierte MTU haben.
-
Adressauflösungs-Multicasts sind über 16 Millionen (2^24) Multicast-Adressen „verteilt", wodurch adressauflösungsbezogene Unterbrechungen auf anderen Knoten als dem Ziel erheblich reduziert werden. Darüber hinaus sollten Nicht-IPv6-Maschinen überhaupt nicht unterbrochen werden.
-
Redirects enthalten die Link-Layer-Adresse des neuen First Hop; separate Adressauflösung ist beim Empfang eines Redirects nicht erforderlich.
-
Mehrere Präfixe können demselben Link zugeordnet werden. Standardmäßig lernen Hosts alle On-Link-Präfixe aus Router Advertisements. Router können jedoch so konfiguriert werden, dass sie einige oder alle Präfixe aus Router Advertisements weglassen. In solchen Fällen nehmen Hosts an, dass Ziele off-link sind, und senden Verkehr an Router. Ein Router kann dann bei Bedarf Redirects ausgeben.
-
Im Gegensatz zu IPv4 nimmt der Empfänger eines IPv6-Redirects an, dass der neue Next-Hop on-link ist. In IPv4 ignoriert ein Host Redirects, die einen Next-Hop angeben, der gemäß der Netzwerkmaske des Links nicht on-link ist. Der IPv6-Redirect-Mechanismus ist analog zur XRedirect-Funktion, die in [SH-MEDIA] spezifiziert ist. Es wird erwartet, dass es auf Non-Broadcast- und Shared-Media-Links nützlich ist, bei denen es unerwünscht oder nicht möglich ist, dass Knoten alle Präfixe für On-Link-Ziele kennen.
-
Neighbor Unreachability Detection ist Teil der Basis, was die Robustheit der Paketzustellung in Gegenwart ausfallender Router, teilweise ausfallender oder partitionierter Links oder Knoten, die ihre Link-Layer-Adressen ändern, erheblich verbessert. Beispielsweise können mobile Knoten sich off-link bewegen, ohne Konnektivität aufgrund veralteter ARP-Caches zu verlieren.
-
Im Gegensatz zu ARP erkennt Neighbor Discovery Half-Link-Ausfälle (unter Verwendung von Neighbor Unreachability Detection) und vermeidet das Senden von Verkehr an Nachbarn, mit denen keine bidirektionale Konnektivität besteht.
-
Im Gegensatz zu IPv4 Router Discovery enthalten die Router Advertisement-Nachrichten kein Präferenzfeld. Das Präferenzfeld ist nicht erforderlich, um Router unterschiedlicher „Stabilität" zu behandeln; die Neighbor Unreachability Detection erkennt tote Router und wechselt zu einem funktionierenden.
-
Die Verwendung von Link-Local-Adressen zur eindeutigen Identifizierung von Routern (für Router Advertisement- und Redirect-Nachrichten) ermöglicht es Hosts, die Router-Zuordnungen aufrechtzuerhalten, falls die Site neu nummeriert wird, um neue globale Präfixe zu verwenden.
-
Durch Setzen des Hop-Limits auf 255 ist Neighbor Discovery immun gegen Off-Link-Sender, die versehentlich oder absichtlich ND-Nachrichten senden. In IPv4 können Off-Link-Sender sowohl ICMP-Redirects als auch Router Advertisement-Nachrichten senden.
-
Die Platzierung der Adressauflösung auf der ICMP-Schicht macht das Protokoll medienunabhängiger als ARP und ermöglicht die Verwendung generischer IP-Schicht-Authentifizierungs- und Sicherheitsmechanismen nach Bedarf.
3.2. Unterstützte Link-Typen (Supported Link Types)
Neighbor Discovery unterstützt Links mit unterschiedlichen Eigenschaften. In Gegenwart bestimmter Eigenschaften ist nur eine Teilmenge der ND-Protokollmechanismen in diesem Dokument vollständig spezifiziert:
Punkt-zu-Punkt (point-to-point) - Neighbor Discovery behandelt solche Links genau wie Multicast-Links. (Multicast kann trivial auf Punkt-zu-Punkt-Links bereitgestellt werden, und Schnittstellen können Link-Local-Adressen zugewiesen werden.)
Multicast - Neighbor Discovery funktioniert über Multicast-fähige Links wie in diesem Dokument beschrieben.
Non-Broadcast Multiple Access (NBMA) - Redirect, Neighbor Unreachability Detection und Next-Hop-Bestimmung sollten (SHOULD) wie in diesem Dokument beschrieben implementiert werden. Adressauflösung und der Mechanismus zur Zustellung von Router Solicitations und Advertisements auf NBMA-Links sind in diesem Dokument nicht spezifiziert. Beachten Sie, dass Hosts, wenn sie die manuelle Konfiguration einer Liste von Standard-Routern unterstützen, die Link-Layer-Adressen für ihre Nachbarn dynamisch aus Redirect-Nachrichten erwerben können.
Gemeinsam genutztes Medium (shared media) - Die Redirect-Nachricht ist nach der XRedirect-Nachricht in [SH-MEDIA] modelliert, um die Verwendung des Protokolls auf Shared-Media-Links zu vereinfachen.
Diese Spezifikation behandelt keine Shared-Media-Probleme, die nur Router betreffen, wie z. B.:
- Wie Router Erreichbarkeitsinformationen auf einem Shared-Media-Link austauschen.
- Wie ein Router die Link-Layer-Adresse eines Hosts bestimmt, die er benötigt, um Redirect-Nachrichten an den Host zu senden.
- Wie ein Router bestimmt, dass er der First-Hop-Router für ein empfangenes Paket ist.
Das Protokoll ist erweiterbar (durch die Definition neuer Optionen), sodass andere Lösungen in Zukunft möglich sein könnten.
Variable MTU (variable MTU) - Neighbor Discovery ermöglicht es Routern, eine MTU für den Link anzugeben, die alle Knoten dann verwenden. Alle Knoten auf einem Link müssen (MUST) dieselbe MTU (oder Maximum Receive Unit) verwenden, damit Multicast ordnungsgemäß funktioniert. Andernfalls könnte ein Sender beim Multicasten, der nicht wissen kann, welche Knoten das Paket empfangen werden, keine minimale Paketgröße bestimmen, die alle Empfänger verarbeiten können (oder Maximum Receive Unit).
Asymmetrische Erreichbarkeit (asymmetric reachability) - Neighbor Discovery erkennt das Fehlen symmetrischer Erreichbarkeit; ein Knoten vermeidet Pfade zu einem Nachbarn, mit dem er keine symmetrische Konnektivität hat.
Die Neighbor Unreachability Detection wird typischerweise solche Half-Links identifizieren und der Knoten wird davon absehen, sie zu verwenden.
Das Protokoll kann vermutlich in Zukunft erweitert werden, um tragfähige Pfade in Umgebungen zu finden, denen reflexive und transitive Konnektivität fehlt.
3.3. Sicherung von Neighbor Discovery-Nachrichten (Securing Neighbor Discovery Messages)
Neighbor Discovery-Nachrichten werden für verschiedene Funktionen benötigt. Mehrere Funktionen sind so konzipiert, dass Hosts den Besitz einer Adresse oder die Zuordnung zwischen Link-Layer- und IP-Layer-Adressen feststellen können. Schwachstellen im Zusammenhang mit Neighbor Discovery werden in Abschnitt 11.1 diskutiert. Eine allgemeine Lösung zur Sicherung von Neighbor Discovery liegt außerhalb des Umfangs dieser Spezifikation und wird in [SEND] diskutiert. Abschnitt 11.2 erklärt jedoch, wie und unter welchen Einschränkungen IPsec Authentication Header (AH) oder Encapsulating Security Payload (ESP) verwendet werden können, um Neighbor Discovery zu sichern.