Weekly update
Week of 2026-01-05
This week rounded out route-refresh, ADD-PATH and VPN/labeled-unicast support in the plugin API, alongside a batch of BGP correctness fixes.
π Route refresh
Enhanced Route Refresh (RFC 7313) is now handled end to end: a refresh request gets a Begin-of-RR, the matching routes, then an End-of-RR, and the capability negotiation bug that stopped BoRR/EoRR from ever being sent when route-refresh was configured is fixed. New msg-id retain / release / expire / list commands let an API program control how long UPDATE messages stay cached, which graceful-restart tooling can use to replay routes.
π§© Plugin API: routes and families
- ADD-PATH (RFC 7911) path-ids are now preserved through the plugin event stream, so plugins can tell multiple paths to the same prefix apart
- A FlowSpec text-mode parser (RFC 8955) covering all twelve match-component types and both numeric and bitmask operators
- Route distinguisher and label support for VPN and labeled-unicast routes in the text API, including multi-label stacks (RFC 8277)
AnnounceL3VPN/WithdrawL3VPNcommands for RFC 4364 MPLS VPN routes- Raw wire-format input: routes and attributes can now be passed as hex or base64 BGP bytes directly, and a passthrough command sends fully unvalidated bytes for protocol testing
- Per-session control over which wire encoding (hex, base64, CBOR or text) an API program uses, independently for each direction
- Plugins now go through a defined startup handshake with the core: declare capabilities and commands, receive matching config, register their OPEN-message capabilities, then signal ready before sessions start
π Protocol correctness
- UPDATE messages built via the text API always include ORIGIN and AS_PATH, the two RFC 4271 mandatory attributes that could previously be missing
- Fixed attribute ordering in batched UPDATE messages (AS_PATH and NEXT_HOP were landing in the wrong position, and iBGP sessions were missing LOCAL_PREF)
- MUP routes announced via the API were silently dropping their extended-community attribute
- Label-only routes are now correctly classified as labeled-unicast (SAFI 4) instead of MPLS VPN