Re: [iccrg] Updates to draft-briscoe-iccrg-prague-congestion-control-03

Sebastian Moeller <moeller0@gmx.de> Tue, 31 October 2023 17:35 UTC

Return-Path: <moeller0@gmx.de>
X-Original-To: iccrg@ietfa.amsl.com
Delivered-To: iccrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 072AAC15153C; Tue, 31 Oct 2023 10:35:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.853
X-Spam-Level:
X-Spam-Status: No, score=-6.853 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=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: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmx.de
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7No7Bn87H-bS; Tue, 31 Oct 2023 10:35:13 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 99633C151701; Tue, 31 Oct 2023 10:35:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1698773708; x=1699378508; i=moeller0@gmx.de; bh=PXNJxD3Q47Lerfc9FcjiBY3pdRRm1wcE+/w5cBH1XoE=; h=X-UI-Sender-Class:Date:From:To:CC:Subject:In-Reply-To: References; b=hN9OYUiCoWzyzf7L/3MNqGlxcIk4P8vlmFeIFgnIf9szfdf5tSDzTGNji9MxeZBx bpO8pZICnGTlyd7CmqgBzolIuSAWTiOYvyqh8dK3CTwi7YsQIuMTUpGhlf6jP3kB2 UT/tuLatZetlnz78V2zoJtWD1ndOHTFv88PrWJHSzVhNyR3ggnYHHh8j5LWuKu8NY 5WGk0fvJDgtKu/hdi4nPtNtv49shrUY4rvvIaPqr+HftQfb2cv2hFOFCB52paoQcb q+APuJ2r+dHBTHeTnse8aHtR/XoKzoz21DoRjE14c+4l0LNvvdM/HlnxcKTRi9zdw nuz1ctCeh47jeApvjw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [127.0.0.1] ([80.187.113.146]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Msq6C-1rHsMm22qu-00tGXV; Tue, 31 Oct 2023 18:35:08 +0100
Date: Tue, 31 Oct 2023 18:35:03 +0100
From: Sebastian Moeller <moeller0@gmx.de>
To: iccrg@irtf.org, Bob Briscoe <ietf=40bobbriscoe.net@dmarc.ietf.org>
CC: iccrg IRTF list <iccrg@irtf.org>, Marten Seemann <martenseemann@gmail.com>
User-Agent: K-9 Mail for Android
In-Reply-To: <c802a1d0-f4dd-4d82-9ceb-8725aff3d6e4@bobbriscoe.net>
References: <169728527879.18854.17962028148144369127@ietfa.amsl.com> <0c9d15e7-6f15-4b7c-b1ce-f50854152aef@bobbriscoe.net> <CAOYVs2rFgyRQ1Hdk6g1j9Ku23TS1FRjW2r104H_eUPJioLJLiw@mail.gmail.com> <2E205AB1-8786-4E13-BC20-3B952E666C3D@gmx.de> <c802a1d0-f4dd-4d82-9ceb-8725aff3d6e4@bobbriscoe.net>
Message-ID: <EB3644CF-ACBA-41DD-9BFB-1BB4B1515D2A@gmx.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:gqGl7CYCQIztfIi/54eGLm8Y7Vfw92odPO9bzOOdkKdnx63F1Bx 43gfFlwm+Q+cInxVqWzC3sjQBtywzoXe939hdmS76vx5ZFpnnTPZ8O/niUCFAwy2QDN9pbM oaDVgQ3L1nvVh0sEkIydFlA2UZP13YxVhox8IqbM2Sdd5Yzv82CGj6m9nvWjbrKTrY4cKot KKXSoUbPUZZZo6WK5xWxw==
UI-OutboundReport: notjunk:1;M01:P0:pxAsxS1Sg/Q=;xFmlelsYl62uxm4Z3PYxtQpVDm3 Z8iOcE8t7sYrjodaKuLyXjq1RASSBh4fbMtfgCnhPO/b27b+EinqOEhmrYeer361bsTInAjFG xBRlZgxYlFOitNPnKeRNLNZmFnDVT5K3bDHHoYuCSijqQjmrKi1k6459Mz2wkyy0LYoXPIVUm P+JnYLn+2rGgZZJJdUJggSEar4SGkVW2TVD3ZnY9lVnqWOrtSAJX/DMRCPHGbJLQ+NWTr4CqE dsq8xGMq4Wm778AIH57VbJqEXiPrKZgRc9tBRtDRCCvaQMdQjdibfm3enN0/9Ru5Epoqm2ojM ykl2mi4jAFq6qhcGVqgjeSIi9b6lGhxOSeuuEo9dPipSKGS+rjUdaiMinRGpJdN317y505Lv8 gxnHSSRl8ZvL49oo/P3+nI0m1+1eHMobItGBnn6F1TjaCwp+5NnHWMTcga301Zz7HNCxmcS9Y O1rCxnr1Bp/7ziifdBP2Tl5T7I4XPjb/oQDtU/i+6l1bbyOlF0Hgji69RCJlRRDtyPXXFRTrQ VE2Bz9uz+DcBBPtNUc8WH6O+UQTR1Qk0/YCFpL8tNCYUmgYRphGwnkAqT2KhxKOTFoIXqWt/X pa8GT95OrdYLj21D/u9UD/IoMt6aObW50xJ1RdXOihTpwYT9PY8ewT8NZ3ZSKpp/0uw4oAVd2 /6YRsEX/i1OI+LzAd/i6Yl0xY3bjGKCVwv+wVGy3DCF54V4QXBFzdSBFSFUso/r6XRq3C2t5N b2pZGSsEEw69pT6bylfBpRlu/66taCqQztha+5sVQXRfvEjF9hpCSi+S0hBSYPoNRF29zeKCQ Dm9KwGr7tIlCsJ5Hy9mGooB5fYO/zMJD8VzARekcJ+wR0+m4wPLMI4yyZFPxjcKjuX9M89KHw ZU6/ah/wbobcqZcjEZ9jir5ynNcdVg7L6/+cOgEhYF0vest1uz1MkCyclZ/q6aW3gAU14HkdM sXL1HlnoIG3Z0sTBkr036tKoWVg=
Archived-At: <https://mailarchive.ietf.org/arch/msg/iccrg/ecTNkZH8OH9NdIBM0fjks-C3Y_s>
Subject: Re: [iccrg] Updates to draft-briscoe-iccrg-prague-congestion-control-03
X-BeenThere: iccrg@irtf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Discussions of Internet Congestion Control Research Group \(ICCRG\)" <iccrg.irtf.org>
List-Unsubscribe: <https://mailman.irtf.org/mailman/options/iccrg>, <mailto:iccrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/iccrg/>
List-Post: <mailto:iccrg@irtf.org>
List-Help: <mailto:iccrg-request@irtf.org?subject=help>
List-Subscribe: <https://mailman.irtf.org/mailman/listinfo/iccrg>, <mailto:iccrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Tue, 31 Oct 2023 17:35:17 -0000

Hi Bob

On 31 October 2023 17:57:11 CET, Bob Briscoe <ietf=40bobbriscoe.net@dmarc.ietf.org> wrote:
>Sebastian,
>
>On 31/10/2023 12:04, Sebastian Moeller wrote:
>> Hi Marten,
>> 
>> just a quick note, so far there is no implementation that I know of that actually implements Bob's idea of marked bytes ratio... So nobody has bothered thinking about whether it is feasible in reality or not. My take on this is, it is actually misguided introducing additional complexity without noticeable better performance over a much simpler "fraction of packets approach".
>
>[BB] Marten's point was about additive increase (specifically, which non-CE packets a delayed ACK covers for Prague's equivalent of TCP's appropriate byte counting).

[SM] Partially, it was also about how to convert an imprecise accumulative marked packet count into marked bytes. To which my response was 'you do not'... as the complexity is not worth it.... feel free to disagree.

>
>> But then i also believe that L4S in total is too little too late... we already know from the data center that rate coding queue filling status is too slow to begin with and that a non-ambiguous per-packet queue filling signal is strictly superior...
>
>"We already know" implies you have some form of proof?

[SM] Astute readers of the literature will notice a number of papers showing alternative methods of congestion signalling that use richer information than single bit rate codes and that generally outperform DCTCP. I have read a number of those and to me the matter is settled even though none of these papers offered a mathematical proof. Again, feel free to disagree.

>
>The unary ECN signal is all we have in the public Internet for the foreseeable future.

[SM] This why I consider it a problem that we wasted that codepoint on L4S instead of e.g. SCE with its three cobgestion levels...

 As Matt Mathis pointed out many years ago (when multi-bit congestion signalling was first being proposed for DCs), there are W unary bits of information per round in all the ECN fields of a round of W packets, which scales with the window.

[SM] Two problems with this:
A) decoding a rate code obviously takes time which interferes with a timely response
B) the information is likely spread over multiple flows making it even harder to get a timely approximation of the true congestion state.

