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

Sebastian Moeller <moeller0@gmx.de> Tue, 31 October 2023 12:04 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 D1CBFC151542; Tue, 31 Oct 2023 05:04:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.852
X-Spam-Level:
X-Spam-Status: No, score=-1.852 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_BLOCKED=0.001, 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 vwoaLyh9uOjj; Tue, 31 Oct 2023 05:04:55 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 70D6FC151548; Tue, 31 Oct 2023 05:04:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1698753890; x=1699358690; i=moeller0@gmx.de; bh=JoVKtLgCPRe8bPBZ/rXzkxHWXmVWwgCyEqn7/gLF+eI=; h=X-UI-Sender-Class:Subject:From:In-Reply-To:Date:Cc:References: To; b=YYymolgFGDKBMEohKm2GJ8bf5n0O1JdzTG2/GygeW9ZTph8GK4OaQpHHIkInDV5R IyrLkBc6jEJrI2Pcnho99djwu3kNHWtiHSHkb2nG3gGpeF4V2cklteIgIsNSlL/Py dQ/LdHV8qf0oRLA4amc4iqWZ3Nhxc8KDsMlshI4USO9FRTbGWBtan/Q/Iq0gx4Rt2 yO6JkgqWIl8rBeILVHTqeThIVfBOX2qNCilC6pe6moGyB4j4bLm9iYGpTEka/7bcf S3ILuhR/PRJHcN0VXQRMFH3SmKiOpAKjvJWn4ItZAF3Olq6fuPMkRtPdDlSAx1Fb4 0Yvwt24n//KcG3smeA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from smtpclient.apple ([134.76.241.253]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MxDou-1rLnYo1csq-00xdWS; Tue, 31 Oct 2023 13:04:50 +0100
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.4\))
From: Sebastian Moeller <moeller0@gmx.de>
In-Reply-To: <CAOYVs2rFgyRQ1Hdk6g1j9Ku23TS1FRjW2r104H_eUPJioLJLiw@mail.gmail.com>
Date: Tue, 31 Oct 2023 13:04:49 +0100
Cc: Bob Briscoe <ietf=40bobbriscoe.net@dmarc.ietf.org>, iccrg IRTF list <iccrg@irtf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <2E205AB1-8786-4E13-BC20-3B952E666C3D@gmx.de>
References: <169728527879.18854.17962028148144369127@ietfa.amsl.com> <0c9d15e7-6f15-4b7c-b1ce-f50854152aef@bobbriscoe.net> <CAOYVs2rFgyRQ1Hdk6g1j9Ku23TS1FRjW2r104H_eUPJioLJLiw@mail.gmail.com>
To: Marten Seemann <martenseemann@gmail.com>
X-Mailer: Apple Mail (2.3696.120.41.1.4)
X-Provags-ID: V03:K1:erDOQ/ru/qp7M6Uz6UEdbWCdPdnnHzT0ixrYpkMPMQbibc2cVHE Vpwl1iVN2Zr2mvtNmEG4YHl533LnoK42zvA+gOrdOCCVVC4dWIS18ky6QWT4bsrQhxb/wdT UP+sCeYLp7nsZCzg0OZb7dhXbWgSNvmkeSxPKJQcdp9Y3UUYdWFScaEvCV0cwTwjd8TJO2F huIxmohziwRw3/hysHq0w==
UI-OutboundReport: notjunk:1;M01:P0:O7j4oR4pjZI=;I7r1cgTQrlO/gHEJWlyIF9qFOAz FqZ0nxfKt9kYG+by2gB7xkcgFo6nk4d6RymeXHbugWwbyvf6K3cBBXvSTkdlfjTEZxnN8Abe5 Pce2/mzBIE1buKXjr5oPe+h8VOjjEriF/+DNFN31aCNtfFEvgC37SL02b7r18zhgtFbs4iIr5 pNsyLjeMDdFaaC1gNm8/5uqWXzAY7P8CzvNE5tDCyvB7TKI8S9OmRfn/98aMdIBT5ffZGEfLx 4865m6kIcLUFlA5n1DRXQwyE7597/XotZ+r+79uXcuV4IqY4GStHjul715+tJUfYsNSXa+P6z tzLcUOf1INkOJ3Hdb3QFoknERWAB+E3Z3PlpAGBAGqFOHyUuUOsJk9bu23lCZ+h7iloJCN06a giROXv8wu7pBp7uFTExoCEOta6eMsCVnGqLX4aMJ3jTc4lIMAnymjFmqALUb3v23YhiHINXPG WzTtb+nuMAozO+P3LXNrQQwKmF6EDO2OcAdPgUHhbQSnxToGXQE4BtlloE4ovSQ6UPbONkG4L 9bxrroZkG5uIgXShjVxzBTVGiL2Gu6Rf1ABmPXTu+nI0LJ09ONjmSifZSvLRPKsyTG8ALEVdL RnouxesFX22xnSFOpHrtrIFVcFnNdLs1gikie1sM4umKMjwmr8mb5re+VQ0BqV6BHeluoGmKS ybQAZlsScZ+wHdnGzJ+PKyDxsQr/45K8BDA8FMP78t0jS/dJZP9ivgxyGmkDzN472fRzkPNQz UOwg+oHHjzi1yeesSm44ZOWwOdYmDQdrOiKtuSho4Ia6U/2WALUzWsYiyVbUV18SyJIHu5g0q b7G6lbjphNPZcDD6JShby61AcZJ5vx7RtUDiexEviM2BTjxmSAll53IdRsgkNO7gxvvgtDqEX 5DBeVcAFEpVD4GPiqqarWRAvQzu07MceZ1q0guef3pYLIo04rh1mRdJ6CCYWCqvhFrAL+xu7k OIdKoWLD937Kr9zqqVXIQL9bGI4=
Archived-At: <https://mailarchive.ietf.org/arch/msg/iccrg/WKbrWhrLK1y5xCi2wU0Oe39QlKk>
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 12:04:58 -0000

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". 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... 


> 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