Skip to content

WireMesh v0.11.1

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Aug 12:38
· 4 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.11.1
39b7bfa

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 with Type::STREAM +
    IPPROTO_UDP (device/peer.rs:120) — the kernel returns EPROTONOSUPPORT
    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 as RcvbufErrors). 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 rev b8c6ddc). The patch retires the day a
    crates.io boringtun release >0.6.0 contains b8c668f.

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.