Protocol lab

BGP Protocol Interop

Ze's BGP engine against real FRR, BIRD, and GoBGP, scenario by scenario.

Two ways to test Ze.

Use the Ze interop harness for protocol assertions, or netlab for reusable multi-node topologies.

Ze harness

Protocol interop scenarios

Run 151 curated scenarios. 142 of them drive a real FRR, BIRD, or GoBGP daemon. The harness starts only the required daemons and checks behavior through each peer's own CLI.

151 scenarios FRR BIRD GoBGP
Use the Ze harness scenario assertions
netlab

Reusable topology lab

Describe a three-node topology in YAML. netlab renders Ze configuration and starts each daemon node under containerlab.

YAML containerlab BGP OSPF IS-IS BFD
Use netlab three-node topology
Daemon

A Docker orchestrator launches Ze and one or more peer daemons on an isolated network, establishes real BGP sessions, and asserts correct behavior through each daemon's own CLI (vtysh, birdc, gobgp). Daemons start conditionally per scenario, so each run only spins up what it needs.

151 scenarios: eBGP/iBGP, 4-byte ASN, IPv6, Add-Path, Route Refresh, Graceful Restart, Route Server, standard and extended communities, MD5 auth, BGP Roles, EVPN, VPN, FlowSpec, multihop, BFD and BFD strict mode, update delay, ECMP, SRv6, RPKI, BMP, max-prefix, GTSM, AS112, VRRP against keepalived, and OSPF/IS-IS interop with FRR.

Proves Real BGP sessions against production daemon implementations, not mocks
Peers Real FRR, BIRD, and GoBGP, in Docker containers
Requires Docker and ~1.5 GB disk for daemon images
bgp-interop
# all 151 scenarios
$ ./le integration interop

# single scenario, verbose
$ INTEROP_SCENARIO=bgp-ebgp-ipv4-frr ./le integration interop
Prerequisites

Docker only, no QEMU path. Set FRR_IMAGE to pin a different FRR version, or NO_BUILD=1 to skip rebuilding images on repeat runs.