While trying to start or answer or a call, it takes 10+ seconds to complete the ice candidate collection. This happens when the PC has multiple network interfaces (VPN, WiFi etc) and some of those interfaces cannot reach the STUN server. As far as I see, 10 seconds here is the timeout duration after which Chrome decides to try the next interface. So, if you have 2 interfaces that cannot reach STUN server, it takes 20 seconds and if you have 3 it takes 30 seconds etc.I know that a solution here is to use Trickle ICE. However, I wonder if there a plan to optimize this procedure; isn't it possible to start the procedure for all network interfaces at the same time, like threads running simultaneously? Or is there a way to change the 10 seconds to a lower value?
--
---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
From what I recall the problem is largely determining when the request to the STUN server times out.
Quick comment here:
The fact that your candidate harvest has not completed does not necessarily imply a call delay.
You simply need to make sure the you exchange SDP before even starting ICE. You then send your candidates as Chrome makes them available to you.
--sent from my mobile
If you are using browsers on both sides then you basically get trickle for free. You just have to make sure that you send the SDP offer and answer and the ICE candidates as soon as each of those become available to you.
Most of the libraries implementing ICE can also handle trickle out of the box.
So no, there shouldn't be a significant level of increased complexity.
--sent from my mobile
You can have signaling/media races even with non-trickle ICE. For example, the candidates will be sent by the answerer at the same time the ICE process starts, and the initial ICE pings can beat the answer back to the caller.
Don't quite understand how authentication relates to trickle ICE either.
On Tue, Jan 27, 2015 at 6:03 PM, Jeremy Noring <jno...@hirevue.com> wrote:
> On Monday, January 26, 2015 at 9:33:53 PM UTC-7, Justin Uberti wrote:
>>
>> You can have signaling/media races even with non-trickle ICE. For example,
>> the candidates will be sent by the answerer at the same time the ICE process
>> starts, and the initial ICE pings can beat the answer back to the caller.
>
>
> That's true, I had not considered that. I assume the only way to resolve
> any of these is for either side to be able to understand that an ICE ping
> prior to a candidate likely means a candidate is on the way? Or is there
> something I'm missing here?
Why do you think they need to be resolved?
We are only talking about potentially missing a STUN retransmission here.
>> Don't quite understand how authentication relates to trickle ICE either.
>
> The issue we hit was with ice-ufrag/ice-pwd; our media server wasn't setting
> those on the stream level, only with each candidate.
This was only true for very early versions of ICE. Today standard ICE
only allows for session or media-level ufrag and pwd.
> If the ICE pings got
> to libnice first, it'd create a candidate but without remote credentials, so
> it would not bother investigating that candidate any further. For whatever
> reason, when it received the actual candidate, it would not update it
> correctly (I didn't get t. Possible this is a bug in libnice (admitted the
> server's using a version that's about two years out of date), although the
> fix was pretty easy: nice-agent-set-remote-credentials
I believe libnice has as a standard mode of operation and the
per-candidate auth makes me think you guys are using the GTalk one.
Maybe you may want to change and try the vanilla one ... although I am
not actually sure this one has trickle ...
I do admit that I expected libnice to behave better with trickle and
that this could have been premature for that specific case.
Emil
--
https://jitsi.org
>> You can have signaling/media races even with non-trickle ICE. For example,
>> the candidates will be sent by the answerer at the same time the ICE process
>> starts, and the initial ICE pings can beat the answer back to the caller.
>
>
> That's true, I had not considered that. I assume the only way to resolve
> any of these is for either side to be able to understand that an ICE ping
> prior to a candidate likely means a candidate is on the way? Or is there
> something I'm missing here?Yeah - you have to create a prflx candidate, and then you can mutate that into something else if the same candidate arrives in signaling.
Why do you think they need to be resolved?
We are only talking about potentially missing a STUN retransmission here.No, it's worse than that. If you miss the STUN packet you need to wait until all the checks of the other pairs have been cycled through to retransmit, so this can lead to a noticeable delay. We noticed this during a recent round of optimization on the call setup processing in Chrome.
Once an agent has sent its offer or its answer, that agent MUST be prepared to receive both STUN and media packets on each candidate.
[...]
An agent MUST be prepared to receive a Binding request on the base of each candidate it included in its most recent offer or answer. This requirement holds even if the peer is a lite implementation.Simon