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

Marten Seemann <martenseemann@gmail.com> Tue, 31 October 2023 10:50 UTC

Return-Path: <martenseemann@gmail.com>
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 A6902C15C29E for <iccrg@ietfa.amsl.com>; Tue, 31 Oct 2023 03:50:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.105
X-Spam-Level:
X-Spam-Status: No, score=-7.105 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_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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=gmail.com
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 L65W45yzgSIS for <iccrg@ietfa.amsl.com>; Tue, 31 Oct 2023 03:50:24 -0700 (PDT)
Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 57B10C15C2A0 for <iccrg@irtf.org>; Tue, 31 Oct 2023 03:50:24 -0700 (PDT)
Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-53e2308198eso9014184a12.1 for <iccrg@irtf.org>; Tue, 31 Oct 2023 03:50:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698749422; x=1699354222; darn=irtf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=DA3H3QioGx7isAoaMlZXuinMRwPcvP9CDhQz7Ez+4pU=; b=nWeIHK88Ael3z2/v9MUwUdEXoihjUKpvdSnlLbOeFiJ35noL20rtQWlRe+sk5iUv39 Rp+RPpc8TAU/m358OQwYKEK20kuh10Hv2kV87evLWZ0zuJu65PxyKMZXkBn3o8T7YcFt HbEYkF3B/WzYFBKfgbSIyvQKnZxqQSR8U8ZLgAlWuGj5MqzTgSIM1+G95LVZ5s1uw27C jpTIy3M7kzHHlQ3NI4JFE04uPxF4pIrgB2EuLM8fCjw8EK40+8ld/zEULYPzigvfxBn2 f22crqbgrdnctlfx+OJqeVEPgozPOpG1aL9YTaASskffrddmrzUPTbqniW4mGNUoi8Nv gkSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698749422; x=1699354222; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=DA3H3QioGx7isAoaMlZXuinMRwPcvP9CDhQz7Ez+4pU=; b=u0m8q0/tV2aGYrIpqe8BEVvpynBWl+ZP5PoNZj25YoQHjjS3zr8MQaK4OqOup3xb9Y F6d6su6B5HjnoLKKOgn1/LhGq9ddsEsmLbYu92t+Mc2sqTcPWS2JXVQBiekEkN/RIdLA 7ZBe9yxPB4L+x8VTxxg3rGF0Fkmf+zHjBVDNZRUpmHhpkss8dJCZf20lkiU6VACN2B6C Y5J+nEZp/0LM6wHzii31/tal0tv2rFZ/fHRtAeG4nVZa5dGibB5iY8piYUWdVdk1Z4OO Tgog9q6XRjmLENvtunSXTTQ2/VCqJuzmPK1tMt0uady4KanTwCSCL4kdnN9XT3tsfndh BHjw==
X-Gm-Message-State: AOJu0Yy4/gW94esNY/OXIAiA7qKPMd7QcrqTiitx/Ud5J2AxVGMoJ1u+ +TODPiV87p7pe3met36T1GUL3OgDipI2xDYd2jjXDixpXFY=
X-Google-Smtp-Source: AGHT+IHttn6kI8LujuqylORQxD5GOJxKyssVrFg10aGOHxlEDXHhB0UxeOqe8xKs4oYmWl2wmFtQ8slYR60tnOr6Tg8=
X-Received: by 2002:a50:ab12:0:b0:543:5db5:2fb7 with SMTP id s18-20020a50ab12000000b005435db52fb7mr1758318edc.6.1698749421469; Tue, 31 Oct 2023 03:50:21 -0700 (PDT)
MIME-Version: 1.0
References: <169728527879.18854.17962028148144369127@ietfa.amsl.com> <0c9d15e7-6f15-4b7c-b1ce-f50854152aef@bobbriscoe.net>
In-Reply-To: <0c9d15e7-6f15-4b7c-b1ce-f50854152aef@bobbriscoe.net>
From: Marten Seemann <martenseemann@gmail.com>
Date: Tue, 31 Oct 2023 17:50:08 +0700
Message-ID: <CAOYVs2rFgyRQ1Hdk6g1j9Ku23TS1FRjW2r104H_eUPJioLJLiw@mail.gmail.com>
To: Bob Briscoe <ietf=40bobbriscoe.net@dmarc.ietf.org>
Cc: iccrg IRTF list <iccrg@irtf.org>
Content-Type: multipart/alternative; boundary="000000000000d44524060900eb34"
Archived-At: <https://mailarchive.ietf.org/arch/msg/iccrg/LjGeJRW21wAyhtLOFTt08lBSDo4>
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 10:50:28 -0000

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:

   1.

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

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

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

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

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

   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> <ietf@bobbriscoe.net>, Koen De
> Schepper <koen.de_schepper@nokia.com> <koen.de_schepper@nokia.com>,
> Olivier Tilmans <olivier.tilmans@nokia-bell-labs.com>
> <olivier.tilmans@nokia-bell-labs.com>, Vidhi Goel <vidhi_goel@apple.com>
> <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
>