Neighbor Discovery Protocol

Neighbor Discovery Protocol

Neighbor Discovery Protocol (NDP) ist der Ersatz des Address Resolution Protocol (ARP) von IPv4 für IPv6. Es wird unter anderem dazu benutzt, IPv6-Adressen in Link-Layer-Adressen aufzulösen.

Inhaltsverzeichnis

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

Für NDP muss der Knoten für jedes Interface folgende Informationen verwalten:

Im Neighbor Cache werden Adressen verwaltet, an die etwas gesendet wurde und die sich im selben Netzwerk befinden. Zu jedem Eintrag einer IPv6-Adresse steht ihre Link-Layer-Adresse. Auch weitere Informationen werden hier verwaltet, wie zum Beispiel Pointer auf Pakete, die auf die Adressauflösung warten, Informationen für die Erreichbarkeitsprüfung oder ob es ein Router ist.

Im Destination Cache werden Adressen verwaltet, an die etwas gesendet wurde. Für jeden Eintrag wird, per Link auf den Neighbor Cache, gespeichert, welches der nächste Hop ist, den ein Paket nehmen soll.

In der Prefix List werden die Präfixe verwaltet, die auf demselben Netz gültig sind. Jeder Eintrag, außer der zur link-lokalen Adresse, hat ein Ablaufdatum. Somit bleiben nur Netze in der Liste, die von einem Router verkündet werden.

In der Default Router List werden alle Router verwaltet, die für das Interface bekannt sind. Die Einträge verweisen auf Einträge im Neighbor Cache. Zusätzlich haben sie ein Ablaufdatum, sodass alte Router verschwinden und nur die erhalten bleiben, die ihre Anwesenheit verkünden.

Die Informationen zum Erstellen dieser Listen werden per ICMPv6 (Internet Control Message Protocol V6) ausgetauscht. NDP definiert zu diesem Zweck 5 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 Adresse (z. B. Ethernet) hören, sondern auch auf einer für seiner IPv6-Adresse beruhenden spezifischen Multicast-Adresse. 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 link-lokalen IPv6-Adresse fe80::021d:e0ff:fe2a:4242 hört auf der Link-Layer-Ebene nicht nur auf die Adresse 00:1d:e0:2a:42:42, sondern auch auf die Ethernet-Multicast-Adresse 33:33:ff:2a:42:42. 33:33:ff ist dabei der Teil, der ein IPv6 Multicast-Paket kennzeichnet, 2a:42:42 identifiziert die eigentliche Gruppe.

Das Multicast-Ziel für ein Neighbor-Solicitation-Paket auf IPv6-Ebene ist dann ff02::1:ff2a:4242.

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

Router Solicitation – Type 133

Router-Solicitation-Schema
+ Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
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

Router-Advertisement-Schema
+ Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
0 Type Code Prüfsumme
32 Hop-Limit M O Reserviert 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. 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.

Die Router-Lifetime ist ein 16-Bit-Integer, der angibt, wie viele Sekunden ein Router in der Default Router List bleiben soll. Das Maximum sind 18,2 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

Neighbor-Solicitation-Schema
+ Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
0 Type Code Prüfsumme
32 Reserviert
64 Zieladresse
96
128
160
Optionen

Per Neighbor Solicitation (soviel wie Nachbar Anfrage) an die Link-Layer-Multicast-Adresse einer IPv6-Adresse, die aus der Multicast-Adresse der betreffenden IPv6-Adresse mittels Adress-Mapping der letzten 3 Byte xx:yy:zz der Solicited-Node Multicast Adresse auf die letzten 3 Byte der Link-Layer Adresse 33:33:FF:xx:yy:zz berechnet wird, werden IPv6-Adressen zu Link-Layer-Adressen aufgelöst. 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

Neighbor-Advertisement-Schema
+ Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
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 Link-Layer-Adresse angegeben, nach der gefragt wurde.

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

Redirect-Schema
+ Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
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.

Weblinks

  • RFC 4861 – Neighbor Discovery for IP Version 6 (IPv6)
  • RFC 3122 – Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Neighbor Discovery Protocol — (NDP) est un protocole utilisé par IPv6. Il opère en couche 3 et est responsable de la découverte des autres hôtes sur le même lien, de la détermination de leur adresse et de l identification des routeurs présents[1]. NDP fournit à IPv6 des… …   Wikipédia en Français

  • Neighbor Discovery Protocol — The Neighbor Discovery Protocol (NDP) is a protocol in the Internet Protocol Suite used with Internet Protocol Version 6 (IPv6). It operates in the Link Layer of the Internet model (RFC 1122) and is responsible for address autoconfiguration of… …   Wikipedia

  • Secure Neighbor Discovery Protocol — The SEcure Neighbor Discovery (SEND) protocol is a security extension of the Neighbor Discovery Protocol (NDP) in IPv6. SEND is defined in RFC 3971 (2005).The Neighbor Discovery Protocol (NDP) is responsible in IPv6 for discovery of other network …   Wikipedia

  • Secure Neighbor Discovery Protocol — (SEND) est une version sécurisée de Neighbor Discovery Protocol (NDP) d IPv6. SEND est défini dans la RFC 3971. Le protocole ND est responsable de la découverte d autres hôtes sur les liens locaux, de la détermination de l adresse MAC pour les… …   Wikipédia en Français

  • Neighbor Discovery — (ND) es un protocolo de IPv6, y es equivalente al protocolo Address Resolution Protocol (ARP) en IPv4, aunque también incorpora las funcionalidades de otros protocolos de esta versión. Consiste en un mecanismo con el cual un nodo que se acaba de… …   Wikipedia Español

  • Cisco Discovery Protocol — CDP (Cisco Discovery Protocol, ‘protocolo de descubrimiento de Cisco’, es un protocolo de red propietario de nivel 2, desarrollado por Cisco Systems y usado en la mayoría de sus equipos. Es utilizado para compartir información sobre otros equipos …   Wikipedia Español

  • Cisco Discovery Protocol —    Abbreviated CDP. A proprietary Cisco protocol that runs on all hardware made by Cisco, including routers, switches, access servers, and bridges.    CDP is both protocol and mediaindependent. A router running CDP can advertise its existence to… …   Dictionary of networking

  • Internet Control Message Protocol V6 — ICMPv6 (Internet Control Message Protocol Version 6) Familie: Internetprotokollfamilie Einsatzgebiet: Obligatorischer Zusatz zu IPv6, Fehlermeldungen, Diagnose, Autoconfiguration, Routing Internet Protokolle im TCP/IP Protokollstapel Internet… …   Deutsch Wikipedia

  • Internet Protocol Next Generation — IPv6 im TCP/IP‑Protokollstapel: Anwendung HTTP IMAP SMTP DNS … Transport TCP UDP …   Deutsch Wikipedia

  • Internet Protocol Version 6 — IPv6 im TCP/IP‑Protokollstapel: Anwendung HTTP IMAP SMTP DNS … Transport TCP UDP …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”