Re: [MMUSIC] Trickle ICE

Lishitao <lishitao@huawei.com> Fri, 12 October 2012 02:43 UTC

Return-Path: <lishitao@huawei.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5A48611E808D for <mmusic@ietfa.amsl.com>; Thu, 11 Oct 2012 19:43:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.261
X-Spam-Level:
X-Spam-Status: No, score=-6.261 tagged_above=-999 required=5 tests=[AWL=0.338, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Sfx3yVxyACAR for <mmusic@ietfa.amsl.com>; Thu, 11 Oct 2012 19:43:43 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) by ietfa.amsl.com (Postfix) with ESMTP id 8D98421F84A7 for <mmusic@ietf.org>; Thu, 11 Oct 2012 19:43:42 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml204-edg.china.huawei.com) ([172.18.7.190]) by lhrrg02-dlp.huawei.com (MOS 4.3.5-GA FastPath queued) with ESMTP id AKN37803; Fri, 12 Oct 2012 02:43:41 +0000 (GMT)
Received: from LHREML401-HUB.china.huawei.com (10.201.5.240) by lhreml204-edg.china.huawei.com (172.18.7.223) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 12 Oct 2012 03:43:04 +0100
Received: from SZXEML417-HUB.china.huawei.com (10.82.67.156) by lhreml401-hub.china.huawei.com (10.201.5.240) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 12 Oct 2012 03:43:24 +0100
Received: from SZXEML510-MBX.china.huawei.com ([169.254.7.56]) by szxeml417-hub.china.huawei.com ([10.82.67.156]) with mapi id 14.01.0323.003; Fri, 12 Oct 2012 10:43:16 +0800
From: Lishitao <lishitao@huawei.com>
To: Emil Ivov <emcho@jitsi.org>, Christer Holmberg <christer.holmberg@ericsson.com>
Thread-Topic: [MMUSIC] Trickle ICE
Thread-Index: AQHNpvO2fKOXlR6+7kycNVqmYvnvwZeyU1+AgABLNgCAALnaAIAAKF0AgAB27ACAACS4gIAA2bqQ
Date: Fri, 12 Oct 2012 02:43:15 +0000
Message-ID: <DA165A8A2929C6429CAB403A76B573A51504EA96@SZXEML510-MBX.china.huawei.com>
References: <20121010141600.30314.22528.idtracker@ietfa.amsl.com>, <5075864F.3030700@jitsi.org> <7F2072F1E0DE894DA4B517B93C6A0585340BAFAA6E@ESESSCMS0356.eemea.ericsson.se>, <5075FB20.6070408@jitsi.org> <7F2072F1E0DE894DA4B517B93C6A0585340BAFAA74@ESESSCMS0356.eemea.ericsson.se> <5076B8E4.6050307@jitsi.org> <7F2072F1E0DE894DA4B517B93C6A0585340BE3F450@ESESSCMS0356.eemea.ericsson.se> <50773B73.6060508@jitsi.org>
In-Reply-To: <50773B73.6060508@jitsi.org>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.138.73.45]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Cc: MMUSIC IETF WG <mmusic@ietf.org>
Subject: Re: [MMUSIC] Trickle ICE
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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, 12 Oct 2012 02:43:44 -0000

Hi Emil

> -----Original Message-----
> From: mmusic-bounces@ietf.org [mailto:mmusic-bounces@ietf.org] On Behalf
> Of Emil Ivov
> Sent: Friday, October 12, 2012 5:35 AM
> To: Christer Holmberg
> Cc: MMUSIC IETF WG
> Subject: Re: [MMUSIC] Trickle ICE
> 
> Hey Christer,
> 
> On 11.10.12, 21:23, Christer Holmberg wrote:
> >
> > Hi,
> >
> > Q1: Remote endpoint support (SIP):
> > ----------------------------------
> >
> >>>>> You say that, before the first offer is sent, one SHOULD
> >>>>> determine whether the remote endpoint supports trickle ICE.
> >>>>>
> >>>>> For SIP, you give RFC 3840 as an example. I am not sure how
> >>>>> that will work. Yes, you can use 3840 to request that the
> >>>>> offer is sent to an entity which supports trickle ICE (for
> >>>>> that, btw, you will also need to define an option tag, or
> >>>>> something similar),
> >>>>
> >>>> Right, but we were hoping this would happen in a separate spec
> >>>> that details use of trickle ICE with SIP.
> >>>>
> >>>>> but you cannot use it to determine whether the remote
> >>>>> endpoint supports trickle ICE. In addition, you typically use
> >>>>> 3840 at the same time when you send the initial offer.
> >>>>>
> >>>>> Of course, you could use SIP OPTIONS.
> >>>>
> >>>> Yes, that was the idea. The way 3840 describes it in Section
> >>>> 8.
> >>>>
> >>>>> But, there are a number of issues related to that, and I
> >>>>> don't think we want to define a mechanism which relies on the
> >>>>> usage of OPTIONS.
> >>>>>
> >>>>> And, if we simply say that it's "outside the scope of the
> >>>>> document",
> >>>>
> >>>> I was just about to say that ;).
> >>>>
> >>>> But, seriously, determining and negotiating caps happens very
> >>>> differently in different signalling protocols, so it doesn't
> >>>> seem reasonable to try and find answers for all of them in the
> >>>> generic trickle ICE spec.
> >>>>
> >>>> XMPP for example, has this part covered pretty well. If we
> >>>> determine that 3840 does not provide a way of doing the same
> >>>> then we can find another way for SIP.
> >>>>
> >>>> Eric had this idea, where a trickle ICE agent would simply fire
> >>>> a first offer that only other trickle ICE agents would accept
> >>>> and that any other SIP endpoint would answer with an error.
> >>>> This would be enough of a check and if it fails the caller can
> >>>> fall back to vanilla ICE.
> >>>
> >>> Sure, but that is not checking for trickle support before sending
> >>> the trickle offer :)
> >>
> >> Yes, the wording may need to be reviewed if we go for this.
> >>
> >>> Also, I guess I still haven't completely understood the backward
> >>> compatibility issue, but I guess I need to do some more reading.
> >>
> >> We describe these in Section 3 but the main problem is that a
> >> vanilla ICE agent that gets a first subset of candidates (that may
> >> also be empty) would declare failure prematurely.
> >
> > The text gives an example where the receiver (Bob) receives a
> > host-candidate-only offer, and start checks which fail.
> >
> > I think it's quite strange if Bob would reject the call at that
> > point. Because, no matter how many candidates the offer contains,
> > there might still be peer reflexive candidates created later,
> 
> How does Bob know that there's going to be a "later" ? It's just a
> vanilla ICE agent that assumed it received a full set of candidates, it
> checked them all, all checks failed.
> 
> Now, we could rely on Bob not doing anything rash and waiting patiently
> for reINVITEs from Alice in order to get more candidates ... but that
> might be about as risky as relying on empty INVITEs to be handled
> properly by everyone or on OPTIONS to be transmitted end-to-end.
> 
> Besides there are other possible failures, like for example the case
> where I get your server reflexive candidates long before you get mine so
> we perform checks out of sync (the case that I also described in my
> other mail to Martin).
> 
> > once
> > the offerer (Alice) starts sending the STUN binding requests. So, one
> > would think that Bob at least would wait for those.
> >
> >>>> Another option would be for trickle ICE agents to send empty
> >>>> INVITEs that somehow indicate they will be trickling but
> >>>> contain no actual offer. The offer that the remote side then
> >>>> adds in an OK response (or a provisional one) would clearly
> >>>> indicate whether they support vanilla, trickle, or no ICE at
> >>>> all, so the trickle agent would be able to answer accordingly
> >>>> with the ACK.
> >>>
> >>> I don't think we want to rely on empty INVITEs either, because
> >>> there are a number of issues related to that.
> >>
> >> Well, it might be worth investigating exactly what they are. The
> >> same applies to using OPTIONS and 3840.
> >
> > Well, to start with, empty INVITEs will work very badly with legacy.
> 
> You mean, because legacy devices don't properly implement 3261 in that
> regard?
> 
> That might actually be a good thing. An error response at this point
> would be a good indication that there's no trickle ICE support at the
> remote side.

In this way , as christer described, it won't save any time in call establishment. 

