Software · Network Bonding VPN

mlvpn-rs

If a site has two or more separate internet connections, mlvpn-rs combines them into one connection that's both faster and more reliable.

What it does

A fiber line plus a cellular modem, two different ISPs, whatever you've got — mlvpn-rs bonds them into a single resilient, Noise-encrypted VPN tunnel. It uses all of your links at once rather than treating extras as pure backup, and load-balances/fails over between them based on continuously measured latency, jitter, loss, and throughput. It runs as a background service on two Linux machines, one at each end of the link you want to bond, with everything in between encrypted.

A memory-safe Rust rewrite of the original MLVPN by Laurent Coustet, which the core bonding/monitoring/failover idea is credited to — no code is shared between the two. Notable changes: binds to a network interface instead of an IP address so it survives DHCP/roaming changes, and a modern authenticated-key-exchange handshake instead of a shared password.

Built for real link hardware

Under the hood

Pure Rust, built around a Noise_IK handshake for the tunnel's authenticated key exchange, per-link EWMA stats tracking, and a smooth weighted round-robin scheduler for link selection.

Rust Noise Protocol systemd .deb / .rpm packaging amd64 + arm64