Fragmentierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Fragmentierung

Die IP-Fragmentierung ermöglicht den Transport von Datagrammen über Netzabschnitte, deren maximale Übertragungseinheit (MTU) kleiner ist als die ursprüngliche Paketgröße.

Identification

  • Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem Datengramm ein neu angekommenes Fragment gehört.
  • Alle Fragmente eines Datengramms enthalten die gleiche Identifikation.

Flags

  • Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits namens DF (Don't Fragment) und MF (More Fragments).
  • Das erste Bit des Flags-Feldes ist ungenutzt bzw. reserviert.
  • Die beiden Bits DF und MF steuern die Behandlung eines Pakets im Falle einer Fragmentierung.
  • Mit dem DF-Bit wird signalisiert, dass das Datengramm nicht fragmentiert werden darf.
    • Dies gilt auch dann, wenn das Paket dann eventuell nicht mehr weiter transportiert werden kann und verworfen werden muss.
    • Alle Hosts müssen Fragmente bzw. Datengramme mit einer Größe von 576 Bytes oder weniger verarbeiten können.
  • Mit dem MF-Bit wird angezeigt, ob einem IP-Paket weitere Teilpakete nachfolgen.
    • Dieses Bit ist bei allen Fragmenten außer dem letzten gesetzt.

Fragment Offset

  • Der Fragmentabstand (Fragment Offset) bezeichnet, an welcher Stelle relativ zum Beginn des gesamten Datengramms ein Fragment gehört.
  • Mit Hilfe dieser Angabe kann der Zielhost das Originalpaket wieder aus den Fragmenten zusammensetzen.
  • Da dieses Feld nur 13 Bit groß ist, können maximal 8192 Fragmente pro Datengramm erstellt werden.
  • Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte sein.
  • Dies ist die elementare Fragmenteinheit.


Routing

Fragmentierung

Realität der Fragmentierung in modernen Netzen

In der heutigen Netzwerkpraxis ist die IP-Fragmentierung nahezu vollständig verdrängt worden. Das liegt vor allem daran, dass moderne Betriebssysteme das DF-Bit (Don't Fragment) im IP-Header standardmäßig auf 1 setzen.

  • Das DF-Bit-Dilemma: Da fast alle Pakete mit gesetztem DF-Bit versendet werden, darf ein Router sie nicht fragmentieren, selbst wenn die MTU des nächsten Hops zu klein ist. Er verwirft das Paket stattdessen.
  • ICMP "Fragmentation Needed": Wenn ein Router ein Paket wegen des DF-Bits verwirft, sendet er eine ICMP-Nachricht (Type 3, Code 4) an den Absender zurück. Diese enthält die maximal erlaubte MTU für diesen Abschnitt.
  • Path MTU Discovery (PMTUD): Der sendende Host nutzt diese ICMP-Rückmeldungen, um seine Paketgröße dynamisch nach unten zu korrigieren. Erst wenn dieser Mechanismus (z. B. durch Firewalls, die ICMP blockieren) scheitert, entstehen die typischen "MTU-Black-Holes" (Verbindungsaufbau klappt, aber Datenübertragung stockt).


Alternativen zur Vermeidung

Um sicherzustellen, dass Pakete gar nicht erst fragmentiert werden müssen, kommen zwei Techniken zum Einsatz:

  • MSS Clamping: Vor allem bei DSL-Verbindungen (PPPoE) reduzieren Router den MSS-Wert (Maximum Segment Size) im TCP-Handshake künstlich. Dadurch "denken" die Endgeräte, sie müssten kleinere Pakete schicken, und die MTU-Grenze wird nie erreicht.
  • IPv6-Standard: In IPv6 wurde die Fragmentierung durch Router komplett abgeschafft. Hier ist PMTUD zwingend vorgeschrieben; Router leiten zu große Pakete niemals fragmentiert weiter, sondern verwerfen sie immer mit einer entsprechenden Fehlermeldung.