Subject: Re: Unable to fetch http://www.netbsd.org - MSS problem?
To: Robert Elz <kre@munnari.OZ.AU>
From: Andreas Priebe <andreas.priebe@promos-consult.de>
List: current-users
Date: 11/12/2003 16:03:03
Hi,

Robert Elz wrote in an answer to my mail.

>   | As you see my side announces MSS 1452 and if I understand Stevens correctly,
>   | the other side (www.NetBSD.org) should not send segments greater than
>   | this, but as you can see it send me 1500 Bytes packets, i.e. MSS=1460 -
>   | right?
> 
> No, it is sending 1448 byte (TCP) packets, see ...
> 
> 19:51:20.614159 204.152.184.116.80 > 62.80.20.1.53248: . 1449:2897(1448)
> 
> That (1448) is the number of TCP data bytes in the packet.
> 
> This is because of ...
> 	ack 8 win 33580 <nop,nop,timestamp 3162162 6>
> those (TCP) options in the packet, they make the TCP header bigger than 20
> bytes (12 bytes bigger in this case).  Those 12 are the difference between
> 1448 and the 1460 you calculated.
> 
> 1448 < 1452 so this is all legal TCP.   Nothing is directly broken here.
> If packets that big can't get to you, you may need to make the MSS even 
> smaller.

I must admit, I had forgotten for TCP options (and how to extract the correct
number of TCP data from tcpdump).
But anyway: In a discussion on the NeBSD tech-net (?) list from Nov 2001:

http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=fa.onn29ov.tjoegt%40ifi.uio.no&rnum=2&prev=/groups%3Fq%3Dtcp%2Bmss%2Boptions%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den%26btnG%3DGoogle%2BSearch )

Rick Byers stated:

 > That is exactly why the RFCs define the MSS to be the maximum IP
 > packet size minus 40.  That way, the extra IP or TCP options count against
 > the segment size to keep the total packet size bounded at a constant
 > (MSS+40).

This seems to be my impression from RFC 879 too:

 > The definition of the MSS option can be stated:
 >
 >       The maximum number of data octets that may be received by the
 >       sender of this TCP option in TCP segments with no TCP header
 >       options transmitted in IP datagrams with no IP header options.

Sorry for my ignorance, but still confused,

Andreas