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

David Schinazi <dschinazi.ietf@gmail.com> Thu, 02 June 2022 15:48 UTC

Return-Path: <dschinazi.ietf@gmail.com>
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 645DDC14F72E for <avt@ietfa.amsl.com>; Thu, 2 Jun 2022 08:48:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, 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=gmail.com
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 xnfDBGp_a__w for <avt@ietfa.amsl.com>; Thu, 2 Jun 2022 08:48:21 -0700 (PDT)
Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 A93A8C14F718 for <avt@ietf.org>; Thu, 2 Jun 2022 08:48:21 -0700 (PDT)
Received: by mail-pj1-x1032.google.com with SMTP id u12-20020a17090a1d4c00b001df78c7c209so9791140pju.1 for <avt@ietf.org>; Thu, 02 Jun 2022 08:48:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SXrmQAS0vKVCxB7AeKWIL3/5IBWEoxiovjUplDSmpuM=; b=QyT2n1DTr9jfWHwOVcYBswd/A2XmpR4Chgx4bpD+RbJ5yeFNh3cf4BNLLKSanlZ7KB XC7rvOquM8ZtMw/E3eepPbnAujLEacnsW/wh4VmzkTQWi6aH1P/tcxTU5Mf6BKjpIJIF K7keJjYK+/JKzeRqqbM+ZtmuOpnDAtCTmbH5x0yIpmfWeS1IKONm/5iNFFJEtgf8CweS dOAm9kDdMTP2BF0Km5fjRZmMC07Hrvo4okCx6DATmi0JuxEd+PsOuUYL9PXZoqjgZl3n SNA3+t90lG4rgfBCkhhcven4Bdy0ErZXa0U3HrYxMxOqWRR4eO2+ngWy0slv06tFePLK YTuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SXrmQAS0vKVCxB7AeKWIL3/5IBWEoxiovjUplDSmpuM=; b=SuXPw1671l02+ARQJr8knJwJtcO+6QBtn5lOVNzcH+qScimqJ30A58M2Q9qcA3c1MA 3hejGy93FXMj1eEN2mc+Or7jZURKPYXvTfe1fx8/52HHgEGZpT2DdHn36pyo16j9O49J 6VN7AQDcHSfq8ujI4RfhOAl+U/ZNGMjvU5vyjKOV5LVHjh+CUkABp96Ud4sliHxvBC1R x9vVa3RcSEaWweUCsOw6DWI7f31OyZgXBwAWmdKDL2qyBCy2lIwo3RLfCCR7xD6V/Je1 MsXpg6T33ivXcC0ApZBOHZGa4r27LjbmD1J7kSX8P7TjQ5lWYnD92burFlBMxebtq+lp W60w==
X-Gm-Message-State: AOAM533WK7sXzmW8bFKtcGpwbbNVEfN0W/AMPh1iEET2kfkrWeCPMxpn +QhskGtg4ht0GYshgQc5fxZ/ISb/OCfVZfSGx6k=
X-Google-Smtp-Source: ABdhPJwoqp2u2UTZtPYwjiDPeO6QstoKSsk4yvEOD6Erqxo62lPzqAtE0iRrJNN5fL2LsOBQdlz0W/9WTDPIaMZWDM4=
X-Received: by 2002:a17:90b:3884:b0:1df:d9d5:314b with SMTP id mu4-20020a17090b388400b001dfd9d5314bmr41700009pjb.221.1654184900905; Thu, 02 Jun 2022 08:48:20 -0700 (PDT)
MIME-Version: 1.0
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> <1fcdc9a3-027a-a675-d850-84777d881c9a@in.tum.de> <CALGR9oYELJh9_vcaXSON81U_k6qAUA-=gSMcU0xNRsBaszWW3A@mail.gmail.com>
In-Reply-To: <CALGR9oYELJh9_vcaXSON81U_k6qAUA-=gSMcU0xNRsBaszWW3A@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Thu, 02 Jun 2022 08:48:09 -0700
Message-ID: <CAPDSy+7sFJKs2-oNqZwPyap83bMOJ-di_EfBFMr0rs=6Opa=FA@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: Joerg Ott <ott@in.tum.de>, Bernard Aboba <bernard.aboba@gmail.com>, IETF AVTCore WG <avt@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000069509705e078efcb"
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/VSkKEEajBgZ4RI7S4MlF328YUCE>
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 15:48:25 -0000

