5 releases

0.0.5 Jun 26, 2024
0.0.4 Jun 14, 2024
0.0.3 Dec 23, 2022
0.0.2 Mar 14, 2022
0.0.1 Jan 24, 2021

#706 in Network programming

Download history 40/week @ 2024-03-29 10/week @ 2024-04-05 7/week @ 2024-06-07 162/week @ 2024-06-14 138/week @ 2024-06-21 17/week @ 2024-06-28 1/week @ 2024-07-05 4/week @ 2024-07-12

165 downloads per month

MIT/Apache

465KB
10K SLoC

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

Dependencies

~8–18MB
~258K SLoC