-
-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extra question about horizontally scaled Stunner #132
Comments
:-D This is one of those tricky parts in ICE and TURN that just magically works out of the box, without us having to configure or add anything. I was also puzzled when I first discovered this...:-) Here is the process flow:
The traffic flow is something like the below:
Note that in symmetric ICE mode both parties have to go through STUNner, which adds some extra processing compared to asymmetric ICE where only the client uses STUNner, the media server connects directly to the relay address via UDP as it is in the same IP subnet as the
Note that even with symmetric ICE the ICE negotiation usually succeeds over asymmetric ICE and never reaches the relay-relay case. This is because, as mentioned above, ICE tries the candidate pairs in order of priority and the relay-relay pair is always the last one (minus TCP, I never know how TCP host/srflx candidates are prioritized versus UDP relay candidates). Before the relay-relay candidate, however, ICE will try to match the client's As you see, the symmetric ICE mode is quite complex and the fact that it usually falls back to asymmetric ICE confuses the hell out of people. That's why we advise against using it unless it's not absolutely necessary. Hope this clarifies the symmetric ICE case. |
That's a great explanation; thank you so much! |
Closing this for now, feel free to reopen if something comes up. |
I've been trying to understand a bit more how ICE works, particularly in the case of multiple Stunner pods in the symmetric ICE model.
In #31 (comment) the following was mentioned
The communication that seems to be being established is client -> stunner_a <-> stunner_b <- media server. Is there any documentation or details about how the stunner_a <-> stunner_b communication is being established by ICE? Or is this something that Stunner is doing that is extra to ICE?
The text was updated successfully, but these errors were encountered: