Re: [tcpm] I-D Action: draft-ietf-tcpm-accurate-ecn-13.txt - ACK Thining

Bob Briscoe <ietf@bobbriscoe.net> Fri, 06 November 2020 21:51 UTC

Return-Path: <ietf@bobbriscoe.net>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A9E343A0D79 for <tcpm@ietfa.amsl.com>; Fri, 6 Nov 2020 13:51:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.346
X-Spam-Level:
X-Spam-Status: No, score=-2.346 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, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.247, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bobbriscoe.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lipPw-zNqkha for <tcpm@ietfa.amsl.com>; Fri, 6 Nov 2020 13:51:08 -0800 (PST)
Received: from cl3.bcs-hosting.net (cl3.bcs-hosting.net [3.11.37.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8AF753A0D86 for <tcpm@ietf.org>; Fri, 6 Nov 2020 13:51:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Sender:Reply-To: Content-Transfer-Encoding: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=WUnFRtVymYWs3FMd58/D5q9QudesrGs7uRh1moIj3YM=; b=tFxCKc8ppNXD+Xm5QAAY/ZI8W 7d2wkDL7KlVng7UzRYK4GlwzmLAb94oB0/mCV2mixgERZhCrqjUcO0ja5wp69OfT38ByyMDE3dCYG C8aL8uivZ6JvqdqpTy4WEo5XPL+a3W+5YiOLmx0h9Pc7eTI+nts8wZVRmtYZS4WJkeqBrT7UFXmJK 5sN0CfvNgNkV5gOSSoOI2K7F60BovQ0iGYIIkqJJF6Hj/luJMk8zLmmZAPVyASntrXBaeqjCXbCVa cziKQZRZBYXno6NRgOuujtChjHXg9f+9iuoICo/gTcgcFK5ZtIDkYC5jqvtbbcrhgriy0Y6B1sH85 nP/l15qog==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:40024 helo=[192.168.1.6]) by cl3.bcs-hosting.net with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <ietf@bobbriscoe.net>) id 1kb9dR-000miN-HE; Fri, 06 Nov 2020 21:51:06 +0000
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Cc: tcpm IETF list <tcpm@ietf.org>
References: <160388925181.18695.7892567372446756190@ietfa.amsl.com> <4017c549-ac6d-d633-6432-20a6a8a9a342@bobbriscoe.net> <3c8de57b23994824b6c51cf5d7fba7ec@hs-esslingen.de> <5dd8f210-2fe2-bd9b-5e69-4a87016f5416@bobbriscoe.net> <dae037f1-1b39-2a79-1f78-0ddc13e54507@bobbriscoe.net> <CAAK044SkeTcSshPRxZgxniCDzek+9YuyUYpkNsFPe+=ExoAvJA@mail.gmail.com> <FFA9CFA4-48E2-4432-8DFC-BF9EA08FBAB6@ericsson.com> <CAAK044TM=rB7mVv7=O8pdyZR6xNT642PaCgXFyAbDD_fvtZZ3A@mail.gmail.com> <286e7716-be59-a023-7786-21e8175a3eb3@bobbriscoe.net> <ef350894-09da-a89a-6349-b6528b9210e7@erg.abdn.ac.uk>
From: Bob Briscoe <ietf@bobbriscoe.net>
Message-ID: <3c7126bd-ebdc-00b1-8b46-79125eb525a1@bobbriscoe.net>
Date: Fri, 06 Nov 2020 21:51:04 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
MIME-Version: 1.0
In-Reply-To: <ef350894-09da-a89a-6349-b6528b9210e7@erg.abdn.ac.uk>
Content-Type: multipart/alternative; boundary="------------A930686E6CB10DE8CCAEBDEE"
Content-Language: en-GB
X-OutGoing-Spam-Status: No, score=-1.0
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - cl3.bcs-hosting.net
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: cl3.bcs-hosting.net: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: cl3.bcs-hosting.net: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/EEfM23AktJxmTzKMrwE6YHC2w1A>
Subject: Re: [tcpm] I-D Action: draft-ietf-tcpm-accurate-ecn-13.txt - ACK Thining
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Nov 2020 21:51:12 -0000

Gorry,

Thanks as always for checking all this... inline tagged [BB]

