Weekly update

Week of 2025-12-22

Work on the BGP engine itself: route encoding correctness, session robustness, and a first real API surface for driving peers programmatically.

← All weekly updates

πŸ›°οΈ Protocol correctness

  • Extended communities now parse hex format per RFC 4360
  • ADD-PATH encoding (RFC 7911), including for VPN routes
  • End-of-RIB markers are now sent for every negotiated address family (RFC 4724)
  • Extended next-hop encoding per RFC 8950
  • AS_PATH validation fixed against RFC 5065
  • IPv6 announcements and withdrawals now correctly use MP_REACH_NLRI / MP_UNREACH_NLRI instead of IPv4-style NEXT_HOP
  • EVPN routes (all 5 route types) and L3VPN (MPLS VPN) route announcement support
  • Route Leak Prevention via the OTC attribute (RFC 9234)
  • Revised UPDATE error handling for malformed attributes (RFC 7606): partial-attribute discard instead of session teardown, plus IBGP-context and 4-octet AS validation
  • Labeled-unicast (SAFI 4) now supports split announcements, and route announcements support /N split syntax generally
  • Fixed a bug where withdrawals weren't actually being sent and route stats were wrong
  • Fixed iBGP attribute handling for API-announced routes

πŸ”Œ Session and process handling

  • BGP connection collision detection per RFC 4271 Β§6.8
  • Backpressure and respawn limits for connected processes, so a misbehaving process can't take down the session

🧰 API

A real command surface for controlling BGP sessions and routes is taking shape:

  • Session-level commands: status, enable, disable
  • RIB flush/clear commands
  • Route commit transactions: named, concurrent commits with announce/withdraw, rollback, and end-of-RIB signaling
  • Watchdog-controlled routes: named pools of routes that announce or withdraw together, state persisting across reconnects
  • A teardown command with an ordered operation queue
  • announce attributes/nlri/update commands with batch NLRI support
  • Inbound UPDATEs are now forwarded to connected processes