MTU - Maximum Transfer Unit

Die Protokolle TCP/IP unterteilen die Daten, die von den Anwendungen kommen in kleine Pakete, bevor sie dann einem Übertragungssystem übergeben werden. Da jedes Übertragungssystem mit einer anderen Paketgröße bzw. Paketlänge arbeitet, muss immer wieder eine Anpassung erfolgen. Die MTU gibt die maximale IP-Paketlänge/-größe für einen bestimmten Netzwerktyp bzw. eines Übertragungssystems an. Generell gilt, nach oben hin ist die MTU durch das Netzwerk beschränkt. Sie darf aber kleiner sein. Je kleiner sie ist, desto größer ist aber auch die Fragmentierung der Nutzdaten (MSS, Maximum Segment Size).

Unterschied: MTU und MSS

Unterschied zwischen MTU und MSS

Im Zusammenhang mit MTU fällt häufig die Bezeichnung MSS (Maximum Segment Size). Beide darf man nicht verwechseln. Sie stehen in direktem Zusammenhang. Die MTU gibt die Größe des kompletten TCP/IP-Paketes an. Die MSS gibt nur den Platz für die Nutzdaten im TCP/IP-Paket an. Üblicherweise ist der IP-Header und TCP-Header jeweils 20 Byte groß, wenn die Header-Felder Options nicht genutzt werden. Also zusammen mindestens 40 Byte.

Fragmentierung

IP übernimmt die Aufgabe, für die Netzwerkschnittstelle, die Datenpakete bei Bedarf in kleinere Einheiten aufzuteilen. Diesen Vorgang nennt man Fragmentierung. Er ist wesentlicher Bestandteil des Internet Protocols (IP). Für die MTUs gibt es hardwareabhängige Werte, die sich je nach Netzwerktyp unterscheiden.

Gründe für die Fragmentierung

  • Herstellung der Kompatibilität unterschiedlicher Hardware, Software, Protokolle und Übertragungssysteme
  • Maßnahme zur Fehlerreduzierung
  • Begrenzung der Zugriffszeit und somit Erhöhung der Zugriffsgerechtigkeit auf das Übertragungsmedium

Beispiele für MTU und MSS (bei TCP/IP)

Netzwerktyp MTU MSS
IEEE 802.3 (PPPoE-Implementierung / DSL) ≤ 1.492 Byte 1.452 Byte
Ethernet (V2 Frame Format) 1.500 Byte 1.460 Byte
WLAN (IEEE 802.11) 2.312 Byte  
Token Ring (4 MBit/s) 4.464 Byte  
Token Ring (16 MBit/s) 17.914 Byte  
X.25 / analoge Modem-Verbindungen 576 Byte 536 Byte
min. MTU IPv468 Byte  
min. MTU IPv6 1.280 Byte  

Die Länge/Größe eines IP-Pakets muss streng nach der jeweils gültigen MTU eingehalten werden, da die Daten sonst nicht übertragen werden können. Ungünstig eingestellte MTU-Werte können auch sporadische Übertragungsprobleme hervorrufen. Bei der Fehlersuche in IP-Netzen sollte das berücksichtigt werden.

Berechnungsbeispiel

  1460 Byte Nutzdaten (Transportschicht)
+   20 Byte TCP-Header (Transportschicht)
+   20 Byte IPv4-Header (Vermittlungsschicht)
-----------------------------------------------
= 1500 Byte MTU (Nutzdaten von Ethernet)
+   14 Byte Datalink-Header (Sicherungsschicht)
+    4 Byte Frame Check Sequence (FCS)
-----------------------------------------------
= 1518 Byte Ethernet-Frame

Funktionsablauf bei der Fragmentierung

Das IP-Protokoll nimmt die Datenpakete der übergeordneten Transportschicht und zerteilt sie in kleinere Einheiten. Danach bekommt jedes Datenpaket einen IP-Header vorangestellt.
Fragmentierung
Zusammen mit dem IP-Header besteht das IP-Datenpaket aus dem unter der MTU festgelegten Anzahl an Bytes. Das IP-Protokoll auf der Empfängerseite nimmt sich die IP-Pakete und setzt sie wieder in den ursprünglichen Zustand zurück. Dazu werden die Daten zur Fragmentierung aus dem IP-Header gelesen. Das More-Flag (MF) dient als Markierung, ob ein IP-Paket ein Datenteilstück enthält für einen Datenblock. Ist dieses Flag gesetzt, muss das IP-Protokoll warten, bis alle Teilstücke eingetroffen sind. Ist das More-Flag nicht gesetzt, sind die Daten des empfangenen IP-Pakets nicht fragmentiert oder es handelt sich um das letzte Teilstück des Datenblocks. Neben dem More-Flag werden auch Informationen zur Position eines Datenteilstücks mitgeschickt. Dazu dient das Fragment-Offset-Feld im IP-Header.
Sind alle Datenteilstücke eingetroffen wird der Datenblock zusammengesetzt und an das übergeordnete Protokoll übergeben.

Probleme durch die Fragmentierung

Grundsätzlich wird jedem Datenteilstück ein zusätzlicher IP-Header vorangestellt. Wechselt die MTU auf dem Weg zum Ziel mehrmals, wird das Datenpaket jedes mal neu fragmentiert, obwohl es vielleicht schon einmal fragmentiert wurde. Nicht nur, dass die Fragmentierung sehr zeit- und rechenaufwendig ist, zusätzlich wird das Verhältnis zwischen Header und Nutzdaten immer ungünstiger. Je kleiner die MTU, desto größer ist der Verwaltungsanteil an der Übertragungsleistung eines Datenpakets. Irgendwann frisst der IP-Header die effektive Übertragungsleistung einer Netzwerkverbindung auf. Dazu kommt die Anfälligkeit der Netzwerkverbindung bei kleinen Datenblöcken. Das Fehlen eines fragmentierten IP-Pakets kann eine Netzwerkverbindung erheblich stören. Geht ein IP-Paket verloren (z. B. nach ca. 30 bis 40 Sekunden des Nichteintreffens), dann wird der gesamte Datenblock verworfen.

Problem: Ein bestimmter Server ist nicht erreichbar

Über einen DSL-Anschluss ist ein bestimmter Server nicht erreichbar. Vorausgesetzt, es gibt keine Probleme mit DNS und der Server hängt tatsächlich am Netz, dann kann das Problem mit der Maximum Transfer Unit (MTU) zu tun haben.

Der Grund: Bei DSL (Verbindung über DSL-Modem mit PPPoE) ist die MTU auf 1.492 Byte limitiert. Der PC sieht jedoch das lokale Netzwerk per Ethernet mit einer MTU von 1.500 Byte. Diese MTU wird verwendet, um für die Datenpakete die Maximum Segment Size (MSS) zu berechnen, die auch dem entfernten Server mitgeteilt wird. So kann es vorkommen, dass der entfernte Server für die PPPoE-Verbindung zu große Pakete schickt. Da fast alle Übertragungssysteme Fragmentierung verhindern (DF-Bit im IP-Header), melden die Router auf dem Weg zum Absender über ICMP, dass das Paket zu groß war. Beim Ziel-Server verhindert jedoch eine falsch konfigurierte Firewall, dass der Server die ICMP-Nachricht erhält. Und deshalb versucht er immer wieder zu große Pakete zu schicken. Doch leider verhindert die Firewall die Kommunikation über ICMP. So kommt natürlich nie eine Verbindung zustande.

Um das Problem zu beseitigen sollte die Firewall beim Ziel-Server richtig konfiguriert werden. Alternativ kann man bei den betroffenen Clients die MTU verkleinern. Zumindest bei DSL ist eine MTU von 1.492 Byte ein praktikable Größe. Generell sollte es jedoch so sein, dass eine Firewall ICMP-Pakete durchlässt und der Benutzer die Finger von der MTU lässt.
Bei Übertragungssystemen, insbesondere bei IPsec-VPN muss man unter Umständen herumexperimentieren, bis man die richtige MTU fürs Netz und die Clients eingestellt hat.

Prinzipiell wäre es von Vorteil, wenn die MTU gleich von Anfang an richtig gewählt wäre. Das würde den Verbindungsaufbau beschleunigen und unnötige oder zu kleine Pakete vermeiden. Die MTU sollte man aber nicht per Hand festlegen, weil der IP-Stack diesen Wert für jede Verbindung mit Path MTU Discovery selber ermittelt.

Path MTU Discovery / MTU und IPv6

Zu große Datenpakete werden von IPv6-Routern nicht mehr fragmentiert. Ist ein Paket zu groß wird dem Absender eine Fehlermeldung geschickt (MTU Size Error Feedback). Dieser muss dann die maximale Paketlänge (MTU - Maximum Transmissin Unit) anpassen. Dieses Verfahren nennt sich Path MTU Discovery und existiert in ähnlicher Form auch in IPv4. Dort muss im Datenpaket das Don't-Fragment-Flag (DF) gesetzt werden. War in IPv4 dieses Verfahren optional, ist es in IPv6 Pflicht. Kommt es zum Verlust eines Datenpakets oder kommt es zu Fehlern bei der Fragmentierung, schlägt das Path MTU Discovery fehl. In IPv4 wurde die MTU dann auf 68 Byte abgesenkt. Das führte zu einer höheren Paketanzahl und einem unwirtschaftlichen Protokoll-Overhead. IPv6 hat als kleinste einstellbare MTU 1.280 Byte. Dadurch werden die Router nicht mehr unnötig belastet. Selbstverständlich können auch kleinere Pakete als 1.280 Byte übertragen werden.

Die optimale MTU manuell ermitteln (Linux)

Mit folgendem Kommando kann man die optimale MTU ermitteln:

ping -c 1 -s $((1512-28)) -M do www.elektronik-kompendium.de

Es sollte folgende Fehlermeldung ausgegeben werden: "ping: local error: Message too long, mtu=1500"
Das bedeutet, dass die optimale MTU 1.500 Byte lang sein sollte. Anschließend versucht man es noch einmal.

ping -c 1 -s $((1500-28)) -M do www.elektronik-kompendium.de

Als Ergebnis sollte der Ping erfolgreich gewesen sein: "1 packets transmitted, 1 received, 0% packet loss, ..."

Hinweis: Bei einer anderen Ziel-Adresse kann eine andere MTU optimal sein.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Artikel-Sammlungen zum Thema Netzwerktechnik

Collection: IPv6

Was du über IPv6 wissen solltest.

eBook kaufen

Collection: Netzwerk-Grundlagen

Was du über Netzwerk-Grundlagen wissen solltest.

eBook herunterladen

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!