#stun #ice

bin+lib librice

ICE (RFC8445) implementation

3 releases

0.0.3 Dec 23, 2022
0.0.2 Mar 14, 2022
0.0.1 Jan 24, 2021

#483 in Network programming

21 downloads per month

MIT/Apache

420KB
9K SLoC

Build status codecov Dependencies crates.io docs.rs

librice

Repository containing an implementation of ICE (RFC8445) protocol writing in the Rust programming language.

Warning

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

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)
  • draft-ietf-ice-trickle-21: Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol

Current status

The current status is that there is enough of the implementation to be able to nominate pairs between a controlled and controlling agent in a static stream configuration. This means that there is a fairly robust STUN implementation (RFC5389) and a large part of the state machine implemented for the newest ICE specification (RFC8445). Supporting more scenarios and is certainly part of the near and long term future roadmap.

TODO

  • RFC5766
  • RFC6554
  • RFC7675
  • Trickle ICE

Dependencies

~7–13MB
~226K SLoC