<style> .reveal .slides { background: url(https://hedgedoc.xinux.net/uploads/xinux-weiss.png) no-repeat; background-position: right 10px bottom 10px; background-size: 80px; } .reveal section { text-align: left; padding: 20px 40px !important; } .reveal h2 { font-size: 34px !important; margin-bottom: 10px !important; } .reveal ul li { font-size: 26px !important; line-height: 1.25 !important; margin-bottom: 6px !important; } .reveal code { font-size: 24px !important; } .reveal pre { white-space: pre-wrap !important; word-break: break-word !important; overflow: visible !important; } </style> ## MTU - MTU ist entscheidend für Datenübertragung in Netzwerken - Definiert Umfang der Nutzlast in Netzwerkschicht (OSI 3) - Datagramm umfasst gesamtes Paket der OSI-Schicht 3 (z.B. IPv6 + TCP + Nutzdaten) - MTU-Länge in Bytes (Einheit oft weggelassen, z.B. MTU 1500) --- ## Ethernet Frame - Ethernet-Frame-Länge aus Header (14 Bytes), Netzwerkschicht-Paket (1500 Bytes) und Trailer (4 Bytes) - Bei VLAN bleibt MTU unbeeinflusst, auch wenn Ethernet-Header um 4 Bytes langes VLAN-Tag ergänzt wird --- ## Schaubild ![](https://hedgedoc.xinux.net/uploads/76f9caae-184c-415f-b232-987caf1b8fdd.png) --- ## MSS - MSS berechnet sich aus MTU minus IP-Header minus TCP-Header - MTU errechnet sich aus IP-Header plus TCP-Header plus Daten - Herausforderung: Daten so verschachteln, dass MTU nicht überschritten wird - Empfehlung: Anwendung „kleiner packen“ bei Bedarf --- ## Fragmentierung in IPv4 - **Don't Fragment (DF)-Feld** im IPv4-Header reguliert IP-Paket-Fragmentierung - Bei gesetztem DF-Bit: Keine automatische Fragmentierung - Router sendet ICMP-Fehler *Type 3, Code 4* – „Destination Unreachable: Fragmentation Needed, DF Set“ - Sender reduziert daraufhin die Paketgröße - Ohne DF-Bit: Router darf fragmentieren - Nachteil: Verlust eines Fragments → Neuanforderung des gesamten Pakets (hoher Overhead) --- ## Fragmentierung in IPv6 - IPv6-Header enthält **kein DF-Bit** - Fragmentierung erfolgt **nur durch den Absender (Host)**, niemals durch Router - Router, die zu große Pakete nicht weiterleiten können, senden: → **ICMPv6 Type 2 (Packet Too Big)** - Sender passt anschließend die Paketgröße an - IPv6-Router fragmentieren **nie** (Designentscheidung für Performance & Sicherheit) --- ## MTU Path Discovery (PMTUD) - Mechanismus zur Ermittlung der kleinsten MTU auf dem Übertragungsweg - Sender sendet große Pakete → Router antwortet mit ICMPv6 *Packet Too Big* - Sender reduziert Paketgröße, bis Übertragung ohne Fehler gelingt - PMTUD arbeitet dynamisch pro Zielroute - RFC 8201 beschreibt PMTUD für IPv6 --- ## ICMPv6 und MTU - ICMPv6 ist für PMTUD unverzichtbar - Typ 2: Packet Too Big - Enthält die maximale MTU des nächsten Hops - Blockierte ICMPv6-Nachrichten → PMTUD funktioniert nicht → Verbindungsabbrüche! - Firewalls müssen ICMPv6 Type 2 explizit erlauben --- ## Beispiel – Packet Too Big [Hier Bild] - Host sendet 1500-Byte-Paket - Router kann nur 1280 weiterleiten - Router antwortet mit ICMPv6 *Packet Too Big (MTU=1280)* - Host reduziert MTU für diese Route auf 1280 --- ## IPv6 Minimal MTU - IPv6 verlangt **minimale MTU von 1280 Bytes** - Geräte müssen mindestens 1280 Byte empfangen und verarbeiten können - Kleinere MTUs dürfen nur genutzt werden, wenn Fragmentierung möglich ist - Fragmentierungs-Header (Next Header = 44) kann genutzt werden, um Paket aufzuteilen --- ## Fragmentierungs-Header - Wird nur verwendet, wenn Host fragmentiert - Enthält: - Fragment Offset - More Fragments Flag - Identification Field - Fragment Identification bleibt pro Datenstrom eindeutig - RFC 8200 beschreibt Aufbau und Verhalten --- ## Fragmentierung vom Absender – Beispiel - Ursprüngliches Paket 2000 Byte - MTU im Pfad: 1280 - Host erzeugt zwei Fragmente: - Fragment 1: 1280 Byte - Fragment 2: 720 Byte - Empfänger setzt Fragmente wieder zusammen --- ## Path MTU Discovery (PMTUD) - Wird vom **Kernel** automatisch durchgeführt - Router senden **ICMPv6 Type 2 – "Packet Too Big"**, wenn ein Paket zu groß ist - Der Kernel **merkt sich die kleinere MTU** im Routing-Cache - Danach sendet er alle Pakete kleiner oder gleich dieser MTU - Funktioniert nur, wenn ICMPv6 nicht gefiltert wird 💡 **Merksatz:** Der Kernel testet nicht – er **lernt passiv** durch ICMP-Meldungen. --- ## Packetization Layer PMTUD (PLPMTUD) - Wird vom **Transportprotokoll oder der Anwendung** ausgeführt - **Testet aktiv** mit unterschiedlichen Paketgrößen - Erkennt fehlende Antworten / Timeouts und **passt Größe selbst an** - Funktioniert auch, wenn ICMPv6 blockiert ist - Definiert in **RFC 4821** 💡 **Merksatz:** Wenn Router nichts sagen dürfen, **testet die Anwendung selbst** --- ## Typische Probleme in der Praxis - ICMPv6 blockiert → PMTUD bricht zusammen - MTU-Mismatch zwischen VLANs/Tunneln - VPNs (IPsec, GRE) reduzieren effektive MTU - Jumbo Frames ohne Ende-zu-Ende-Support → Paketverlust - Lösung: `tracepath6` oder `ping6 -s` zur Ermittlung der funktionalen MTU --- ## Praxisbefehle - **Linux** ``` ip link show dev eth0 ip link set dev eth0 mtu 1400 ping6 -s 1472 fe80::1%eth0 tracepath6 2001:db8::1 ``` - **Cisco IOS** ``` show ipv6 interface ping ipv6 2001:db8::1 size 1400 df-bit ``` --- ## Zusammenfassung - MTU bestimmt maximale Nutzlast eines Frames - IPv6 fragmentiert nur am Sender - Router senden ICMPv6 *Packet Too Big* statt selbst zu fragmentieren - PMTUD und ICMPv6 Type 2 sind zwingend erforderlich - Blockiertes ICMPv6 = defekte Verbindungen - Empfehlung: MTU testen und ICMPv6-Filter prüfen
{"title":"IPv6 – MTU und Fragmentierung","author":"Thomas Will","date":"2025-10-15"}