-
Notifications
You must be signed in to change notification settings - Fork 461
FAQ
Where can I ask for help?
- GitHub Issues — bug reports and feature requests
- Slack Community — real-time chat
- Google Group — mailing list (exabgp-users@googlegroups.com)
What is ExaBGP?
ExaBGP is a pure BGP protocol implementation. It does NOT manipulate the kernel routing table (RIB/FIB). It speaks BGP to routers and provides a simple API for your programs to control route announcements.
Is this code supported?
Yes. Report bugs on GitHub and they will be fixed.
What platforms are supported?
- Linux: Primary deployment target
- macOS: Fully supported (development platform)
- FreeBSD/OpenBSD: Supported
- Windows: Should work, but not actively tested
ExaBGP does not listen for incoming connections
ExaBGP does not listen for incoming connections by default. You must specify the IP to listen to:
env exabgp.tcp.bind="127.0.0.1" exabgp.tcp.port=1790 exabgp config.conf"could not connect to peer: timed out"
Check these in order:
- Network connectivity — can your machine reach the router? (firewall, routing)
- MD5 passwords — must match on both sides
- Multihop — you may need
outgoing-ttlfor non-directly connected peers - FreeBSD users — check
/etc/ipsec.confhas the correct password
"The client took over N seconds to send the OPEN, closing"
BGP Connection Collision Detection issue. Either:
- Set ExaBGP's
router-idhigher than the peer's router-id, or - Configure your router for passive mode:
- Cisco:
neighbor X.X.X.X transport connection-mode passive - Juniper:
set protocols bgp group <group> neighbor <address> passive
- Cisco:
FRRouting rejects the connection
ExaBGP rejects BGP OPEN messages with router-id 0.0.0.0 per RFC 6286. This is FRRouting's default. Fix:
router bgp 65000
bgp router-id 192.168.1.1
IPv6 routes cause the session to drop
Enable the IPv6 address family on your router:
# Juniper
set protocol bgp group mygroup neighbor <IP> family inet6 unicast
set protocol bgp group mygroup neighbor <IP> family inet unicast
If sending both IPv4 and IPv6 routes, you must explicitly enable both families.
Routes are not installed on the router
You may need to allow non-directly-connected next-hops:
# Juniper
set protocol bgp group mygroup neighbor <IP> accept-remote-nexthop
Does ExaBGP prepend the local AS to the AS-PATH?
- eBGP: Yes, the local ASN is prepended automatically (prevents loops)
- iBGP: The AS-PATH is sent as configured
How do I reload the configuration?
Send SIGUSR1:
kill -USR1 $(pidof exabgp)ExaBGP compares the old and new configurations, tears down removed peers, sets up new ones, and announces/withdraws changed routes.
What is the split feature?
route 10.0.0.0/16 next-hop 1.2.3.4 split /24;This announces 256 individual /24 routes that make up the /16. Useful when you need more specific routes to override less specific ones.
Can I save the PID for scripts?
env exabgp.daemon.pid="/var/run/exabgp.pid" exabgp config.confJuniper rejects hold-time below 20 seconds
Juniper requires hold-time >= 6 seconds (hidden command to lower it):
set minimum-hold-time 6
Why does ExaBGP support Graceful Restart?
For services announcing IPs without backup: during reboots, the service IP remains routed. Set graceful-restart to a value higher than your reboot time (default 180s is often too low for servers).
Can ExaBGP work behind NAT?
Yes. Set local-address to your LAN IP and router-id to the NAT's public IP.
"This OS does not support TCP_MD5SIG"
macOS does not support TCP MD5 signatures. Use a different OS if you need MD5 authentication.
FreeBSD MD5 setup
FreeBSD requires MD5 keys to be configured via /etc/ipsec.conf. Add md5 kernel; to your ExaBGP config and follow the FreeBSD documentation.
How many peers can one instance handle?
Depends on route volume, but under normal use (even thousands of routes) a single instance works fine. Deployments with 160+ peers (low route volume) and single-peer with 20+ updates/second have been reported.
ExaBGP uses select() for non-blocking I/O. If concerned, run one instance per peer.
- Common Pitfalls — avoid frequent mistakes
- Debugging — troubleshooting guide
- API Overview — API documentation
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