Re: [tcpm] RFC 2883 (D-SACK), Section 5.1 Replication by the network

Ethan Blanton <> Wed, 12 November 2008 18:14 UTC

Return-Path: <>
Received: from [] (localhost []) by (Postfix) with ESMTP id 96C3C3A6808; Wed, 12 Nov 2008 10:14:04 -0800 (PST)
Received: from localhost (localhost []) by (Postfix) with ESMTP id 264B43A67F5 for <>; Wed, 12 Nov 2008 10:14:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.305
X-Spam-Status: No, score=-1.305 tagged_above=-999 required=5 tests=[AWL=0.300, BAYES_00=-2.599, FS_REPLICA=0.994]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id lVWywSPNx+6T for <>; Wed, 12 Nov 2008 10:14:02 -0800 (PST)
Received: from ( [IPv6:2001:418:1::62]) by (Postfix) with ESMTP id 46D7C3A6407 for <>; Wed, 12 Nov 2008 10:14:02 -0800 (PST)
Received: from [] ( by with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69 (FreeBSD)) (envelope-from <>) id 1L0KE3-000Nj2-3d for; Wed, 12 Nov 2008 18:14:01 +0000
Received: from colt.internal (colt []) by (Postfix) with ESMTP id 160D32BE23 for <>; Wed, 12 Nov 2008 13:13:56 -0500 (EST)
Received: by colt.internal (Postfix, from userid 3000) id 4582C27F1E; Wed, 12 Nov 2008 13:13:55 -0500 (EST)
Date: Wed, 12 Nov 2008 13:13:56 -0500
From: Ethan Blanton <>
Message-ID: <>
References: <> <> <> <> <>
MIME-Version: 1.0
In-Reply-To: <>
X-GnuPG-Fingerprint: A290 14A8 C682 5C88 AE51 4787 AFD9 00F4 883C 1C14
User-Agent: Mutt/1.5.17+20080114 (2008-01-14)
Subject: Re: [tcpm] RFC 2883 (D-SACK), Section 5.1 Replication by the network
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
Content-Type: multipart/mixed; boundary="===============0359775282=="

Alexander Zimmermann spake unto us the following wisdom:
> For the moment, please forget the example I quoted.
> The problem that I have is maybe only a phrasing problem in RFC 2883.
> Read this (RFC 2883, page 13, last paragraph):
> "If D-SACK was not used and one of the ***duplicate ACKs was
> piggybacked on a data packet***, the sender would not know how many
> duplicate packets had been received."

OK, so this is unlikely to happen -- but note that the following
sentence covers exactly the situation where it does not.

> and now read this (Draft 2581bis, page 3):
> An acknowledgment is considered a "duplicate" in the following  
> algorithms when
> (a) the receiver of the ACK has outstanding data,
> (b) ***the incoming acknowledgment carries no data,***
> ..."
> Do you see my problem?

Yes and no -- I see that 2883 describes, in part of one example, a
situation which is unlikely, and which requires that a duplicate
acknowledgment is defined in a broader sense than 2581bis.  (However,
note that 2581bis says that "Out-of-order data segments SHOULD be
acknowledged immediately, in order to accelerate loss recovery."  It
seems to me that a TCP stack which is choosing not to implement
SACK/DSACK might reasonably interpret this SHOULD in such a way that
suppresses immediate dupacks specifically for
already-received-and-acknowledged data, allowing the normal delayed
ACK timer to handle that case.  I'm not going to make an argument
either way, but I do point out that the requirement you are citing is
only a SHOULD.

I say "yes and no" because I don't see why this is an issue, or why we
should care.  So there's an example in 2883, part of which describes
an unlikely situation; the conclusion drawn from the example is still
valid.  Where is the problem?  Again, I suggest that you provide a
sequence of events which you believe indicates that DSACKs (or some
alternate explicit mechanism, such as Reiner Ludwig's clever Eifel
bits) are not required to disambiguate duplicate segment reception
from general out-of-order packet reception.


The laws that forbid the carrying of arms are laws [that have no remedy
for evils].  They disarm only those who are neither inclined nor
determined to commit crimes.
		-- Cesare Beccaria, "On Crimes and Punishments", 1764
tcpm mailing list