MTU Size - Big Problem


In investigating my previous post FTP Upload - Big Problem , I have found a serious problem with the MTU determination and TCP's MSS.

On all other machines, when sending packets (during a large FTP upload) to a machine not on the local network (i.e. the Internet), the machines sends an Ethernet packet of length 1454 or effective MTU of 1440 (this was verified using a network sniffer. This length is used by OS9 machines and Windows 2000 machines - regardless of the local interface MTU (which happens to be 1500). Remember, the TCP stack normally sets the DNF (do not fragment) bit, on the TCP segments it sends, so the segment must be able to get to the destination without fragmentation. This is also why the stack does MSS detection during connection initiation.

Yet, under OSX, the packet size is 1514 (MTU = 1500) - the full Ethernet packet. This obviously can't be transmitted on the PPPoE connection which has an MTU of 1492, or maximum length of 1500, when the DNF bit is set. I know there have been other post regarding the incorrect setting of the MTU. That is only part of the problem. The MTU for the Ethernet interface should always be 1500. The TCP/IP stack needs to do MTU & MSS detection for outgoing packets that are not destined for the local network - and this is not happening. I can force it to work, by setting my MTU for the Ethernet interface to 1492, but I shouldn't need to do this.

One interesting thing, when running an FTP client under classic mode, the outgoing Ethernet frame size is 1454! (But I am still having problems making it work).

Any else have an idea?