Re: ftp & mail > 1KB

From: J Wunsch <j(at)uriah.heep.sax.de>
Date: Wed, 19 May 1999 07:15:44 +0200

As Klaus Herrmann wrote:

> ok, ich habs (hab in der internationalen mailinglist gefragt). Es
> war die MTU: ich hatte 1500, mit 500 geht's.

Dafür gibt es zwei mögliche Erklärungen, die mir in den Sinn kommen.

1.) Die `path MTU discovery' funktioniert nicht. Normalerweise
versuchen IP-Stacks heutzutage, IP-Fragmentierung zu vermeiden, indem
sie von vornherein genügend kleine Pakete absenden, die den gesamten
Pfad vom Absender zum Empfänger ohne Fragmentierung überstehen. Das
funktioniert, indem das `DF' (don't fragment) Bit gesetzt wird und
dann ausgewertet wird, ob ein Link, dessen MTU dieses Paket nicht
erlaubt, das Paket verwerfen mußte und dafür eine ICMP-Meldung
`fragmentation needed (but not allowed)' versendet.

Ursache hier wären vor allem mißkonfigurierte Firewalls (kann auch
Dein eigenes ipfw sein). Wenn ein Firewall trottligerweise gar kein
ICMP durchläßt (aus Angst vor ach so bösen ICMP redirects oder sowas),
dann kann die path MTU discovery natürlich nicht funktionieren.

2.) Falls Du PPP nimmst, sppp kann keine MRU verhandeln. Ich
akzeptiere eine MRU der Gegenseite, ignoriere sie aber (weitgehend).
Das PPP-RFC schreibt vor, daß jede PPP-Implementierung ohnehin Pakete
von mindestens 1500 Bytes Länge zu akzeptieren hat, egal, ob sie eine
geringere MRU erfolgreich verhandeln konnte oder nicht.

Möglicherweise sollte man dennoch bei einer Reduzierung der MRU durch
die Gegenseite das Äquivalent eines `ifconfig ... mtu ...'
durchführen; das könnte ein Bug in der jetzigen Implementierung sein.

Dieses Problem solltest Du ziemlich schnell erkennen können. Ich habe
mir den Code eben nochmal angesehen, wenn die MRU durch die Gegenseite
reduziert worden ist, werden anschließend nur noch `ifconfig ... mtu'
Kommandos akzeptiert, die kleiner als die verhandelte MRU sind. (Das
ist praktisch die einzige Stelle, wo die verhandelte MRU bislang auch
wirklich benutzt wird.) Falls das also bei Dir der Fall ist, solltest
Du danach ein `ifconfig ispN mtu 1500' mit `Invalid argument'
abgelehnt bekommen.

Du kannst Dir natürlich die Verhandlungen auch mit tcpdump (danke
Helle) oder `ifconfig ispN debug' ansehen, um herauszufinden, ob die
Gegenseite mit der MRU spielt.

Wie das ganze bei IP over raw HDLC aussieht, weiß ich nicht, habe ich
nie benutzt. Dort wird meines Wissens ähnlich wie seinerzeit bei SLIP
vorausgesetzt, daß sich die Admins beider Seiten durch externe
Absprachen über die zu verwendenden Parameter geeinigt haben. In
diesem Falle wäre es also IMHO normales Verhalten, daß Du die MTU
manuell einstellen mußt, falls Deine Gegenseite das so wünscht.

-- 
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 19 May 1999 - 07:22:38 CEST

search this site