Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2009-08

Website connectivity

5 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Michael Van Canneyt

Hello,

In the past, some people reported problems connecting to the main FPC website or the main SVN repository. Typical symptoms were empty HTML pages, but pinging to the server working fine.

The reason for this - which has been given often - was the atypical window size of the router in front of the server: Some ISP's routers or network configuration could not cope with this atypical window size.

Thanks to sustained testing and investigation of Jonas Maebe, a workaround has now been found and applied, and the website should now be accessible for everyone. It may not be as fast as it could be, but at least it should work in all cases.

Michael.

Reply by email

Jonas Maebe
to Michael Van Canneyt
Michael Van Canneyt wrote
The reason for this - which has been given often - was the atypical window size of the router in front of the server: Some ISP's routers or network configuration could not cope with this atypical window size.

To nitpick: it's not the window size, but the maximum segment size :)

And for the people interested in the details: the problems are that router in front of server
a) blocks incoming ICMP packets that are necessary for automatic MTU detection. As a result, the server cannot detect problems in case a network connection down the line requires a smaller TCP segment size. b) set the TCP maximum segment size of all *incoming* packets to 1472. This means that setting the MTU on your computer to a low value (which would then also be used by the server when replying) won't help, since the server always sees an MTU of 1472 bytes.
c) sets the "don't fragment" flag on outgoing IP packets. This means that even if the server is configured to not add the "don't fragment" flag to packets so they can be fragmented by other routers when sending them over a connection with a smaller MTU, the end result won't change since by the time the packets arrive at those routers, they'll again have a DF flag set.

In the end, what did work was to enable TCP MTU detection on the server.

I don't know what kind of router is being used, but I would advise everyone to stay away from it as far as possible. The number of ways in which that thing tries to prevent connectivity with low-MTU endpoints is really astounding.

Jonas

Reply by email

Michael Van Canneyt
to Jonas Maebe
Jonas Maebe wrote 30 lines
On 17 Aug 2009, at 17:43, Michael Van Canneyt wrote: > The reason for this - which has been given often - was the atypical > window size of the router in front of the server: Some ISP's routers or > network configuration could not cope with this atypical window size. To nitpick: it's not the window size, but the maximum segment size :) And for the people interested in the details: the problems are that router in front of server a) blocks incoming ICMP packets that are necessary for automatic MTU detection. As a result, the server cannot detect problems in case a network connection down the line requires a smaller TCP segment size. b) set the TCP maximum segment size of all *incoming* packets to 1472. This means that setting the MTU on your computer to a low value (which would then also be used by the server when replying) won't help, since the server always sees an MTU of 1472 bytes. c) sets the "don't fragment" flag on outgoing IP packets. This means that even if the server is configured to not add the "don't fragment" flag to packets so they can be fragmented by other routers when sending them over a connection with a smaller MTU, the end result won't change since by the time the packets arrive at those routers, they'll again have a DF flag set. In the end, what did work was to enable TCP MTU detection on the server. I don't know what kind of router is being used, but I would advise everyone to stay away from it as far as possible. The number of ways in which that thing tries to prevent connectivity with low-MTU endpoints is really astounding.

It's a very common CISCO router :-)

The problem is not really the router itself, but the instructions we got from the ISP on how to configure it :(

(totally braindead instructions in my opinion, but arguing didn't really help)

Michael.

Reply by email

Axel Scheepers
to Michael Van Canneyt
Michael Van Canneyt wrote 11 lines
> b) set the TCP maximum segment size of all *incoming* packets to 1472. This > means that setting the MTU on your computer to a low value (which would then > also be used by the server when replying) won't help, since the server always > sees an MTU of 1472 bytes. It's a very common CISCO router :-) The problem is not really the router itself, but the instructions we got from the ISP on how to configure it :( (totally braindead instructions in my opinion, but arguing didn't really help)

Hi and sorry for bumping in,

Over here (isp) we have to use a lower mtu to be able to pass both mpls and vlan tags around, it's not that braindead if you need that. Why they need that for 'simple' access is indeed a bit strange.

Kind regards,

Axel Scheepers

Reply by email

Jonas Maebe
to Axel Scheepers
Axel Scheepers wrote 23 lines
On Mon, 2009-08-17 at 18:11 +0200, Michael Van Canneyt wrote: >> b) set the TCP maximum segment size of all *incoming* packets to >> 1472. This >> means that setting the MTU on your computer to a low value (which >> would then >> also be used by the server when replying) won't help, since the >> server always >> sees an MTU of 1472 bytes. > It's a very common CISCO router :-) > > The problem is not really the router itself, but the instructions > we got from > the ISP on how to configure it :( > > (totally braindead instructions in my opinion, but arguing didn't > really help) Over here (isp) we have to use a lower mtu to be able to pass both mpls and vlan tags around, it's not that braindead if you need that. Why they need that for 'simple' access is indeed a bit strange.

The server is connected via adsl, probably using PPPoE. I guess the mss on incoming packets is set to the maximum mss that can be handled by the PPPoE connection (so that servers that reply won't use a higher mss). What does seem braindead to me is that the mss of incoming packets with a lower mss is increased to this maximum. And of course also that they drop ICMP type 3 code 4 messages ("fragmentation needed but don't-fragment bit set") and that they always set the "Don't Fragment" bit to outgoing packages.

Jonas

Reply by email