Wie Testet man die MTU Größe
Wie oft hat man das Problem, das man in einem Netzwerk, unerklärliche Netzwerk Abbrüche hat. Oft ist der Grund einfach eine falsche MTU Größe, die dazu führt, dass zwar Kommunikation möglich ist aber man bei größeren datenabhängigen auf einmal nichts mehr geht.
Grundlagen
Die MTU (Maximum Transmission Unit) Größe, definiert die Effektiv nutzbare Daten und ist mit jeder zusätzlichen Netzwerkschicht bzw. unterschiedlichen Protokollen anders. Dazu gehören z.b. IPv4 vs. IPv6, UDP vs. TCP oder Ethernet vs. Internet oder VPN. Mit jedem zusätzlichen Feature kommen ein paar Bytes zu Header dazu der die nutzbare Daten-gösse verringert. In einem Lokalen Netz hat man meist eine MTU von 1500 und Richtung Internet so um die 1472.
Eine zu kleine Größe führt dazu, das die Daten in zu viele Pakete aufgesplittet werden, man so mehr Header Daten senden muss und so einen schlechteren Durchsatz hat. Wohingegen zu große Blöcke zu Netzwerkproblemen führen.
Testen
Mit Ping kann man die MTU werte testen. Ping benutzt ICMP als Protokoll was eine Header Größe von 28 Bytes hat mit IPv4 (IPv4=20 bytes + ICMP=8 bytes = 28).
ping -D -c 2 -s 1472 8.8.8.8
sollte sowas wie das ergeben
PING 8.8.8.8 (8.8.8.8): 1472 data bytes
36 bytes from x.1x.1xx.1xx: frag needed and DF set (MTU 1492)
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 05dc 0000 0 0000 3e 01 646f 192.1xx.1x.2xx 8.8.8.8
Jetzt Sagte uns Ping, das Packet müste Fragmentiert werden.
Wenn man die Blockgröße viel zu groß hat sieht es dann so aus.
ping -D -c 2 -s 1473 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 1473 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Also Testen wir es nochmal mit den vorgeschlagenen 1492. 1492-28 = 1464
ping -D -c 2 -s 1464 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 1464 data bytes
76 bytes from 8.8.8.8: icmp_seq=0 ttl=115 time=19.860 ms
Das heißt also, wir können eine MTU von 1492 verwenden in dieser Verbindung.
Windows
Unter Windows sind die Argumente ein wenig anders aber es geht dort genau so.
# windows powershell
ping -f -n 2 -l 1464 8.8.8.8
Ping wird ausgeführt für 8.8.8.8 mit 1464 Bytes Daten:
Antwort von 8.8.8.8: Bytes=68 (gesendet 1464) Zeit=19ms TTL=115