Fürs Internet und lokale Netzwerke ist das In­ter­net­pro­to­koll ein un­ver­zicht­ba­rer Be­stand­teil: Damit der Transport digitaler In­for­ma­tio­nen gelingt und ver­schick­te Da­ten­pa­ke­te den oder die ge­wünsch­ten Zielhosts erreichen, bedarf es aber einer Reihe zu­sätz­li­cher Hilfs- und Rou­ting­pro­to­kol­le, weshalb man auch von der In­ter­net­pro­to­koll­fa­mi­lie bzw. dem In­ter­net­pro­to­koll-Stack spricht. Während das Dynamic Host Con­fi­gu­ra­ti­on Protocol (DHCP) bei­spiels­wei­se dafür sorgt, dass Clients beim IP-Ver­bin­dungs­auf­bau die passende Netz­werk­adres­se zu­ge­wie­sen bekommen, dient das Neighbor Discovery Protocol (NDP) u. a. der ge­mein­sa­men Kom­mu­ni­ka­ti­on be­nach­bar­ter Hosts in lokalen Netzen sowie der Er­mitt­lung des Gateway-Routers.

De­fi­ni­ti­on des Neighbor Discovery Protocol

Das Neighbor Discovery Protocol (dt. „Nachbar-Ent­de­ckungs-Protokoll“) kommt in Ver­bin­dung mit der neueren Version des In­ter­net­pro­to­kolls IPv6 zum Einsatz. Sein Haupt­ein­satz­zweck besteht in der Auflösung von IPv6-Adressen in gültige MAC-Adressen, die zu­grun­de­lie­gen­den Hardware-Adressen des je­wei­li­gen Geräts. In IPv4 übernimmt diese Funktion noch das Address Re­so­lu­ti­on Protocol (ARP). Alle er­mit­tel­ten Adressen landen als In­for­ma­tio­nen ge­spei­chert im so­ge­nann­ten Neighbor-Cache. Dieser Zwi­schen­spei­cher in­for­miert die Netz­werk­teil­neh­mer nicht nur über eben jene lokalen Adressen der be­nach­bar­ten Clients, sondern versorgt sie auch mit zu­sätz­li­chen In­for­ma­tio­nen, die bei­spiels­wei­se für die Er­reich­bar­keits­prü­fung benötigt werden.

Ferner ist das NDP wie bereits erwähnt auch maß­geb­lich an der Zuordnung des Standard-Gateways beteiligt. Mit der Hin­zu­nah­me des Router Ad­ver­ti­se­ment Protocol (RA) lassen sich sowohl der Standard-Router als auch die gültigen Netz­prä­fi­xe – zwei ele­men­ta­re Parameter der Netz­werk­kon­fi­gu­ra­ti­on – fest­stel­len. Schließ­lich fungiert das Netz­werk­pro­to­koll, das Daten einzig innerhalb eines Netzwerks aus­tauscht, auch als Un­ter­stüt­zungs­pro­to­koll für die dy­na­mi­sche Adress­kon­fi­gu­ra­ti­on. Dieser Prozess ist auch als Stateless Automatic Address Con­fi­gu­ra­ti­on (SLAAC) bekannt.

Wie funk­tio­niert NDP?