Assuming the best congestion response is based on as good an estimate of the true congestion magnitude it seems pretty clear that maintaining 1 ECN bit is the end all of congestion signaling is not all that forward thinking.
As before feel free to disagree.

Regards
         Sebastian


>
>
>Bob
>
>
>> 
>>> On Oct 31, 2023, at 11:50, Marten Seemann <martenseemann@gmail.com> wrote:
>>> 
>>> I read the draft and I'm trying to figure out how I'd implement Prague in my QUIC stack. There are a couple of things I've noticed:
>>> 	• Section 2.3.2: It’s unclear to me when exactly alpha is updated. I assume that once I receive the first ACK, I save the timestamp. When I receive a new ACK, there are two code paths: if it’s received within one rtt_virt, just accumulate the counters used to calculate frac. If it’s received after rtt_virt, update alpha according to the equation given in this section, reset the counters for frac and save the timestamp as the beginning of the next rtt_virt epoch. However, this would mean that the alpha value used for multiplicative decrease (section 2.4.2) would always be slightly outdated, which seems suboptimal for an immediate response to a growing queue. Is there a better way?
>>> 	• Section 2.3.3: QUIC uses both packet- and time-threshold loss detection (see sections 6.1.1 and 6.1.2 of RFC 9002). I’m not sure what exactly the recommendation of this draft is. It would certainly be possible to turn off packet-threshold loss detection, and rely on time-threshold altogether. Is that what QUIC implementations should do?
>>> 	• Section 2.4.2: Is the suppression of further decreases after one ECN-triggered decrease for one srtt, or is it one rtt_virt? Reading section 2.4.4 it sounds like it’s rtt_virt, but this could probably be clarified in this section.
>>> 	• Section 2.4.3: The QUIC ACK frame acknowledges (multiple) ranges of packets at the same time, together with cumulative ECN counts. It’s therefore not possible to tell which packet was ECN-marked. This means that a QUIC stack will be able to determine acked_sacked, but not ece_delta. Is it valid to approximate it by assuming that all packets had the same average size? Either way, this is pretty awkward to fit into the pseudo-code given in appendix B.5 of RFC 9002.
>> 	[SM] But back to your problem, simply ignore the size in bytes and operate on traction of packets (after all that is what the actually tested version of TCP Prague did as well). In reality most capacity seeking flows will employ as large packets as possible anyway so the byte fraction is going to be identical to the per packet fraction.
>> 
>> 
>>> 	• Section 2.4.3: Similarly, what's the correct order to process an ACK that reports an ECN marking: For example, an ACK might acknowledge 20 new packets, and report one ECN marking. I think the correct order would be applying the additive increase for 19 packets first, and then applying the multiplicative decrease afterwards. This is because receiving a CE-marked packet would elicit an immediate ACK frame from a QUIC receiver (RFC 9000, section 13.2.1). The draft should probably be explicit about this.
>>> 	• Section 2.4.4: I'm struggling to follow how exactly cwnd is supposed to change for small RTTs. Most important from an implementation perspective: section 2.4.3 says that ai_per_rtt will have a different value for small RTTs. It would be helpful if section 2.4.4 would contain an equation for ai_per_rtt.
>>> 
>>> 
>>> On Sat, 14 Oct 2023 at 19:45, Bob Briscoe <ietf=40bobbriscoe.net@dmarc.ietf.org> wrote:
>>> iccrg,
>>> 
>>> We've just posted an update to prague-congestion-control.
>>> Links to diffs are quoted below.
>>> The main technical changes:
>>> 	• the Apple implementation falls back to CUBIC behaviour on loss (both the reduction and the subsequent increase). Currently the Linux implementation still falls back to Reno on loss, but that is being changed.
>>> 	• how the Apple implementation over QUIC behaves when the path or the remote peer fails to support ECN properly
>>> 	• the items already discussed on this list in response to Neal's review, some of which were editorial, but others were technical, e.g.
>>> 		• pseudocode for removing integer rounding bias
>>> 		• clarifying the RTT-independence approach
>>> Cheers
>>> 
>>> 
>>> Bob & co-authors
>>> 
>>> 
>>> 
>>> -------- Forwarded Message --------
>>> Subject:	New Version Notification for draft-briscoe-iccrg-prague-congestion-control-03.txt
>>> Date:	Sat, 14 Oct 2023 05:07:58 -0700
>>> From:	internet-drafts@ietf.org
>>> To:	Bob Briscoe <ietf@bobbriscoe.net>, Koen De Schepper <koen.de_schepper@nokia.com>, Olivier Tilmans <olivier.tilmans@nokia-bell-labs.com>, Vidhi Goel <vidhi_goel@apple.com>
>>> 
>>> 
>>> A new version of Internet-Draft
>>> draft-briscoe-iccrg-prague-congestion-control-03.txt has been successfully
>>> submitted by Bob Briscoe and posted to the
>>> IETF repository.
>>> 
>>> Name: draft-briscoe-iccrg-prague-congestion-control
>>> Revision: 03
>>> Title: Prague Congestion Control
>>> Date: 2023-10-14
>>> Group: Individual Submission
>>> Pages: 34
>>> URL: https://www.ietf.org/archive/id/draft-briscoe-iccrg-prague-congestion-control-03.txt
>>> Status: https://datatracker.ietf.org/doc/draft-briscoe-iccrg-prague-congestion-control/
>>> HTML: https://www.ietf.org/archive/id/draft-briscoe-iccrg-prague-congestion-control-03.html
>>> HTMLized: https://datatracker.ietf.org/doc/html/draft-briscoe-iccrg-prague-congestion-control
>>> Diff: https://author-tools.ietf.org/iddiff?url2=draft-briscoe-iccrg-prague-congestion-control-03
>>> 
>>> Abstract:
>>> 
>>> This specification defines the Prague congestion control scheme,
>>> which is derived from DCTCP and adapted for Internet traffic by
>>> implementing the Prague L4S requirements. Over paths with L4S
>>> support at the bottleneck, it adapts the DCTCP mechanisms to achieve
>>> consistently low latency and full throughput. It is defined
>>> independently of any particular transport protocol or operating
>>> system, but notes are added that highlight issues specific to certain
>>> transports and OSs. It is mainly based on experience with the
>>> reference Linux implementation of TCP Prague and the Apple
>>> implementation over QUIC, but it includes experience from other
>>> implementations where available.
>>> 
>>> The implementation does not satisfy all the Prague requirements (yet)
>>> and the IETF might decide that certain requirements need to be
>>> relaxed as an outcome of the process of trying to satisfy them all.
>>> Future plans that have typically only been implemented as proof-of-
>>> concept code are outlined in a separate section.
>>> 
>>> 
>>> 
>>> The IETF Secretariat
>>> 
>>> 
>>> _______________________________________________
>>> iccrg mailing list
>>> iccrg@irtf.org
>>> https://www.irtf.org/mailman/listinfo/iccrg
>>> _______________________________________________
>>> iccrg mailing list
>>> iccrg@irtf.org
>>> https://mailman.irtf.org/mailman/listinfo/iccrg
>

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.