Skip to content

Atlas WG Mesh benchmarks

Scaleway EM-A116X-SSD bare metal in pl-waw-3. Intel Xeon E3 1220. 1 GbE private network. Host kernel 7.0.0. Guest: Firecracker, 2 vCPU, 2 GiB, Ubuntu 24.04. WireGuard MTU 1440. VM interface MTU 1380. Unicast NDP mode. The NDP mode changes only discovery, so throughput is the same in both modes.

Throughput

TCP, iperf3, 10 seconds. A single-stream value is the median of 3 runs.

PathSingle streamFour streamsLine rate
Raw private network939 Mbit/s939 Mbit/s100%
Host-to-host WireGuard886 Mbit/s887 Mbit/s94%
Atlas VM-to-VM, 2 hosts847 Mbit/s834 Mbit/s90%
Atlas VM-to-VM, one host14.3 Gbit/s--

Atlas delivers 96% of WireGuard throughput between hosts. The main cost is the 40-byte tunnel header and the smaller VM MTU. The reverse direction measured 820 Mbit/s.

One stream saturates the 1 GbE link. More streams do not help. On faster links, throughput should track WireGuard until tunnel encryption becomes the limit.

Traffic between VMs on one host does not use WireGuard. Linux delivers it through the VM host route.

Packet rate

200-byte UDP packets at the highest rate iperf3 can send.

PathReceivedLoss
Host-to-host WireGuard221,000 pps2.4%
Atlas VM-to-VM, 2 hosts113,000 pps28.5%
Atlas VM-to-VM, one host102,000 pps54.8%

The same-host rate is close to the cross-host rate, so the guest network path limits small packets, not the BPF programs.

Latency

ping, 200 packets, 10 ms interval.

PathAverageMinimum
Raw private network0.28 ms0.14 ms
Host-to-host WireGuard0.76 ms0.28 ms
Atlas VM-to-VM, 2 hosts1.75 ms0.82 ms
Atlas VM-to-VM, one host0.92 ms0.27 ms

Discovery and moves

Network time only, in unicast and multicast mode. A test endpoint in a network namespace is registered with atlas-wg-mesh vm sync while a peer VM on a third host sends a ping every 10 ms. The time starts when vm sync returns.

EventNetwork time
NDP solicitation to advertisement0.3 ms
First packet to an unknown VMOne packet lost. The second packet arrives.
New VM reachable after registration4.7 ms unicast, 5.1 ms multicast
VM moved to another host1.5 ms to 10.5 ms in 15 moves, within one ping
Public IPv6 block moved to another hostTraffic returns when the provider attaches the block to the new host

The destination host announces a moved VM on the uplink, so peers learn the new host without a NOT_HERE round trip. The old host forwards traffic for a moved block through the mesh until the provider router uses the new host. See the gateway design.

AGPL-3.0