Re: [Ice] I submitted and plan to present draft-thatcher-ice-remove-candidate in Berlin

Peter Thatcher <pthatcher@google.com> Sat, 16 July 2016 14:59 UTC

Return-Path: <pthatcher@google.com>
X-Original-To: ice@ietfa.amsl.com
Delivered-To: ice@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F099712D5D3 for <ice@ietfa.amsl.com>; Sat, 16 Jul 2016 07:59:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.987
X-Spam-Level:
X-Spam-Status: No, score=-3.987 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-1.287, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 Iq6ZBfMiNQkq for <ice@ietfa.amsl.com>; Sat, 16 Jul 2016 07:59:09 -0700 (PDT)
Received: from mail-qt0-x234.google.com (mail-qt0-x234.google.com [IPv6:2607:f8b0:400d:c0d::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 17EBB12D13A for <ice@ietf.org>; Sat, 16 Jul 2016 07:59:09 -0700 (PDT)
Received: by mail-qt0-x234.google.com with SMTP id j35so73271223qtj.2 for <ice@ietf.org>; Sat, 16 Jul 2016 07:59:08 -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; bh=8cS9uxLouFQEqa4a0W05hKITMS8wl8vH4xaX5bo2B60=; b=G4GFAX3hGyJWJh5v+dZH318zx9qjJ5yQRL5cVun55hUNR2ocxkxBeHbB5FWxompRv2 tCk9JhGTzViWdjnTZV4dK88j5VmvLrK6CUITG32HMXrT7IFljHdj3cJKa4xXVXk4cD4T 8A2AD3C3rcID/RgAMAAGG92Y810EH7a4gTWdmikC1/qq6x3ozXPx5Vl+lMrRmJgqC2ry mQFiDK2TG9r3Bk5BkU9GWBMyi3M2As5GFMqT0OXswhM7VPThYF9twCy+2qY4FyFjAVrd +0PlH4MvBuhS6/B8AF7zAwp9h4CoIGRotTMnpkEpbRe0hq8USHVBYTH7Yj+r9gIqpkMz Zzdw==
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; bh=8cS9uxLouFQEqa4a0W05hKITMS8wl8vH4xaX5bo2B60=; b=QOr+hwKZR+hYbIaZ+WQnolUVnI4jfT99IKm3Qg7DhK8sdHCb5yNoJL0Cma9/34pSyM 41/DwpXhyp3NNy1NjTps2/rUx5FBrp/5j4A1mAo6gKGXd1eUAQDksLNRHhnV+HquR9Zr QTeYEHshb7Dhf1chK0+6Gxu04mBU5xKMt9Qv76I55/C3tATceOpnVZIZfliOX9DSe4KF foa/Pfm0y10icw0cz8OhM0Bz2BiTSeEwdx2BW3EDkHmoRaOd/eHrsSLfGsnGNFMsVY/W 9xsqZSf3p96T0VVfocX0lUqYspMM4w3WRyt9jpvwTyWrJu6KSDvH/gA8493bkJ8PvF6M tZ6w==
X-Gm-Message-State: ALyK8tIK+N6DVV/jqgcLVuN1kX3b7J6qfCqQhVK8xm3Xx2+mi04B3lIeXtfzG2ple4mGpoLoYBdc4u9WwdhYH9dC
X-Received: by 10.237.36.38 with SMTP id r35mr38821122qtc.3.1468681148030; Sat, 16 Jul 2016 07:59:08 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.55.46.4 with HTTP; Sat, 16 Jul 2016 07:58:28 -0700 (PDT)
In-Reply-To: <CAPvvaaKkNiZwZc7Xz=XMa8-WLqOBC5M95rG2y=WekypmFkaAtg@mail.gmail.com>
References: <CAJrXDUEQoBmjhkwX5AF9Oxny=PwJ0Y1a7UmPNdVRsA8b6AEF7g@mail.gmail.com> <CAPvvaaLL3BB3PJdimBXP+58UoeXnDs_j7P__pcfZwZj0-stosg@mail.gmail.com> <CAJrXDUEZiG3iFrgoFhCDNkR3nn-tcmZyZEXXLM5Q23SvPpx-CQ@mail.gmail.com> <CAPvvaa+jWeWmbqLKZRLMi6zyT0rMY1vkgfG3XG0SpAKeDXvYWg@mail.gmail.com> <CAJrXDUG9KHp91CFLMMsxJZ6quX5fRvRn7C4NrmnAsJDMoAxfQw@mail.gmail.com> <CAPvvaaKkNiZwZc7Xz=XMa8-WLqOBC5M95rG2y=WekypmFkaAtg@mail.gmail.com>
From: Peter Thatcher <pthatcher@google.com>
Date: Sat, 16 Jul 2016 07:58:28 -0700
Message-ID: <CAJrXDUHUKV3Q5RVPcdt6aLWarskUU1=eFcSfsUgrO7JBy41LYA@mail.gmail.com>
To: Emil Ivov <emcho@jitsi.org>
Content-Type: multipart/alternative; boundary="001a113d3aac1e2e3a0537c1fac0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ice/ITDfdth2mxNzJBxVeWMObX3rz0k>
Cc: "ice@ietf.org" <ice@ietf.org>
Subject: Re: [Ice] I submitted and plan to present draft-thatcher-ice-remove-candidate in Berlin
X-BeenThere: ice@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Interactive Connectivity Establishment \(ICE\)" <ice.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ice>, <mailto:ice-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ice/>
List-Post: <mailto:ice@ietf.org>
List-Help: <mailto:ice-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ice>, <mailto:ice-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 16 Jul 2016 14:59:12 -0000

On Thu, Jul 14, 2016 at 9:19 AM, Emil Ivov <emcho@jitsi.org> wrote:

> On Thu, Jul 14, 2016 at 1:06 AM, Peter Thatcher <pthatcher@google.com>
> wrote:
> >
> >
> > On Wed, Jul 13, 2016 at 12:45 PM, Emil Ivov <emcho@jitsi.org> wrote:
> >>
> >> On Wed, Jul 13, 2016 at 10:22 PM, Peter Thatcher <pthatcher@google.com>
> >> wrote:
> >> >
> >> >
> >> > On Tue, Jul 12, 2016 at 10:38 AM, Emil Ivov <emcho@jitsi.org> wrote:
> >> >>
> >> >> Are there any cases where you think this would be useful other than
> >> >> abetter connection with a server?
> >> >
> >> > Yes: continual gathering (aka continuous nomination) would benefit
> from
> >> > this.
> >>
> >> Last time we discussed continuous nomination (in Prague last year) it
> >> sounded to me that there were no arguments about what it was bringing
> >> on top of simple ICE restarts. It is my understanding that optimizing
> >> those (if at all necessary) was a more acceptable direction.
> >>
> >> So I don't think continuous nomination is a good argument here even if
> >> we keep waving it all over the place :) .
> >>
> >
> > Continual gathering is a separate topic that we can save for another day.
> >
> >>
> >> >> If all that is changing is the connection with the server then it
> >> >> sounds
> >> >> to me like we should rather come up with a way to update the local
> side
> >> >> of
> >> >> the binding and not bother the remote agent with it.
> >> >
> >> > That would be TURN mobility, or some new equivalent (
> >> > the TURN mobility draft has expired).
> >>
> >> Something like that yes.
> >>
> >> > That is an option that we'd like to
> >> > explore implementing, but it's much more work to standardize,
> implement,
> >> > and
> >> > deploy (both on client and server).  Whereas this is a simply
> mechanism
> >> > that
> >> > is quick to standardize, implement, and deply, and it's useful for
> other
> >> > things (as mentioned above).
> >>
> >> On a first glance the whole ICE idea is very simple and easy to
> >> standardise, implement and deploy: gather and try everything. pick
> >> what works.
> >>
> >>
> >> I think 13 years after the initial idea was being floated on the IETF
> >> we know better.
> >>
> >> In other words:
> >>
> >> First I don't think it's that simple at all. I am particularly
> >> concerned about potential race conditions with the ICE state machine
> >> and the trickling itself. Same for interactions with aggressive
> >> nomination.
> >>
> >> Second, while we may be able to solve the above, I am worried that the
> >> increased complexity will not justify something that is a very limited
> >> solution to a more general problem. So we are setting the stage for
> >> redundancy and that's not something we need with ICE.
> >>
> >
> > It sounds like you are making the argument that ICE has reached some
> kind of
> > "peak complexity" and can no longer be changed because it's already too
> > complex.  Is that what you're claiming?
>
> And question the existence of this wonderful working group? No, of course
> not ;)
>
> What I am claiming is that ICE is too complex for *frivolous* updates
> that are likely to be superseded by newer more complete solutions like
> the one you mentioned in TRAM.
>
>
While I'm happy that TURN mobility is progressing, I expect it will be some
time before wide deployments TURN servers​
​
​ will have support for it.  And clients working with TURN servers that
don't support mobility will find it useful to signal candidate removal.

And I thought of another case outside of TURN candidates and continual
gathering where this is useful: when a network interface goes away at the
beginning of ICE setup.  It's useful to tell the remote side when this
happens to possibly avoid checking useless candidates.


Oh, and another:  if you have many TURN servers (say, 8), then you'll have
8*8 = 64 TURN-TURN candidates pairs, unless you are capable of removing
candidates for worse TURN servers.  TURN mobility doesn't help across TURN
servers (does it?)



> >> Also, have you done any measurements or estimates on exactly what we
> >> are trying to optimize here? Some several hundred milliseconds of
> >> streaming over TCP rather than UDP?
> >
> >
> > I don't know what this has to do with TCP vs. UDP.
> >
> > The real world problem here is that if you have two network interfaces
> (WiFi
> > and Cell) and ipv4 and ipv6 and 2 TURN servers and try to connect to each
> > over TCP and UDP, you end up with 2 x 2 x 2 x 2 = 16 TURN candidates (at
> > least; this ignores TCP w/ TLS).  Then both sides do that, and you have
> 16 *
> > 16 = 256 TURN-TURN candidate pairs. That's a lot.
>
> Except that it's not (necessarily) 256.
>
> > So how do you avoid that problem?
>
> Well to begin with you can simply apply the same logic as the one you
> propose in your draft, but rather than doing it after sending
> candidates, you apply it before. That is, you start by sending your
> "better" candidates (the ones you wouldn't "deallocate" otherwise) and
> you only send your less desirable ones if you fail to obtain the prime
> candidates.


​Are you proposing to delay signaling the worse candidates?  I never like
the idea of delaying candidates because you don't know that the "better"
ones will succeed or not.  For example, if only TCP candidates work, how
long do you wait before you give up on UDP candidates?   Or if only cell
works, how long do you wait to give up on WiFi candidates?​



> This means that you would only end up with 256 if all of
> your prime candidates failed during gathering but then suddenly
> started working. Not a great likelihood for that to happen. On average
> you'll probably have one or two that leak out (and when that happens
> it might actually be an indication that your connection is better
> there).
>



