Re: [tcpm] Seeking WG opinions on ACKing ACKs with good cause (was: Possible error in accurate-ecn)

Bob Briscoe <> Fri, 19 March 2021 17:07 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 039CC3A1A80 for <>; Fri, 19 Mar 2021 10:07:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.434
X-Spam-Status: No, score=-1.434 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id cHd74RtBeOAf for <>; Fri, 19 Mar 2021 10:07:44 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 1FB3A3A1A7F for <>; Fri, 19 Mar 2021 10:07:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To:Subject:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ALhRAjnzKXHmAVb56ixP2cP39y9XhSac2wTtA02B9Mw=; b=5wHZwD14p83k60P3tVb2XBmD45 TkzSELr+QmcnHMmcr9QrjctvoElMAkx+k4GGz9M43LRmDYbtZJoaNSyroDz177RRcm2USz1kM5zxl aCn7VjqbvNAq5wqcJgOLEQ8cc//MhMGVI4//OuE4lVzB3EM0mYFzE+yzjW7XoPQ5Ww27yO2PRCKBl h71JhoxgVGqnPOfD2yo+nyEhC+vt5iEoTYe4Pv3/UK091GiNrlM1zEj8eY354c1iaVVrGpksm1YrB 4FAjcY4bBzlS4YI77ZusqNcheQL1Rp3wHiPl6d3bNKto0IMQEFM5loIBIx2oXQJu/J6n3dVsp5+g0 915PI1NQ==;
Received: from ([]:40622 helo=[]) by with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <>) id 1lNIb4-0008Aa-Vn; Fri, 19 Mar 2021 17:07:39 +0000
To: Mirja Kuehlewind <>, Yoshifumi Nishida <>
Cc: Yoshifumi Nishada <>, tcpm IETF list <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
From: Bob Briscoe <>
Message-ID: <>
Date: Fri, 19 Mar 2021 17:07:38 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
X-Get-Message-Sender-Via: authenticated_id:
Archived-At: <>
Subject: Re: [tcpm] Seeking WG opinions on ACKing ACKs with good cause (was: Possible error in accurate-ecn)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 19 Mar 2021 17:07:46 -0000

Yoshi & Mirja,

On 17/03/2021 18:01, Mirja Kuehlewind wrote:
> This is a corner concern case; and you shouldn’t retransmit a second time if more dupACK are received within the next RTT.
>> On 17. Mar 2021, at 06:47, Yoshifumi Nishida <> wrote:
>> Hi Mirja,
>> On Tue, Mar 16, 2021 at 9:50 AM Mirja Kuehlewind <> wrote:
>> Hi all,
>> Actually I think there is no problem if a ACK on an ACK is misinterpreted as dup ACK. What happens if a dupACK is detected? The cwnd is decreased and lost data is retransmitted. However, the cwnd was either already decreased with the first ACK and would not be decreased again for the next RTT (in case of Reno-like cc), or should be decreased anyway because the ACK carries a new CE feedback. I guess we could note that one should not decrease twice because if the information in the same ACK (being dup and CE counter). However, there will be no retransmission because there is no outstanding non-acked data given the received ack'ed only an ACK and no new data. So in summary, there is no problem here with dupACK generated in response to a pure CE-marked ACK that needs to be addressed in any way.
>> I personally am not very fine with dup acks is being misinterpreted
>> This might be another corner case, but here's an example I've thought.
>> When a sender sent one data packet D1 and bunch of acks (say 30), and D1 is lost, all acks have CE marks.
>> In my understanding, this will generate 10 dup acks that request D1 with (B)
>> In this case, sender retransmits D1 after 3rd dupacks and it will still receive 7 dupacks.
>> These 7 dup acks might trigger another transmission of packets on some implementations.
>> This is because RFC5681 states:
>> .  For each additional duplicate ACK received (after the third),
>>         cwnd MUST be incremented by SMSS.  This artificially inflates the
>>         congestion window in order to reflect the additional segment that
>>         has left the network.
>> RFC5681 also states:
>>     since the receiver can only generate a
>>     duplicate ACK when a segment has arrived, that segment has left the
>>     network and is in the receiver's buffer, so we know it is no longer
>>     consuming network resources.
>> But, I think this doesn't fit the logic in the doc very well. We might want to add some texts for this if we choose (B)

[BB] To summarize, the picture is something like slide 6 here except one 
of the early CE-marked ACKs from Y to X is a data packet:
We'll call the left and right hosts X and Y.

Unlike in the previous case that you described, in this case Y receives 
more DupACKs than the number of packets it sent since its last ACK'd 
data packet. I started thinking of ways to check for this, but I quickly 
came to the conclusion that we should not try to add logic to check for 

Before we say this is a corner-case, I'd like to try to generalize it, 
to understand how broad it might be.

* It might involve one or more packets from Y to X being lost (or delayed).
* And there might have been some data packets from Y to X delivered 
after the gap, which would each have triggered a (genuine) DupACK of the 
seqno before the gap.

Also, all these cases generalize to loss detected in time (like RACK) 
not just counting DupACKs. When data from Y to X ends, ACKs from X to Y 
continue for a round trip. If many are CE-marked, rule (B) triggers ACKs 
of the ACKs later in the round. For instance, if RACK tolerates 
reordering for RTT/8 (say) then ACKs of ACKs in the last 7/8 of the 
round could be considered DupACKs, if the conditions of these corner 
cases are in place.

I still think we can categorize all these as corner cases. but we are 
finding quite a few corners.

Nonetheless, I think it is still simpler to use the wording of alt (B) 
as it is, and leave these corner cases as potential cases where DupACKs 
might occasionally be wrongly detected. But just live with that.


>> --
>> Yoshi

Bob Briscoe