-
Notifications
You must be signed in to change notification settings - Fork 2
exabgp migration
Pre-Alpha. This page describes behavior that may change.
This is the first page to read if you already run ExaBGP. Ze ships two tools that, between them, get most existing setups running with very little manual work: a config converter (ze config migrate) and a bridge plugin (ze exabgp plugin) that runs your existing process scripts unchanged. The order matters: convert the config first, then keep your scripts running through the bridge while you decide which ones to port to native Ze plugins.
ze config migrate --dry-run exabgp.conf # Preview what changes
ze config migrate exabgp.conf -o ze.conf # Write the converted file
ze config validate ze.conf # Verify against the YANG schemaThe converter is a chain of named transformations. You can see the list with ze config migrate --list. Each one renames one piece of legacy ExaBGP syntax into its current Ze form. The most visible ones rename neighbor blocks to peer, lift root-level globs into template { match }, and rename template { neighbor } to template { group }. You can read the full list in the in-tree migration guide linked at the bottom.
One automatic change is worth knowing about. The converter adds prefix { maximum 10000; } to every address family it touches. ExaBGP does not have per-family prefix limits and Ze requires them (RFC 4486). 10,000 is a conservative starting point. Edit the value before you go anywhere near a full table peer.
A few ExaBGP features are detected and warned about, but not converted. The non-standard multi-session capability and the ExaBGP-specific operational block are the main ones. Watchdog groups and some split configurations may need manual edits. None of these block migration. They produce warnings, the rest of the file converts, and you decide what to do with the gaps.
The neighbor qualifier syntax (neighbor <ip> local-as <asn> announce ...) for targeting one of several sessions to the same peer does not exist in Ze. Ze commands apply to every session matching the peer IP. If you depend on multi-session targeting, raise an issue.
You do not need to rewrite plugins to migrate. Wrap any existing ExaBGP process script with ze exabgp plugin and Ze will run it as if it were ExaBGP itself.
plugin {
external my-script {
run "ze exabgp plugin --family ipv4/unicast /opt/scripts/my-plugin.py"
encoder json
}
}
bgp {
peer upstream {
connection { remote { ip 10.0.0.1; } }
session { asn { remote 65001; } }
process my-script {
receive [ update state ]
}
}
}
The bridge translates Ze JSON events into ExaBGP JSON in one direction, and ExaBGP text commands into Ze commands in the other. Your script does not know it is talking to Ze. The bridge also injects a peer <addr> flush after each route command, so you do not see ExaBGP-style "I sent that update an instant ago" races.
The shortest path that works is six steps.
-
ze config migrate --dry-runto see what will change. -
ze config migrate -o new.confto write the converted file. - Read every
prefix { maximum }line and adjust to your real route counts. -
ze config validate new.conf. - Update
rundirectives so any script lines start withze exabgp plugin. - Start Ze, watch the sessions come up, and only then start porting plugins.
Port plugins to native Ze when you actually need something the bridge does not give you: RPKI events, the cache commands, the commit workflow, or the lower-latency in-process Go SDK. The bridge has measurable overhead and an extra translation surface, but it is honest about what it does and it is the cheapest way to keep production moving while you migrate.
- Quick start for the rest of the first-peer-up flow.
- BGP peers for the configuration reference once you are off ExaBGP syntax.
- ExaBGP Migration Walkthrough for a complete worked example.
Adapted from main/docs/guide/exabgp-migration.md, main/docs/config-migration.md, and main/docs/exabgp/exabgp-differences.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