Jedes Gerät, das das Neighbor Discovery Protocol für die Kom­mu­ni­ka­ti­on im Netzwerk hin­zu­zieht, verwaltet seinen eigenen Neighbor-Cache. In diesem sind alle ihm bekannten Geräte des Netzes auf­ge­lis­tet und anhand ihrer ein­deu­ti­gen Ge­rä­te­adres­se (MAC) ve­ri­fi­zier­bar. Dabei ist er­sicht­lich, ob die zwi­schen­ge­spei­cher­te Adresse zu einem einfachen Client oder bei­spiels­wei­se einem Router gehört. Der Neighbor-Cache ist al­ler­dings nicht der einzige, sondern lediglich einer von vier Zwi­schen­spei­chern, die den Funk­ti­ons­wei­sen des NDP-Pro­to­kolls dienen. Bei den drei anderen Kom­po­nen­ten, die ebenfalls von jedem Gerät einzeln ge­hand­habt werden, handelt es sich um die folgenden:

  • De­sti­na­ti­on-Cache: Der „Ziel“-Cache umfasst Einträge über alle Hosts im Netzwerk, an die bereits Da­ten­pa­ke­te ver­schickt wurden. Jeder dieser Einträge verweist wiederum per Link auf eine Adresse im Neighbor-Cache, die beim Ver­schi­cken von Da­ten­pa­ke­ten an den ge­wünsch­ten Zielhost als nächster Hop (Zwi­schen­sta­ti­on) verwendet werden soll.
  • Präfix-Cache: Im Präfix-Cache bzw. der Prefix List werden alle Präfixe verwaltet, die für das Netzwerk gelten, in dem sich der Client befindet. Diese Auf­lis­tung ist ei­ner­seits notwendig, weil IPv6 Mul­ti­ho­ming – also die Er­reich­bar­keit des Netzes über zwei un­ter­schied­li­che Provider – un­ter­stützt und an­de­rer­seits die Auf­split­tung des Adress­raums in un­ter­schied­li­che Präfixe zulässt. Mithilfe der Einträge im Präfix-Cache stellt NDP sicher, dass der Zielhost sich im gleichen Subnetz befindet. Jedes Präfix mit Ausnahme der MAC-Adresse (auch Link-Layer-Adresse) besitzt eine fest­ge­leg­te Gül­tig­keits­dau­er, sodass der Cache immer auf dem aktuellen Stand bleibt.
  • Default Router List: Die Default Router List umfasst alle bekannten Router, die mit dem Gerät re­gel­mä­ßig in Kontakt treten. Jeder Eintrag in dieser Liste ist dabei mit einem Eintrag im Neighbor-Cache verknüpft. Dass nur aktive Router gelistet sind, liegt an der Tatsache, dass für alle Vertreter au­to­ma­tisch eine Ab­lauf­dau­er definiert wird. Eine Ver­län­ge­rung bzw. Auf­fri­schung erfolgt nur bei ent­spre­chen­der Rück­mel­dung des Routers.

Um die ver­schie­de­nen Caches für das NDP zu erstellen, kommt ein anderes In­ter­net­pro­to­koll zum Einsatz, das als ICMPv6 („Internet Control Message Protocol for the Internet Protocol Version 6“) bekannt ist.

Auf diesen fünf ICMPv6-Typen baut NDP auf

ICMPv6 dient in der aktuellen Version der In­ter­net­pro­to­koll­fa­mi­lie für ge­wöhn­lich als Über­mitt­ler für Fehler- und In­for­ma­ti­ons­mel­dun­gen, wird aber vom Neighbor Discovery Protocol in Form von fünf ver­schie­de­nen ICMPv6-Typen ebenfalls in Anspruch genommen. Je nach Typ kommen bestimmte Be­nach­rich­ti­gun­gen zum Einsatz, mit deren Hilfe die Zwi­schen­spei­cher bzw. Listen gebildet werden.

Typ 134: Router Ad­ver­ti­se­ment

Router senden in re­gel­mä­ßi­gen Abständen so­ge­nann­te Router Ad­ver­ti­se­ments – ICMPv6-Nach­rich­ten des Typs 134 – aus, um die Teil­neh­mer des Netzwerks über ihre An­we­sen­heit in Kenntnis zu setzen. Sie verteilen so u. a. ihre Routing-In­for­ma­tio­nen und die not­wen­di­gen Parameter für die au­to­ma­ti­sche IP-Kon­fi­gu­ra­ti­on. Ziel der Nachricht ist für ge­wöhn­lich der Standard-Multicast-Adress­be­reich „ff02::01“, über den alle Hosts im re­le­van­ten Gül­tig­keits­be­reich an­ge­spro­chen werden. Auf diesem Weg erhalten sie auch die Adresse des Routers (Standard-Gateway) und das globale Präfix. Das Schema einer Routing Ad­ver­ti­se­ment sieht fol­gen­der­ma­ßen aus:

Dieser Nach­rich­ten­typ besitzt also eine Stan­dard­län­ge von 128 Bit, wobei zu­sätz­li­che Bits für Optionen hin­zu­kom­men können. Gültige Optionen sind dabei die MAC-Adresse des Routers, die Angabe über die maximale Pa­ket­grö­ße („Maximum Trans­mis­si­on Unit“) sowie sämtliche re­le­van­ten Präfix-In­for­ma­tio­nen.

Das Feld „Typ“ wird ent­spre­chend der Nachricht auf 134 gesetzt, das Feld „Code“ immer auf 0. Es folgen 16 Bit ICMP-Prüfsumme und eine 8 Bit lange Angabe über das Hop-Limit, die die vom Router emp­foh­le­nen Zwi­schen­sta­tio­nen enthalten kann.

Es folgen Ein­zel­bits, die Auf­schluss darüber geben,

  • ob IP-Adressen über dy­na­mi­sches DHCPv6 bezogen werden können (M)
  • und ob andere Adress­in­for­ma­tio­nen über dy­na­mi­sches DHCPv6 bezogen werden können (O).

Das Feld „Re­ser­viert“ bleibt unbenutzt und wird vom Empfänger ignoriert. Ferner enthält die Router Ad­ver­ti­se­ment Zah­len­an­ga­ben über

  • die Zeit in Sekunden, die der Router in der Default Router List verweilen soll (Router-Le­bens­dau­er; 16-Bit-Integer, maximal 65535);
  • die Zeit in Mil­li­se­kun­den, die eine Adresse im Neighbor-Cache nach dem Fest­stel­len der Er­reich­bar­keit noch verfügbar sein soll (Er­reich­bar­keits-Time-out; 32-Bit-Integer, maximal ca. 50 Tage)
  • sowie die Zeit in Mil­li­se­kun­den, nach der erneut eine Neighbor-So­li­ci­ta­ti­on-Nachricht (s. u.) gesendet werden soll (Auf­lö­sungs-Time-out; 32-Bit-Integer).

Typ 133: Router So­li­ci­ta­ti­on

Router So­li­ci­ta­ti­ons sind Nach­rich­ten, mit denen ein Host alle Router im Netzwerk dazu auf­for­dern kann, die an­ge­spro­che­nen Router Ad­ver­ti­se­ments zu ver­schi­cken. Diese antworten dann mit der Nachricht des Typs 134 entweder aus­schließ­lich an den an­fra­gen­den Host (Unicast) oder an alle Netz­werk­teil­neh­mer (Multicast). Mithilfe dieses Nach­rich­ten­typs muss ein Host, bei­spiels­wei­se bei einer Neu­ver­bin­dung, nicht auf die au­to­ma­ti­sche Mit­tei­lung der Netzwerk-Router warten. Diese Art von ICMPv6-Nach­rich­ten ist fol­gen­der­ma­ßen struk­tu­riert:

Der Standard-Aufbau einer NDP-ICMPv6-Nachricht des Typs 133 sieht also eine Min­dest­län­ge von 64 Bit vor. „Typ“ erhält den Router-So­li­ci­ta­ti­on-Wert 133 zu­ge­ord­net, während „Code“ wiederum auf 0 gesetzt wird. Die zwei weiteren Pflicht­fel­der sind die ICMP-Prüfsumme (16 Bit) und ein 32 Bit langes „Re­ser­viert“-Feld, das unbenutzt bleibt.

Die einzige mögliche Option, die der Nachricht wahlweise angehängt werden kann, ist die MAC-Adresse des Senders.

Typ 135: Neighbor So­li­ci­ta­ti­on

Netzwerk-Clients ver­schi­cken Neighbor So­li­ci­ta­ti­ons, um die MAC-Adresse des Zielhosts in Erfahrung zu bringen, und über­mit­teln dabei im Gegenzug optional ihre eigene Adresse. ICMPv6-Nach­rich­ten dieser Art können Geräte entweder via Multicast über­tra­gen, wenn sie eine Adresse ermitteln wollen, oder per Unicast, falls nur die Er­reich­bar­keit eines Nachbars überprüft werden soll.