On 06/11/2020 14:01, Gorry Fairhurst wrote:
> I see this rev introduced a section on ACK Filtering, which I have 
> specific comments on. We need to consider the cost of sending ACKs - 
> especially anything that results in them being large - however, this 
> needs to be done by choosing a default at the receiver - not as an 
> adaptation, the adaption if necessary needs to be introduce more ACKs 
> when this is beneficial, as in some cases for DAAS, not in trying to 
> figure something from delayed or "missing" ACKs.
>
> 1) So let me say first that I think the suggestion for updating the 
> receiver to thin, and every 2-6 packets seems reasonable.
>
>     “MUST immediately send an ACK once 'n' CE marks have arrived since
>       the previous ACK, where 'n' SHOULD be 2 and MUST be no greater
>       than 6.”
>
> I do agree that endpoints can do much more to reduce the return path 
> capacity that they consume - and that the endpoints have the 
> opportunity to encode the feedback information more efficiently than 
> can be done by a device (or queue) in the network. From our 
> experiments, n=10 would also often be likely OK.

NB: n is the no. of *CE marks*, which is only the ACK thinning ratio in 
the worst case if there's 100% marking.
IOW, with n=6 the receiver could ACK less than 1 in 10 data packets 
whenever marking probability < 60%.

Altho the receiver's ACK ratio will have to fall to 6 to 1 for the 
duration of a 100% marking sequence, whenever some data packets are not 
marked, the receiver aACK ratio can rise. This *could* allow any 
build-up of ACKs queued on the reverse path to relax, which could 
improve the chances of not overflowing into ACK loss.

It's hard to predict when 100% marking in the forward direction will 
coincide with reverse path congestion, and I'm not saying it won't.
Just pointing out that n does not equal the ACK thinning ratio, it's the 
floor of it.

n=6 is a consequence of only having a 3-bit field to count CE marks. We 
could push the envelope and make the max n=7. But not n=8, otherwise 
wrap after 8 marks would be indistinguishable from zero marks.


>
> 2. Althouigh in some cases a receiver can predict a good "n", I do not 
> believe a receiver can typically find out how to choose “n” by 
> observing the ACKs on a connection.
> 2. I do not believe a receiver can find out how top to choose “n” by 
> observing the ACKs received on a connection.

[BB] I think you intended to delete one of these sentences. Whatever, 
both of them seem to contain a typo - otherwise they are circular? 
Surely the receiver is sending the ACKs, so either sentence as it stands 
ends with "...I do not believe a receiver can typically decide how often 
to send an ACK by observing how often it is sending ACKs itself." ???

>
> Sure, if the path is modelled as a simple bit-congestive path that has 
> a queue, then you could monitoring timing/loss of packets and 
> determine a rate that tries not to fill a queue. I would not know how 
> common such a bottleneck link is.
>
> I do know that many bottleneck links are more complex and needs to 
> consider the scheduling transmission of small ACK packets on the 
> return path performance. In many radio technologies, the overhead from 
> transmission of ACKs is proportionally much higher than for data 
> segments -  These layer 2s are constrained in terms of packets (e.g. 
> where lower layer framing and transmission scheduling is an important 
> consideration to the efficiency/cost of using the service). This has 
> often been “fixed” using ACK Thinning or PEPs. Protocols that send 
> fewer ACKs/data packet are not impacted.

[BB] I agree that the receiver alone cannot predict a good 'n'.
AccECN is a not the complete solution, but we've grasped the opportunity 
to take a step in the right direction (within the chartered scope of 
AccECN). AccECN at least allows the data sender to measure the extent of 
congestion marking on the arriving ACK stream (if there's ECN support at 
the bottleneck). Whereas before AccECN, a random ECN mark on one pure 
ACK in a round couldn't be distinguished from 100% of ACKs marked.

