Repository navigation
·
4 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
WireMesh v0.11.1
Patch release: the data-plane fix for the Phase-0 "receive-side cap" — a ~380× throughput defect in the gateway's embedded WireGuard engine.
Fixed
- gateway: boringtun's per-peer connected UDP socket never worked (#106).
boringtun 0.6.0 creates the per-peer connected socket withType::STREAM+
IPPROTO_UDP(device/peer.rs:120) — the kernel returnsEPROTONOSUPPORT
on every received packet, so the connected-socket receive fast path was
silently dead and the device loop drained ~286 pps (~3 Mbit/s TCP through
the tunnel, 97% receiver-side UDP loss asRcvbufErrors). Upstream fixed
this on master (b8c668f, PR #430) but never cut a release; WireMesh now
pins boringtun 0.6.0 plus that exact cherry-picked commit via
[patch.crates-io](fork revb8c6ddc). The patch retires the day a
crates.io boringtun release >0.6.0 containsb8c668f.
Measured (G-2 harness, netns + veth, MTU 1280, EPYC 9454P bare metal)
| Metric | v0.11.0 | v0.11.1 |
|---|---|---|
| TCP through the tunnel (pinned 4 vCPU) | 3.04 Mbit/s | 966 Mbit/s |
| TCP through the tunnel (unpinned) | — | 1.15 Gbit/s |
| UDP 100M offered, receiver loss | 97% | 0% |
Evidence chain: docs/research/g2-bet1-receive-cap-reproduced-on-bare-metal.md
(#104) and docs/research/g2-root-cause-one-word-boringtun-fix.md (#105).
Notes
- No config, proto, or CLI surface changes; drop-in replacement for v0.11.0.
- All 7 CI jobs green on the PR, including the netns conformance suites —
the first behavioural exercise of the now-working connected-socket path
(mesh, NAT matrix, relay, rotation all pass unchanged). - G-2 formal standing: single-flow meets the ≥1 Gbps bar unpinned on EPYC
(966 Mbit/s pinned; per-core clocks below the reference c6i.xlarge); the
8-tunnel aggregate half still needs its harness.