[tcpm] TCP MSS option - FYI original discussion

David Borman <david.borman@windriver.com> Thu, 26 March 2009 01:52 UTC

Return-Path: <david.borman@windriver.com>
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7C9B43A6A0A for <tcpm@core3.amsl.com>; Wed, 25 Mar 2009 18:52:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.387
X-Spam-Level:
X-Spam-Status: No, score=-3.387 tagged_above=-999 required=5 tests=[AWL=0.212, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W7r9r+Sp4YRA for <tcpm@core3.amsl.com>; Wed, 25 Mar 2009 18:52:06 -0700 (PDT)
Received: from mail.wrs.com (mail.windriver.com [147.11.1.11]) by core3.amsl.com (Postfix) with ESMTP id 9F99F3A680A for <tcpm@ietf.org>; Wed, 25 Mar 2009 18:52:06 -0700 (PDT)
Received: from ALA-MAIL03.corp.ad.wrs.com (ala-mail03 [147.11.57.144]) by mail.wrs.com (8.13.6/8.13.6) with ESMTP id n2Q1qw79025476 for <tcpm@ietf.org>; Wed, 25 Mar 2009 18:52:58 -0700 (PDT)
Received: from ala-mail06.corp.ad.wrs.com ([147.11.57.147]) by ALA-MAIL03.corp.ad.wrs.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 25 Mar 2009 18:52:57 -0700
Received: from dhcp-53da.meeting.ietf.org ([147.11.233.50]) by ala-mail06.corp.ad.wrs.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 25 Mar 2009 18:52:58 -0700
Message-Id: <511AB862-06E0-40EB-B6C8-E490D82E7DC0@windriver.com>
From: David Borman <david.borman@windriver.com>
To: tcpm@ietf.org
Content-Type: text/plain; charset="US-ASCII"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v930.3)
Date: Wed, 25 Mar 2009 20:52:57 -0500
X-Mailer: Apple Mail (2.930.3)
X-OriginalArrivalTime: 26 Mar 2009 01:52:58.0184 (UTC) FILETIME=[96770C80:01C9ADB5]
Subject: [tcpm] TCP MSS option - FYI original discussion
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Mar 2009 01:52:07 -0000

In today's TCPM session, Matt Mathis asked when the TCP MSS option  
discussion first happened.  I looked it up, and I originally posted  
the discussion to the tcplw@cray.com mailing list in 1993.  Here's the  
text of that original message, taken from my mail archives.

			-David Borman

> From dab Thu Jan  7 14:12:10 1993
> To: tcplw@cray.com
> Subject: TCP MSS & Timestamps
>
>
> In recent private mail conversation, it has come to my
> attention that we probably don't all have a common view on
> what to do with the TCP MSS value in the presence of TCP
> options, since the TCP MSS value only refers to the TCP
> data part of the packet, and the presence of TCP options
> will affect that value.
>
> Since 1323 is eligible for elevation to Draft status, this
> is a good time to revise the document to clarify this issue.
>
> First, there is a maximum packet size.  When you insert options,
> the amount of space available for TCP data within a non-fragmented
> IP packet goes down by the length of the options.  So, the option
> length needs to be accounted for.
>
> The "be conservative in what you send" rule can be applied
> in two ways.  The first is in the generation of the MSS
> value, you can say "well, I'll assume that the other side
> won't adjust for the length of the options, so I'll adjust
> for the option length when sending the MSS".  Meanwhile,
> on the other side, when sending a packet, you can say "well,
> I'll assume that the other side did not adjust for the options
> length when it sent the MSS, and so I'll decrease the data
> size by the option length".  You can do both, but then the
> packets will usually be short.  So, you should pick one or the
> other, but not both.
>
> With two places to do the accounting for the options vs.
> the MSS value, you get a grid like:
>
>                 | MSS is adjusted       | MSS is not adjusted
>                 | for options           | for options
> ----------------+-----------------------+--------------------
> Sender adjusts  | packets are too       | packets are the
> length for      | short                 | correct length
> options         |                       |
> ----------------+-----------------------+--------------------
> Sender doesn't  | packets are the       | packets are too
> adjust length   | correct length        | long.
> for options     |                       |
>
> The bottom right-hand corner is what we want to avoid, since that
> is the case when IP will have to fragment the packet.  The only
> way that the side that is sending the datagrams can guarantee that
> it doesn't send IP packets that are too long is to always adjust
> the data length by the length of the options.  It would be better
> to send a packet that is a few bytes too short rather than one
> that is a few bytes too long.
>
> So, the bottom line is that I'd like to see a paragraph added
> to 1323 stating that the generated MSS value only takes into
> account the fixed IP and TCP header lengths, and that the side
> that is generating the datagrams needs to adjust the length of
> the TCP data to account for any IP or TCP options that it inserts
> into the datagram.
>
> Anyone disagree?
>
>                         -David Borman, dab@cray.com
>