paullouisageneau / libjuice

JUICE is a UDP Interactive Connectivity Establishment library
Mozilla Public License 2.0
403 stars 75 forks source link

ICE-TCP #211

Open Sean-Der opened 1 year ago

Sean-Der commented 1 year ago

Hey @paullouisageneau

Would ICE-TCP be accepted as a PR, or is that out of scope?

thanks!

paullouisageneau commented 1 year ago

The libjuice library is designed under the assumption that there is only one UDP socket to make the code simpler. I think integrating TCP candidates would require significant architectural changes.

I'm a bit dubious about ICE-TCP in general, are you talking about active, passive, or simultaneous open? For what use case would you need them?

On a related note someone started implementing TURN TCP a long time ago but bailed out.

Sean-Der commented 1 year ago

I would like active candidates. Currently I am only using libdatachannel as a 'client' only (with OBS).

Some broadcaster want TCP (over UDP). They would rather see backpressure then packet loss. If the stream falls behind real-time that is better then packet loss. You also have the connectivity issues. Users that don't support UDP at all etc..

I prefer ICE-TCP/ICE-TLS over TURN because it reduces the complexity of what I have to deploy. TURN is somewhat expensive to run. You have to maintain another service, and deal with the extra CPU+Network usage. It isn't intractable but I have had more success with ICE-TCP/ICE-TLS personally.

paullouisageneau commented 1 year ago

I see, I'd gladly accept a PR for ICE-TCP active candidates provided the feature is disabled by default and must be enabled via an agent config flag.