> > In addition, there migth be other functions which do not work with
> > empty INVITEs.
> 
> OK, I agree. It's a clumsy solution at best. It would be impossible for
> SIP user agents to translate a user request to start an audio,
> audio/video or some other media session (which is the typical rant you
> get for handling empty INVITEs). It was just a thought :)
> 
> > And, I am not sure how it would work with JSEP.
> 
> You mean, in cases of gatewaying SIP to WebRTC? I suppose it could just
> be translated to some custom signalling that actually does capability
> negotiation and then triggers a remote INVITE ... OK I know, it's a stretch.
> >
> >
> >>>>>> we could do the same for BUNDLE, and we wouldn't have
> >>>>>> issues with re-using the same ports in multiple m- lines
> >>>>>> etc :)
> >>>>>
> >>>>> Well, we are not saying that they should not be addressed at
> >>>>> all, or even now. Just that maybe they shouldn't be addressed
> >>>>> by this specific document.
> >>>>
> >>>> Perhaps we shouldn't say anything about finding out in advance,
> >>>> then. At least not use SHOULD.
> >>>>
> >>>> We CAN describe what may happen if the remote peer does not
> >>>> support trickle ICE, but leave it to that.
> >>>
> >>> What we'd like to avoid is having trickle ICE offers to vanilla
> >>> ICE agents and then having them fail in a user-perceptible way.
> >>>
> >> Maybe we could modify the "SHOULD verify support" to "SHOULD verify
> >> support or provide a mechanism for transparent fallback to vanilla
> >> ICE"
> >
> > In my opinion, if one has to do something extra (e.g. send OPTIONS),
> > the whole idea of trickle-ICE goes away, because at the end of the
> > day you won't save any time in call establishment.
> 
> The OPTIONS request does not need to be sent right before the call. It
> can be done once, upon bootstrap.

If the callee has already in your contact list, of course you can do that, but if you 
call a strange number at the first time, the OPTION request should be sent right 
before the call.


/Shitao

> > Now, if the browser is communicating with a ICE terminating gateway,
> > and if the browser performs SIP registration, then the gateway can
> > indicate trickle-ICE during registration.
> >
> > But, in the peer-to-peer case I don't know how it would work. It's
> > not even sure OPTIONS would reach the same remote peer as the
> > INVITE...
> 
> I agree. Not sure what to say other than, I agree that SIP does not have
> good mechanisms for XMPP like negotiation of entity caps but,
> personally, I do believe that finding one would be helpful here.
> 
> Maybe we can work on making sure that 3840 (or some other mechanism)
> would better allow for caps to be discovered in advance.
> 
> At the very least, if we can't find a way to do this gracefully with
> SIP, we can RECOMMEND it whenever the protocol allows it and try to
> devise a fall back strategy when it does not (e.g. with SIP).
> 
> > Q2: Offer/Answer Alignment: ---------------------------
> >
> >>>>> I assume the offers and answer are sent according to the
> >>>>> rules in RFC 3264.
> >>>>>
> >>>>> If so, when you talk about offers and/or answers "being sent
> >>>>> at any point", I think it needs to be clear that it's within
> >>>>> the rules of 3264.
> >>>>
> >>>> Good point! I think the text is indeed a bit unclear in that
> >>>> regard and we might be making some non-stated assumptions about
> >>>> the relation between 3264 Offer/Answer, the actual call
> >>>> answering, and the connectivity checks phase. We'll fix this.
> >>>
> >>> Thanx! :)
> >
> >
> > Q3: Enough is enough: ---------------------
> >
> >>>>> I think it could be useful for the answerer to tell the
> >>>>> offerer that it doesn't want/need any more candidates.
> >>>>
> >>>> Yes, sounds useful. Do you have any specific use cases in
> >>>> mind?
> >>>
> >>> Well, I guess any case where the remote peer knows it has a
> >>> public IP address (it will most likely be an ICE lite entity).
> >>
> >> Right, but in such cases the offerer would also know that a certain
> >> pair has succeeded so if they continue it might be with the purpose
> >> of finding a better RTT or a higher priority local candidate.
> >>
> >> I guess what I am trying to say is that a Binding Response is
> >> enough of an indication that trickling can stop. If it doesn't then
> >> maybe it's for a reason.
> >
> > Maybe it is enough... In any case I think it would be good to
> > document :)
> 
> OK. Agreed.
> 
> > Also, at least in cases where the remote peer only provide a host
> > candidate (because it has a public IP address), one should be smart
> > enough to figure out that there most likely will be no better
> > alternative.
> 
> I am not sure I got this.
> 
> Cheers,
> Emil
> >
> >
> > Regards,
> >
> > Christer
> >
> >
> _______________________________________________
> mmusic mailing list
> mmusic@ietf.org
> https://www.ietf.org/mailman/listinfo/mmusic