Re: [AVTCORE] Review of draft-engelbart-rtp-over-quic (David Schinazi)

Joerg Ott <ott@in.tum.de> Thu, 02 June 2022 08:40 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 0E617C14F722 for <avt@ietfa.amsl.com>; Thu, 2 Jun 2022 01:40:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.885
X-Spam-Level:
X-Spam-Status: No, score=-8.885 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=-1.876, RCVD_IN_DNSWL_HI=-5, 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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wj6mSiLYDm2J for <avt@ietfa.amsl.com>; Thu, 2 Jun 2022 01:40:29 -0700 (PDT)
Received: from mailout1.rbg.tum.de (mailout1.rbg.tum.de [IPv6:2a09:80c0::201]) (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 8DF46C14F718 for <avt@ietf.org>; Thu, 2 Jun 2022 01:40:21 -0700 (PDT)
Received: from mailrelay1.rbg.tum.de (mailrelay1.in.tum.de [IPv6:2a09:80c0:254::14]) by mailout1.rbg.tum.de (Postfix) with ESMTPS id 317C9B22; Thu, 2 Jun 2022 10:40:18 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=in.tum.de; s=20220209; t=1654159218; bh=q6bxk9WeTdC2I4WHzHwArBA0aP32kfR/bFjD6AYExf0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=l1UU3fz7V77EO0zexMKzNLNwTAxS/OwElEZ++mzI+mt1oSD1MkBetcAJrmuIVvlQt B/K8aUunjmL8WG0RelqK/TXL+kTm5Ph37+kGPR/Ep1wV5S6dNNOE4IB+d1t0cs4iKM Sg+kyxJW/UIi+P09NgXMQwL3lwXbL9G7zsjj0Nn8A3gRXmnoKYnLAUfDNEFraYvZrg GJ5p5A73UzcIN62pFZ9iPUNAjL2bvmG9NauIjlANMCn2F/HlgycbXWLtr1TafPnE5s /hBw5BIPk/V8tVPwpqUt/ioLDgCNbY0lbIPqxqui8StY6PtXsSgwEw5DoUcDrE8nDC FiZefaPNXjUsg==
Received: by mailrelay1.rbg.tum.de (Postfix, from userid 112) id 2E03D28A; Thu, 2 Jun 2022 10:40:18 +0200 (CEST)
Received: from mailrelay1.rbg.tum.de (localhost [127.0.0.1]) by mailrelay1.rbg.tum.de (Postfix) with ESMTP id 014C728C; Thu, 2 Jun 2022 10:40:18 +0200 (CEST)
Received: from mail.in.tum.de (vmrbg426.in.tum.de [131.159.0.73]) by mailrelay1.rbg.tum.de (Postfix) with ESMTPS id F3011286; Thu, 2 Jun 2022 10:40:17 +0200 (CEST)
Received: by mail.in.tum.de (Postfix, from userid 112) id F04184A0220; Thu, 2 Jun 2022 10:40:17 +0200 (CEST)
Received: (Authenticated sender: ott) by mail.in.tum.de (Postfix) with ESMTPSA id 457F74A01E7; Thu, 2 Jun 2022 10:40:16 +0200 (CEST) (Extended-Queue-bit xtech_mc@fff.in.tum.de)
Message-ID: <1fcdc9a3-027a-a675-d850-84777d881c9a@in.tum.de>
Date: Thu, 02 Jun 2022 10:40:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.9.1
Content-Language: en-US
To: David Schinazi <dschinazi.ietf@gmail.com>, Bernard Aboba <bernard.aboba@gmail.com>
Cc: Mathis Engelbart <mathis.engelbart@tum.de>, IETF AVTCore WG <avt@ietf.org>
References: <CAOW+2duZuSb_w2jAARmPYq0O0b4fYGtMtbPWAYxZDf8r-q=Cng@mail.gmail.com> <a75e4d70-b11e-d5a0-ce19-ce90bf8f2a84@in.tum.de> <CALGR9oY2jQuKvE_ES=_kb7XoQ6KCoxJtoyc0VdAZ4P-L4QT3Gg@mail.gmail.com> <CAPDSy+5Yud2rU4-0jA2UnuKwaX6TGiof6QHECDvaRosHd1sdsA@mail.gmail.com> <CAOW+2dsx-+jFiUgoAE3Rx1EB_f+=stXo9X2xeXw111jrR9Jn_Q@mail.gmail.com> <CAPDSy+4hvJ7icFtT3sgjAs4SBEKQ9E1LEDOYZ2fLbi60W_=+sg@mail.gmail.com> <CAOW+2dui5pBbyvxW+Af9AWjbKc7ROyZSBmt0MuKGSk0-oYzg6Q@mail.gmail.com> <CAPDSy+4COC-yyn0eDrYKYiDD6nCFUHA6kR+8FRzcKT82xA-8Og@mail.gmail.com>
From: Joerg Ott <ott@in.tum.de>
In-Reply-To: <CAPDSy+4COC-yyn0eDrYKYiDD6nCFUHA6kR+8FRzcKT82xA-8Og@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/EmnJgdCbxNXeKK3la4AWrsfl970>
Subject: Re: [AVTCORE] Review of draft-engelbart-rtp-over-quic (David Schinazi)
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: Thu, 02 Jun 2022 08:40:34 -0000

[ oops, sorry, David, my Thunderbird autocompletion seems to have too 
good a memory :-) ]

