Re: [rtcweb] BUNDLE with implicit rtcp-mux

Justin Uberti <juberti@google.com> Wed, 12 March 2014 16:14 UTC

Return-Path: <juberti@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 62D4D1A048E for <rtcweb@ietfa.amsl.com>; Wed, 12 Mar 2014 09:14:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.325
X-Spam-Level:
X-Spam-Status: No, score=-1.325 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_14=0.6, RP_MATCHES_RCVD=-0.547, SPF_PASS=-0.001] autolearn=no
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 KZseCSje7kQT for <rtcweb@ietfa.amsl.com>; Wed, 12 Mar 2014 09:14:23 -0700 (PDT)
Received: from mail-vc0-x231.google.com (mail-vc0-x231.google.com [IPv6:2607:f8b0:400c:c03::231]) by ietfa.amsl.com (Postfix) with ESMTP id B62731A09CA for <rtcweb@ietf.org>; Wed, 12 Mar 2014 09:14:20 -0700 (PDT)
Received: by mail-vc0-f177.google.com with SMTP id if17so7470000vcb.36 for <rtcweb@ietf.org>; Wed, 12 Mar 2014 09:14:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=H/g2cPjcescQF+zVAfc1+abdb3ar6JXMkRFd6OO0JMs=; b=XBa02y/Q+xygIqFvK9jE+MfkfQkyWvCrULwS5UpiyVRpknZatS72W6UQrzMlXCSfcK 3l5jnCzn90CQhQPXAWUjxk40gSwlRfbzGHhDU6TdmcAmHl9WE9bMdtyUFEvn7G3Yl02+ BgxA+oOkpZJDKHxtsbzcwp0+I48TlKNkxHpcpPzNWsgMp7UNDcPOnIbADIJYs/alsj// hLRuvwzGD4Q2yJOybsN+GBfm5/bQFyMaOF0+rHcdmvrgtWP9yOC0Cy94oJrLFQOBGobL kyT327qY96/60j6mYseq44NbTaxZ3gufAGUsXpzgst7O9KqiFIEhso7gn7o4xFTy73aA wH7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=H/g2cPjcescQF+zVAfc1+abdb3ar6JXMkRFd6OO0JMs=; b=a7Ij5g03oSaDI6vCPX4/8d+G5AjN7iCMyxFh6e1hoWfJGc2VFrVSXbkuR7yaTBpXfd sgILaE14rsL1lblph2TYicqixr051MaXdZLGqA3JhhFceSP7VjKfVs5mBqR/wqI2Cqgt 8eAqhLQILMORejkIoFtvbJQLKxCrULrakpV+wi9x2Q9dWwe6gzkv3ZPOguVIawWPwE3y 2djOliBmtE4ygl62geKvuIs2t4kMqoeMMeqvEibtmAhfJMpPyB3ZrxxEKk3qOs3vWCnD HVIQsvhZOr2eTM5NGczNWM5f243bOj8Uji3TmH0UkTeZi9PMA05UfKIiPWdckLw4WbjT nGrQ==
X-Gm-Message-State: ALoCoQkbmjniUvtBO8637WjmK+WM0Um/5Qw7f770fGJbgVsRhECEOuP7sPXOoo3b0JYeOr5RngmCucNneIyeK8Q2WtBbWM2p4BB/cyMxCLUxkKal+8DaJhrkSqoxIcBCGOEBJqHbsbpWUGXm4DR1KJzulIGla0lg7i03FkXHtV7TvEEIDrnYxf3O4jiDYqNl+AOk1lkNLl8J
X-Received: by 10.52.184.161 with SMTP id ev1mr75376vdc.84.1394640854176; Wed, 12 Mar 2014 09:14:14 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.26.43 with HTTP; Wed, 12 Mar 2014 09:13:54 -0700 (PDT)
In-Reply-To: <532017DD.1060500@ericsson.com>
References: <CAOJ7v-063mGE_zndtAqAMN2fJw7kWvUHX2SgyDMryfw_-aS-9w@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B1D1F1892@ESESSMB209.ericsson.se> <531DC52B.6020500@ericsson.com> <7594FB04B1934943A5C02806D1A2204B1D1FA6BC@ESESSMB209.ericsson.se> <531DCBE9.70701@ericsson.com> <7594FB04B1934943A5C02806D1A2204B1D1FA7B2@ESESSMB209.ericsson.se> <531DD756.50900@ericsson.com> <7594FB04B1934943A5C02806D1A2204B1D200086@ESESSMB209.ericsson.se> <532017DD.1060500@ericsson.com>
From: Justin Uberti <juberti@google.com>
Date: Wed, 12 Mar 2014 09:13:54 -0700
Message-ID: <CAOJ7v-1u6eO4b1Qr4josdNoNBtW7s0Z82y570X4RwV0C4es2hg@mail.gmail.com>
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
Content-Type: multipart/alternative; boundary=bcaec548661cb3eed504f46b2053
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/J891ZQpaqPYGcZUuV00u-5AR6KY
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] BUNDLE with implicit rtcp-mux
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Wed, 12 Mar 2014 16:14:27 -0000

