Es findet keine IPv6-Fragmentierung statt

502
mius

Ich habe ein Testnetz mit 2 Linux-PCs als Router und 2 Linux-PCs als normale Clients eingerichtet. Die 2 Router sind miteinander verbunden und jeder Client ist mit einem Router verbunden. Auf dem Pfad vom Client zu einem der Router ist die MTU 1500, zwischen den beiden Routern jedoch 1200. Außerdem verwende ich nur IPv6.

Wenn ich jetzt versuche, ein Paket zu senden, das größer als 1200 Byte ist, erwarte ich einen ICMPv6-Fehler "Paket zu groß" vom Router und der Client sollte das Paket dann fragmentieren und versuchen, es erneut zu senden. Dies geschieht jedoch nicht. Wenn ich mir Wireshark anschaue, kann ich sehen, dass der Client die ICMPv6-Fehler empfängt. Der Client versucht jedoch nicht, die Pakete als Fragmente erneut zu senden.

Was könnte der Grund für dieses Verhalten sein?

1
Mögliches Duplikat von [IPsec-Tunnel-MTU zu klein] (https://superuser.com/questions/1312594/ipsec-tunnel-mtu-too-small) Michael Hampton vor 6 Jahren 1
(Schlechte) Filterung auf der Clientseite, die ICMP-Pakete herausfiltert? Patrick Mevzek vor 6 Jahren 0
Siehe https://tools.ietf.org/html/rfc8201 und insbesondere: "Knoten, die Path MTU Discovery implementieren und Pakete, die größer sind als die minimale IPv6-Link-MTU, sind anfällig für problematische Konnektivität, wenn ICMPv6 [ICMPv6] -Nachrichten blockiert oder nicht übertragen werden. Dies führt zum Beispiel zu Verbindungen, die den TCP-Dreiwege-Handshake ordnungsgemäß abschließen, dann aber hängen bleiben, wenn Daten übertragen werden. Dieser Status wird als Black-Hole-Verbindung bezeichnet [RFC2923]. Pfad MTU Discovery basiert auf ICMPv6-Paket zu groß ( PTB), um die MTU des Pfads zu bestimmen. " Patrick Mevzek vor 6 Jahren 0

1 Antwort auf die Frage

2
Zac67

IPv6 unterstützt keine Fragmentierung.

Bei IPv4 kann ein Router ein Paket fragmentieren, wenn er von einer Verbindung zu einer anderen Verbindung mit einer kleineren MTU weitergeleitet wird (es sei denn, DF ist festgelegt).

Bei IPv6 müssen die Endpunkte Path MTU Discovery verwenden, um es selbst herauszufinden und diese MTU dann untereinander zu verwenden ...

Bearbeiten nach @Patrick Mevzeks hoch geschätzte Kommentare:

... oder nutzen Sie die garantierte MTU für IPv6 von 1280 Byte (mit oder ohne Fragmentierung des Pakets auf dem Host).

Router fragmentieren nicht, aber Hosts können dies. Siehe RFC8200 Punkt 5: "Es wird dringend empfohlen, dass IPv6-Knoten Path MTU Discovery [RFC8201] implementieren, um Pfad-MTUs mit mehr als 1280 Oktetten zu erkennen und zu nutzen. Eine minimale IPv6-Implementierung (z. B. in einem Boot-ROM) kann sich einfach darauf beschränken, Pakete zu senden, die nicht größer als 1280 Oktette sind, und die Implementierung von Path MTU Discovery auszulassen. " PMTUD wird dringend empfohlen, nicht zwingend. Endknoten können den IPv6-Fragmentheader verwenden, um Pakete zu senden, die größer als die MTU des Pfads sind. Patrick Mevzek vor 6 Jahren 0
Danke, dass Sie darauf hingewiesen haben - ich würde diese Fragmentierung jedoch nicht nennen: Der v6-Header bietet keine Möglichkeit zur Fragmentierung, und der 'minimale' Client verwendet nur eine quaranteed-to-work-MTU. Zac67 vor 6 Jahren 0
Es wird als IPv6-Fragmentheader bezeichnet. Wenn dies keine Fragmentierung ist, weiß ich nicht, was es ist. Es gibt keinen "v6-Header", bei dem IPv6-Header eine Kette bilden, die auf den benötigten Funktionen basiert. Patrick Mevzek vor 6 Jahren 0
Anscheinend habe ich das vermisst - nochmals vielen Dank. Ich habe das noch nicht im wirklichen Leben gesehen, aber jetzt bin ich vorbereitet. Zac67 vor 6 Jahren 0