Draft: draft-ietf-ice-rfc5245bis

Commentary: Initial unfreeze procedure modified , according to Emil 's suggestion at IETF Berlin .
For all pairs with the same foundation, it 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.
One of the check lists will have some number of pairs in the Waiting
state, and the other check lists will have all of their pairs in the
Frozen state.  A check list with at least one pair that is Waiting is
called an active check list, and a check list with all pairs Frozen
is called a frozen check list.
The check lists are placed in an ordered list (the order is
determined by each ICE usage).
The agent sets all of the check lists to the Running state.
For each foundation, the candidate pair with the lowest
component ID (in case of multiple such pairs, the pair with the
highest priority) is placed in the Waiting state, unless a
candidate pair associated with the same foundation has already
been put in the Waiting state in one of the other examined
check lists.  This will ensure that, within the ordered list,
only one pair with a given foundation is initially placed in
the Waiting state, while other pairs with the same foundation
remain in the Frozen state.
When one or more candidate pairs within a given check list are
placed in the Waiting state.  A check list with at least one
pair that is Waiting is called an active check list, and a
check list with all pairs Frozen is called a frozen check list.
A check list with at least one pair that is Waiting is called an
active check list, and a check list with all pairs Frozen is called a
frozen check list.
The table in fig-state-initial illustrates how the initial states of
the candidiate pairs in the ordered list of check lists are set.
Once the agent has computed the check lists as described in sec-
forming, it sets a timer for each active check list.  The timer fires
every Ta*N seconds, where N is the number of active check lists
(initially, there is only one active check list).  Implementations
MAY set the timer to fire less frequently than this.  Implementations
SHOULD take care to spread out these timers so that they do not fire
at the same time for each media stream.  Ta and the retransmit timer
RTO are computed as described in sec-ta.  Multiplying by N allows
this aggregate check throughput to be split between all active check
lists.  The first timer fires immediately, so that the agent performs
a connectivity check the moment the candidate exchange has been done,
followed by the next check Ta seconds later (since there is only one
active check list).
Once the agent has computed the check lists as described in sec-
forming, it sets a timer for each active check list.  The timer fires
every Ta*N seconds, where N is the number of active check lists.
Implementations MAY set the timer to fire less frequently than this.
Implementations SHOULD take care to spread out these timers so that
they do not fire at the same time for each media stream.  Ta and the
retransmit timer RTO are computed as described in sec-ta.
Multiplying by N allows this aggregate check throughput to be split
between all active check lists.  The first timer fires immediately,
so that the agent performs a connectivity check the moment the
candidate exchange has been done, followed by the next check Ta
seconds later (since there is only one active check list).