Re: [tcpm] Detect Lost Retransmit with SACK

Alexander Zimmermann <alexander.zimmermann@nets.rwth-aachen.de> Tue, 10 November 2009 12:50 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 ECD933A69E4 for <tcpm@core3.amsl.com>; Tue, 10 Nov 2009 04:50:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.865
X-Spam-Level:
X-Spam-Status: No, score=-3.865 tagged_above=-999 required=5 tests=[AWL=0.936, BAYES_00=-2.599, HELO_EQ_DE=0.35, HELO_MISMATCH_DE=1.448, 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 6FD68MWjaHMl for <tcpm@core3.amsl.com>; Tue, 10 Nov 2009 04:50:05 -0800 (PST)
Received: from mta-2.ms.rz.rwth-aachen.de (mta-2.ms.rz.RWTH-Aachen.DE [134.130.7.73]) by core3.amsl.com (Postfix) with ESMTP id 7B7BF3A683C for <tcpm@ietf.org>; Tue, 10 Nov 2009 04:50:05 -0800 (PST)
MIME-version: 1.0
Content-transfer-encoding: 7bit
Content-type: text/plain; charset="us-ascii"
Received: from ironport-out-1.rz.rwth-aachen.de ([134.130.5.40]) by mta-2.ms.rz.RWTH-Aachen.de (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008)) with ESMTP id <0KSW009N6906KSG0@mta-2.ms.rz.RWTH-Aachen.de> for tcpm@ietf.org; Tue, 10 Nov 2009 13:50:30 +0100 (CET)
X-IronPort-AV: E=Sophos;i="4.44,716,1249250400"; d="scan'208";a="33202792"
Received: from relay-auth-2.ms.rz.rwth-aachen.de (HELO relay-auth-2) ([134.130.7.79]) by ironport-in-1.rz.rwth-aachen.de with ESMTP; Tue, 10 Nov 2009 13:50:30 +0100
Received: from miami.nets.rwth-aachen.de ([unknown] [137.226.12.180]) by relay-auth-2.ms.rz.rwth-aachen.de (Sun Java(tm) System Messaging Server 7.0-3.01 64bit (built Dec 9 2008)) with ESMTPA id <0KSW005U8906E630@relay-auth-2.ms.rz.rwth-aachen.de> for tcpm@ietf.org; Tue, 10 Nov 2009 13:50:30 +0100 (CET)
From: Alexander Zimmermann <alexander.zimmermann@nets.rwth-aachen.de>
In-reply-to: <5FDC413D5FA246468C200652D63E627A06491679@LDCMVEXC1-PRD.hq.netapp.com>
Date: Tue, 10 Nov 2009 13:50:30 +0100
Message-id: <2C92861C-3B66-4E7F-9255-66AE6C2B1BB1@nets.rwth-aachen.de>
References: <5FDC413D5FA246468C200652D63E627A06491679@LDCMVEXC1-PRD.hq.netapp.com>
To: "Scheffenegger, Richard" <rs@netapp.com>
X-Mailer: Apple Mail (2.1077)
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] Detect Lost Retransmit with SACK
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: Tue, 10 Nov 2009 12:50:07 -0000

Hi Richard,

I discussed your example with Arnd (he is a line-of-sight colleague). Your "algorithms"
may workwhen you have only one bust lost per cwnd. If you have multiple non-burst
loss (e.g. WLAN), IMHO, is doesn't work.

Am 09.11.2009 um 18:27 schrieb Scheffenegger, Richard:

> 
> Hi Alexander,
> 
> Thanks for the welcome :)
> 
> I fork another thread with the LimitedTransport||FastRecovery / ABC interaction...
> 
> 
> I will try to sketch up an example to demonstrate what problem I'm trying to address:
> 
> 
> Let's assume the cwnd is already open for at least 7 segments, before the segment with
> sequence number 10000 is the first one to be dropped by the network.
> 
> Also, let's assume that FastRetransmit runs from the left edge of the leftmost hole
> (SND.UNA) upwards, and that per ACK only a single segment is sent.
> 
> 
>             Triggering    ACK      Left     Right    Left     Right
>             Segment                Edge 1   Edge 1   Edge 2   Edge 2
> 
>              9000          9000
>             10000  (lost)       *
>             11000  (lost)
>             12000  (lost)
>             13000  (lost)
>             14000  (lost)
>             15000         10000    15000    16000
>             16000         10000    15000    17000
>             17000         10000    15000    18000

Ok, I count 9 segments ;-) Anyway, your example is a little bit strange.
You assume you send 9 segment in a burst. Then your ACK for 9000 will trigger
the segment 18000. Then the 2 DUPACKs  for 15000 and 16000 will trigger 19000,
20000 respectively (Limited Transmit). The third DUPACK will trigger the Fast
Retransmit 10000. Since NextSeq() and pipe allow you retransmit 11000, 12000.

At this point you have to wait since the pipe is full (if I calculate pipe in a rush correctly).
A RTT later you will get 3 Dupacks, even if the 10000 is not lost.

OK, I think you can adjust your example so that it works for the given case, however in
other scenarios (multiple loss, reordering, packet duplication,...) it will be much more
complicated.

I suggest writing examples as Ilpo does in
http://tools.ietf.org/html/draft-ietf-tcpm-sack-recovery-entry-00.
It's much more easier to read.

> 
> 3 ACKs trigger fast retransmit
> 
>             10000  (lost again)
>             11000         10000    11000    12000    15000    18000
>             12000         10000    11000    13000    15000    18000
>             13000         10000    11000    14000    15000    18000
> -> here we have again 3 ACKs indicating a another loss of one of the retransmitted
> packets. The leftmost hole did not change, while the overall number of SACKed
> octets did decrease for 3 consecutive ACKs (4; 3 and 2 segments marked by SACK).
> 

Alex

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