[Tsvwg] Updating timestamps (ts_recent) in Linux

"Duke, Martin" <martin.duke@boeing.com> Thu, 07 August 2003 22:01 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id SAA04879 for <tsvwg-archive@odin.ietf.org>; Thu, 7 Aug 2003 18:01:29 -0400 (EDT)
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19ksok-0007g3-Gv for tsvwg-archive@odin.ietf.org; Thu, 07 Aug 2003 18:01:06 -0400
Received: (from exim@localhost) by www1.ietf.org (8.12.8/8.12.8/Submit) id h77M16rk029505 for tsvwg-archive@odin.ietf.org; Thu, 7 Aug 2003 18:01:06 -0400
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19ksog-0007f1-6p; Thu, 07 Aug 2003 18:01:02 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19kso5-0007eM-I6 for tsvwg@optimus.ietf.org; Thu, 07 Aug 2003 18:00:25 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id SAA04848 for <tsvwg@ietf.org>; Thu, 7 Aug 2003 18:00:18 -0400 (EDT)
Received: from ietf-mx ([132.151.6.1]) by ietf-mx with esmtp (Exim 4.12) id 19kso2-0003A4-00 for tsvwg@ietf.org; Thu, 07 Aug 2003 18:00:22 -0400
Received: from blv-smtpout-01.boeing.com ([130.76.32.69]) by ietf-mx with esmtp (Exim 4.12) id 19kso1-0003A0-00 for tsvwg@ietf.org; Thu, 07 Aug 2003 18:00:22 -0400
Received: from blv-av-01.boeing.com ([192.42.227.216]) by blv-smtpout-01.boeing.com (8.9.2/8.8.5-M2) with ESMTP id PAA01998 for <tsvwg@ietf.org>; Thu, 7 Aug 2003 15:00:21 -0700 (PDT)
Received: from slb-hub-01.boeing.com (localhost [127.0.0.1]) by blv-av-01.boeing.com (8.9.3p2/8.9.2/MBS-AV-02) with ESMTP id PAA20809 for <tsvwg@ietf.org>; Thu, 7 Aug 2003 15:00:20 -0700 (PDT)
Received: from XCH-NWBH-01.nw.nos.boeing.com (xch-nwbh-01.nw.nos.boeing.com [192.33.62.231]) by slb-hub-01.boeing.com (8.11.3/8.11.3/MBS-LDAP-01) with ESMTP id h77Lx8500888 for <tsvwg@ietf.org>; Thu, 7 Aug 2003 14:59:08 -0700 (PDT)
Received: from XCH-NW-03.nw.nos.boeing.com ([192.42.226.68]) by XCH-NWBH-01.nw.nos.boeing.com with Microsoft SMTPSVC(5.0.2195.6662); Thu, 7 Aug 2003 14:59:05 -0700
content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-MimeOLE: Produced By Microsoft Exchange V6.0.6375.0
Date: Thu, 07 Aug 2003 14:59:05 -0700
Message-ID: <B96DB973FD58EE469E4426886240EE97294A56@xch-nw-03.nw.nos.boeing.com>
Thread-Topic: Updating timestamps (ts_recent) in Linux
Thread-Index: AcNdL17csxuLUJTxTwCQ0+6SwBoeng==
From: "Duke, Martin" <martin.duke@boeing.com>
To: tsvwg@ietf.org
X-OriginalArrivalTime: 07 Aug 2003 21:59:05.0431 (UTC) FILETIME=[1E931E70:01C35D2F]
Content-Transfer-Encoding: quoted-printable
Subject: [Tsvwg] Updating timestamps (ts_recent) in Linux
Sender: tsvwg-admin@ietf.org
Errors-To: tsvwg-admin@ietf.org
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.0.12
Precedence: bulk
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
Content-Transfer-Encoding: quoted-printable

I've heard rumors that this has been discussed before on tcp-impl, but an extensive search found no messages on this topic, so apologies for possibly re-treading old ground.

How do people feel about the way Linux decides what timestamp to echo?

Specifically, although the behavior is compliant with RFC 1323, an old addendum to the RFC (http://www.kohala.com/start/tcplw-extensions.txt) pointed out some odd behavior.

Essentially, if the connection goes down, the subsequent retransmissions will have later ts values.  However, if an ACK was lost, the kernel currently does not update ts_recent with these values.  If the channel comes back up and a retrans succeeds, the client will send an ack with an ts echo equal to the old value of ts_recent.

As the difference between the echo and the current time is quite large, it 
will result in an extremely large RTT measurement, triggering a huge increase 
in the RTO.  In an unreliable, bursty link, such as satellites, another outage 
could occur shortly thereafter, and an inappropriately long timeout can occur.

The reason for the problem is that ts_recent is only updated if the receive window moves to the right.  Ideally, packets with sequence numbers to the left of the window edge should trigger an update as well.

There are certainly situations where the current Linux behavior is terrible, but I have yet to see an explanation for why this "bug" should not be fixed.  I've heard criticisms of the document cited above as a whole but have yet to understand why updating ts_recent more frequently will break something.  I know that BSD fixed this some time ago (Stevens talks about it in his book).

Any thoughts?

Martin Duke
martin.duke@boeing.com

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