Re: [tcpm] RFC 1323: Timestamps option

Fernando Gont <fernando@gont.com.ar> Fri, 26 January 2007 19:56 UTC

Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HAXBl-0005lP-75; Fri, 26 Jan 2007 14:56:45 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HAXBj-0005lC-Ho for tcpm@ietf.org; Fri, 26 Jan 2007 14:56:43 -0500
Received: from smtp1.xmundo.net ([201.216.232.80]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HAXBh-0004cw-U8 for tcpm@ietf.org; Fri, 26 Jan 2007 14:56:43 -0500
Received: from venus.xmundo.net (venus.xmundo.net [201.216.232.56]) by smtp1.xmundo.net (Postfix) with ESMTP id CF50FF0C553; Fri, 26 Jan 2007 16:56:33 -0300 (ART)
Received: from fgont.gont.com.ar (157-184-231-201.fibertel.com.ar [201.231.184.157]) (authenticated bits=0) by venus.xmundo.net (8.12.11.20060308/8.12.11) with ESMTP id l0QJuUvk006190; Fri, 26 Jan 2007 16:56:31 -0300
Message-Id: <200701261956.l0QJuUvk006190@venus.xmundo.net>
X-Mailer: QUALCOMM Windows Eudora Version 7.1.0.9
Date: Fri, 26 Jan 2007 16:56:14 -0300
To: David Borman <david.borman@windriver.com>, TCP Maintenance and Minor Extensions WG <tcpm@ietf.org>
From: Fernando Gont <fernando@gont.com.ar>
Subject: Re: [tcpm] RFC 1323: Timestamps option
In-Reply-To: <018977E8-C9F4-42E2-A877-95330F65E7D3@windriver.com>
References: <018977E8-C9F4-42E2-A877-95330F65E7D3@windriver.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format=flowed
X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (venus.xmundo.net [201.216.232.56]); Fri, 26 Jan 2007 16:56:32 -0300 (ART)
X-Spam-Score: 0.1 (/)
X-Scan-Signature: fb6060cb60c0cea16e3f7219e40a0a81
Cc:
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
Errors-To: tcpm-bounces@ietf.org

Hi David,

I'm inclined for option #3, too.

Some comments inline....


>Option #2
>---------
[....]
>The question then is, how do you negotiate Timestamps without turning
>them on?  My suggestion would be to send a Timestamps option with the
>special format TSval=0,TSecr=0.  If you receive this in a SYN, then
>the request is to negotiate knowledge of the Timestamps option.  The
>returning SYN,ACK would also need to contain TSval=0,TSecr=0 to
>complete the negotiation.  If you are connecting to a site that
>doesn't support this feature but does support Timestamps, it would
>respond with TSval=xxx,TSecr=0.  At that point, Timestamps are now
>enabled.  The downside of this is that now the originator has started
>their Timestamps values at 0, and must continue from there with their
>timestamps; they can't just suddenly jump to some arbitrary value
>because that could break PAWs.

IIRC, there are some implementations that randomize the TCP sequence 
number, but use monotonically increasing timestamp generator.
Those implementations would cause, the BSD hack of allowing the 
establishment of a new connection if the ISN of the new incarnation 
of the conenction is larger than the last seq number seen on the old 
connection to fail fail.
IIRC, Linux also takes into account the Timestamp. Thus, if you 
randomize the ISN, but use a monotonically increasing timestamp 
generator, the hack would still succeed.

However, option #2 above would break this.


[....]
>So why should we change things?  My recollection was that the primary
>motivation was to conserve option space, to avoid having to put in
>the extra 12 bytes of TCP options on every packet until we get to the
>point where the sequence space might wrap, and then turn them on so
>that we can get PAWS to protect the rest of the connection.

I assume this means that one would turn timestamps on when starting a 
bulk transfer on the connection (?).

If so I'm not sure the space we'd be saving would be worth the 
additional complexity: For most application protocols usually 
employed for bulk transfers, the bulk transfer is preceded by only a 
few packets (to establish the TCP connection and send the application 
request). So option space would be saved in only a few segments.

Am I missing something?

Also, in order to enable timestamps midstream, I guess applications 
should perform a call to setsockopt() or the like? If so, this 
require specification of the corresponding socket option, would 
require applications to be modified, and we would also requier us to 
agree on "what the option should default to", etc.

So, unless some strong reason is raised for going with option #1 or 
option #2, I would stick with option #3.

Thanks,

-- 
Fernando Gont
e-mail: fernando@gont.com.ar || fgont@acm.org
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076 FFF1





_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www1.ietf.org/mailman/listinfo/tcpm