Skip to main content

Module multipath

Module multipath 

Source
Expand description

§VCL Multipath

MultipathSender splits traffic across multiple network interfaces simultaneously (e.g. WiFi + LTE) and MultipathReceiver reassembles packets on the other side.

§How it works

Application → MultipathSender
                  │
        ┌─────────┼─────────┐
        ↓         ↓         ↓
    Interface0  Interface1  Interface2
    (WiFi)      (LTE)       (Ethernet)
        ↓         ↓         ↓
        └─────────┼─────────┘
                  │
            MultipathReceiver
                  │
            Reordering buffer
                  │
            Application

§Example

use vcl_protocol::multipath::{MultipathSender, MultipathReceiver, PathInfo, SchedulingPolicy};

let paths = vec![
    PathInfo::new("wifi",     "192.168.1.100", 100, 10),
    PathInfo::new("lte",      "10.0.0.50",     50,  30),
    PathInfo::new("ethernet", "172.16.0.1",    200, 5),
];

let sender = MultipathSender::new(paths, SchedulingPolicy::WeightedRoundRobin);
let mut receiver = MultipathReceiver::new();

// sender.select_path(&data) → PathInfo to send on
// receiver.add(seq, path_id, data) → Some(data) when reordered

Structs§

MultipathReceiver
A reordering buffer for packets received on multiple paths.
MultipathSender
Sends packets across multiple paths according to a SchedulingPolicy.
PathInfo
Information about a single network path (interface).

Enums§

SchedulingPolicy
Strategy for selecting which path to send a packet on.