Subject: [MMUSIC] ICE aggressive nomination problem

From: Ari Keranen <[email-masked]>
Date: Wed, 19 Dec 2012 19:50:45 +0200

Hi all,

Going through the ICE spec reminded me of one old problem with 
aggressive nomination that I discussed with Philip Matthews back when 
ICE was published:

Two endpoints L and R. L is the offerer and controlling end. There are 
two possible paths, and just one component.

Since L is using aggressive nomination, it sets the USE-CANDIDATE flag 
in each Binding request. However, the Binding response for the first 
path does not make it back to L. When the second check succeeds, L 
immediately stops ICE processing and uses the second path. However, R 
thinks the first path is being used.

Initially, L will use path 2 for data, while R will use path 1. 
Eventually, both paths will fail, because L is only sending keep-alives 
on path 2, while R is only sending them on path 1.

L                                         R
  <--------- Bind req ---------------------  ]
  ---------- Bind resp ------------------->  ]  Path 1
  ---------- Bind req, USE-CAND ---------->  ]
       X <-- Bind resp --------------------  ]

  <--------- Bind req ---------------------  ]
  ---------- Bind resp ------------------->  ]  Path 2
  ---------- Bind req, USE-CAND ---------->  ]
  <--------- Bind resp --------------------  ]

---

Any good ideas how to fix this? Should the controlling agent just keep 
retransmitting even after successful nomination (for how long)?

The updated offer (if we make that MUST in all cases) will help to 
detect the problem though and this could also be added to the list of 
"reasons for not using aggressive nomination unless you really have to".

Cheers,
Ari