[Tsvwg] TCP: SetPipe() in SACK draft
Ken Calvert <calvert@netlab.uky.edu> Sat, 17 August 2002 13:23 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 JAA25290 for <tsvwg-archive@odin.ietf.org>; Sat, 17 Aug 2002 09:23:12 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id JAA13409 for tsvwg-archive@odin.ietf.org; Sat, 17 Aug 2002 09:24:34 -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 JAA13079; Sat, 17 Aug 2002 09:03:31 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id JAA13054 for <tsvwg@optimus.ietf.org>; Sat, 17 Aug 2002 09:03:30 -0400 (EDT)
Received: from tosh.netlab.uky.edu (tosh.netlab.uky.edu [204.198.76.200]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id JAA24983 for <tsvwg@ietf.org>; Sat, 17 Aug 2002 09:02:05 -0400 (EDT)
Received: from ozark.netlab.uky.edu (ozark.netlab.uky.edu [204.198.76.63]) by tosh.netlab.uky.edu (Postfix) with ESMTP id 1BB92CE80; Sat, 17 Aug 2002 09:03:28 -0400 (EDT)
Date: Sat, 17 Aug 2002 09:03:28 -0400
From: Ken Calvert <calvert@netlab.uky.edu>
To: Mark Allman <mallman@grc.nasa.gov>
Cc: tsvwg@ietf.org
In-Reply-To: <200208051923.PAA15146@lawyers.ir.bbn.com>
Message-ID: <Pine.LNX.4.21.0208170858330.28330-100000@ozark.netlab.uky.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Subject: [Tsvwg] TCP: SetPipe() in SACK draft
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
Folks, We believe there is a problem with the SetPipe() routine as defined in draft-allman-tcp-sack-12.txt. It counts data that is considered lost, but has not yet been retransmitted, as being in the pipe. This prevents retransmissions that should (we think) be allowed. Here is an example illustrating the problem: Assume that there are 8 segments outstanding and cwnd=8. The sixth, seventh and eighth segments are SACKed, causing the recovery phase to be entered. cwnd is set to 4, and the first segment is retransmitted. At this point HighAck is just before the first segment, HighData is the end of the eighth segment, and HighRxt is the end of the first segment. SetPipe() returns 5, and no other segments are retransmitted. The problem is that if segment 1 is considered lost, segments 2 through 5 should be also. Segments 2-4 should be retransmitted, but they will not be under the current algorithm. (End of example.) We propose a different method of computing SetPipe(), but along the same lines. Consider two predicates on sequence numbers: - Lost(i) is true when the byte with sequence number i is considered lost. - Rxd(i) is true if the sequence number i has been retransmitted during the current recovery phase. These can be defined exactly as in the current draft (i.e. IsLost and i <= HighRxt), but for the moment we don't care how they are defined. What's important is that each of these predicates has a "monotonicity" property, in that there are sequence numbers k_Lost and k_Rxt, such that each predicate is true for all sequence numbers smaller than its k (between HighAck and HighData), and false for all others. The currently-used definitions have this property. These predicates partition the unSACKed portion of the outstanding sequence space into four parts (some of which may be empty): |-----------|-------------|------------|-------------| |Lost && Rxd|Lost && !Rxd |!Lost && Rxd|!Lost && !Rxd| 1 2 3 4 Part 1 contains #s that were returned per clause (1) in earlier invocations of NextSeg() (and the initially-retransmitted segment). They should be counted once in computing pipe. Part 2 contains those sequence #s that will be returned by future invocations of NextSeg(), per clause (1) of its definition. These bytes are considered to have left the network but haven't been retransmitted and should not be included in the pipe calculation. Part 3 contains sequence #s that were returned per clause (3) in earlier invocations of NextSeg(). They should be counted twice in computing pipe. Part 4 contains sequence #s whose fate is unknown, and which might or might not ever be retransmitted (per clause (3) of NextSeg). They should be counted once in computing pipe. At any time, at least one of Part 2 or Part 3 is empty. (This follows from the monotonicity property.) Intially Part 3 is empty. As HighRxt increases, the boundary between 1 and 2 moves right until Part 2 is empty; then seq #s (may) begin to move from 4 to 3. This leads to the following suggested definition for SetPipe(): Between HighAck and HighData: add 1 for each unSACKed sequence number i such that !Lost(i), and add 1 for each unSACKed sequence number i such that Rxt(i). Ken and Lili _______________________________________________ tsvwg mailing list tsvwg@ietf.org https://www1.ietf.org/mailman/listinfo/tsvwg
- [Tsvwg] (no subject) dfvfpod
- [Tsvwg] (no subject) Sally Floyd
- Re: [Tsvwg] I-D ACTION:draft-ietf-tsvwg-ecn-03.txt Bob Briscoe
- [Tsvwg] (no subject) Vijay Kumar Choudhary
- RE: [Tsvwg] (no subject) Ivan.Arias-Rodriguez
- Re: [Tsvwg] clock granularity (was: no subject) Lloyd Wood
- RE: [Tsvwg] (no subject) Yuji Suzuki
- Re: [Tsvwg] (no subject) Yuji Suzuki
- [Tsvwg] (no subject) Vijay Kumar Choudhary
- RE: [Tsvwg] (no subject) Ivan.Arias-Rodriguez
- Re: [Tsvwg] (no subject) Randall Stewart
- [Tsvwg] (no subject) RED DE INTERCAMBIO
- [Tsvwg] (no subject) Lili Wang
- RE: [Tsvwg] (no subject) Henderson, Thomas R
- RE: [Tsvwg] (no subject) Lili Wang
- Re: [Tsvwg] (no subject) Ethan Blanton
- Re: [Tsvwg] (no subject) Lili Wang
- Re: [Tsvwg] (no subject) Ethan Blanton
- Re: [Tsvwg] (no subject) Lili Wang
- [Tsvwg] (no subject) Vijay Kumar Choudhary
- Re: [Tsvwg] (no subject) Qiaobing Xie
- [Tsvwg] (no subject) Lili Wang
- Re: [Tsvwg] TCP: sack i-d Lili Wang
- Re: [Tsvwg] TCP: sack i-d Mark Allman
- [Tsvwg] TCP: SetPipe() in SACK draft Ken Calvert
- [Tsvwg] (no subject) amit somani
- [Tsvwg] (no subject) amit somani
- [Tsvwg] (no subject) amit somani
- [Tsvwg] (no subject) Ling-Chih Kao
- [Tsvwg] (no subject) Prof.
- [Tsvwg] (no subject) Michael Tuexen
- [Tsvwg] (no subject) Sally Floyd
- [Tsvwg] Re: [Sigtran] (no subject) Michael Tuexen
- [tsvwg] (no subject) Madan Mohan Mishra
- Re: [tsvwg] (no subject) Michael Tuexen