Zum Inhalt springen

Maximum Transmission Unit/Anwendung

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  Diskussion:Apache2.4/09 Zugriff/Basic-Au... » Maximum Transmission Unit/Anwendung
Version vom 15. April 2025, 11:52 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== 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 sin…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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')