Re: [MMUSIC] Trickle ICE

Christer Holmberg <christer.holmberg@ericsson.com> Fri, 12 October 2012 18:04 UTC

Return-Path: <christer.holmberg@ericsson.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 7B7B921F873B for <mmusic@ietfa.amsl.com>; Fri, 12 Oct 2012 11:04:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.119
X-Spam-Level:
X-Spam-Status: No, score=-6.119 tagged_above=-999 required=5 tests=[AWL=0.130, BAYES_00=-2.599, HELO_EQ_SE=0.35, 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 YlIOHvfUrWkJ for <mmusic@ietfa.amsl.com>; Fri, 12 Oct 2012 11:04:25 -0700 (PDT)
Received: from mailgw7.ericsson.se (mailgw7.ericsson.se [193.180.251.48]) by ietfa.amsl.com (Postfix) with ESMTP id B7B0621F852E for <mmusic@ietf.org>; Fri, 12 Oct 2012 11:04:03 -0700 (PDT)
X-AuditID: c1b4fb30-b7f7d6d0000042ea-27-50785b92cb12
Received: from esessmw0247.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw7.ericsson.se (Symantec Mail Security) with SMTP id 6D.3E.17130.29B58705; Fri, 12 Oct 2012 20:04:02 +0200 (CEST)
Received: from ESESSCMS0356.eemea.ericsson.se ([169.254.1.243]) by esessmw0247.eemea.ericsson.se ([153.88.115.93]) with mapi; Fri, 12 Oct 2012 20:04:02 +0200
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Emil Ivov <emcho@jitsi.org>
Date: Fri, 12 Oct 2012 20:04:01 +0200
Thread-Topic: [MMUSIC] Trickle ICE
Thread-Index: Ac2og8EmYe1agrGnQLKee3puxBfKfAAHcngj
Message-ID: <7F2072F1E0DE894DA4B517B93C6A0585340BAFAA87@ESESSCMS0356.eemea.ericsson.se>
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> <7F2072F1E0DE894DA4B517B93C6A0585340BDCEF78@ESESSCMS0356.eemea.ericsson.se> <5077FE17.3010800@jitsi.org> <7F2072F1E0DE894DA4B517B93C6A0585340BDCF1D9@ESESSCMS0356.eemea.ericsson.se>, <50782585.9070204@jitsi.org>
In-Reply-To: <50782585.9070204@jitsi.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsUyM+Jvre6k6IoAgwvz1C3W7JzAYjF1+WMW ByaPJUt+Mnn8fxMYwBTFZZOSmpNZllqkb5fAlbHy4DPWgpm2FYde72dvYDxp0MXIySEhYCLR fHAyI4QtJnHh3nq2LkYuDiGBU4wSm6YuZYdwFjJKnF+9CqiKg4NNwEKi+582SIOIgLxEd9si JhCbWUBFYt+9G2AlLAKqEqeWhYCEhQUUJW4d38QGUa4k8fz5JFYI20ji37+VYHFegXCJX2cu sECs+s0i8e1CPztIglNAU+Lv/ktg8xmBjvt+ag3ULnGJW0/mM0EcLSCxZM95ZghbVOLl43+s EPWiEnfa1zNC1OtILNj9iQ3C1pZYtvA1M8RiQYmTM5+wTGAUm4Vk7CwkLbOQtMxC0rKAkWUV o3BuYmZOerm5XmpRZnJxcX6eXnHqJkZg5Bzc8ttgB+Om+2KHGKU5WJTEefVU9/sLCaQnlqRm p6YWpBbFF5XmpBYfYmTi4JRqYNwXe094d8Q5lUlNH/brpf0uKzk4W7hsQu/FZYuTrQ78mZ9W +2XL41YRX/EMWYlsv84ONcMVyj+K9859vPP9cqlzri63r265O4vTM+N/Wlra/usVbsrvm3a+ O7LMdt8v8XlhbQkGXr4L+jpSA/Y8VjvuIKg7sePx/yCT5B92jvzqZ50n72bccEiJpTgj0VCL uag4EQCI4t/ragIAAA==
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 18:04:26 -0000

Hi,

Q1: Remote endpoint support (SIP):
-------------------------------------

>>>>>>>> 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.
>>>>
>>>> Bob knows that there will be STUN requests coming, and based on
>>>> those additional candidates (peer reflexive) might be created.
>>>
>>> Chances are that no STUN requests will be arriving unless Bob is
>>> also making simultaneous checks toward Alice's SR candidates, which
>>> he isn't because he doesn't have them.
>>
>> Since Alice supports trickle, we can specify that Alice shall not
>> wait for Bob's checks :)
>
> It's Bob that I was worrying about. As soon as all his checks fail
> (which can happen quite quickly if a similar host address also exists in
> Bob's network and returns ICMP unreachable), all his check lists will be
> in the failed state, and then its entire ICE processing will hence also
> move to failed.

Correct.

But, my point is that Bob might get additional candidates (peer reflexive ones) once he gets the STUN checks from Alice, so if he is smart he will wait for those before he declares failure :)

But, again, I agree that Bob may not do that, and will declare failure as soon as the host candidate present in the offer fails.

> The whole thing may even fail before that. Bob would probably reject the
> offer outright if it didn't contain any candidates. He may also do the
> same if it only has IPv6 candidates while Bob is an IPv4 only host.
>
> I am sure that one can also find other cases where lack of connectivity
> can be precluded before actually running the checks and in all of them
> it is entirely possible that Bob won't even send his candidates.

I don't disagree. Without doubt there will be cases where Bob will reject the offer "too early" :)

> And yes, 5245 does say that the controlling agent should terminate the
> session when ICE processing fails, which may partially alleviate the
> first case above although I am not sure all ICE implementations would
> behave properly and accept new candidates once all their check lists
> have moved into failed.

My dream and vision is that they don't move to fail until they have received a STUN check, in case it will create additional candidates :)

> Even if they did, it still wouldn't help with the other two cases (i.e.
> no candidates, or different address families) where lack of connectivity
> can be determined without any checks at all.

