Re: [tcpm] RFC 1323: Timestamps option

Richard Wendland <richard@codeburst.co.uk> Sat, 27 January 2007 12:21 UTC

Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HAmZ9-0001wl-C5; Sat, 27 Jan 2007 07:21:55 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HAmZ7-0001we-Ux for tcpm@ietf.org; Sat, 27 Jan 2007 07:21:53 -0500
Received: from starburst.demon.co.uk ([80.176.229.163]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HAmZ6-0000q3-F6 for tcpm@ietf.org; Sat, 27 Jan 2007 07:21:53 -0500
Received: (from richard@localhost) by starburst.demon.co.uk (8.11.6/8.11.6) id l0RCLmQ25484; Sat, 27 Jan 2007 12:21:48 GMT
From: Richard Wendland <richard@codeburst.co.uk>
Message-Id: <200701271221.l0RCLmQ25484@starburst.demon.co.uk>
Subject: Re: [tcpm] RFC 1323: Timestamps option
To: david.borman@windriver.com
Date: Sat, 27 Jan 2007 12:21:47 +0000
In-Reply-To: <018977E8-C9F4-42E2-A877-95330F65E7D3@windriver.com> from "David Borman" at Jan 26, 2007 12:33:29
X-Mailer: ELM [version 2.5 PL6]
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Scan-Signature: cab78e1e39c4b328567edb48482b6a69
Cc: TCP Maintenance and Minor Extensions WG <tcpm@ietf.org>
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: richard@codeburst.co.uk
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

A difficulty with the suggested enabling mechanism for Option #2 is
that a major TCP stack already (mis)behaves in a similar way for current
TCP connections.

> 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.

The Windows TCP stack currently replies SYN,ACK TSval=0,TSecr=0 to a
regular SYN TSval=xxx,TSecr=0.

So if you send SYN TSval=0,TSecr=0, and get back SYN,ACK TSval=0,TSecr=0
you may be talking to a TCP stack that understands the new enabling
semantics, or a Windows TCP stack that does not.

You could argue this does not really matter, as the Windows TCP stack
will go on using Timestamps (I presume), immediately enabling it on the
fly under the new semantics, so in the end all is fairly well (except
Windows TCP may be sent a few segments with no Timestamps that it does
not expect, until on the fly enabling is completed).  However I don't
think this confusing situation is desirable.

I think Windows TCP behaves in this way because it does not create a
full TCP state block until after SYN,ACK processing, so has nowhere
to record the initial TSvals.  If we are updating RFC1323, I wonder if
this Windows behaviour should be explicitly allowed, since in practice
we have to allow for it now, and it has some merit.

Trying to find legitimacy for the Windows TCP behaviour, it could
be said that 3.2 of RFC1323 wasn't entirely clear in this regard.
It says "When TSecr is not valid, its value must be zero." - I can
conceive of this being understood (out of context) as meaning: if you
do not have a valid TSecr available for some reason, then send a zero;
an interpretation that would permit the Windows TCP behaviour, and make
the suggested enabling mechanism ambiguous.

	Richard
-- 
Richard Wendland				richard@codeburst.co.uk

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