[MMUSIC] Continuous Nomination (Was: Faster ICE by role reversal?)

Emil Ivov <emcho@jitsi.org> Fri, 07 November 2014 22:41 UTC

Return-Path: <emcho@sip-communicator.org>
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 B59AA1A1B61 for <mmusic@ietfa.amsl.com>; Fri, 7 Nov 2014 14:41:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, 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 uYTff7aLQEmx for <mmusic@ietfa.amsl.com>; Fri, 7 Nov 2014 14:41:13 -0800 (PST)
Received: from mail-wg0-f42.google.com (mail-wg0-f42.google.com [74.125.82.42]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 042401A1B3B for <mmusic@ietf.org>; Fri, 7 Nov 2014 14:41:13 -0800 (PST)
Received: by mail-wg0-f42.google.com with SMTP id k14so4754397wgh.1 for <mmusic@ietf.org>; Fri, 07 Nov 2014 14:41:11 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=JKLcUfReFyibJhTxnC+3kvhk7tUpkkOOk2xtkicMPWw=; b=L5YR7dlpEpPYVbX4Wa9yddtxf0CvzWg3FuMzfMHRxuNBgonCQU0DDCOj4TL8A6Aeyu rc6FRyZfg35WwJTROOux/hrxt7keHEqFb4NOOwdxeKcZNGm5lbmO/wmFU5WyZvn1nurL y11YYlepn0JYQvlqL4mvh/rKg17m0SXnTj7Pbyucu2yPuxxzAg3IGUd3m3QLFQrJWFrX 5BtezGZXypwrazDAKBTHjWsvmVGKUQ+XLH1xw+Mxp7xOSMCmH2daRwcimtagvvKY5G9F FRCQrpXXxTMdTnCnT/G2W86aMQzzwmP9zl0xEG8hIW801zoDNLO6FK0cYGHr8G0mwQ63 qb+w==
X-Gm-Message-State: ALoCoQn4pE1YlSTf3T7hWB0x76LCFSOpWvDtdeTA2iak+SP1mw4Z7wUDrqGAm3xWYFwtGVTQ3+QO
X-Received: by 10.180.99.163 with SMTP id er3mr9109472wib.18.1415400071798; Fri, 07 Nov 2014 14:41:11 -0800 (PST)
Received: from [192.168.1.21] (9.6.69.91.rev.sfr.net. [91.69.6.9]) by mx.google.com with ESMTPSA id d14sm13408502wjz.26.2014.11.07.14.41.09 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 07 Nov 2014 14:41:10 -0800 (PST)
Message-ID: <545D4A84.1000608@jitsi.org>
Date: Fri, 07 Nov 2014 23:41:08 +0100
From: Emil Ivov <emcho@jitsi.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Justin Uberti <juberti@google.com>, Martin Thomson <martin.thomson@gmail.com>
References: <CABkgnnVrXKz-7M_Qn7pSZBxCJTdQYPDOcEzrEbbv6eYrQs1Dhg@mail.gmail.com> <67A963F0-3667-47A7-B116-4712BA1147AD@vidyo.com> <CABkgnnV+ARP5xC-z=3AshUObUX_m3uisLY6NcsgEZVq-1drU8Q@mail.gmail.com> <DD8DA86E-3C6A-44A7-B4E1-92CC0742369D@vidyo.com> <CAOJ7v-1OpbtEujbp4rZOnmOxXB2hoTfjtn5U_kR5wML5sXD_4Q@mail.gmail.com> <545911E9.3070300@ericsson.com> <CAOJ7v-2ikhh+2Y5avJOjR=86UikOfSo169k3jSvFsU=52o3+zw@mail.gmail.com> <CAOJ7v-1oS999xAd52ANcWfW98Dq7nPJV0=1Z5o9fPigFaT7+1w@mail.gmail.com> <CABkgnnVCpRJUdKn34jsds1Dwe8nOA8uoJw4T35ogQ-LTtyb4Rg@mail.gmail.com> <CAOJ7v-1eG43K=vfSuLyuAs2W+_jPTaLpWRcGaCwo=v7XCcHSqA@mail.gmail.com>
In-Reply-To: <CAOJ7v-1eG43K=vfSuLyuAs2W+_jPTaLpWRcGaCwo=v7XCcHSqA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/mmusic/gRUcNqghuMjTMM8IOD716rvjWsQ
Cc: Jonathan Lennox <jonathan@vidyo.com>, Ari Keränen <ari.keranen@ericsson.com>, mmusic <mmusic@ietf.org>, Dan Wing <dwing@cisco.com>
Subject: [MMUSIC] Continuous Nomination (Was: Faster ICE by role reversal?)
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: <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, 07 Nov 2014 22:41:15 -0000

Hey all,

In the context of the ongoing discussion on two potential ICE 
improvements, I wanted to spin off this thread on the idea of continuous 
nomination.

So first of all, as I already mentioned in Toronto, I am very much in 
favour of a mechanism that would allow ICE processing to yield more than 
a single nominated pair. Back then the discussion was about MPRTP but 
there would likely be other use cases as well.

In that context, it seems perfectly valid to me that nomination among 
all validated pairs can occur multiple times within a session. Again, I 
find this to be a very valid and useful feature.

I am however bothered by the "ICE never ends" suggestions made by the 
document below and more specifically by the fact that candidates may 
continue to be trickled forever. I think that's both unnecessary and a 
problem.

It is a problem because

a) being able to know when the remote agent is done trickling is one of 
the very reasons we started the work on trickle ICE. This allows to 
quickly and deterministically detect and declare failure when it occurs. 
Not having this would require implementations to use magic timers of the 
sort: "Surely if I couldn't connect in .. say 20 seconds ... then the 
situation must be hopeless ... I think".

