Re: [tcpm] Why draft-gomez-tcpm-ack-rate-request?

Bob Briscoe <> Fri, 29 July 2022 15:59 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id ACB47C14F75F for <>; Fri, 29 Jul 2022 08:59:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Status: No, score=-2.107 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, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id nmbJqGMBavml for <>; Fri, 29 Jul 2022 08:59:17 -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 638E8C15791D for <>; Fri, 29 Jul 2022 08:59:16 -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:References:Cc:To:Subject:From:MIME-Version:Date:Message-ID: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=ITJGk2YNcAXVpfx9RCyKOqWbircLIANduFw4MLCRVas=; b=LABKdwo/7t2yk0XPipBInaN2/z Wz3e2yt3SxLMtoTb+BOfREtA4VFA01+sjtAZbVO6ut8QcVQCHRErfCfOYUwJ5Gb4h5rOWTm6GnY0d u67Ihpm0OpbVn6R41Q5xYRZXihFEbGIS2VAfjIgCa81d6YdFQz4YOLf/mqT1G3naVPhbnuBsT7MBK IIFncIsJ3kj+d2UlEC5TS74+DWdHkWOyK69VpTVmHSp+BcZN6w1w5iIBh0O7p4rXt55NZGraEtwvh P/Gh7ODfBGUzkVREaaXd2bBQX701nXtdmpDz5PdTsFkW3J1vVuwe5AiIxGFxL65ARzGCgeyxD7h2U pm44Y0Qg==;
Received: from ([]:38692) by with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.95) (envelope-from <>) id 1oHSOU-0007P2-0O; Fri, 29 Jul 2022 16:59:14 +0100
Message-ID: <>
Date: Fri, 29 Jul 2022 11:59:11 -0400
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0
From: Bob Briscoe <>
To: Jonathan Morton <>, Carles Gomez Montenegro <>
Cc: Gorry Fairhurst <>, tcpm IETF list <>
References: <> <> <> <> <> <>
Content-Language: en-GB
In-Reply-To: <>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
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] Why draft-gomez-tcpm-ack-rate-request?
X-Mailman-Version: 2.1.39
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, 29 Jul 2022 15:59:22 -0000

Jonathan, Carles, [This email was prepared in Mar'22, but apparently I 
never clicked send - mea culpa, mea maxima culpa]

On 25/03/2022 15:42, Jonathan Morton wrote:
>>>> I would also note that ARR offers an alternative signalling method (to AccECN) for effectuating Generalised ECN, as applied to pure acks in particular.  I think ARR is conceptually and mechanically simpler for implementers than AccECN is.
>> [BB] If I read between the lines, I believe you are categorizing the combination of AccECN and generalized-ecn (ECN++) as just one very narrow application of them: ACK congestion control. Although the combination of AccECN and ECN++ makes ACK-CC possible, that wasn't one of the original motivations for either.*
> You're reading something that I didn't write.  I don't need to comment on the goals or applicability of AccECN here, only those of ECN++ and TARR.

