Benchmarks

Performance.

Measured, not claimed.

Benchmark numbers need context: these numbers measure one scenario, on one machine, under artificial conditions. They show relative differences between implementations, not absolute performance. If it matters to you, run le perf on your own hardware with your own workload.

BGP benchmark

le perf establishes two BGP sessions with a device under test: a sender injects 100,000 routes, a receiver times their arrival. The same harness runs unmodified against BIRD, FRR, GoBGP, RustyBGP, freeRtr, rustbgpd, and OpenBGPd, all in Docker on the same host.

Go carries an estimated 10-15% CPU overhead against C/Rust implementations. That number comes from code-path analysis, not a measured benchmark -- Ze has not been benchmarked at DFZ scale (1M+ prefixes).

Convergence 62ms to propagate 100,000 routes (2026-06-05 run)
Throughput 1,612,903 routes/sec sustained during propagation
Withdrawal 596ms from withdrawal sent to receiver idle
le perf
# build all DUT images, then run
$ ./le perf run

# test specific DUTs only
$ ./le perf run dut "ze bird"

# regenerate docs/performance.md from results
$ ./le perf report --doc test/perf/results/*.json
Prerequisites

Docker (Colima on macOS). le perf works against any BGP implementation, not just Ze -- point it at your own DUT.

Performance evidence in the labs.

Where else the numbers show up.

BGP Protocol Interop

Daemon Docker
  • Same DUTs as the benchmark: FRR, BIRD, GoBGP
  • Correctness first; the perf numbers above measure the same sessions

VPP Dataplane Evidence

Daemon Docker
  • Ze programs FIB, traffic, and firewall into a real VPP daemon
  • Dataplane throughput backs the numbers in the VPP guide

VLAN QoS Wire-Level Proof

Daemon AF_PACKET
  • 802.1p PCP tagging verified on the wire
  • Not just kernel-state acceptance -- captured packets