b) being able to continuously trickle new candidates forever and ever 
means that they would have to be paired with all of the peer's *initial* 
candidates. This means that ICE agents would have to maintain all 
gathered candidates even when they are not working for them.

More importantly however, the whole concept is likely unnecessary 
because an ICE restart only sounds scary, and it doesn't actually need 
to be ;).

A restart is non-disruptive as media can keep flowing while we are doing 
ICE processing.

5245 already supports pair reuse and we can easily port that concept to 
multipath ICE.

The one thing that we might be missing today is the syntax to allow for 
a restart without using offer/answer. This would be trivial to resolve: 
we just need to allow trickling a restart command. Sending your ufrag 
and pwd in a trickle update should do the job.

To put that into perspective, let's look at the following use cases:

I. You have used the new multipath ICE and you have successfully 
discovered a couple of working routes: one going through your wi-fi 
interface and another one going through 4G. During your session, you 
move closer to your Wi-Fi access point so you detect that RTT and packet 
loss start looking better on your Wi-Fi interface.

You decide to switch from 4G to Wi-Fi.

*No ICE restart* would be necessary here because no new paths would need 
to negotiated. This would be a native feature of the new multipath ICE.

II. You start on Wi-Fi in the presence of a 4G interface that you keep 
for backup. Multipath ICE comes up with pairs over both your interfaces. 
I don't believe this requires an ICE restart either. You just switch 
between pre-existing path and one of them expires as pointed out in 
Justin's document below

III. You setup a session at a point of time where 4G is your only 
working interface. Your Wi-Fi interface then comes up and you want to 
include it in the game. Here's what you do:

a) You gather host, srflx and relay candidates for the new interface.
b) You gather candidates on the old interface that haven't been valid 
before but that are worth trying again (this is non-essential)

d) you then trickle a new ufrag and pwd to trigger a restart.
b) you batch trickle all currently working candidates that you'd wish to 
preserve (you can omit any candidates you no longer wish to use, for 
whatever reason).
c) you trickle the newly gathered candidates.

The remote party, your peer, would then do the following

a) Gather all candidates that didn't work before but that deserve a 
second chance. This time *this is essential*. SRFLX candiates on your 
peer might not have worked with your 4G connection but they have every 
chance of working this time. There are a number of other scenarios where 
candidates would be worth retrying.

b) Your peer would then trickle back to you all the working candidates 
it wishes to preserve (as long as they are still valid)
c) It trickles all candidates it gathered for the occasion, that it 
wishes to retry.

Connectivity checks then proceed as usual. It might be worth paying 
special attention to the in-use candidates. Implementations might want 
to either confirm that data is still flowing there, or start the checks 
with them. This would determine how urgently ICE processing needs to 
yield results and it may imply changes in nomination strategies.

Thoughts?

Emil


On 7.11.14, 0:44, Justin Uberti wrote:
> Agreed.
>
> I wrote up a slightly more fleshed-out proposal at
> https://docs.google.com/document/d/1P1XPCRJKBkSjwCzIIEUJmp7V694_FzJQe-fvN8bk-Xw/edit
>
> On Thu, Nov 6, 2014 at 3:29 PM, Martin Thomson <martin.thomson@gmail.com
> <mailto:martin.thomson@gmail.com>> wrote:
>
>     On 6 November 2014 13:47, Justin Uberti <juberti@google.com
>     <mailto:juberti@google.com>> wrote:
>     > I looked into how MICE works; I think that continuous nomination might be
>     > able to effectively support that use case, as well as the case that Brandon
>     > was interested in, namely picking the route that uses the best set of TURN
>     > servers.
>
>
>     I've always believe that continuous ICE operation was the only way to
>     ensure proper reliability.  Multipath or otherwise.  You just need to
>     work out when it is safe to completely stop on any given pair,
>     assuming that you don't want to be testing the complete mesh all the
>     time.  But you also might want multiple paths available, or maybe
>     backup paths.
>
>

-- 
https://jitsi.org