Post by Richard WhalenBefore KERNEL-UPDATE-092_A051 the TCP code did not subtract the length
of the options from the amount of data that could be put in a MSS packet.
Though my reading of RFC 879 is that it should not be subtracted, it
appears to be common practice to subtract it. Not subtracting the
length of the options would cause larger than MSS packets to be sent,
which would cause some routers to drop the packets.
The tcp_pmtu variable should be able to disable path MTU discovery.
For TCP MSS calculations the IP and TCP headers are assumed to be 20
bytes each. If this is not the case then it is the hosts responsibility
to subtract the length of the additional IP or TCP options from the
length of the TCP payload to ensure that the total IP packet size is
not greater than TCP MSS + 40 for that session.
From RFC1122
4.2.2.6 Maximum Segment Size Option: RFC-793 Section 3.1
TCP MUST implement both sending and receiving the Maximum
Segment Size option [TCP:4].
TCP SHOULD send an MSS (Maximum Segment Size) option in
every SYN segment when its receive MSS differs from the
default 536, and MAY send it always.
If an MSS option is not received at connection setup, TCP
MUST assume a default send MSS of 536 (576-40) [TCP:4].
The maximum size of a segment that TCP really sends, the
"effective send MSS," MUST be the smaller of the send MSS
(which reflects the available reassembly buffer size at the
remote host) and the largest size permitted by the IP layer:
Eff.snd.MSS =
min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
where:
* SendMSS is the MSS value received from the remote host,
or the default 536 if no MSS option is received.
* MMS_S is the maximum size for a transport-layer message
that TCP may send.
* TCPhdrsize is the size of the TCP header; this is
normally 20, but may be larger if TCP options are to be
sent.
* IPoptionsize is the size of any IP options that TCP
will pass to the IP layer with the current message.
Mike.
+-----------------------------------------------------------------------+
| || || |
| Mike Sullenberger || || |
| ***@cisco.com |||| |||| |
| Escalation Team |||||||| |||||||| |
| Customer Advocacy ..:|||||||||||||||||||||:.. |
| C i s c o S y s t e m s |
+-----------------------------------------------------------------------+