On 2010-04-15 12:18, Matthew Sullenberger wrote:
I understand the host I am trying to communicate with has its own set of
issues, but my question to Misc is that I was under the belief that if
either side did not explicitly send a MSS during the handshake the
required behavior was to default to 576 for the send MSS. My

Assuming you meant 536...

understanding was this was the required behavior even with PMTU enabled,
however it does not seem to be the case. Am I misunderstanding how this
is supposed to work? If I disable PMTU, my box does reduce the Send MSS
as I would expect.

...you're right according to RFC 879:

      HOSTS MUST NOT SEND DATAGRAMS LARGER THAN 576 OCTETS UNLESS THEY
      HAVE SPECIFIC KNOWLEDGE THAT THE DESTINATION HOST IS PREPARED TO
      ACCEPT LARGER DATAGRAMS.

         This is a long established rule.

      THE TCP MAXIMUM SEGMENT SIZE IS THE IP MAXIMUM DATAGRAM SIZE MINUS
      FORTY.

         The default IP Maximum Datagram Size is 576.
         The default TCP Maximum Segment Size is 536.

And also according to RFC 1122:

            If an MSS option is not received at connection setup, TCP
            MUST assume a default send MSS of 536 (576-40) [TCP:4].

And also accordint to RFC 1191:

   A TCP implementation must also store the MSS value received from its
   peer (which defaults to 536), and not send any segment larger than
   this MSS, regardless of the PMTU.  In 4.xBSD-derived implementations,
   this requires adding an additional field to the TCP state record.

Simon
--
NAT64/DNS64 open-source --> http://ecdysis.viagenie.ca
STUN/TURN server        --> http://numb.viagenie.ca
vCard 4.0               --> http://www.vcarddav.org

Reply via email to