Re: [MMUSIC] Fwd: New Version Notification for draft-uberti-mmusic-nombis-00.txt

Justin Uberti <juberti@google.com> Thu, 19 March 2015 05:13 UTC

Return-Path: <juberti@google.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 4438F1A892E for <mmusic@ietfa.amsl.com>; Wed, 18 Mar 2015 22:13:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level:
X-Spam-Status: No, score=-1.388 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
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 QT6MhnrTWn76 for <mmusic@ietfa.amsl.com>; Wed, 18 Mar 2015 22:13:49 -0700 (PDT)
Received: from mail-ig0-x22f.google.com (mail-ig0-x22f.google.com [IPv6:2607:f8b0:4001:c05::22f]) (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 A07A31A891D for <mmusic@ietf.org>; Wed, 18 Mar 2015 22:13:49 -0700 (PDT)
Received: by igcau2 with SMTP id au2so4182713igc.1 for <mmusic@ietf.org>; Wed, 18 Mar 2015 22:13:49 -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:content-type; bh=GJ8wBYOfbL9yJ4PMbnd+EnpTuqoEnHYWZIg3qFc0WSc=; b=YQdwz4g0mZsN29c9ElS01LTQPADA7WLdxh6LA0/CtmeYBUKlXYPijn8IdeVDEVgRa3 EUrljtZ6bCh2WowmjDVzvMLfGdbkKN+GEgqGdVfcvXswFtgqoj2Gpqf1YC0W9XhFzbI5 WfCgni6adFaiKfdL+52J3LYQ31tsKyC2TqJoh6PGAHA1yEmMcMv3YCZ9yTwWwzFPcrIW ntBEmwftatFIei2FdnIMBaxTwGJyRPcw9300GX5NDl2qhguKjpIcpETj75hHyDkaGe7n 8i9V6B/X3WzQLN6nYRyanu4EoBy66bBv4PWmMZ4uNxTvJhwHpC16A4dnzQ64n5h9qXPb ND+w==
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:content-type; bh=GJ8wBYOfbL9yJ4PMbnd+EnpTuqoEnHYWZIg3qFc0WSc=; b=H8iw2hQqLiIVOPFDgg6tH4Z3Os7f7Pjd/PuZjCd6ZIrHVcA6b5xIlD/rIQocYq20EU 45ek1sbAfHOvOyoHCpZcCkHQJ1Ge3CsALGF/GPS3JWG+aBwRNhE9/KVnYqYlP77mrMsJ f4Qoanbb5KWmgsYsdZTG0dRLuSt9INmjpx6rSwVeionCx1LhykHWOAVqYDvxPyGjN8u5 CT0ZIbGR9yufCqof9iZcwpBkThVM+7/u3TeHIBxklKFIzLprj3uXagTfQ1OnJhToLNUH KAUJeAYXLQZwYto4XbDh0cHxCsMHmLh8qO3JPQ0J+M3REIrWeVK5Sx/raMV/dJR1kCEA gu1w==
X-Gm-Message-State: ALoCoQmylyC8VgDaRwgS/1DB1hbPGz6zut0T758QlKZUpZouLQt37Mzl81Z3pJHOIIZ0Y1CL6acm
X-Received: by 10.107.9.213 with SMTP id 82mr118626809ioj.57.1426742028884; Wed, 18 Mar 2015 22:13:48 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.64.64.42 with HTTP; Wed, 18 Mar 2015 22:13:28 -0700 (PDT)
In-Reply-To: <etPan.550a0f0d.520eedd1.32e@Robin-iMac.home>
References: <etPan.550a0f0d.520eedd1.32e@Robin-iMac.home>
From: Justin Uberti <juberti@google.com>
Date: Wed, 18 Mar 2015 22:13:28 -0700
Message-ID: <CAOJ7v-3T3yoMigTehDWVXAv1q0b1Y0JE=+7_esLjGAcxGi=M5Q@mail.gmail.com>
To: Robin Raymond <robin@hookflash.com>
Content-Type: multipart/alternative; boundary="001a113ebfd8d1823005119d43b2"
Archived-At: <http://mailarchive.ietf.org/arch/msg/mmusic/fY3tD_kPzrskbk09mcDWGNJSOak>
Cc: "mmusic@ietf.org" <mmusic@ietf.org>
Subject: Re: [MMUSIC] Fwd: New Version Notification for draft-uberti-mmusic-nombis-00.txt
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: Thu, 19 Mar 2015 05:13:52 -0000

On Wed, Mar 18, 2015 at 4:49 PM, Robin Raymond <robin@hookflash.com> wrote:

>
>
> [BA] As noted in Section 3.3:
>
>
>    the controlling endpoint MUST have some way to indicate to the
>
>    controlled side that specific candidates are to be kept alive.
>
>
> To achieve this goal, is it necessary to send Binding Requests for each
> candidate pair to be kept alive? This could consume quite a bit of energy,
> particularly if there are multiple candidates on both sides.  I wonder if
> there are ways to achieve the goal more economically.
>
>
> For example, on the controlled side, if the relay candidate receives a
> check but the corresponding host candidate doesn't, it would make no sense
> to prune the host candidate.  Similarly, if a relay candidate on the
> controlled side is kept alive due to receipt of a periodic check
> originating from a WLAN interface, does the controlling side also have to
> periodically wake the WWAN interface so as to check that same relay
> candidate?  I realize that the WWAN interface does need to be periodically
> awoken to satisfy the requirements on RFC 5245 Section 4.1.1.4.
>
>
> The explicit timeout approach could reduce the burden still further by
> reducing the interval at which checks need to be done.
>
> [Justin wrote]:
> This is a good question, but I think any NAT pinholes for established
> pairs need to be kept alive, similar to what is described in 4.1.1.4 for
> candidates. Given that keeping your srflx candidates alive will require
> waking the wwan interface somewhat frequently anyway, pinging existing
> pairs can probably be done with little additional energy expenditure if
> properly coalesced. Or, if this is a significant issue, the app may not
> choose to keep wwan active if wifi is solid.
>
>
> As a general note, this draft is very much on the right direction.
>

Thanks - glad it looks useful.

>
> As for having to keep the wwan ‘hot' for the sake of pinhoeles/turn - not
> necessarily. Consider the case where the controlling side is on mobile but
> the controlled side is desktop with TURN. The mobile side might keeps it
> wwan IP alive but not used (e.g. IPv6 interface). The controlled side might
> keep it’s TURN candidate alive as a backup should the primary path fail.
> Neither side need to be actively pinging between each other but keep their
> respective interfaces alive in the event of primary path failure. You are
> correct that the pinhole won’t remain open since it’s not an active tested
> path but both are good back up candidates in the event of primary path
> failure (and if both check simultaneously then the pinholes will open). The
> moment both sides simultaneously detect failure they could both start doing
> connectivity checks to the other which will re-open the pinholes and allow
> traffic on the backup path (but this can only happen if candidates are NOT
> pruned away).
>

This doesn't work in all cases, e.g. NATs with address-dependent mapping.
For those, the binding must be kept warm or else it will become invalid and
repinging will generate a new binding.


>
> I think the couple of “TODOs” you have in the draft will resolve many of
> the remaining issues I see. Specifically, 5.2, “should the controlled side
> have any say …]. My answer is “yes”, either side should be able to send a
> connectivity check to keep an active candidate pair alive but I agree
> controlling side should always pick the nominated/active path.
>

