Re: [Ice] Thoughts on the "remote side gives 0 candidates" issue

Justin Uberti <juberti@google.com> Thu, 18 April 2019 21:52 UTC

Return-Path: <juberti@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 A62A81203E9 for <ice@ietfa.amsl.com>; Thu, 18 Apr 2019 14:52:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.501
X-Spam-Level:
X-Spam-Status: No, score=-17.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] 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 uQqQNeDV2sQr for <ice@ietfa.amsl.com>; Thu, 18 Apr 2019 14:52:07 -0700 (PDT)
Received: from mail-it1-x132.google.com (mail-it1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) (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 3C0D112014F for <ice@ietf.org>; Thu, 18 Apr 2019 14:52:07 -0700 (PDT)
Received: by mail-it1-x132.google.com with SMTP id k64so5630433itb.5 for <ice@ietf.org>; Thu, 18 Apr 2019 14:52:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Qxayuzd725UcEYYLqsDpq+RMtwz/ME9sARDbMbkOjzI=; b=E2qJWN1nj6TWf1eQGDajtjOydjZjlVDObGvg68lfs9pXOI/FblMFjKROddBNtUKkvx rsc3DPzFDACiN40E6mcI88BQMyzZrmOjPUypFSfeIL0224xiy3b7iKI3gzXiTPK7VTkZ 0yLgqxTSQvE43xNPhKUvHius/8JjQryKDpocpuc4SFXdUeLmN9IvTpATiLYWS63OnsoA LmOTo99CjWB5YnHfmbeH5/wxbxE/1hWgJLXYhkeUi/miWuR3n9skgiEvY7pzXnsqxZU2 KQpa9pZSVxuBSEHocONe3AozQq7bkrPChtyZc9qFU7bdY4yFjxvnJGwh6jY+DOAbJqn8 FycQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Qxayuzd725UcEYYLqsDpq+RMtwz/ME9sARDbMbkOjzI=; b=Do+RlzRdtfVUr8qTChnv6ffFcYs0JmNHrNwC6HtCOMc2Vepet07LcldKQmwsR4mq6X 1qEbfkeGYT8YsJuFEmwtbKCEQBMBoesSxIk1KsQYnA5ZpadsCkzUKHTcTzFVde3Qx8Wo faa6PrXbiz8HyiWewl93AGnu2cBJ+dDJTyu4PAOQSJn5piQB/cdjw/IQwgNz9FBIAar8 K8ZW7g2yLxtYuE4VDnNy7K7vxfnjkaTbzfHDiZodMfiGrFQ2alQvPxVrsGYnfzTKQdwC arHrZqWnEu6Ji0CZkqwFHarvmLzwfr5vt+0FhBT0vQ0LkYIDR8ddGMnhBmaBEYTl6/Aj UzOQ==
X-Gm-Message-State: APjAAAUv70fqCFp7Ece14VHG5xb7uuU5Oz18ukOD2cTdm14fKF/n34pN zEvbNEKtjkxcEH4NMcxmA1I7SgiYERkoDmaUZXsVfQ==
X-Google-Smtp-Source: APXvYqzSRqxA93FJ0N2CieyX71w3TLEQTzrXZu5Uf2ste8Azfh0hMuzCjzeqSnZMdJHrxwnf4wSGE/Js9txmFN3+06o=
X-Received: by 2002:a24:381:: with SMTP id e123mr239112ite.8.1555624326233; Thu, 18 Apr 2019 14:52:06 -0700 (PDT)
MIME-Version: 1.0
References: <CAJrXDUFZi5Xa16L04SgfyL3qe58z0w-j7yppt5JsDipGVkaVCQ@mail.gmail.com> <A6C96955-B679-45E1-B31E-1833285329B0@ericsson.com> <CAOJ7v-0O3UAyVcnbVD+urfP8fzqHPc5T+bZKNqySskyGq8COGA@mail.gmail.com>
In-Reply-To: <CAOJ7v-0O3UAyVcnbVD+urfP8fzqHPc5T+bZKNqySskyGq8COGA@mail.gmail.com>
From: Justin Uberti <juberti@google.com>
Date: Thu, 18 Apr 2019 14:51:54 -0700
Message-ID: <CAOJ7v-1XP=W38bGAAERbY_kWX4tynfOFby7mp++9zQWBezy6uw@mail.gmail.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Cc: Peter Thatcher <pthatcher=40google.com@dmarc.ietf.org>, ICE WG <ice@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005ed27a0586d503cc"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ice/-aynUy1NwjCLGW4kvsROFX6kTyI>
Subject: Re: [Ice] Thoughts on the "remote side gives 0 candidates" issue
X-BeenThere: ice@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 18 Apr 2019 21:52:11 -0000

Tracking the points raised here in
https://github.com/cdh4u/draft-ice-pac/issues/9 and
https://github.com/cdh4u/draft-ice-pac/issues/8


On Mon, Mar 11, 2019 at 9:30 AM Justin Uberti <juberti@google.com> wrote:

>
>
> On Mon, Mar 11, 2019 at 9:06 AM Christer Holmberg <
> christer.holmberg@ericsson.com> wrote:
>
>> Hi,
>>
>>
>>
>> > Anyway, here's what I've thought of so far:
>>
>> >
>>
>> > 1.  Yes, these all are issues (the 3 scenarios described
>> in draft-holmberg-ice-premature.xml) for a strict ICE impl that is what you
>> might call "impatient".
>>
>>
>>
>> Ice will melt if you wait too long… ;)
>>
>>
>>
>> > 2.  I'm guessing that in practice all ICE impls will have some timeout
>> (be "patient"), but I agree that writing that down in an RFC is a good idea.
>>
>> >
>>
>> > 3.  Doing it in the ICE WG makes sense.
>>
>> >
>>
>> > 4.  I'd prefer to call it "ICE patience" or "Patient ICE" rather than
>> "no premature failure".  Then it's a virtue rather than a lack of a problem
>> :).
>>
>>
>>
>> So, just to clarify, you suggest “Interactive Connectivity Establishment
>> (ICE) Patience” as the title, not only in the draft name?
>>
>>
>>
>> Works for me.
>>
>>
>>
>> > 5.  The current draft says "MUST wait for" and "N SHOULD be X".  But
>> together, that amounts to "SHOULD wait for X", so the whole
>>
>> > RFC ends up being a big SHOULD.  Is that normal for an RFC to only
>> have SHOULDs and not MUSTs?  Seems less meaningful because
>>
>> > you can't rely on the remote side doing the right thing.
>>
>>
>>
>> We did not want to mandate a specific duration. An endpoint can determine
>> the duration value based on many things, including the number of candidates
>> it provides and/or the number of streams, the reliability of the network
>> (see below) etc etc etc.
>>
>
> This is a reasonable point. We could say that the implementation MUST wait
> for enough time to receive peer-reflexive candidates. This value SHOULD be
> the local connectivity check timeout.
>
>>
>>
>> > 6.  The more I think about the timeout should be, the more I think this
>> problem is bigger than the issues outlined in the draft.
>>
>> > If you have very slow signaling, it's possible that you will end up in
>> this same situation regardless of how many candidates are
>>
>> > signaled (since the slow signaling prevents the candidates from
>> getting there).    For example:
>>
>> >
>>
>> > - Caller initiates ICE with no candidates
>>
>> > - Callee receives offer with no candidates, sets a timer of N seconds,
>> and sends back an answer with several candidates
>>
>> > - Caller receives candidates after N seconds and sends connectivity
>> checks
>>
>> > - Callee times out and goes to failed state
>>
>> > - Callee receives connectivity checks, but it's too late
>>
>> >
>>
>> > To avoid this problem, the timeout the callee uses must be based on the
>> expected signaling delay.  So, I think our "SHOULD be X" should
>> incorporate signaling delay"
>>
>
>>
>> Absolutely. We can for sure add more guidance regarding things an
>> endpoint has to take into consideration when setting the N value.
>>
>
> Maybe, but this number will never be precise. The connectivity check
> timeout itself is fairly arbitrary, but large enough to effectively address
> the problem. The existing text has a mention of this.
>
>>
>>
>> > 7.  I wonder if we should include a suggested workaround for RFC 8445
>> clients that are "impatient".  For example, if you trickle, do not
>>
>> > send "end-of-candidates" to the remote side until after N seconds (to
>> prevent it from going to the failed state).
>>
>>
>>
>> Note that the draft text only covers the case when an endpoint receives
>> candidates, discards all of them, and waits for peer-reflexive candidates
>> to arrive. These could be initial candidates, or trickled candidates.
>>
>>
>>
>> But, when it comes to trickle, and how long an endpoint waits for the
>> peer to SIGNAL additional candidates, I think that shall be covered in
>> trickle.
>>
>
> TBH, I think it sort of invalidates end-of-candidates, since it's now
> clear that you can't start pruning upon receiving end-of-candidates. We
> might just want to never send it (and perhaps remove it in a future
> revision).
>