Re: [AVTCORE] Response to W3C WebTransport WG Request from IETF 112

Joerg Ott <ott@in.tum.de> Tue, 12 April 2022 16:11 UTC

Return-Path: <ott@in.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 4B9EA3A21B8 for <avt@ietfa.amsl.com>; Tue, 12 Apr 2022 09:11:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.01
X-Spam-Level:
X-Spam-Status: No, score=-2.01 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=in.tum.de
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DSuYNf5jT05i for <avt@ietfa.amsl.com>; Tue, 12 Apr 2022 09:11:47 -0700 (PDT)
Received: from mailout2.rbg.tum.de (mailout2.rbg.tum.de [IPv6:2a09:80c0::202]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 778643A21B5 for <avt@ietf.org>; Tue, 12 Apr 2022 09:11:46 -0700 (PDT)
Received: from mailrelay1.rbg.tum.de (mailrelay1.in.tum.de [IPv6:2a09:80c0:254::14]) by mailout2.rbg.tum.de (Postfix) with ESMTPS id B0EAF4C046E; Tue, 12 Apr 2022 18:11:40 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=in.tum.de; s=20220209; t=1649779900; bh=4PorQLRl7VOGgMgh91yYFdCeoSfQ7myOagU6QHaNiRM=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=MKOEEaJKoc0VOA+R8DqbqDlvtp31k5b8eSZu5/IP1Ia2YaecQF1rzHv4RregbM6bo MBfP+SPY3xaDO9yjU5eB5IsOVwfVqK0Pysg8xf4B2Nj0jrEyvB0ci8hdgL7r9U7PbL wpNaFinJgyV9Zs3j2tIb7jTkPoHOB03efeZhggeGn4JnnRSvIWLvE84jN683C3RphM 7CspII2WqsUTX5sNy7MdIauWFkym1PWKf97cLWF248EQLQPmgOHJdwMAkLLLqu9ce/ v1syjQTi4wFbMLtSZ1uDgZLuNmXweHL0ZUYJXl5khxDgwFSh8l/clUa4ZMJfCUqIMe nWjFv5k5N3BCA==
Received: by mailrelay1.rbg.tum.de (Postfix, from userid 112) id AE30C258; Tue, 12 Apr 2022 18:11:40 +0200 (CEST)
Received: from mailrelay1.rbg.tum.de (localhost [127.0.0.1]) by mailrelay1.rbg.tum.de (Postfix) with ESMTP id 823F9254; Tue, 12 Apr 2022 18:11:40 +0200 (CEST)
Received: from mail.in.tum.de (mailproxy.in.tum.de [IPv6:2a09:80c0::78]) by mailrelay1.rbg.tum.de (Postfix) with ESMTPS id 804CE252; Tue, 12 Apr 2022 18:11:40 +0200 (CEST)
Received: by mail.in.tum.de (Postfix, from userid 112) id 7DAF34A03BB; Tue, 12 Apr 2022 18:11:40 +0200 (CEST)
Received: (Authenticated sender: ott) by mail.in.tum.de (Postfix) with ESMTPSA id 6708C4A00F8; Tue, 12 Apr 2022 18:11:38 +0200 (CEST) (Extended-Queue-bit xtech_zp@fff.in.tum.de)
Message-ID: <9565252a-16a3-55ea-0ff1-c9e64b61afa9@in.tum.de>
Date: Tue, 12 Apr 2022 18:11:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.7.0
Content-Language: en-US
To: Stefan Holmer <holmer@google.com>, Bernard Aboba <bernard.aboba@gmail.com>
Cc: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>, Jonathan Lennox <jonathan.lennox@8x8.com>, Stephan Wenger <stewe@stewe.org>, IETF AVTCore WG <avt@ietf.org>, Colin Perkins <csp@csperkins.org>
References: <CAOW+2dvCh637LfwX23xNuQo8q=GGiDkWSoypYL0XWGV_ERmuDg@mail.gmail.com> <6AC334A4-C1C5-426C-8151-B7F12659C47B@csperkins.org> <CAKKJt-ckZfBecbEtOQpRCok21RZJPQ7wT-uhPz4ozFWSNYi-6g@mail.gmail.com> <4F54EF05-D39E-4E5D-931B-D0F165593492@8x8.com> <94580C1B-1427-4FE3-AD63-00F4DF8369F7@stewe.org> <CA+ag07bAqeSXYp7iYO1MJz+XLPxgJiPH0O89vNTNo0zq64Rvcg@mail.gmail.com> <CAOW+2duaFi+GoqLj8ua49UYriD4tYLBRm8ctp2k=1X8ki4EEdA@mail.gmail.com> <CAEdus3+NMuqTkW1oW6hfBAkT=iqYFOsWasWJXa4s=bETJQLuiw@mail.gmail.com>
From: Joerg Ott <ott@in.tum.de>
In-Reply-To: <CAEdus3+NMuqTkW1oW6hfBAkT=iqYFOsWasWJXa4s=bETJQLuiw@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/u-WM-Kednii_Z1LE2pFHgIIpXeQ>
Subject: Re: [AVTCORE] Response to W3C WebTransport WG Request from IETF 112
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.29
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, 12 Apr 2022 16:11:53 -0000

Agreed.  But you will want to be to collect congestion control cues from
the underlying transport, so you don't have to measure yourself (again).

And if I understood Stephan correctly, he was not arguing that the the
lower layer should have the information about which application would be
run but rather to provide sufficient richness in the API that all kinds
of applications on top.

Jörg

On 12.04.22 14:06, Stefan Holmer wrote:
> I agree with Sergio here, I think for WebTransport to be really useful 
> for RTC there's a need to have app level control of congestion control. 
> Based on experience from libwebrtc, the congestion control is constantly 
> being improved, and I think it's far from a solved problem. To allow for 
> RTC apps on WebTransport to be competitive I think they'd benefit a lot 
> from being able to innovate on the congestion control side.
> 
> On Mon, Apr 11, 2022 at 10:08 PM Bernard Aboba <bernard.aboba@gmail.com 
> <mailto:bernard.aboba@gmail.com>> wrote:
> 
>     Sergio said:
> 
>     "I don't think that the webtransport api and the browser stack
>     should have this information, it is completely up to the application
>     to control what is the behaviour based on the current bw estimation.
> 
>     Moreover, I doubt that the webtransport stack could provide a valid
>     bw estimation usable by the app at all.
> 
>     IMHO the bwe needs to be calculated at the js app level and just
>     needs the quic cc not mess too much and if possible provide the
>     reception time stats for the sent packets"
> 
>     [BA] It is left to the Javascript application to decide the
>     transport mode, audio/video multiplexing approach, loss recovery
>     strategy and mechanism for controlling the encoder rate.  The
>     WebTransport API doesn't know and doesn't care whether the
>     transported media is G711, G722, Opus, VP8/VP9, H.264, AV1, etc.
>     Currently there is no priority support, so it's up to the
>     application how to apportion the bandwidth between audio and video
>     streams.
> 
>     The current WebTransport stats are very bare bones:
>     https://w3c.github.io/webtransport/#web-transport-stats
>     <https://w3c.github.io/webtransport/#web-transport-stats>
>     https://w3c.github.io/webtransport/#web-transport-stats%E2%91%A0
>     <https://w3c.github.io/webtransport/#web-transport-stats%E2%91%A0>
> 
>     Some stream stats are in the works (see:
>     https://github.com/w3c/webtransport/pull/395
>     <https://github.com/w3c/webtransport/pull/395>) but they also aren't
>     elaborate (at least compared with WebRTC-stats).
> 
>     You'll notice there is no bandwidth estimate, nor is any info
>     provided on acknowledgements or reception times.  Since a Javascript
>     application using the WebTransport API is not integrated with the
>     QUIC stack, info on ACKs was not considered relevant since the
>     application could not be presumed to have received a datagram just
>     because it was ACK'd at the QUIC layer; the datagram could have been
>     subsequently dropped in the browser datagram reception queue after
>     being ACK'd.  Similarly, in the browser, the reception time doesn't
>     reflect the total one-way delay because there are additional delays
>     and queues both on the sender and receiver side.
> 
> 
> You could imagine a WebTransport that had a circuit-breaker style CC and 
> either exposed feedback only about the send and arrival time of each 
> packet to the application, without any guarantees of whether the 
> application on the other end actually got hold of the packet in the end. 
> With a circuit-breaker style CC you could also leave it to the app to 
> handle that feedback/signaling entirely in the app-layer, at the cost of 
> additional overhead.
> 
> 
> 
>       However, the receiver can calculate the goodput on  streams and
>     datagram flows and provide this info to the sender to help with
>     encoder rate adaptation.
> 
>     On Mon, Apr 11, 2022 at 12:10 PM Sergio Garcia Murillo
>     <sergio.garcia.murillo@gmail.com
>     <mailto:sergio.garcia.murillo@gmail.com>> wrote:
> 
> 
> 
>         El lun, 11 abr 2022 18:19, Stephan Wenger <stewe@stewe.org
>         <mailto:stewe@stewe.org>> escribió:
> 
>             Inline in blue.____
> 
>             S.____
> 
>             __ __
> 
>             __ __
> 
>             On 4/11/22, 08:24, "avt on behalf of Jonathan Lennox"
>             <avt-bounces@ietf.org <mailto:avt-bounces@ietf.org> on
>             behalf of jonathan.lennox@8x8.com
>             <mailto:jonathan.lennox@8x8.com>> wrote:____
> 
>             __ __
> 
>             __ __
> 
>             __ __
> 
>                  > On Apr 11, 2022, at 1:34 AM, Spencer Dawkins at IETF
>             <spencerdawkins.ietf@gmail.com
>             <mailto:spencerdawkins.ietf@gmail.com>> wrote:____
> 
>                  > ____
> 
>                  > But even if we don't need to choose between
>             media-oriented congestion controllers, we would need a QUIC
>             extension to allow us to say "we're doing media, so don't
>             use the congestion controllers you might use for non-media
>             traffic". ____
> 
>                  > ____
> 
>                  > I suspect the QUIC working group would be a fine
>             place to work on that extension (and if we did it anywhere
>             else, QUIC would either ask, or be asked, to review that
>             work anyway). ____
> 
>             __ __
> 
>                  It’s not clear to me that you need a *protocol*
>             extension to signal this?  Monolithically, a sender knows
>             that it’s sending media, and can choose its congestion
>             control algorithm appropriately.____
> 
>             __ __
> 
>                  You definitely would need *API* signaling to indicate
>             from the application to the QUIC stack that media is being
>             sent, and thus an appropriate low-latency congestion
>             controller should be chosen.  This is absolutely relevant to
>             the W3C API, and thus should probably be communicated in the
>             liaison statement response.____
> 
>             __ __
> 
>             Right.  And ideally, that API signaling would be powerful
>             enough to differentiate between different media and their
>             requirements.  For example:____
> 
>             -G711 audio has zero elasticity; if CC were to kick in, the
>             realistic choices are to ignore the CC, or terminate the
>             session.  No middle ground. ____
> 
>             -Multi-resolution pre-coded video (think DASH) has some
>             flexibility, but bitrate adjustment can take many hundred
>             milliseconds to seconds.____
> 
>             -a software-based real-time video encoder can be built to
>             have a lot of flexibility, on very short notice—but, the
>             application/user may not like the encoder to exercise that
>             flexibility.  For example, broadcast contribution
>             applications and their encoders would not want to start
>             skipping frames, go down with the resolution, or too far up
>             with the QP, even if that would make the CC happy.  Video
>             conferencing, OTOH, could cope with all of that, up to a
>             certain pain-point.
> 
> 
> These are good examples of why CC for media (and RTC in particular) is 
> complicated, and probably one of the reasons why (AFAIK) no RTC CC 
> implementations that use off-the-shelf algorithms or interfaces.
> 
> You may want to (try to) be smart about how you evaluate whether the 
> bandwidth of the connection allows you to turn on a higher resolution 
> video stream, to avoid having to waste bits on padding data. You may not 
> want to saturate the connection at all times to make sure the CC 
> operates correctly. In fact, you may want to make sure to only probe for 
> higher bandwidth when you feel like it's "safe" to do so from a media 
> quality view. This would likely require some closer interaction with the CC.
> 
> 
>         I don't think that the webtransport api and the browser stack
>         should have this information, it is completely up to the
>         application to control what is the behaviour based on the
>         current bw estimation.
> 
>         Moreover, I doubt that the webtransport stack could provide a
>         valid bw estimation usable by the app at all.
> 
>         IMHO the bwe needs to be calculated at the js app level and just
>         needs the quic cc not mess too much and if possible provide the
>         reception time stats for the sent packets.
> 
> 
>         Best regards
>         Sergio
>         _______________________________________________
>         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>
> 
>     _______________________________________________
>     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>
>