>
> Scheduling (at the IP layer,can also often result in variations in 
> timing - something that is hard to predict and I would suggests make 
> automated selection of “n” very hard, and the need to thin is often 
> not directly visible to a user of the path. Traffic multiplexed with 
> protocols that use different ACK policies (perhaps QUIC?) also make 
> this sort of detection less reliable.

[BB] Being hard shouldn't prevent us trying.
The remaining piece would be to advance a TCP ACK congestion control 
protocol on the experimental track (RFC5690 
<https://tools.ietf.org/html/rfc5690> is informational).


>
> 3) A queue might be competing for scheduling opportunities against 
> other IP flows (e.g., WFQ), or competing for transmission 
> opportunities with a shared resource (common in radio links).
>
> ACKs can and do take transmission opportunities away from the resource 
> pools that would be used by other services that share the same 
> resource pool. This can be reduced by some form of per-flow scheduling 
> with deeper per-flow queues - but that in itself can induce unwanted 
> coupling between flows - limiting the peak rate of one flow, to 
> achieve a higher ACK ratio for another flow.
>
> Consider a QUIC flow sharing a return path with a TCP flow, the higher 
> rate of larger QUIC ACKs reduces the transmission opportunities for 
> TCP ACKs, which in turn suppresses the TCP flow, limiting the overall 
> system performance. If the ACKs use the same transmission resource, 
> they could take directly away from transmission opportunities in the 
> forward direction, but even if they do not - the rate of ACKs retuned 
> impacts the sending rate end to end.

[BB] This says two things to me:
* if TCP is going to introduce control over the ACK ratio, QUIC and 
other transports ought to as well {Note 1}.
* and all ACK CC algorithms ought to be designed to ensure some degree 
of equitable capacity sharing {Note 2}, including between the ACK stream 
of flow A and the data stream of flow B transferring in the opposite 
direction.

{Note 1}: I don't think this needs any formal "all or nothing" rule 
where the transport ADs co-ordinate multiple WGs. Enough of the people 
involved are the same for the right thing to happen (I think). But some 
AD oversight wouldn't do any harm.
{Note 2}: There are numerous challenges to face, but I think it's 
paramount to first establish which node is considered responsible for 
solving the problem (the bottleneck or one of the transport endpoints). 
This doesn't imply that the IETF will ever ensure that other nodes don't 
'interfere'. For instance, if the sender is deemed responsible for 
determining the level of ACK filtering, it will still have to make 
allowance for bottlenecks attempting to ACK thin as well.



>
> 4) The new section adds some cross-layer requirements on sub-IP 
> layers, which seem to imply more complexity. I’m not comfortable with 
> such a proposal.
>
> It seems that the text suggests not implement thinning and that these 
> systems implement logic to detect the presence of the option by 
> observing SYNs and then configure the link to do something special. 

This was the proposal that I was most interested to hear your views on. 
We can remove it if the WG doesn't want it, but first I want to make 
sure the proposal is fully understood:
* The aim is for the RFC to tell bottleneck implementers (via this text) 
that *only in cases where AccECN has been negotiated* the preferred way 
to improve flow performance is for the link to signal ECN to the 
transport, not to drop the ACKs itself.
* If the link doesn't support ECN, it still does the ACK filtering itself
* Links aren't going to delegate their control unless transports 
actually act on the ECN signals that links emit - and improve 
performance better than links have been. So, it's important that 
transports take on these responsibilities - the data sender takes 
responsibility for determining the ACK rate, asking its correspondent 
receiver does actually thin its own ACKs.

Here's who signals what, and who does what

                link-.
                      \
                       '-[ECN CE]-.
                                   \
                                    '-> receiver
                                     .-
                                    /
             .-[(Acc)ECN feedback]-'
            /
  sender <-'
         -.
           \
            '---[ACK CC ratio]---.
                                  \
                                   '-> receiver(treats as polite 
request, not mandatory)


> I don’t think think this is the correct approach - the result will be 
> throttling of the connection speed. Is it necessary that the sub-IP 
> layer does not implement thinning for connections that use AccECN 
> feedback?

Why do you say the connection speed would be throttled?
Did the text not explain the proposal well?
Or did you understand the proposal but disagree with it?


>
> When the text says: “SHOULD preserve the timing of each ACK”
> - does that imply that nodes need to discard rather than delay packets 
> when link scheduling or transmission scheduling is used. This seems a 
> very odd requirement, it might be better too simply strip-out the 
> AccECN option or discard all packets that set this.

Sorry, that may be clumsy wording. It just means "the link SHOULD NOT 
filter ACKs" (if it supports ECN marking).

>
> I can’t see how queuing the ACKs, or deleting ACKs rather than queuing 
> them would improve the performance of AccECN TCP connections.

May be the piece where the link's preferred role is to signal to the 
transport to slow down the ACK rate using ECN wasn't clear.


Bob

>
> Gorry
>

-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/