Zum Hauptinhalt springen

8. Host Fragmentation (Host-Fragmentierung)

Paketisierungsschichten SOLLTEN das Senden von Nachrichten vermeiden, die Fragmentierung [Kent87] [frag-errors] erfordern. Es ist jedoch nicht immer möglich, Fragmentierung vollständig zu verhindern. Einige Paketisierungsschichten, wie eine UDP-Anwendung außerhalb des Kernels, können möglicherweise die Größe der von ihnen gesendeten Nachrichten nicht ändern, was zu Datagrammgrößen führt, die den Path MTU überschreiten.

IPv4 erlaubte solchen Anwendungen, Pakete ohne gesetztes DF-Bit zu senden. Überdimensionierte Pakete ohne gesetztes DF-Bit würden im Netzwerk oder auf dem sendenden Host fragmentiert werden, wenn sie auf einen Link mit einem MTU stoßen, der kleiner als das Paket ist. In einigen Fällen könnten Pakete mehr als einmal fragmentiert werden, wenn es kaskadierte Links mit progressiv kleineren MTUs gab. Dieser Ansatz wird NICHT EMPFOHLEN.

Es wird EMPFOHLEN, dass IPv4-Implementierungen eine Strategie verwenden, die IPv6-Funktionalität nachahmt. Wenn eine Anwendung Datagramme sendet, die größer als der effektive Path MTU sind, SOLLTEN sie auf den Path MTU in der Host-IP-Schicht fragmentiert werden, auch wenn sie kleiner als der MTU des ersten Links sind, der direkt an den Host angeschlossen ist. Das DF-Bit SOLLTE auf den Fragmenten gesetzt werden, damit sie nicht erneut im Netzwerk fragmentiert werden. Diese Technik minimiert die Wahrscheinlichkeit, dass Anwendungen auf IPv4-Fragmentierung in einer Weise angewiesen sind, die in IPv6 nicht implementiert werden kann. Mindestens ein großes Betriebssystem verwendet bereits diese Strategie. Abschnitt 9 beschreibt einige Ausnahmen von dieser Regel, wenn die Anwendung überdimensionierte Pakete zu Sondierungs- oder Diagnosezwecken sendet.

Da Protokolle, die PLPMTUD nicht implementieren, immer noch Problemen aufgrund von ICMP-Black-Holes unterliegen, kann es wünschenswert sein, diese Protokolle auf "sichere" MTUs zu beschränken, die wahrscheinlich auf jedem Pfad funktionieren (z. B. 1280 Bytes). Erlauben Sie jedem Protokoll, das PLPMTUD implementiert, über den vollen Bereich zu arbeiten, der von der unteren Schicht unterstützt wird.

Beachten Sie, dass IP-Fragmentierung Daten in Pakete aufteilt, daher ist sie minimal eine Paketisierungsschicht. Sie hat jedoch keinen Mechanismus zur Erkennung verlorener Pakete, daher kann sie keine native Implementierung von PLPMTUD unterstützen. Fragmentierungsbasiertes PLPMTUD erfordert ein Zusatzprotokoll, wie in Abschnitt 10.3 beschrieben.