Plugins
Storage & Policy
| Plugin |
Description |
| bgp-rib |
Route Information Base -- stores received/sent routes |
| bgp-adj-rib-in |
Adj-RIB-In -- raw hex replay of received routes |
| bgp-persist |
Route persistence across restarts |
| bgp-rs |
Route server -- client-to-client route reflection (RFC 7947). Forwards via the typed Plugin.ForwardCached / ReleaseCached fast path (rs-fastpath-3): DirectBridge in-process, ze-plugin-engine:forward-cached over newline-framed YANG RPC for out-of-process plugins. No text-RPC tokenise on the hot path. bgp-adj-rib-in is an optional dep; when absent, forwarding still works and replay-on-peer-up is disabled with a WARN. |
| bgp-watchdog |
Deferred route announcement with named watchdog groups |
| bgp-healthcheck |
Service healthcheck with FSM-controlled route announcement/withdrawal via watchdog groups. Guide |
Route Filters
External plugins can act as route filters on import and export. Filters are
configured per peer/group/globally via filter { import [...] export [...] }
using named filter instances or explicit <plugin>:<filter> references. Multiple filters chain as piped transforms
(each sees previous filter's output). Filters respond accept/reject/modify with
delta-only attribute changes and dirty tracking for efficient re-encoding.
Three filter categories:
| Category |
Behavior |
Example |
| Mandatory |
Always on, cannot be overridden |
rfc:otc (RFC 9234) |
| Default |
On by default, can be overridden per-peer |
rfc:no-self-as (loop prevention) |
| User |
Only present when explicitly configured |
rpki:validate, community:scrub |
Protocol
| Plugin |
Description |
| bgp-gr |
Graceful Restart (RFC 4724) and Long-Lived GR (RFC 9494) state machine |
| bgp-aigp |
Accumulated IGP Metric (RFC 7311) |
| bgp-rpki |
RPKI origin validation via RTR protocol (RFC 6811, RFC 8210). Guide |
| bgp-rpki-decorator |
Correlates UPDATE + RPKI events into merged update-rpki events |
| bgp-route-refresh |
Route Refresh handling (RFC 2918, RFC 7313) |
| bgp-role |
BGP Role capability enforcement (RFC 9234) |
| bgp-llnh |
Link-local next-hop for IPv6 (RFC 2545) |
| bgp-hostname |
FQDN capability for peer identification |
| bgp-softver |
Software version capability advertisement |
| bgp-filter-community |
Community tag/strip filter (standard, large, extended) |
| bgp-filter-irr |
IRR-based prefix-list filter from whois queries (replaces bgpq4 workflow) |
| loop |
Route loop detection (RFC 4271 S9, RFC 4456 S8) |
Infrastructure
| Plugin |
Description |
| interface |
OS network interface monitoring and management via netlink or VPP. Publishes interface and address events to the bus. |
| static |
Config-driven static route programming with ECMP. |
| connected |
Redistributes directly connected interface prefixes. |
| kernel |
Redistributes externally-installed kernel routes. |
| rib |
System RIB selection by administrative distance. |
| fib-kernel |
Programs OS routes from the system RIB. |
| fib-vpp |
Programs VPP routes from the system RIB. |
| sysctl |
Kernel tunable management with default, transient, and config layers. |
| traffic |
Traffic control lifecycle and backend dispatch. |
| vpp |
VPP lifecycle and telemetry. |
| cos |
802.1p class-of-service profile definitions. Named QoS maps, dynamic per-subscriber CoS via RADIUS. |
| bgp-nlri-srpolicy |
SR-Policy NLRI (SAFI 73) with Tunnel Encapsulation attribute. |
Plugin Health Metrics
Plugin infrastructure exposes per-plugin Prometheus metrics for operational visibility:
| Metric |
Type |
Description |
ze_plugin_status{plugin} |
Gauge |
Current plugin stage (0=init, 6=running). Absent when disabled. |
ze_plugin_restarts_total{plugin} |
Counter |
Cumulative restart count. |
ze_plugin_events_delivered_total{plugin} |
Counter |
Total events enqueued to plugin. |
When a plugin is disabled (respawn limit exceeded), its metrics are deleted rather than showing a stale value.