Re: [Ice] Eric Rescorla's No Objection on draft-ietf-ice-rfc5245bis-17: (with COMMENT) (excluding Security Considerations)

Christer Holmberg <christer.holmberg@ericsson.com> Mon, 19 February 2018 19:20 UTC

Return-Path: <christer.holmberg@ericsson.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 719501204DA for <ice@ietfa.amsl.com>; Mon, 19 Feb 2018 11:20:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.321
X-Spam-Level:
X-Spam-Status: No, score=-4.321 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ericsson.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 QH9OWUqT4nnZ for <ice@ietfa.amsl.com>; Mon, 19 Feb 2018 11:20:05 -0800 (PST)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1FC8F126CD8 for <ice@ietf.org>; Mon, 19 Feb 2018 11:20:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/simple; q=dns/txt; i=@ericsson.com; t=1519068000; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=WH6oJ7HvyujZ8hdUVu3zlq8svhq5qF3OuL5ApaYe2BI=; b=STIbiXoxjlkgdA2qX1RWTUdjq3CNgNRYVpbRRPHDODyZiR061VgcxoBsh2Q01BcX R5dNrRFeOIlApwDNy64J2pWEIowwPLGYi2Wu3tX6qXKQYSkUNtpnWWZ6TnkQHrKr YxQXUvcA5rmefZceMnEkoeCaAthRMG8N07J0bGVSoHE=;
X-AuditID: c1b4fb30-799639c000004778-14-5a8b2360baa0
Received: from ESESSHC010.ericsson.se (Unknown_Domain [153.88.183.48]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 1E.27.18296.0632B8A5; Mon, 19 Feb 2018 20:20:00 +0100 (CET)
Received: from ESESSMB109.ericsson.se ([169.254.9.195]) by ESESSHC010.ericsson.se ([153.88.183.48]) with mapi id 14.03.0352.000; Mon, 19 Feb 2018 20:19:35 +0100
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Eric Rescorla <ekr@rtfm.com>
CC: The IESG <iesg@ietf.org>, "draft-ietf-ice-rfc5245bis@ietf.org" <draft-ietf-ice-rfc5245bis@ietf.org>, "ice-chairs@ietf.org" <ice-chairs@ietf.org>, "pthatcher@google.com" <pthatcher@google.com>, "ice@ietf.org" <ice@ietf.org>
Thread-Topic: Eric Rescorla's No Objection on draft-ietf-ice-rfc5245bis-17: (with COMMENT) (excluding Security Considerations)
Thread-Index: AdOpa677O8VqdAW5ThyXNM/NhWOUGQAG8xsAAApmZdA=
Date: Mon, 19 Feb 2018 19:19:35 +0000
Message-ID: <7594FB04B1934943A5C02806D1A2204B6C17801A@ESESSMB109.ericsson.se>
References: <7594FB04B1934943A5C02806D1A2204B6C17768D@ESESSMB109.ericsson.se> <CABcZeBMTrP-4j1UChjvjMYtcCgf9MyhXOn_E6AasuizZGiLytA@mail.gmail.com>
In-Reply-To: <CABcZeBMTrP-4j1UChjvjMYtcCgf9MyhXOn_E6AasuizZGiLytA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [153.88.183.164]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprAIsWRmVeSWpSXmKPExsUyM2K7gW6CcneUwZRFqhbzT15ntljx+hy7 xcVZk9ksvl2otZjxZyKzxbXlr1kd2DwWbCr1WLLkJ5PH5MdtzAHMUVw2Kak5mWWpRfp2CVwZ 11/OYSpYlV1x/uQctgbGExldjJwcEgImEut/z2EFsYUEDjNKnNrhC2EvYZQ48Le2i5GDg03A QqL7nzZIWERAQeLXnxMsXYxcHMwCLxglzs18xQSSEBaol3i0qp8NJCEi0MAo8eXSFFaQZhEB K4mO89UgJouAqsSnvWog5bwCvhLnVixhBykXEpjCKLFvRSszSIJTIFDixedeNhCbUUBM4vup NWDzmQXEJW49mc8EcbOAxJI955khbFGJl4//sULYShJnv0xhA9nFLKApsX6XPkSrosSU7ofs EHsFJU7OfMIygVF0FpKpsxA6ZiHpmIWkYwEjyypG0eLU4qTcdCMjvdSizOTi4vw8vbzUkk2M wHg6uOW3wQ7Gl88dDzEKcDAq8fAyi3RHCbEmlhVX5h5ilOBgVhLhzQEJ8aYkVlalFuXHF5Xm pBYfYpTmYFES5z3pyRslJJCeWJKanZpakFoEk2Xi4JRqYExuuNq3zrBmw8ba3woLHpZ8u6n7 weV64Qshhzent+5snPqon0Vz7reHl/1rZ6t+/9S6i+f6zpikzdKeBe1SBjwLEmXfmfbkhUt4 /p7y+Zxgj0p2aPvXqR9VBP9NtV4fNb3oaVKx8JVL/7zCprjcik4OPbbjxqLCN7favhxU28JX kPJeSXtZ6SclluKMREMt5qLiRACrSgTqowIAAA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/ice/DpSjvn8yCf2agxeITR29N93Cw2w>
Subject: Re: [Ice] Eric Rescorla's No Objection on draft-ietf-ice-rfc5245bis-17: (with COMMENT) (excluding Security Considerations)
X-BeenThere: ice@ietf.org
X-Mailman-Version: 2.1.22
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: Mon, 19 Feb 2018 19:20:07 -0000

Hi,

(I have removed the tie-breaker comment, since it is covered in a separate thread)

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

Review in context at:
https://mozphab-ietf.devsvcdev.mozaws.net/D3312

>>   Nomination, Regular Nomination:  The process of the controlling agent
>>   indicating to the controlled agent which candidate pair the ICE Given that you have
>>   removed Aggressive Nomination, do you still need to refer to "Regular Nomination"
>
> People asked to keep it in the Terminology section, to make it clear that "nomination" is 5245bis refers to what was called "regular nomination" in RFC 5245.
>
> OK, but then you should explain why you are using "regular" here.

NEW:

Nomination:  The process of the controlling agent
      indicating to the controlled agent which candidate pair the ICE
      agents will use for sending and receiving data. The nomination
      process defined in this specification was referred to "regular nomination"
      in RFC 5245.

---

>>>   candidate gathering, (2) candidate prioritization, (3) redundant
>>>  candidate elimination, and (4) sending of the candidates to the peer.
>>> This is an odd diagram. There's no reason why these have to happen in sequence and in fact in Trickle ICE, they don't, so
>>> this diagram seems misleading., as well as potentially contradicting the beginning of S 5.1.1.
>>>
>>> "An ICE agent gathers candidates when it believes that communication is imminent. "
>>
>> I think the sequence applies to core ICE, and is also how it's done in 5245.
>>
>> The fact that trickle ICE does it differently I think shall be described in the trickle spec.
>>
>> However, it if helps, I could add the following note:
>>
>> "NOTE: This specification assumes that all candidates are gathered before they are sent to the peer. The trickle ICE extensions define procedures
>> where gathered candidates can be sent to the peer as soon as they have been gathered, while additional candidates are still gathered."
>
> The issue here isn't that all candidates are gathered before they are sent to the peer but rather  that the diagram implies that no gathering happens before the peer's 
> candidates are received. That's not a requirement of 5245, and, as I said, contradicts the beginning of S 5.1.1.

I could add the following sentence: "Note that an agent can begin gathering candidates at any point, even if it has not received any candidates (or even been contacted) by its peer."

---

>>>   The agent will receive a Binding or Allocate response.  A successful
>>>   Allocate response will provide the agent with a server reflexive Or nothing or an error.
>>>
>>>              (2^8)*(IP precedence) +
>>>              (2^0)*(256 - component ID)
>>>
>>> Isn't this the same formula as in S 5.1.2.1.
>>
>> Section 5.1.2.1 defines the generic formula. This instance is when it is used by a Lite implementation.
>>
>> Of course, in order to align, I could replace "IP precedence" with "local preference".
>
> My suggestion is to have one copy.
 
I can keep the formula in section 5.1.2.1.

But, in the case of Lite, we still need to say what values are used for the different formula parts - even if we don't show the formula.

---
 
>>      pair priority = 2^32*MIN(G,D) + 2*MAX(G,D) + (G>D?1:0)
>>
>> This was kinda terrible in 5245. Given that you use it once, maybe just have + GT(G, D)
>>
>> And then say GT(G, D) == 1 if G>D and 0 otherwise.
>
> I probably just don't see it, but what is the difference?
>
> It has the same semantics but it's easier to read. I mean, either you think the C syntax is self-explanatory or you
> don't. If you do, then you don't need to explain it. If you don't, it's opaque in the expression,

Personally I think the formula is clear, and we could remove the following sentence:

"where G>D?1:0 is an expression whose value is 1 if G is greater than D, and 0 otherwise."

---

>>>   pair to the remote candidate of the pair, as described in
>>>   Section 7.2.4.
>>>   IMPORTANT: You don't just send a STUN request, you start a STUN transaction,
>>>
>> There are multiple instances in the spec where it talks about sending STUN requests or Binding requests.
>
> I agree, but this statement is still confusing. Is there a reason not to change it?

I could say "by initiating a STUN transaction", but I'd prefer to have common terminology.

---

>>>   The ICE agent constructs a candidate pair whose local candidate
>>>   equals the mapped address of the response, and whose remote candidate
>>>
>>> IMPORTANT: When does this happen?
>>
>> The last sentence of the parent section (7.2.5.3)  says:
>>
>> "If a check is considered a success, the ICE agent performs (in order) the actions described in the following sections."
>
> Please add a reverse reference.

All 7.2.5.3.X. sections happens after the check has been considered a success, so exactly where do you want a reference?

---

>>> 7.3.1.3.  Learning Peer Reflexive Candidates
>>>
>>>This entire section seems to duplicate 7.2.5.3.1
>>
>> Section 7.2.5.3.1 describes how a STUN client detects a peer reflexive candidate then it receives a STUN response.
>>
>> Section 7.3.1.3 describes how a STUN server detects a peer reflexive candidate when it receives a STUN request.
>>
>> Sure, the text is similar, but separate procedures.
>
> This would benefit from consolidation.

We did a choice to keep the client and server procedures separated, so I'd like to keep it. 

Also, there ARE differences in the procedures, so we still need to cover the client- and the server cases separately.
 
---

>>>         in-progress transaction.  Cancellation means that the agent
>>>         will not retransmit the request, will not treat the lack of
>>>         response to be a failure, but will wait the duration of the
>>>
>>> Why are you cancelling In-Progress checks when you receive a peer-reflective check?
>>> If you receive two in a row, then it seems like this delays a successful check.
>>
>> True.
>>
>> So, I will remove the cancel part.
>>
>> Do you still think it should create a new binding request, or is the ongoing In-Progress check enough to check the pair?
>
> My initial reaction is you don't need to do anything extra, but I could easily be wrong here.

I had the same reaction, but I've asked Ari to think about this too.

---

>>> More generally, this document should explain how you end up in this
>>> situation: you only get here when "the source transport address of the request
>>> does not match any existing remote candidate", so how can it be on a check list
>>> unless this is the second observation of a peer reflexive.
>>
>> I am not sure I understand. The source transport sentence you refer to is related to detection of peer reflexive candidates.
>
> My question is what sequence of events can lead to this situation, as it is surprising to the readers.

Are you asking what events can lead to a triggered request?

---

>>>   Session Description Protocol (SDP) [RFC4566] is defined in
>>>   [I-D.ietf-mmusic-ice-sip-sdp].
>>> Presumably you want to cite 5245 S 14, which states:
>>>
>>> Consequently, when a controlling agent is communicating with a peer that supports options it doesn't know about, 
>>> the agent MUST run a regular nomination algorithm.  When regular nomination is used, ICE will converge perfectly 
>>> even when both agents use different pair prioritization algorithms.
>>
>> I am not sure it is related to SDP.
>>
>> I suggest to modify the first paragraph:
>
> OLD:
>
> "For example, the agent will not use the aggressive nomination procedure defined in RFC 5245."
>
> NEW:
>
> "For example, the agent will not use the aggressive nomination procedure defined in RFC 5245. In addition,
>   It will ensure that an RFC 5245-compliant peer does not use aggressive nomination either, as described in
>   Section 14 of RFC 5245."
>
> Perhaps:
> "as required by Section 14 of RFC 5245 for peers which receive unknown ICE options"

Looks good.

---

>> NEW:
>>
>>   One of the complications in achieving interoperability is that ICE
>>   relies on a distributed algorithm running on both agents to converge
>>   on an agreed set of candidate pairs.  If the two agents run different
>>   algorithms, it can be difficult to guarantee convergence on the same
>>   candidate pairs.  The nomination procedure described in
>>   Section 8 eliminates some of the tight coordination by delegating the
>
> some of the need for tight

Looks good.
 
>   selection algorithm completely to the controlling agent, and ICE
>   will converge perfectly even when both agents use different pair
>   prioritization algorithms. One of the keys to such convergence is
>   triggered checks, which ensure that the nominated pair is validated
>   by both agents.  Consequently, any future ICE enhancements MUST
>   preserve triggered checks."

--- 

>>>   there will be four transactions per call (one for RTP and one for
>>>   RTCP, for both caller and callee).  Each transaction is a single
>>>   request and a single response, the former being 20 bytes long, and Is this currently true?
>>>
>>> How many people still don't support RTP-MUX?
>>
>> I don't know. But, unless you use mux exclusive the offerer still has to gather and provide RTCP candidates.
>
> Right, but then there will be three transactions per call in the common case.

Assuming you are using offer/answer, yes. 

Maybe something like:

"In a typical VoIP deployment, where RTP/RTCP multiplexing is used, there will be 2-3 transactions 
per call, depending on whether fallback to non-multiplexing is supported."

Regards,

Christer