Re: [Tsvwg] problem with draft-allman-tcp-sack-11.txt

Ethan Blanton <eblanton@cs.ohiou.edu> Tue, 09 July 2002 16:27 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 MAA01949 for <tsvwg-archive@odin.ietf.org>; Tue, 9 Jul 2002 12:27:20 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id MAA17956 for tsvwg-archive@odin.ietf.org; Tue, 9 Jul 2002 12:28:13 -0400 (EDT)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id MAA16779; Tue, 9 Jul 2002 12:09:09 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id MAA16753 for <tsvwg@optimus.ietf.org>; Tue, 9 Jul 2002 12:09:06 -0400 (EDT)
Received: from paco.paco.myip.org (oh-northolmstead2b-78.clvhoh.adelphia.net [24.50.195.78]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id MAA01135 for <tsvwg@ietf.org>; Tue, 9 Jul 2002 12:08:13 -0400 (EDT)
Received: (from elb@localhost) by paco.paco.myip.org (8.11.6/8.11.6) id g69G7AX15723; Tue, 9 Jul 2002 12:07:10 -0400
X-Authentication-Warning: paco.paco.myip.org: elb set sender to eblanton@cs.ohiou.edu using -f
Date: Tue, 09 Jul 2002 12:07:10 -0400
From: Ethan Blanton <eblanton@cs.ohiou.edu>
To: "Henderson, Thomas R" <thomas.r.henderson@boeing.com>
Cc: tsvwg@ietf.org, homa@crl.go.jp, Mark Allman <mallman@guns.grc.nasa.gov>, kfall@intel-research.net
Subject: Re: [Tsvwg] problem with draft-allman-tcp-sack-11.txt
Message-ID: <20020709160710.GA15689@paco.paco.myip.org>
Mail-Followup-To: "Henderson, Thomas R" <thomas.r.henderson@boeing.com>, tsvwg@ietf.org, homa@crl.go.jp, Mark Allman <mallman@guns.grc.nasa.gov>, kfall@intel-research.net
References: <CFD05F4EAA7CCC4ABB08A47859D484140A0B6715@xch-nw-29.nw.nos.boeing.com>
Mime-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="ikeVEW9yuYc//A+q"
Content-Disposition: inline
In-Reply-To: <CFD05F4EAA7CCC4ABB08A47859D484140A0B6715@xch-nw-29.nw.nos.boeing.com>
User-Agent: Mutt/1.4i
X-GnuPG-Fingerprint: A290 14A8 C682 5C88 AE51 4787 AFD9 00F4 883C 1C14
Sender: tsvwg-admin@ietf.org
Errors-To: tsvwg-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Transport Area Working Group <tsvwg.ietf.org>
X-BeenThere: tsvwg@ietf.org

Henderson, Thomas R spake unto us the following wisdom:
> A recent paper at ICC 2002 ("Improving TCP Performance after a Long Channel
> Outage" by Murakami, Wu, and Inoue) describes some pathological behavior
> that might arise due to strict observance of draft-allman-tcp-sack-11.txt.
> The problem is basically as follows:
> 
> - consider a TCP, with a somewhat large usable window, that traverses a path
> that becomes blocked for a duration of time that it is able to "swallow"
> roughly a window's worth of data and ACKs.

It appears to me that by this you mean that the packets are actually
*lost*, and not just delayed for a ridiculous period of time.

> - this TCP will time out eventually (setting cwnd to 1 segment) and resend
> its oldest unacked segment.  At some point, the blockage clears and a
> retransmission and ACK thereof make it through the channel.  

OK.

> - this first ACK received will have no SACK blocks since all of the data off
> the top of the window was lost.  According to the algorithm, HighACK will
> grow by one segment, so pipe will decrement a corresponding amount.  But
> pipe will still be a large (multiple segments), and greater than cwnd.  Note
> that the internet-draft does not say anything about touching any of the
> variables determining "LeftNetwork()" when a timeout occurs. 

Correct, according to my reading.

> - at this point, correct behavior is somewhat ambiguous (underspecified).
> Murakami et al., who cite draft-allman-tcp-sack-07.txt, describe a TCP
> sender that waits again for timeouts for each subsequent retransmission
> (ever increasing the backoff), resulting in recoveries that can last for
> tens of minutes.  If instead the TCP sender always permits at least one
> transmission upon receipt of an ACK, it may instead send the next
> retransmission in response to this ACK, without waiting for a timeout.  But
> the bottom line is that it seems that at most one segment can be recovered
> per RTT if pipe control is used and pipe > cwnd.

This appears to be incorrect.  At this point the TCP sender is not
being governed by draft-allman-tcp-sack-11, but by traditional slow
start with the added condition that "Update () MAY continue to be used
appropriately upon receipt of ACKs".  Because of this, the values of
LeftNetwork (), HighData, etc. are not relevant.

There may in fact be some issues if there is a second loss (after the
RTO) losing a segment below HighData.  I will look at this.

> The question of whether HighData should be changed upon a timeout is
> interesting.  A cautious approach would be to not reset it so as to avoid
> false fast retransmissions that might arise from dupacks that are generated
> due to previously received segments that the sender retransmits-- this would
> be in line with NewReno principles.  However, if the receiver is properly
> sending SACK blocks, unnecessary retransmissions should be avoided, and
> dupacks would probably indicate an additional segment loss (or possibly that
> the receiver has discarded SACKed data).   

My personal feeling on this matter (and, I think, shared by my
co-authors) is that an RTO is a Bad Thing.  We are working under the
assumption that if our SACK-aware fast recovery was not sufficient
something very wrong has happened (small windows do break this
assumption in some cases) and all possible caution is merited.

If I'm misunderstanding something here, please let me know.

Ethan

-- 
Now if I wasn't such a weenie do ya think you'd still love me,
Pretendin' I'm an airplane on the living room floor?
                -- The Offspring, "I Choose"