-
Notifications
You must be signed in to change notification settings - Fork 462
Breaking Changes
Complete reference of breaking changes across ExaBGP versions
This document lists all breaking changes in ExaBGP's history to help you understand version compatibility and plan upgrades.
- What is a Breaking Change?
- ExaBGP 5.x/main (Development)
- ExaBGP 4.x Series
- ExaBGP 3.x → 4.x
- Summary Table
- Compatibility Matrix
A breaking change is a modification that requires users to update their:
- API programs (code changes)
- Configuration files (syntax changes)
- Command-line scripts (argument changes)
- Integration workflows (behavioral changes)
Not breaking:
- Bug fixes
- New features (when opt-in)
- Performance improvements
- Internal refactoring
ExaBGP main/5.x has NO breaking changes compared to 4.x.
- ✅ Configuration files: 100% compatible
- ✅ API commands: 100% compatible
- ✅ ACK feature: Available in BOTH 4.x and 5.x (default=true in both)
- ✅ No migration required
Key point: The ACK feature is not a 5.x-only feature. It has been available in ExaBGP 4.x since at least version 4.0/4.1 with the same default (enabled).
See ExaBGP 4.x vs 5.x/main for details on the differences (which are primarily code quality improvements, not breaking changes).
ExaBGP 4.x has maintained API and configuration compatibility throughout the 4.0 → 4.2.x series.
Stable versions:
- 4.0.x → 4.1.x → 4.2.x (All compatible)
- No breaking changes in API
- No breaking changes in configuration syntax
- Safe to upgrade within 4.x series
Minor changes (non-breaking):
- New features added (opt-in)
- Bug fixes
- Performance improvements
- New address family support (EVPN, BGP-LS, etc.)
Version: ExaBGP 3.4.x → 4.0.0 Release: ~2017 Severity: 🟡 MODERATE - Configuration and some API changes
ExaBGP 4.x introduced configuration syntax changes requiring file updates.
Impact: Configuration files need manual updates when upgrading from 3.x
✅ Affected:
- Configuration files from 3.x
- Some API command syntax
- JSON output format consumers
❌ Not affected:
- New deployments starting with 4.x
- Programs written for 4.x+
Command-line arguments and behavior changed between 3.x and 4.x.
Impact: Shell scripts invoking ExaBGP may need updates
JSON encoder output format changed between 3.x and 4.x.
Impact: Programs parsing JSON output need updates
✅ Affected:
- Programs using
encoder json - Scripts parsing ExaBGP JSON output
- Monitoring integrations reading JSON
Upgrade path: 3.x → 4.2.x (latest stable) → 5.x (if needed)
Resources:
- Version Differences - Detailed 3.x vs 4.x comparison
- Configuration examples in
/etc/exabgp/directory use 4.x syntax
Note: ExaBGP 3.x is deprecated and no longer maintained. All users should upgrade to 4.x.
| Version | Change | Type | Severity | Workaround Available? |
|---|---|---|---|---|
| 5.x | (No breaking changes) | - | - | - |
| 4.x | (No breaking changes) | - | - | - |
| 3.x→4.x | Configuration syntax | Config | 🟡 Moderate | ❌ No (manual migration) |
| 3.x→4.x | CLI arguments | CLI | 🟡 Moderate | ❌ No (script updates) |
| 3.x→4.x | JSON format | API Output | 🟡 Moderate | ❌ No (parser updates) |
| API Program Written For | Runs on 3.x | Runs on 4.x | Runs on 5.x/main |
|---|---|---|---|
| ExaBGP 3.x | ✅ Yes | ||
| ExaBGP 4.x | ❌ No | ✅ Yes | ✅ Yes |
| ExaBGP 5.x/main | ❌ No | ✅ Yes | ✅ Yes |
Note: 4.x and 5.x/main have identical API behavior. Programs work on both.
| Config Written For | Works on 3.x | Works on 4.x | Works on 5.x/main |
|---|---|---|---|
| ExaBGP 3.x | ✅ Yes | ❌ No | ❌ No |
| ExaBGP 4.x | ❌ No | ✅ Yes | ✅ Yes |
| ExaBGP 5.x/main | ❌ No | ✅ Yes | ✅ Yes |
Note: Configuration files and API programs for 4.x and 5.x/main are 100% compatible.
- Update configuration files (manual syntax changes required)
- Test in non-production environment
- Update API programs if using JSON parser
- Update shell scripts if using CLI
- Deploy to production
Resources:
- 3.x → 4.x Migration Guide - Complete step-by-step guide
- Version Differences - Detailed comparison
No migration needed. 4.x and 5.x/main are fully compatible.
- Install 5.x/main
- Use your existing configuration (100% compatible)
- Use your existing API programs (100% compatible)
Note: 5.x/main is a development branch. For production, stay on 4.x (stable).
Resources: ExaBGP 4.x vs 5.x/main
Not recommended. Use two-step migration:
- 3.x → 4.x: Update config, test thoroughly
- 4.x → 5.x/main: No changes needed (optional)
Why two steps?
- 3.x → 4.x has breaking changes (config syntax)
- Better to isolate issues
- 4.x is stable and recommended for production anyway
Recommended: Upgrade to 4.x and stay there for production use.
- 4.x branch: Stable, no breaking changes planned
- 5.x/main branch: Development branch, may introduce changes
- Major versions: Reserved for breaking changes (next: 6.x if needed)
- GitHub Releases: https://github.com/Exa-Networks/exabgp/releases
- CHANGELOG: Check repository CHANGELOG.rst
- Slack: https://exabgp.slack.com/
- Mailing List: See GitHub repo
Checklist:
- Read release notes for your target version
- Check this document for breaking changes
-
Test in isolated environment:
- Configuration file loads without errors
- BGP sessions establish correctly
- API programs work as expected
- No unexpected behavior changes
- Run parallel (new version alongside old, if possible)
- Monitor logs for errors after upgrade
- Have rollback plan ready
Before upgrading production:
-
Document current version:
exabgp --version - Backup configuration files
- Test downgrade procedure in non-production
- Verify rollback works end-to-end
- Document rollback steps for operations team
| Term | Meaning | Example |
|---|---|---|
| Major version | Breaking changes allowed | 3.x → 4.x → 5.x |
| Minor version | New features, backwards-compatible | 4.0 → 4.1 → 4.2 |
| Patch version | Bug fixes only | 4.2.0 → 4.2.1 → 4.2.22 |
ExaBGP follows semantic versioning principles:
- Major version bump = breaking changes
- Minor version bump = new features (compatible)
- Patch version bump = bug fixes (compatible)
- Migration Guide - Main migration entry page
- Migration from 4.x to 5.x - ACK feature migration
- Version Differences - Complete version comparison
- API Overview - API architecture and ACK feature
- Common Pitfalls - Common mistakes (including version issues)
- Debugging Guide - Troubleshooting after upgrades
- Production Best Practices - Safe deployment strategies
👻 Ghost written by Claude (Anthropic AI)
Getting Started
Configuration
- Configuration Syntax
- Neighbor Configuration
- Directives A-Z
- Templates
- Environment Variables
- Process Configuration
API
- API Overview
- Text API Reference
- JSON API Reference
- API Commands
- Writing API Programs
- Error Handling
- Production Best Practices
Address Families
- Overview
- IPv4 Unicast
- IPv6 Unicast
- FlowSpec
- EVPN
- L3VPN
- BGP-LS
- VPLS
- SRv6 / MUP
- Multicast
- RT Constraint
Features
Use Cases
Tools
Operations
Reference
- Architecture
- Design
- Attribute Reference
- Command Reference
- BGP State Machine
- Capabilities
- Communities
- Examples Index
- Glossary
- RFC Support
Integration
Migration
Community
External