Bin zwar kein Netzwerkspezi, aber manchmal reicht Literatur :-)
Artikel aus c't 07/2002:
DSL hängt
Beim Surfen im Internet über einen DSL-Router kommt es gelegentlich vor, dass bestimmte Websites und Server für die Clients nicht erreichbar sind und die Verbindung scheinbar hängen bleibt. Vom Router aus lassen sich die Sites problemlos erreichen. Typische Berichte über solches Verhalten betreffen
www.spiegel.de oder
www.gmx.de. Auch das Versenden von E-Mails mit Attachments schlägt nach Leserberichten manchmal fehl.
Das Problem hat mit der Maximum Transfer Unit (MTU) zu tun, die beim für DSL eingesetzten PPPoE die Paketgröße auf 1492 Byte limitiert. Die Client-Rechner sehen aber lediglich das lokale Netz mit einer MTU von 1500 und verwenden diese, um für TCP-Verbindungen die Maximum Segment Size (MSS) zu berechnen, die sie den externen Servern mitteilen. So kann es vorkommen, dass der Web-Server Pakete schickt, die zu groß für die PPPoE-Verbindung sind. Da mittlerweile fast alle Systeme Fragmentierung untersagen (DF-Bit im IP-Header), sendet der Router eine Kontrollmeldung an den Absender, dass das Paket zu groß war (ICMP: destination unreachable: need to fragment). Bei den betroffenen Servern verhindert jedoch eine falsch konfigurierte Firewall, dass der Absender das ICMP-Paket erhält, sodass er es immer wieder versucht - aber eben nur mit den zu großen Paketen, die nicht ankommen.
Um das Problem zu beseitigen, muss man auf allen betroffenen Clients die MTU herabsetzen. Ein Wert von 1472 hat sich bei unseren Versuchen als brauchbar erwiesen.
Diesen trägt man unter Windows 98 / ME in der Registry als Wert für den neuen DWORD-Eintrag[/me]
HKEY_LOCAL_MACHINE\System\
CurrentControlSet\Services\Class\
NetTrans\000n\MaxMTU
ein. `000n´ ist dabei der Unterschlüssel, der als `DriverDesc´ TCP/IP enthält. Um die MTU bei Clients mit Windows XP oder 2000 anzupassen, gilt es zunächst, die so genannte Adapter-ID des lokalen Netzes herauszufinden. Diese findet sich in dem Schlüssel, der als
HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Control\Network\
{4D36E972-E325-11CE-BFC1-
08002BE10318}\
{Adapter-ID}\Connection\Name
den Namen der lokalen Netzwerkverbindung enthält. Anschließend trägt man unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\Tcpip\Parameters
\Interfaces\{Adapter-ID}
einen neuen DWORD-Wert namens `MTU´ mit der gewünschten MTU ein. Wer einen modernen Linux-Router mit iptables betreibt, kann alternativ auch dafür sorgen, dass dieser mit
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN
-j TCPMSS --clamp-mss-to-pmtu
in die Aushandlung der MSS eingreift und diese entsprechend anpasst. Weitere Tipps für ICS, Hardware- und Linux-Router sowie zu problematischen Anwendungen wie Spielen und Chat finden Sie in den folgenden Artikeln.
Matthias