Subject: [Ice] 5245bis: Waiting for all components to succeed before unfreezing same foundation in other checks lists

From: Christer Holmberg <[email-masked]>
Date: Sat, 3 Dec 2016 21:04:55 +0000

Section 6.1.2.4.2.3. says:

6.1.2.4.2.3.  Updating Pair States

   The agent sets the state of the pair that *generated* the check to
   Succeeded.  Note that, the pair which *generated* the check may be
   different than the valid pair constructed in Section 6.1.2.4.2.2 as a
   consequence of the response.  The success of this check might also
   cause the state of other checks to change as well.  The agent MUST
   perform the following two steps:

   1.  The agent changes the states for all other Frozen pairs for the
       same media stream and same foundation to Waiting.  Typically, but
       not always, these other pairs will have different component IDs.

   2.  If there is a pair in the valid list for every component of this
       media stream (where this is the actual number of components being
       used, in cases where the number of components signaled in the
       candidate exchange differs from initiating to responding agent),
       the success of this check may unfreeze checks for other media
       streams.

Q1: Why shall the agent wait for valid pairs for EVERY component of a media stream before it unfreezes pairs in other check lists? First, all components associated with a media stream may not even share the same foundation. Second, other media streams may not even use the foundations of the other components - perhaps they only use the foundation that succeeded. In my opinion, once a check for a pair for a foundation succeeds, the other pairs for the same foundation in all check lists are unfrozen - no matter the components.

      Note that this step is followed not just the first time
       the valid list under consideration has a pair for every
       component, but every subsequent time a check succeeds and adds
       yet another pair to that valid list.  The agent examines the
       check list for each other media stream in turn:

       *  If the check list is active, the agent changes the state of
          all Frozen pairs in that check list whose foundation matches a
          pair in the valid list under consideration to Waiting.

       *  If the check list is frozen, and there is at least one pair in
          the check list whose foundation matches a pair in the valid
          list under consideration, the state of all pairs in the check
          list whose foundation matches a pair in the valid list under
          consideration is set to Waiting.  This will cause the check
          list to become active, and ordinary checks will begin for it,
          as described in Section 5.1.4.

       *  If the check list is frozen, and there are no pairs in the
          check list whose foundation matches a pair in the valid list
          under consideration, the agent

          +  groups together all of the pairs with the same foundation,
             and

          +  for each group, sets the state of the pair with the lowest
             component ID to Waiting.  If there is more than one such
             pair, the one with the highest-priority is used.

Q2: Ok, now I've found the text mentioned by Emil, where a succeeded check unfreezes pairs associated with other foundations :) In my opinion, the last * should be removed. Pairs associated with other foundations WILL be unfrozen based on the procedures in section 5.1.4.

Regards,

Christer

---

From: Taylor Brandstetter <[email-masked]>
Date: Sat, 3 Dec 2016 13:32:37 -0800

I had the same question (as Q1). I don't understand the reasoning for
waiting for valid pairs for every component.

Going even further, I don't see why the unfreezing algorithm couldn't be
simplified to simply: "If there's a valid pair for a foundation, all pairs
for that foundation are unfrozen. If there's not, only one pair for that
foundation is unfrozen at a time. That pair is determined by sorting all
pairs with that foundation by media stream/component and picking the first
one that hasn't Failed."

On Sat, Dec 3, 2016 at 1:04 PM, Christer Holmberg <
[email-masked]> wrote:

> Q1: Why shall the agent wait for valid pairs for EVERY component of a
> media stream before it unfreezes pairs in other check lists? First, all
> components associated with a media stream may not even share the same
> foundation. Second, other media streams may not even use the foundations of
> the other components – perhaps they only use the foundation that succeeded.
> In my opinion, once a check for a pair for a foundation succeeds, the other
> pairs for the same foundation in all check lists are unfrozen – no matter
> the components.
>
>
>
>
>
> Q2: Ok, now I’ve found the text mentioned by Emil, where a succeeded check
> unfreezes pairs associated with other foundations :) In my opinion, the
> last * should be removed. Pairs associated with other foundations WILL be
> unfrozen based on the procedures in section 5.1.4.
>
>
>
> Regards,
>
>
>
> Christer
>
> _______________________________________________
> Ice mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/ice
>
>

---

From: Christer Holmberg <[email-masked]>
Date: Sat, 3 Dec 2016 23:26:55 +0000

Hi,

>I had the same question (as Q1). I don't understand the reasoning for waiting for valid pairs for every component.
>
>Going even further, I don't see why the unfreezing algorithm couldn't be simplified to simply: "If there's a valid pair for a foundation, all pairs for that >foundation are unfrozen.

That is what I is suggesting – and the unfreezing would take place in all check lists.

>If there's not, only one pair for that foundation is unfrozen at a time. That pair is determined by sorting all pairs with that foundation by media >stream/component and picking the first one that hasn't Failed."

My idea is that the unfreezing of OTHER foundations takes place whenever the check list timer expires, and the procedures in section 5.1.4 are applied.

I have created a pull request which modifies section 5.1.4, btw:

https://github.com/ice-wg/rfc5245bis/pull/26/files

As one pair for each foundation will be initially unfrozen throughout the check lists (no longer only in the “first check list”), there should not be a case where there are foundations with no unfrozen pairs.

I personally think the suggested changes makes ICE more straight forward, and easier to understand :)

Regards,

Christer

Q1: Why shall the agent wait for valid pairs for EVERY component of a media stream before it unfreezes pairs in other check lists? First, all components associated with a media stream may not even share the same foundation. Second, other media streams may not even use the foundations of the other components – perhaps they only use the foundation that succeeded. In my opinion, once a check for a pair for a foundation succeeds, the other pairs for the same foundation in all check lists are unfrozen – no matter the components.

Q2: Ok, now I’ve found the text mentioned by Emil, where a succeeded check unfreezes pairs associated with other foundations :) In my opinion, the last * should be removed. Pairs associated with other foundations WILL be unfrozen based on the procedures in section 5.1.4.

Regards,

Christer

_______________________________________________
Ice mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/ice