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 |
#369 in Network programming
280 downloads per month
465KB
10K
SLoC
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