BGP Protocol Interop
Daemon Docker- Same DUTs as the benchmark: FRR, BIRD, GoBGP
- Correctness first; the perf numbers above measure the same sessions
Measured, not claimed.
All benchmarks are lies: 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 ze-perf on your own
hardware with your own workload.
ze-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).
# build ze-perf and all DUT images, then run $ python3 test/perf/run.py --build --test # test specific DUTs only $ python3 test/perf/run.py --build --test ze bird # regenerate docs/performance.md from results $ bin/ze-perf report --doc test/perf/results/*.json
Docker (Colima on macOS). ze-perf
works against any BGP implementation, not just
Ze -- point it at your own DUT.
Where else the numbers show up.