Wie alle ICMPv6-Nach­rich­ten­ty­pen beginnen auch Neighbor So­li­ci­ta­ti­ons mit 8 Bit Ty­pen­kenn­zeich­nung – in diesem Fall hat „Typ“ den Wert 135. Es folgen der 8 Bit lange Code, der auf 0 gesetzt wird, und 16 Bit Prüfsumme. Das „Re­ser­viert“-Feld bleibt, wie bei den bisher vor­ge­stell­ten Nach­rich­ten auch, unbenutzt.

Mit 128 Bit macht die an­vi­sier­te IP-Adresse, die keine Multicast-Adresse sein darf, den Großteil der Nachricht aus – bei einer gesamten Länge von min­des­tens 192 Bit. Auch dieser, für das Neighbor Discovery Protocol ent­schei­den­de Nach­rich­ten­typ erlaubt als optionale Zu­satz­an­ga­be die MAC-Adresse des Senders.

Typ 136: Neighbor Ad­ver­ti­se­ment

Netz­werk­ge­rä­te ver­schi­cken Neighbor Ad­ver­ti­se­ments ei­ner­seits als Reaktion auf an­fra­gen­de Neighbor So­li­ci­ta­ti­ons, an­de­rer­seits aber auch un­auf­ge­for­dert, um andere Teil­neh­mer über Än­de­run­gen in der Adress­kon­fi­gu­ra­ti­on in Kenntnis zu setzen. Der Aufbau solcher Nach­rich­ten sieht fol­gen­der­ma­ßen aus:

Die ersten 32 Bit der stan­dard­mä­ßig 192 Bit langen Neighbor Ad­ver­ti­se­ments ori­en­tie­ren sich am typischen ICMPv6-Nach­rich­ten-Schema: Für „Typ“ (136) und „Code“ (0) werden jeweils 8 Bit re­ser­viert, woraufhin die 16 Bit lange Prüfsumme folgt. Drei einzelne Bits setzen den Nach­rich­ten­code fort, für die folgende Be­din­gun­gen gelten:

  • R: Das „R“-Bit wird gesetzt, wenn die Nachricht von einem Router geschickt wird.
  • S: Enthält die Nachricht das „S“-Bit, handelt es sich bei dieser um eine Antwort auf eine Unicast-Neighbor-So­li­ci­ta­ti­on, mit der dem an­fra­gen­den Netz­werk­teil­neh­mer die Er­reich­bar­keit bestätigt wird. In Antworten auf Multicast-Anfragen oder in eigens in­iti­ier­ten Neighbor Ad­ver­ti­se­ments darf dieses Bit nicht gesetzt werden.
  • O: Das „O“-Flag weist den Empfänger der Nachricht an, den exis­tie­ren­den Cache-Eintrag zu über­schrei­ben.

Die an­schlie­ßen­den 29 Bit sind nach dem bekannten Muster re­ser­viert, bleiben also unbenutzt, werden mit 0 in­itia­li­siert und vom Empfänger ignoriert. Mit der 128 Bit langen Ziel­adres­se schließt sich nun der Hauptteil der Nachricht an: Dabei handelt es sich entweder um die IP-Adresse, von der die Neighbor Ad­ver­ti­se­ment an­ge­for­dert worden ist, oder aber um die Adresse, für die eine neue MAC-Adresse bekannt gegeben werden soll. Als Option kann der Router wiederum seine eigene Adresse nennen; dies ist ob­li­ga­to­risch, wenn er auf eine Multicast-Anfrage antwortet.

Typ 137: Redirect

Router haben die Mög­lich­keit, Netz­werk­hosts über einen besseren ersten Hop auf dem Weg zu be­stimm­ten Ziel­adres­sen zu in­for­mie­ren. Zu diesem Zweck senden sie NDP-ICMPv6-Redirects, die sich durch folgendes Schema aus­zeich­nen:

Mit einer Min­dest­län­ge von 320 Bit sind Redirects die größten ICMPv6-Nach­rich­ten, die für die Funk­ti­ons­wei­se des Neighbor Discovery Protocol von Bedeutung sind. Dem typischen Aufbau mit Bitfolgen für die Ty­pen­kenn­zeich­nung (137), den Code (0), die Prüfsumme und ein un­be­nutz­tes „Re­ser­viert“-Feld (32 Bit) folgen zunächst die Adresse des emp­foh­le­nen Hops und an­schlie­ßend die Adresse, für die diese Umleitung empfohlen wird (beide 128 Bit). Optional kann das Nach­rich­ten­pa­ket die MAC-Adresse des Ziels sowie den Header des um­ge­lei­te­ten Pakets enthalten.

