Skip to content
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

Support ICE Continuous Gathering flag in RTCConfiguration #121

Open
bdrtc opened this issue Oct 21, 2022 · 9 comments
Open

Support ICE Continuous Gathering flag in RTCConfiguration #121

bdrtc opened this issue Oct 21, 2022 · 9 comments

Comments

@bdrtc
Copy link

bdrtc commented Oct 21, 2022

Background
The feature request is to change how browsers complete their ICE Gathering. Currently, after a short period after establishing the call, we stop gathering new candidates and move to a completed state. However, due to an event that changes network conditions for the worse, the client may disconnect from the call prematurely. While, ICE Restart solves this problem it is a slower response than preferred, and could be solved if we continued to gather new ICE candidates throughout the call.

The "walk-out-the-door" problem explains the issue that continuous ICE gathering would solve, described by these slides: https://www.ietf.org/proceedings/94/slides/slides-94-ice-6.pdf

Other Implementations
Chromium has this implemented for their native implementations, and they use a flag to enable this:
https://chromium.googlesource.com/external/webrtc/+/b6760f9e4442410f2bcb6090b3b89bf709e2fce2/webrtc/api/android/java/src/org/webrtc/PeerConnection.java#126

Request
The request here is to be able to turn on continuous ICE gathering through a similar config flag in RTCConfiguration during the creation of the peer connection.

Practice
we open this feature in mobile native sdk(wifi/4g/5g toggle) ,and it proved useful in practice.

@ketsebum
Copy link

Cross linking the issue from the WebRTC repo:
w3c/webrtc-pc#2791

@alvestrand
Copy link
Collaborator

There was an IETF draft related to this some time ago: https://datatracker.ietf.org/doc/html/draft-oreland-dispatch-ice-nicer-00
There's still interest in doing something like this, but the NICER draft specifically hasn't been followed up on.

@alvestrand
Copy link
Collaborator

Trickle ICE is specified in RFC 8838.

@bdrtc
Copy link
Author

bdrtc commented Oct 27, 2022

the flag currently exist (ContinualGatheringPolicy )in native code and it resolve the scenario:faster reconnected when pc/mobile network exchange during call than ICE Restart, Trickle ICE can not resolve such problem.

@danjenkins
Copy link

I'd love to see this available in the web platform

@ketsebum
Copy link

Yeah, at least from my understanding Trickle ICE is great for speeding up initial connection. However, the essential problem is that Trickle ICE will still enter into the complete state for ICE Gathering. This is problematic if there is any network changes that a new ICE Candidate would be able to connect better.

ICE Restart does solve this problem, but it is up to the individual clients to implement and is likely to be a slower response to network change, than a continually ICE gathering policy.

@bbaldino
Copy link

This would be great!

@lgrahl
Copy link

lgrahl commented Aug 19, 2024

It seems it would be more or less trivial to expose this, at least for Chromium-based browsers. And it would be really useful considering that an ICE restart requires an O/A exchange that is unnecessary with many SFU implementations (they care about the correct certificate fingerprint and that's about it).

@alvestrand
Copy link
Collaborator

@sam-vi and @jonasoreland may have more to say here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants