Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: Congestion Control and Rate Control
Mathis Engelbart <mathis.engelbart@tum.de> Mon, 16 October 2023 16:38 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 A9D78C151520 for <avt@ietfa.amsl.com>; Mon, 16 Oct 2023 09:38:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.198
X-Spam-Level:
X-Spam-Status: No, score=-2.198 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_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 JN6R7ohsb2fl for <avt@ietfa.amsl.com>; Mon, 16 Oct 2023 09:38:47 -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) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 15F7EC15107E for <avt@ietf.org>; Mon, 16 Oct 2023 09:38:46 -0700 (PDT)
Received: from lxmhs51.srv.lrz.de (localhost [127.0.0.1]) by postout1.mail.lrz.de (Postfix) with ESMTP id 4S8N8y1pkGzyVC; Mon, 16 Oct 2023 18:38:42 +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=1697474321; bh=aGoNaBrFlBEv+5u0o99RsQgDqwY1aY PDOtX5OCU7ZII=; b=WPP01Qq7P6+RPfJiUstP5U3coike5mSKkpDmkZiB8paNl6 l8XvuCr8FrDp5/1eoCSDLzbbo1I6jUHaMkvhRRDxtRk3n29m6U2SWXqs/ANDY0Zy 7XsPvYFKKsXn9gU0xTiVA13KNjBr6Vx88X2jyaog6R0XxUK+L5zfhpEOhEXGOZCw 096ZGazujdULlcxEIYQ4Syz8OStFmmQ/MheehgZL6qOl3+xAyPBOmTRQ5PM3A1eI JwFvdto3V1MWlH/vLlv9c17gdiwetjGrSsCrmWmUgm/K2z/rMTZsSP08/i9x5COZ DbPW5f1Iul+wmcO80WlDNfMoDXZJg8I1ca7RM3YA==
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 dOzUOAd1nyNg; Mon, 16 Oct 2023 18:38:41 +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 4S8N8w34vQzyWV; Mon, 16 Oct 2023 18:38:40 +0200 (CEST)
Message-ID: <dbcd27a7-065d-2b60-b78e-40b4df0c153a@tum.de>
Date: Mon, 16 Oct 2023 18:38:39 +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>, IETF AVTCore WG <avt@ietf.org>
References: <CAOW+2dvncSX52BvkbCdpXR8tOMq950XKEu18ZmPF3dGJt+3D+Q@mail.gmail.com>
From: Mathis Engelbart <mathis.engelbart@tum.de>
In-Reply-To: <CAOW+2dvncSX52BvkbCdpXR8tOMq950XKEu18ZmPF3dGJt+3D+Q@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/ryrDX4cYidTZ1pYTiQfY6Y6bPIU>
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: Mon, 16 Oct 2023 16:38:52 -0000
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 Pull Request: 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 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/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> > > [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.¶ > <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> > > > [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.¶ > <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.¶ <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.¶ <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.¶ > <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>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-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.¶ <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, 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> > > > [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-1.2.3-2> > > > _______________________________________________ > Audio/Video Transport Core Maintenance > avt@ietf.org > https://www.ietf.org/mailman/listinfo/avt
- [AVTCORE] draft-ietf-avtcore-rtp-over-quic: Conge… Bernard Aboba
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Mathis Engelbart
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Bernard Aboba
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Bernard Aboba
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Bernard Aboba
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Bernard Aboba
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Mathis Engelbart
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Mathis Engelbart
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Mathis Engelbart
- Re: [AVTCORE] draft-ietf-avtcore-rtp-over-quic: C… Mathis Engelbart