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 reorderedStructs§
- Multipath
Receiver - A reordering buffer for packets received on multiple paths.
- Multipath
Sender - Sends packets across multiple paths according to a
SchedulingPolicy. - Path
Info - Information about a single network path (interface).
Enums§
- Scheduling
Policy - Strategy for selecting which path to send a packet on.