-
Notifications
You must be signed in to change notification settings - Fork 460
Migration Guide
Comprehensive guide for upgrading between ExaBGP versions
ExaBGP has evolved through several major versions, each introducing important changes. This guide helps you navigate upgrades safely.
- Current Version Recommendations
- Migration Guides
- Breaking Changes Reference
- Quick Version Comparison
- Getting Help
| Version | Status | Recommendation |
|---|---|---|
| 6.0.0 (main) | Development | Latest features: async reactor, shell completion, enhanced CLI. Requires Python 3.12+. |
| 5.x | Stable LTS (Recommended) | Production-ready. Long-Term Support. Requires Python 3.8+. |
| 4.x | Maintenance | Critical fixes only. Upgrade to 5.x recommended. |
| 3.x | Deprecated | No longer maintained. Upgrade immediately. |
New users: Start with ExaBGP 5.x for production use.
Adventurous users: Try 6.0.0 (main) for latest features, but test thoroughly.
Migration from 5.x to 6.x - Complete migration guide
Breaking Changes:
- β Python 3.12+ required (3.7-3.11 dropped)
β οΈ Async reactor only (legacy reactor removed)β οΈ BGP-LS JSON changes (ipβprefix,sr-adjβsr-adjs,remote-router-idβremote-router-ids)
New Features:
- β Shell completion for Bash, Zsh, Fish
- β Enhanced CLI with tab completion and JSON pretty-printing
- β
Health monitoring API (
session ping,daemon statuscommands) - β
Migration tool (
exabgp migrate conf,exabgp migrate api) - β
Bridge mode - Run legacy v4/v5 scripts unchanged with
--exec
Bridge Mode (run legacy scripts unchanged):
# Legacy scripts work with 6.0.0 via bidirectional transformation
exabgp migrate api -f 4 -t main --exec /path/to/legacy-script.py
# Or wrap scripts automatically during config migration
exabgp migrate conf -f 4 -t main --wrap-api old-config.conf | exabgp server -Resources:
- 5.x β 6.0.0 Migration Guide - Step-by-step upgrade guide
- Bridge Mode Documentation - Run legacy scripts unchanged
Migration from 4.x to 5.x - Complete migration guide
Breaking Changes:
- β Python 3.8+ required (Python 2 removed)
β οΈ AS-PATH JSON format changed (array β string)β οΈ BGP-LS JSON field names changedβ οΈ Configuration syntax (route refreshβroute-refresh, etc.)β οΈ Prefix-SID Type-2/4 removed
New Features:
- β SRv6 support
- β BGP-MUP support
- β ACK runtime control commands
- β
Neighbor wildcards (
neighbor *)
Resources:
- 4.x β 5.x Migration Guide - Step-by-step upgrade guide
Migration from 3.x to 4.x - Complete migration guide with breaking changes
Major Breaking Changes:
β οΈ Configuration syntax changes (manual updates required)β οΈ JSON output format changes (parser updates needed)β οΈ ACK feature introduced (programs may need updates)β οΈ Command-line argument changes
This is the primary breaking change in ExaBGP's history. 3.x is deprecated and no longer maintained.
Resources:
- 3.x β 4.x Migration Guide - Step-by-step upgrade guide
- Version Differences - Detailed comparison
All Breaking Changes - Complete historical reference
Quick reference document listing ALL breaking changes across ExaBGP versions:
- API protocol changes
- Configuration syntax changes
- Command-line interface changes
- Behavioral changes
- Deprecations and removals
This document is useful for:
- Understanding version compatibility
- Planning upgrades
- Troubleshooting legacy configurations
- Reviewing ExaBGP's evolution
| Feature | 3.x | 4.x | 5.x | 6.0.0 |
|---|---|---|---|---|
| Python version | 2.7/3.6+ | 2.7/3.6+ | 3.8+ | 3.12+ |
| ACK responses | β No | β Yes | β Yes | β Yes |
| ACK runtime control | β No | β No | β Yes | β Yes |
| JSON encoder | Basic | Full | Full | Full |
| FlowSpec | Limited | Full | Full + RFC 8955 | Full + RFC 8955 |
| SRv6 | β No | β No | β Yes | β Yes |
| BGP-MUP | β No | β No | β Yes | β Yes |
| Async reactor | β No | β No | β Optional | β Default |
| Shell completion | β No | β No | β No | β Yes |
| Enhanced CLI | β No | β No | Basic | β Full |
| Migration tool | - | - | - | β Yes |
| Bridge mode (--exec) | - | - | - | β Yes |
ExaBGP 5.x and earlier:
# Action-first format
announce route 100.64.1.0/24 next-hop 192.0.2.1
neighbor 192.0.2.1 announce route 10.0.0.0/24 next-hop selfExaBGP 6.0.0 (also supports 5.x format):
# Target-first format (recommended)
peer * announce route 100.64.1.0/24 next-hop 192.0.2.1
peer 192.0.2.1 announce route 10.0.0.0/24 next-hop self
# New health monitoring
session ping
daemon status- Read the migration guide for your version upgrade path
- Review breaking changes that might affect your deployment
- Test in non-production environment first
- Backup configurations before upgrading
- Quick Start Guide - Get started with ExaBGP 4.x
- First BGP Session - Version differences explained
- API Overview - API architecture and ACK feature
- Common Pitfalls - 25+ common mistakes and solutions
- GitHub Issues: https://github.com/Exa-Networks/exabgp/issues
- Slack: https://exabgp.slack.com/
- Mailing List: See GitHub repo
- Installation Guide - Install/upgrade ExaBGP
- Configuration Syntax - Complete configuration reference
- API Overview - API architecture and features
- Debugging Guide - Troubleshooting migrations
π» Ghost written by Claude (Anthropic AI)
π Home
π Getting Started
π§ API
π‘οΈ Use Cases
π Address Families
βοΈ Configuration
π Operations
π Reference
- Architecture
- BGP State Machine
- Communities (RFC)
- Extended Communities
- BGP Ecosystem
- Capabilities (AFI/SAFI)
- RFC Support
π Migration
π Community
π External
- GitHub Repo β
- Slack β
- Issues β
π» Ghost written by Claude (Anthropic AI)