Re: [MMUSIC] Questions about ICE candidates with BUNDLE

Bernard Aboba <bernard_aboba@hotmail.com> Fri, 20 November 2015 04:09 UTC

Return-Path: <bernard_aboba@hotmail.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F27B51A00FF for <mmusic@ietfa.amsl.com>; Thu, 19 Nov 2015 20:09:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.184
X-Spam-Level:
X-Spam-Status: No, score=-3.184 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.585, SPF_PASS=-0.001] autolearn=ham
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 tb5qpoXMs94Q for <mmusic@ietfa.amsl.com>; Thu, 19 Nov 2015 20:09:16 -0800 (PST)
Received: from BLU004-OMC2S38.hotmail.com (blu004-omc2s38.hotmail.com [65.55.111.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A99281A013F for <mmusic@ietf.org>; Thu, 19 Nov 2015 20:09:15 -0800 (PST)
Received: from BLU406-EAS74 ([65.55.111.72]) by BLU004-OMC2S38.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Thu, 19 Nov 2015 20:09:14 -0800
X-TMN: [7jLrfVDI3Of/XeVMmvS7gVWA2mmoSJhI]
X-Originating-Email: [bernard_aboba@hotmail.com]
Message-ID: <BLU406-EAS74C6597D4BFC6BA3CE35B7931A0@phx.gbl>
From: Bernard Aboba <bernard_aboba@hotmail.com>
To: 'Christer Holmberg' <christer.holmberg@ericsson.com>, 'Peter Thatcher' <pthatcher@google.com>
References: <CAJrXDUHutBgaPOV73-CyD_Knz+G5RFE0VX4s3+GqGV8K=B1LNA@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B37BED248@ESESSMB209.ericsson.se> <CAJrXDUE0zutaCci2pojS6+=015DKqd7ocR5a9AWLoTC6jV+x6w@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B37BEF98E@ESESSMB209.ericsson.se> <CAJrXDUFZUkogpX9Jnz-y1BxSbE0SnQE3CAg-EXy12-k9tFzjuA@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B37C1D520@ESESSMB209.ericsson.se> <CAJrXDUHaizhhikRVERNR4aDbe_KdE_RESWZY-1d57x1gtuFs_g@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B37C4815B@ESESSMB209.ericsson.se> <CAJrXDUEKAdmV+LX1xER6+Km1mzLPbKFWrf9iRYLV_Rj0Mh3_dA@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B37C4E48F@ESESSMB209.ericsson.se>
In-Reply-To: <7594FB04B1934943A5C02806D1A2204B37C4E48F@ESESSMB209.ericsson.se>
Date: Thu, 19 Nov 2015 20:08:43 -0800
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_023F_01D12306.176906F0"
X-Mailer: Microsoft Outlook 15.0
Thread-Index: AQABAgME9PLwbSaAL8J/PH3NAU+kbgCZoB18AEggas0AZBUXlwDCuc0tojRBwgA=
Content-Language: en-us
X-OriginalArrivalTime: 20 Nov 2015 04:09:14.0721 (UTC) FILETIME=[37DC1510:01D12349]
Archived-At: <http://mailarchive.ietf.org/arch/msg/mmusic/wPkOmk_WqJyD3mM9eGfmXOVDibw>
Cc: mmusic@ietf.org
Subject: Re: [MMUSIC] Questions about ICE candidates with BUNDLE
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mmusic/>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Nov 2015 04:09:22 -0000

“Optimize for the most often-used code path” should guide our thinking here.

 

Forcing duplication of ICE candidates on a BUNDLE/mux application just to ensure correctness of a legacy scenario does not represent a good engineering tradeoff. 

 

Today BUNDLE and RTP/RTCP mux represent the most popular mode of operation for WebRTC applications. 

 

If we are using BUNDLE and RTP/RTCP mux within ORTC (and now WebRTC 1.0, now that we have added RTCIceTransport objects), the BUNDLE’d m-lines represent a single RTCIceTransport object and there is only  a single component and a single set of ICE candidates.  

 

This is not to deny that there are legacy interop scenarios  where the Offerer needs to allocate ports RTP and RTCP on each m-line just in case the Answerer does not support BUNDLE and/or RTP/RTCP mux, and thus the Offerer needs to gather ICE candidates that would not be needed if BUNDLE/mux were negotiated.

 

The JS sample code for this is ugly, let alone the implementation code, all for a code path that will only be used a very small percentage of the time (which means that bugs may not get found/fixed).  

 

I’m not advocating that we make that legacy scenario impossible – just that we should not optimize for it.  For example, if we don’t duplicate ICE candidates and that turns out to be required, and another O/A exchange is needed to fix that, it wouldn’t bother me. 

 

From: mmusic [mailto:mmusic-bounces@ietf.org] On Behalf Of Christer Holmberg
Sent: Tuesday, November 17, 2015 11:22 AM
To: Peter Thatcher <pthatcher@google.com>
Cc: mmusic@ietf.org
Subject: Re: [MMUSIC] Questions about ICE candidates with BUNDLE

 

Anyone else having an opinion on this?

 

Regards,

 

Christer

 

From: Peter Thatcher [mailto:pthatcher@google.com] 
Sent: 17 November 2015 01:06
To: Christer Holmberg <christer.holmberg@ericsson.com <mailto:christer.holmberg@ericsson.com> >
Cc: mmusic@ietf.org <mailto:mmusic@ietf.org> 
Subject: Re: [MMUSIC] Questions about ICE candidates with BUNDLE

 

 

 

On Mon, Nov 16, 2015 at 2:58 PM, Christer Holmberg <christer.holmberg@ericsson.com <mailto:christer.holmberg@ericsson.com> > wrote:

Hi,

>> I thinking mandating the candidates be duplicated in the answer has three issues:
>>
>> 1.  It conflicts with trickle ICE.
>> 2.  It's slightly more complex to implement (we have to go add extra logic to go duplicate these things)
>> 3.  It's a complete waste of time/space/effort.  The recipient of these duplicate candidates is never going to anything with them.  
> 
> Those are all fair points. I wish we'd had more implementation input when we write our specs.
>
> That's what I'm providing now :).  We can still change the spec, can't we?
​
Sure.

However, as we are talking about a design wise big (in my opinion) change, at a late stage, I'd like to hear what other people think.

 

​That sounds fair.  I'd like to hear what others think about this.​

​

 

 

 
>>>Also keep in mind that, when a subsequent offer is sent, the bundle-only attribute is no longer used.
>>
​>>Can you point out where in the draft it says that?  I tried finding it and I had a difficult time seeing where bundle-only wasn't allowed in a reoffer.​
​>>
>> Section 8.5.1 says:
>>
>>        "When an offerer generates a subsequent offer, it MUST assign the
>>       previously selected offerer BUNDLE address [Section 8.3.2], to each
>>       bundled "m=" line (including any bundle-only "m=" line), except if:"
>>
>> And, as the usage of the attribute is only defined when the port value is zero, it would not work when the BUNDLE address (read: non-zero port) must be associated with the m- line.
>>
>> Section 6 says:
>>
>>   "The usage of the 'bundle-only' attribute is only defined for a
>>   bundled "m=" line with a zero port value, within an offer.  Other
>>   usage is unspecified."
>
​> Thanks.  That text would be more clear as "with an initial offer" instead of "whithin an offer", since that's what it really means in conjuction with 8.5.1.

Ok.

> However, that's precisely the text that I think we could change.  I think we could change the bundle-only attribute to
> be allowed in answers and in subsequent offers.  Then clients could use the attribute as a way of avoiding duplication
> of candidates and the complications with trickle ICE.​

Assuming we would remove the duplication of candidates, I don't think that would require us to change a semantics of the attribute. We could simply say that the candidates don't need to be duplicated in bundled m- lines, no matter if those m- lines are bundle-only or not.

 

That would work as well.

​

 


>>>> Would you then also in the subsequent offer only assign possible candidates to only one m- line within the bundle group?
>>>
​>>> That sounds logical to me.  They aren't included in the first offer.  Why add them to subsequent offers?  It's inconsistent, and a waste. 
>>
>> Then someone could ask: what about other (non-candidate) attributes that must have identical values for each bundled m- line? Should those also be assigned to only one of the m- lines?
>
​> If it's something unique to the bundle group, and not the m-line, that seems reasonable to me.  ​
​>
​> But candidates are more painful than those would be because of the interactions with trickle ICE.  If it weren't for trickle ICE this wouldn't be as big of a deal.​

Correct. We just need to make it very clear whether it applies only to candidate attributes, or to attributes with identical values in general.

>>>>>>>> 2.  If the answerer does not include any candidates in the answer and instead trickles them later, should it trickle them
>>>>>>>> N times (once for each m-line in the BUNDLE group) or >1 time?  1 time seems much more reasonable than N times, but
>>>>>>>> if we duplicate candidates in the answer, but not duplicate them while trickling, that's a bit inconsistent.  Yet >another reason to not duplicate in the answer :).
>>>>>>>
>>>>>>> Assuming you use SDP to signal the trickled candidates, it’s true that you would duplicate them,
>>>>>>>
>>>>>>​What's the rationale for that?  These duplicates provide no value, and in the case of many m-lines (such as a conferencing
>>>>>>system with many participants), we could be talking about 30x the number of candidates being signaled.  
>>>>
>>>> I hear what you are saying.
>>>>
>>>> But, if we would do a change, we also need to look at the full picture, and consider subsequent offers etc.
>>>
​>>> I think a simple rule would be "if you know it's going to be bundled onto another m-line, don't include
>>> candidates".  That would go for bundle-only m-lines in an offer, bundled m-lines in an answer, and bundled m-lines in a re-offer.​
​>>>
>> Bundled m- lines in a re-offer can still be rejected by the answerer.
>
​> That sounds the same as an initial offer.  How does it imply that a re-offer must duplicate
> candidates across m-lines, even when an initial offer doesn't need to?​
​
In the initial offer each m- line contains candidates (unique). If an m- line in the offer is rejected, the answerer must select the offerer BUNDLE address (and the associated candidiates) from another m- line.

Now, in a re-offer, if the m- line containing the candidates is rejected, the answerer needs to include its candidates in another m- line in the answer. That's doable, but it would need to be clearly documented. In other words: it needs to be clear that the candidates can occur in ANY of the bundled m- lines, and that m- line may change between offers and answers.

 

​So a rule of "the candidates can be in any one of the m-lines, and it doesn't matter which, and it can change any time".  That seems reasonable to me.  It leave the most flexibility to the one writing the SDP, and it's very easy to implement for the one reading the SDP.​

 

 


Regards,

Christer