Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: Congestion Control and Rate Control

Mathis Engelbart <mathis.engelbart@tum.de> Tue, 17 October 2023 10:40 UTC

Return-Path: <mathis.engelbart@tum.de>
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 30A15C14CEFF for <avt@ietfa.amsl.com>; Tue, 17 Oct 2023 03:40:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.197
X-Spam-Level:
X-Spam-Status: No, score=-2.197 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, GB_SUMOF=5, NICE_REPLY_A=-0.091, 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_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=tum.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 DB6pQc8iuXC9 for <avt@ietfa.amsl.com>; Tue, 17 Oct 2023 03:40:01 -0700 (PDT)
Received: from postout2.mail.lrz.de (postout2.mail.lrz.de [129.187.255.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 9DE65C15108D for <avt@ietf.org>; Tue, 17 Oct 2023 03:40:01 -0700 (PDT)
Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by postout2.mail.lrz.de (Postfix) with ESMTP id 4S8r8Z6p4kzyXV; Tue, 17 Oct 2023 12:39:58 +0200 (CEST)
Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit key) reason="pass (just generated, assumed good)" header.d=tum.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tum.de; h= content-transfer-encoding:content-type:content-type:in-reply-to :from:from:references:content-language:subject:subject :user-agent:mime-version:date:date:message-id:received:received; s=tu-postout21; t=1697539197; bh=d9SfS7chDcc2cxf08vf5/F9OKEcZVB YeDbIjzOWG0+E=; b=fASr1LUNoMr11xUWn/IvSaDhSIhZln1/8DU8FNye5l32/0 XrDjmDqXUVO1nbAJNcsvkNhUOW60RafJlqggm5WXPagKk1kLTvzLv+V4wpunQDgJ 5Z0UbU8LbylBICCn4nteZgKq6EV3tnQPUIzw39bKIICk3MsVOzH1UmdTpOHAGrdb PUG6kJ8L7QsGpfELHIjPZ+gpiNFfZ3blU6kuaEDo047CtTaHHydtsWRgb7BnVy44 ihHicpsZV5pptheqD81zbYabIWfFYRc1loZCgd/JeKCi2WqhzvKIZSHLOC6k9pCz i6oNyZz9vMy7if4VDysGp+cxIVwwvpJRE62k9Leg==
X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id u9FTBzaYmcp5; Tue, 17 Oct 2023 12:39:57 +0200 (CEST)
Received: from [IPV6:2003:ed:a70f:500b:9ede:8f79:91ff:be78] (p200300eda70f500b9ede8f7991ffbe78.dip0.t-ipconnect.de [IPv6:2003:ed:a70f:500b:9ede:8f79:91ff:be78]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by postout2.mail.lrz.de (Postfix) with ESMTPSA id 4S8r8Y0S9SzyVv; Tue, 17 Oct 2023 12:39:57 +0200 (CEST)
Message-ID: <32bf763c-3d76-e39a-4792-79917a066d6f@tum.de>
Date: Tue, 17 Oct 2023 12:39:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0
Content-Language: en-US
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: IETF AVTCore WG <avt@ietf.org>
References: <CAOW+2dvncSX52BvkbCdpXR8tOMq950XKEu18ZmPF3dGJt+3D+Q@mail.gmail.com> <dbcd27a7-065d-2b60-b78e-40b4df0c153a@tum.de> <CAOW+2dvbvgjW-SH=ob+B2wExxBYok+qeS5e_WR72YDE5sc0ynA@mail.gmail.com> <CAOW+2dtXJNRn4o6Gbba6j+YaJ3KYu6cYUzpQLYR4os4NYNLFZA@mail.gmail.com> <CAOW+2dtJv-DY+aSZ2Hu6GasvcSG8ubMr3RhJOm6_9ZhAQ5eOnw@mail.gmail.com>
From: Mathis Engelbart <mathis.engelbart@tum.de>
In-Reply-To: <CAOW+2dtJv-DY+aSZ2Hu6GasvcSG8ubMr3RhJOm6_9ZhAQ5eOnw@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/edGzKtoWCVdixFA9AUX5vUF_T90>
Subject: Re: [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: Tue, 17 Oct 2023 10:40:07 -0000

On 10/16/23 20:27, Bernard Aboba wrote:
> More feedback:
> 
> 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.
> 
> [BA] Queueing delays are not solely determined by the QUIC congestion 
> control algorithm.  They are also affected by the manner in which RTP 
> and RTCP are transported.
> 
> For example, if the goal is to reduce potential RTCP latency, then 
> transport over QUIC datagrams might make sense.
> Similarly, for audio, transport of RTP over QUIC datagrams (or use of 
> partial reliability with QUIC streams) might be considered.
> 
> So I might rewrite this as follows:
> 
> It is RECOMMENDED that the QUIC implementation use a congestion 
> controller that seeks to minimize queueing delays.  Further 
> recommendations on the transport of RTP and RTCP are contained in 
> Section X.

[ME] I updated this in the pull request.

> If an application cannot access a bandwidth estimation from the QUIC 
> layer, the
> application can alternatively implement a bandwidth estimation algorithm 
> at the
> application layer. Congestion control algorithms for real-time media 
> such as GCC
> {{?I-D.draft-ietf-rmcat-gcc}}, NADA {{?RFC8698}}, and SCReAM 
> {{?RFC8298}} expose
> a `target_bitrate` to dynamically reconfigure media codecs to produce 
> media at
> the rate of the observed available bandwidth. Applications can use the same
> bandwidth estimation to adapt their rate when using QUIC. However, 
> running an
> additional congestion control algorithm at the application layer can have
> unintended effects due to the interaction of two *nested* congestion
> controllers.
> 
> [BA] This paragraph muddies the distinction between congestion control
> at the QUIC layer and rate adaptation at the RTP layer. Since "nested
> congestion" control is undesirable, suggest the following text
> instead:
> 
> "If an application cannot access a bandwidth estimate from the QUIC layer,
> it can attempt to implement a bandwidth estimation algorithm. However, the
> use of nested bandwidth estimates is NOT RECOMMENDED, since this
> can yield unpredictable results.  For example, if the application-derived
> bandwidth estimate is larger than that derived by QUIC, then the application
> will not be able to send at its desired rate, and queuing or loss may 
> occur."

[ME] I don't see how it muddies the distinction. The point of the 
paragraph is to explain that nested congestion control is undesirable. 
If there is no way to get a target bitrate from the underlying 
transport, then one option is to use RTP and RTCP feedback to implement 
GCC/NADA/SCReAM in the application, which may not be a good idea. The 
alternative is to estimate the available bandwidth from the available 
feedback without running a congestion control algorithm like 
GCC/NADA/SCReAM. That is also less desirable than just getting the 
bandwidth estimation from a congestion controller that runs at the QUIC 
layer, but this subsection is specifically about the case where that 
information is not available from the QUIC implementation.

> 
> On Mon, Oct 16, 2023 at 11:07 AM Bernard Aboba <bernard.aboba@gmail.com 
> <mailto:bernard.aboba@gmail.com>> wrote:
> 
>     The text relating to QUIC and RTP is somewhat confusing;
> 
>     Like any other application on the internet, RoQ applications need a
>     mechanism to
>     perform congestion control to avoid overloading the network. QUIC is a
>     congestion-controlled transport protocol. RTP does not mandate a single
>     congestion control mechanism. RTP suggests that the RTP profile defines
>     congestion control according to the expected properties of the
>     application's
>     environment.
> 
>     [BA] When run over QUIC, RoQ has to live with QUIC congestion
>     control; this is not defined by the profile.
>     So this paragraph is confusing.
> 
> 
>     This document discusses aspects of transport level congestion control in
>     {{cc-quic-layer}} and application layer rate control in
>     {{rate-adaptation-application-layer}}. It does not mandate any specific
>     congestion control or rate adaptation algorithm for QUIC or RTP.
> 
>     [BA] Within RoQ, QUIC does not handle rate adaptation, nor does RTP
>     handle congestion control.
>     So this sentence is also confusing.
> 
>     On Mon, Oct 16, 2023 at 11:03 AM Bernard Aboba
>     <bernard.aboba@gmail.com <mailto:bernard.aboba@gmail.com>> wrote:
> 
>         The definition of rate adaptation still has some issues.
> 
>         Rate Adaptation:
>         : A mechanism that adjusts the sending rate of an application in
>         order to
>         maximize the amount of information that is sent to a receiver
>         without causing
>         buffer bloat, when queues build beyond a reasonable amount, or
>         jitter, when
>         interpacket arrival times fluctuate due to queuing delays.  Rate
>         adaptation is
>         one way to respond to sending rate limitations imposed by
>         congestion control
>         algorithms. When a sender has multiple media streams to the
>         receiver, 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.
> 
>         [BA]  This definition still mixes congestion control concepts
>         with rate control ones.
>         It is the congestion control algorithm that estimates the
>         sending rate.  It can
>         take into account loss, as well as queuing effects, depending on
>         the algorithm.
>         The use of "must not" is confusing because it suggests normative
>         language and
>         because a rate set in excess of that set by congestion control
>         cannot cause
>         congestion - the packets will just be queued or dropped.
> 
>         I would suggest simplifying the definition as follows:
> 
>         Rate adaptation
>         A mechanism that adjusts the sending rate of an application in
>         order to
>         respond to sending rate limitations imposed by congestion control
>         algorithms.
> 
> 
> 
> 
>         On Mon, Oct 16, 2023 at 9:38 AM Mathis Engelbart
>         <mathis.engelbart@tum.de <mailto:mathis.engelbart@tum.de>> wrote:
> 
>             Hi,
> 
>             We discussed some of these issues on GitHub and opened a
>             Pull Request to
>             address them:
> 
>             Issue:
>             https://github.com/mengelbart/rtp-over-quic-draft/issues/128
>             <https://github.com/mengelbart/rtp-over-quic-draft/issues/128>
>             Pull Request:
>             https://github.com/mengelbart/rtp-over-quic-draft/pull/134
>             <https://github.com/mengelbart/rtp-over-quic-draft/pull/134>
> 
>             A diff of the documents can be seen here:
> 
>             https://author-tools.ietf.org/api/iddiff?url_1=https://mengelbart.github.io/rtp-over-quic-draft/draft-ietf-avtcore-rtp-over-quic.txt&url_2=https://mengelbart.github.io/rtp-over-quic-draft/fix/128-congestion-and-rate-control/draft-ietf-avtcore-rtp-over-quic.txt <https://author-tools.ietf.org/api/iddiff?url_1=https://mengelbart.github.io/rtp-over-quic-draft/draft-ietf-avtcore-rtp-over-quic.txt&url_2=https://mengelbart.github.io/rtp-over-quic-draft/fix/128-congestion-and-rate-control/draft-ietf-avtcore-rtp-over-quic.txt>
> 
>             We moved some of the points Bernard made into separate
>             issues, for which
>             we will open separate pull requests:
> 
>             https://github.com/mengelbart/rtp-over-quic-draft/issues/135
>             <https://github.com/mengelbart/rtp-over-quic-draft/issues/135>
>             https://github.com/mengelbart/rtp-over-quic-draft/issues/141
>             <https://github.com/mengelbart/rtp-over-quic-draft/issues/141>
> 
>             If no one objects, we will merge pull request #134 by the
>             end of the
>             week to include it in a new submission, which we will make
>             before the
>             deadline next Monday.
> 
>             Best,
>             Mathis
> 
>             On 9/24/23 23:48, Bernard Aboba wrote:
>              > 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.¶
>              >
>             <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.2-3 <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 <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
>             <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.¶
>              >
>             <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.4-2 <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.¶
>              >   
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-2-4.18.1 <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
>             <https://www.rfc-editor.org/rfc/rfc8698>>] and
>              >     Self-Clocked Rate Adaptation for Multimedia (SCReAM)
>             [RFC8298
>              >     <https://www.rfc-editor.org/rfc/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.¶
>              >   
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6-1 <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 <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
>             <https://www.rfc-editor.org/rfc/rfc8298>>] and NADA
>              >     [RFC8698 <https://www.rfc-editor.org/rfc/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
>             <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 <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 <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.¶ <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6-3 <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 <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 <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.¶ <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.1-2 <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
>             <https://www.rfc-editor.org/rfc/rfc8298>>] and NADA [RFC8698
>              >     <https://www.rfc-editor.org/rfc/rfc8698
>             <https://www.rfc-editor.org/rfc/rfc8698>>] algorithms.¶
>              >   
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.1-3 <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 inSection 6.2
>              >   
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#cc-application-layer <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., using[I-D.draft-alvestrand-rmcat-remb <https://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-remb-03 <https://datatracker.ietf.org/doc/html/draft-alvestrand-rmcat-remb-03>>].¶ <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.1-5 <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 <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.¶ <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.2-2 <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 <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, not 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 play. 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.¶
>              >       
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-6.3-2.1 <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.
>              >
>              >
>              >     ¶
>              >   
>               <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-3-3 <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-3-3>>
>              >
>              >
>              > ¶
>              >
>             <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.3-2 <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-rtp-over-quic-05#section-1.2.3-2>>
>              >
>              >
>              > _______________________________________________
>              > Audio/Video Transport Core Maintenance
>              > avt@ietf.org <mailto:avt@ietf.org>
>              > https://www.ietf.org/mailman/listinfo/avt
>             <https://www.ietf.org/mailman/listinfo/avt>
>