On Wed, Mar 12, 2014 at 1:16 AM, Magnus Westerlund <
magnus.westerlund@ericsson.com> wrote:

> On 2014-03-10 21:09, Christer Holmberg wrote:
> > Hi,
> >
> >>>>>>> Before I comment on your proposal, let's take a few steps
> >>>>>>> back (maybe it can even solve your issue).
> >>>>>>>
> >>>>>>> BUNDLE currently mandates the usage of both the SDP
> >>>>>>> rtcp-mux and rtcp attributes. I remember we had
> >>>>>>> discussions about that, but I don't remember the
> >>>>>>> justification at the moment. But, I wonder whether that
> >>>>>>> text is from before we made a decision that, unless both
> >>>>>>> endpoints support BUNDLE, no endpoint will use a single
> >>>>>>> address:port.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> So, the question is: do we really need the SDP rtcp
> >>>>>>> attribute?
> >>>>>>
> >>>>>> I think it is a question of how you want the fallback to
> >>>>>> work. In the case of bundle only lines, a non  bundle
> >>>>>> supporting peer will reject them, thus no issues with what
> >>>>>> is written around RTCP-mux and a=rtcp in those m= blocks.
> >>>>>> However, the first one if you want that to support fallback
> >>>>>> that makes sense then you will need both a=rtcp-mux and an
> >>>>>> a=rtcp (with a different port) to handle that with optimal
> >>>>>> backwards compatibility.
> >>>>>>
> >>>>>> Regarding the motivation for a=rtcp-mux and a=rtcp, I think
> >>>>>> it is reasonably straight forward. We want a=rtcp-mux to
> >>>>>> minimize port usage, i.e. ports=1. Not supporting
> >>>>>> a=rtcp-mux with bundle that would mean two ports (RTP and
> >>>>>> RTCP) for the bundle group. To get the backwards
> >>>>>> compatibility the usage of a=rtcp would be required.
> >>>>>
> >>>>> Keep in mind that the offerer must always be prepared that
> >>>>> the answerer does not support the rtcp-mux attribute (or the
> >>>>> rtcp attribute).
> >>>>
> >>>> Yes, that was what I meant with fallback in the above text.
> >>>> What you do in case the peer doesn't support bundle.
> >>>>
> >>>>> So, at least my understanding is: no matter whether BUNDLE is
> >>>>> used or not, if the answer does not contain a rtcp-mux (e.g.
> >>>>> in case of fallback) attribute, the offerer must use the
> >>>>> default "rtp+1" port.
> >>>>
> >>>> I have a tendency to agree, which means that the first m= block
> >>>> in a bunde-only group will be required to contain a=rtcp and if
> >>>> RTCP mux is desired also that attribute.
> >>>>
> >>>> I think a=rtcp could be skipped for a bound-only m= block due
> >>>> to the requirement on supporting a=rtcp-mux if you do bundle.
> >>>
> >>> For bundle-only, I actually think BOTH can be skipped, because
> >>> bundle-only will by default use whatever address:port is
> >>> negotiated - both for RTP and RTCP.
> >>
> >> No, I see a path of grief to not explicitly signal things when you
> >> use them.
> >
> > But, the whole idea of using port zero in bundle-only was that, if
> > the answerer supports BUNDLE, port zero will be replaced with the
> > negotiated address:port.
> >
> > When you send the offer, you don't yet know which address:port will
> > be selected, so there is no idea to insert a=rtcp. Inserting
> > a=rtcp-mux probably doesn't harm, though, so I won't argue about it
> > :)
>
> Well, if you can't insert the port, the same applies to a=rtcp as to the
> port in the m= line.
>
> Because in the bundle-only case we are assuming and that assumption
> needs to apply also for a=rtcp. And for a bundle-only case I think the
> appropriate thing is to assume that a=rtcp-mux will be honored. To have
> it being honored you need explicit signal it. The a=rtcp can be
> considered redundant in this case, but I am sensitive to removing it as
> that would create a special case for a=bundle-only lines. I think it is
> better to simply include it, even if it will say a=rtcp:0
>
> >
> >> I also thought the a=rtcp-mux is a MUST to implement, not a MUST
> >> use.
> >
> > Currently the draft says MUST use. But, that may be a mistake, or a
> > leftover from previous procedures. I agree that one should be able to
> > use BUNDLE also without rtcp-mux (i.e. using separate BUNDLE ports
> > for the RTP traffic and the RTCP traffic).
>
> I hope if people disagree that they shout now.
>

