[Tsvwg] problem with draft-allman-tcp-sack-11.txt
"Henderson, Thomas R" <thomas.r.henderson@boeing.com> Tue, 09 July 2002 15:48 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 LAA00092 for <tsvwg-archive@odin.ietf.org>; Tue, 9 Jul 2002 11:48:59 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id LAA13870 for tsvwg-archive@odin.ietf.org; Tue, 9 Jul 2002 11:49:51 -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 LAA12415; Tue, 9 Jul 2002 11:33:23 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id LAA12390 for <tsvwg@optimus.ietf.org>; Tue, 9 Jul 2002 11:33:21 -0400 (EDT)
Received: from stl-smtpout-01.boeing.com (stl-smtpout-01.boeing.com [12.13.247.21]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id LAA29339 for <tsvwg@ietf.org>; Tue, 9 Jul 2002 11:32:28 -0400 (EDT)
Received: from slb-av-02.boeing.com ([129.172.13.7]) by stl-smtpout-01.boeing.com (8.9.2/8.8.5-M2) with ESMTP id KAA08496; Tue, 9 Jul 2002 10:33:19 -0500 (CDT)
Received: from blv-hub-01.boeing.com (localhost [127.0.0.1]) by slb-av-02.boeing.com (8.9.3/8.9.2/MBS-AV-01) with ESMTP id IAA08603; Tue, 9 Jul 2002 08:33:18 -0700 (PDT)
Received: from xch-nwbh-02.nw.nos.boeing.com (xch-nwbh-02.nw.nos.boeing.com [192.54.12.28]) by blv-hub-01.boeing.com (8.11.3/8.11.3/MBS-LDAP-01) with ESMTP id g69FXH021158; Tue, 9 Jul 2002 08:33:17 -0700 (PDT)
Received: by xch-nwbh-02.nw.nos.boeing.com with Internet Mail Service (5.5.2650.21) id <N8R58C2Y>; Tue, 9 Jul 2002 08:28:16 -0700
Message-ID: <CFD05F4EAA7CCC4ABB08A47859D484140A0B6715@xch-nw-29.nw.nos.boeing.com>
From: "Henderson, Thomas R" <thomas.r.henderson@boeing.com>
To: "'tsvwg@ietf.org'" <tsvwg@ietf.org>
Cc: "'homa@crl.go.jp'" <homa@crl.go.jp>
Date: Tue, 09 Jul 2002 08:28:11 -0700
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)
Content-Type: text/plain
Subject: [Tsvwg] problem with draft-allman-tcp-sack-11.txt
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
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. - 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. - 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. - 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. Suggested fix: -------------------- Data that has been sent before a timeout event should be considered as having left the network. "pipe" should equal one segment immediately after the first retransmission following a timeout, and zero when this first retransmission's ACK arrives (i.e., ability to send retransmissions after a timeout should be governed by cwnd). Perhaps a case e) in LeftNetwork() defined as follows: "(e) 'S1' was most recently transmitted before the TCP sender incurred its most recent timeout." 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). Thoughts? Tom p.s. Interestingly, we have observed similar behavior using SackFullTcp in ns-2, but for a different reason. ns-2 SackFullTcp only enables pipe control when fast retransmission is entered via dupack action. However, after a timeout, SackFullTcp does not use pipe control but instead mistakenly considers itself in fast recovery mode, suppressing cwnd growth. As a result, cwnd is stuck at one segment until snd_nxt grows beyond HighData again, and we can only retransmit 1 segment at a time (per RTT). _______________________________________________ tsvwg mailing list tsvwg@ietf.org https://www1.ietf.org/mailman/listinfo/tsvwg
- [Tsvwg] problem with draft-allman-tcp-sack-11.txt Henderson, Thomas R
- Re: [Tsvwg] problem with draft-allman-tcp-sack-11… Ethan Blanton
- RE: [Tsvwg] problem with draft-allman-tcp-sack-11… Henderson, Thomas R
- RE: [Tsvwg] problem with draft-allman-tcp-sack-11… Kacheong Poon
- RE: [Tsvwg] problem with draft-allman-tcp-sack-11… Henderson, Thomas R
- RE: [Tsvwg] problem with draft-allman-tcp-sack-11… Kacheong Poon