Maximum Transmission Unit/Anwendung
Erscheinungsbild
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
Problembehebung
- 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
Abweichende Verwendung des Begriffs
Cisco und Juniper verwenden den Begriff MTU in ihrer Konfigurationssyntax als maximale Rahmen- bzw. Paketgröße der zu konfigurierenden Netzwerkschicht
Folgende Einstellungen entsprechen einander
- Bei beiden Herstellern bedeutet das erste Auftauchen des Begriffes die maximale Ethernet Rahmengröße und nicht die maximale Größe der Nutzlast (Maximum Segment Size)
- diese muss folglich einige Byte größer gewählt werden als die dann folgenden Einstellungen für die verschiedenen Schicht-3 Protokolle
Cisco:
interface GigabitEthernet2/3 mtu 9192 ip address 192.168.0.1 255.255.255.252 ip mtu 9000 ipv6 address 2001:DB8::1/64 ipv6 mtu 8000 ipv6 router isis clns mtu 1497 !
Juniper:
interfaces { ge-0/0/0 { mtu 9192; unit 0 { family inet { mtu 9000; address 192.168.0.2/30; } family inet6 { mtu 8000; address 2001:DB8::2/64; } family iso { mtu 1497; } } } }
- Paket- und Rahmengröße
- 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')