Sure.

(Of course, if Alice is dual stack, she can provide both IPv4 and v6 host candidates in the offer)


>>>> Having said that, I agree that legacy ICE endpoints might not
>>>> behave that way, and reject the call, but then we would simply do
>>>> a fallback to legacy ICE.
>>>
>>> The problem is that in this case Bob might have been alerted of the
>>> call and witnessed the failure, so a fallback to vanilla ICE would
>>> not be particularly smooth.
>>
>> I think that's an implementation issue, whether Bob is alerted before
>> a working ICE pair has been found.
>
> True. Still, 5245 allows for it and people have argued it has sometimes
> been presented as a protection of privacy: I won't advertise any of my
> user's addresses before I am sure my user actually wants to talk to the
> caller. I believe one of the Jingle XEPs have a similar statement.

It may happen, yes. But, even if the user is alerted, keep in mind that Alice may
also terminate the call establishment.


>>>>>> 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.
>>>>
>>>> Yes, but in that case there is an even less chance that the
>>>> OPTIONS and INVITE requests will reach the same remote peer (in
>>>> case of forking).
>>>
>>> True. Maybe adding gruu-s into the mix could help ... This would
>>> indeed imply that the caller needs prior knowledge of the callee
>>> (e.g. adding them to a contact list) but maybe we can have this and
>>> then another solution for the first call/unknown callee case.
>>>
>>> I am pretty much out of ideas for the time being anyway, so if you,
>>> or anyone else, can think of something that would miraculously
>>> solve the issue, I'd be very happy to hear it.
>>
>> I think we simply need to accept the fact that the offer may be
>> rejected.
>
> Personally, I am OK with this, especially as far as SIP is concerned
> (given the deficiencies in the caps neg support). However if we go for
> this it may be best to agree exactly how things should fail so that:
>
> 1 - time is not wasted
> 2 - reasons for the failure are easily related to non-support of trickle ICE
> 3 - failures happen in a predictable way
> 4 - users are not bothered with them

I agree we should have text about it.

And, I have no problem to give examples on how all this can be avoided. It's the "SHOULD use them" that is my main issue :)

>> Of course, people CAN use OPTIONS, or whatever mechanisms they want
>> to figure out before sending the offer, but I don't think we should
>> have that as a SHOULD.
>
> OK, I can agree with making the "check support in advance" a MAY.
> However defining a try and fallback procedure for usages (including SIP)
> seems quite important to me.

I agree.

Q3: Enough is enough: 
----------------------

>>> All in all, making assumptions on the receiving end is always a
>>> risk. If the host sending the candidates knows that they are its
>>> best/only candidates, then it could indicated so by sending the
>>> end-of-candidates message we describe in the draft.
>>
>> In case Bob has a public IP address, why does Alice need to send an
>> offer with the additional candidates in the first place? Why not
>> simply start using them, and Bob will process them as peer reflexive
>> candidates?
>>
>> (I can understand that signaling is needed in case per-candidate
>> ufag/pwd values are used, but let's assume a case where the same
>> values are used for all candidates.)
>
> My point was that Bobs IP address being public:
>
> * does not mean it is the best option: VPN, tunnelling, and multiple
> interfaces can all generate public host IP addresses that are a lot less
> preferable to server reflexive ones.
> * does not even guarantee that it's reachable. Connectivity may be
> administratively prohibited, routes can be down.

Alice CAN continue to gather candidates, in case there are better ones. My question was why she needs to signal them to Bob in a new offer, instead of simply start sending STUN checks associated with the candidates? Bob will then process them as peer reflexive candidates.

Regards,

Christer