Wie Testet man die MTU Größe

Erstellt: 26.03.2022 Bearbeitet: 29.09.2024

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

Visual packet size calculator

How to Calculate MTU for Tunnels