fun with MSS

Neal Cardwell (cardwell@cs.washington.edu)
Fri, 1 May 1998 15:25:51 -0700 (PDT)

I finally got around to installing linux on my pc and i've been playing
around to see what the deal is with those 1500 byte packets from the MCI
paper.

Looks like Linux and most everything else seems to send and accept the MSS
(maximum TCP segment size) option on the SYN segment. Here's a random
sample from browsing from a Linux box:

server presumed OS MSS MSS value advertised
------------ ----------- --- --------------------
www.cnn.com Solaris yes 1460
www.yahoo.com Solaris? yes 1460
www.netscape Solaris? yes 1460
www.hotbot.com Solaris yes 1460
www.redhat.com Linux yes 1460
www.freebsd.org FreeBSD yes 1460
www.ibm.com AIX yes 536
www.research.ibm. AIX yes 512
www.hp.com HP/UX yes 1460
www.digital.com Digital Unix yes 536
www.altavista. Digital Unix yes 536
www.sun.com Solaris yes 1460
www.apple.com MacOS yes 1460
www.microsoft.com NT yes 4312
www.msn.com NT yes 4312
www.sgi.com IRIX yes 4312

>From this i'm guessing that AIX and Digital UNIX don't do MTU discovery,
but that the rest of the OSes do. 'Cause they'd have to be willing to do
MTU discovery (accept ICMP fragmentation complaints and adjust their MSS
downward) if they're trying packets bigger than 576 bytes, right?

One interesting thing is the 4312 byte MSS advertised by MS and SGI.
Anyone know what has an MSS that big?

Tcpdump also reveals that NT4.0, Win95b, and recent MacOS clients
advertise MSS 1460 and accept 1460 byte packets from a server as well.
Win95 going over PPP also advertises MSS=1460. My MacOS 7.5 machine going
over PPP uses MSS=536 but doesn't speak the MSS option.

*If* all this is correct then most of the recent clients and servers
should be sending 1500 byte packets, so it's just the older TCP/IP stacks
(which is apparently the vast majority of hosts right now) that are
sending smaller packets. Does that seem right?

neal