Re: [tcpm] 1323bis - PAWS check's problem with reodering on the reverse path

Alexander Zimmermann <Alexander.Zimmermann@nets.rwth-aachen.de> Mon, 27 July 2009 14:57 UTC

Return-Path: <Alexander.Zimmermann@nets.rwth-aachen.de>
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 D64CE28C1A6 for <tcpm@core3.amsl.com>; Mon, 27 Jul 2009 07:57:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.001
X-Spam-Level:
X-Spam-Status: No, score=-3.001 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HELO_EQ_DE=0.35, HELO_MISMATCH_DE=1.448, J_CHICKENPOX_26=0.6, J_CHICKENPOX_33=0.6, J_CHICKENPOX_35=0.6, RCVD_IN_DNSWL_MED=-4]
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 LiUY1x+qG3JT for <tcpm@core3.amsl.com>; Mon, 27 Jul 2009 07:57:33 -0700 (PDT)
Received: from mta-1.ms.rz.rwth-aachen.de (mta-1.ms.rz.RWTH-Aachen.DE [134.130.7.72]) by core3.amsl.com (Postfix) with ESMTP id 7A1B828C19A for <tcpm@ietf.org>; Mon, 27 Jul 2009 07:57:33 -0700 (PDT)
MIME-version: 1.0
Received: from ironport-out-1.rz.rwth-aachen.de ([134.130.5.40]) by mta-1.ms.rz.RWTH-Aachen.de (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008)) with ESMTP id <0KNG0054747XC090@mta-1.ms.rz.RWTH-Aachen.de> for tcpm@ietf.org; Mon, 27 Jul 2009 16:57:33 +0200 (CEST)
X-IronPort-AV: E=Sophos; i="4.43,276,1246831200"; d="sig'?scan'208"; a="20526644"
Received: from relay-auth-1.ms.rz.rwth-aachen.de (HELO relay-auth-1) ([134.130.7.78]) by ironport-in-1.rz.rwth-aachen.de with ESMTP; Mon, 27 Jul 2009 16:57:33 +0200
Received: from dhcp-52b1.meeting.ietf.org ([unknown] [130.129.82.177]) by relay-auth-1.ms.rz.rwth-aachen.de (Sun Java(tm) System Messaging Server 7.0-3.01 64bit (built Dec 9 2008)) with ESMTPA id <0KNG0068G47WSM10@relay-auth-1.ms.rz.rwth-aachen.de> for tcpm@ietf.org; Mon, 27 Jul 2009 16:57:33 +0200 (CEST)
Message-id: <88586BB2-ECEC-48AC-A2ED-61C8A6196B7E@nets.rwth-aachen.de>
From: Alexander Zimmermann <Alexander.Zimmermann@nets.rwth-aachen.de>
To: David Borman <david.borman@windriver.com>
In-reply-to: <79C12B51-C0CE-47F9-A6EF-F61239D661B0@windriver.com>
Content-type: multipart/signed; protocol="application/pgp-signature"; micalg="pgp-sha1"; boundary="Apple-Mail-12--183486968"
Content-transfer-encoding: 7bit
Date: Mon, 27 Jul 2009 16:57:32 +0200
References: <1E6B7C58-4AE4-4B82-B110-F26D8F76F71B@nets.rwth-aachen.de> <79C12B51-C0CE-47F9-A6EF-F61239D661B0@windriver.com>
X-Pgp-Agent: GPGMail 1.2.0 (v56)
X-Mailer: Apple Mail (2.935.3)
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] 1323bis - PAWS check's problem with reodering on the reverse path
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: Mon, 27 Jul 2009 14:57:34 -0000

Hi David,

comments are inline.


Am 14.07.2009 um 01:12 schrieb David Borman:

> I've been thinking about this recently, and I think that while it may
> be a real issue, it's not one that we need to worry about.  I believe
> that the problem that the change fixes is a more likely scenario, so
> if you have to choose between the two, that's the one to pick.

