Re: [rtcweb] JSEP-bis and WebRTC-Extensions Section 5.2

Sean Turner <sean@sn3rd.com> Mon, 05 June 2023 15:34 UTC

Return-Path: <sean@sn3rd.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 45BC2C15270E for <rtcweb@ietfa.amsl.com>; Mon, 5 Jun 2023 08:34:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 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, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=sn3rd.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 ucU44wNQgbeJ for <rtcweb@ietfa.amsl.com>; Mon, 5 Jun 2023 08:34:53 -0700 (PDT)
Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com [IPv6:2607:f8b0:4864:20::f30]) (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 A20FEC15270B for <rtcweb@ietf.org>; Mon, 5 Jun 2023 08:34:53 -0700 (PDT)
Received: by mail-qv1-xf30.google.com with SMTP id 6a1803df08f44-6260a2522d9so40371556d6.3 for <rtcweb@ietf.org>; Mon, 05 Jun 2023 08:34:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sn3rd.com; s=google; t=1685979292; x=1688571292; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=2x8SyaMJbqODwpRiYkT0ES55Mh+iTb0P+hiIRwPYqrE=; b=T6Hhq5slQCLVw5tmGQwwCI18bHVrq0gVp87iHxRsKLZO7Gsl0Sf1Su6X2B6aURuEIC mnuA7i2bkmOg1fkv+H9ONlIhl5joFWth6AoJibts4GI/ycgQeWPuAXNe0ckpIk+EzFDo gWLn1KFyipNhB7JESB20wayhZY+t0eIb3B2JA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685979292; x=1688571292; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2x8SyaMJbqODwpRiYkT0ES55Mh+iTb0P+hiIRwPYqrE=; b=bVvJA+inqtuELZeNog0UFJ9OVbsKfSA6pEnW99tcObAQH/GNmjU+orvsNnSdG7AuyP KjOEZmVxYbuLT5VDC5u8aTlqXspv6G8GHmAcZFa633Wx8we65zjx3E0lbPSDntF6Ajq3 00oIhhJ1zRdfaFR32Nb8A60PZv5z+HuvAhKwhgV1U8mVHIda3e72g6a2gltnb9nceM/5 H24aFKghXGiBA05hiGP0Bt8fkrUv2eoF98X+nWO9stnsERzHIrj8M6qBen1oN/K6VE5o +IQ7s98CFLbuHLzX667qEJ5OC/w8MMut9W2MkjK6jFZQkFCbXE7kF1Ne3RItmWI7luZm kbBQ==
X-Gm-Message-State: AC+VfDyR2smqc9xOLY8Nuk0nqbkRWcA+MTxhLuOgSovvMA1P4m0vwixA TwUUbwxwx4Cy6wBwIAvmJ47U1H9bN3jG1qKOX+U=
X-Google-Smtp-Source: ACHHUZ4TS6tQKQ8Lh5JZeZFPTRjJInSexllMG0MrQAITT0uTWUUR5ifIQLbkAxvFWGurpjHOq0Flzw==
X-Received: by 2002:a05:6214:2627:b0:61b:75e0:6a19 with SMTP id gv7-20020a056214262700b0061b75e06a19mr7894456qvb.14.1685979292459; Mon, 05 Jun 2023 08:34:52 -0700 (PDT)
Received: from smtpclient.apple (pool-68-238-162-47.washdc.fios.verizon.net. [68.238.162.47]) by smtp.gmail.com with ESMTPSA id v6-20020ad45286000000b0062623d8ab7esm4653182qvr.111.2023.06.05.08.34.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jun 2023 08:34:51 -0700 (PDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
From: Sean Turner <sean@sn3rd.com>
In-Reply-To: <CAPn_nMPg5c5tq_4Huf97LTt8-moE4nVdV=2hbt_eLrx1pWox5Q@mail.gmail.com>
Date: Mon, 05 Jun 2023 11:34:51 -0400
Cc: Christer Holmberg <christer.holmberg@ericsson.com>, Christer Holmberg <christer.holmberg=40ericsson.com@dmarc.ietf.org>, "rtcweb@ietf.org" <rtcweb@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <1FDC8668-3120-48F9-9819-E015137048BA@sn3rd.com>
References: <CAPn_nMPhh0x5-_BKa0xF595Y8LXo5oRQjJqFgxFLtcCf+-FpOw@mail.gmail.com> <HE1PR07MB44416F5D6CCD8940D5974E3193709@HE1PR07MB4441.eurprd07.prod.outlook.com> <61AC7C19-2806-483F-9526-637DB5D46104@westhawk.co.uk> <HE1PR07MB444193373683D3D0E2F0735F93709@HE1PR07MB4441.eurprd07.prod.outlook.com> <8A7B8A70-7E37-4B0F-917D-C2FF62B84768@westhawk.co.uk> <HE1PR07MB4441C0C4B70C1DD980EAE23393709@HE1PR07MB4441.eurprd07.prod.outlook.com> <CAPn_nMOJXhC8Ae_QSS+ariACcXx__mXRF1pUK6UQSbFuL3m5WQ@mail.gmail.com> <HE1PR07MB444104909398325EA92E91BE93779@HE1PR07MB4441.eurprd07.prod.outlook.com> <HE1PR07MB4441A8F3E41CBA130ED2B7EE93779@HE1PR07MB4441.eurprd07.prod.outlook.com> <CAPn_nMPg5c5tq_4Huf97LTt8-moE4nVdV=2hbt_eLrx1pWox5Q@mail.gmail.com>
To: Justin Uberti <justin=40fixie.ai@dmarc.ietf.org>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/s250KDo2X2v4-OtAGAFmylUoRqQ>
Subject: Re: [rtcweb] JSEP-bis and WebRTC-Extensions Section 5.2
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Jun 2023 15:34:58 -0000

Thanks Justin!

spt

> On Jun 4, 2023, at 21:41, Justin Uberti <justin=40fixie.ai@dmarc.ietf.org> wrote:
> 
> 
> 
> On Wed, May 10, 2023 at 1:37 AM Christer Holmberg <christer.holmberg@ericsson.com> wrote:
> Hi,
> 
>  
> 
> Also note the following sentence in Section 4.1.8.:
> 
>  
> 
> “An options parameter may be supplied to provide additional control over the generated offer.”
> 
>  
> 
> Doesn’t this cover the issue?
> 
> 
> I think it would be worthwhile to tweak the sentence from 4.1.8 that you previously mentioned to indicate that the mechanisms included in the SDP are not just those supported by the browser, but also preferred by the application. We can wave hands about the exact mechanism for how this is done, perhaps referring to the possibility of future APIs.
> 
> I'll rework this PR to include such text as well as the other changes previously noted in option b).
>  
> 
> Another question: when I call createOffer, how does the browser/library determine what has been “enabled”, compared to what is “supported”? 
> 
>  
> 
> Regards,
> 
>  
> 
> Christer
> 
>  
> 
>  
> 
>  
> 
> From: Christer Holmberg <christer.holmberg=40ericsson.com@dmarc.ietf.org> 
> Sent: Wednesday, 10 May 2023 11.01
> To: Justin Uberti <justin@fixie.ai>; Christer Holmberg <christer.holmberg@ericsson.com>
> Cc: rtcweb@ietf.org
> Subject: RE: [rtcweb] JSEP-bis and WebRTC-Extensions Section 5.2
> 
>  
> 
> Hi,
> 
>  
> 
> >Part of the issue here is that we did spec the setCodecPreferences API in JSEP allowing the JS application to control what formats it
> 
> >wants to negotiate, so in many ways this change is just bringing RTP extensions in line with media formats (IOW, we already have
> 
> >some disparities in the spec). As to the solution here, we also have to deal with more than just the notion of "enabled" - there is
> 
> >also the change in how RTP header extensions are added in subsequent offers, which would probably be harder to do in a generic
> 
> >statement, as it would have to override normative text later in the document.
> 
> > 
> 
> >However I do recognize Christer's concern that there could be other parts of JSEP that need the same treatment (specifically, FEC mechanisms
> 
> >and RTCP feedback mechanisms). To address this, we could do one of the following:
> 
> >a) Add a generic statement as Christer proposes suggesting that "supported", as it pertains to JSEP, means the parameters that the JSEP
> 
> >implementation can handle AND are enabled by the application, and have this apply to all relevant parts.
> 
> >b) Extend the PR below to handle all the cases where the application might want to override "supported" (FEC and RTCP are the only remaining
> 
> >ones, I believe). We could use "supported by the application" as Tim mentions to make the change more editorial.
> 
> >c) Just go forward with the current PR and revisit the situation in the future when needed
> 
> > 
> 
> >I tend to think that b) will actually be the most surgical and unambiguous change, so I lean in that direction at the moment.
> 
>  
> 
> I am ok with both a) and b).
> 
>  
> 
> But, in Section 4.1.8 there is the following sentence:
> 
>  
> 
>    “The createOffer method generates a blob of SDP that contains an offer
> 
>    per [RFC3264] with the supported configurations for the session,
> 
>    including descriptions of the media added to this PeerConnection, the
> 
>    codec, RTP, and RTCP options supported by this implementation, and
> 
>    any candidates that have been gathered by the ICE agent.”
> 
>  
> 
> What does “implementation” refer to? The browser? If so, wouldn’t that sentence have to be changed too, as it now says that the SDP generated using createOffer will contain the RTP and RTCP options supported by the implementation (not the application)?
> 
>  
> 
> Regards,
> 
>  
> 
> Christer
> 
>  
> 
>  
> 
> On Sun, May 7, 2023 at 12:51 PM Christer Holmberg <christer.holmberg=40ericsson.com@dmarc.ietf.org> wrote:
> 
> Hi,
> 
>  
> 
> >> Are there actually some real implementation issues behind the proposed change, or is it only
> 
> >> about W3C and IETF using different terminology?
> 
> > 
> 
> > It’s an API layer thing. At present there are no ways for a javascript application to manage which RTP
> 
> > header extensions are present in an offer*. So the current behaviour is to offer _everything_ the
> 
> > library/stack is capable of. The W3C is creating an API point that allows the javascript application to
> 
> > decide which extensions (of all the ones supported by the stack) are useful/relevant/safe for the application.
> 
> > 
> 
> > If both side’s webRTC implementations support a lot of RTP header extensions, the current wording will have
> 
> > them _all_ offered and all accepted in an answer, even if none of them add any value to the application - bloating
> 
> > the packet size needlessly.  Specifically: ’supported’ is taken to mean supported by the user agent - rather than
> 
> > supported by the application as a whole.
> 
> > 
> 
> > (This is my understanding of the issue at least)
> 
>  
> 
> Wouldn't it be better to have a generic statement, saying that for some features there are APIs that, for some features,
> 
> allow the JS application to control what options are offered. That would also be future proof, and we would not have
> 
> to update the JSEP spec every time there is a new API that allows the JS application to control what options are offered
> 
> for a certain feature.
> 
>  
> 
> Regards,
> 
>  
> 
> Christer  
> 
>  
> 
>  
> 
>  
> 
> Sent from Outlook for iOS
> 
> From: rtcweb <rtcweb-bounces@ietf.org> on behalf of Tim Panton <thp@westhawk.co.uk>
> Sent: Sunday, May 7, 2023 1:16:27 PM
> 
> To: Christer Holmberg <christer.holmberg=40ericsson.com@dmarc.ietf.org>
> 
> Cc: rtcweb@ietf.org <rtcweb@ietf.org>
> Subject: Re: [rtcweb] JSEP-bis and WebRTC-Extensions Section 5.2
> 
>  
> 
> I was also thinking about this too - and I somewhat agree.
> 
>  
> 
> We could replace ‘supported' with 'supported by the current application’ since at a high level what this change does is to differentiate between extensions that the library (libwebrtc etc) can support vs extensions the current application wants to support.
> 
>  
> 
> It also makes it clearer that this is an editorial change.
> 
>  
> 
> T.
> 
>  
> 
> On 7 May 2023, at 11:10, Christer Holmberg <christer.holmberg=40ericsson.com@dmarc.ietf.org> wrote:
> 
>  
> 
> Hi,
> 
>  
> 
> I have issues with the proposed change.
> 
>  
> 
> First, AFAIK, "enabled" is not used in any other O/A specification.
> 
>  
> 
> Second, my reading of "supported" is that it is something that the endpoint is actually willing to/capable of using within the session. 
> 
>  
> 
> Third, within the JSEP O/A procedures, "supported" is used for other features (e.g., FEC mechanisms). Using other terminology for one feature will only confuse the reader, in my opinion.
> 
>  
> 
> Fourth, if it is unclear what "supported" really means we should rather clarify that.
> 
>  
> 
> Regards,
> 
>  
> 
> Christer
> 
>  
> 
> Sent from Outlook for iOS
> 
> From: rtcweb <rtcweb-bounces@ietf.org> on behalf of Justin Uberti <justin@fixie.ai>
> Sent: Saturday, May 6, 2023 3:30:33 AM
> To: rtcweb@ietf.org <rtcweb@ietf.org>; superuser@gmail.com <superuser@gmail.com>
> Subject: [rtcweb] JSEP-bis and WebRTC-Extensions Section 5.2
> 
>  
> 
> The WebRTC W3C WG is working on an extension spec that suggests behavior for RTP header extension O/A that conflicts slightly with the current version of JSEP. Rather than have this sort of ad-hoc extensions extension to JSEP in the W3C spec, it was suggested that we could apply a tiny patch to JSEP before JSEP-bis is finalized (it's currently in the RFC Editor state). Murray was supportive of this but wanted to make sure the WG was fully behind this change first.
> 
>  
> 
> For context, Section 5.2 in the W3C extension spec basically says that WebRTC endpoints can control the extensions that are in use, and as a result O/A negotiation should a) use only the extensions that are enabled by the endpoint, and b) always reoffer all extensions, rather than the previously negotiated set.
> 
>  
> 
> I've made a PR that captures this request at https://github.com/rtcweb-wg/jsep/pull/1033/files, and it basically makes two surgical changes:
> 
> 1) replaces the use of "supported RTP header extensions" with "enabled RTP header extensions"
> 
> 2) changes the text around "extensions... present in the most recent answer" to instead say "extensions... enabled on the associated transceiver" (similar to how codecs are handled in JSEP).
> 
>  
> 
> Please let me know if this sounds reasonable to you or you have concerns.
> 
>  
> 
> Thanks,
> 
> Justin
> 
>  
> 
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb
> 
>  
> 
>  
> 
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb
> 
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb