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

Mathis Engelbart <mathis.engelbart@tum.de> Tue, 17 October 2023 10:43 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 7A46BC151551 for <avt@ietfa.amsl.com>; Tue, 17 Oct 2023 03:43:43 -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 2M3TUZvhnrsU for <avt@ietfa.amsl.com>; Tue, 17 Oct 2023 03:43:38 -0700 (PDT)
Received: from postout1.mail.lrz.de (postout1.mail.lrz.de [IPv6:2001:4ca0:0:103::81bb:ff89]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B7776C14CEFF for <avt@ietf.org>; Tue, 17 Oct 2023 03:43:37 -0700 (PDT)
Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by postout1.mail.lrz.de (Postfix) with ESMTP id 4S8rDl6mp9zyV0; Tue, 17 Oct 2023 12:43:35 +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=1697539414; bh=GsYGjc2mtEeZkIjBrQ35GcDgXmlNXr br4rgvN1sWByo=; b=dOVmVsfsNVzllbxINfzUhdg161NpS4ztDalSRZC1z6fx+c xoCWdNvQ2ojn2Myt08Q8vHbOmDbLCynhDg+CBjsR1RZu8UDfSziM8lMGhx7muxVe DBjfiigbFu9pcxxCI5u2ustvb8iDY0ES9NBQZEL5nZoTvD1aRgoVSucYq41y7K69 24vkOpwXJdBQVGJlHMzHdJQa2yOM0CANbeNfHr+LmiMuKiq6haB4+o36tadAoQTQ bEeL9UVla22pM93MHzULyCT12nGQGdZHJGs87gWK8Egqr3ziRX1RObHqw+UCpfev MNvceev2n3C+49qXwiP+bIzdxWrmPCAGcCejT4Hg==
X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs51.srv.lrz.de
Received: from postout1.mail.lrz.de ([127.0.0.1]) by lxmhs51.srv.lrz.de (lxmhs51.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id wZLHwbH7dsE5; Tue, 17 Oct 2023 12:43:34 +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 postout1.mail.lrz.de (Postfix) with ESMTPSA id 4S8rDk1F0CzySl; Tue, 17 Oct 2023 12:43:34 +0200 (CEST)
Message-ID: <21617795-8a3c-dc6f-f48b-413dd96736e0@tum.de>
Date: Tue, 17 Oct 2023 12:43:33 +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> <CAOW+2dsJmgxt2axJ3N3BPLT3EC21CLOc_FjEJi6vjUZBs4+CiQ@mail.gmail.com>
From: Mathis Engelbart <mathis.engelbart@tum.de>
In-Reply-To: <CAOW+2dsJmgxt2axJ3N3BPLT3EC21CLOc_FjEJi6vjUZBs4+CiQ@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/KrkfPr1Ux4hL-fOTkEaBNYbRUnc>
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:43:43 -0000

On 10/16/23 20:29, Bernard Aboba wrote:
> Because QUIC is a congestion-controlled transport, as described in
> {{cc-quic-layer}}, and RTP applications can also perform congestion 
> control and
> rate adaptation, as described in {{rate-adaptation-application-layer}},
> implementers should be aware of the possibility that these "nested" 
> congestion
> control loops, where both controllers are managing rate adaptation for 
> the same
> packet stream independently, may deliver problematic performance. 
> Because this
> document is describing a specific case (media transport), we can provide 
> some
> guidance to avoid the worst possible problems.
> 
> [BA] As noted earlier, in RoQ RTP does not perform congestion control, 
> only rate adaptation.
> Congestion control is handled at the QUIC layer. So this paragraph is 
> confusing.

[ME] Sorry, I made a mistake here. I planned to remove the whole 
subsection because the main points from here are now moved to the 
previous subsection. Does that make sense?

> 
> On Mon, Oct 16, 2023 at 11:27 AM Bernard Aboba <bernard.aboba@gmail.com 
> <mailto:bernard.aboba@gmail.com>> 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.
> 
>     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."
> 
> 
>     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>
>