withdraw p50
0.00s
re-announce
0.00s

rustbgpd

A BGP route server and route reflector in Rust.

cargo install rustbgpd

Animated topology of a BGP flapstorm. A steel withdrawal wave, then a Ferris-orange re-announce flood. Withdraw p50 0.48 seconds. Re-announce 0.49 seconds. Press R or use Replay to run it again.

01

Flapstorm propagation

700 clients × 400,400 routes, same host, same harness. 50 members hard-close simultaneously; 650 survivors observe 28,600 withdrawn prefixes. The 50 reconnect and re-announce.

rustbgpd

Withdraw p50
0.28–0.48 s
Re-announce p50
0.46–0.49 s

BIRD 3.3.1

Withdraw p50
0.45–0.61 s
Re-announce p50
2.84–4.22 s

OpenBGPD 9.1

Withdraw p50
10.8–12.4 s
Re-announce p50
21.2–21.7 s

The re-announce clock starts only after all 50 sessions re-reach Established, so it measures re-delivery fan-out (~18.6M NLRI), not reconnect pacing. [rustbgpd source receipt] · [BIRD 3.3.1 source receipt] · [OpenBGPD 9.1 source receipt]

01b — SIGHUP policy swap

Reload performance

700 clients × 400,400 routes, same host, same harness. SIGHUP policy reload stall and completion times.

rustbgpd

Stall p50
0.43–0.84 s
Stall worst
1.85 s
Completion p50
1.5–2.2 s
Completion worst
2.9 s

BIRD 3.3.1

Stall p50
1.61–2.29 s
Stall worst
7.73 s
Completion p50
77–86 s
Completion worst
93.8 s

OpenBGPD 9.1

Stall p50
0.25–0.29 s
Stall worst
0.36 s
Completion p50
249–253 s
Completion worst
252.9 s

Stall = time during which no prefix is reachable (withdrawn but not yet re-announced). Completion = full table restored. [rustbgpd source receipt] · [BIRD 3.3.1 source receipt] · [OpenBGPD 9.1 source receipt]

02

24-hour soak receipts

Both green, both archived in-repo. No control daemon ran alongside them.

Route-server shape

PASS

1,000 eBGP clients × 400,000 routes, 24 h

SIGHUP policy reloads
48
Max-prefix trip → timed-restart cycles
6
Late-window RSS slope
0.0724 MB/h
soak-rs-flagship-24h.md

Route-reflector shape

PASS

1,000 iBGP clients × 100,000 routes, 24 h

Churn cycles
5,486,092
Session flaps
0
Terminal reflected prefixes
99,900
Terminal parse errors
0
soak-rr-flagship-24h.md
03

Honesty

The receipts also include the losses.

OpenBGPD winsReload stall

OpenBGPD's stall p50 is 0.25–0.29 s vs rustbgpd's 0.43–0.84 s at 700 × 400,400. [source receipt]

BIRD winsMemory use

BIRD wins settled memory outright (~400 MiB vs ~760 MiB). S2 settled memory against BIRD is a dead heat; BIRD wins S3 settled outright. [source receipt]

What this is and is not

  • Public alpha at v0.64.0. Not production-grade yet.
  • Linux only. No FreeBSD, no Mac, no Windows.
  • EVPN is functional but outside the v1 compatibility promise.
  • Every receipt is currently self-generated — no external pilot yet.
  • OpenBGPD has a smaller reload stall; BIRD uses less memory; S2 settled memory against BIRD is a dead heat; BIRD wins S3 settled outright.