|
|
(102 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''ICMPv6''' - [[Internet Control Message Protocol]] für [[IPv6]] | | '''IPv6/ICMP''' - ICMPv6 ([[Internet Control Message Protocol]] für [[IPv6]]) |
|
| |
|
| == Beschreibung == | | == Beschreibung == |
| {| class="wikitable" style="float:right; margin-left: 10px;" | | {| class="wikitable float" |
| |----- | | |- |
| ! style="background:#C0C0FF;" colspan="2"| ICMPv6 (Internet Control Message Protocol Version 6) | | ! style="background:#C0C0FF;" colspan="2"| ICMPv6 (Internet Control Message Protocol Version 6) |
| |----- | | |- |
| | align="left" | '''Familie''' | | | align="left" | '''Familie''' |
| | align="left" | [[Internetprotokolle]] | | | align="left" | [[Internetprotokolle]] |
| |----- | | |- |
| | align="left" | '''Einsatzgebiet''' | | | align="left" | '''Einsatzgebiet''' |
| | align="left" style="width:210px;"| Fehlermeldungen, Diagnose, Autoconfiguration, Routing | | | align="left" style="width:210px;"| Fehlermeldungen, Diagnose, Autoconfiguration, Routing |
| |----- | | |- |
| | align="center" colspan="2" | | | | align="center" colspan="2" | |
| {| border="0" cellspacing="3" | | {| border="0" cellspacing="3" |
| |+ '''Internet-Protokolle im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]''' | | |+ '''Internet-Protokolle im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]''' |
| |----- | | |- |
| | rowspan="2" align="center" bgcolor="#FFCC99" | '''Internet''' | | | rowspan="2" align="center" bgcolor="#FFCC99" | '''Internet''' |
| | colspan="5" align="center" bgcolor="#9999FF" | '''ICMPv6''' | | | colspan="5" align="center" bgcolor="#9999FF" | '''ICMPv6''' |
| |----- | | |- |
| | colspan="5" align="center" bgcolor="#EEEEFF" | [[IPv6]] | | | colspan="5" align="center" bgcolor="#EEEEFF" | [[IPv6]] |
| |----- | | |- |
| | rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang'' | | | rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang'' |
| | rowspan="2" align="center" bgcolor="#EEEEEE" | [[Ethernet]] | | | rowspan="2" align="center" bgcolor="#EEEEEE" | [[Ethernet]] |
Zeile 28: |
Zeile 28: |
| | rowspan="2" align="center" bgcolor="#EEEEEE" | … | | | rowspan="2" align="center" bgcolor="#EEEEEE" | … |
| |} | | |} |
| |-----
| |
| | align="left" | '''Standards'''
| |
| | align="left" |
| |
| [https://www.rfc-editor.org/rfc/rfc8200.html RFC 8200] (2017)
| |
| [https://www.rfc-editor.org/rfc/rfc4443 RFC 4443] (2006)
| |
| |} | | |} |
|
| |
|
Zeile 39: |
Zeile 34: |
| * Zusätzlich findet es aber noch im [[Neighbor Discovery Protocol]], dem Ersatz des [[Address Resolution Protocol]], Verwendung | | * Zusätzlich findet es aber noch im [[Neighbor Discovery Protocol]], dem Ersatz des [[Address Resolution Protocol]], Verwendung |
|
| |
|
| | ; ICMPv6 zwingend notwendig |
| Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig | | Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig |
| * Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert (vgl. RFC 4890) | | * Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert (vgl. RFC 4890) |
Zeile 46: |
Zeile 42: |
|
| |
|
| == Header == | | == Header == |
| ; Das Feld ''Type'' gibt die Klasse der ICMP-Nachricht an, welche mit dem Feld ''Code'' genauer spezifiziert werden kann
| | {| class="wikitable float small" cellpadding="2" |
| * Die Prüfsumme wird zur Verifizierung der Gültigkeit des ICMPv6-Pakets benutzt
| |
| * Der restliche Inhalt der ICMP-Nachricht wird durch den jeweiligen Typ bestimmt
| |
| * Bei Fehlernachrichten wird nach den möglichen zusätzlichen Feldern immer noch so viel wie möglich vom fehlerverursachenden Paket angehängt
| |
| | |
| {| class="wikitable float-right" style="font-size:smaller;" cellpadding="2" | |
| |+ ICMPv6 Header | | |+ ICMPv6 Header |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 63: |
Zeile 53: |
| | colspan="32" | ICMPv6-Nachricht … | | | colspan="32" | ICMPv6-Nachricht … |
| |} | | |} |
| | |
| | Das Feld ''Type'' gibt die Klasse der ICMP-Nachricht an |
| | * welche mit dem Feld ''Code'' genauer spezifiziert werden kann |
| | Die Prüfsumme wird zur Verifizierung der Gültigkeit des ICMPv6-Pakets benutzt |
| | |
| | Der restliche Inhalt der ICMP-Nachricht wird durch den jeweiligen Typ bestimmt |
| | * Bei Fehlernachrichten wird nach den möglichen zusätzlichen Feldern immer noch so viel wie möglich vom fehlerverursachenden Paket angehängt |
|
| |
|
| === Prüfsumme === | | === Prüfsumme === |
| {| class="wikitable float-right" style="font-size:smaller;text-align:center;" cellpadding="2" | | {| class="wikitable small float" cellpadding="2" |
| |+ Prüfsummen-Schema | | |+ Prüfsummen-Schema |
|
| |
| |- | | |- |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 117: |
Zeile 113: |
|
| |
|
| == Nachrichten-Typen == | | == Nachrichten-Typen == |
| ; Die Nachrichten-Typen werden in zwei Gruppen unterteilt
| | {| class="wikitable options big" |
| * Die ersten 128 Typen (0–127) mit dem [[Bitwertigkeit|höchstwertigen Bit]] (engl. ''most significant bit'') auf 0, sind Fehlernachrichten
| |
| * Die zweiten 128 Typen (128–255), mit dem höchstwertigen Bit auf 1, sind Informationsnachrichten
| |
| | |
| === Fehlernachrichten ===
| |
| {|
| |
| | style="vertical-align:top;" |
| |
| {| class="wikitable" | |
| ! class="hintergrundfarbe6"| Type
| |
| ! class="hintergrundfarbe6"| Beschreibung
| |
| ! class="hintergrundfarbe6"| RFC
| |
| |- | | |- |
| |1
| | ! Gruppe !! TType !! Beschreibung |
| |Destination Unreachable
| |
| |RFC 4443
| |
| |- | | |- |
| |2 | | | Fehlernachrichten || 0–127 || mit dem [[Bitwertigkeit|höchstwertigen Bit]] (engl. ''most significant bit'') auf 0, sind Fehlernachrichten |
| |Packet Too Big | |
| |RFC 4443 | |
| |- | | |- |
| |3 | | | Informationsnachrichten || 128–255 || mit dem höchstwertigen Bit auf 1, sind Informationsnachrichten |
| |Time Exceeded | |
| |RFC 4443 | |
| |- | |
| |4 | |
| |Parameter Problem
| |
| |RFC 4443
| |
| |-
| |
| |100
| |
| |Private experimentation
| |
| |
| |
| |-
| |
| |101
| |
| |Private experimentation
| |
| |} | | |} |
|
| |
|
| === Informationsnachrichten === | | == Fehlernachrichten == |
| {| class="wikitable" | | {| class="wikitable big options col1center" |
| ! class="hintergrundfarbe6"| Type | | ! class="hintergrundfarbe6"| Type |
| ! class="hintergrundfarbe6"| Beschreibung | | ! class="hintergrundfarbe6"| Beschreibung |
| ! class="hintergrundfarbe6"| RFC | | ! class="hintergrundfarbe6"| RFC |
| |- | | |- |
| |128 | | |1 || [[#Destination Unreachable|Destination Unreachable]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] |
| |Echo Request
| |
| |RFC 4443
| |
| |-
| |
| |129
| |
| |Echo Reply
| |
| |RFC 4443
| |
| |-
| |
| |130
| |
| |Multicast Listener Query
| |
| |RFC 2710 und RFC 3810
| |
| |-
| |
| |131
| |
| |Version 1 Multicast Listener Report
| |
| |RFC 2710 | |
| |- | |
| |132 | |
| |Multicast Listener Done | |
| |RFC 2710
| |
| |- | |
| |133
| |
| |Router Solicitation
| |
| |RFC 4861
| |
| |- | | |- |
| |134 | | |2 || [[#Packet Too Big|Packet Too Big]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] |
| |Router Advertisement | |
| |RFC 4861 | |
| |- | | |- |
| |135 | | |3 || [[#Time Exceeded|Time Exceeded]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] |
| |Neighbor Solicitation | |
| |RFC 4861 | |
| |- | | |- |
| |136 | | |4 || [[#Parameter Problem|Parameter Problem]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] |
| |Neighbor Advertisement | |
| |RFC 4861 | |
| |- | |
| |137
| |
| |Redirect
| |
| |RFC 4861
| |
| |-
| |
| |138
| |
| |Router Renumbering
| |
| |RFC 2894
| |
| |-
| |
| |139
| |
| |ICMP Node Information Query
| |
| |RFC 4620
| |
| |-
| |
| |140
| |
| |ICMP Node Information Response
| |
| |RFC 4620
| |
| |-
| |
| |141
| |
| |Inverse Neighbor Discovery Solicitation Message
| |
| |RFC 3122
| |
| |-
| |
| |142
| |
| |Inverse Neighbor Discovery Advertisement Message
| |
| |RFC 3122
| |
| |-
| |
| |143
| |
| |Version 2 Multicast Listener Report
| |
| |RFC 3810
| |
| |-
| |
| |144
| |
| |Home Agent Address Discovery Request Message
| |
| |RFC 3775
| |
| |-
| |
| |145
| |
| |Home Agent Address Discovery Reply Message
| |
| |RFC 3775
| |
| |-
| |
| |146
| |
| |Mobile Prefix Solicitation
| |
| |RFC 3775
| |
| |-
| |
| |147
| |
| |Mobile Prefix Advertisement
| |
| |RFC 3775
| |
| |-
| |
| |148
| |
| |Certification Path Solicitation Message
| |
| |RFC 3971
| |
| |-
| |
| |149
| |
| |Certification Path Advertisement Message
| |
| |RFC 3971
| |
| |-
| |
| |150
| |
| |ICMP messages utilized by experimental mobility protocols such as Seamoby
| |
| |RFC 4065
| |
| |-
| |
| |151
| |
| |Multicast Router Advertisement
| |
| |RFC 4286
| |
| |- | |
| |152
| |
| |Multicast Router Solicitation
| |
| |RFC 4286
| |
| |-
| |
| |153
| |
| |Multicast Router Termination
| |
| |RFC 4286
| |
| |-
| |
| |155
| |
| |RPL Control Message
| |
| |[https://www.rfc-editor.org/rfc/rfc6550.html RFC 6550] | |
| |-
| |
| |200
| |
| |Private experimentation
| |
| |
| |
| |-
| |
| |201
| |
| |Private experimentation
| |
| |
| |
| |-
| |
| |255
| |
| |Reserved for expansion of ICMPv6 informational messages
| |
| |
| |
| |}
| |
| |} | | |} |
|
| |
|
| === Destination Unreachable – Type 1 === | | ==== Destination Unreachable ==== |
|
| |
|
| {| class="wikitable float"cellpadding="2" | | {| class="wikitable float small" |
| |+ Destination-Unreachable-Schema | | |+ Destination-Unreachable-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 298: |
Zeile 153: |
| | colspan="32" | Fehlerhaftes Paket | | | colspan="32" | Fehlerhaftes Paket |
| |} | | |} |
| | | ; Destination Unreachable - Type 1 |
| ''Destination-Unreachable''-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte | | ''Destination-Unreachable''-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte |
| * Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine ''Destination Unreachable'' versandt werden | | * Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine ''Destination Unreachable'' versandt werden |
Zeile 309: |
Zeile 164: |
| Wenn ein ''Destination Unreachable'' empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden | | Wenn ein ''Destination Unreachable'' empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden |
|
| |
|
| === Packet Too Big – Type 2 === | | ==== Packet Too Big ==== |
| | | {| class="wikitable float small" |
| {| class="wikitable float" cellpadding="2" | |
| |+ Packet-Too-Big-Schema | | |+ Packet-Too-Big-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 327: |
Zeile 180: |
| |} | | |} |
|
| |
|
| | ; Packet Too Big - Type 2 |
| Eine ''Packet-Too-Big''-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale [[Maximum Transmission Unit|MTU]] des Links, über den es versendet werden soll. ''Packet-Too-Big''-Nachrichten werden vom [https://de.wikipedia.org/wiki/Path_MTU_Discovery Path MTU Discovery] gebraucht, um die pfadabhängige MTU zu ermitteln | | Eine ''Packet-Too-Big''-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale [[Maximum Transmission Unit|MTU]] des Links, über den es versendet werden soll. ''Packet-Too-Big''-Nachrichten werden vom [https://de.wikipedia.org/wiki/Path_MTU_Discovery Path MTU Discovery] gebraucht, um die pfadabhängige MTU zu ermitteln |
|
| |
|
Zeile 333: |
Zeile 187: |
| Wenn ein ''Packet Too Big'' empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden | | Wenn ein ''Packet Too Big'' empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden |
|
| |
|
| === Time Exceeded – Type 3 === | | ==== Time Exceeded ==== |
| {| class="wikitable float" cellpadding="2" | | {| class="wikitable float small" |
| |+ Time-Exceeded-Schema | | |+ Time-Exceeded-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"|0 | | ! class="hintergrundfarbe6" colspan="1"|0 |
Zeile 350: |
Zeile 203: |
| |} | | |} |
|
| |
|
| | ; Time Exceeded - Type 3 |
| Wenn ein Router ein Paket mit einem [[Hop (Netzwerktechnologie)|Hop]]-Limit von 0 erhält, oder den [[Time to Live|Time-to-Live]]-Wert auf 0 reduziert, muss er das Paket verwerfen und ein ''Time Exceeded'' mit Code 0 an den Absender versenden | | Wenn ein Router ein Paket mit einem [[Hop (Netzwerktechnologie)|Hop]]-Limit von 0 erhält, oder den [[Time to Live|Time-to-Live]]-Wert auf 0 reduziert, muss er das Paket verwerfen und ein ''Time Exceeded'' mit Code 0 an den Absender versenden |
| * Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit | | * Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit |
Zeile 355: |
Zeile 209: |
| Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein ''Time Exceeded'' mit Code 1 versendet werden | | Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein ''Time Exceeded'' mit Code 1 versendet werden |
|
| |
|
| === Parameter Problem – Type 4 === | | ==== Parameter Problem ==== |
| | | {| class="wikitable float small" |
| {| class="wikitable float-right" style="font-size:smaller;" cellpadding="2" | |
| |+ Parameter-Problem-Schema | | |+ Parameter-Problem-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 373: |
Zeile 225: |
| |} | | |} |
|
| |
|
| | ; Parameter Problem - Type 4 |
| Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine ''Parameter-Problem''-Nachricht verschicken | | Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine ''Parameter-Problem''-Nachricht verschicken |
|
| |
|
| Mit dem Code wird dabei die Art des Problems genauer beschrieben | | Mit dem Code wird dabei die Art des Problems genauer beschrieben |
|
| |
|
| {| class="wikitable" | | {| class="wikitable big options col1center" |
| | 0 | | | 0 |
| | Fehlerhaftes Header-Feld gefunden | | | Fehlerhaftes Header-Feld gefunden |
Zeile 393: |
Zeile 246: |
| Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist | | Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist |
|
| |
|
| === Echo Request – Type 128 === | | == Informationsnachrichten == |
| | {| class="wikitable big options" |
| | ! class="hintergrundfarbe6"| Type |
| | ! class="hintergrundfarbe6"| Beschreibung |
| | ! class="hintergrundfarbe6"| RFC |
| | |- |
| | |128 || [[#Echo Request|Echo Request]] || [https://www.rfc-editor.org/rfc/4443 RFC 4443] |
| | |- |
| | |129 || [[#|Echo Reply|Echo Reply]] ||[https://www.rfc-editor.org/rfc/4443|RFC 4443] |
| | |- |
| | |130 || [[#Multicast Listener Query|Multicast Listener Query]] ||RFC 2710 und RFC 3810 |
| | |- |
| | |131 || Version 1 Multicast Listener Report |RFC 2710 |
| | |- |
| | |132 || Multicast Listener Done ||RFC 2710 |
| | |- |
| | |133 || Router Solicitation || RFC 4861 |
| | |- |
| | |134 || Router Advertisement || RFC 4861 |
| | |- |
| | |135 || |Neighbor Solicitation ||RFC 4861 |
| | |- |
| | |136 || Neighbor Advertisement ||RFC 4861 |
| | |- |
| | |137 || Redirect || RFC 4861 |
| | |- |
| | |138 |
| | |Router Renumbering |
| | |RFC 2894 |
| | |- |
| | |139 |
| | |ICMP Node Information Query |
| | |RFC 4620 |
| | |- |
| | |140 |
| | |ICMP Node Information Response |
| | |RFC 4620 |
| | |- |
| | |141 |
| | |Inverse Neighbor Discovery Solicitation Message |
| | |RFC 3122 |
| | |- |
| | |142 |
| | |Inverse Neighbor Discovery Advertisement Message |
| | |RFC 3122 |
| | |- |
| | |143 |
| | |Version 2 Multicast Listener Report |
| | |RFC 3810 |
| | |- |
| | |144 |
| | |Home Agent Address Discovery Request Message |
| | |RFC 3775 |
| | |- |
| | |145 |
| | |Home Agent Address Discovery Reply Message |
| | |RFC 3775 |
| | |- |
| | |146 |
| | |Mobile Prefix Solicitation |
| | |RFC 3775 |
| | |- |
| | |147 |
| | |Mobile Prefix Advertisement |
| | |RFC 3775 |
| | |- |
| | |148 |
| | |Certification Path Solicitation Message |
| | |RFC 3971 |
| | |- |
| | |149 |
| | |Certification Path Advertisement Message |
| | |RFC 3971 |
| | |- |
| | |150 |
| | |ICMP messages utilized by experimental mobility protocols such as Seamoby |
| | |RFC 4065 |
| | |- |
| | |151 |
| | |Multicast Router Advertisement |
| | |RFC 4286 |
| | |- |
| | |152 |
| | |Multicast Router Solicitation |
| | |RFC 4286 |
| | |- |
| | |153 |
| | |Multicast Router Termination |
| | |RFC 4286 |
| | |- |
| | |155 |
| | |RPL Control Message |
| | |[https://www.rfc-editor.org/rfc/rfc6550.html RFC 6550] |
| | |- |
| | |200 |
| | |Private experimentation |
| | | |
| | |- |
| | |201 |
| | |Private experimentation |
| | | |
| | |- |
| | |255 |
| | |Reserved for expansion of ICMPv6 informational messages |
| | | |
| | |} |
|
| |
|
| {| class="wikitable float-right" style="font-size:smaller;" cellpadding="2" | | ==== Echo Request ==== |
| | {| class="wikitable float small" |
| |+ Echo-Request-Schema | | |+ Echo-Request-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 412: |
Zeile 370: |
| |} | | |} |
|
| |
|
| | ; Echo Request - Type 128 |
| Mit einem ''Echo Request'' wird um eine Antwort gebeten | | Mit einem ''Echo Request'' wird um eine Antwort gebeten |
| * Ein ''Echo Request'' ist nichts anderes als ein simpler [[Ping (Datenübertragung)|Ping]] | | * Ein ''Echo Request'' ist nichts anderes als ein simpler [[Ping (Datenübertragung)|Ping]] |
Zeile 423: |
Zeile 382: |
| Empfangene ''Echo Request'' können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen | | Empfangene ''Echo Request'' können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen |
|
| |
|
| === Echo Reply – Type 129 === | | ==== Echo Reply ==== |
| | | {| class="wikitable float small" |
| {| class="wikitable float-right" style="font-size:smaller;" cellpadding="2" | |
| |+ Echo-Reply-Schema | | |+ Echo-Reply-Schema |
|
| |
| |- align="center" | | |- align="center" |
| ! class="hintergrundfarbe6" colspan="1"| 0 | | ! class="hintergrundfarbe6" colspan="1"| 0 |
Zeile 442: |
Zeile 399: |
| |} | | |} |
|
| |
|
| | ; Echo Reply - Type 129 |
| Auf eine ''Echo-Request''-Nachricht muss mit einem ''Echo Reply'' geantwortet werden | | Auf eine ''Echo-Request''-Nachricht muss mit einem ''Echo Reply'' geantwortet werden |
| * Das Paket ist bis auf das Typenfeld dasselbe. ''Echo-Reply''-Nachrichten sollen nur an Unicast-Adressen verschickt werden | | * Das Paket ist bis auf das Typenfeld dasselbe. ''Echo-Reply''-Nachrichten sollen nur an Unicast-Adressen verschickt werden |
Zeile 450: |
Zeile 408: |
| * An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden | | * An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden |
|
| |
|
| === Multicast Listener Discovery – Type 130 === | | ==== Multicast Listener Discovery ==== |
| | ; Multicast Listener Discovery - Type 130 |
| MLD ist die Implementation von [[Internet Group Management Protocol|IGMP]] (IPv4) in IPv6 | | MLD ist die Implementation von [[Internet Group Management Protocol|IGMP]] (IPv4) in IPv6 |
| * Es wird also genutzt, um [[Multicast]]-Abonnements zu verwalten | | * Es wird also genutzt, um [[Multicast]]-Abonnements zu verwalten |
Zeile 460: |
Zeile 419: |
| == Anhang == | | == Anhang == |
| === Siehe auch === | | === Siehe auch === |
| {{Special:PrefixIndex/IPv6}} | | {{Special:PrefixIndex/IPv6/ICMP}} |
| | |
| ==== RFC ==== | | ==== RFC ==== |
| # [https://www.rfc-editor.org/rfc/rfc4861.html RFC 4861] – "Neighbor Discovery for IP Version 6 (IPv6)"
| | {| class="wikitable sortable options" |
| # [https://www.rfc-editor.org/rfc/rfc4443.html RFC 4443] – "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)" Specification
| |
| # [https://www.rfc-editor.org/rfc/rfc3122.html RFC 3122] – "Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification"
| |
| # [https://www.iana.org/assignments/icmpv6-parameters IANA ICMP Parameters] – vollständige Liste der ICMPv6-Typen und -Codes
| |
| # [https://www.rfc-editor.org/rfc/rfc4890.html RFC 4890] – "Recommendations for Filtering ICMPv6 Messages in Firewalls"
| |
| # [https://www.rfc-editor.org/rfc/rfc7112.html RFC 7112] – "Implications of Oversized IPv6 Header Chains"
| |
| # [https://www.rfc-editor.org/rfc/rfc8200.html RFC 8200] – "Internet Protocol, Version 6 (IPv6) Specification" (löst [https://www.rfc-editor.org/rfc/rfc2460.html RFC 2460] ab)
| |
| # https://tools.ietf.org/html/rfc4604
| |
| | |
| ==== Links ====
| |
| ===== Weblinks =====
| |
| # https://de.wikipedia.org/wiki/ICMPv6
| |
| # https://lwn.net/Articles/29489/
| |
| | |
| === TMP ===
| |
| IPv6
| |
| ICMPv6
| |
| ICMPv6 - Bedeutung
| |
| | |
| Internet Control Message Protocol for the Internet Protocol Version 6 (ICMPv6)
| |
| * ist die mit IPv6 zusammen verwendete Version des Internet Control Message Protocol
| |
| | |
| Meldungen
| |
| * Es dient, wie ICMPv4 bei IPv4, in Netzwerken zum Austausch von Fehler- und
| |
| Informationsmeldungen
| |
| | |
| NDP
| |
| * Zusätzlich findet es im Neighbor Discovery Protocol, dem Ersatz des Address Resolution Protocol
| |
| Verwendung
| |
| | |
| Bedeutung
| |
| * Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig
| |
| * Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert
| |
| (vgl. RFC 4890)
| |
| | |
| Transport
| |
| * ICMPv6-Nachrichten werden vor dem Versenden in IPv6-Pakete eingepackt und so verschickt
| |
| ** Auch wenn ICMPv6 auf derselben Netzwerkschicht ist wie IPv6
| |
| | |
| Protokoll-Nummer
| |
| * Als Protokoll-Nummer wird 58 ins Next-Header-Feld des IPv6-Headers eingefügt
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 2
| |
| ICMPv6 im Protokollstapel
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 3
| |
| Erweiterte ICMP-Funktionalität
| |
| | |
| Unverzichtbar
| |
| * ICMPv6 (Protokolltyp 58) stellt für das Funktionieren von IPv6 unverzichtbare Funktionen zur
| |
| Verfügung
| |
| | |
| Firewalls
| |
| * Das Verbieten aller ICMPv6-Pakete in einem IPv6-Netzwerk durch Filter ist daher im Normalfall
| |
| nicht durchführbar
| |
| | |
| ARP und NDP
| |
| * Insbesondere wird das Address Resolution Protocol (ARP) durch das Neighbor Discovery
| |
| Protocol (NDP) ersetzt, welches auf ICMPv6 basiert
| |
| * NDP macht hierbei intensiv Gebrauch von Link-Local-Unicast-Adressen und Multicast
| |
| * das von jedem Host beherrscht werden muss
| |
| | |
| Default-Routen
| |
| * Im Rahmen des NDP werden auch die automatische Adressvergabe und die automatische
| |
| Zuordnung einer oder mehrerer Default-Routen über ICMPv6 abgewickelt, so stellt es die
| |
| meisten Funktionen zur IPv6-Autokonfiguration zur Verfügung
| |
| * NDP kann auf die Möglichkeit weiterer Konfiguration durch DHCPv6 verweisen, welches UDP-
| |
| Pakete benutzt
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 4
| |
| Erweiterte ICMP-Funktionalität
| |
| | |
| Fragmentierung
| |
| * Fragmentierung überlanger IPv6-Pakete erfolgt nicht durch die Router
| |
| ** Anders als bei IPv4
| |
| * Absender werden mit Hilfe von ICMPv6-Nachrichten aufgefordert, kleinere Pakete zu schicken
| |
| ** unter Zuhilfenahme des Fragment Extension Headers
| |
| | |
| Path MTU Discovery
| |
| * Ein IPv6-Host, bzw. eine Anwendung sollte vor dem Versenden einer großen Anzahl von IPv6-
| |
| Paketen eine Path MTU Discovery gemäß RFC 1981 durchführen
| |
| ** um Pakete mit maximal möglicher Größe verschicken zu können
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 5
| |
| ICMPv6-Header
| |
| | |
| Type
| |
| * Das Feld Type gibt die Klasse der ICMP-Nachricht an
| |
| | |
| Code
| |
| * welche mit dem Feld Code genauer spezifiziert werden kann
| |
| | |
| Prüfsumme
| |
| * Die Prüfsumme wird zum Prüfen der Gültigkeit des ICMPv6-Pakets benutzt
| |
| | |
| Inhalt
| |
| * Der restliche Inhalt der ICMP-Nachricht wird durch den jeweiligen Typ bestimmt
| |
| * Bei Fehlernachrichten wird nach den möglichen zusätzlichen Feldern immer noch so viel wie
| |
| möglich vom fehlerverursachenden Paket angehängt
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 6
| |
| ICMPv6-Typen
| |
| | |
| Nachrichten-Typen werden in zwei Gruppen unterteilt
| |
| Fehlernachrichten
| |
| * Die ersten 128 Typen (0–127) mit dem höchstwertigen Bit (engl. most significant bit) auf 0
| |
| | |
| Informationsnachrichten
| |
| * Die zweiten 128 Typen (128–255), mit dem höchstwertigem Bit auf 1
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 7
| |
| Fehlernachrichten
| |
| | |
| Type Beschreibung RFC
| |
| 1 Destination Unreachable RFC 4443
| |
| 2 Packet Too Big RFC 4443
| |
| 3 Time Exceeded RFC 4443
| |
| 4 Parameter Problem RFC 4443
| |
| 100 Private experimentation
| |
| 101 Private experimentation
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 8
| |
| Informationsnachrichten
| |
| | |
| Type Beschreibung RFC
| |
| 128 Echo Request RFC 4443
| |
| 129 Echo Reply RFC 4443
| |
| 130 Multicast Listener Query RFC 2710 und RFC 3810
| |
| 131 Version 1 Multicast Listener Report RFC 2710
| |
| 132 Multicast Listener Done RFC 2710
| |
| 133 Router Solicitation RFC 4861
| |
| 134 Router Advertisement RFC 4861
| |
| 135 Neighbor Solicitation RFC 4861
| |
| 136 Neighbor Advertisement RFC 4861
| |
| 137 Redirect RFC 4861
| |
| 138 Router Renumbering
| |
| 139 ICMP Node Information Query RFC 4620
| |
| 140 ICMP Node Information Response RFC 4620
| |
| 141 Inverse Neighbor Discovery Solicitation Message RFC 3122
| |
| 142 Inverse Neighbor Discovery Advertisement Message RFC 3122
| |
| 143 Version 2 Multicast Listener Report RFC 3810
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 9
| |
| Informationsnachrichten
| |
| | |
| Type Beschreibung RFC
| |
| 144 Home Agent Address Discovery Request Message RFC 3775
| |
| 145 Home Agent Address Discovery Reply Message RFC 3775
| |
| 146 Mobile Prefix Solicitation RFC 3775
| |
| 147 Mobile Prefix Advertisement RFC 3775
| |
| 148 Certification Path Solicitation Message RFC 3971
| |
| 149 Certification Path Advertisement Message RFC 3971
| |
| 150 ICMP messages utilized by experimental mobility protocols such as RFC 4065 Seamoby
| |
| 151 Multicast Router Advertisement RFC 4286
| |
| 152 Multicast Router Solicitation RFC 4286
| |
| 153 Multicast Router Termination RFC 4286
| |
| 200 Private experimentation
| |
| 201 Private experimentation
| |
| 255 Reserved for expansion of ICMPv6 informational messages
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 10
| |
| Prüfsumme
| |
| | |
| Die Prüfsumme (engl. checksum) eines ICMPv6-Pakets
| |
| * ist ein 16-Bit-Einerkomplement der Summe des Einerkomplements der gesamten ICMPv6-
| |
| Nachricht
| |
| ** 'Einerkomplement' ist eine arithmetische Operation, bei der alle Bit invertiert werden (arithmetische Nicht-
| |
| Verknüpfung)
| |
| ** Aus 0 wird 1 und umgekehrt
| |
| ** Siehe: https://de.wikipedia.org/wiki/Einerkomplement
| |
| | |
| Pseudoheader
| |
| * Zusätzlich zur Nachricht wird noch ein IPv6-Pseudoheader angehängt
| |
| ** Neuerungen gegenüber ICMP, wo die Prüfsumme nur über den ICMP-Header berechnet wurde
| |
| * Zur Berechnung der Prüfsumme wird das Prüfsummenfeld auf 0 gesetzt
| |
| * Pseudoheader zur Berechnung der Prüfsumme:
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 11
| |
| ICMPv6 - Verarbeitung
| |
| | |
| Regeln für die Verarbeitung von ICMPv6-Nachrichten
| |
| Unbekannte ICMPv6 - Fehlernachrichten
| |
| * müssen an die darüber liegende Netzwerkschicht weitergereicht werden
| |
| | |
| Unbekannte ICMPv6 - Informationsnachrichten
| |
| * müssen kommentarlos verworfen werden
| |
| | |
| Jeder Fehlernachricht
| |
| * wird am Ende so viel wie möglich des fehlerverursachenden Pakets angehängt
| |
| | |
| Protokollnummer zum Weiterreichen
| |
| * von unbekannten Fehlernachrichten wird aus dem angehängten Originalpaket entnommen
| |
| | |
| Pakete auf die keine Fehlernachrichten versandt werden
| |
| * Fehlernachrichten
| |
| * Pakete an Multicast-, Link-Level-Multicast- oder Link-Level-Broadcast-Adressen mit folgenden
| |
| Ausnahmen:
| |
| ** Packet-Too-Big-Nachrichten
| |
| ** Parameter-Problem-Nachrichten mit Code 2
| |
| ** unbekannte IPv6-Option
| |
| * Das Netz darf nicht mit ICMPv6 - Fehlernachrichten geflutet werden
| |
| IPv6 - ICMPv6 Dirk Wagner Berlin 12
| |
| ICMP-Standard-Typen
| |
| | |
| Destination Unreachable
| |
| ** Type 1
| |
| Destination
| |
| ** Unreachable - Nachrichten sollten vom Router erzeugt werden, wenn ein
| |
| Paket nicht ausgeliefert werden konnte
| |
| * Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine Destination Unreachable
| |
| versandt werden
| |
| | |
| Code 0
| |
| * fehlende Route
| |
| | |
| Code 1
| |
| * administrativ verboten (Firewall)
| |
| | |
| Code 3
| |
| * Router kann IPv6-Adresse nicht auflösen, oder Problem mit dem Link
| |
| | |
| Code 4
| |
| * Zielhost hat für ein UDP-Paket keinen Listener
| |
| | |
| Wenn ein Destination Unreachable empfangen wird, muss es der darüberliegenden
| |
| Schicht weitergereicht werden
| |
| IPv6 - ICMPv6 Dirk Wagner Berlin 13
| |
| ICMP-Standard-Typen
| |
| | |
| Packet Too Big
| |
| ** Type 2
| |
| * muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es
| |
| größer ist als die maximale MTU des Links, über den es versendet werden soll
| |
| * Packet-Too-Big-Nachrichten werden vom Path MTU Discovery dazu gebraucht, um die
| |
| pfadabhängige MTU zu ermitteln
| |
| | |
| Code
| |
| * sollte vom Sender auf 0 gesetzt und vom Empfänger ignoriert werden
| |
| | |
| Wenn ein Packet Too Big empfangen wird, muss es dem darüber liegenden Layer
| |
| weitergereicht werden
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 14
| |
| ICMP-Standard-Typen
| |
| | |
| Time Exceeded
| |
| ** Type 3
| |
| Code 0
| |
| * Wenn ein Router ein Paket mit einem Hop-Limit von 0 erhält, oder sie auf 0 verkleinert, muss er
| |
| das Paket verwerfen und ein Time Exceeded mit Code 0 versenden
| |
| * Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-
| |
| Limit
| |
| | |
| Code 1
| |
| * Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit
| |
| ankommen, wird das Paket verworfen und es muss ein Time Exceeded mit Code 1 versendet
| |
| werden
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 15
| |
| ICMP-Standard-Typen
| |
| | |
| Parameter Problem
| |
| ** Type 4
| |
| * Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und
| |
| nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine Parameter-
| |
| Problem-Nachricht verschicken
| |
| | |
| Code
| |
| * Mit dem Code wird dabei die Art des Problems genauer beschrieben
| |
| | |
| 0 Fehlerhaftes Header-Feld gefunden
| |
| 1 Unbekannter Next-Header-Typ gefunden
| |
| 2 Unbekannte IPv6-Option
| |
| | |
| Pointer
| |
| * Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 16
| |
| ICMP-Standard-Typen
| |
| | |
| Echo Request
| |
| ** Type 128
| |
| Mit einem Echo Request wird um eine Antwort gebeten
| |
| * Ein Echo Request ist nichts anderes als ein simpler Ping
| |
| | |
| Das Datenfeld
| |
| * kann mit Daten vergrößert werden, um größere Pakete zu produzieren
| |
| * So kann man zum Beispiel die MTU ermitteln
| |
| | |
| Jedes System muss auf Echo Requests reagieren und mit Echo Replies antworten
| |
| * Auch sollte jedes System eine Anwendung zum Versenden und Empfangen von Echo
| |
| Request/Replies besitzen
| |
| | |
| Empfangene Echo Request
| |
| * können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 17
| |
| ICMP-Standard-Typen
| |
| | |
| Echo Reply
| |
| ** Type 129
| |
| Auf eine Echo-Request-Nachricht muss mit einem Echo Reply geantwortet werden
| |
| * Das Paket ist bis auf das Typenfeld dasselbe
| |
| | |
| Echo-Reply-Nachrichten sollen nur an Unicast-Adressen verschickt werden
| |
| | |
| Identifikation und der Sequenznummer
| |
| * Anhand der Identifikation und der Sequenznummer wird der Empfänger die Antworten zu seinen
| |
| Anfragen zuordnen können
| |
| | |
| Empfangene Echo-Reply-Nachrichten
| |
| * müssen an die Anwendung weitergereicht werden, die den zugehörigen Echo Request
| |
| versendet hat
| |
| * An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 18
| |
| ICMP-Standard-Typen
| |
| | |
| Multicast Listener Discovery
| |
| ** Type 130
| |
| MLD ist die Implementation von IGMP (IPv4) in IPv6
| |
| * Es wird genutzt um Multicast Abonnements zu verwalten
| |
| | |
| MLDv1 IGMPv2 entsprechen MLDv2 IGMPv3
| |
| * Bei den jeweils neueren Versionen lässt sich bestimmen, welche Quell-Adressen für Multicast-
| |
| Steams akzeptabel sind
| |
| | |
| Unterstützung in Betriebsystemen
| |
| * Linux unterstützt es seit 2003 (2.5.68), Windows seit 2006 (Vista), FreeBSD seit 2009 (8.0)
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 19
| |
| Weblinks
| |
| | |
| RFC 4861
| |
| ** Neighbor Discovery for IP Version 6 (IPv6)
| |
| * https://tools.ietf.org/html/rfc4861
| |
| | |
| RFC 4443
| |
| ** Internet Control Message Protocol (ICMPv6) for the Internet Protocol
| |
| Version 6 (IPv6) Specification
| |
| * https://tools.ietf.org/html/rfc4443
| |
| | |
| RFC 3122
| |
| ** Extensions to IPv6 Neighbor Discovery for Inverse Discovery
| |
| Specification
| |
| * https://tools.ietf.org/html/rfc3122
| |
| | |
| IANA ICMP Parameters
| |
| ** vollständige Liste der ICMPv6-Typen und -Codes
| |
| * http://www.iana.org/assignments/icmpv6-parameters
| |
| | |
| RFC 4890
| |
| ** Recommendations for Filtering ICMPv6 Messages in Firewalls
| |
| * https://tools.ietf.org/html/rfc4890
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 20
| |
| IPv6
| |
| Neighbor Discovery Protocol
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| Neighbor Discovery Protocol (NDP)
| |
| * Ersatz des Address Resolution Protocol (ARP) von IPv4 für IPv6
| |
| | |
| Verwendung
| |
| NDP wird von den am IPv6-Netzwerk beteiligten Knoten benutzt
| |
| * Link-Layer-Adresse von anderen Knoten ausfindig machen
| |
| ** die am selben Netzwerk angeschlossen sind
| |
| * Aktualisieren zwischengespeicherter Adressen
| |
| | |
| Router finden, der Pakete weiterleiten kann
| |
| * Für alle nicht am selben Netzwerk hängenden Knoten
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 22
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| Funktionsweise In der Default Router List
| |
| * Für NDP muss der Knoten für jedes Interface * werden alle Router verwaltet, die für das
| |
| folgende Informationen verwalten Interface bekannt sind. Die Einträge
| |
| verweisen auf Einträge im Neighbor Cache
| |
| Im Neighbor Cache * Zusätzlich haben sie ein Ablaufdatum
| |
| * werden Adressen verwaltet, an die etwas gesendet sodass alte Router verschwinden und nur
| |
| wurde und die sich im selben Netzwerk befinden. die erhalten bleiben, die ihre Anwesenheit
| |
| Zu jedem Eintrag einer IPv6-Adresse steht ihre verkünden
| |
| Link-Layer-Adresse
| |
| * Auch weitere Informationen werden hier verwaltet, NDP ICMPv6-Typen
| |
| wie zum Beispiel Pointer auf Pakete, die auf die
| |
| Adressauflösung warten, Informationen für die * Die Informationen zum Erstellen dieser
| |
| Erreichbarkeitsprüfung oder ob es ein Router ist. Listen werden per ICMPv6 (Internet Control
| |
| Message Protocol V6) ausgetauscht. NDP
| |
| Im Destination Cache definiert zu diesem Zweck fünf ICMPv6-
| |
| * werden Adressen verwaltet, an die etwas gesendet Typen
| |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 23
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 24
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 25
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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 eine, auf seiner IPv6-Adresse beruhende, spezifische 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 26
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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 ist
| |
| dabei der Teil, der ein IPv6 Multicast-Paket kennzeichnet, ff: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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 27
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 28
| |
| Neighbor Discovery Protocol (NDP)
| |
| | |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 29
| |
| ICMPv6-Typen
| |
| | |
| Router Solicitation
| |
| ** Type 133
| |
| * 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 30
| |
| ICMPv6-Typen
| |
| | |
| Router Advertisement
| |
| ** Type 134 Das Erreichbarkeits-Timeout
| |
| * ist ein 32-Bit-Integer, der angibt, wie viele
| |
| Per Router Advertisement Millisekunden ein Eintrag im Neighbor Cache
| |
| * verkünden Router ihre Anwesenheit im Netz nach dem Empfangen von Daten noch als
| |
| * Entweder auf Anfrage per Router Solicitation oder erreichbar gelten soll
| |
| periodisch, um nicht vergessen zu werden
| |
| Das Auflösungs-Timeout
| |
| Das Hop-Limit
| |
| * ist ein 32-Bit-Integer, der angibt, nach wie
| |
| * ist ein 8-Bit-Wert, der die vom Router vorgeschlagene
| |
| Standard-Hop-Limits enthält. vielen Millisekunden erneut ein Neighbor
| |
| Solicitation gesendet werden soll
| |
| Ein gesetztes M-Bit
| |
| * sagt dem Knoten, dass er neben Autokonfiguration für die Gültige Optionen
| |
| IP-Adresse auch Stateful-Autokonfiguration verwenden * sind die Link-Layer-Adresse des Senders, die
| |
| soll
| |
| MTU des Routers und alle gültigen Präfixe
| |
| Ein gesetztes O-Bit
| |
| * sagt dem Knoten, dass er neben Autokonfiguration für Um problemfreie Protokoll-erweiterungen zu
| |
| alle Nicht-IP-Adress-Informationen auch Stateful- ermöglichen, müssen alle unbekannten Optionen
| |
| Autokonfiguration verwenden soll. ignoriert werden
| |
| | |
| 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 31
| |
| ICMPv6-Typen
| |
| | |
| Router Advertisement
| |
| ** Type 134
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 32
| |
| ICMPv6-Typen
| |
| | |
| Neighbor Solicitation
| |
| ** Type 135
| |
| Per Neighbor Solicitation
| |
| * (Nachbar Anfrage) an die Link-Layer-Multicast-
| |
| Adresse einer Ipv6-Adresse werden IPv6-
| |
| Adressen zu Link-Layer-Adressen aufgelöst
| |
| * Ebenfalls wird so die Erreichbarkeit eines
| |
| Knotens geprüft
| |
| | |
| Link-Layer-Multicast-Adresse
| |
| Zieladresse
| |
| * werden aus der Multicast-Adresse der
| |
| betreffenden IPv6-Adresse mittels Adress-
| |
| * IPv6-Adresse, die in eine Link-Layer-
| |
| Mapping berechnet Adresse aufgelöst werden soll
| |
| * Die letzten 3 Byte xx:yy:zz der Solicited-Node * Es darf keine Multicast-Adresse
| |
| Multicast Adresse werden auf die letzten 3 Byte angegeben werden
| |
| der Link-Layer Adresse 33:33:FF:xx:yy:zz
| |
| gemappt
| |
| Einzig mögliche Option
| |
| Typ und Code * Link-Layer-Adresse des Senders
| |
| * Type wird auf 135 gesetzt und der Code auf 0
| |
| Unbekannten Optionen müssen
| |
| Reserviertes Feld ignoriert werden
| |
| * muss vom Sender mit Nullen initialisiert und * Um bei Protokollerweiterungen keine
| |
| vom Empfänger ignoriert werden Probleme zu bekommenv
| |
| IPv6 - ICMPv6 Dirk Wagner Berlin 33
| |
| ICMPv6-Typen
| |
| | |
| Neighbor Advertisement
| |
| ** Type 136
| |
| Mit einer Neighbor-Advertisement-
| |
| Nachricht
| |
| * wird auf Neighbor-Solicitation-Nachrichten
| |
| geantwortet
| |
| | |
| Typ und Code
| |
| * Type wird auf 136 gesetzt und der Code auf 0
| |
| | |
| R-Bit Reserviertes Feld
| |
| * wird gesetzt, wenn der Knoten ein Router ist * muss vom Sender mit Nullen initialisiert
| |
| und vom Empfänger ignoriert werden
| |
| S-Bit
| |
| * wird gesetzt, wenn das Neighbor Zieladresse
| |
| Advertisement aufgrund einer Unicast- * Link-Layer-Adresse, die erfragt wurde
| |
| Neighbor-Solicitation-Nachricht gesendet wird
| |
| | |
| O-Bit Option
| |
| * bedeutet, dass der Eintrag im Neighbor Cache
| |
| * ist die Link-Layer-Adresse des Senders
| |
| aktualisiert werden muss * Unbekannten Optionen ignoriert werden
| |
| um bei Protokollerweiterungen Probleme
| |
| zu vermeiden
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 34
| |
| ICMPv6-Typen
| |
| | |
| Redirect
| |
| ** Type 137
| |
| Per Redirect-Nachricht
| |
| * teilen Router mit, wenn es einen besseren ersten Hop für ein gewisses Ziel gibt
| |
| | |
| Type und Code
| |
| * 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 35
| |
| Implementierung in Betriebssystemen
| |
| | |
| Alle IPv6-fähigen Betriebssysteme sind in der Lage mit NDP Adressen
| |
| aufzulösen
| |
| Unter Linux 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 36
| |
| Implementierung in Betriebssystemen
| |
| | |
| Alle IPv6-fähigen Betriebssysteme sind in der Lage mit NDP Adressen aufzulösen
| |
| Auf BSD-basierten Systemen hilft hierbei das Werkzeug ndp
| |
| * wobei die Optionen '-an' bedeuten, dass alle Hosts numerisch angezeigt werden sollen; hier bei FreeBSD 9
| |
| | |
| 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
| |
| # <-- Rechner 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
| |
| # <-- 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
| |
| # <-- link-local address
| |
| | |
| Hierbei ist insbesondere die Spalte Expire zu beachten
| |
| * 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
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 37
| |
| Implementierung in Betriebssystemen
| |
| | |
| Alle IPv6-fähigen Betriebssysteme sind in der Lage mit NDP Adressen
| |
| aufzulösen
| |
| Unter Windows lautet der Befehl
| |
| netsh interface ipv6 show neighbors level=verbose
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 38
| |
| Weblinks
| |
| | |
| RFC 4861
| |
| ** Neighbor Discovery for IP Version 6 (IPv6)
| |
| * https://tools.ietf.org/html/rfc4861
| |
| | |
| RFC 3122
| |
| ** Extensions to IPv6 Neighbor Discovery for Inverse Discovery
| |
| Specification
| |
| * https://tools.ietf.org/html/rfc3122
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 39
| |
| IPv6
| |
| Autokonfiguration
| |
| Autokonfiguration
| |
| | |
| Stateless Address Autoconfiguration
| |
| * (SLAAC, zustandslose Adressenautokonfiguration, spezifiziert in RFC 4862)
| |
| | |
| Ein Host kann vollautomatisch eine funktionsfähige Internetverbindung aufbauen
| |
| * Dazu kommuniziert er mit den für sein Netzwerksegment zuständigen Routern
| |
| * um die notwendige Konfiguration zu ermitteln
| |
| | |
| IPv6 - Einführung Dirk Wagner Berlin 41
| |
| IPv6 Autokonfiguration: Plug & Play
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 42
| |
| Autokonfiguration
| |
| Ablauf
| |
| | |
| link-lokale Adresse
| |
| * Zur initialen Kommunikation mit dem Router weist sich der Host eine link-lokale Adresse zu, die im Falle
| |
| einer Ethernet-Schnittstelle etwa aus deren Hardware-Adresse berechnet werden kann
| |
| | |
| Router Solicitation
| |
| * Damit kann ein Gerät sich mittels des Neighbor Discovery Protocols (NDP, siehe auch ICMPv6-
| |
| Funktionalität) auf die Suche nach den Routern in seinem Netzwerksegment machen
| |
| * Dies geschieht durch eine Anfrage an die Multicast-Adresse ff02::2, über die alle Router eines Segments
| |
| erreichbar sind (Router Solicitation)
| |
| * Ein Router versendet auf eine solche Anfrage hin Information zu verfügbaren Präfixen, also Information
| |
| über die Adressbereiche, aus denen ein Gerät sich selbst Unicast-Adressen zuweisen darf
| |
| | |
| Router Advertisements
| |
| * Die Pakete, die diese Informationen tragen, werden Router Advertisements genannt. Sie besitzen
| |
| ICMPv6-Typ 134 (0x86) und besitzen Informationen über die Lifetime, die MTU und das Präfix des
| |
| Netzwerks
| |
| * An einen solchen Präfix hängt der Host den auch für die link-lokale Adresse verwendeten Interface-
| |
| Identifier an
| |
| | |
| Duplicate Address Detection
| |
| * Um die doppelte Vergabe einer Adresse zu verhindern, ist der Mechanismus Duplicate Address Detection
| |
| (DAD ** Erkennung doppelt vergebener Adressen) vorgesehen
| |
| * Ein Gerät darf bei der Autokonfiguration nur unvergebene Adressen auswählen. Der DAD-Vorgang läuft
| |
| ebenfalls ohne Benutzereingriff via NDP ab
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 43
| |
| Autokonfiguration
| |
| Gültigkeitsangaben
| |
| | |
| Valid Lifetime und Preferred Lifetime
| |
| * Router können bei der Vergabe von Adresspräfixen begrenzte Gültigkeitszeiten mitgeben: Valid
| |
| Lifetime und Preferred Lifetime
| |
| * Innerhalb der Valid Lifetime darf der angegebene Präfix zur Kommunikation verwendet werden
| |
| * innerhalb der Preferred Lifetime soll dieser Präfix einem anderen, dessen Valid Lifetime schon
| |
| abgelaufen ist, vorgezogen werden
| |
| | |
| Router Advertisements
| |
| * Router verschicken regelmäßig Router Advertisements an alle Hosts in einem Netzsegment, für
| |
| das sie zuständig sind, mittels derer die Präfix-Gültigkeitszeiten aufgefrischt werden; durch
| |
| Änderung der Advertisements können Hosts umnummeriert werden
| |
| * Sind die Router Advertisements nicht über IPsec authentifiziert, ist die Herabsetzung der
| |
| Gültigkeitszeit eines einem Host bereits bekannten Präfixes auf unter zwei Stunden jedoch nicht
| |
| möglich
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 44
| |
| IPv6 Autokonfiguration: Neighbor Discovery
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 45
| |
| IPv6
| |
| Autokonfiguration
| |
| | |
| Neuer Host konfiguriert lokale Adresse
| |
| | |
| Lokale Adresse wird per Neighbor-Discovery-Protokoll verifiziert
| |
| | |
| Host sendet dann Router Solicitation Message mit lokaler Adresse
| |
| | |
| Router antwortet mit Router Advertisement Message:
| |
| * Enthält Informationen zu Adreß-Präfix und globale Adresse des neuen Hosts
| |
| (stateful autoconfiguration oder stateless autoconfiguration)
| |
| | |
| Router Solicitation
| |
| Router Advertisement
| |
| Router Neuer Host
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 46
| |
| IPv6 Autokonfiguration: Neighbor Discovery
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 47
| |
| IPv6 Autokonfiguration: Neighbor Discovery
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 48
| |
| IPv6 Autokonfiguration: Neighbor Discovery
| |
| | |
| IPv6 - ICMPv6 Dirk Wagner Berlin 49
| |
| Autokonfiguration und DHCPv6
| |
| | |
| Stateful Address Configuration
| |
| * Die IPv6-Autokonfiguration unterscheidet sich konzeptionell von DHCP beziehungsweise
| |
| DHCPv6
| |
| ** Bei der Adressvergabe durch DHCPv6 wird von „Stateful Address Configuration“ gesprochen sinngemäß:
| |
| Adressvergabe, über die Buch geführt wird, etwa durch einen DHCP-Server
| |
| ** definiert in RFC 3315
| |
| * Autokonfiguration ist eine „Stateless Address (Auto)Configuration“
| |
| ** Geräte weisen sich selbst eine Adresse zu
| |
| ** über diese Vergabe wird nicht Buch geführt
| |
| | |
| Grenzen der Autokonfiguration
| |
| * Mittels der Autokonfiguration können an Clients keine Informationen zu Host-, Domainnamen
| |
| DNS, NTP-Server etc. mitgeteilt werden, sofern diese nicht spezifische Erweiterungen von NDP
| |
| unterstützen
| |
| | |
| Stateless DHCPv6
| |
| * Als Alternative hat sich der zusätzliche Einsatz eines DHCPv6-Servers etabliert
| |
| * Dieser liefert die gewünschten Zusatzinformationen, kümmert sich dabei aber nicht um die
| |
| Adressvergabe
| |
| * Man spricht in diesem Fall von Stateless DHCPv6 (vgl. RFC 3736)
| |
| * Dem Client kann mittels des Managed-Flags in der Antwort auf eine NDP-Router-Solicitation
| |
| angezeigt werden, dass er eine DHCPv6-Anfrage stellen und somit die Zusatzinformationen
| |
| beziehen soll
| |
| | |
| IPv6 Autokonfiguration: DHCPv6
| |
| | |
| = TMP =
| |
| == Erweiterte ICMP-Funktionalität ==
| |
| | |
| ==== Unverzichtbar ====
| |
| | |
| ICMPv6 (Protokolltyp 58) stellt für das Funktionieren von IPv6 unverzichtbare Funktionen zur Verfügung.
| |
| | |
| Das Verbieten aller ICMPv6-Pakete in einem IPv6-Netzwerk durch Filter ist daher im Normalfall nicht durchführbar.
| |
| | |
| ==== ARP und NDP ====
| |
| | |
| Insbesondere wird das Address Resolution Protocol (ARP) durch das Neighbor Discovery Protocol (NDP) ersetzt, welches auf ICMPv6 basiert. * macht hierbei intensiv Gebrauch von Link-Local-Unicast-Adressen und Multicast
| |
| ** das von jedem Host beherrscht werden muss
| |
| | |
| | |
| | |
| ====== Default-Routen ======
| |
| | |
| Im Rahmen des NDP werden auch die automatische Adressvergabe und die automatische Zuordnung einer oder mehrerer Default-Routen über ICMPv6 abgewickelt, so stellt es die meisten Funktionen zur Verfügung, die oben unter IPv6-Autokonfiguration erklärt wurden.
| |
| | |
| NDP kann auf die Möglichkeit weiterer Konfiguration durch DHCPv6 verweisen, welches UDP-Pakete benutzt.
| |
| | |
| ==== Fragmentierung ====
| |
| ; Fragmentierung überlanger IPv6-Pakete erfolgt nicht mehr durch die Router
| |
| * Absender wird mit Hilfe von ICMPv6-Nachrichten aufgefordert, kleinere Pakete zu schicken
| |
| ** auch unter Zuhilfenahme des Fragment Extension Headers
| |
| | |
| ; Path MTU Discovery
| |
| Idealerweise sollte ein IPv6-Host, bzw. eine Anwendung vor dem Versenden einer großen Anzahl von IPv6-Paketen eine Path MTU Discovery gemäß RFC 1981 durchführen, um Pakete mit maximal möglicher Größe verschicken zu können.
| |
| | |
| === ICMPv6 ===
| |
| | |
| | |
| {| | |
| |-
| |
| | colspan="2" | '''ICMPv6 (Internet Control Message Protocol Version 6)'''
| |
| |- | | |- |
| | | Familie:
| | ! RFC !! Titel |
| | | Internetprotokolle
| |
| |- | | |- |
| | | Einsatzgebiet: | | | [https://www.rfc-editor.org/rfc/rfc3122 3122] || Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification |
| | | Obligatorischer Zusatz zu IPv6, Fehlermeldungen, Diagnose, Autoconfiguration, Routing | |
| | |
| Internet-Protokolle im TCP/IP-Protokollstapel
| |
| | |
| | |
| {|
| |
| |- | | |- |
| | | Internet | | | [https://www.rfc-editor.org/rfc/rfc4443 4443] || Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification |
| | colspan="5" | ICMPv6
| |
| |-
| |
| | colspan="5" | IPv6
| |
| |- | | |- |
| | | Netzzugang | | | [https://www.rfc-editor.org/rfc/rfc4604 4604] || |
| | | Ethernet
| |
| | | TokenBus
| |
| | | IEEE802.11a/b/g/n
| |
| | | FDDI
| |
| | | …
| |
| |-
| |
| |}
| |
| | |
| |-
| |
| | colspan="2" |
| |
| |-
| |
| | | Standards:
| |
| | | RFC 4443 (2006)
| |
| |-
| |
| |}
| |
| Das Internet Control Message Protocol for the Internet Protocol Version 6 (ICMPv6) ist die mit IPv6 zusammen verwendete Version des Internet Control Message Protocol.
| |
| | |
| Es dient, wie schon bei IPv4, in Netzwerken zum Austausch von Fehler- und Informationsmeldungen. Zusätzlich findet es aber noch im Neighbor Discovery Protocol, dem Ersatz des Address Resolution Protocol, Verwendung.
| |
| | |
| Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig. Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert (vgl. RFC 4890).
| |
| | |
| Auch wenn ICMPv6 auf derselben Netzwerkschicht ist wie IPv6, werden die ICMPv6-Nachrichten vor dem Versenden in IPv6-Pakete eingepackt und so verschickt.
| |
| | |
| Als Protokoll-Nummer wird 58 ins Next-Header-Feld des IPv6-Headers eingefügt.
| |
| | |
| ==== ICMPv6-Header ====
| |
| | |
| <div >''ICMPv6 Header''</div>
| |
| | |
| | |
| {|
| |
| |- | | |- |
| | | '''+''' | | | [https://www.rfc-editor.org/rfc/rfc4861 4861] || Neighbor Discovery for IP Version 6 (IPv6) |
| | | '''Bits 0–7''' | |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |- | | |- |
| | | '''0''' | | |- [https://www.rfc-editor.org/rfc/rfc4890 4890] || Recommendations for Filtering ICMPv6 Messages in Firewalls |
| | | Type | |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |- | | |- |
| | | '''…''' | | | [https://www.rfc-editor.org/rfc/rfc7112 7112] || Implications of Oversized IPv6 Header Chains |
| | colspan="4" | ICMPv6-Nachricht … | |
| |- | | |- |
| | | [https://www.rfc-editor.org/rfc/rfc8200 8200] || Internet Protocol, Version 6 (IPv6) Specification, löst [https://www.rfc-editor.org/rfc/rfc2460 2460] ab |
| |} | | |} |
| Das Feld Type gibt die Klasse der ICMP-Nachricht an, welche mit dem Feld Code genauer spezifiziert werden kann. Die Prüfsumme wird zum Prüfen der Gültigkeit des ICMPv6-Pakets benutzt.
| |
|
| |
| Der restliche Inhalt der ICMP-Nachricht wird durch den jeweiligen Typ bestimmt.
| |
|
| |
| Dei Fehlernachrichten wird nach den möglichen zusätzlichen Feldern immer noch so viel wie möglich vom fehlerverursachenden Paket angehängt.
| |
|
| |
| ===== ICMPv6-Typen =====
| |
|
| |
| Die Nachrichten-Typen werden in zwei Gruppen unterteilt. * Die ersten 128 Typen (0–127) mit dem höchstwertigen Bit (engl. most significant bit) auf 0, sind Fehlernachrichten.
| |
| * Die zweiten 128 Typen (128–255), mit dem höchstwertigem Bit auf 1, sind Informationsnachrichten.
| |
|
| |
|
| |
|
| |
| ====== Fehlernachrichten ======
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''Type'''
| |
| | | '''Beschreibung'''
| |
| | | '''RFC'''
| |
| |-
| |
| | | 1
| |
| | | Destination Unreachable
| |
| | | RFC 4443
| |
| |-
| |
| | | 2
| |
| | | Packet Too Big
| |
| | | RFC 4443
| |
| |-
| |
| | | 3
| |
| | | Time Exceeded
| |
| | | RFC 4443
| |
| |-
| |
| | | 4
| |
| | | Parameter Problem
| |
| | | RFC 4443
| |
| |-
| |
| | | 100
| |
| | | Private experimentation
| |
| | |
| |
| |-
| |
| | | 101
| |
| | | Private experimentation
| |
| | |
| |
|
| |
|
| |
| |-
| |
| |}
| |
| ====== Informationsnachrichten ======
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''Type'''
| |
| | | '''Beschreibung'''
| |
| | | '''RFC'''
| |
| |-
| |
| | | 128
| |
| | | Echo Request
| |
| | | RFC 4443
| |
| |-
| |
| | | 129
| |
| | | Echo Reply
| |
| | | RFC 4443
| |
| |-
| |
| | | 130
| |
| | | Multicast Listener Query
| |
| | | RFC 2710 und RFC 3810
| |
| |-
| |
| | | 131
| |
| | | Version 1 Multicast Listener Report
| |
| | | RFC 2710
| |
| |-
| |
| | | 132
| |
| | | Multicast Listener Done
| |
| | | RFC 2710
| |
| |-
| |
| | | 133
| |
| | | Router Solicitation
| |
| | | RFC 4861
| |
| |-
| |
| | | 134
| |
| | | Router Advertisement
| |
| | | RFC 4861
| |
| |-
| |
| | | 135
| |
| | | Neighbor Solicitation
| |
| | | RFC 4861
| |
| |-
| |
| | | 136
| |
| | | Neighbor Advertisement
| |
| | | RFC 4861
| |
| |-
| |
| | | 137
| |
| | | Redirect
| |
| | | RFC 4861
| |
| |-
| |
| | | 138
| |
| | | Router Renumbering
| |
| | |
| |
| |-
| |
| | | 139
| |
| | | ICMP Node Information Query
| |
| | | RFC 4620
| |
| |-
| |
| | | 140
| |
| | | ICMP Node Information Response
| |
| | | RFC 4620
| |
| |-
| |
| | | 141
| |
| | | Inverse Neighbor Discovery Solicitation Message
| |
| | | RFC 3122
| |
| |-
| |
| | | 142
| |
| | | Inverse Neighbor Discovery Advertisement Message
| |
| | | RFC 3122
| |
| |-
| |
| | | 143
| |
| | | Version 2 Multicast Listener Report
| |
| | | RFC 3810
| |
| |-
| |
| | | 144
| |
| | | Home Agent Address Discovery Request Message
| |
| | | RFC 3775
| |
| |-
| |
| | | 145
| |
| | | Home Agent Address Discovery Reply Message
| |
| | | RFC 3775
| |
| |-
| |
| | | 146
| |
| | | Mobile Prefix Solicitation
| |
| | | RFC 3775
| |
| |-
| |
| | | 147
| |
| | | Mobile Prefix Advertisement
| |
| | | RFC 3775
| |
| |-
| |
| | | 148
| |
| | | Certification Path Solicitation Message
| |
| | | RFC 3971
| |
| |-
| |
| | | 149
| |
| | | Certification Path Advertisement Message
| |
| | | RFC 3971
| |
| |-
| |
| | | 150
| |
| | | ICMP messages utilized by experimental mobility protocols such as Seamoby
| |
| | | RFC 4065
| |
| |-
| |
| | | 151
| |
| | | Multicast Router Advertisement
| |
| | | RFC 4286
| |
| |-
| |
| | | 152
| |
| | | Multicast Router Solicitation
| |
| | | RFC 4286
| |
| |-
| |
| | | 153
| |
| | | Multicast Router Termination
| |
| | | RFC 4286
| |
| |-
| |
| | | 200
| |
| | | Private experimentation
| |
| | |
| |
| |-
| |
| | | 201
| |
| | | Private experimentation
| |
| | |
| |
| |-
| |
| | | 255
| |
| | | Reserved for expansion of ICMPv6 informational messages
| |
| | |
| |
|
| |
|
| |
| |-
| |
| |}
| |
| ===== Prüfsumme =====
| |
|
| |
| <div >''Prüfsummen-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | colspan="4" | IPv6-Absender-Adresse
| |
| |-
| |
| || '''32'''
| |
| |-
| |
| || '''64'''
| |
| |-
| |
| || '''96'''
| |
| |-
| |
| | | '''128'''
| |
| | colspan="4" | IPv6-Ziel-Adresse
| |
| |-
| |
| || '''160'''
| |
| |-
| |
| || '''192'''
| |
| |-
| |
| || '''224'''
| |
| |-
| |
| | | '''256'''
| |
| | colspan="4" | IPv6-Nutzlast-Größe
| |
| |-
| |
| | | '''288'''
| |
| | colspan="3" | Checksumme 0
| |
| | | Next Header 58
| |
| |-
| |
| |}
| |
| Die Prüfsumme (engl. checksum) eines ICMPv6-Pakets ist ein 16-Bit-Einerkomplement der Summe des Einerkomplements der gesamten ICMPv6-Nachricht.
| |
|
| |
| Zusätzlich zur Nachricht wird noch ein IPv6-Pseudoheader vorne angehängt.
| |
|
| |
| Zur Berechnung der Prüfsumme wird das Prüfsummenfeld auf 0 gesetzt. Der zur Berechnung der Prüfsumme verwendete Pseudoheader sieht wie im Schema nebenan aus.
| |
|
| |
| Dies ist eine der Neuerungen von ICMPv6 gegenüber ICMP, wo die Prüfsumme nur über den ICMP-Header berechnet wurde.
| |
|
| |
| ==== ICMPv6-Verarbeitung ====
| |
|
| |
| Für die Verarbeitung von ICMPv6-Nachrichten gelten folgende Regeln:* Unbekannte ICMPv6-Fehlernachrichten müssen an die darüberliegende Netzwerkschicht weitergereicht werden.
| |
| * Unbekannte ICMPv6-Informationsnachrichten müssen kommentarlos verworfen werden.
| |
| * Jeder Fehlernachricht wird am Ende so viel wie möglich des fehlerverursachenden Pakets angehängt.
| |
| * Die Protokollnummer zum Weiterreichen von unbekannten Fehlernachrichten wird aus dem angehängten Originalpaket entnommen.
| |
| * Auf folgende Pakete werden keine Fehlernachrichten versandt:
| |
| ** Fehlernachrichten
| |
| ** Pakete an Multicast-, Link-Level-Multicast- oder Link-Level-Broadcast-Adressen mit folgenden Ausnahmen:
| |
| *** Packet-Too-Big-Nachrichten
| |
| *** Parameter-Problem-Nachrichten mit Code 2 – unbekannte IPv6-Option
| |
| * Das Netz darf nicht mit ICMPv6-Fehlernachrichten geflutet werden.
| |
|
| |
|
| |
|
| |
| ==== ICMP-Standard-Typen ====
| |
|
| |
| ===== Destination Unreachable – Type 1 =====
| |
|
| |
| <div >''Destination-Unreachable-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="4" | Unbenutzt
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Fehlerhaftes Paket
| |
| |-
| |
| |}
| |
| Destination-Unreachable-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte. * Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine Destination Unreachable versandt werden.
| |
| * Wenn das Paket wegen fehlender Routen nicht ausgeliefert wurde, wird der Code 0 gesetzt.
| |
| * Ist das Ausliefern administrativ verboten (Firewall), wird der Code 1 gesetzt.
| |
| * Wenn der Router die IPv6-Adresse nicht auflösen kann, oder ein Problem mit dem Link hat, wird der Code 3 gesetzt.
| |
| * Wenn ein Zielhost für ein UDP-Paket keinen Listener hat, sollte er ein Destination Unreachable mit Code 4 versenden.
| |
| * Wenn ein Destination Unreachable empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden.
| |
|
| |
|
| |
|
| |
| ===== Packet Too Big – Type 2 =====
| |
|
| |
| <div >''Packet-Too-Big-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="4" | MTU
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Fehlerhaftes Paket
| |
| |-
| |
| |}
| |
| Eine Packet-Too-Big-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale MTU des Links, über den es versendet werden soll.
| |
|
| |
| Packet-Too-Big-Nachrichten werden vom Path MTU Discovery dazu gebraucht, um die pfadabhängige MTU zu ermitteln.
| |
|
| |
| Der Code sollte vom Sender auf 0 gesetzt und vom Empfänger ignoriert werden.
| |
|
| |
| Wenn ein Packet Too Big empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden.
| |
|
| |
| ===== Time Exceeded – Type 3 =====
| |
|
| |
| <div >''Time-Exceeded-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="4" | Unbenutzt
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Fehlerhaftes Paket
| |
| |-
| |
| |}
| |
| Wenn ein Router ein Paket mit einem Hop-Limit von 0 erhält, oder sie auf 0 verkleinert, muss er das Paket verwerfen und ein Time Exceeded mit Code 0 versenden.
| |
|
| |
| Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit.
| |
|
| |
| Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein Time Exceeded mit Code 1 versendet werden.
| |
|
| |
| ===== Parameter Problem – Type 4 =====
| |
|
| |
| <div >''Parameter-Problem-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="4" | Pointer
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Fehlerhaftes Paket
| |
| |-
| |
| |}
| |
| Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine Parameter-Problem-Nachricht verschicken.
| |
|
| |
| Mit dem Code wird dabei die Art des Problems genauer beschrieben.
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | 0
| |
| | | Fehlerhaftes Header-Feld gefunden
| |
| |-
| |
| | | 1
| |
| | | Unbekannter Next-Header-Typ gefunden
| |
| |-
| |
| | | 2
| |
| | | Unbekannte IPv6-Option
| |
| |-
| |
| |}
| |
| Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist.
| |
|
| |
| ===== Echo Request – Type 128 =====
| |
|
| |
| <div >''Echo-Request-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="2" | Identifikation
| |
| | colspan="2" | Sequenznummer
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Daten
| |
| |-
| |
| |}
| |
| Mit einem Echo Request wird um eine Antwort gebeten. Ein Echo Request ist nichts anderes als ein simpler Ping.
| |
|
| |
| Das Datenfeld kann mit Daten vergrößert werden, um größere Pakete zu produzieren. So kann man zum Beispiel die MTU ermitteln.
| |
|
| |
| Jedes System muss auf Echo Requests reagieren und mit Echo Replies antworten. Auch sollte jedes System eine Anwendung zum Versenden und Empfangen von Echo Request/Replies besitzen.
| |
|
| |
| Empfangene Echo Request können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen.
| |
|
| |
| ===== Echo Reply – Type 129 =====
| |
|
| |
| <div >''Echo-Reply-Schema''</div>
| |
|
| |
|
| |
| {|
| |
| |-
| |
| | | '''+'''
| |
| | | '''Bits 0–7'''
| |
| | | '''Bits 8–15'''
| |
| | | '''Bits 16–23'''
| |
| | | '''Bits 24–31'''
| |
| |-
| |
| | | '''0'''
| |
| | | Type
| |
| | | Code
| |
| | colspan="2" | Prüfsumme
| |
| |-
| |
| | | '''32'''
| |
| | colspan="2" | Identifikation
| |
| | colspan="2" | Sequenznummer
| |
| |-
| |
| | | '''…'''
| |
| | colspan="4" | Daten
| |
| |-
| |
| |}
| |
| Auf eine Echo-Request-Nachricht muss mit einem Echo Reply geantwortet werden. Das Paket ist bis auf das Typenfeld dasselbe. Echo-Reply-Nachrichten sollen nur an Unicast-Adressen verschickt werden.
| |
|
| |
| Anhand der Identifikation und der Sequenznummer wird der Empfänger die Antworten zu seinen Anfragen zuordnen können.
| |
|
| |
| Empfangene Echo-Reply-Nachrichten müssen an die Anwendung weitergereicht werden, die den zugehörigen Echo Request versendet hat.
| |
|
| |
| An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden.
| |
|
| |
| ===== Multicast Listener Discovery – Type 130 =====
| |
|
| |
| MLD ist die Implementation von IGMP (IPv4) in IPv6. Es wird also genutzt um Multicast Abonnements zu verwalten. Dabei entspricht MLDv1 IGMPv2 und MLDv2 IGMPv3.
| |
|
| |
| Bei den jeweils neueren Versionen lässt sich bestimmen, welche Quell-Adressen für Multicast-Steams akzeptabel sind. Linux unterstützt es seit 2003 (2.5.68), Windows seit 2006 (Vista), FreeBSD seit 2009 (8.0)
| |
|
| |
| ==== Weblinks ====
| |
|
| |
| * RFC 4861 – Neighbor Discovery for IP Version 6 (IPv6) https://tools.ietf.org/html/rfc4861
| |
| * RFC 4443 – Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification https://tools.ietf.org/html/rfc4443
| |
| * RFC 3122 – Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification https://tools.ietf.org/html/rfc3122
| |
| * IANA ICMP Parameters – vollständige Liste der ICMPv6-Typen und -Codes http://www.iana.org/assignments/icmpv6-parameters
| |
| * RFC 4890 – Recommendations for Filtering ICMPv6 Messages in Firewalls https://tools.ietf.org/html/rfc4890
| |
|
| |
|
| | ==== Links ==== |
| | ===== Weblinks ===== |
| | # https://de.wikipedia.org/wiki/ICMPv6 |
| | # [https://www.iana.org/assignments/icmpv6-parameters IANA ICMP Parameters] - Vollständige Liste der ICMPv6-Typen und -Codes |
|
| |
|
| [[Kategorie:Abkürzung]]
| |
| [[Kategorie:IPv6/ICMP]] | | [[Kategorie:IPv6/ICMP]] |
| </noinclude> | | </noinclude> |