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.
- 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. - 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.
- 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.
- One core, every platform.
irltp-protois sans-IO (no sockets, no runtime) — the same state machines drive the Linux receiver binary, the in-process iOS sender (viairltp-ffi), and the deterministic simulator.
| 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.
IRLStreamKit (the iOS streaming engine)
consumes irltp-ffi behind its facade as a selectable SRTLA implementation,
alongside the vendored Moblin SRTLA.
MIT — see LICENSE.