Sie haben die Symptome eines MTU- Problems: Einige TCP-Verbindungen frieren ein, sind für einen bestimmten Befehl oder eine bestimmte URL mehr oder weniger reproduzierbar, weisen jedoch kein leicht erkennbares Gesamtmuster auf. Ein verräterisches Symptom ist, dass interaktive SSH-Sitzungen gut funktionieren, die Dateiübertragung jedoch fast immer fehlschlägt. Darüber hinaus ist pppoe der Hauptbringer des MTU-Problems für Privatanwender. Also verschreibe ich einen MTU-Check.
Was ist es?
Die m aximale t ransmission U nit ist die maximale Größe eines Pakets über eine Netzwerkverbindung. Die MTU variiert von Transportmedium zu Transportmedium, z. B. haben kabelgebundenes Ethernet und WLAN (802.11) unterschiedliche MTUs, und ATM- Verbindungen (die den größten Teil der Fernverkehrsinfrastruktur ausmachen) haben jeweils eine eigene MTU.
PPPOE ist ein gekapseltes Protokoll, dh , jedes Paket besteht aus einigen Bytes des Headers, gefolgt vom zugrunde liegenden Paket. Dadurch wird die maximale Paketgröße um die Größe des Headers verringert.
IP ermöglicht es Routern, Pakete zu fragmentieren, wenn sie feststellen, dass sie für den nächsten Hop zu groß sind. Dies funktioniert jedoch nicht immer. Theoretisch sollte die richtige MTU gefunden werdenautomatisch , aber das funktioniert auch nicht immer. Insbesondere Googeln deutet darauf hin, dass Network Manager nicht immer richtig auf MTU-Informationen reagiert, die aus der MTU-Erkennung stammen, aber ich weiß nicht, welche Versionen betroffen sind oder welche problematischen Anwendungsfälle auftreten.
Wie man es misst.
Wenn Sie tracepath
von Linux iputils haben , führen Sie den Befehl aus , um tracepath 8.8.8.8
die MTU über den Pfad zum DNS-Server von Google anzuzeigen . Wenn Ihre Version von traceroute
eine --mtu
Option hat, führen Sie aus traceroute -n --mtu 8.8.8.8
. Weitere Optionen finden Sie unter Ermitteln der MTU zwischen mir und der Ziel-IP .
Ohne automatisierte Werkzeuge können Sie manuell messen. Versuchen Sie, Ping-Pakete einer bestimmten Größe an externe Hosts zu senden, die darauf reagieren, z. B. ping -c 1 -s 42 8.8.8.8
(unter Linux; auf anderen Systemen schlagen Sie in der Dokumentation Ihres ping
Befehls nach). Ihre Pakete sollten für ausreichend kleine Werte von 42 durchkommen (wenn 42 nicht funktioniert, blockiert etwas Pings). Bei größeren Werten kommt das Paket nicht durch. 1464 ist ein typischer Maximalwert, wenn das einschränkende Element der Infrastruktur Ihr lokales Ethernet-Netzwerk ist. Wenn Sie Glück haben und ein zu großes Paket senden, sehen Sie eine Nachricht wie Frag needed and DF set (mtu = 1492)
. Wenn Sie kein Glück haben, experimentieren Sie einfach weiter mit dem Wert, bis Sie das Maximum gefunden haben, und addieren Sie dann 28 ( -s
gibt die Nutzlastgröße an, und dazu kommen 28 Byte Header). Siehe auchSo optimieren Sie Ihre Internetverbindung mit MTU und RWIN in den Ubuntu-Foren.
So stellen Sie es ein (ersetzen Sie 1454 durch die von Ihnen festgelegte MTU und eth0
den Namen Ihrer Netzwerkschnittstelle)
- Einmalig (Linux): ausführen
ifconfig eth0 mtu 1454
- Permanent (Debian und Derivate wie Ubuntu, wenn kein Network Manager verwendet wird): Bearbeiten
/etc/network/interfaces
. Fügen Sie direkt nach dem Eintrag für Ihre Netzwerkschnittstelle (nach der iface eth0 …
Direktive) eine Zeile mit ein pre-up ifconfig $IFACE mtu 1454
. Wenn Ihre IP-Adresse statisch ist, können Sie den mtu 1454
Parameter alternativ zur iface eth0 inet static
Direktive hinzufügen .
Permanent (Debian und Derivate wie Ubuntu, mit oder ohne Network Manager): Erstellen Sie ein Skript /etc/network/if-pre-up.d/mtu
mit folgendem Inhalt und machen Sie es weltweit ausführbar ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Weitere Ressourcen