From nobody Sun Sep 24 14:48:25 2023
Return-Path: <bernard.aboba@gmail.com>
X-Original-To: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id 26AA8C14CE31
 for <avt@ietfa.amsl.com>; Sun, 24 Sep 2023 14:48:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.897
X-Spam-Level: **
X-Spam-Status: No, score=2.897 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,
 GB_SUMOF=5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=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=no 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 5klHFdPbr6Sg for <avt@ietfa.amsl.com>;
 Sun, 24 Sep 2023 14:48:20 -0700 (PDT)
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [IPv6:2a00:1450:4864:20::22b])
 (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 20420C14CE27
 for <avt@ietf.org>; Sun, 24 Sep 2023 14:48:20 -0700 (PDT)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2c131ddfc95so75359451fa.0
 for <avt@ietf.org>; Sun, 24 Sep 2023 14:48:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1695592097; x=1696196897; darn=ietf.org;
 h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=LdAoBX3YKRUxyV8u5xNJI7I3gP4skPcK8XVTJtHLmVE=;
 b=WCvSxfu2mxqQ+cQvxhln8DIoKEUei5mFfbgd1NTdFVRrXInp0PfBs0NhjnvQ/BXP90
 aCkWhyqvyA0vZs6e2osiIqNsyfoZ2yTdZtKLWeYw323DyMUcPsmNRN2ykiR0HU8ulydb
 tnqTuMJFLxDbItxVxYL3RVct7DqhX6MC0eBKsjAADZdzL0VEenR1LVPMUCF4MzBmLJtp
 Ktxrx0NdO47OUN3+Cp+vqqCONLBR9ejFqE3e4Zgzz8ZCgM1i6mEcEX4xByfSSBRc2QxI
 Wd51VkXcZeuXl9cij+XpCoTSB3DaA/9Ub+9HVbK+SlOdS21uEeZg6Y4xoFLBpslSMKEt
 7Zrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1695592097; x=1696196897;
 h=to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=LdAoBX3YKRUxyV8u5xNJI7I3gP4skPcK8XVTJtHLmVE=;
 b=T5ntSPqHq9w4WdmODm+QcMLiyO7KKZjeGx3Y0UyhVMl+TVgfp0A4+lBFC1dqMGuXRS
 AFpyAS/qtFn7+fL5Q5Z/V5zLruTxfkyObBeEODCZlkHFk4CzoKGaKwFu108+TF6Glgnl
 MXPU/7yT4S0eF7lx5SJRe9bhlxN7jhrL+trSY7lN4D1J6v+RmGDq8lZYfTGvRHD6XehZ
 Lz+RItu3zZVrzRoLpgcV82y7xK+QgHLbMPHXBZVjnvFvuU67oLXROWLWHkMCeUHK8wiO
 nGVz5W5FEzSF5eGcAzpkA1PgAFxZPsCyNEmz5HDBzrLh2hacSdnBOgsDsE3Bdx6JjxXp
 dOgg==
X-Gm-Message-State: AOJu0YypN/ArTJpw6V07XzqGq3le0WfMEij6+vrEh1zd6XvfcLYHdScg
 XenLtKfj9B+qif7FUeuh9i18aX0w22TEpuRnlNJ5zAf9s18=
X-Google-Smtp-Source: AGHT+IFFMsQo/rLzXqW1eDRAsGPL+P3nw2rEjSKCu1ShZ2gmQNs49C7mxdvINK2BBxa3+LF+X3MttD4hQezgk97upEE=
X-Received: by 2002:a2e:964d:0:b0:2bf:f9b3:d335 with SMTP id
 z13-20020a2e964d000000b002bff9b3d335mr4191546ljh.15.1695592096339; Sun, 24
 Sep 2023 14:48:16 -0700 (PDT)
MIME-Version: 1.0
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Sun, 24 Sep 2023 14:48:02 -0700
Message-ID: <CAOW+2dvncSX52BvkbCdpXR8tOMq950XKEu18ZmPF3dGJt+3D+Q@mail.gmail.com>
To: IETF AVTCore WG <avt@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000961e96060621cce7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/7IFLBJAmFbB3f1_OgkoPyN0lhT8>
Subject: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: Congestion Control and
 Rate Control
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>,
 <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>,
 <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 24 Sep 2023 21:48:24 -0000

--000000000000961e96060621cce7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Looking over the coverage Congestion Control and Rate Control, the two
topics appear to be conflated and also there appear to be some issues that
have not been fully considered.

Section 1.2.2

While the effect of QUIC's response to congestion means that some RTP
packets will arrive at the receiver later than a user of the RTP flow might
prefer, it is still preferable to "ceasing transmission" completely until
the RTP sender has a reason to believe that restarting the flow will not
result in congestion.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-1.2.2-3>

[BA] In contrast to circuit breakers, which do not restrict the ability to
send RTCP feedback, QUIC congestion control affects RTCP feedback, not just
RTP.  So saying QUIC congestion control is "preferable" seems questionable.

Moreover, when a single QUIC connection is used to multiplex both RTP-RTCP
and non-RTP packets as described in Section 1.2.5
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
single-path>,
the QUIC connection will still be Internet-safe, with no coordination
required.

[BA] While it may be "Internet-safe", delays in RTCP feedback are likely to
destabilize rate control as well as resulting in challenges to A/V sync.
So not sure that "Internet-safe" is the only important metric here.

Section 1.2.3

One word of caution is in order - RTP implementations may rely on at least
some minimal periodic RTCP feedback, in order to determine that an RTP flow
is still active, and is not causing sustained congestion (as described in [
RFC8083 <https://www.rfc-editor.org/rfc/rfc8083>], but since this
"periodicity" is measured in seconds, the impact of this "duplicate"
feedback on path bandwidth utilization is likely close to zero.

[BA] Under congestion, RTCP feedback can potentially be delayed
substantially. Here is the issue is not "bandwidth utilization" but whether
RTCP receives the transport treatment required for control traffic.  Note
also that similar considerations apply to treatment of audio vs. video.
Serious problems with a/v sync are possible (or even likely) under
congestion.

Section 1.2.4

This is especially useful in certain conferencing topologies, where
otherwise senders have no choice but to use the lowest path MTU for all
conference participants, but even in point-to-point RTP sessions, this also
allows senders to piggyback audio media in the same UDP packet as video
media, for example, and also allows QUIC receivers to piggyback QUIC ACK
frames on any QUIC frames being transmitted in the other direction.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-1.2.4-2>

[BA] The draft does not talk much about piggybacking of audio and video
media, but we have seen some implementations experimenting with this to
avoid audio/video sync issues without having to resort to other techniques
such as prioritization.  Is this something that deserves more discussion?

Section 2

Rate control:

A congestion control mechanism that helps a sender determine and adjust its
sending rate, in order to maximize the amount of information that is sent
to a receiver, without causing queues to build beyond a reasonable amount,
causing "buffer bloat" and "jitter". Rate adapation is one way to
accomplish congestion control for real-time media, especially when a sender
has multiple media streams to the receiver, because the sum of all sending
rates for media streams must not be high enough to cause congestion on the
path these media streams share between sender and receiver.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-2-4.18.1>


[BA] Rate control and congestion control are distinct. So the definition
here doesn't seem right, particularly for RoQ where congestion control is
built into QUIC while rate adaptation is application and even
codec-specific.


Overall, a better way to think of the distinction is that QUIC congestion
control limits the amount that can be sent. Since realtime applications
seek to achieve low latency, they will typically prefer to respond to
bandwidth limitations by controlling rate, rather than experiencing
queueing delays or increased loss.


But since congestion control and rate control are distinct and are handled
at different layers, rate control is not "one way to accomplish congestion
control" but rather "one way to respond to send rate limitations imposed by
congestion control algorithms".


Section 3


A rate adaptation algorithm can be plugged in to adapt the media bitrate to
the available bandwidth. This document does not mandate any specific rate
adaptation algorithm, because the desired response to congestion can be
application and codec-specific. For example, adjusting quantization in
response to congestion may work well in many cases, but if what's being
shared is video that includes text, maintaining readability is important.


[BA] This text is good. I believe it should be placed earlier in the
document (perhaps in the scope section).


As of this writing, the IETF has produced two Experimental-track rate
adaptation specifications, Network-Assisted Dynamic Adaptation (NADA) [
RFC8698 <https://www.rfc-editor.org/rfc/rfc8698>] and Self-Clocked Rate
Adaptation for Multimedia (SCReAM) [RFC8298
<https://www.rfc-editor.org/rfc/rfc8298>]. These rate adaptation algorithms
require some feedback about the network's performance to calculate target
bitrates. Traditionally this feedback is generated at the receiver and sent
back to the sender via RTCP.


[BA] Within the context of the previous paragraph is it correct to
characterize these specifications as "rate adaptation algorithms"?  The
previous paragraph mentions QP-based rate control which is indeed codec and
application specific. NADA, SCReAM, gcc, etc. were developed as congestion
control algorithms and therefore they do not provide application and
codec-specific rate control mechanisms.


Section 6


Like any other application on the internet, RoQ applications need a
mechanism to perform congestion control to avoid overloading the network.
While any generic congestion controller can protect the network, this
document takes advantage of the opportunity to use rate adaptation
mechanisms that are designed to provide superior user experiences for
real-time media applications.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6-1>

[BA] This paragraph appears to conflate congestion control and rate
control. Congestion control is built into QUIC, and RoQ therefore inherits
it. So RoQ applications have a mechanism for congestion control.

Since earlier it was stated that there is no normative guidance on rate
control, how can "this document take advantage of the opportunity to use
rate adaptation mechanisms that are designed to provide superior user
experiences"?

A wide variety of rate adaptation algorithms for real-time media have been
developed (for example, "Google Congestion Controller" [
I-D.draft-ietf-rmcat-gcc
<https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02>]). The IETF
has defined two algorithms in two Experimental RFCs (e.g. SCReAM [RFC8298
<https://www.rfc-editor.org/rfc/rfc8298>] and NADA [RFC8698
<https://www.rfc-editor.org/rfc/rfc8698>]). These rate adaptation
algorithms for RTP are specifically tailored for real-time transmissions at
low latencies, but this section would apply to any rate adaptation
algorithm that meets the requirements described in "Congestion Control
Requirements for Interactive Real-Time Media" [RFC8836
<https://www.rfc-editor.org/rfc/rfc8836>].


[BA] As noted earlier, these are not rate control algorithms (e.g.
per-frame QP), they are congestion control algorithms.


This document defines two architectures for congestion control and
bandwidth estimation for RoQ, depending on whether most rate adaptation is
performed within a QUIC implementation at the transport layer, as described
in Section 6.1
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
cc-quic-layer>,
or within an RTP application layer, as described in Section 6.2
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
cc-application-layer>,
but this document does not mandate any specific congestion control or rate
adaptation algorithm for either QUIC or RTP.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6-3>

[BA] QUIC implementations cannot implement rate control, because as you
state earlier, that is application and/or codec-specific. So again you seem
to be conflating congestion control and rate control.

It is assumed that the congestion controller in use provides a pacing
mechanism to determine when a packet can be sent to avoid bursts. The
currently proposed congestion control algorithms for real-time
communications (e.g. SCReAM and NADA) provide such pacing mechanisms. The
use of congestion controllers which don't provide a pacing mechanism is out
of scope of this document.
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6-6>

[BA] In this paragraph you correctly refer to SCReaM and NADA as congestion
control algorithms. Please use this terminology consistently.

Section 6.1

If a QUIC implementation is to perform rate adaptation in a way that
accommodates real-time media, one way for the implementation to recognize
that it is carrying real-time media is to be explicitly told that this is
the case. This document defines a new "TLS Application-Layer Protocol
Negotiation (ALPN) Protocol ID", as described in Section 4
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
alpn>,
that a QUIC implementation can use as a signal to choose a real-time
media-centric rate controller, but this is not required for ROQ deployments=
.
=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6.1-2>

[BA] Again, QUIC implementations do not perform rate adaptation. That is an
application layer function. I think you mean "perform congestion control"
here.

However, congestion control is orthogonal to the use of an ALPN, so mixing
these two concepts is problematic.

If congestion control is to be applied at the transport layer, it is
RECOMMENDED that the QUIC Implementation uses a congestion controller that
keeps queueing delays short to keep the transmission latency for RTP and
RTCP packets as low as possible, such as the IETF-defined SCReAM [RFC8298
<https://www.rfc-editor.org/rfc/rfc8298>] and NADA [RFC8698
<https://www.rfc-editor.org/rfc/rfc8698>] algorithms.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6.1-3>

[BA] You might also mention L4S here. This seems more likely to be
supported with QUIC than the algorithms you mention in the draft.

If congestion control is done by the QUIC implementation, the application
needs a mechanism to query the currently available bandwidth to adapt media
codec configurations. The employed congestion controller of the QUIC
connection SHOULD expose such an API to the application. If a current
bandwidth estimate is not available from the QUIC congestion controller,
the sender can either implement an alternative bandwidth estimation at the
application layer as described in Section 6.2
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
cc-application-layer>
 or a receiver can feedback the observed bandwidth through RTCP, e.g., usin=
g
 [I-D.draft-alvestrand-rmcat-remb
<https://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-remb-03>].=C2=
=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6.1-5>

[BA] This paragraph is good, since it describes how the QUIC implementation
provides info to the application, to be used in rate control. I think you
need to be more clear about the relationship throughout the document. But
the normative language is problematic because this document cannot have
normative API dependencies. Also, you need to be careful with references to
drafts which will not be published as RFCs, particularly REMB which has
been deprecated in favor of transport CC.


Section 6.2

The rate adaptation algorithms for RTP are specifically tailored for
real-time transmissions at low latencies, as described in Section 6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
congestion-control>.
The available rate adaptation algorithms expose a target_bitrate that can
be used to dynamically reconfigure media codecs to produce media at a rate
that can be sent in real-time under the observed network conditions.=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-6.2-2>

[BA] Again, there is a conflation of rate adaptation and congestion
control. In this paragraph "congestion control algorithms" should be used
instead of "rate control algorithms".

Section 6.3

Because QUIC is a congestion-controlled transport, as described in Section
6.1
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
cc-quic-layer>,
and RTP applications can also perform congestion control and rate
adaptation,

[BA] Since congestion control is built into QUIC, RoQ applications can only
do rate control, not congestion control.

   - Application-limited Media Flows - if an application chooses RTP as its
   transport mechanism, the goal will be maximizing the user experience, no=
t
   maximizing path bandwidth utilization. If the application is, in fact,
   transmitting media that does not saturate path bandwidth, and paces its
   transmission, more heavy-handed congestion control mechanisms (drastic
   reductions in the sending rate when loss is detected, with much slower
   increases when losses are no longer detected) should rarely come into pl=
ay.
   If the application chooses ROQ as its transport, sends enough media to
   saturate the path bandwidth, and does not adapt its own sending rate,
   drastic measures will be required in order to avoid sustained or
   oscillating congestion along the path.=C2=B6
   <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-=
05#section-6.3-2.1>


[BA] This document probably isn't the right place to discuss this, but it
is a very big issue that has limited the deployment of the algorithms
produced by RMCAT, because probing was supported by gcc and not in the
NADA, SCreAM, etc. In practice, fixing this problem requires probing
controlled by the CC algorithm at the QUIC layer. So far I'm not aware of
any QUIC implementations which support this kind of probing.


=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-3-3>



=C2=B6
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#=
section-1.2.3-2>

--000000000000961e96060621cce7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Looking over the coverage Congestion Control and Rate Cont=
rol, the two topics appear to be conflated and also there appear to be some=
 issues that have not been fully considered.=C2=A0<div><br></div><div>Secti=
on=C2=A01.2.2</div><div><br></div><div><div id=3D"gmail-always-on-internet-=
safe-congestion-avoidance" style=3D"box-sizing:border-box;color:rgb(33,37,4=
1);font-family:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Conso=
las,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size=
:16px"><p id=3D"gmail-section-1.2.2-3" style=3D"box-sizing:border-box;margi=
n-right:0px;margin-left:3ch">While the effect of QUIC&#39;s response to con=
gestion means that some RTP packets will arrive at the receiver later than =
a user of the RTP flow might prefer, it is still preferable to &quot;ceasin=
g transmission&quot; completely until the RTP sender has a reason to believ=
e that restarting the flow will not result in congestion.<a href=3D"https:/=
/datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-=
1.2.2-3" class=3D"gmail-pilcrow" style=3D"box-sizing:border-box;color:inher=
it;text-decoration-line:none;opacity:0.2;display:inline-block">=C2=B6</a></=
p><p id=3D"gmail-section-1.2.2-3" style=3D"box-sizing:border-box;margin-rig=
ht:0px;margin-left:3ch">[BA] In contrast to circuit breakers, which do not =
restrict the ability to send RTCP feedback, QUIC congestion control affects=
 RTCP feedback, not just RTP.=C2=A0 So saying QUIC congestion=C2=A0control =
is &quot;preferable&quot; seems questionable.=C2=A0</p><p id=3D"gmail-secti=
on-1.2.2-4" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch=
">Moreover, when a single QUIC connection is used to multiplex both RTP-RTC=
P and non-RTP packets as described in=C2=A0<a href=3D"https://datatracker.i=
etf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#single-path" class=3D"=
gmail-auto gmail-internal gmail-xref" style=3D"box-sizing:border-box">Secti=
on 1.2.5</a>, the QUIC connection will still be Internet-safe, with no coor=
dination required.</p><p id=3D"gmail-section-1.2.2-4" style=3D"box-sizing:b=
order-box;margin-right:0px;margin-left:3ch">[BA] While it may be &quot;Inte=
rnet-safe&quot;, delays in RTCP feedback are likely to destabilize rate con=
trol as well as resulting in challenges to A/V sync.=C2=A0 So not sure that=
 &quot;Internet-safe&quot; is the only important metric here.=C2=A0</p><p i=
d=3D"gmail-section-1.2.2-4" style=3D"box-sizing:border-box;margin-right:0px=
;margin-left:3ch">Section 1.2.3</p><p id=3D"gmail-section-1.2.2-4" style=3D=
"box-sizing:border-box;margin-right:0px;margin-left:3ch"></p><div id=3D"gma=
il-mtu-coal" style=3D"box-sizing:border-box;color:rgb(33,37,41);font-family=
:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Libe=
ration Mono&quot;,&quot;Courier New&quot;,monospace;font-size:16px;font-sty=
le:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weigh=
t:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform=
:none;word-spacing:0px;white-space:normal;background-color:rgb(255,255,255)=
;text-decoration-style:initial;text-decoration-color:initial"></div><p></p>=
<div id=3D"gmail-ra-quic-feedback" style=3D"box-sizing:border-box;color:rgb=
(33,37,41);font-family:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Mona=
co,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;f=
ont-size:16px;font-style:normal;font-variant-ligatures:normal;font-variant-=
caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-ind=
ent:0px;text-transform:none;word-spacing:0px;white-space:normal;background-=
color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:=
initial"><p id=3D"gmail-section-1.2.3-2" style=3D"box-sizing:border-box;mar=
gin-right:0px;margin-left:3ch">One word of caution is in order - RTP implem=
entations may rely on at least some minimal periodic RTCP feedback, in orde=
r to determine that an RTP flow is still active, and is not causing sustain=
ed congestion (as described in<span>=C2=A0</span><span style=3D"box-sizing:=
border-box">[<a href=3D"https://www.rfc-editor.org/rfc/rfc8083" class=3D"gm=
ail-cite gmail-xref" style=3D"box-sizing:border-box;text-decoration:underli=
ne;white-space:nowrap">RFC8083</a>]</span>, but since this &quot;periodicit=
y&quot; is measured in seconds, the impact of this &quot;duplicate&quot; fe=
edback on path bandwidth utilization is likely close to zero.</p><p id=3D"g=
mail-section-1.2.3-2" style=3D"box-sizing:border-box;margin-right:0px;margi=
n-left:3ch">[BA] Under congestion, RTCP feedback can potentially be delayed=
 substantially. Here is the issue is not &quot;bandwidth utilization&quot; =
but whether RTCP receives the transport treatment required for control traf=
fic.=C2=A0 Note also that similar considerations apply to treatment of audi=
o vs. video. Serious problems with a/v sync are possible (or even likely) u=
nder congestion.=C2=A0</p><p id=3D"gmail-section-1.2.3-2" style=3D"box-sizi=
ng:border-box;margin-right:0px;margin-left:3ch">Section 1.2.4</p><p id=3D"g=
mail-section-1.2.3-2" style=3D"box-sizing:border-box;margin-right:0px;margi=
n-left:3ch"></p><div id=3D"gmail-single-path" style=3D"box-sizing:border-bo=
x;color:rgb(33,37,41);font-family:&quot;Noto Sans Mono&quot;,SFMono-Regular=
,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,=
monospace;font-size:16px;font-style:normal;font-variant-ligatures:normal;fo=
nt-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:sta=
rt;text-indent:0px;text-transform:none;word-spacing:0px;white-space:normal;=
background-color:rgb(255,255,255);text-decoration-style:initial;text-decora=
tion-color:initial"></div><p></p><div id=3D"gmail-mtu-coal" style=3D"box-si=
zing:border-box;color:rgb(33,37,41);font-family:&quot;Noto Sans Mono&quot;,=
SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Cour=
ier New&quot;,monospace;font-size:16px;font-style:normal;font-variant-ligat=
ures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;=
text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;white=
-space:normal;background-color:rgb(255,255,255);text-decoration-style:initi=
al;text-decoration-color:initial"><p id=3D"gmail-section-1.2.4-2" style=3D"=
box-sizing:border-box;margin-right:0px;margin-left:3ch">This is especially =
useful in certain conferencing topologies, where otherwise senders have no =
choice but to use the lowest path MTU for all conference participants, but =
even in point-to-point RTP sessions, this also allows senders to piggyback =
audio media in the same UDP packet as video media, for example, and also al=
lows QUIC receivers to piggyback QUIC ACK frames on any QUIC frames being t=
ransmitted in the other direction.<a href=3D"https://datatracker.ietf.org/d=
oc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.4-2" class=3D"gmail=
-pilcrow" style=3D"box-sizing:border-box;color:inherit;text-decoration:none=
;opacity:0.2;display:inline-block">=C2=B6</a></p><p id=3D"gmail-section-1.2=
.4-2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">[BA]=
 The draft does not talk much about piggybacking of audio and video media, =
but we have seen some implementations experimenting with this to avoid audi=
o/video sync issues without having to resort to other techniques such as pr=
ioritization.=C2=A0 Is this something that deserves more discussion?=C2=A0<=
/p><p id=3D"gmail-section-1.2.4-2" style=3D"box-sizing:border-box;margin-ri=
ght:0px;margin-left:3ch">Section 2</p><p id=3D"gmail-section-1.2.4-2" style=
=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">Rate control:=
=C2=A0</p><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;ma=
rgin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"g=
mail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">A congest=
ion control mechanism that helps a sender determine and adjust its sending =
rate, in order to maximize the amount of information that is sent to a rece=
iver, without causing queues to build beyond a reasonable amount, causing &=
quot;buffer bloat&quot; and &quot;jitter&quot;. Rate adapation is one way t=
o accomplish congestion control for real-time media, especially when a send=
er has multiple media streams to the receiver, because the sum of all sendi=
ng rates for media streams must not be high enough to cause congestion on t=
he path these media streams share between sender and receiver.<a href=3D"ht=
tps://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#sec=
tion-2-4.18.1" class=3D"gmail-pilcrow" style=3D"box-sizing:border-box;color=
:inherit;text-decoration-line:none;opacity:0.01;display:inline-block">=C2=
=B6</a></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-=
box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p i=
d=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px"><br=
></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;ma=
rgin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"g=
mail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">[BA] Rate=
 control and congestion control are distinct. So the definition here doesn&=
#39;t seem right, particularly for RoQ where congestion control is built in=
to QUIC while rate adaptation is application and even codec-specific.=C2=A0=
</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;mar=
gin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gm=
ail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px"><br></p></=
dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-le=
ft:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-se=
ction-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">Overall, a bette=
r way to think of the distinction is that QUIC congestion control limits th=
e amount that can be sent. Since realtime applications seek to achieve low =
latency, they will typically prefer to respond to bandwidth limitations by =
controlling rate, rather than experiencing queueing delays or increased los=
s.=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border=
-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p =
id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px"><b=
r></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;m=
argin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"=
gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">But sinc=
e congestion control and rate control are distinct and are handled at diffe=
rent layers, rate control is not &quot;one way to accomplish congestion con=
trol&quot; but rather &quot;one way to respond to send rate limitations imp=
osed by congestion control algorithms&quot;.</p></dd><dd id=3D"gmail-sectio=
n-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px=
;break-before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"=
box-sizing:border-box;margin:0px"><br></p></dd><dd id=3D"gmail-section-2-4.=
18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break=
-before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-si=
zing:border-box;margin:0px">Section 3</p></dd><dd id=3D"gmail-section-2-4.1=
8" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-=
before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-siz=
ing:border-box;margin:0px"><br></p></dd><dd id=3D"gmail-section-2-4.18" sty=
le=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-before=
:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:bo=
rder-box;margin:0px">A rate adaptation algorithm can be plugged in to adapt=
 the media bitrate to the available bandwidth. This document does not manda=
te any specific rate adaptation algorithm, because the desired response to =
congestion can be application and codec-specific. For example, adjusting qu=
antization in response to congestion may work well in many cases, but if wh=
at&#39;s being shared is video that includes text, maintaining readability =
is important.</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:b=
order-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px=
"><p id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0p=
x"><br></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-=
box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p i=
d=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">[BA=
] This text is good. I believe it should be placed earlier in the document =
(perhaps in the scope section).=C2=A0=C2=A0</p></dd><dd id=3D"gmail-section=
-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;=
break-before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"b=
ox-sizing:border-box;margin:0px"><br></p></dd><dd id=3D"gmail-section-2-4.1=
8" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-=
before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-siz=
ing:border-box;margin:0px">As of this writing, the IETF has produced two Ex=
perimental-track rate adaptation specifications, Network-Assisted Dynamic A=
daptation (NADA)=C2=A0<span style=3D"box-sizing:border-box">[<a href=3D"htt=
ps://www.rfc-editor.org/rfc/rfc8698" class=3D"gmail-cite gmail-xref" style=
=3D"box-sizing:border-box">RFC8698</a>]</span>=C2=A0and Self-Clocked Rate A=
daptation for Multimedia (SCReAM)=C2=A0<span style=3D"box-sizing:border-box=
">[<a href=3D"https://www.rfc-editor.org/rfc/rfc8298" class=3D"gmail-cite g=
mail-xref" style=3D"box-sizing:border-box">RFC8298</a>]</span>. These rate =
adaptation algorithms require some feedback about the network&#39;s perform=
ance to calculate target bitrates. Traditionally this feedback is generated=
 at the receiver and sent back to the sender via RTCP.<br></p></dd><dd id=
=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;=
margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-2-4=
.18.1" style=3D"box-sizing:border-box;margin:0px"><br></p></dd><dd id=3D"gm=
ail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin=
-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1"=
 style=3D"box-sizing:border-box;margin:0px">[BA] Within the context of the =
previous paragraph is it correct to characterize these specifications as &q=
uot;rate adaptation algorithms&quot;?=C2=A0 The previous paragraph mentions=
 QP-based rate control which is indeed codec and application specific. NADA=
, SCReAM, gcc, etc. were developed as congestion control algorithms and the=
refore they do not provide application and codec-specific rate control mech=
anisms.=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:b=
order-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px=
"><p id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0p=
x"><br></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-=
box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p i=
d=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px">Sec=
tion 6=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:bo=
rder-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"=
><p id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:border-box;margin:0px=
"><br></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-b=
ox;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=
=3D"gmail-section-6-1" style=3D"box-sizing:border-box;margin-right:0px;marg=
in-left:3ch">Like any other application on the internet, RoQ applications n=
eed a mechanism to perform congestion control to avoid overloading the netw=
ork. While any generic congestion controller can protect the network, this =
document takes advantage of the opportunity to use rate adaptation mechanis=
ms that are designed to provide superior user experiences for real-time med=
ia applications.<a href=3D"https://datatracker.ietf.org/doc/html/draft-ietf=
-avtcore-rtp-over-quic-05#section-6-1" class=3D"gmail-pilcrow" style=3D"box=
-sizing:border-box;color:inherit;text-decoration-line:none;opacity:0.01;dis=
play:inline-block">=C2=B6</a></p></dd><dd id=3D"gmail-section-2-4.18" style=
=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-before:a=
void;padding:0px"><p id=3D"gmail-section-6-1" style=3D"box-sizing:border-bo=
x;margin-right:0px;margin-left:3ch">[BA] This paragraph appears to conflate=
 congestion control and rate control. Congestion control is built into QUIC=
, and RoQ therefore inherits it. So RoQ applications have a mechanism for c=
ongestion control.=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"b=
ox-sizing:border-box;margin-left:1.5em;margin-right:0px;break-before:avoid;=
padding:0px"><p id=3D"gmail-section-6-1" style=3D"box-sizing:border-box;mar=
gin-right:0px;margin-left:3ch">Since earlier it was stated that there is no=
 normative guidance on rate control, how can &quot;this document take advan=
tage of the opportunity to use rate adaptation mechanisms that are designed=
 to provide superior user experiences&quot;?=C2=A0</p></dd><dd id=3D"gmail-=
section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-rig=
ht:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6-2" style=3D=
"box-sizing:border-box;margin-right:0px;margin-left:3ch">A wide variety of =
rate adaptation algorithms for real-time media have been developed (for exa=
mple, &quot;Google Congestion Controller&quot;=C2=A0<span style=3D"box-sizi=
ng:border-box">[<a href=3D"https://datatracker.ietf.org/doc/html/draft-ietf=
-rmcat-gcc-02" class=3D"gmail-cite gmail-xref" style=3D"box-sizing:border-b=
ox">I-D.draft-ietf-rmcat-gcc</a>]</span>). The IETF has defined two algorit=
hms in two Experimental RFCs (e.g. SCReAM=C2=A0<span style=3D"box-sizing:bo=
rder-box">[<a href=3D"https://www.rfc-editor.org/rfc/rfc8298" class=3D"gmai=
l-cite gmail-xref" style=3D"box-sizing:border-box">RFC8298</a>]</span>=C2=
=A0and NADA=C2=A0<span style=3D"box-sizing:border-box">[<a href=3D"https://=
www.rfc-editor.org/rfc/rfc8698" class=3D"gmail-cite gmail-xref" style=3D"bo=
x-sizing:border-box">RFC8698</a>]</span>). These rate adaptation algorithms=
 for RTP are specifically tailored for real-time transmissions at low laten=
cies, but this section would apply to any rate adaptation algorithm that me=
ets the requirements described in &quot;Congestion Control Requirements for=
 Interactive Real-Time Media&quot;=C2=A0<span style=3D"box-sizing:border-bo=
x">[<a href=3D"https://www.rfc-editor.org/rfc/rfc8836" class=3D"gmail-cite =
gmail-xref" style=3D"box-sizing:border-box">RFC8836</a>]</span>.</p></dd><d=
d id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.=
5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section=
-6-2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch"><br>=
</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;mar=
gin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gm=
ail-section-6-2" style=3D"box-sizing:border-box;margin-right:0px;margin-lef=
t:3ch">[BA] As noted earlier, these are not rate control algorithms (e.g. p=
er-frame QP), they are congestion control algorithms.</p></dd><dd id=3D"gma=
il-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-=
right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6-2" style=
=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch"><br></p></dd><d=
d id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.=
5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section=
-6-2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">This=
 document defines two architectures for congestion control and bandwidth es=
timation for RoQ, depending on whether most rate adaptation is performed wi=
thin a QUIC implementation at the transport layer, as described in=C2=A0<a =
href=3D"https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-q=
uic-05#cc-quic-layer" class=3D"gmail-auto gmail-internal gmail-xref" style=
=3D"box-sizing:border-box">Section 6.1</a>, or within an RTP application la=
yer, as described in=C2=A0<a href=3D"https://datatracker.ietf.org/doc/html/=
draft-ietf-avtcore-rtp-over-quic-05#cc-application-layer" class=3D"gmail-au=
to gmail-internal gmail-xref" style=3D"box-sizing:border-box">Section 6.2</=
a>, but this document does not mandate any specific congestion control or r=
ate adaptation algorithm for either QUIC or RTP.<a href=3D"https://datatrac=
ker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6-3" clas=
s=3D"gmail-pilcrow" style=3D"box-sizing:border-box;color:inherit;text-decor=
ation-line:none;opacity:0.01;display:inline-block">=C2=B6</a></p></dd><dd i=
d=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em=
;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6-=
2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">[BA] QU=
IC implementations cannot implement rate control, because as you state earl=
ier, that is application and/or codec-specific. So again you seem to be con=
flating congestion control and rate control.=C2=A0</p></dd><dd id=3D"gmail-=
section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-rig=
ht:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6-4" style=3D=
"box-sizing:border-box;margin-right:0px;margin-left:3ch"></p><div id=3D"gma=
il-cc-quic-layer" style=3D"box-sizing:border-box;color:rgb(33,37,41);font-f=
amily:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Consolas,&quot=
;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:16px;fon=
t-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-=
weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-tran=
sform:none;word-spacing:0px;white-space:normal;background-color:rgb(255,255=
,255);text-decoration-style:initial;text-decoration-color:initial"></div><p=
></p><p id=3D"gmail-section-6-6" style=3D"box-sizing:border-box;margin-righ=
t:0px;margin-left:3ch;color:rgb(33,37,41);font-family:&quot;Noto Sans Mono&=
quot;,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quo=
t;Courier New&quot;,monospace;font-size:16px;font-style:normal;font-variant=
-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:n=
ormal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px=
;white-space:normal;background-color:rgb(255,255,255);text-decoration-style=
:initial;text-decoration-color:initial">It is assumed that the congestion c=
ontroller in use provides a pacing mechanism to determine when a packet can=
 be sent to avoid bursts. The currently proposed congestion control algorit=
hms for real-time communications (e.g. SCReAM and NADA) provide such pacing=
 mechanisms. The use of congestion controllers which don&#39;t provide a pa=
cing mechanism is out of scope of this document.<a href=3D"https://datatrac=
ker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6-6" clas=
s=3D"gmail-pilcrow" style=3D"box-sizing:border-box;color:inherit;text-decor=
ation:none;opacity:0.01;display:inline-block"></a></p></dd><dd id=3D"gmail-=
section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-rig=
ht:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6-6" style=3D=
"box-sizing:border-box;margin-right:0px;margin-left:3ch;color:rgb(33,37,41)=
;font-family:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Consola=
s,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:1=
6px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:norma=
l;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;te=
xt-transform:none;word-spacing:0px;white-space:normal;background-color:rgb(=
255,255,255);text-decoration-style:initial;text-decoration-color:initial">[=
BA] In this paragraph you correctly refer to SCReaM and NADA as congestion =
control algorithms. Please use this terminology consistently.=C2=A0</p></dd=
><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left=
:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-sect=
ion-6-6" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch;co=
lor:rgb(33,37,41);font-family:&quot;Noto Sans Mono&quot;,SFMono-Regular,Men=
lo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,mono=
space;font-size:16px;font-style:normal;font-variant-ligatures:normal;font-v=
ariant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;word-spacing:0px;white-space:normal;back=
ground-color:rgb(255,255,255);text-decoration-style:initial;text-decoration=
-color:initial">Section 6.1</p></dd><dd id=3D"gmail-section-2-4.18" style=
=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-before:a=
void;padding:0px"><p id=3D"gmail-section-6.1-2" style=3D"box-sizing:border-=
box;margin-right:0px;margin-left:3ch">If a QUIC implementation is to perfor=
m rate adaptation in a way that accommodates real-time media, one way for t=
he implementation to recognize that it is carrying real-time media is to be=
 explicitly told that this is the case. This document defines a new &quot;T=
LS Application-Layer Protocol Negotiation (ALPN) Protocol ID&quot;, as desc=
ribed in=C2=A0<a href=3D"https://datatracker.ietf.org/doc/html/draft-ietf-a=
vtcore-rtp-over-quic-05#alpn" class=3D"gmail-auto gmail-internal gmail-xref=
" style=3D"box-sizing:border-box">Section 4</a>, that a QUIC implementation=
 can use as a signal to choose a real-time media-centric rate controller, b=
ut this is not required for ROQ deployments.<a href=3D"https://datatracker.=
ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.1-2" class=
=3D"gmail-pilcrow" style=3D"box-sizing:border-box;color:inherit;text-decora=
tion-line:none;opacity:0.01;display:inline-block">=C2=B6</a></p></dd><dd id=
=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;=
margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6.1=
-2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">[BA] A=
gain, QUIC implementations do not perform rate adaptation. That is an appli=
cation layer function. I think you mean &quot;perform congestion control&qu=
ot; here.=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing=
:border-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0=
px"><p id=3D"gmail-section-6.1-2" style=3D"box-sizing:border-box;margin-rig=
ht:0px;margin-left:3ch">However, congestion control is orthogonal to the us=
e of an ALPN, so mixing these two concepts is problematic.=C2=A0</p></dd><d=
d id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.=
5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section=
-6.1-3" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">If=
 congestion control is to be applied at the transport layer, it is RECOMMEN=
DED that the QUIC Implementation uses a congestion controller that keeps qu=
eueing delays short to keep the transmission latency for RTP and RTCP packe=
ts as low as possible, such as the IETF-defined SCReAM=C2=A0<span style=3D"=
box-sizing:border-box">[<a href=3D"https://www.rfc-editor.org/rfc/rfc8298" =
class=3D"gmail-cite gmail-xref" style=3D"box-sizing:border-box">RFC8298</a>=
]</span>=C2=A0and NADA=C2=A0<span style=3D"box-sizing:border-box">[<a href=
=3D"https://www.rfc-editor.org/rfc/rfc8698" class=3D"gmail-cite gmail-xref"=
 style=3D"box-sizing:border-box">RFC8698</a>]</span>=C2=A0algorithms.<a hre=
f=3D"https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic=
-05#section-6.1-3" class=3D"gmail-pilcrow" style=3D"box-sizing:border-box;c=
olor:inherit;text-decoration-line:none;opacity:0.01;display:inline-block">=
=C2=B6</a></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:bord=
er-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><=
p id=3D"gmail-section-6.1-3" style=3D"box-sizing:border-box;margin-right:0p=
x;margin-left:3ch">[BA] You might also mention L4S here. This seems more li=
kely to be supported with QUIC than the algorithms you mention in the draft=
.=C2=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-=
box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p i=
d=3D"gmail-section-6.1-4" style=3D"box-sizing:border-box;margin-right:0px;m=
argin-left:3ch"></p><div id=3D"gmail-cc-application-layer" style=3D"box-siz=
ing:border-box;color:rgb(33,37,41);font-family:&quot;Noto Sans Mono&quot;,S=
FMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Couri=
er New&quot;,monospace;font-size:16px;font-style:normal;font-variant-ligatu=
res:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;t=
ext-align:start;text-indent:0px;text-transform:none;word-spacing:0px;white-=
space:normal;background-color:rgb(255,255,255);text-decoration-style:initia=
l;text-decoration-color:initial"></div><p></p><div id=3D"gmail-cc-quic-laye=
r" style=3D"box-sizing:border-box;color:rgb(33,37,41);font-family:&quot;Not=
o Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mon=
o&quot;,&quot;Courier New&quot;,monospace;font-size:16px;font-style:normal;=
font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;lett=
er-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word=
-spacing:0px;white-space:normal;background-color:rgb(255,255,255);text-deco=
ration-style:initial;text-decoration-color:initial"><p id=3D"gmail-section-=
6.1-5" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch">If =
congestion control is done by the QUIC implementation, the application need=
s a mechanism to query the currently available bandwidth to adapt media cod=
ec configurations. The employed congestion controller of the QUIC connectio=
n SHOULD expose such an API to the application. If a current bandwidth esti=
mate is not available from the QUIC congestion controller, the sender can e=
ither implement an alternative bandwidth estimation at the application laye=
r as described in<span>=C2=A0</span><a href=3D"https://datatracker.ietf.org=
/doc/html/draft-ietf-avtcore-rtp-over-quic-05#cc-application-layer" class=
=3D"gmail-auto gmail-internal gmail-xref" style=3D"box-sizing:border-box;te=
xt-decoration:underline;white-space:nowrap">Section 6.2</a><span>=C2=A0</sp=
an>or a receiver can feedback the observed bandwidth through RTCP, e.g., us=
ing<span>=C2=A0</span><span style=3D"box-sizing:border-box">[<a href=3D"htt=
ps://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-remb-03" class=3D=
"gmail-cite gmail-xref" style=3D"box-sizing:border-box;text-decoration:unde=
rline;white-space:nowrap">I-D.draft-alvestrand-rmcat-remb</a>]</span>.<a hr=
ef=3D"https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-qui=
c-05#section-6.1-5" class=3D"gmail-pilcrow" style=3D"box-sizing:border-box;=
color:inherit;text-decoration:none;opacity:0.2;display:inline-block">=C2=B6=
</a></p></div></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:bord=
er-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><=
p id=3D"gmail-section-6.1-5" style=3D"box-sizing:border-box;margin-right:0p=
x;margin-left:3ch">[BA] This paragraph is good, since it describes how the =
QUIC implementation provides info to the application, to be used in rate co=
ntrol. I think you need to be more clear about the relationship throughout =
the document. But the normative language is problematic because this docume=
nt cannot have normative API dependencies. Also, you need to be careful wit=
h references to drafts which will not be published as RFCs, particularly RE=
MB which has been deprecated in favor of transport CC.=C2=A0</p></dd><dd id=
=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;=
margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmail-section-6.1=
-5" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3ch"><br></=
p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margi=
n-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D"gmai=
l-section-6.1-5" style=3D"box-sizing:border-box;margin-right:0px;margin-lef=
t:3ch">Section 6.2</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-siz=
ing:border-box;margin-left:1.5em;margin-right:0px;break-before:avoid;paddin=
g:0px"><p id=3D"gmail-section-6.2-2" style=3D"box-sizing:border-box;margin-=
right:0px;margin-left:3ch">The rate adaptation algorithms for RTP are speci=
fically tailored for real-time transmissions at low latencies, as described=
 in=C2=A0<a href=3D"https://datatracker.ietf.org/doc/html/draft-ietf-avtcor=
e-rtp-over-quic-05#congestion-control" class=3D"gmail-auto gmail-internal g=
mail-xref" style=3D"box-sizing:border-box">Section 6</a>. The available rat=
e adaptation algorithms expose a=C2=A0<code style=3D"box-sizing:border-box;=
font-size:1em;color:inherit;overflow:visible">target_bitrate</code>=C2=A0th=
at can be used to dynamically reconfigure media codecs to produce media at =
a rate that can be sent in real-time under the observed network conditions.=
<a href=3D"https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-ove=
r-quic-05#section-6.2-2" class=3D"gmail-pilcrow" style=3D"box-sizing:border=
-box;color:inherit;text-decoration-line:none;opacity:0.2;display:inline-blo=
ck">=C2=B6</a></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:=
border-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0p=
x"><p id=3D"gmail-section-6.2-2" style=3D"box-sizing:border-box;margin-righ=
t:0px;margin-left:3ch">[BA] Again, there is a conflation of rate adaptation=
 and congestion control. In this paragraph &quot;congestion control algorit=
hms&quot; should be used instead of &quot;rate control algorithms&quot;.=C2=
=A0</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;=
margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"><p id=3D=
"gmail-section-6.2-2" style=3D"box-sizing:border-box;margin-right:0px;margi=
n-left:3ch">Section 6.3</p></dd><dd id=3D"gmail-section-2-4.18" style=3D"bo=
x-sizing:border-box;margin-left:1.5em;margin-right:0px;break-before:avoid;p=
adding:0px"><p id=3D"gmail-section-6.2-2" style=3D"box-sizing:border-box;ma=
rgin-right:0px;margin-left:3ch">Because QUIC is a congestion-controlled tra=
nsport, as described in=C2=A0<a href=3D"https://datatracker.ietf.org/doc/ht=
ml/draft-ietf-avtcore-rtp-over-quic-05#cc-quic-layer" class=3D"gmail-auto g=
mail-internal gmail-xref" style=3D"box-sizing:border-box">Section 6.1</a>, =
and RTP applications can also perform congestion control and rate adaptatio=
n,=C2=A0<br></p></dd><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:bo=
rder-box;margin-left:1.5em;margin-right:0px;break-before:avoid;padding:0px"=
><p id=3D"gmail-section-6.2-2" style=3D"box-sizing:border-box;margin-right:=
0px;margin-left:3ch">[BA] Since congestion control is built into QUIC, RoQ =
applications can only do rate control, not congestion control.=C2=A0</p></d=
d><dd id=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-lef=
t:1.5em;margin-right:0px;break-before:avoid;padding:0px"><ul class=3D"gmail=
-normal" style=3D"box-sizing:border-box;padding:0px;margin:0px 0px 0px 4ch;=
list-style-type:&quot;*&quot;"><li class=3D"gmail-normal" id=3D"gmail-secti=
on-6.3-2.1" style=3D"box-sizing:border-box;margin-right:0px;margin-left:0px=
;padding:0px 0px 0px 2ch"><span style=3D"box-sizing:border-box;font-weight:=
bolder">Application-limited Media Flows</span>=C2=A0- if an application cho=
oses RTP as its transport mechanism, the goal will be maximizing the user e=
xperience, not maximizing path bandwidth utilization. If the application is=
, in fact, transmitting media that does not saturate path bandwidth, and pa=
ces its transmission, more heavy-handed congestion control mechanisms (dras=
tic reductions in the sending rate when loss is detected, with much slower =
increases when losses are no longer detected) should rarely come into play.=
 If the application chooses ROQ as its transport, sends enough media to sat=
urate the path bandwidth, and does not adapt its own sending rate, drastic =
measures will be required in order to avoid sustained or oscillating conges=
tion along the path.<a href=3D"https://datatracker.ietf.org/doc/html/draft-=
ietf-avtcore-rtp-over-quic-05#section-6.3-2.1" class=3D"gmail-pilcrow" styl=
e=3D"box-sizing:border-box;color:inherit;text-decoration-line:none;opacity:=
0.01;display:inline-block">=C2=B6</a></li></ul><div><br></div></dd><dd id=
=3D"gmail-section-2-4.18" style=3D"box-sizing:border-box;margin-left:1.5em;=
margin-right:0px;break-before:avoid;padding:0px"><div>[BA] This document pr=
obably isn&#39;t the right place to discuss this, but it is a very big issu=
e that has limited the deployment of the algorithms produced by RMCAT, beca=
use probing was supported by gcc and not in the NADA, SCreAM, etc. In pract=
ice, fixing this problem requires probing controlled by the CC algorithm at=
 the QUIC layer. So far I&#39;m not aware of any QUIC implementations which=
 support this kind of probing.=C2=A0</div></dd><dd id=3D"gmail-section-2-4.=
18" style=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break=
-before:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-si=
zing:border-box;margin:0px"><br></p></dd><dd id=3D"gmail-section-2-4.18" st=
yle=3D"box-sizing:border-box;margin-left:1.5em;margin-right:0px;break-befor=
e:avoid;padding:0px"><p id=3D"gmail-section-2-4.18.1" style=3D"box-sizing:b=
order-box;margin:0px"><a href=3D"https://datatracker.ietf.org/doc/html/draf=
t-ietf-avtcore-rtp-over-quic-05#section-3-3" class=3D"gmail-pilcrow" style=
=3D"box-sizing:border-box;color:inherit;text-decoration-line:none;opacity:0=
.01;display:inline-block">=C2=B6</a>=C2=A0</p></dd></div><p id=3D"gmail-sec=
tion-1.2.3-2" style=3D"box-sizing:border-box;margin-right:0px;margin-left:3=
ch"><br></p><p id=3D"gmail-section-1.2.3-2" style=3D"box-sizing:border-box;=
margin-right:0px;margin-left:3ch"><a href=3D"https://datatracker.ietf.org/d=
oc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.3-2" class=3D"gmail=
-pilcrow" style=3D"box-sizing:border-box;color:inherit;text-decoration:none=
;opacity:0.01;display:inline-block">=C2=B6</a></p></div></div><div id=3D"gm=
ail-ra-quic-feedback" style=3D"box-sizing:border-box;color:rgb(33,37,41);fo=
nt-family:&quot;Noto Sans Mono&quot;,SFMono-Regular,Menlo,Monaco,Consolas,&=
quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:16px=
"></div></div></div>

--000000000000961e96060621cce7--

