Subject: [Ice] Trickle ICE comments

From: Jonathan Lennox <[email-masked]>
Date: Sat, 31 Oct 2015 22:39:56 +0000

Hey all, some comments on Trickle ICE.

Substantive / protocol:

I’m concerned that trickle's unfreezing algorithm doesn’t work correctly if a particular component doesn’t have a candidate with a given foundation.  (The primary use case I have in mind is distributed media, where different connections have different host addresses; but this can also occur if, e.g., one component’s TURN allocation fails.)

Vanilla ICE says that a candidate pair is unfrozen if it is the first instance of that pair, which isn’t necessarily the first component of the first connection.

I think in order to handle this case, there needs to be a way for trickle to indicate “no candidate with this foundation will be forthcoming on this component.”  This would need to be sent for every component prior to the first one where the foundation will appear.  It can either be sent up front (if the agent knows a priori the foundations won’t be used, as in the distributed media case), or trickled later (for the case where gathering fails).  End-of-candidates would also implicitly indicate “no candidate forthcoming,” of course, but I think it’s necessary to indicate this sooner.

I think introducing this would also eliminate the need for the constraint in section 8 about what order candidates are trickled in; instead, it can be the receiver’s responsibility to figure out when things can be unfrozen.

Editorial:

Section 5 now uses 0.0.0.0 for the “no candidates yet” c= line, but nonetheless still gives a justification for using ::.