Re: [rtcweb] Working Group Last Call for draft-uberti-rtcweb-rfc8829bis-01.txt

Roman Shpount <roman@telurix.com> Sun, 31 October 2021 04:01 UTC

Return-Path: <roman@telurix.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 499B73A085D for <rtcweb@ietfa.amsl.com>; Sat, 30 Oct 2021 21:01:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=telurix.com
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 MeUk8jK6FjWO for <rtcweb@ietfa.amsl.com>; Sat, 30 Oct 2021 21:01:53 -0700 (PDT)
Received: from mail-qk1-x732.google.com (mail-qk1-x732.google.com [IPv6:2607:f8b0:4864:20::732]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E13203A085C for <rtcweb@ietf.org>; Sat, 30 Oct 2021 21:01:52 -0700 (PDT)
Received: by mail-qk1-x732.google.com with SMTP id x123so13492168qke.7 for <rtcweb@ietf.org>; Sat, 30 Oct 2021 21:01:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telurix.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ejQS3wSlyrGS85fnKuYgnJfY/j4QT/208S43LJGh25c=; b=AnyUr3uLZUHPZ6YuzlmJ3X/uwB62N5M6+HGHfXykydOkJz5nv4znwbPThp0JxwlEee q6drXwAOAnYRDaqkuMV0eEhDDWUgPwtHumWNrOynleVIr7oxHHkiG6rSDSzcQLVykfyi 4/Mywmu5JAszFjQsnlvgHradWKWd6A+vpYKwI=
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=ejQS3wSlyrGS85fnKuYgnJfY/j4QT/208S43LJGh25c=; b=oJF1Ypq51Fblg7hNXq2+54LC1pdGEtLINHmVKmwwmMn5sFUa91nFPsDRCgrzD28V7Z alBOXynSpw7Vn7+28qQdbw36BXfrxw7szmkARM0h1HEsBH5Sil8kvh9p7oOdsAV7MCUN fNQ2zquDo1n+zqC7wAgjzGl4vPGB+3o+9iMElrx40RhfWYoZFy45A4NcNpaYN/glin9B EXYUpcGn87DEhylzxVX2TKhEvg0WPRnsig8dAuu72Hm84Eb+pY60Kk7pWPbo/95FrT9R DjW3MVz4n/nS4BUu6Rn4bfeVRs/oAjQzT2Od0jSNZvfMUrM0Co9XuBM5VFOX+N5vZ6aj Q9Bg==
X-Gm-Message-State: AOAM530L+QpjHEI3D8Hfnfn7OEL0rf2JM6JzayAhQup9rxxLbky/KkTz Bo4c6PrNcQWBaTcGFXmOC/9Yxl6+MQ+mrg==
X-Google-Smtp-Source: ABdhPJzhH6uT82najaj+MYuALzK6RMiBiIbXoXq8062P8s1vd+J3qVBdX363sS2cne2KpkfZd0bgEw==
X-Received: by 2002:ae9:f408:: with SMTP id y8mr10165657qkl.178.1635652910775; Sat, 30 Oct 2021 21:01:50 -0700 (PDT)
Received: from mail-yb1-f182.google.com (mail-yb1-f182.google.com. [209.85.219.182]) by smtp.gmail.com with ESMTPSA id z19sm7190267qts.96.2021.10.30.21.01.49 for <rtcweb@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 30 Oct 2021 21:01:50 -0700 (PDT)
Received: by mail-yb1-f182.google.com with SMTP id d10so24562061ybe.3 for <rtcweb@ietf.org>; Sat, 30 Oct 2021 21:01:49 -0700 (PDT)
X-Received: by 2002:a5b:482:: with SMTP id n2mr22208245ybp.514.1635652909151; Sat, 30 Oct 2021 21:01:49 -0700 (PDT)
MIME-Version: 1.0
References: <CA+9kkMA_8jCGeb_QkhVz2JLRYGbq+MkGG9wJ2k0vo6noDDkkQA@mail.gmail.com> <CAD5OKxvK_CUnHc0kqNNVUkOHgtUqL=vjdUTLqL+RJpZBtWL+4A@mail.gmail.com> <CALe60zAC7VA6y5oLkC9HBRQUhJyY73Atbfmm1KVKw=hyPqD=2Q@mail.gmail.com> <CAD5OKxvi7t6ug9xsjqiB35hTWNJ0D04XK5w=njZ8hB_6UpRzEQ@mail.gmail.com> <CAOLzse14Qkn+EiO3xHfGi2QmBvH0M=fQD-SmA9TXsfmHjPKLfQ@mail.gmail.com> <CAD5OKxtrBFsZBGUKtB6MNwMrPnzE9NSyQWrjXGjzE8PkYmj8Bw@mail.gmail.com> <CAOLzse2L=Xu=Y944B9mwURQ6VP__KuEp-C_-xNw0MhNLv2LoCw@mail.gmail.com> <CAD5OKxtr==_dwW7-JbjP7abxNAityukfpHS5xK6vf-YuTADd+A@mail.gmail.com> <CAOLzse1-8cTg=GE2ndQ3tpVa25wzNqkOy6J6M30X=dN2Ejnvyg@mail.gmail.com> <CAD5OKxs5wCQuaaC1sL+Zi2iwMhnzexTh89HVOWc2jLTBGoyD9A@mail.gmail.com> <HE1PR07MB44413791A6AC8D20349BEBF793889@HE1PR07MB4441.eurprd07.prod.outlook.com>
In-Reply-To: <HE1PR07MB44413791A6AC8D20349BEBF793889@HE1PR07MB4441.eurprd07.prod.outlook.com>
From: Roman Shpount <roman@telurix.com>
Date: Sun, 31 Oct 2021 00:01:37 -0400
X-Gmail-Original-Message-ID: <CAD5OKxtyCUgJP2CjPkyNBuDp3_N-42J15AvB==36edujJsjh-g@mail.gmail.com>
Message-ID: <CAD5OKxtyCUgJP2CjPkyNBuDp3_N-42J15AvB==36edujJsjh-g@mail.gmail.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Cc: Justin Uberti <juberti@alphaexplorationco.com>, Justin Uberti <justin@uberti.name>, RTCWeb IETF <rtcweb@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000a03ac705cf9e1eb7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtcweb/WCqMEW0Y-Dds9gZFgOQXlkp_51Q>
Subject: Re: [rtcweb] Working Group Last Call for draft-uberti-rtcweb-rfc8829bis-01.txt
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.29
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: Sun, 31 Oct 2021 04:01:58 -0000

Hi Christer,

I can try to explain the issue. If you need I can provide a more detailed
call flow with SDP examples but here is the basic scenario for nonw:

1. 3PCC application requests an offer from client A.
2. Client A generates an offer with audio, video, and data m= lines which
are part of a single bundle group. It does not matter for this case if they
are bundle-only or can be unbundled
3. Signaling application sends the offer received from client A to client B.
4. Client B supports bundle so it generates an answer where all m= lines
are bundled
5. 3PCC sends the answer to Client A. At this point all m= lines are
bundled and cannot be unbundled.
6. 3PCC application requests another offer from client A within the same
session. This offer is a subsequent offer so it would have all 3 m= lines
bundled.
7. 3PCC sends the generated offer to client C.
8. Client C is generating an answer to the offer it received. Client C is
bundle aware but decides that it wants to unbundle data m= line. As far as
Client C is concerned, there are no pre-negotiated bundle groups. If there
are no bundle-only attributes on m= lines, there is nothing stopping client
C from unbundling.

Per draft 8843 bis, SIP consideration section (
https://www.ietf.org/archive/id/draft-ietf-mmusic-rfc8843bis-05.html#name-sip-considerations),
ofer in step 6 should be generated as an initial offer, i.e. with port 0
and bundle-only in bundled m= lines. This is done specifically to avoid
problems in step 8.

What I am suggesting is not to always generate subsequent offers with port
zero and bundle-only. I am suggesting only do this, when this offer is
intended for 3PCC. There is already a similar feature for ICE which
triggers ice restart for the offer which can be used for 3PCC. It can also
trigger generation of an offer with bundle-only for all bundled m= lines. I
would even be fine with webrtc endpoint not doing anything and adding a
note to JSEP telling the 3PCC application to "fix" the offer and add m=
port zero and bundle-only attributes when it is sending subsequent offers
as initial offers to a new end point.

In any case, the subsequent offer generated in step 6 is not a valid
initial offer according to the bundle specification. We have two choices:

1. Make subsequent offers valid initial offers. This means adding some
language explaining how the endpoint processing initial offer can detect
that m= lines cannot be unbundled. Even if we add this language it will
have backwards compatibility issues with anything that has not implemented
it.

2. Make endpoints generate subsequent offers that are valid initial offers
in 3PCC scenarios. This is what draft 8843 bis does.

Please let me know if you need more details.
_____________
Roman Shpount


On Sat, Oct 30, 2021 at 6:44 PM Christer Holmberg <
christer.holmberg@ericsson.com> wrote:

> Hi,
>
>
>
> First, it would have been nice to see a call-flow that shows exactly where
> the issue arises, as there are different ways of doing 3PCC.
>
>
>
> Already at the early days of BUNDLE, we agreed that an initial offer will
> NOT contain a shared address, because it is not backward compatible with
> non-bundle aware endpoints. Some people (including e.g., myself and Cullen)
> were very keen on that. Instead we will use port zero + bundle-only for m-
> lines that are only be accepted if part of a BUNDLE group. I do not agree
> to adding text to 8843bis saying there are cases where the specified
> procedures for initial offers don’t apply, or don’t have to be followed.
>
>
>
> Yes, we did add some 3PCC clarification text  (which anyone could have
> commented on) in 8843bis, but we did not change the procedures for initial
> offers.
>
>
>
> Also keep in mind that the difference between an initial offer and a
> subsequent offer is not related only the BUNDLE-related information. For
> example, an initial offer must also contain unique ICE candidates in each
> non-bundle-only m- line.
>
>
>
> My understanding of the text in 8829bis is that JSEP does NOT support (or,
> if we want to word it differently, is not able to detect) the 3PCC cases
> referenced by Roman (again, call flows would have been nice), so a JSEP
> endpoint will always send a subsequent offer according to the rules for
> sending a subsequent offer.
>
>
>
> Regarding Roman’s suggested solutions #2 and #3, sending ALL bundled m-
> lines with port zero and bundle-only would be something completely new, as
> there would be no offerer-tagged m- section. I don’t think that is a good
> idea. We wither send an initial offer, using the procedures for initial
> offers, or we send a subsequent offer, using the procedures for subsequent
> offers.
>
>
>
> Regards,
>
>
>
> Christer
>
>
>
>
>
> *From:* rtcweb <rtcweb-bounces@ietf.org> *On Behalf Of *Roman Shpount
> *Sent:* lauantai 30. lokakuuta 2021 5.27
> *To:* Justin Uberti <juberti@alphaexplorationco.com>
> *Cc:* Justin Uberti <justin@uberti.name>; RTCWeb IETF <rtcweb@ietf.org>
> *Subject:* Re: [rtcweb] Working Group Last Call for
> draft-uberti-rtcweb-rfc8829bis-01.txt
>
>
>
> On Fri, Oct 29, 2021 at 6:49 PM Justin Uberti <
> juberti@alphaexplorationco.com> wrote:
>
>
>
>
>
> On Fri, Oct 29, 2021 at 3:29 PM Roman Shpount <roman@telurix.com> wrote:
>
> On Fri, Oct 29, 2021 at 2:16 PM Justin Uberti <
> juberti@alphaexplorationco.com> wrote:
>
>
>
> As I am trying to explain, there is nothing in the offer that would
> prevent the compliant implementation from moving the m= line out. This is
> not obvious but can cause grief.
>
>
>
> The problem is that it is not possible, as there is no other transport to
> move the unbundled line to. As noted in the section you cite:
>
>
>
>  "NOTE: One consequence of the rules above is that, once a BUNDLE group
> has been negotiated, a bundled "m=" section cannot be moved out of the
> BUNDLE group in an answer. Instead, an offer is needed.:"
>
>
>
> Generally, I think that if there is a shared address, that signifies that
> a BUNDLE group has already been negotiated, even if that decision was made
> elsewhere. Perhaps a note should be added to bundle-bis to explicitly state
> this.
>
>
>
> When discussing bundle-bis the understanding was that it is generally
> known when an offer is generated for 3pcc. Because of this, it was decided
> that when the offer is generated for 3pcc it should be generated using the
> same rules as the initial offer (i.e. with port zero and bundle-only). This
> was considered to be both backwards compatible with RBF 8843 and safe to
> use as an initial offer for non-bundle aware, bundle, and bundle-bis
> endpoints. For whatever reason, inspecting transport addresses was not
> considered a valid mechanism to detect that m= lines are already bundled
> and cannot be unbundled in the future. If we want to switch to inspecting
> transport addresses when deciding which m= lines can be unbundled, this
> deserves a lot more than a note in bundle-bis.
>
>
>
> This logic needs to be applied on subsequent offers already though, so I
> don't understand why asking endpoints to also consider it on initial offers
> is an issue. Perhaps Christer could weigh in here.
>
>
>
> During the initial offer end point does not have already negotiated bundle
> groups. Once the endpoint has already negotiated bundle groups, m= lines
> cannot be removed from them.
>
>
>
> I would still argue that a safe way to generate an offer for 3PCC is to do
> SDP manipulation and set ports to 0 with attribute bundle-only. Everything
> else would not be compatible with either bundle-bis or RFC 8843.
>
>
>
> I am fine to include this as a consideration for non-BUNDLE endpoints but
> it seems error-prone and unnecessary to do this for BUNDLE-aware endpoints.
>
>
>
> Your logic only works if bundle-aware endpoints were not allowed to remove
> m= lines from a bundle group. Looking at the addresses to determine what is
> already grouped is insufficient, since an offer can also be an offer with
> ice restart and trickle. No addresses will be present, so the endpoint will
> have to look at ice parameters as well. This gets complicated and no one
> wanted to describe this when 8843bis was written.  This is why rfc
> 8843bis specifies that subsequent offers for 3PCC should be valid initial
> offers.
>
>
>
> There are, potentially, two solutions to this:
>
>
>
> 1. Change bundle so that endpoints are required to inspect initial offers
> for transport addresses and ice parameters. Do not allow m= lines to be
> removed from the bundle group if they share the transport address. This
> would require pulling RFC 8843bis and writing the appropriate language.
>
>
>
> 2. Change JSEP note to specify that the application needs to make sure
> that in case of 3PCC and remote endpoints either potentially removing m=
> lines from the bundle or not being bundle-aware, bundled m= lines need to
> be modified to have port 0 and bundle-only attribute. Considering that most
> bundle-aware endpoints do not remove m= lines from the bundle, this option
> would cause the least amount of specification work.
>
>
>
> 3. If we want to completely avoid applications messing with SDP, change
> JSEP to specify that when ice-restart is specified and a new offer is
> generated, already bundled m= lines should be marked with port 0 and
> bundle-only. This would also result in the least number of surprises for
> developers.
>
>
>
> Best Regards,
>
> _____________
> Roman Shpount
>
>
>