[BB] Put simply, yes, negotiating TARR during the handshake could allow 
ECT to be used on pure ACKs, then the combination of ECT and TARR could 
be used for ACK congestion control, as well as the other uses of TARR 
(immediate ACK'ing, reducing unnecessary ACK processing).

This is the same as ACK-CC [RFC5690], which allows ECT to be used on 
ACKs as part of ACK congestion control. In fact, TARR as a protocol is 
rapidly becoming nearly identical to RFC5690. Even though it was 
originally motivated by other use-cases. Indeed, I suspect we are close 
to reaching the point where we suggest that RFC5690 would suffice for 
the use-cases that ack-pull and TARR were for (except it contains some 
constraints on the ACK ratio that might need to be updated).

I'm sorry to Carles if he's been given the run-around. I and others 
suggested he generalized his original ACK pull request to an ACK rate 
request, and none of us noticed that there was already RFC5690 at the 
end of that path.

[BTW, the problem with your original posting was that you were trying to 
side-swipe at AccECN and ECN++ to the extent that you omitted to say 
what you *were* talking about: ACK congestion control. So we all had to 
"read something you didn't write," to work this out. The result was just 
confused readers, and a failed side-swipe.
You didn't need to mention AccECN or ECN++ at all. Because "effectuating 
Generalised ECN, as applied to pure acks in particular" was just a 
circuitous way of saying "enabling ECN on pure ACKs." And when you were 
looking for "an alternative signalling method (to AccECN) for 
effectuating...", you just meant a way to negotiate an ACK-CC scheme.  ]

>> Whatever, if we run with this narrow focus, TARR wouldn't be enough to deploy ACK CC. It solely gives the control signal, not the measurement in the other direction that would be needed to drive that control.
> Ack CC would be triggered by the detection of ack-losses or ECN signals on the acks.  These acks travel in the opposite direction to data segments, ie. from the "receiver" to the "sender".  TARR allows the sender, which is in a position to observe these losses or ECN markings *and* knows what the data-oriented CC algorithm needs, to inform the receiver what density of acks it is desirable for the receiver to send.

[BB] You say you need "The detection of ack-losses or ECN signals". This 
is precisely the "measurement in the other direction" that I say you 
haven't got with TARR alone. Taking each in turn...

1) ACK-losses. The data sender could only detect ACK losses if:

     a)  it can be sure that the data receiver never stretches ACKs 
wider than the requested ACK ratio. In the -03 draft (at my suggestion 
actually) the data receiver only "SHOULD" abide by the ack rate request, 
so if it stretched the ACKs because it had insufficient resources (e.g. 
under attack) the data sender would confuse this to be ACK loss and tell 
it to slow the ACK rate. Although the protocol fails for a while during 
this process, at least it self-heals.

     b) it can be sure that middleboxes (WiFi, CAKE, DOCSIS, satellite 
links, etc) are not thinning ACKs. Unfortunately, if there's ACK 
thinning, the data sender falsely detects ACK-loss, and tells the data 
receiver to slow the ACK rate. That might cause some ACK filters to thin 
fewer ACKs, and eventually self-heal. But that's often not going to be 
true - the degree to which many ACK filters remove ACKs changes all the 
time. For instance many WiFI boxes coalesce ACKs until they get a 
transmit opportunity. At the other extreme, ACK decimation might remove 
a fairly fixed proportion of the ACKs. This would not self-heal.

         I don't think many/all of these ACK filtering behaviours were 
around when the ACK-loss-detection techniques were written in RFC5690.

2) ECN
A data sender cannot detect ECN signals on ACKs unless they are set to 
ECT. It would be possible for a future draft of the TARR spec to allow 
ECT on ACKs once TARR has been negotiated in the handshake. That was why 
I said that TARR would need "the measurement in the other direction". 
TARR *today* doesn't do this.

> In other words, TARR could be tried *today* - even without ECN++, and certainly without AccECN.

[BB] Yes. AFAIK, no-one has ever mentioned ECN++ or AccECN in relation 
to TARR.

> As a signalling mechanism, TARR is, in fact, sufficient on its own to implement Ack CC.

[BB] Yes. No-one was saying otherwise (except, as I said, the TARR draft 
would need to add the measurement channel, by allowing ECT on ACKs once 
TARR is negotiated).
Or, given you are only interested in ACK-CC, just use RFC5690, which 
already does and says all this.

> As you note, ECN++ intends to allow the use of ECT on TCP ack and control packets, not just data segments, as well as on retransmitted data segments which are presently sent Not-ECT.  ECT implies, to the network, that the endpoints will use explicit congestion signals (ie. CE marks) to reduce traffic volume on the flow and in the direction that the marks were applied in the network.  Presently, TCP only does that for data segments (as per RFC-3168).

[BB] Yes.

> TARR adds a mechanism for an appropriate congestion response for CE marks applied to TCP acks.  This is completely in keeping with ECN++ goals.  Hence, the successful negotiation of TARR could be taken as sufficient to permit setting ECT on pure acks, if not the other cases as well.  This assumes, of course, that an appropriate Ack CC response is either written into TARR, or is explicitly implied by its presence.

[BB] Yes. And it assumes that the TARR draft will add that endpoints 
supporting TARR can set ECT on pure ACKs. Or just use RFC5690.


>   - Jonathan Morton

Bob Briscoe