1.4.2. Fragmentierung

IP-Datagramme werden über vielfältige Technologien transportiert. Dabei gibt es unterschiedliche Festlegungen hinsichtlich der maximal zulässigen Länge eines Pakets.
Dieser Wert wird als Maximum Transmission Unit bezeichnet und üblicherweise zusammen mit der zu verwendenden Übertragungstechnologie (Ethernet, SLIP, PPP, ...) konfiguriert.

Wenn zwei Systeme am gleichen Netz miteinander kommunizieren, ergibt sich daraus kein Problem, weil ja beide diesen MTU-Wert kennen (und einhalten).
Bei dem typischen Fall einer Verbindung über mehrere (unterschiedliche) Netze hinweg kann es aber durchaus vorkommen, daß an einer bestimmten Stelle des Weges Netze durchlaufen werden, die eine kleinere MTU als das Ursprungsnetz haben. Eine mögliche Lösung dieses Problems würde darin bestehen, den "nichtlokalen" Verkehr grundsätzlich mit der kleinsten irgendwo vorkommenden MTU abzuschicken. Abgesehen davon, daß dieser Wert nicht standardisiert ist, würde man einen großen "Overhead" durch die kurzen Pakete in Kauf nehmen.

Man hat daher im IP-Protokoll eine Möglichkeit vorgesehen, größere Pakete auch "unterwegs" in mehrere kleine aufzuteilen, wie das folgende Beispiel zeigt:

Host A möchte an Host B ein IP-Datagramm mit einer IP-Nutzlast von 1400 Byte schicken. Der mit H bezeichnete IP-Kopf hat ohne Optionen eine Länge von 20 Byte, so daß das gesamte IP-Datagramm eine Länge von 1420 Byte hat. Es ergibt sich nun folgender Ablauf:

  1. Host A schickt das Datagramm auf einem Ethernet-LAN mit einer MTU von 1500 Byte ab. Daraus resultiert also noch kein Problem.

  2. Router R1 muß aber feststellen, daß das nächste Netz (Netz 2) nur eine MTU von 620 Byte hat. Das Datagramm muß also in drei Teile aufgeteilt werden. Es werden zwei Fragmente mit dieser maximalen Größe (600 Byte Nutzlast + 20 Byte IP-Kopf) sowie ein kleineres "Rest-Paket" gebildet.

  3. Vom Router R2 aus wird das Ziel (Host B) wieder über ein Ethernet-LAN erreicht. Man könnte annehmen, daß R2 sinnvollerweise die "Bruchstücke" wieder zusammensetzt und als ein IP-Datagramm über Netz 3 an Host B zustellt. Das tut er aber nicht!
    Router R2 schickt die drei IP-Pakete separat weiter an Host B.

  4. Erst im Zielrechner (Host B) werden die drei Teile wieder zusammengesetzt (reassembliert).
Den Grund für diese scheinbar nicht sehr geschickte Verfahrensweise zeigt eine etwas modifizierte Konstellation:

Host B ist jetzt über zwei verschiedene Wege an das Netz angeschlossen (multihomed host). Jetzt kann es passieren, daß z.B. die ersten beiden Fragmente über R3 kommen, das letzte aber über R2.
Keiner der beteiligten Router "sieht" alle Bruckstücke, die Reassemblierung ist wirklich nur am Ziel möglich.

Keine Regel ist ganz ohne Ausnahme:

Wenn der "Router" nicht nur "routet", sondern auch andere Funktionen ausführt, kann es sinnvoll oder sogar erforderlich sein, die Fragmente schon in der "Zwischenstation" wieder zusammenzufügen. Das ist immer dann gegeben, wenn Informationen höherer Schichten (in der Hauptsache die TCP/UDP-Portnummern) ausgewertet werden sollen:

Details zu diesen Verfahren werden wir in späteren Kapiteln behandeln. Es versteht sich, daß jetzt alternative Wege ("Umgehungen") ausgeschlossen werden müssen.
Die Felder Identifikation, Flags und Fragment-Offset im IP-Kopf ermöglichen die korrekte Interpretation der "Einzelteile" (Fragmente) durch den Empfänger:


Frage 1.4.2.1.:

Warum numeriert man nicht einfach die Fragmente durch (0, 1, 2 ...)?


Frage 1.4.2.2.:

Welche Nachteile hat die Fragmentierung?


Die Möglichkeit der Fragmentierung trägt zwar zur Robustheit des IP-Protokolls in schwierigen Netzsituationen bei, wegen der Nachteile wäre es aber besser, wenn der Absender gleich die "optimale" Paketlänge wählt, d.h. die maximale Paketlänge, die "gerade noch" ohne Fragmentierung transportiert wird.

Modernere IP-Implementierungen bedienen sich eines Hilfsprotokolls namens Path MTU Discovery (PMTUD, RFC 1191), um genau das zu erreichen. Dieses Protokoll geht davon aus, daß es gar nicht so viele gebräuchliche MTU-Werte gibt:

Einige typische MTU-Werte sind:

Ethernet 1500
IEEE 802.3/802.2 (eine Ethernet-Modifikation) 1492
Tokenring 4 Mbit/s 4464
Tokenring 16 Mbit/s 17914
FDDI 4352
X.25 576 ...
ATM/AAL5 9820 ...
SLIP/PPP 296 ...

Bei den drei letzten Technologien sind auch andere Werte konfigurierbar.


© Uwe Hübner, 29.09.96