IPv6/Neighbor Discovery Protocol
Neighbor Discovery Protocol (NDP) ist der Ersatz für das Address Resolution Protocol (ARP) des IPv4-Protokollstacks bei dessen Nachfolger IPv6. Es wird unter anderem dazu benutzt, IPv6-Adressen in Link-Layer-Adressen aufzulösen.
Vorlage:Infobox Netzwerkprotokoll Vorlage:Netzwerk-TCP-IP-Sicherungsprotokoll
Beschreibung
- 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.
Installation
Anwendungen
Fehlerbehebung
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5
Wikipedia
ICMPv6-Typen
Router Solicitation – Type 133
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 – Type 134
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 – Type 135
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 – Type 136
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 – Type 137
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.
Implementierung in Betriebssystemen
Alle IPv6-fähigen Betriebssysteme, die in Ethernet-basierten Netzwerken betrieben werden, sind in der Lage, mittels NDP Adressen aufzulösen.
Unter den meisten Linux-Distributionen erhält man mit dem iproute2-Werkzeug Einsicht in den Neighbor Cache:
# ip -6 neigh 2001:470:1f0b:2f2:5cad:a77f:aaff:849 dev wlan0 lladdr 00:11:25:32:10:ab REACHABLE fe80::2a10:7bff:fe65:58a dev wlan0 lladdr 28:10:7b:65:ab:cd router REACHABLE 2001:470:1f0b:2f2::cafe dev wlan0 lladdr 00:11:25:32:10:ab REACHABLE
Auf vielen BSD-basierten Systemen wie FreeBSD und OpenBSD hilft hierbei das Werkzeug ndp, wobei die Optionen '-an' bedeuten, dass alle Hosts numerisch angezeigt werden sollen; hier bei FreeBSD 9 (die Kommentare rechts wurden nachträglich eingefügt):
# ndp -an Neighbor Linklayer Address Netif Expire S Flags 2001:475:abcd:2f2:3189:67c1:b550:9400 c6:ab:27:56:b5:30 em0 14s R R # <-- Ein anderer Rechner im Netzwerk, mit Privacy Extensions 2001:475:abcd:2f2:211:25ff:fe32:10ab 00:11:25:32:10:ab em0 permanent R fe80::211:25ff:fe32:10ab%em0 00:11:25:32:10:ab em0 permanent R 2001:475:abcd:2f2::cafe 00:11:25:32:10:ab em0 permanent R # <-- Alias-Adresse fe80::2a10:7bff:fe65:58a%em0 28:10:7b:65:ab:cd em0 23h59m25s S R # <-- Das ist der Router 2001:475:abcd:2f2:5cad:a77f:aaff:849 00:11:25:32:10:ab em0 permanent R fe80::c6ab:27ff:fe56:b530%em0 c6:ab:27:56:b5:30 em0 24s R R # <-- Derselbe Rechner wie in der ersten Zeile mit seiner link-local address
Hierbei ist insbesondere die Spalte Expire zu beachten. Sie legt fest, wann ein Namenseintrag als veraltet einzustufen ist. Die Adressen des Rechners selbst sind dabei permanent, der Router liegt hier bei fast 24 Stunden und die Nachbargeräte im Netzwerk liegen zumeist bei unter einer Minute, bis der Eintrag wieder aufgefrischt wird.
Unter Windows lautet der Befehl:
# netsh interface ipv6 show neighbors level=verbose
Weblinks
- RFC 4861 – Neighbor Discovery for IP Version 6 (IPv6)
- RFC 3122 – Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification