librice

Crates.iolibrice
lib.rslibrice
version0.0.5
sourcesrc
created_at2021-01-24 16:34:26.204008
updated_at2024-06-26 11:42:12.127173
descriptionICE (RFC8445) implementation
homepage
repositoryhttps://github.com/ystreet/librice
max_upload_size
id346092
size147,504
Matthew Waters (ystreet)

documentation

https://docs.rs/librice

README

Build status codecov Dependencies crates.io docs.rs

librice

Repository containing an async implementation of the ICE (RFC8445) protocol written in the Rust programming language. This async implementation is based on the sans-IO crate librice-proto in the same repository. See the librice-proto README for some details as to why use the sans-IO design.

Warning

This still very much WIP code and everything is still subject to change.

Current status

The current status is that there is enough of the implementation to sucessfully transfer data with an external browser (Chrome and Firefox) in a WebRTC scenario. The STUN implementation is relatively mature at this stage. More work is needed on the ICE layer for efficiency and API experience. TURN support is still currently a work in progress. Supporting more scenarios and is certainly part of the near and long term future roadmap.

Relevant standards

  • RFC5389: Session Traversal Utilities for NAT (STUN)
  • RFC8445: Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
  • RFC5766: Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
  • RFC7675: Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness
  • RFC6544: TCP Candidates with Interactive Connectivity Establishment (ICE)
  • RFC8838: Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol

TODO

  • RFC5766
  • RFC6554
  • RFC7675
Commit count: 164

cargo fmt