Maximum Transmission Unit
Maximum Transmission Unit (MTU) - Maximale Datagramm-Größe (OSI-Schicht 3), das ohne Zerlegung in einen Frame auf OSI-Schicht 2 passt
topic - Kurzbeschreibung
Beschreibung
Anhang
Siehe auch
Links
RFC
RFC | Titel |
---|---|
791 | INTERNET PROTOCOL |
879 | The TCP Maximum Segment Size and Related Topics |
1191 | Path MTU Discovery |
1981 | Path MTU Discovery for IP version 6 |
2923 | TCP Problems with Path MTU Discovery |
Weblinks
- https://de.wikipedia.org/wiki/Maximum_Transmission_Unit
- Dr. TCP, eine Software zum Einstellen der MTU unter Windows, ursprünglich für DSL-Nutzer geschrieben
- MTU, eine weitere Software (Freeware) zum Einstellen der MTU unter Windows
- Analysing TCP Header Options – Section 6 – Ausführliche Erklärung der MTU und MSS
Beschreibung
- MTU (Maximum Transmission Unit) beschreibt die maximale Paketgröße eines Protokolls der Vermittlungsschicht (Schicht 3) des OSI-Modells in Byte, die ohne Zerlegung in den Rahmen (engl. „Frame“) eines Netzes der Sicherungsschicht (Schicht 2) passt
- Das Paket passt in die Nutzlast (Payload) des Protokolls der Sicherungsschicht
- Die maximale Größe der Nutzlast der Sicherungsschicht wird auch oft als MTU der Sicherungsschicht (engl. 'link MTU') bezeichnet
- Die Maximum Transmission Unit (MTU; deutsch maximale Übertragungseinheit) beschreibt die maximale Paketgröße eines Protokolls der Vermittlungsschicht (Schicht 3) des OSI-Modells, gemessen in Oktetten (Bytes), welche ohne Fragmentierung in den Rahmen (engl. „Frame“) eines Netzes der Sicherungsschicht (Schicht 2) übertragen werden kann
- Diese Paketgröße passt also in die Nutzlast (Payload) des Protokolls der Sicherungsschicht
- Die maximale Größe der Nutzlast der Sicherungsschicht wird auch oft als MTU der Sicherungsschicht (engl. 'link MTU') bezeichnet
- Die maximale Größe eines Rahmens der Sicherungsschicht lässt sich so berechnen:
Maximale Rahmengröße = | Größte MTU aller benutzten Protokolle der Vermittlungsschicht + Größe der Sicherungsschichtheader |
- Die MTU wird durch Einstellungen im Rahmen der Möglichkeiten der verwendeten Hardware und Technik bestimmt
- Sie kann auf derselben Schnittstelle unterschiedliche Werte für unterschiedliche Protokolle der Vermittlungsschicht (z. B. IPv4 oder IPv6) annehmen
- Alle an einem Schicht-2-Netz beteiligten Schnittstellen, welche Protokolle höherer Schichten verarbeiten, müssen auf denselben Wert für die jeweiligen Schicht-3-Protokolle eingestellt werden
- Im OSI-Modell spricht man auf der Vermittlungsschicht von einem Paket (engl. 'packet'), während man auf der Sicherungsschicht von einem Rahmen (engl. 'frame') spricht
- Die Terminologie, welche das OSI-Modell für die Einheiten auf den verschiedenen OSI-Modellschichten verwendet, hat zu einiger Verwirrung um den Begriff der MTU geführt (siehe abweichende Verwendung bei wichtigen Herstellern)
- Unter der „packet size“ (Paketgröße) wird fälschlicherweise teils die „frame size“ (Rahmengröße) verstanden, jedoch stellt die obige Definition (siehe RFC 1122 und RFC 791) dies eindeutig klar
- Ein Spezialfall liegt vor, wenn ein Schicht-2-Protokoll über ein anderes Schicht-2-Protokoll getunnelt wird, denn dann nennt man auch die Nutzlast selbst „Rahmen“ (engl. 'frame')
Medium | MTU in Bytes |
---|---|
Hyperchannel | 65535 |
Token Ring(4)(802.5) | 4464 |
Token Ring(16) | 17914 |
FDDI | 4352 |
Ethernet | 1500 |
Gigabit Ethernet mit Jumboframes |
9000 |
PPPoE (z. B. DSL) | ≤ 1492 |
SLIP/PPP (low delay) | 296 |
X.25 | 576 |
FibreChannel | theoretisch unbegrenzt |
ISDN | 576 |
DQDB | |
HIPPI | |
ATM | 4500, s. u |
ARCNET | |
802.11 | 2312 (WiFi) |
- Die Path MTU (PMTU) beschreibt die maximale Paketgröße, die entlang der gesamten Wegstrecke übertragen werden kann, ohne einer Fragmentierung zu unterliegen
- Sie ist damit gleich der kleinsten MTU aller Schicht-2-Teilstücke im Pfad
- Die PMTU kann automatisch durch PMTU Discovery (PMTUD) ermittelt werden
Beispiel Brief
- Das Konzept der MTU kann auf den Briefverkehr adaptiert werden
- Ein Kompaktbrief darf maximal 50 g wiegen
- Zum Transport benötigt der Brief einen Briefumschlag z. B. 4 g und eine Briefmarke 0,3 g
- Diese 4,3 g entsprechen der Größe der Sicherungsschichtheader
- Daraus ergibt sich, dass die MTU (der maximale Inhalt für einen Kompaktbrief oder Packet Size) 50 g – 4,3 g = 45,7 g beträgt
Will man mehr Gewicht verschicken, muss man auf ein anderes Protokoll (einen Großbrief mit mehr Porto) ausweichen oder den Inhalt auf mehrere Briefe aufteilen, also fragmentieren
Beispiel Ethernet
- Ein Ethernet Frame besteht aus zwei Teilen
- dem „Header“, in dem Quell- und Zieladressen und andere wichtige Parameter für den Versand kodiert sind, und der Nutzlast, deren Größe durch die MTU bestimmt ist
- In diesem Versuch ist die Größe der MTU mit 1500 Byte vorgegeben
- Mit Hilfe des ping-Programmes wird ein „Frame“ erzeugt, der dann im Netzwerk über das Ethernet-Protokoll versendet wird
- Die Verwendung des Begriffes Nutzlast ist hier mehrdeutig, da im OSI-Modell die verschiedenen Protokolle ineinander eingepackt (gekapselt) werden
- Der im Versuch verwendete Linux-Befehl ping -s 1472 10.0.0.1 (Windows-Befehl ping -l 1472 10.0.0.1) sendet dann ein ICMP-Paket mit der Nutzlast von 1472 Bytes an die IP-Adresse 10.0.0.1
# ping -f -s 1472 10.0.0.1 1472 bytes Nutzlast des ICMP-Protokolles (Vermittlungsschicht) + 8 bytes ICMP-Header (Vermittlungsschicht) + 20 bytes IPv4-Header (Vermittlungsschicht) ------------- = 1500 bytes (Nutzlast von Ethernet) + 14 bytes (Header der Sicherungsschicht) + 4 bytes (Frame Check Sequence) ------------- = 1518 bytes (kompletter Ethernet Frame)
- Mit einem Sniffer wie z. B. Wireshark wird als Ethernet Header nur die Größe von 14 Byte angezeigt
- Hierzu kommt noch die 4 Byte große Frame Check Sequence am Ende des Frames
- Falls VLANs verwendet werden, besteht der Header der Sicherungsschicht aus 18 Byte und der gesamte Ethernet Frame kann eine Größe von bis zu 1522 Byte annehmen
- Würde IPv6 verwendet, änderte sich obige Berechnung dahingehend, dass der IPv6-Header der Vermittlungsschicht 40 statt 20 Byte beträgt und damit statt 1472 Byte ICMP-Nutzlast nur 1452 Byte möglich wären
- Zum Prüfen der MTU eines Pfades ist es hilfreich, dem ping-Programm vorzugeben, das „don’t fragment (DF) bit“ für die Testpakete im IPv4-Header zu setzen (für Linux z. B. ping -M do -s 1472 10.0.0.1, für Windows
- ping -l 1472 -f 10.0.0.1 ), denn dann erhält man eine Nachricht, falls die MTU überschritten wird
- Leicht sichtbar machen lässt sich die Path MTU mit dem Programm tracepath für IPv4 bzw. tracepath6 für IPv6
Einfluss auf andere Protokolle
Die MTU ist ein hardwareabhängiger Wert, der sämtliche Parameter oberhalb der Sicherungsschicht des OSI-Modells beeinflusst
- Am Beispiel Ethernet ist dies einfach erklärt: In diesem Netzwerk werden sämtliche Pakete der Schicht 3, beispielsweise IP-Pakete, in „Ethernet-Frames“ übertragen
- Die Nutzdaten dieses Ethernet-Frames (d. h. die IP-Pakete) dürfen den MTU-Wert nicht übersteigen
- Die Länge der TCP-Nutzdaten (Maximum Segment Size) wird daher aus der MTU direkt berechnet
Andere Beispiele und Probleme
Jumbo Frames für Gigabit Ethernet können deutlich mehr als 1518 Oktette beinhalten und damit ist es möglich, größere Pakete unfragmentiert zu übertragen
- Positiv wiegt, dass der Protokoll-Overhead bei der Verwendung von Jumbo Frames reduziert werden kann und Router weniger Pakete behandeln müssen
- Allerdings ist die Terminologie bzgl. MTU derart uneinheitlich unter den Herstellern, dass es in der Praxis schwierig ist, von den Standardeinstellungen abzuweichen
- Des Weiteren sind Jumbo Frames nicht im IEEE-802.3-Standard spezifiziert, trotzdem unterstützen die meisten Hersteller von Gigabit Ethernet Switches und Routern MTUs bis 9000 Oktette
- So hat sich als Quasistandard eine Path MTU um ca. 1500 Byte im Internet eingebürgert, die durch das weit verbreitete Ethernet sowieso meist nicht überschritten werden kann
Mit dem Aufkommen von Internetzugängen, die auf Tunnelprotokollen basieren, zum Beispiel beim Verbindungsaufbau über das PPPoE-Protokoll hat die MTU an Bedeutung gewonnen
- Obwohl die PMTUD in diesem Fall dafür sorgen soll, dass die Kommunikation trotz der durch den Tunnel abgesenkten MTU möglich ist, gibt es immer wieder fehlkonfigurierte Firewalls, die durch Verwerfen von ICMP-Steuerpaketen die PMTUD stören
- Auch große Websites sind oft von diesem Konfigurationsfehler betroffen, sodass die Nutzer von getunnelten Zugängen die MTU ihrer Geräte verkleinern müssen, um auch mit diesen Sites kommunizieren zu können
- Optimale MTU
Über die optimale MTU gibt es viele Diskussionen:
- Einfache Optimierung
- so groß wie möglich, ohne dass Probleme auftreten
- Komplexe Optimierung
- so viel kleiner als o. g.Maximum, dass der Verschnitt der Transportzellen der unter der DSL-Schicht liegenden ATM-Transportschicht möglichst klein wird
Die MTU bei ATM (4500) ist nicht zu verwechseln mit der Zellengröße (53 Bytes, 48 davon Nutzlast)
- Bei der Übertragung über einen ATM-Link werden IP-Pakete in Stücke zu je 48 Bytes zerlegt und für die Übertragung auf mehrere ATM-Zellen verteilt
- Der Router am anderen Ende des ATM-Links sammelt diese Zellen und setzt das ursprüngliche IP-Paket wieder zusammen
- Im Gegensatz dazu wird bei der IP-Fragmentierung das Paket nicht vom Router reassembliert, sondern erst von dem Host, für den das Paket bestimmt war
Probleme, die durch einen falschen MTU-Wert auftreten können, sind Webseiten, die gar nicht oder nur teilweise angezeigt werden.[1]
Anwendungen
Berechnung
Maximale Größe eines Rahmens der Sicherungsschicht
Maximale Rahmengröße = Größte MTU aller benutzten Protokolle der Vermittlungsschicht + Größe der Sicherungsschichtheader
Ermittlung der MTU-Größe
- Zu diesem Zweck können Sie 'ping' verwenden, um ein Paket der erforderlichen Größe mit gesetztem Bit "Nicht fragmentieren" zu senden
- Es ist auch eine gute Idee, eine Paketanzahl von eins zu verwenden, da es nicht sinnvoll ist, mehr Netzwerkverkehr zu senden als Sie brauchen
- Hinweis
- Die beim Befehl ping angegebene Größe entspricht der Anzahl der zu sendenden Datenbytes
- Diese muss also 28 Byte kleiner sein als die tatsächliche Paketgröße, um die Größe des Paket-Headers zu berücksichtigen
Beispiel Ethernet
- Ein Ethernet Frame besteht aus zwei Teilen: dem „Header“, in dem Quell- und Zieladressen und andere wichtige Parameter für den Versand kodiert sind, und der Nutzlast, deren Größe durch die MTU bestimmt ist
- In diesem Versuch ist die Größe der MTU mit 1500 Byte vorgegeben.
- Mithilfe des ping-Programmes wird ein „Frame“ erzeugt, der dann im Netzwerk über das Ethernet-Protokoll versendet wird
- Die Verwendung des Begriffes Nutzlast ist hier mehrdeutig, da im OSI-Modell die verschiedenen Protokolle ineinander eingepackt (gekapselt) werden
- Der im Versuch verwendete Linux-Befehl ping -s 1472 10.0.0.1 (Windows-Befehl ping -l 1472 10.0.0.1) sendet dann ein Internet Control Message Protocol|ICM-Paket mit der Nutzlast von 1472 Bytes an die IP-Adresse 10.0.0.1
ping -f -l 1472 10.0.0.1 1472 bytes Nutzlast des ICMP-Protokolles (Transportschicht) + 8 bytes ICMP-Header (Transportschicht) + 20 bytes IPv4-Header (der Vermittlungsschicht) ------------- = 1500 bytes (Nutzlast von Ethernet) + 14 bytes (Header der Sicherungsschicht) + 4 bytes (Frame Check Sequence) ------------- = 1518 bytes (kompletter Ethernet Frame)
- Mit einem Sniffer wie z. B. Wireshark wird als Ethernet Header nur die Größe von 14 Byte angezeigt
- Hierzu kommt noch die 4 Byte große Frame Check Sequence am Ende des Frames
- Falls Virtual VLANs verwendet werden, besteht der Header der Sicherungsschicht aus 18 Byte und der gesamte Ethernet Frame kann eine Größe von bis zu 1522 Byte annehmen
- Würde IPv6 verwendet, änderte sich obige Berechnung dahingehend, dass der IPv6-Header der Vermittlungsschicht 40 statt 20 Byte beträgt und damit statt 1472 Byte ICMP-Nutzlast nur 1452 Byte möglich wären
Oft ist es hilfreich dem ping-Programm vorzugeben das „don’t fragment (DF) bit“ für die Testpakete im IPv4-Header zu setzen denn dann erhält man eine Nachricht, falls die MTU überschritten wird
Linux
ping -M do -s 1472 10.0.0.1
Windows
ping -l 1472 -f 10.0.0.1
Leicht sichtbar machen lässt sich die Path MTU mit dem Programm tracepath für IPv4 bzw. tracepath6 für IPv6
Fehlerbehebung
- Probleme durch falsche MTU-Größe können sehr subtil sein
- Es ist möglich einem Webserver zu erreichen, die Dateiübertragung schlägt jedoch fehl
- Verbindung zu einem Chat-Server funktioniert, aber die Informationen darüber, wer online ist, sind unvollständig
Konfiguration
Der MTU-Wert kann wie folgt gesetzt werden
- Mac OS X
- Systemeinstellung öffnen, unter „Netzwerk“ den Netzwerkanschluss auswählen, auf den Reiter „Ethernet“ klicken, und unter MTU „eigene“ wählen und Wert eingeben
- Linux
ifconfig eth0 mtu 1234
(1234 ist neuer Wert)- Dies muss in einem der Startskripte angegeben werden, da es sonst immer wieder gesetzt werden muss
- Windows
- Über die Netzwerkeigenschaften bzw. Systemsteuerung
- mit Programmen wie z. B. dem Freeware-Programm DrTcp oder tcp optimizer, um den Wert dauerhaft zu setzen