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

Kacheong Poon <poon@cs.wisc.edu> Tue, 16 July 2002 04:28 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 AAA28457 for <tsvwg-archive@odin.ietf.org>; Tue, 16 Jul 2002 00:28:00 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id AAA20842 for tsvwg-archive@odin.ietf.org; Tue, 16 Jul 2002 00:28:57 -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 AAA19437; Tue, 16 Jul 2002 00:02:34 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id AAA19408 for <tsvwg@optimus.ietf.org>; Tue, 16 Jul 2002 00:02:31 -0400 (EDT)
Received: from parmesan.cs.wisc.edu (parmesan.cs.wisc.edu [128.105.167.16]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id AAA27897 for <tsvwg@ietf.org>; Tue, 16 Jul 2002 00:01:34 -0400 (EDT)
Received: (from poon@localhost) by parmesan.cs.wisc.edu (8.9.2/8.9.2) id XAA14629; Mon, 15 Jul 2002 23:02:21 -0500 (CDT)
Date: Mon, 15 Jul 2002 23:02:21 -0500
From: Kacheong Poon <poon@cs.wisc.edu>
Message-Id: <200207160402.XAA14629@parmesan.cs.wisc.edu>
To: eblanton@cs.ohiou.edu, poon@cs.wisc.edu, thomas.r.henderson@boeing.com
Subject: RE: [Tsvwg] problem with draft-allman-tcp-sack-11.txt
Cc: homa@crl.go.jp, kfall@intel-research.net, mallman@guns.grc.nasa.gov, tsvwg@ietf.org
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

Included message from "Henderson, Thomas R" <thomas.r.henderson@boeing.com>:

>----
>Now consider the case in which the receiver is sending SACK blocks.  After a
>timeout, the sender SHOULD expunge SACK information.  The sender MAY then
>use subsequently received SACK information to avoid unnecessary
>retransmissions.  However, will the receiver provide enough information?  It
>depends on how many SACK blocks exist between HighRxt and HighData.  If
>there are three or less, then enough SACK information should be replenished,
>and any subsequent dupacks are more likely to indicate the loss of a
>retransmitted segment.  If there are more than three, however, since the
>receiver is instructed by RFC 2018 to repeat the most recent SACK blocks and
>not the oldest SACK blocks, we could again be in a situation where false
>fast retransmissions occur (Ethan has pointed out to me this problem in a
>separate email).

Actually, it really depends on the algorithm in handling the use of
SACK info after a timeout.  For example, the sender can keep a copy
of the SACK info before the timeout.  After the timeout and slow start
retransmission is taking place, it can compare the old copy with the
newly received SACK info (so an implementation needs to maintain 2 sets
of SACK info after a timeout and before all lost segments have been
recovered) .  It can infer a lot of things, including retransmitted 
segments being dropped again, from that regardless of how many holes 
there are in the receiver.  And it can be made clever enough to handle
the case when out of order received segments are discarded in the
receiver such that old SACK info does not provide a correct picture.

>If we maintain RecoveryPoint after a timeout, we then essentially take the
>position that retransmission losses must be recovered via timeout, even if
>there might be indications from SACK information that an additional loss
>occurred.  This seems to be what is preferred based on the comments I've
>received.  It probably is simpler to implement.  But in either case, it

Yes, I agree that TCP should be conservative and not do "clever
recovery" after a timeout, not because it is simpler to implement.
The network must be pretty congested (assuming that this is the 
reason why segments are dropped) if retransmitted segments are again
lost after the timeout.

>should be stated more clearly in Section 5.1.  Here is a text proposal for
>the end of 5.1 (continuation of existing last paragraph):
>
>"The pipe variable SHOULD NOT be used to limit transmissions after a
>retransmission timeout, even though Update() and NextSeg() can be used to
>intelligently select segments for transmission.  Furthermore, RecoveryPoint
>SHOULD NOT be changed upon a retransmission timeout, and additional fast
>recovery phases SHOULD NOT be initiated until a cumulative ACK is received
>for RecoveryPoint."

If this really makes things clearer, then add it.

>----


							K. Poon.


_______________________________________________
tsvwg mailing list
tsvwg@ietf.org
https://www1.ietf.org/mailman/listinfo/tsvwg