IPv6/Neighbor Discovery Protocol: Unterschied zwischen den Versionen
Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
Nachfolger des [[Address Resolution Protocol]] (ARP) bei [[IPv6]] | * Nachfolger des [[Address Resolution Protocol]] (ARP) bei [[IPv6]] | ||
; [[IPv6/Adresse]]n in [[MAC-Adresse|Link-Layer-Adressen]] auflösen | ; [[IPv6/Adresse]]n in [[MAC-Adresse|Link-Layer-Adressen]] auflösen |
Version vom 14. Januar 2024, 13:40 Uhr
Neighbor Discovery Protocol (NDP) - Address Resolution mit IPv6
Beschreibung
- Nachfolger des Address Resolution Protocol (ARP) bei IPv6
- IPv6/Adressen in Link-Layer-Adressen auflösen
- Familie Internetprotokolle
- Einsatzfeld Netzwerkadressenzuordnung
- aufbauend auf Netzzugangsschicht
- Verwendung
NDP wird von den am IPv6-Netzwerk beteiligten Knoten benutzt, um die Link-Layer-Adresse von anderen am selben Netzwerk hängenden Knoten ausfindig zu machen und zum Aktualisieren der gecachten Adressen
- Für alle nicht am selben Netzwerk hängenden Knoten wird NDP benutzt, um einen/den Router zu finden, der die Pakete weiterleiten kann
Funktionsweise
- NDP-Knoten verwalten für jedes Interface folgende Informationen
Information | Beschreibung |
---|---|
Neighbor Cache | Adressen, an die etwas gesendet wurde und die sich im selben Netzwerk befinden
|
Destination Cache | Adressen, an die etwas gesendet wurde
|
Prefix List | Präfixe, die auf demselben Netz gültig sind
|
Default Router List | Router, die für das Interface bekannt sind
|
- Die Informationen zum Erstellen dieser Listen werden per ICMPv6 (Internet Control Message Protocol V6) ausgetauscht
ICMPv6-Typen
- NDP definiert zu diesem Zweck fünf ICMPv6-Typen
Router- und Präfix-Ermittlung
- Router versenden in gewissen Zeitabständen Router-Advertisement-Nachrichten per Multicast
- Die Informationen in diesen Nachrichten werden verwendet, um die Default Router List und die Prefix List zu erstellen
- Nach Ablauf der angegebenen Lebenszeit werden die Einträge wieder aus den Listen gelöscht
- Dadurch bleiben nur Router eingetragen, die aktiv sind und ihre Anwesenheit periodisch kundtun
Um nicht auf das nächste geplante Router Advertisement warten zu müssen, kann ein Knoten per Router-Solicitation-Nachricht an die Router-Multicast-Adresse ein Router Advertisement erzwingen
- Dies ist besonders beim Aktivieren eines neuen Interfaces von Vorteil, um mit der Konfiguration nicht warten zu müssen
Parameterermittlung
Mit diesem Mechanismus ermitteln Knoten relevante Parameter für den Link (z. B. die für den Link verwendete MTU), an dem sie angeschlossen sind, oder Internet Parameter (wie zum Beispiel den Wert für den Hop Limit), die für ausgehende Pakete verwendet werden müssen
Adress-Autokonfiguration
Mit diesem Verfahren konfigurieren Netzknoten IPv6-Adressen für ihre Interfaces ohne einen DHCP-Dienst zu nutzen
Bestimmung des nächsten Hops
- Wenn ein Paket versendet werden soll, wird im Destination Cache nachgeschaut, ob für dieses Ziel schon ein Eintrag vorhanden ist
- Wenn kein Eintrag existiert, wird anhand der Prefix List und der Default Router List der nächste Hop für das Paket ermittelt
- Diese Information wird dann im Destination Cache gespeichert, um dies nicht jedes Mal ermitteln zu müssen
- Wenn der neue Eintrag auf einen nichtvorhandenen Eintrag im Neighbor Cache zeigt, wird dieser ebenfalls erzeugt, als unfertig markiert und die Adressauflösung (engl. Address resolution) angestoßen
- Das Paket wird in die Queue gestellt und im Neighbor Cache ein Pointer darauf gesetzt
Adressauflösung
- Um die Link-Layer-Adresse eines Knotens zu ermitteln, wird eine Neighbor-Solicitation-Nachricht per IPv6-Multicast an die sog. Solicited Nodes-Adresse des Ziels versendet
- Anzumerken ist, dass auf Link-Layer-Ebene ebenfalls Multicast genutzt wird – jeder IPv6-Knoten muss also auf Link-Layer-Ebene nicht nur auf seine originäre feste MAC-Adresse (z. B. Ethernet) hören, sondern auch auf eine spezifische Multicast-Adresse, die auf seiner IPv6-Adresse beruht
- Im Neighbor-Solicitation-Paket ist dann die vollständige gesuchte IPv6-Adresse in den Nutzdaten enthalten, und nur der Knoten mit der gleichen Adresse antwortet darauf
- Er verschickt eine Neighbor-Advertisement-Nachricht
- Die darin enthaltenen Informationen werden im Neighbor Cache gespeichert
- Wenn ein Eintrag noch unfertig war, kann er nun als erreichbar markiert werden und die Pakete, auf die er verweist, können ausgelöst werden
- Beispiel
Ein IPv6-Host in einem Ethernet-Netzwerk mit einer MAC-Adresse 00:1d:e0:2a:42:42 bekommt über EUI-64 eine link-lokale IPv6-Adresse fe80::021d:e0ff:fe2a:4242
- Die zugehörige Solicitated Node Multicast Adresse, an welche Neighbor-Solicitation-Paket auf IPv6-Ebene versendet werden, lautet FF02::1:FF2a:4242
- Der Host hört auf der Link-Layer-Ebene nicht nur auf seine MAC-Adresse 00:1d:e0:2a:42:42, sondern auch auf die (der Solicitated Node Multicast Adresse zugeordneten) Ethernet-Multicast-Adresse 33:33:ff:2a:42:42. 33:33 ist dabei der Teil, der ein IPv6 Multicast-Paket im Ethernet kennzeichnet, ff:2a:42:42 identifiziert die eigentliche Gruppe (Multicast)
Erkennung der Nichterreichbarkeit des Nachbarn
- Um den Neighbor Cache aktuell zu halten, wird versucht herauszufinden, ob die Einträge darin noch aktuell sind
- Es gibt dabei verschiedene Wege festzustellen, ob ein Knoten nicht aktiv ist
- Solange man TCP-Daten oder TCP-Empfangsbestätigungen erhält, weiß man, dass der Knoten noch erreichbar ist
- Wenn ein Eintrag seine Lebenszeit überschreitet, ohne durch Verkehr bestätigt zu werden, wird er als veraltet markiert
- Sobald ein Paket versendet werden will, wird der Eintrag als verzögert markiert und für kurze Zeit versucht, ihn durch Verkehr zu bestätigen
- Wenn dies nicht passiert, wird erneut eine Neighbor-Solicitation-Nachricht gesendet, um den Knoten aktiv zu testen
- Wenn er nicht antwortet, wird er aus dem Neighbor Cache gelöscht
Erkennung doppelter Adressen
- Mit diesem Verfahren ermitteln Netzknoten, ob die Adresse, die sie sich bei der Autokonfiguration gegeben haben, eindeutig ist
Umleitung
- Redirect-Nachrichten werden vom Router verschickt, um andere Knoten über einen besseren ersten Hop für eine Zieladresse zu informieren
- Beim Empfangen einer solchen Nachricht wird der Destination Cache aktualisiert
- Wenn kein passender Eintrag im Destination Cache gefunden wird, wird ein neuer erstellt
ICMPv6-Typen
Type | Bezeichnung |
---|---|
133 | Router Solicitation |
134 | Router Advertisement |
135 | Neighbor Solicitation |
136 | Neighbor Advertisement |
137 | Redirect |
Router Solicitation
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Reserviert | |||||||||||||||||||||||||||||||
… | Optionen |
Per Router Solicitation an die Router-Multicast-Adresse werden alle Router im selben Netz aufgefordert, sich zu melden
Der Code dieser Nachricht ist immer 0
- Das Feld „Reserviert“ muss vom Sender mit Nullen initialisiert werden und der Empfänger muss es ignorieren
Die einzig mögliche Option ist die Link-Layer-Adresse des Senders
- Um bei Protokollerweiterungen keine Probleme zu bekommen, müssen alle unbekannten Optionen ignoriert werden
Router Advertisement
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Hop-Limit | M | O | HA | Pref | Proxy | reserved | Router-Lifetime | ||||||||||||||||||||||||
64 | Erreichbarkeits-Timeout | |||||||||||||||||||||||||||||||
96 | Auflösungs-Timeout | |||||||||||||||||||||||||||||||
… | Optionen |
Per Router Advertisement verkünden Router ihre Anwesenheit im Netz
- Entweder auf Anfrage per Router Solicitation oder periodisch, um nicht vergessen zu werden
Das Hop-Limit ist ein 8-Bit-Wert, der die vom Router vorgeschlagene Standard-Hop-Limits enthält
Es folgen 8 Flags: Ein gesetztes M-Bit sagt dem Knoten, dass er neben Autokonfiguration für die IP-Adresse auch Stateful-Autokonfiguration verwenden soll
Ein gesetztes O-Bit sagt dem Knoten, dass er neben Autokonfiguration für alle Nicht-IP-Adress-Informationen auch Stateful-Autokonfiguration verwenden soll
HA signalisiert, ob ein Home Agent (für mobile Erreichbarkeit) aktiv ist
Pref ermöglicht es, bei mehreren Routern im Netz Präferenzen zu setzen
Proxy signalisiert, ob ein Proxy verwendet wird
Die Router-Lifetime ist ein 16-Bit-Integer, der angibt, wie viele Sekunden ein Router in der Default Router List bleiben soll
- Das theoretische Maximum sind 18,2 Stunden (= 65.536 Sekunden = Sekunden)
- RFC4861 begrenzt den Maximalwert auf 9000 Sekunden d. h. auf 2,5 Stunden
- Ein Wert von 0 besagt, dass der Router kein Default Router ist und nicht in die Default Router List eingetragen werden soll
Das Erreichbarkeits-Timeout ist ein 32-Bit-Integer, der angibt, wie viele Millisekunden ein Eintrag im Neighbor Cache nach dem Empfangen von Daten noch als erreichbar gelten soll
- Das Auflösungs-Timeout ist ein 32-Bit-Integer, der angibt, nach wie vielen Millisekunden erneut ein Neighbor Solicitation gesendet werden soll
Gültige Optionen sind die Link-Layer-Adresse des Senders, die MTU des Routers und alle gültigen Präfixe
- Um problemfreie Protokollerweiterungen zu ermöglichen, müssen alle unbekannten Optionen ignoriert werden
Neighbor Solicitation
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Reserviert | |||||||||||||||||||||||||||||||
64 | Zieladresse | |||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | ||||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
… | Optionen |
Per Neighbor Solicitation (so viel wie Nachbar Anfrage) an die Link-Layer-Multicast-Adresse einer IPv6-Adresse wird diese Adresse zu einer Link-Layer-Adresse aufgelöst
- Die zu verwendende Link-Layer-Multicast-Adresse wird dabei wie oben unter Adressauflösung beschrieben aus der IPv6-Adresse des Zielknotens berechnet
- Ebenfalls wird so die Erreichbarkeit eines Knotens geprüft
Der Typ wird auf 135 gesetzt und der Code auf 0
- Das reservierte Feld muss vom Sender mit Nullen initialisiert und vom Empfänger ignoriert werden
- Die Zieladresse ist die IPv6-Adresse, die in eine Link-Layer-Adresse aufgelöst werden soll
- Es darf keine Multicast-Adresse angegeben werden
Die einzig mögliche Option ist die Link-Layer-Adresse des Senders
- Um bei Protokollerweiterungen keine Probleme zu bekommen, müssen alle unbekannten Optionen ignoriert werden
Neighbor Advertisement
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | R | S | O | Reserviert | Reserviert | |||||||||||||||||||||||||||
64 | Zieladresse | |||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | ||||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
… | Optionen |
Mit einer Neighbor-Advertisement-Nachricht wird auf Neighbor-Solicitation-Nachrichten geantwortet
Der Typ wird auf 136 gesetzt und der Code auf 0
- Das R-Bit wird gesetzt, wenn der Knoten ein Router ist
- Das S-Bit wird gesetzt, wenn das Neighbor Advertisement aufgrund einer Unicast-Neighbor-Solicitation-Nachricht gesendet wird
- Ein gesetztes O-Bit bedeutet, dass der Eintrag im Neighbor Cache aktualisiert werden muss
- Das reservierte Feld muss vom Sender mit Nullen initialisiert werden und vom Empfänger ignoriert werden
Als Zieladresse wird die (IPv6-)Zieladresse aus der dazugehörigen Neighbor-Solicitation-Nachricht eingetragen oder die (IPv6-)Adresse für die eine neue Link-Layer-Adresse bekanntgegeben werden soll
Die einzig mögliche Option ist die Link-Layer-Adresse des Senders
- Um bei Protokollerweiterungen keine Probleme zu bekommen, müssen alle unbekannten Optionen ignoriert werden
Redirect
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Reserviert | |||||||||||||||||||||||||||||||
64 | Hop-Adresse | |||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | ||||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | Zieladresse | |||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | ||||||||||||||||||||||||||||||||
288 | ||||||||||||||||||||||||||||||||
… | Optionen |
Per Redirect-Nachricht teilen Router mit, wenn es einen besseren ersten Hop für ein gewisses Ziel gibt
Der Typ wird auf 137 gesetzt und der Code auf 0
- Das reservierte Feld muss vom Sender mit Nullen initialisiert werden und vom Empfänger ignoriert werden
- Die Hop-Adresse ist der zu bevorzugende Router für die Adresse
- Die Zieladresse ist die Adresse für die es einen besseren First-Hop gibt
Die einzigen möglichen Optionen sind die Link-Layer-Adresse des Senders und der Header des auslösenden Paketes
- Um bei Protokollerweiterungen keine Probleme zu bekommen, müssen alle unbekannten Optionen ignoriert werden
Anwendungen
Anhang
Siehe auch
- IPv6
- IPv6/Adress-Aufloesung
- IPv6/Adress/Typen
- IPv6/Adresse/Eigenschaften
- IPv6/Adresse/Konfiguration
- IPv6/Adresse/Notation
- IPv6/Adressierung
- IPv6/Adressraum
- IPv6/BIND
- IPv6/DHCP
- IPv6/Default Router List
- IPv6/Dienste
- IPv6/Eigenschaften
- IPv6/Entwicklung
- IPv6/Fehlersuche
- IPv6/Firewall
- IPv6/Fragmentierung
- IPv6/Funktionen
- IPv6/Glossar
- IPv6/Header
- IPv6/Header/Extension
- IPv6/Header/tmp
- IPv6/Host
- IPv6/Host/Interface Identifier
- IPv6/Host/Link Layer Multicast
- IPv6/Host/Linux
- IPv6/Host/Multicast
- IPv6/Host/Neighbor Cache
- IPv6/Host/Neighbor Cache/TMP
- IPv6/Host/Windows
- IPv6/ICMP
- IPv6/ICMPv6/Fuktionen
- IPv6/IPv4-in-IPv6
- IPv6/IPv6-in-IPv4
- IPv6/Implementierungen
- IPv6/Interface/Identifier
- IPv6/Interface/Konfiguration
- IPv6/Konfiguration
- IPv6/Konfiguration normaler IPv6-Routen
- IPv6/Link
- IPv6/Link/Multicast
- IPv6/Link/Namensauflösung
- IPv6/Link/Präfix
- IPv6/Migration
- IPv6/MobileIP
- IPv6/Motivation
- IPv6/Multicast Address
- IPv6/Multicast Scopes
- IPv6/Multihoming
- IPv6/Neighbor/Advertisement
- IPv6/Neighbor/Cache/Linux
- IPv6/Neighbor/Cache/Windows
- IPv6/Neighbor/Solicitation
- IPv6/Neighbor Discovery Protocol
- IPv6/Parallelbetrieb
- IPv6/Prefix List
- IPv6/Priorisierung
- IPv6/Privacy/Android
- IPv6/Privacy/IOS
- IPv6/Privacy/Linux
- IPv6/Privacy/Mac OS X
- IPv6/Privacy/Windows
- IPv6/Privacy Extension
- IPv6/QoS
- IPv6/Router
- IPv6/Router/Advertisement
- IPv6/Router/Advertisement/Daemon
- IPv6/Router/Solicitation
- IPv6/SLAAC
- IPv6/SLAAC/TMP
- IPv6/Sicherheit
- IPv6/Statische Adressen
- IPv6/Subnetting
- IPv6/System-Check
- IPv6/Tunnel
- IPv6/Upper Layer Protokolle
- IPv6/Verschlüsselung und Authentifizierung
- IPv6/Windows
- IPv6/Windows/Allgemein
- IPv6/Windows/DHCP mit IPv6
- IPv6/Windows/Grundkonfiguration
- IPv6/Windows/IPv6-Labor
- IPv6/Windows/IPv6Support
- IPv6/Windows/IPv6 Subnetz
- IPv6/Windows/IPv6 unter Windows
- IPv6/Windows/Netsh-Befehle
- IPv6/Windows/Router Advertisements
- IPv6/Windows/Teredo
- IPv6/WindowsIPv6ImWindowsNetz
- IPv6/proc
- IPv6/tmp
- IPv6/tmp1
- IPv6 Over IPv4
Dokumentation
RFC
RFC | Titel |
---|---|
4861 | Neighbor Discovery for IP Version 6 (IPv6) |
3122 | Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification |
Links
Projekt
Weblinks
TMP
Neighbor Discovery
Die Neighbor Discovery (Ermittlung der Netzwerkumgebung) ist der IPv6 Nachfolger für das ARP (Address Resolution Protocol) bei IPv4. Sie können Informationen über die aktuelle Netzwerkumgebung gewinnen, Einträge erstellen und entfernen
Der Kernel merkt sich erfolgreich gelernte ”Nachbarn” (wie ARP in IPv4). Sie können die gelernten Einträge mit ”ip” einsehen
Netzwerkumgebung mit ”ip” anzeigen
Mit dem folgenden Befehl können Sie die gelernten oder konfigurierten IPv6 Nachbarn anzeigen:
Das folgende Beispiel zeigt einen Nachbar, einen erreichbaren Router:
Tabelle der Netzwerkumgebung mit ”ip” editieren
Eintrag manuell hinzufügen
Mit folgendem Befehl können Sie einen Eintrag manuell hinzufügen:
Beispiel:
Eintrag manuell entfernen
Sie können einen Eintrag auch löschen:
Beispiel:
Erweiterte Einstellungen
Das Tool ”ip” ist weniger ausführlich dokumentiert, dennoch ist es sehr mächtig. Sehen Sie online mit ”help” für weitere Details:
Es sieht aus, als seien manche Optionen ausschließlich für IPv4 gedacht... Es wird um Ihre Mithilfe gebeten, wenn Sie Informationen zu Optionen und der erweiterten Anwendung beisteuern können