Basic Stuff: MTU-Grösse mit ping testen

Die MTU ist immer wieder ein Thema beim Troubleshooten von Netzwerkproblemen. Oft herrscht jedoch Unklarheit darüber wie man die genaue MTU zwischen zwei Endpunkten herausfinden kann.

Natürlich ist der “ping”-Befehl hier das Mittel der Wahl, aber mit welcher Ping-Grösse habe ich welche MTU?

Starten wir mal mit dem Ping-Befehl:

ping -f -l 1000 1.1.1.1 (Windows, Dos)

Mit diesem Befehl pingt man den Host 1.1.1.1 mit einer Ping-Size von 1000 Bytes (-l 1000) und setzt dabei das Don’t Fragment-Bit (-f), welches verhindert, dass das Paket fragmentiert wird, sobald die MTU erreicht ist. So kann man sich also mit der Grösse der Ping-Pakete nach oben schaffen und schauen, ab wann ein Paket ohne Fragmentierung nicht mehr das Ziel erreicht. Damit hätte das Paket die Grösse der MTU gerade überschritten.

BTW – unter MacOS lautet der entsprechende Befehl: ping -D -s 1000 1.1.1.1 und unter Linux ping -M do -s 1000 1.1.1.1.

Was hat jetzt die Ping-Size mit der MTU zu tun?

Mit der Ping-Size wird die Grösse des ICMP Payloads angegeben. Das gesamte Paket umfasst aber zusätzlich noch die Header für ICMP, IP und Ethernet und ist somit grösser als die Ping-Size:

Für die MTU wird die Grösse des IP-Pakets (also ohne dem Ethernet-Header) verwendet. Hat man also die maximale Ping-Size gefunden, muss zu diesem Wert noch 28 Bytes (8 Bytes für den ICMP-Header und 20 Bytes für den IP-Header) hinzu gerechnet werden.

Im obigen Beispiel ist die MTU 1500 Bytes. Ein ping mit Grösse 1472 funktioniert noch, mit der Grösse 1473 müsste es fragementiert werden. 1472 bytes + 28 bytes = 1500 bytes.

Leave a Reply

Your email address will not be published. Required fields are marked *