Nochmal www.telefonbuch.de

Florian Lohoff flo at rfc822.org
Tue May 3 21:12:24 CEST 2005


On Tue, May 03, 2005 at 08:59:59PM +0200, Uwe Schuerkamp wrote:
> Ja, das denke ich auch, besonders wg. dieser Zeile in meinem
> firewall.sh script:
> 
> #TCPMSS Fix - Needed for *many* broken PPPO{A/E} clients
> $IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> 
> ich muss gestehen, dass mir nicht klar ist, was diese Zeile eigentlich tut. 

Ok - Also - Path MTU Discovery funktioniert so das im TCP Handshake SYN,
SYN/ACK, ACK eine MSS (Maximum Segment Size) mitgeliefert wird. Diese
MSS ist die Maximale Payload groesse (D.h. Paketgroesse ohne Header) die
ich schicken kann. Diese MSS wird durch die MTU des outgoing interfaces
(Auf das die route zum zielsystem zeigt) und subtraktion der
headergroesse berechnet. 
Nach dem TCP Handshake wissen also die beiden systeme welche MSS die
beiden system auf ihrem LOKALEN link koennen. Bei ethernet ist das
1500-HeaderSize. Der Sender faengt jetzt an zu senden mit der maximalen
Paketgroesse. Sollte dazwischen eine Leitung sein die diese MTU nicht
supported wird das paket gedroppt und ein "ICMP Destination Unreachable"
Subcode "Need Fragmentation" und die neue maximale Paketgroesse
geschickt. Damit weiss der Sender nun die maximale Paketgroesse ueber
diese Hop hinweg.
Dazu kommt das eine PPPoE strecke maximal 1492 byte Paketgroesse kann
(Ethernet 1500) weil PPPoE 8 byte/paket benoetigt. D.h. deine Station
auf deinem Lokalen Ethernet sagt z.b. dem Webserver von web.de das es
1500 kann, der sagt ebenfalls 1500 und das erste Paket wird bei deinem
Provider z.b. T-Online gedroppt. Darauf schickt web.de das paket neu mit
einer maximalen groesse von 1492 byte.

Jetzt gibt es 2 Probleme damit.

- Ich verschenke einmal die RTT (Round Trip Time) zwischen web.de und
  T-Online weil das paket ja nach dem es gedroppt wurde neu gesendet
  werden muss. Ausserdem transferiere ich das erste paket immer doppelt.

- Wenn web.de eine fehlkonfigurierte firewall hat die ICMP fuer Boese
  haelt und dieses Droppt kann die PMTU nicht funktionieren weil das 
  "Destination Unreachable", "Fragmentation Needed" ja nicht am
  Webserver ankommt.

Workaround:

Der Workaround ist der obige eintrag in deinen IPTables. Er sorgt dafuer
das in "geforwardete" SYN paketen die MSS auf die neue MTU angepasst
wird. D.h. sollte das paket vom lokalen ethernet mit 1500 kommen und auf
ein PPPoE gehen das nur 1492 kann wird die MSS um 8 verringert. Dadurch
sollte web.de sofort beginnen mit 1492 zu senden.

> device ppp0 entered promiscuous mode
> IN=ppp0 OUT= MAC= SRC=82.212.218.17 DST=213.182.113.101 LEN=44
> TOS=0x00 PREC=0x00 TTL=53 ID=56037 DF PROTO=TCP SPT=80 DPT=52443
> WINDOW=24840 RES=0x00 ACK SYN URGP=0

Da sind aber noch andere regeln drin die boese sind.

Flo
-- 
Florian Lohoff                  flo at rfc822.org             +49-171-2280134
                        Heisenberg may have been here.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lug-owl.de/pipermail/linux/attachments/20050503/a446e4b0/attachment.sig>


More information about the Linux mailing list