Skip to content

Standalone ICE agent? #413

@thomaseizinger

Description

@thomaseizinger

I am back with another inquiry! :)

Currently, I am trialing usage of str0m's IceAgent in a project that just needs ICE but nothing else around WebRTC. In particular, we don't want to pull in openssl as a dependency. I have a few small patches locally that publicly export a handful APIs around the ice module. However, I also have one that pretty much comments out everything that deals with openssl which is just a hack for now.

I would like to get some opinions on what a collaborative and useful way forward is. I think a SANS-IO & compliant ICE implementation is something really useful so I don't really want to fork str0m longterm. The ice module also depends on the io and parser module which makes extracting it not quite straight-forward. Additionally, splitting up str0m into multiple crates creates an additional maintenance burden.

I think extracting a dedicated str0m-ice crate (name to be bike-shedded) would make the most sense:

  • The dependency on parser could be avoided by removing Candidate::from_sdp_string. This one is actually a circular dependency so could be argued shouldn't exist in the first place.
  • The dependency on io is a bit trickier. To do message parsing, stun_codec could be used. I've had good experiences with it. Alternatively, something like str0m-stun would have to be introduced that handles message parsing.
  • The rest of IO, i.e. all the SANS-IO modelling would either also have to go into a dedicated crate or perhaps inlined into str0m-ice?

Curious to hear your thoughts!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions