Skip to content

uxgold/irltp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IRLTP

Bonded live streaming for IRL, on the SRTLA v2 wire protocol: one video stream carried across multiple unreliable links (cellular + Wi-Fi + …), aggregated with failover. A clean-room Rust implementation with a written spec and an interop-safe extension-negotiation layer — new capabilities negotiated between IRLTP endpoints, with automatic, lossless fallback to plain SRTLA v2 against any other peer.

The name is aspirational. Today IRLTP implements SRTLA v2 — it is not (yet) a distinct wire protocol. The negotiation seam (SPEC.md §7) is the on-ramp to one, if a measured extension ever justifies diverging. So far none has — see COMPARISON.md.

Status: the SRTLA v2 core is complete and interop-verified against the BELABOX C reference in both directions; the extension-negotiation layer is implemented and interop-verified. See SPEC.md.

Goals

  1. SRTLA v2 compatible, both directions. The IRLTP sender works against any existing SRTLA receiver (BELABOX Cloud, srtla_rec); the IRLTP receiver accepts any existing SRTLA sender (Moblin, BELABOX, srtla_send). Compatibility is a hard conformance gate, tested against the reference implementations.
  2. A written spec. SRTLA never had one; SPEC.md documents the v2 wire protocol as implemented in the wild, plus the IRLTP extension-negotiation layer.
  3. Extensions only where measured — and so far, none ship active. The framework negotiates opt-in capabilities between IRLTP endpoints, invisible to vanilla peers, with automatic fallback. Three candidates — delay-aware congestion control, deadline link-cutoff, and cross-link FEC — were each A/B'd on the netem testbed and are validated negatives: SRTLA-over-SRT is already at parity with the reference and hard to beat in realistic regimes (COMPARISON.md). They live in-tree, off by default, as honest records and ready capabilities. The delivered value is the negotiation seam itself.
  4. One core, every platform. irltp-proto is sans-IO (no sockets, no runtime) — the same state machines drive the Linux receiver binary, the in-process iOS sender (via irltp-ffi), and the deterministic simulator.

Workspace

Crate Role
irltp-proto Sans-IO protocol core: packets, registration, windows, scheduling, capability negotiation, FEC
irltp-sender Client: local SRT-over-UDP proxy bonding across links (tokio)
irltp-receiver Server: accepts SRTLA/IRLTP groups, feeds an SRT listener (tokio)
irltp-ffi UniFFI bindings + XCFramework for Swift (IRLStreamKit)
irltp-sim Deterministic network simulation & conformance harness

testbed/ runs the reference implementations (BELABOX srtla, AGPL) in containers as black-box interop and quality gates. Their code is never copied — this project is MIT and independently implemented, with Moblin's MIT implementation as the primary behavioral reference. See COMPARISON.md for the real-network benchmark record.

Relationship to IRLStreamKit

IRLStreamKit (the iOS streaming engine) consumes irltp-ffi behind its facade as a selectable SRTLA implementation, alongside the vendored Moblin SRTLA.

License

MIT — see LICENSE.

About

Clean-room Rust implementation of the SRTLA v2 bonding protocol, with an interop-safe extension-negotiation layer. BELABOX-compatible.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors