-
Notifications
You must be signed in to change notification settings - Fork 458
Home
Welcome to the comprehensive ExaBGP documentation. This wiki covers everything from beginner setup to advanced features and production deployments.
β οΈ Documentation StatusThis wiki was authored by Claude (Anthropic AI) and has not yet been fully reviewed by Thomas Mangin (ExaBGP author).
While comprehensive and based on ExaBGP source code, RFCs, and community resources, this documentation may contain errors or inaccuracies. Use with appropriate caution and verify critical details against the source code and official RFCs.
Found an issue? Please report it: https://github.com/Exa-Networks/exabgp/issues
ExaBGP does NOT manipulate the RIB (Routing Information Base) or FIB (Forwarding Information Base).
ExaBGP is a pure BGP protocol implementation that:
- Implements the BGP-4 protocol and modern extensions
- Provides JSON/text API for external process communication
- Maintains internal routing information
- Does NOT install routes into the kernel routing table
- Does NOT modify forwarding tables
If you need FIB manipulation, consider alternatives like BIRD, FRRouting, or Quagga.
ExaBGP has different major versions with important differences:
- 4.x (Recommended): Current stable release. All documentation examples work as-is.
- 5.x/main (Development): Adds ACK feature. Requires configuration changes for 4.x code. See Version Differences.
- 3.x (Deprecated): No longer maintained. Migration guide available.
New users: Start with ExaBGP 4.x unless you specifically need 5.x features.
- 5-Minute Quick Start - Get your first BGP session running
- Installation Guide - Detailed installation instructions
- Building From Source - Compile ExaBGP, create .deb/.rpm packages
- First BGP Session - Step-by-step walkthrough with version differences
- Common Pitfalls - Avoid frequent mistakes
Zero-Code Health Checks Built-In! ExaBGP includes a production-ready exabgp healthcheck module - no custom scripting required:
# Automatically announce/withdraw routes based on service health
exabgp healthcheck --cmd "curl -sf http://localhost/health" --ip 10.0.0.1/32- Healthcheck Module - Built-in healthcheck tool (zero code required!) β
- Service High Availability - HA with automatic failover
- Anycast Management - Anycast with health-based route control
- Vincent Bernat's Health Check Guide - Excellent real-world patterns
Why health checks matter: ExaBGP's killer feature is automatic route announcement/withdrawal based on service health. Your application controls its own BGP routing - announce when healthy, withdraw when failing. No manual intervention, no external monitoring required.
- Configuration Syntax - File format and syntax
- Neighbor Configuration - Neighbor settings
- Templates & Inheritance - Template system
- Directives Reference - A-Z directive listing
- API Overview - API concepts, architecture, and ACK feature
- Text API Reference - Text format complete reference
- JSON API Reference - JSON format complete reference
- API Commands - All commands documented
- Writing API Programs - Best practices for 4.x and 5.x
- Error Handling - API error handling
- Production Best Practices - Production deployment
- IPv4 Unicast - IPv4 unicast routing
- IPv6 Unicast - IPv6 unicast routing
- FlowSpec Overview - Introduction to FlowSpec
- Match Conditions - All match types
- Actions Reference - All actions
- L3VPN Overview - L3VPN/MPLS VPN introduction
- EVPN Overview - EVPN introduction and route types
- BGP-LS Overview - Link-State introduction and topology collection
- VPLS - VPLS/L2VPN guide
- IPv4 Multicast - IPv4 multicast routing
- IPv6 Multicast - IPv6 multicast routing
- RT Constraint - Route Target filtering
- DDoS Mitigation - Complete DDoS walkthrough with FlowSpec
- Anycast Management - Anycast patterns with health checks
- Service High Availability - HA with health checks
- Load Balancing - BGP-based load balancing patterns
- Traffic Engineering - Traffic engineering patterns
- SDN Integration - SDN controller integration
- ADD-PATH - Multi-path advertisement (RFC 7911)
- Graceful Restart - Graceful restart implementation (RFC 4724)
- Route Refresh - Route refresh capability (RFC 2918)
- Communities - Standard, Extended, and Large Communities (RFC 1997, 4360, 8092)
- Segment Routing - SRv6 and SR-MPLS support (RFC 9514)
- Healthcheck Module - Built-in healthcheck tool (zero code!) βββ
- Configuration Examples - Health check configuration examples
- Debugging - Complete debugging and troubleshooting guide
- Monitoring - Prometheus and Grafana integration
- Performance Tuning - Optimization guide
- Security Hardening - Production security best practices
- Log Analysis - Log interpretation and analysis
- Docker - Docker deployment best practices
- Kubernetes - K8s deployment patterns and DaemonSets
- Prometheus - Metrics and monitoring setup
- Cloud Platforms - AWS, Azure, GCP integration
- MRT Format - Working with MRT BGP dumps (mrtparse, IOS2ExaBGP)
- Architecture - ExaBGP architecture deep-dive
- BGP State Machine - RFC 4271 Finite State Machine
- BGP Communities - RFC fundamentals (how communities affect BGP)
- Extended Communities - RFC 4360 specifications and encoding
- BGP Ecosystem - Alternative BGP implementations comparison
- Capabilities - AFI/SAFI support (IPv4/IPv6, Unicast/FlowSpec/EVPN/etc.)
- Command Reference - Complete command reference
- Attribute Reference - All BGP attributes
- Examples Index - Browse 98 configuration examples
- Glossary - Technical terms and definitions
- From 3.4 to 4.x - 3.4 to 4.x migration guide
- Version Differences - Comprehensive 3.x, 4.x, 5.x comparison
- Community Projects - Third-party tools and integrations
- Production Users - Organizations using ExaBGP (Facebook, Cloudflare, BBC, etc.)
- GitHub Repository - Source code
- Issue Tracker - Report bugs
- Slack Community - Live chat
- Twitter - Updates and news
- Vincent Bernat's Blog - Excellent production health check patterns
Browse 98 configuration examples organized by:
- User experience level (Beginner/Intermediate/Advanced)
- Use case (DDoS/Anycast/VPN/etc)
- Feature (FlowSpec/EVPN/BGP-LS/etc)
- Protocol family (IPv4/IPv6/VPN/etc)
This documentation is organized to help users at all levels:
- Beginners: Start with Getting Started
- Operators: Focus on Use Cases and Operations
- Developers: Explore API and Development sections
- Reference: Use the A-Z indices for quick lookups
Every document includes:
- Clear table of contents
- Practical examples from the 98 configuration files
- Cross-references to related docs
- Common errors and solutions
- Version compatibility notes (4.x vs 5.x)
ExaBGP implements 55+ RFCs including:
- Core BGP-4 (RFC 4271) - Protocol only, no RIB/FIB manipulation
- Multiprotocol BGP (RFC 4760) - Multiple address families
- FlowSpec (RFC 5575) - Traffic filtering
- EVPN (RFC 7432) - Ethernet VPN
- BGP-LS (RFC 7752) - Link State distribution
- SRv6 (RFC 9514) - Segment Routing over IPv6
- And many more...
See RFC Information for the complete list.
Need Help? Join our Slack community or file an issue.
π» 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 (3.4β4.x)
π Community
π External
- GitHub Repo β
- Slack β
- Issues β
π» Ghost written by Claude (Anthropic AI)