Sure. As you mentioned offline last time after the meeting the new  
version
of the alg. is version that most OS implement. I fully agree with you  
that we
should adopt the updated version.

>
> Also, for this issue that Alexander brings up, the timestamp has to be
> changing between ACKs.  If the timestamp hasn't changed between the  
> re-
> ordered ACKs, then the "SEG.TSval >= TS.recent" check will succeed.
> Generally, the TS clock shouldn't be ticking that often, if it is
> changing with every ACK then it might be going faster than it needs  
> to.

However, *if* reordering is present in the network the case that I  
mentioned
is not so unlikely. We saw the phenomenon during some measurements/ 
dumps...

>
> So, this issue only occurs when ACKs are re-ordered, *and* the
> Timestamp clock has ticked between the reordered ACKs.  I'm thinking
> that 1323bis should just note that this situation does exist.

Definitely.
I know that for example Linux implement also an heuristic to detect  
reordered ACK.
Maybe we can put a point to that.

>
> What does everyone else think?  Shall we leave the text as is and just
> document this edge case, or do people disagree with me and feel that
> this is a real problem that needs to be addressed, and is more
> important than the problems that the original change fixes?
>
> 			-David

Alex

>
> On Mar 26, 2009, at 6:10 PM, Alexander Zimmermann wrote:
>
>> Hi David, hi TCPM Folks,
>>
>> in the 1323bis draft the PAWS check has a problem (discarding ACKs)
>> if reordering is present on the
>> reverse path and no data is piggybacked. Actually, it's not the PAWS
>> check itself, it's the modification
>> of section 3.4: "Which Timestamp to Echo".
>>
>> The important parts of the RFC1323 and the draft (in this order) are
>>
>> ---
>> (2) If Last.ACK.sent falls within the range of sequence numbers
>>     of an incoming segment:
>>
>>        SEG.SEQ <= Last.ACK.sent < SEG.SEQ + SEG.LEN
>>
>>     then the TSval from the segment is copied to TS.Recent;
>>     otherwise, the TSval is ignored.
>>
>> ---
>>
>> (2) If:
>>
>>      SEG.TSval >= TS.recent and SEG.SEQ <= Last.ACK.sent
>>
>>      then SEG.TSval is copied to TS.Recent; otherwise, it is
>>      ignored.
>> ---
>>
>> The addition of "SEG.TSval >= TS.recent" is not important for us at
>> moment. As the appendix said,
>> this check is included for consistency with the PAWS test only.
>>
>> The relevant paragraph is the change from "SEG.SEQ <= Last.ACK.sent
>> < SEG.SEQ + SEG.LEN" to the
>> reduced form "SEG.SEQ <= Last.ACK.sent". Again, the appendix said
>> that this change was made
>> since the original algorithm to control which timestamp is echoed
>> was incorrect in two regards:
>>
>> (1) It failed to update TSrecent for a retransmitted segment that
>> resulted from a lost ACK.
>>
>> (2) It failed if SEG.LEN = 0.
>>
>> It's right that the 1323bis algo fix these two problems, however,
>> it's introduced the new problem mentioned
>> already above.
>>
>> Following situation:
>> - One-way flow from TCP A to TCP B
>> - Reordering on the reverse path
>>
>> Consequence
>> - TCP A will discard all ACKs with were delayed
>> - Harmful in the case ABC (RFC 3465) is off, since we count ACKs for
>> slow-start and congestion avoidance
>>
>> Examples are attached.
>>
>> Alex
>>
>> <PAWS 1323.txt><PAWS 1323bis.txt>
>> //
>> // Dipl.-Inform. Alexander Zimmermann
>> // Department of Computer Science, Informatik 4
>> // RWTH Aachen University
>> // Ahornstr. 55, 52056 Aachen, Germany
>> // phone: (49-241) 80-21422, fax: (49-241) 80-22220
>> // email: zimmermann@cs.rwth-aachen.de
>> // web: http://www.umic-mesh.net
>> //
>>
>