Let us try to disentangle this so that we don't accidentally talk past 
each other.

A quick note before I continue: the main point of the discussion right
now appears to be about multiplexing RTP and non-RTP sessions within a
single QUIC connection and what the implications of this would be.  We
don't feel strongly about going either way, we just try to understand
what is feasible and what is not.  And then write this down clearly in
line with what the WG wants.

The main contention in this thread appears to be about if it would be
even possible to signal a mix of protocols on top of a single QUIC
connection because the ALPN would need to identify which protocol to
run on top.

Now:

It is well understood that an ALPN is needed to identify a connection's
target "instance" and thus indicate the protocol to be carried on top,
be it h3 or something else.

The reason I brought up the -- admittedly simplistic -- p2p vs. c-s
dichotomy is that, in client-server interactions, we signal the protocol
to be used with the initial contact to the server in the first packet we
send.  That is, the semantics of the application protocol are derived
exclusively from the (IANA-registered or otherwise uniquely defined
ALPN).

In contrast, in the p2p real-time multimedia case, we usually do have an
established signaling channel (SIP/SDP, HTTPS/SDP, whatever) via which
the two endpoint negotiate which transports they want to use and how to
use those.  That is, a complex SDP specification could clearly determine
how many QUIC (or other) connections to open and how to use those and it
could also define which ALPN to use for this very setup.  Whether this
would be ephemeral ALPN or whether one would define (just for the sake
of example) "rtp" (for a single RTP session), "rtp-mux" (for multiple
multiplexed RTP sessions), and "rtp-udp-mux" (for mixed RTP and non-RTP
sessions) would be up to be defined.  So, we could have well-defined
ALPNs if needed and we would of course expect the QUIC library to ensure
that ALPNs are checked and handled properly.  Your favorite quic_bind ()
would be parameterized accordingly.  It seems that RFC 8833 defines an
ALPN ("webrtc") for both RTP and data channels (in this case muxed in
DTLS records) as one example for multiple protocols on top.

We do not expect a particular QUIC library to infer any semantics or
protocol behavior from the ALPN used.

I may be missing the obvious but this wouldn't seem to be at odds with
what both Lukas and you said.

Finally about the tight integration: the draft doesn't assume but allows
such.  You may have an integrated design, you may have a very expressive
"API" to gain access to QUIC stats (as we are gradually describing in
more detail), or you may have a fairly standard QUIC library without
such access and do your own RTP/RTCP stats on top.

Jörg


