-
Notifications
You must be signed in to change notification settings - Fork 2
status
Pre-Alpha. This page describes behavior that may change.
Ze is in early active development. It is not released and should not be used in production. APIs, configuration syntax, and plugin interfaces may change without notice. That said, anyone coming from ExaBGP who understands the risks may already find Ze useful for specific use cases, particularly route injection, BGP monitoring, and wire-level protocol tooling.
This page is the honest ledger. If a feature is listed here as working, it has tests behind it. If a feature is missing, it is missing.
Ze establishes BGP sessions, exchanges routes, and handles the full RFC 4271 FSM lifecycle. The wire layer encodes and decodes across every listed address family.
| Area | Status |
|---|---|
| Session establishment (FSM) | Working. Tested against real peers and built-in test peers. |
| OPEN capability negotiation | Working. ASN4, ADD-PATH, Extended Messages, Extended Next-Hop, Graceful Restart, Route Refresh, Role, Hostname, Software Version. |
| UPDATE encode/decode | Working. Every address family decodes. Most encode. |
| NOTIFICATION handling | Working. All standard codes including the RFC 9003 shutdown communication. |
| Keepalive and hold timer | Working. |
| TCP MD5 authentication | Working on Linux and FreeBSD. Not available on macOS (kernel limitation). |
All families decode. Most encode. Run ze --plugins to see the current state on your build.
| Family | Decode | Encode | Config routes |
|---|---|---|---|
| IPv4 / IPv6 unicast | Yes | Yes | Yes |
| IPv4 / IPv6 multicast | Yes | Yes | Yes |
| VPNv4 / VPNv6 | Yes | Yes | Yes |
| EVPN | Yes | Yes | Yes |
| FlowSpec (IPv4, IPv6, VPN) | Yes | Yes | Yes |
| Labeled unicast | Yes | Yes | Yes |
| BGP-LS | Yes | No | No |
| VPLS | Yes | Yes | Yes |
| MVPN | Yes | No | No |
| Route Target Constraint | Yes | No | No |
| Mobile User Plane | Yes | Yes | Yes |
32 plugins ship in-tree. The plugin lifecycle (five-stage handshake, typed IPC, event dispatch) is usable for new plugins, with the caveat that the RPC names and payloads are not stable.
| Plugin | Status |
|---|---|
| bgp-rib (route storage, best-path) | Working |
| bgp-rs (route server, forward-all with zero-copy) | Working |
| bgp-gr (RFC 4724 graceful restart) | Working |
| bgp-rpki (RTR client, origin validation, fail-open) | Working |
| bgp-adj-rib-in (raw hex replay) | Working |
| bgp-route-refresh (RFC 2918 and 7313) | Working |
| bgp-role (RFC 9234, OTC filtering) | Working |
| bgp-hostname, bgp-softver | Working |
| bgp-llnh (link-local next hop) | Working |
| bgp-persist (across restarts) | Working |
| bgp-watchdog (deferred announcement) | Working |
| All nine NLRI plugins | Working, decode and encode |
| Area | Status |
|---|---|
| YANG configuration and validation | Working. Unknown keys rejected with suggestions. |
| Interactive config editor | Working. Tab completion, rollback, live validation. |
| Config reload (SIGHUP) | Working. Add, remove, or update peers without a restart. |
| SSH-based CLI | Working. Interactive and single-command modes. |
| Hierarchical logging | Working. Per-subsystem levels, runtime changes. |
| ExaBGP config migration | Working. Auto-detect and convert. |
| ExaBGP plugin bridge | Partial. 20 of 37 compatibility tests pass. |
| Chaos testing (ze-chaos) | Working. Deterministic replay, property validation. |
| Type | Count |
|---|---|
| Unit test functions | ~8,000 |
| Functional test files (.ci) | 559 |
| Fuzz targets | 41 |
| Linters | 28 |
Tests run with the race detector enabled.
| Feature | Notes |
|---|---|
| FIB and kernel integration | Ze does not program system routes via the built-in BGP engine today. A fib-kernel plugin exists for programming the Linux FIB for interface-managed routes, but full BGP-to-FIB installation is not production quality. For now, treat Ze as a control-plane daemon like ExaBGP. |
| BFD | Not implemented. NOTIFICATION subcode 10 is parsed but BFD sessions are not managed. |
| BMP (RFC 7854) | Not implemented. No route collection export. |
| MRT dump (RFC 6396) | Not implemented for writing. Reading works for analysis. |
| Confederation (RFC 5065) | Not implemented. IETF draft-ietf-idr-deprecate-as-set-confed-set deprecates the AS_CONFED_SET segment type. |
| ASPA verification | Not implemented. RPKI origin validation only. |
| Dynamic neighbors | Every peer must be explicitly configured. |
| Private AS removal | Not implemented. |
| AIGP | Plugin exists as a capability. The metric is not consumed in best-path selection. |
| Flowspec redirect to VRF with 4-byte ASN | Extended community type 0x82 encoding is implemented but decoding is not yet complete. |
| gRPC API | Not implemented. Ze uses a custom text command protocol over Unix sockets, plus a REST API. |
| Auto plugin discovery | Plugins must be declared in the config. |
| Multi-instance | One daemon per config file. |
| Area | Issue |
|---|---|
| ExaBGP compatibility | 17 of 37 compat tests fail. The gaps are in wire encoding for specific attribute combinations. |
| TTL security | Parsed from config but not wired to the socket options. |
| macOS TCP MD5 | Returns "not supported" because the Darwin kernel lacks it. |
| Error messages | Some parse errors could point more precisely at the offending input. |
| Packaging | No Docker image, no binary releases, no OS packages. Build from source. |
Nothing is stable. The configuration syntax, the JSON event format, the plugin IPC protocol, the CLI command names and output format, and the Go package APIs can all change without notice. Do not import Ze as a library.
If you are coming from ExaBGP and want to try the migration story, file issues: the feedback is genuinely useful. If you need a production BGP daemon, use BIRD, FRR, or OpenBGPd. The Why Ze page has a fuller discussion of the trade-offs.
If you do use Ze, pin to a commit (there are no releases), run make ze-verify before deploying any build, start with monitoring rather than route injection, keep ExaBGP as a fallback, and file issues for anything that bites you.
- What is Ze.
- Architecture.
- Comparison against other BGP daemons.
Adapted from main/docs/guide/status.md and main/docs/features.md.
Unreviewed draft. This wiki was authored in bulk and has not been reviewed. File corrections on the issue tracker.
- Overview
- YANG Model
- Editor Workflow
- Archive and Rollback
- System
- Interfaces
- VRRP
- BFD
- FIB
- OSPF
- IS-IS
- MPLS / LDP / RSVP-TE
- RSVP-TE
- SRv6
- Static Routes
- Policy Routing
- Firewall
- Traffic Control
- Class of Service
- L2TP/PPP
- PPPoE
- VPP Data Plane
- RPKI
- IPsec VPN
- TACACS+ AAA
- RADIUS AAA
- AS112 DNS
- Authorization
- Fleet
- BGP
- Starting and Stopping
- Show Commands
- Monitoring
- Flow Export
- DDoS Mitigation
- Anomaly Detection
- Health Checks
- Audit Trail
- Production Diagnostics
- Logging
- Operational Reports
- Healthcheck
- Self-Update
- Zero-Touch Provisioning
- MRT Analysis
- Upgrade and Restart
- Storage
- Policy
- Core
- Resilience
- Validation
- Capabilities
- Address Families
- Protocol
- Subsystems
- Infrastructure
- Route Server at an IXP
- Transit Edge with RPKI
- Public Looking Glass
- ExaBGP Migration Walkthrough
- FlowSpec Injection
- Chaos-Tested Peering
- AS Path Topology