I wasn't proposing the controlled side be able to keep pairs warm; it
probably makes no sense to do so since the controlling side decides what is
actually used. The question here is whether the controlled side can
specifically drop 'backup' candidates that have some downside, e.g. cost.
It seems potentially useful so I agree we should provide for this.


> The other TODO "decide if this implicit timeout approach is correct, or if
> we should have some sort of approach similar to TURN LIFETIME indicating
> when a pair should be GCed, with LIFETIME==0 indicating immediate GC.” I
> think a LIFETIME option for a candidate (and indirectly would be the
> combined pair lifetime) would be a good idea. This would allow an ice
> transport to know which remote candidates are considered gone vs still
> around / available. Thus candidate pairs can be kept as “backup” should the
> primary path(s) look like it is failing and they can be checked again for
> connectivity as long as both local / remote candidate pairs are still
> considered alive. When a primary path looks like it might be failing, both
> parties could recheck simultaneously their backup candidates (which would
> open firewall pinholes at that time to each other) and the backup
> candidates could therefor work and a temporary switch could happen to the
> backup candidates until the primary path either comes back [or fails
> completely]. This will work well with TURN and/or IPv6 on mobile. This
> would require ICE not prune non-failed pairs so long as the combined
> candidate pair LIFETIME was still alive.
>

The point of LIFETIME would be to declaratively tell the controlled side to
stop using a pair. Otherwise, we have to use some sort of timeout. I think
either could work, it's just a question of whether LIFETIME provides more
flexibility.

>
> There is another scenario that does cause me concern though. I’m concerned
> that ICE will cause fallback to wwan (good) but it will not recognize that
> a wlan was back available again (bad). A wlan can temporarily be disrupted
> causing a fallback to wwan. Because candidates are only trickled when they
> become availing and the IP for the wlan never goes away when connectivity
> fails, the wlan candidate are never trickled again (and a new STUN test
> might reveal the same firewall port so that won’t be trickled again
> either). If the wlan interface is just intermittently failing then remote
> party may have pruned the wlan candidates away and never retest it again
> and thus the connection remains on wwan permanently. Since the connection
> is working there’s no reason to restart ICE either. So I think there is a
> need here that a wlan device may have “reachability” checks it conducts on
> its own and then re-trickle the candidate back when it detects
> “reachability" for the wlan has changed to available.
>

As I understand it, the failure scenario here is for a wlan pair to be
selected, then wlan fails, wwan is selected, and wlan is pruned due to
multiple failures. I think this is a subset of the problem of being on
wwan, and then entering an environment where wlan is available - in this
case, you'd want to collect new wlan candidates since the wlan interface is
preferred.

>
> So I’m +1 on this draft and +1 for controlled keep-alines and definitely a
> +1 for candidate “LIFETIME".
>
> -Robin
>
>