On 01.06.22 00:14, David Schinazi wrote:
> Understood. However this "tight integration" does not impact the choice 
> of ALPN. There's nothing preventing a higher layer protocol from 
> reaching into the depths of its underlying transport, no matter what 
> state of affairs might be prefered by OSI :-)
> 
> On Tue, May 31, 2022 at 3:08 PM Bernard Aboba <bernard.aboba@gmail.com 
> <mailto:bernard.aboba@gmail.com>> wrote:
> 
>     David said:
> 
>     "I think HTTP/3 vs P2P is a false dichotomy, there's nothing
>     preventing a browser from implementing a QUIC server stack and an
>     HTTP/3 server stack."
> 
>     [BA] Correct - but draft-engelbart-rtp-over-quic seems to be
>     assuming "tight integration" between QUIC and the RTP stack (e.g. so
>     that QUIC ACK info can be used rather than RTCP messages). The
>     WebTransport API (regardless of what protocol might run underneath)
>     doesn't provide that ACK info because in a browser an ACK at the
>     QUIC layer wouldn't necessarily imply reception by the application.
> 
>     On Tue, May 31, 2022 at 5:53 PM David Schinazi
>     <dschinazi.ietf@gmail.com <mailto:dschinazi.ietf@gmail.com>> wrote:
> 
>         I think HTTP/3 vs P2P is a false dichotomy, there's nothing
>         preventing a browser from implementing a QUIC server stack and
>         an HTTP/3 server stack.
>         David
> 
>         On Tue, May 31, 2022 at 2:49 PM Bernard Aboba
>         <bernard.aboba@gmail.com <mailto:bernard.aboba@gmail.com>> wrote:
> 
>             David said:
> 
>             "The considerations I wrote that Bernard forwarded above
>             applied to any use of QUIC, be it client-to-server or p2p,
>             as QUIC does not differentiate between the two. As Lucas
>             points out, if you want to use QUIC you have to pick one
>             ALPN per connection."
> 
>             [BA] Yes, there are ALPN considerations here.
> 
>             There are also some other considerations that could differ
>             between client-to-server (WebTransport) and P2P QUIC
>             scenario. The RTP over P2P QUIC use case enables tighter
>             integration with the QUIC stack than would RTP over
>             WebTransport, where WebTransport is natively implemented in
>             the browser and RTP is provided in a Javascript or WASM
>             library.  In the RTP over WebTransport case, QUIC internals
>             (such as ACK info) might not be easily accessible, which
>             might make it necessary to duplicate info at the QUIC and
>             RTCP layers.
> 
>             David said:
> 
>             "If you want to simultaneously run RTP-over-QUIC and
>             WebTransport, you have two options:
> 
>             1) define RTP-over-HTTP/3. That way you have one QUIC
>             connection with ALPN=h3 and then you can run
>             as many RTP or WebTransport sessions on top.
>             2) use two distinct QUIC connections, one for RTP and one
>             for WebTransport-over-HTTP/3.
>             They can be on the same socket and demultiplexed using the
>             QUIC connection ID
> 
>             If you go the RTP-over-QUIC route, then the document that
>             defines it gets to define what the payload of
>             datagram frames contains. They can choose to use a flow
>             identifier and can define its semantics to
>             be whatever they want. They can also skip flow identifiers
>             and use something else instead."
> 
>             [BA] Within WebRTC, we have seen most applications choose to
>             multiplex everything (STUN/TURN, DTLS, RTP, RTCP, audio,
>             video, data) on a single port. So I suspect there will be
>             interest in doing the same thing over QUIC (regardless of
>             whether we are talking about P2P QUIC or WebTransport).
> 
>             There is a debate about how best to multiplex audio/video
>             with data exchange (e.g. whether it is best to use two QUIC
>             connections multiplexed by connection ID, possibly with
>             distinct CC algorithms, or a single QUIC connection with one
>             algorithm).  Having a single connection with an appropriate
>             congestion control algorithms (e.g. SCReaM or Google CC) can
>             provide greater fairness between file transfers and media.
>             This would make a file transfer done simultaneously with
>             audio/video take longer, but that's probably what you want,
>             as opposed to having the file transfer using NewReno or BBR
>             starving media using a low-latency CC algorithm.
> 
>             That seems to argue for defining RTP-over-HTTP/3 as well as
>             RTP over P2P QUIC.  In the RTP-over-HTTP/3 case, RTP would
>             be a JS library running in a browser over WebTransport and
>             optimizations that might be
>             possible with RTP over P2P QUIC (such as use of QUIC ACKs
>             instead of RTP NACK) might not be possible.
> 
>             In either scenario, there is also the question of how you
>             distinguish data from RTP/RTCP that arrives in a
>             WebTransport Datagram or Message/Stream. One way to do this
>             (for WebTransport or P2P QUIC) might be by looking at the
>             first byte.
> 
>             On Tue, May 31, 2022 at 4:44 PM David Schinazi
>             <dschinazi.ietf@gmail.com <mailto:dschinazi.ietf@gmail.com>>
>             wrote:
> 
>                 [ replacing my email address, as I left Apple more than
>                 3 years ago :-) ]
> 
>                 The considerations I wrote that Bernard forwarded above
>                 applied to any use of QUIC, be it client-to-server or
>                 p2p, as QUIC does not differentiate between the two. As
>                 Lucas points out, if you want to use QUIC you have to
>                 pick one ALPN per connection.
> 
>                 David
> 
>                 On Wed, May 25, 2022 at 12:33 PM Lucas Pardue
>                 <lucaspardue.24.7@gmail.com
>                 <mailto:lucaspardue.24.7@gmail.com>> wrote:
> 
>                     Hi Joerg, David,
> 
>                     I don't have a strong stake in the upper L7 matters
>                     but FWIW
> 
>                     RFC 9000 section 7 says: "The cryptographic
>                     handshake MUST provide .. authenticated negotiation
>                     of an application protocol (TLS uses
>                     Application-Layer Protocol Negotiation (ALPN) [ALPN
>                     <https://www.rfc-editor.org/rfc/rfc9000.html#ALPN>]
>                     for this purpose)"
>                     RFC 9001 section 8.1 says: "QUIC requires that the
>                     cryptographic handshake provide authenticated
>                     protocol negotiation. TLS uses Application-Layer
>                     Protocol Negotiation [ALPN] to select an application
>                     protocol. Unless another mechanism is used for
>                     agreeing on an application protocol, endpoints MUST
>                     use ALPN for this purpose."
> 
>                     The QUIC implementations I'm familiar with will
>                     enforce these requirements. So for anyone writing an
>                     application mapping that expects interop, that
>                     really do need to explicitly define _an_ ALPN
>                     identifier OR state what exactly the alternative
>                     mechanism is.
> 
>                     Cheers,
>                     Lucas
> 
>                     _______________________________________________
>                     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>
> 
> 
> _______________________________________________
> Audio/Video Transport Core Maintenance
> avt@ietf.org
> https://www.ietf.org/mailman/listinfo/avt