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

Bob Briscoe <ietf@bobbriscoe.net> Tue, 31 October 2023 16:57 UTC

Return-Path: <ietf@bobbriscoe.net>
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 76E85C137369 for <iccrg@ietfa.amsl.com>; Tue, 31 Oct 2023 09:57:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.106
X-Spam-Level:
X-Spam-Status: No, score=-2.106 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, 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=bobbriscoe.net
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 k9sS3tpqQIz6 for <iccrg@ietfa.amsl.com>; Tue, 31 Oct 2023 09:57:18 -0700 (PDT)
Received: from mail-ssdrsserver2.hostinginterface.eu (mail-ssdrsserver2.hostinginterface.eu [185.185.85.90]) (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 799BDC151551 for <iccrg@irtf.org>; Tue, 31 Oct 2023 09:57:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject: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=M6aeXfdYccnebUoA89s3mh153OvDOJTJmkXljZ3Z+Zo=; b=tmzodAhmUWLtK2Ynk2K4NcKj/M Eg4Q4LsKvoW27VPvnZLIjY1jZQOLlD1EjKJu0y2T0SHIwTSs/Y4YHRZlV6zKMwhMBja/c8bjNUlin sn72W6lhPOPeJ4MfrQOjyJxp1z1Cj+7g3AzOn5CtTE4JEmbGa6Akm0dfEst/Ugx235AC57RNjTnfV EkMgV90g7/38WxdfPiX1Q0pyFVGNxeuSaQC06ck46kLrTrRDmqjf6Uqd9oWgS24EFPuk8dtz+oo2h QJcTATfojyPZIU1mreneSUab6+gSg381LzeN7I928XX3BQ0BaIO9Zz4oyUeDy+ly/7Ul30KF47qlb GUitGiaw==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:58492 helo=[192.168.1.3]) by ssdrsserver2.hostinginterface.eu with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96.2) (envelope-from <ietf@bobbriscoe.net>) id 1qxs3L-0007Pq-39; Tue, 31 Oct 2023 16:57:16 +0000
Message-ID: <c802a1d0-f4dd-4d82-9ceb-8725aff3d6e4@bobbriscoe.net>
Date: Tue, 31 Oct 2023 16:57:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-GB
To: Sebastian Moeller <moeller0@gmx.de>
Cc: iccrg IRTF list <iccrg@irtf.org>, Marten Seemann <martenseemann@gmail.com>
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>
From: Bob Briscoe <ietf@bobbriscoe.net>
In-Reply-To: <2E205AB1-8786-4E13-BC20-3B952E666C3D@gmx.de>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-MagicSpam-TUUID: 16be9284-a4da-4283-a0eb-fa00f76f9115
X-MagicSpam-SUUID: 73ea6ff4-b0f4-4a15-84cb-99b4abed5980
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - ssdrsserver2.hostinginterface.eu
X-AntiAbuse: Original Domain - irtf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: ssdrsserver2.hostinginterface.eu: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: ssdrsserver2.hostinginterface.eu: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/iccrg/DUsi3pzYHd8d_7ixVY4Gokiu2dg>
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 16:57:23 -0000

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

> 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?

The unary ECN signal is all we have in the public Internet for the 
foreseeable future. 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.


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

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