Die Aufgaben und Mög­lich­kei­ten von NDP im Überblick

So viel zu den Caching-Me­cha­nis­men und Kom­mu­ni­ka­ti­ons­mit­teln des Neighbor Discovery Protocol in Kom­bi­na­ti­on mit dem Internet Control Message Protocol. Die folgenden NDP-Szenarien ver­deut­li­chen das Zu­sam­men­spiel und die Funk­ti­ons­wei­se der beiden Pro­to­kol­le:

  • Router und Netz­werk­prä­fix erkennen: Alle Router in einem Netz über­mit­teln in re­gel­mä­ßi­gen Abständen Router Ad­ver­ti­se­ments via Multicast an alle Netz­werk­teil­neh­mer. Diese enthalten u. a. In­for­ma­tio­nen wie die Adresse, das Netz­werk­prä­fix und das Routing, die dazu dienen, die Default Router List sowie die Prefix List zu erstellen. Anhand dieser Einträge ermitteln Clients dann Standard-Gateway und Sub­netz­mas­ke. Da alle Einträge nur über eine begrenzte Gül­tig­keits­dau­er verfügen, bleiben nur aktive Router ein­ge­tra­gen. Die Ad­ver­ti­se­ments der Router können mithilfe von Router So­li­ci­ta­ti­ons auch erzwungen werden.
  • Wichtige Parameter für die Pa­ket­über­mitt­lung ermitteln: Router Ad­ver­ti­se­ments können optional auch In­for­ma­tio­nen darüber enthalten, welche Parameter die teil­neh­men­den Clients bei der Über­mitt­lung von Paketen an­zu­wen­den haben. Dabei kann es sich um ganz konkrete Angaben wie die maximale Pa­ket­grö­ße, aber auch um weit­grei­fen­de In­ter­net­pa­ra­me­ter wie das fest­ge­schrie­be­ne Limit von Zwi­schen­sta­tio­nen für aus­ge­hen­de Pakete handeln.
  • Den nächsten Hop fest­stel­len: Soll ein Paket versendet werden, sorgt das NDP-Protokoll dafür, dass überprüft wird, ob der De­sti­na­ti­on-Cache bereits einen ent­spre­chen­den Eintrag für den an­vi­sier­ten Zielhost enthält. Ist dies nicht der Fall, ermittelt das Protokoll die nächste Zwi­schen­sta­ti­on anhand der In­for­ma­tio­nen aus Prefix List und Default Router List. An­schlie­ßend wird der neue Kennt­nis­stand im De­sti­na­ti­on-Cache ge­spei­chert, wodurch er bei einer erneuten Anfrage sofort verfügbar ist. Existiert für den neu an­ge­leg­ten Eintrag noch kein Äqui­va­lent im Neighbor-Cache, wird dieser au­to­ma­tisch erzeugt und danach auch die Adress­auf­lö­sung initiiert.
  • IP- in MAC-Adresse auflösen: Um die MAC-Adresse eines be­stimm­ten Hosts im Netzwerk zu ermitteln, erhält dieser eine Neighbor So­li­ci­ta­ti­on per IPv6-Multicast an seine eigene, ganz spe­zi­fi­sche Multicast-Adresse. Auf diese ein­zig­ar­ti­ge Adress­kom­bi­na­ti­on kann aus­schließ­lich der Host antworten. Er ver­schickt als Antwort eine Neighbor-Ad­ver­ti­se­ment-Nachricht mit der MAC-Adresse, die vom Aus­gangs­cli­ent im Neighbor-Cache ge­spei­chert wird. Das Neighbor Discovery Protocol wird auf diese Weise sowohl genutzt, um Nachbarn zu iden­ti­fi­zie­ren, als auch, um Router zu bestimmen.
  • Nicht­er­reich­bar­keit eines Nachbarn erkennen: Alle MAC-Adressen, die im Neighbor-Cache ge­spei­chert sind, müssen re­gel­mä­ßig auf ihre Ak­tua­li­tät geprüft werden. Solange von einer ein­ge­tra­ge­nen Adresse TCP/IP-Daten bzw. -Emp­fangs­be­stä­ti­gun­gen gesendet werden, gilt diese lo­gi­scher­wei­se als aktiv und der sich dahinter ver­ber­gen­de Host als er­reich­bar. Hat seit längerer Zeit kein Da­ten­aus­tausch mit dem be­tref­fen­den Gerät statt­ge­fun­den und ist die Gül­tig­keits­dau­er des Eintrags ab­ge­lau­fen, wird dieser als veraltet markiert. Um nun zu über­prü­fen, ob der jeweilige Host tat­säch­lich nicht mehr er­reich­bar ist, wird zunächst ein ge­wöhn­li­ches Da­ten­pa­ket an die ein­ge­tra­ge­ne Adresse geschickt. Bleibt eine Antwort aus, wird ein letzter Test via Unicast-Neighbor-So­li­ci­ta­ti­on gestartet. Bestätigt dieser die Nicht­er­reich­bar­keit, ver­schwin­det der Eintrag aus dem Neighbor-Cache.
  • Doppelte Adressen erkennen: Hat sich ein Gerät per Au­to­kon­fi­gu­ra­ti­on eine Adresse geholt, stuft NDP diese zunächst als „tentative“ (dt. „vorläufig“) ein. Bevor die Adresse endgültig aktiv wird, muss sie nämlich zunächst als eindeutig ein­ge­stuft werden. Zu diesem Zweck sendet der neu ver­bun­de­ne Netz­werk­cli­ent eine Neighbor So­li­ci­ta­ti­on an die vor­läu­fi­ge Adresse, die er selbst nutzen möchte – mit vor­über­ge­hend un­spe­zi­fi­scher Ab­sen­der­adres­se. Nutzt ein anderer Host die Adresse bereits, antwortet er mit einer Neighbor-Ad­ver­ti­se­ment-Nachricht an die all­ge­mei­ne Multicast-Adresse. So erhält diese auch der prüfende Client, woraufhin er eine neue Adresse bezieht.
  • Über Redirect-Optionen in­for­mie­ren: Das Neighbor Discovery Protocol gibt Routern mit der Redirect-Nachricht die Mög­lich­keit, den Weg von Da­ten­pa­ke­ten zu den an­ge­streb­ten Zielhosts zu op­ti­mie­ren. Wie oben bereits auf­ge­führt, können diese mithilfe des ICMPv6-Typs 137 Emp­feh­lun­gen für besser geeignete Zwi­schen­sta­tio­nen aus­spre­chen, die im De­sti­na­ti­on-Cache auf­ge­nom­men werden.

So in­spi­zie­ren Sie den Neighbor-Cache auf Ihrem System

Egal, ob Windows, macOS, Linux, iOS oder Android – moderne Be­triebs­sys­te­me un­ter­stütz­ten IPv6 und sind damit auch in der Lage, in Ethernet-basierten Netz­wer­ken auf die Mög­lich­kei­ten von NDP zu­rück­zu­grei­fen. Mithilfe des ent­spre­chen­den Befehls können Sie über die jeweilige Kom­man­do­zei­le jederzeit den Neighbor-Cache aufrufen, der für Ihr Gerät erstellt worden ist.

Unter Windows listen Sie Ihre Netz­werk­nach­barn bei­spiels­wei­se mithilfe des Programms netsh (network shell) und dem folgenden Kommando auf:

netsh interface ipv6 show neighbors

Mit den meisten Linux-Dis­tri­bu­tio­nen gelingt die Einsicht in den Neighbor-Cache mithilfe des Tools iproute2 und diesem Befehl:

ip -6 neigh

Unter macOS und anderen BSD-basierten Dis­tri­bu­tio­nen rufen Sie die Cache-Einträge fol­gen­der­ma­ßen auf:

ndp -a
Zum Hauptmenü