I just realized why there is a disconnect here: I misunderstood something
initially from Bernard's request and Bernard only forwarded part of my
initial message so it didn't become apparent. I'm pasting the initial
exchange further down.
Based on Bernard's question, I thought that draft-engelbart-rtp-over-quic
was trying to multiplex RTP and WebTransport over the same QUIC connection.
That's my mistake, the draft isn't trying to do that. That wouldn't work
because of the ALPN points made above, but that's not what you're trying to
do in the first place.
If instead, you want to run RTP over WebTransport, then that's possible
from a protocol perspective, but you'd need an implementation of
WebTransport that would provide you more detailed information than what is
provided to Javascript today.

Apologies for the confusion,
David

=========

On Sun, May 22, 2022 at 1:30 PM Bernard Aboba <bernard.aboba@gmail.com>
wrote:

> [BA] Thank you for your review of RFC 7983bis.
>

[DS] Happy to help!

[BA] Could you have a brief look at  RTP over QUIC (ietf.org)
> <https://www.ietf.org/id/draft-engelbart-rtp-over-quic-03.html>? This
> draft is going to be considered for adoption in AVTCORE WG, and it would be
> desirable for RTP over QUIC to also be usable with WebTransport.
>

[DS] I quickly skimmed this and I think the authors misunderstand a
fundamental point: you cannot multiplex two separate application protocols
over one QUIC connection. During the QUIC handshake, an ALPN token is
negotiated and that protocol is the only one in use for the lifetime of
this connection. 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

[BA] Things that might be worth looking at include the use of the flow
> identifier (which they are assuming can be used by an application to
> differentiate RTP sessions as well as to differentiate data from media).
>

[DS] 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.

David

=========


On Thu, Jun 2, 2022 at 2:48 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hi Joerg,
>
> Responding to one aspect in line:
>
>
> On Thu, 2 Jun 2022, 09:40 Joerg Ott, <ott@in.tum.de> wrote:
>
>> [ 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.
>>
>
> I'd disagree a little with that interpretation. The ALPN token, by my
> operating knowledge, denotes the specific pairing of an application
> protocol bound to a secure protocol. For instance, there isn't a generic
> "http" ALPN that can be used across TLS and QUIC, but rather each version
> of HTTP describes a wire format and how it is expected to be mapped on to
> the layer beneath it. That gives us "h2" and "h3", that are used
> unambiguously.
>
> One might argue that it should be obvious what the app:security binding is
> at the point when the ALPN extension is exchanged - the security handshake.
> However, we've unfortunately decided in the IETF to use ALPN tokens in
> other places outside the handshake, such as the Alt-Svc header, the SVCB
> [2], the ALPN header [3], and possibly more.
>
>
>> 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.
>>
>
> QUIC requires authenticated application protocol negotiation. So even if
> you have an out of band mechanism like SDP, each QUIC handshake needs
> something in band to support that.
>
> For the reasons I set out above, I would discourage people from defining
> new generic ALPN tokens, or to overload an existing one to cover usage of
> an application protocol over QUIC. For example, avoid using "rtp", "webrtc"
> etc to mean anything special if it were seen in a QUIC handshake.
>
> Where we do agree though is that an ALPN token can be used to clearly
> express an application mapping over QUIC that allows multiple concurrent
> application protocols in the same QUIC connection. The document defining
> that ALPN token is then required to explain exactly how that wire format
> works.
>
>
>
>> We do not expect a particular QUIC library to infer any semantics or
>> protocol behavior from the ALPN used.
>>
>
> I agree here, a transport library has no business snooping on that.
>
>
>> 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
>>
>
>
> Cheers
> Lucas
>
> [1] https://www.rfc-editor.org/rfc/rfc7838.html
> [2]
> https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-10.html#section-7.1
> [3] https://datatracker.ietf.org/doc/html/rfc7639
>
>>