I think rtcp-mux has to be a MUST use when BUNDLE is used between the two
endpoints. (If the endpoint doesn't support BUNDLE, rtcp-mux is not
required.)

Otherwise, you get into weird edge cases, such as where you have a data
channel (no RTCP component), and then want to add audio (with RTP and RTCP
components). You could bundle the audio RTP over the existing data channel
transport, but it's not clear what you should do with the RTCP component.
Mandating rtcp-mux avoids this issue completely.

>
> >
> >>> But, for non-bundle-only, I still ask whether we really need
> >>> a=rtcp. Isn't a=rtcp-mux enough? If the answerer supports it, you
> >>> will use it, otherwise you will use rtp+1.
> >>
> >> My understanding is that a=rtcp has been required in any
> >> non-private network deployments due to >NATs for the last 10 years.
> >> Thus, I don't see how you can remove them and expect it to work,
> >> unless >you are doing a=rtcp-mux. Thus, my view would be that you
> >> can remove a=rtcp if you know that the >peer supprots a=rtcp-mux.
> >
> > Are you saying that we should use a=rtcp ONLY to indicate the RTP
> > port, in case the answerer does not support a=rtcp-mux?
>
> It has its normal usage, i.e. RTCP port in cases when a=rtcp-mux is not
> agreed on. In a bundle-only offer, I think the only reasonable approach
> is to handle it identically to the m= line port number.
>
> >
> >>> Otherwise, assume that the answerer supports BOTH a=rtcp and
> >>> a=rtcp-mux. Which has higher "priority"? How does the answerer
> >>> knows whether the offerer wants to use rtcp-mux, or whether it
> >>> wants to use whatever port is indicated in a=rtcp?
> >>
> >> That is a=rtcp-mux per RFC 5761 that has higher priority, please
> >> see Section 5.1.1.
> >
> > You are right - my mistake.
> >
> > But, never the less, if the offerer sends both a=rtcp-mux and a=rtcp,
> > unless a=rtcp points to the rtp port, the offerer needs to be
> > prepared to use 3 different ports for RTCP (rtp+1 port, rtp port and
> > rtp+<a=rtcp value>), because it does not know which attribute (if
> > any) the answerer supports, and which (if any) the answerer is
> > willing to use.
>
> This is actually not necessary, if one can get the rtp+1 port for RTCP,
> then include that in the a=rtcp line and everything is fine.
>
> I was under the impression that almost all SIP SDP O/A was using a=rtcp.
> But if that is a misunderstanding from my perspective, I still think the
> rules will hold. If you don't include the a=rtcp attribute, then the
> rtp+1 port is the equivalent of the a=rtcp value.
>
> From a bundle perspective, I think what needs to be considered is the
> actual or implied values on the m= blocks for the rtcp port when using
> bundle-only as well as the other case.
>
> Cheers
>
> Magnus Westerlund
> (As individual)
>
> ----------------------------------------------------------------------
> Services, Media and Network features, Ericsson Research EAB/TXM
> ----------------------------------------------------------------------
> Ericsson AB                 | Phone  +46 10 7148287
> Färögatan 6                 | Mobile +46 73 0949079
> SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com
> ----------------------------------------------------------------------
>
>