>
> So, to be clear, I do agree that ending up with 256 candidates would
> be a problem, especially given the 100 pairs MAX constraint 5245.
>
> What bothers me with this draft is not the problem though: it's that
> the solution doesn't appear well thought out. For example: depending
> on your timing it is not at all clear that you will be able to remove
> candidates before you hit 100 pairs, before they start stun
> transactions or before you've already wasted the time you want to
> save.
>

​Actually, we did quite a lot of thinking through it.

We determined that if both sides remove worse TURN candidates and also
don't signal worse candidates, and also signal removal of worse candidates
before the addition of better candidates, then in the worst case scenario,
there are 2*N candidate pairs instead of N^2 candidates pairs.  Which means
in this example you would have 32 instead of 256.  And that's the absolute
worst case when all of your candidates are allocated in the worst possible
order, on both sides.  In more normal circumstances, it would reduce to far
fewer.
​


> In other words, this whole thing may well turn out to be useless half
> the time.
> ​ T
> hat's the sort of extra complexity we don't need with ICE.

> TURN mobility is one option, and I'd like to see TURN mobility
> > happen.  But candidate removal is also an option, and it's a lot more
> > simple.
>
> Again, I am not at all convinced of its purported simplicity and even
> less its efficiency.
>
>
The whole draft is approximately one sentence if you subtract the boiler
plate.  It's very easy to implement (it took us perhaps one day).  And it's
just an optimization, so it's not going to break anything.  I don't know
how much more simple it can get.

​In a world where TURN mobility is widely deployed and no one wants to do
continual gathering and WiFi never turns off in the beginning of call
setup, then perhaps this is useless.​    But we have use cases in which we
have already found this useful.



> Emil
>
> >>
> >> Emil
> >>
> >>
> >> >> Emil
> >> >>
> >> >>
> >> >> On Tuesday, 12 July 2016, Peter Thatcher <pthatcher@google.com>
> wrote:
> >> >>>
> >> >>> I submitted draft-thatcher-ice-remove-candidate and would like to
> >> >>> speak
> >> >>> about in my allotted time on the agenda when I will also be speaking
> >> >>> about
> >> >>> draft-thatcher-ice-network-cost and draft-thatcher-ice-renomination.
> >> >>>
> >> >>> It's a very simple draft. Basically it says you can "remove"
> >> >>> candidates
> >> >>> just like trickle-ice allows you to add candidates. You could
> probably
> >> >>> read
> >> >>> it in 3 minutes. Please do so:
> >> >>>
> >> >>> https://www.ietf.org/id/draft-thatcher-ice-remove-candidate-00.txt
> >> >>>
> >> >>> Thanks,
> >> >>> Peter (Chair hat off)
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> sent from my mobile
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> https://jitsi.org
> >
> >
>
>
>
> --
> https://jitsi.org
>