Subject: [Tsvwg] minimum TCP MSS

From: "Van Dang" <[email-masked]>
Date: Fri, 31 Oct 2003 08:12:40 -0800

Does any one know the minimum MSS that TCP must support.
I think most TCP implementation, without Path MTU Discovery,
would use the outgoing interface MTU to calculate the MSS
if the destination is local.  If destination is remote, then use the
default MSS.  However, some host may try a smaller MSS even
if locally connected.  So I was wondering what does TCP must
support in order to be compliant with RFC.

It would be great if someone knows this answer.  It would save
me some time from scanning through the RFCs.

Thanks.

_________________________________________________________________
Never get a busy signal because you are always connected  with high-speed 
Internet access. Click here to comparison-shop providers.  
https://broadband.msn.com

_______________________________________________
tsvwg mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tsvwg

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Sat, 1 Nov 2003 22:16:28 -0700

Van,

536.

--brian

-- 
Brian F. G. Bidulock    ¦ The reasonable man adapts himself to the ¦
[email-masked]    ¦ world; the unreasonable one persists in  ¦
http://www.openss7.org/ ¦ trying  to adapt the  world  to himself. ¦
                        ¦ Therefore  all  progress  depends on the ¦
                        ¦ unreasonable man. -- George Bernard Shaw ¦

---

From: Rick Jones <[email-masked]>
Date: Mon, 03 Nov 2003 10:11:11 -0800

It is my understanding that there is no minimum MSS specified for TCP (well, one
byte is perhaps implicit in TCP being a byte stream rather than a bit
stream...), although some TCP _implementations_ may have settings to reject
connections advertising an MSS less than some value.

Again, unless I am getting beyond my knowledge, 536 is the _default_ MSS - the
MSS that TCP should assume when it does not send or see an MSS option in the SYN
or SYN|ACK segment.

I _suspect_ but cannot quote chapter and verse to confirm, that 536 stems from
the requirement that a conforming IP stack must be able to reassemble IP
datagram fragments into IP datagrams of at least 576 bytes. That is the
"minimum, maximum IP datagram size" an IP stack must support, not a minimum MTU.
(IIRC, the minimum IPv4 MTU is 68 bytes, and 12XX for v6)

If TCP "knows" that the "minimum, maximum IP datagram size" is 576, then it
"knows" that using an MSS of 536 (576 less 20 bytes of TCP header and 20 bytes
of IP header, options may vary :) means that its traffic has at least a
snowball's chance of getting through.

rick jones
-- 
Wisdom Teeth are impacted, people are affected by the effects of events.
these opinions are mine, all mine; HP might not want them anyway... :)
feel free to post, OR email to raj in cup.hp.com  but NOT BOTH...

---

From: Joe Touch <[email-masked]>
Date: Mon, 03 Nov 2003 15:29:24 -0800

> snowball's chance of getting through.

MSS = Maximum segment size.

TCP's max-min is based on IP's, as noted before.

There is no min segment size - TCP can, and does, send 0-length segments 
(though it wouldn't be productive if that's all it could send). That 
would mean a min overall packet of 40 bytes, but a 0-length TCP payload.

Joe

---

From: David Borman <[email-masked]>
Date: Mon, 3 Nov 2003 17:24:07 -0600

> MSS that TCP should assume when it does not send or see an MSS option 

Yes, see RFC 1122, section 4.2.2.6

> (IIRC, the minimum IPv4 MTU is 68 bytes, and 12XX for v6)

For IPv4, RFC 791 defines the minimum IP packet size as 68 bytes.  On 
page 25:

     Every internet module must be able to forward a datagram of 68
     octets without further fragmentation.  This is because an internet
     header may be up to 60 octets, and the minimum fragment is 8 octets.

     Every internet destination must be able to receive a datagram of 576
     octets either in one piece or in fragments to be reassembled.

So, avoiding any IP fragmentation, that puts the minimum TCP MSS at 28 
bytes.  But since every IP must be able to receive a 576 byte packet, 
either as a single piece or in fragments, that's how the TCP default 
MSS of 536 is derived.

> snowball's chance of getting through.

TCP MSS doesn't include IP or TCP options, it's the underlying MTU 
minus the fixed IP and TCP headers.  Senders need to adjust down the 
amount of TCP data based on any IP or TCP options that it is inserting.

> rick jones

			David Borman, [email-masked]