Week of 2026-03-16
RPKI route origin validation landed in full, alongside a wave of BGP RFC compliance work, CLI polish, and daemon security hardening.
π RPKI route origin validation
A complete RPKI pipeline shipped this week:
- A new plugin speaks the RTR protocol, maintains a ROA cache, and validates route origins against it
- A decorator plugin merges validation state into update events for downstream consumers
- Validation now gates the adjacency RIB-in ingest path, so origin state is known as routes arrive, not after the fact
π°οΈ Routing & RFC compliance
- RFC 9234 Only-to-Customer (OTC) attribute processing, enforcing customer/peer/provider role safety
- RFC 9494 Long-Lived Graceful Restart, extending stale-route retention beyond the standard GR timer
- RFC 8203 Administrative Shutdown Communication, so peers get a reason string on planned shutdown
- A GR restart marker for detecting a Restarting Speaker (RFC 4724)
- Enhanced Route Refresh BoRR/EoRR markers (RFC 7313)
- A fix for RFC 9072 extended optional parameter detection in OPEN parsing
- BGP-LS attribute type 29 decode/encode, covering 40 TLV types
- Per-peer, per-family prefix limit enforcement (RFC 4486)
- Peer configuration moved from template inheritance to Junos-style peer-groups
π‘ Route delivery reliability
Adj-RIB-in now replays known routes to a peer as soon as it reaches Established, so new or reconnecting peers don't wait on fresh updates to converge. Outbound forwarding is also non-blocking now: a bounded per-peer overflow buffer and write deadline mean one slow or stuck peer can no longer stall delivery to everyone else, with peer-congested/peer-resumed events exposed to plugins.
π₯οΈ CLI & operator experience
- New
bgp monitorcommand streams live BGP events ze config ls,cat,import, andrenameround out config file management- Peers can be selected by ASN (
as<N>) with completion support - Nushell shell completion joins the existing bash/zsh/fish support
- Per-user command history
- Commands dropped their historical "bgp " prefix:
peer listinstead ofbgp peer list - A new
ze yangtool inspects the schema and command tree, including detecting completion collisions between sibling commands
π Daemon & security hardening
SSH is now the only external interface to the daemon: Unix sockets, flock files, and PID files are gone, and ze cli, signal, status, config edit, run, and show all connect over SSH. ze init bootstraps the credential store and ze start resolves the default config and launches the daemon. The daemon also now binds privileged ports as root and drops to a configured user/group afterward, and external plugin transport moved from Unix socketpairs to TLS.
π§ͺ Interop testing
GoBGP joins BIRD and FRR as a third interop target, and the interop test suite was rewritten in Python with 9 new scenarios.