IPv6/Host/Neighbor Cache: Unterschied zwischen den Versionen
(61 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
''' | '''IPv6 Neighbor Cache''' | ||
== Beschreibung == | == Beschreibung == | ||
[[File:ipv6Abbildung4.5.png|mini|Nodes am internen Link]] | |||
* [[Router]] | |||
* [[Linux]] | |||
* [[Windows]] | |||
; Neighbor Discovery Protocol (NDP) | |||
* Über die Link-local Addresses können Nodes auf dem internen Link kommunizieren | |||
* Dies kann mit [[Echo Requests]] getestet werden | |||
; Neighbor Discovery Protocol | |||
* | |||
; | ; Link-local Addresses zu Link-layer Addresses auflösen | ||
* Unser Link internal ist ein virtuelles Ethernet, die Link-layer Addresses entsprechen in unserem Netz deshalb den bei Ethernet gebräuchlichen MAC-Adressen | Nodes waren in der Lage die Link-local Addresses ihrer Nachbarn zu gültigen Link-layer Addresses aufzulösen | ||
* Unser Link internal ist ein virtuelles Ethernet, die Link-layer Addresses entsprechen in unserem Netz deshalb den bei Ethernet gebräuchlichen MAC-Adressen | |||
* Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in [[RFC/4861|RFC 4861]] | * Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in [[RFC/4861|RFC 4861]] | ||
; | ; [[NDP]] wird über [[ICMPv6]] transportiert | ||
Unter IPv4 haben wir für die Auflösung noch ARP benutzt, dessen Ergebnisse in der ARP-Tabelle zwischengespeichert wurden | * Damit ist es von IPv6 abhängig, wenn es IPv6-Adressen auflösen soll | ||
* Wie und warum das dennoch funktioniert, werden wir uns gleich anschauen | |||
* Vorher machen wir uns aber noch mit den Neighbor Caches vertraut | |||
* Jeder Node betreibt einen Neighbor Cache in dem er die Ergebnisse der Link-layerAdressauflösungen zwischenspeichert | |||
Unter IPv4 haben wir für die Auflösung noch ARP benutzt, dessen Ergebnisse in der ARP-Tabelle zwischengespeichert wurden | |||
; | ; Gültigkeit des Neighbor Caches | ||
Einträge im Neighbor Caches sind je nach Betriebssystem und Zustand unterschiedlich lange gültig | |||
* Im Normalfall sind sie | * Im Normalfall sind sie recht kurzlebig | ||
* | * Daher sind für die folgenden Experimente mitunter mehrere Anläufe notwendig | ||
Für das Einfangen eines ganz bestimmten Zustands müssen wir zum richtigen Zeitpunkt den Neighbor Cache auslesen | |||
* Manchmal ist es daher vorteilhaft, das nächste Kommando schon in der Zwischenablage bereitzuhalten, um schneller reagieren zu können | |||
== | == Windows == | ||
[[IPv6/Host/Neighbor Cache/Windows]] | |||
== Linux == | |||
[[IPv6/Host/Neighbor Cache/Linux]] | |||
== Zustände der Einträge == | == Zustände der Einträge == | ||
{| class="wikitable big options" | {| class="wikitable big options" | ||
|+ Bedeutungen der Zustände | |||
|- | |- | ||
! Zustand !! Beschreibung | ! Zustand !! Beschreibung | ||
|- | |- | ||
| Incomplete || Es findet gerade eine Adressauflösung statt | | Incomplete || Es findet gerade eine Adressauflösung statt | ||
* Diese konnte aber noch nicht erfolgreich beendet werden | * Diese konnte aber noch nicht erfolgreich beendet werden | ||
|- | |- | ||
| Reachable || Der zugehörige Nachbar gilt als erreichbar | | Reachable || Der zugehörige Nachbar gilt als erreichbar | ||
* Entweder findet gerade eine Kommunikation mit ihm statt oder eine solche ist erst wenige Sekunden her | * Entweder findet gerade eine Kommunikation mit ihm statt oder eine solche ist erst wenige Sekunden her | ||
|- | |- | ||
| Stale || Die Erreichbarkeit des zugehörigen Nachbarn ist unbekannt | | Stale || Die Erreichbarkeit des zugehörigen Nachbarn ist unbekannt | ||
* Es fand kürzlich eine Kommunikation mit ihm statt | * Es fand kürzlich eine Kommunikation mit ihm statt | ||
* Solange keine weitere Kommunikation beabsichtigt ist, sollte auf eine erneute Adressauflösung verzichtet werden | * Solange keine weitere Kommunikation beabsichtigt ist, sollte auf eine erneute Adressauflösung verzichtet werden | ||
|- | |- | ||
| Delay || Der zugehörige Nachbar gilt nicht als erreichbar | | Delay || Der zugehörige Nachbar gilt nicht als erreichbar | ||
* Es wurde aber wieder eine Kommunikation mit ihm gestartet | * Es wurde aber wieder eine Kommunikation mit ihm gestartet | ||
* Bleibt eine Bestätigung der Erreichbarkeit durch die kommunizierende Schicht aus, wird auf IP-Schicht die Erreichbarkeit aktiv überprüft werden | * Bleibt eine Bestätigung der Erreichbarkeit durch die kommunizierende Schicht aus, wird auf IP-Schicht die Erreichbarkeit aktiv überprüft werden | ||
|- | |- | ||
| Probe || Der zugehörige Nachbar gilt nicht als erreichbar | | Probe || Der zugehörige Nachbar gilt nicht als erreichbar | ||
* Seine Erreichbarkeit wird gerade aktiv geprüft | * Seine Erreichbarkeit wird gerade aktiv geprüft | ||
* Sollte die Prüfung fehlschlagen, wird der Eintrag entfernt | * Sollte die Prüfung fehlschlagen, wird der Eintrag entfernt | ||
|} | |} | ||
== Adressauflösung mitschneiden == | == Adressauflösung mitschneiden == | ||
Dass die Neighbor Caches funktionieren haben wir gerade gesehen | ; Dass die Neighbor Caches funktionieren haben wir gerade gesehen | ||
* Auch wissen wir dank der erfolgreichen Echo Requests, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert | * Auch wissen wir dank der erfolgreichen Echo Requests, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert | ||
* Es ist nun an der Zeit, die Frage nach dem Wie zu beantworten | * Es ist nun an der Zeit, die Frage nach dem Wie zu beantworten | ||
Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel | ; Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel ''router'' | ||
* Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt | * Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt | ||
* Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab | * Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab | ||
Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface, hier eth1 | Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface, hier eth1 | ||
Um eine Adressauflösung zu erzwingen versenden wir wieder Echo Requests | Um eine Adressauflösung zu erzwingen versenden wir wieder Echo Requests | ||
user@ | user@router:~ '''ping6 -c3 fe80::200:ff:fe60:d1e%eth1''' | ||
PING | PING fe80::200:ff:fe60:d1e%eth1 (fe80::200:ff:fe60:d1e) 56 data bytes | ||
64 bytes from fe80::200:ff:fe60:d1e: icmp_seq=1 ttl=64 time=3.75 ms | |||
64 bytes from | 3 packets transmitted, 3 received, 0% packet loss, time 2005 ms | ||
3 packets transmitted , 3 received , % packet loss , time | |||
=== Neighbor Solicitation === | === Neighbor Solicitation === | ||
[[Router Solicitation]] | |||
=== Solicited Node Multicast Address === | === Solicited Node Multicast Address === | ||
[[File:ipv6SolicitedNodeMulticastAddress.png|mini|400px|Solicited Node Multicast Address]] | |||
Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen | Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen zugestellt werden | ||
* Wie genau das funktioniert werden wir in Abschnitt 4.5 Multicast lernen | |||
* Vorerst werden wir uns damit begnügen, dass es irgendwie funktioniert | |||
; Solicited Node Multicast Address | ; Solicited Node Multicast Address | ||
[[File:ipv6NeighborAdvertisement.png|mini|400px|Neighbor Advertisement]] | |||
=== Neighbor Advertisement === | === Neighbor Advertisement === | ||
[[Neighbor Advertisement]] | |||
<noinclude> | <noinclude> | ||
Zeile 257: | Zeile 100: | ||
==== Links ==== | ==== Links ==== | ||
===== Weblinks ===== | ===== Weblinks ===== | ||
[[Kategorie:IPv6/Host]] | [[Kategorie:IPv6/Host]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 23. Januar 2024, 12:14 Uhr
IPv6 Neighbor Cache
Beschreibung
- Neighbor Discovery Protocol (NDP)
- Über die Link-local Addresses können Nodes auf dem internen Link kommunizieren
- Dies kann mit Echo Requests getestet werden
- Link-local Addresses zu Link-layer Addresses auflösen
Nodes waren in der Lage die Link-local Addresses ihrer Nachbarn zu gültigen Link-layer Addresses aufzulösen
- Unser Link internal ist ein virtuelles Ethernet, die Link-layer Addresses entsprechen in unserem Netz deshalb den bei Ethernet gebräuchlichen MAC-Adressen
- Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in RFC 4861
- Damit ist es von IPv6 abhängig, wenn es IPv6-Adressen auflösen soll
- Wie und warum das dennoch funktioniert, werden wir uns gleich anschauen
- Vorher machen wir uns aber noch mit den Neighbor Caches vertraut
- Jeder Node betreibt einen Neighbor Cache in dem er die Ergebnisse der Link-layerAdressauflösungen zwischenspeichert
Unter IPv4 haben wir für die Auflösung noch ARP benutzt, dessen Ergebnisse in der ARP-Tabelle zwischengespeichert wurden
- Gültigkeit des Neighbor Caches
Einträge im Neighbor Caches sind je nach Betriebssystem und Zustand unterschiedlich lange gültig
- Im Normalfall sind sie recht kurzlebig
- Daher sind für die folgenden Experimente mitunter mehrere Anläufe notwendig
Für das Einfangen eines ganz bestimmten Zustands müssen wir zum richtigen Zeitpunkt den Neighbor Cache auslesen
- Manchmal ist es daher vorteilhaft, das nächste Kommando schon in der Zwischenablage bereitzuhalten, um schneller reagieren zu können
Windows
IPv6/Host/Neighbor Cache/Windows
Linux
IPv6/Host/Neighbor Cache/Linux
Zustände der Einträge
Zustand | Beschreibung |
---|---|
Incomplete | Es findet gerade eine Adressauflösung statt
|
Reachable | Der zugehörige Nachbar gilt als erreichbar
|
Stale | Die Erreichbarkeit des zugehörigen Nachbarn ist unbekannt
|
Delay | Der zugehörige Nachbar gilt nicht als erreichbar
|
Probe | Der zugehörige Nachbar gilt nicht als erreichbar
|
Adressauflösung mitschneiden
- Dass die Neighbor Caches funktionieren haben wir gerade gesehen
- Auch wissen wir dank der erfolgreichen Echo Requests, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert
- Es ist nun an der Zeit, die Frage nach dem Wie zu beantworten
- Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel router
- Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt
- Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab
Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface, hier eth1
Um eine Adressauflösung zu erzwingen versenden wir wieder Echo Requests
user@router:~ ping6 -c3 fe80::200:ff:fe60:d1e%eth1 PING fe80::200:ff:fe60:d1e%eth1 (fe80::200:ff:fe60:d1e) 56 data bytes 64 bytes from fe80::200:ff:fe60:d1e: icmp_seq=1 ttl=64 time=3.75 ms 3 packets transmitted, 3 received, 0% packet loss, time 2005 ms
Neighbor Solicitation
Solicited Node Multicast Address
Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen zugestellt werden
- Wie genau das funktioniert werden wir in Abschnitt 4.5 Multicast lernen
- Vorerst werden wir uns damit begnügen, dass es irgendwie funktioniert
- Solicited Node Multicast Address
Neighbor Advertisement