Kategorien
*BSD Linux Windows

MTU discovery

Vor allem bei VPN (Virtual Private Network) Verbindungen gibt es manchmal Problem mit der MTU (Maximum Transmission Unit). Die MTU gibt die maximale Paketgröße an, die über eine Netzwerkverbindung übertragen werden kan. Bei VPN Verbindung werden die Pakete in Pakete verpackt, wodurch die Pakete automatisch größer werden.
Wer prüfen wie groß die MTU sein darf um problemlos über den VPN Tunnel übertragen werden zu können, kann das auf den meisten Systemen mit dem ping Befehl lösen. Zusätzliche Software zu installieren ist meist nicht nötig.

MTU unter Linux

Unter Linux steht bei dem Ping Befehl noch die Option -M für die MTU Discovery Strategie zur Verfügung.

ping -c 1 -M do -s

Die MTU setzen kann man mit dem Befehl ifconfig.

ifconfig  mtu

Eine einfaches Shell Script um die MTU festzustellen könnte so aussehen.

#!/bin/bash
for i in `seq 1300 1500`; do
        ping -c 1 -M do www.google.com -s $i >/dev/null 2>&1
        echo $i $?
done

Das Script probiert alle Werte von 1300 – 1500 durch und liefert die probierte Paktegröße und den Rückgabewert von Ping zurück. Der Rückgabewert ist wie immer 0 für OK und 1 für Fehler.

Wenn man zu dem größten Wert 28 dazuaddiert erhält man die Headergöße inclusive Daten und somit die maximal mögliche MTU für die Verbindung.

MTU unter FreeBSD / NetBSD / OpenBSD

Unter FreeBSD, NetBSD und OpenBSD steht bei dem Ping Befehl die Option -D zum setzen des „Don’t Fragment Bits“ zur Verfügung.

ping -c 1 -D -s

Die MTU setzen kann man mit dem Befehl ifconfig.

ifconfig  mtu

MTU unter Windows

Unter Windows steht bei dem Ping Befehl die Option -f zum setzen des Don’t Fragment Bits zur Verfügung.

ping -f -l

Die MTU setzen kann man über die Registry.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
MTU = MTU(DWORD)

Für die einzelnen Schnittstellen setzt man die Werte über.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{SCHNITTSTELLENID}
MTU = MTU(DWORD)

Unter Visata kann man auch den netsh Befehl verwenden.

netsh interface ipv4 set interface "Interface Name" mtu=XXXX store=persistent

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert