Subject: [Ice] Issue with candidate deduplication rule

From: Taylor Brandstetter <[email-masked]>
Date: Mon, 27 Jun 2016 11:45:29 -0700

At IETF 95, the decision was made to choose the candidate with the higher
priority if duplicate candidates are received (see:
https://github.com/ice-wg/trickle/issues/6). However, I see a potential
issue with this, specifically regarding peer reflexive candidates.

It's possible for a remote peer reflexive candidate to be created simply
because a binding request was received before the candidate was signaled.
Then, according to this rule, the peer reflexive candidate would not be
replaced by the server reflexive candidate when it's signaled, because the
peer reflexive candidate is guaranteed to have a higher priority.

As a result, the endpoints will prioritize the same candidate pair
differently, because one endpoint sees the candidate as peer reflexive
while the other sees it as something else. This means the endpoints could
have different ideas of which candidate pair is the highest priority, which
could result in sub-optimal selection of a candidate pair, or asymmetric
selection if the controlling agent is an RFC 5245 endpoint that uses
aggressive nomination.

So, I suggest a minor modification to the rule: peer reflexive candidates
are always replaced by other types of candidates, regardless of priority.

---

From: Jonathan Lennox <[email-masked]>
Date: Mon, 27 Jun 2016 19:48:13 +0000

On Jun 27, 2016, at 2:45 PM, Taylor Brandstetter <[email-masked]<mailto:[email-masked]>> wrote:

At IETF 95, the decision was made to choose the candidate with the higher priority if duplicate candidates are received (see: https://github.com/ice-wg/trickle/issues/6). However, I see a potential issue with this, specifically regarding peer reflexive candidates.

It's possible for a remote peer reflexive candidate to be created simply because a binding request was received before the candidate was signaled. Then, according to this rule, the peer reflexive candidate would not be replaced by the server reflexive candidate when it's signaled, because the peer reflexive candidate is guaranteed to have a higher priority.

As a result, the endpoints will prioritize the same candidate pair differently, because one endpoint sees the candidate as peer reflexive while the other sees it as something else. This means the endpoints could have different ideas of which candidate pair is the highest priority, which could result in sub-optimal selection of a candidate pair, or asymmetric selection if the controlling agent is an RFC 5245 endpoint that uses aggressive nomination.

So, I suggest a minor modification to the rule: peer reflexive candidates are always replaced by other types of candidates, regardless of priority.

This makes sense to me.

---

From: Peter Thatcher <[email-masked]>
Date: Mon, 27 Jun 2016 18:27:58 -0700

I think Taylor is correct, and I think that small change should fix it.  I
suggest we update the doc to represent this change and then bring it up in
Berlin.

On Mon, Jun 27, 2016 at 12:48 PM, Jonathan Lennox <[email-masked]>
wrote:

>
> On Jun 27, 2016, at 2:45 PM, Taylor Brandstetter <[email-masked]>
> wrote:
>
> _______________________________________________
> Ice mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/ice
>
>

---

From: Emil Ivov <[email-masked]>
Date: Mon, 27 Jun 2016 21:58:34 -0500

That's a pretty good catch!  (Darned aggressive nomination!!!)

I wonder if the fix-rule should mention PR candidates at all though.
Are there cases where the priority should not be overwritten?

Emil

On Mon, Jun 27, 2016 at 8:27 PM, Peter Thatcher <[email-masked]> wrote:
>> differently, because one endpoint sees the candidate as peer reflexive while
>> the other sees it as something else. This means the endpoints could have
>> different ideas of which candidate pair is the highest priority, which could
>> result in sub-optimal selection of a candidate pair, or asymmetric selection
>> if the controlling agent is an RFC 5245 endpoint that uses aggressive
>> nomination.
>>

-- 
https://jitsi.org

---

From: Taylor Brandstetter <[email-masked]>
Date: Tue, 28 Jun 2016 10:16:16 -0700

Well, if a host candidate is signaled first, and then a server reflexive
candidate is signaled with the same address, I wouldn't expect the host
candidate to be replaced. I think PR candidates are the only candidates
that should be replaced regardless of priority.

On Mon, Jun 27, 2016 at 7:58 PM, Emil Ivov <[email-masked]> wrote:

> while