Skip to content

bgp implementations comparison

Thomas Mangin edited this page Nov 10, 2025 · 1 revision

Open Source BGP Implementations - Comprehensive Comparison

Compiled: 2025-11-09 Purpose: Complete catalog of open source BGP implementations across all languages Sources: ExaBGP wiki + web research + performance benchmarks

⚠️ IMPORTANT CAVEAT: Performance benchmarks referenced in this document are from 2021-2022 and may not reflect current performance. Software performance can change significantly over 3-4 years, especially for actively developed projects. Treat benchmark data as historical reference only. Projects like RustyBGP that showed poor performance in 2021 may have improved substantially since then.

Overview

This document catalogs all known open source BGP implementations, their characteristics, use cases, performance benchmarks, and recommendations. Based on ExaBGP's "Other OSS BGP implementations" wiki page and extensive web research.


πŸ† Major Production-Ready Implementations

1. FRRouting (FRR) ⭐⭐⭐⭐⭐

Language: C URL: https://frrouting.org GitHub: https://github.com/FRRouting/frr Status: Active (Modern Quagga successor)

Description: The undisputed modern champion and spiritual successor to the legacy Quagga project, now the standard recommendation for a full-featured open-source routing solution.

History:

  • GNU Zebra (abandoned 2005) β†’ Quagga β†’ FRRouting (April 2017 fork)
  • Created to enable more open and faster development
  • Cumulus Linux 3.4+ replaced Quagga with FRR

Key Features:

  • Full routing protocol suite (BGP, OSPF, ISIS, RIP, EIGRP, PIM, BFD, etc.)
  • IPv4 and IPv6 support
  • MPLS support
  • BGP FlowSpec
  • VRF support
  • Graceful restart
  • Route maps and prefix lists
  • Active development and community

Performance:

  • Single process/core architecture
  • Slightly slower than BIRD (competitive)
  • FRR 8 faster than FRR 7.5.1
  • ~25% slower than BIRD in some tests
  • Lower memory usage than GoBGP

Use Cases:

  • Enterprise routers
  • Data center networking
  • ISP routing infrastructure
  • Full routing stack replacement
  • Linux-based routers

Strengths:

  • βœ… Full-featured routing daemon
  • βœ… Active development
  • βœ… Good documentation
  • βœ… Wide protocol support
  • βœ… Industry adoption

Weaknesses:

  • ❌ C codebase (harder to contribute)
  • ❌ Slightly slower than BIRD

Recommendation: ⭐⭐⭐⭐⭐ Default choice for full routing daemon


2. BIRD (BIRD Internet Routing Daemon) ⭐⭐⭐⭐⭐

Language: C URL: http://bird.network.cz/ GitHub: https://gitlab.nic.cz/labs/bird Status: Active

Description: Offers unparalleled efficiency and a powerful filtering language for high-performance, policy-heavy environments like IXPs and route servers.

Key Features:

  • Multiple routing tables
  • Powerful filtering/policy language
  • IPv4 and IPv6 support
  • BGP, OSPF, RIP, Babel, BFD, RPKI
  • Route server capabilities
  • Extremely fast performance

Performance:

  • Fastest BGP implementation in most benchmarks
  • Single process/core architecture
  • ~25% faster than FRR
  • Lowest memory usage (can fit 1M IPv4 routes in 128MB)
  • ~30ns lookup with 1M routes

Use Cases:

  • IXP route servers (most popular)
  • High-performance routing
  • Large routing tables
  • Policy-heavy environments
  • Service provider networks

Strengths:

  • βœ… Fastest performance
  • βœ… Lowest memory usage
  • βœ… Powerful policy language
  • βœ… Excellent for route servers
  • βœ… Popular at IXPs

Weaknesses:

  • ❌ Steeper learning curve
  • ❌ Configuration syntax differs from Cisco

Recommendation: ⭐⭐⭐⭐⭐ Best for IXPs, route servers, high performance


3. ExaBGP ⭐⭐⭐⭐⭐

Language: Python URL: https://github.com/Exa-Networks/exabgp Status: Active

Description: A unique, Python-based tool focused on programmatic BGP peering and network automation, rather than being a full routing daemon. "The BGP swiss army knife of networking."

Key Features:

  • Simple API (STDIN/STDOUT)
  • BGP FlowSpec (only open source implementation)
  • IPv4, IPv6, MPLS VPN support
  • JSON and text encoders
  • External process model
  • No RIB/FIB manipulation

Performance:

  • Slower than compiled implementations (Python)
  • Not designed for full routing table
  • Efficient for route injection/collection
  • Lightweight resource usage

Use Cases:

  • DDoS mitigation with FlowSpec ⭐
  • Anycast service announcement
  • Dynamic load balancing
  • Route injection
  • Network automation
  • BGP testing/simulation
  • Route monitoring

Strengths:

  • βœ… Only open source FlowSpec implementation
  • βœ… Simple API (any language)
  • βœ… Easy deployment (Python only)
  • βœ… Flexible and scriptable
  • βœ… At Facebook scale (Katran)

Weaknesses:

  • ❌ Slower than C/Go implementations
  • ❌ Not a full routing daemon
  • ❌ No RIB/FIB

Recommendation: ⭐⭐⭐⭐⭐ Best for automation, FlowSpec, anycast


4. GoBGP ⭐⭐⭐⭐

Language: Go URL: https://osrg.github.io/gobgp/ GitHub: https://github.com/osrg/gobgp Status: Active

Description: An open source BGP implementation designed from scratch for modern environments and implemented in Go. Supports modern BGP features and cloud-native deployments.

Key Features:

  • Modern Go codebase
  • gRPC API
  • BGP FlowSpec support
  • MRT support
  • BMP support
  • Graceful restart
  • Cloud-native design

Performance:

  • Slowest of major implementations
  • Can use multiple cores
  • 24 seconds vs. 3-4 seconds for others (receiving routes)
  • ~2x more memory than BIRD/FRR
  • High CPU usage

Use Cases:

  • Cloud-native environments
  • Container networking
  • Kubernetes integration
  • Automation via gRPC API
  • Modern application integration

Strengths:

  • βœ… Modern language (Go)
  • βœ… gRPC API
  • βœ… Easy to contribute
  • βœ… Cloud-native design
  • βœ… Multi-core support

Weaknesses:

  • ❌ Significantly slower than alternatives
  • ❌ High memory usage
  • ❌ High CPU usage

Recommendation: ⭐⭐⭐⭐ Good for cloud/K8s, but consider performance


5. OpenBGPD ⭐⭐⭐⭐

Language: C URL: https://www.openbgpd.org/ GitHub: Part of OpenBSD Status: Active (OpenBSD project)

Description: The routing daemon developed and supported by the OpenBSD project, known for its focus on security, simplicity, and clear configuration.

Key Features:

  • Security-focused design
  • Simple configuration
  • IPv4 and IPv6 support
  • Prefix filtering
  • AS path manipulation
  • Route reflector support

Performance:

  • Considerably slower with >10 neighbors (2-3x)
  • Highest memory usage in tests
  • Single process architecture

Use Cases:

  • Security-conscious deployments
  • OpenBSD systems
  • Simple BGP setups
  • Small to medium deployments

Strengths:

  • βœ… Security-focused
  • βœ… Simple configuration
  • βœ… OpenBSD quality
  • βœ… Clean codebase

Weaknesses:

  • ❌ Slowest performance (2-3x slower)
  • ❌ Highest memory usage
  • ❌ Limited features vs. FRR/BIRD

Recommendation: ⭐⭐⭐⭐ Good for security-focused or small deployments


πŸš€ Modern/Experimental Implementations

6. RustyBGP ⭐⭐⭐

Language: Rust URL: https://github.com/osrg/rustybgp Status: Active but experimental

Description: Mission to develop a high-performance and safe BGP implementation. An experiment to implement aged and rusty BGP protocol in a modern language.

Key Features:

  • Rust memory safety
  • Multi-core design
  • gRPC APIs (GoBGP compatible)
  • High performance potential

Performance:

  • Slower than BIRD/FRR in current state
  • Uses all CPU cores efficiently
  • Lowest memory usage in high-neighbor tests
  • More efficient than FRR but slower

Use Cases:

  • Experimental deployments
  • Multi-core systems
  • Memory-constrained environments

Strengths:

  • βœ… Rust memory safety
  • βœ… Multi-core utilization
  • βœ… Low memory usage
  • βœ… GoBGP API compatible

Weaknesses:

  • ❌ Not yet fully formed BGP stack
  • ❌ Limited policy support
  • ❌ Experimental status
  • ❌ Slower than mature implementations

Recommendation: ⭐⭐⭐ Promising but not production-ready


7. bio-routing (bio-rd) ⭐⭐⭐

Language: Go URL: https://github.com/bio-routing/bio-rd Status: Active

Description: A project to create a versatile, fast and reliable routing daemon in Go. bio = BGP + IS-IS + OSPF.

Key Features:

  • Multi-protocol (BGP, IS-IS, OSPF)
  • Modern Go implementation
  • Designed for performance
  • Modular architecture

Use Cases:

  • Modern routing implementations
  • Go-based infrastructure
  • Multi-protocol support

Strengths:

  • βœ… Modern Go codebase
  • βœ… Multi-protocol
  • βœ… Well-architected

Weaknesses:

  • ❌ Less mature than FRR/BIRD
  • ❌ Limited adoption

Recommendation: ⭐⭐⭐ Interesting but consider maturity


8. CoreBGP ⭐⭐⭐

Language: Go URL: https://github.com/jwhited/corebgp GitHub: https://github.com/jwhited/corebgp

Description: A BGP library written in Go that implements the BGP FSM with an event-driven, pluggable model.

Key Features:

  • Library, not a daemon
  • Event-driven plugin model
  • Does NOT manage RIB
  • Does NOT send UPDATE messages
  • User controls all behavior

Use Cases:

  • Building custom BGP applications
  • BGP-enabled services
  • Research and experimentation

Strengths:

  • βœ… Pluggable architecture
  • βœ… Full control for developers
  • βœ… Modern Go library

Weaknesses:

  • ❌ Not a ready-to-use daemon
  • ❌ Requires custom implementation

Recommendation: ⭐⭐⭐ For developers building BGP apps


🐍 Python Implementations

9. YABGP ⭐⭐⭐

Language: Python URL: https://github.com/smartbgp/yabgp PyPI: https://pypi.org/project/yabgp/ Status: Active

Description: Yet Another BGP Python Implementation. Can establish BGP connections with routers and receive/parse BGP messages for analysis.

Key Features:

  • BGP message parsing
  • Works with Cisco/Huawei/Juniper routers
  • GNS3 simulator support
  • Analysis-focused

Code Heritage:

  • Borrowed from PyBal (Wikimedia) for FSM/protocol
  • References ExaBGP for message parsing

Use Cases:

  • BGP message analysis
  • Network testing
  • Research and learning

Strengths:

  • βœ… Python (easy to modify)
  • βœ… Good for analysis
  • βœ… Works with real routers

Weaknesses:

  • ❌ Not designed for production routing
  • ❌ Limited feature set

Recommendation: ⭐⭐⭐ Good for analysis and testing


10. PyBal ⭐⭐

Language: Python URL: git.wikimedia.org/tree/operations/debs/pybal.git Organization: Wikimedia Foundation Status: Active (for Wikimedia)

Description: BGP-based load balancer for website resilience. Written by Wikimedia Foundation.

Key Features:

  • BGP-based load balancing
  • Health checking
  • Service announcement

Use Cases:

  • Website resilience
  • Load balancing with BGP

Strengths:

  • βœ… Production use at Wikimedia
  • βœ… Python codebase

Weaknesses:

  • ❌ Specific to Wikimedia use case

Recommendation: ⭐⭐ Niche use case


11. pybgp ⭐⭐

Language: Python URL: https://code.launchpad.net/pybgp Status: Inactive?

Description: Another Python BGP implementation. Supports IPv4 and VPNv4/MPLS.

Key Features:

  • Uses Twisted framework
  • IPv4 and VPNv4/MPLS support
  • Limited RFC support

Strengths:

  • βœ… Twisted framework
  • βœ… VPNv4 support

Weaknesses:

  • ❌ Limited RFC support
  • ❌ Unclear active status
  • ❌ Twisted dependency

Recommendation: ⭐⭐ Consider ExaBGP or YABGP instead


πŸ¦€ Rust Implementations

12. bgpd-rs ⭐⭐

Language: Rust URL: https://github.com/thepacketgeek/bgpd-rs Status: Experimental

Description: BGP Peering Tool in Rust by ThePacketGeek.

Key Features:

  • Rust implementation
  • Uses bgp-rs library
  • Learning/experimental

Use Cases:

  • Learning Rust + BGP
  • Experimentation

Strengths:

  • βœ… Rust safety
  • βœ… Educational

Weaknesses:

  • ❌ Not production-ready
  • ❌ Limited features

Recommendation: ⭐⭐ Educational/experimental


13. bgp-rs (DevQps) ⭐⭐

Language: Rust URL: https://github.com/DevQps/bgp-rs Status: Library

Description: BGP library in Rust. Used as base for bgpd-rs.

Key Features:

  • Library for BGP parsing
  • Protocol implementation

Recommendation: ⭐⭐ Library for developers


14. ZettaBGP ⭐⭐⭐⭐

Language: Rust URL: https://docs.rs/zettabgp/latest/zettabgp/ Crates.io: https://crates.io/crates/zettabgp Status: Active library

Description: Comprehensive Rust library for parsing and composing BGP and BMP (BGP Monitoring Protocol) messages. Designed for building route reflectors, monitoring systems, and analytics platforms.

Key Features:

  • BGP message types: Open, Notification, Keepalive, Update
  • BMP v3 support (Initiation, Termination, PeerUpNotification, RouteMonitoring)
  • 15+ address families: IPv4/IPv6 unicast/multicast/labeled, VPN, EVPN, FlowSpec
  • Path attributes: MED, Origin, AS Path, Communities, Extended Communities, Cluster List, Originator ID
  • Advanced features: Graceful Restart, LLGR, ADD-PATH
  • FlowSpec: Both IPv4 and IPv6
  • EVPN: Full support
  • Dual-licensed: MIT or Apache 2.0

Use Cases:

  • Building BGP route reflectors
  • BGP monitoring systems
  • BGP analytics platforms
  • Protocol parsing/composition toolkit

Strengths:

  • βœ… Rust memory safety and performance
  • βœ… Comprehensive protocol support (BGP + BMP)
  • βœ… Modern address families (EVPN, FlowSpec, VPN)
  • βœ… Library design (flexible integration)
  • βœ… Active maintenance
  • βœ… Well-structured API

Weaknesses:

  • ❌ Library only (not a complete daemon)
  • ❌ 43% documentation coverage
  • ❌ Requires Rust knowledge
  • ❌ No performance benchmarks available

Comparison:

  • Similar scope to GoBGP library
  • More comprehensive than bgp-rs (DevQps)
  • Complementary to RustyBGP (library vs. daemon)

Recommendation: ⭐⭐⭐⭐ Excellent library for building custom BGP applications in Rust


πŸ’Ž Ruby Implementations

15. BGPFeeder ⭐⭐⭐

Language: Ruby URL: https://github.com/BytemarkHosting/bgpfeeder Organization: Bytemark Hosting Status: Active

Description: A BGPv4 daemon to distribute an infrequently-changing set of static routes.

Key Features:

  • Lightweight static route distribution
  • Does NOT listen on port 179
  • Discards UPDATE messages
  • Simple state machine (not RFC 1771 compliant)

Use Cases:

  • Static route announcement
  • Simple anycast setups

Strengths:

  • βœ… Simple and lightweight
  • βœ… Production use at Bytemark

Weaknesses:

  • ❌ Not a "proper" BGP daemon
  • ❌ Very limited functionality

Recommendation: ⭐⭐⭐ For simple static routing only


16. bgp4r ⭐⭐

Language: Ruby URL: https://github.com/jesnault/bgp4r Status: Unknown

Description: BGP implementation in Ruby.

Note: Limited information available.

Recommendation: ⭐⭐ Research before using


β˜• Java Implementation

17. freeRouter ⭐⭐⭐⭐

Language: Java URL: http://www.freertr.org/ Download: http://freerouter.nop.hu/ Status: Active

Description: Free, open source router OS process made by network/software engineers. Independent of underlying OS capabilities since it handles packets itself.

Key Features:

  • Full routing protocol suite
  • BGP4 and BGP6
  • OSPF, ISIS, RIP, EIGRP, RIFT, Babel, OLSR
  • PIM, MSDP support
  • MPLS, VRF, VPLS
  • P4 integration
  • DPDK support

Performance:

  • Handles packets in userspace
  • DPDK acceleration available

Use Cases:

  • Network simulation
  • Research environments
  • Java-based infrastructure
  • P4 programmable networks

Strengths:

  • βœ… Full protocol suite
  • βœ… OS-independent
  • βœ… P4 integration
  • βœ… Active development

Weaknesses:

  • ❌ Java overhead
  • ❌ Less mainstream adoption

Recommendation: ⭐⭐⭐⭐ Interesting for research/simulation


πŸ”§ Perl Implementation

17. bgpsimple ⭐

Language: Perl URL: svn checkout http://bgpsimple.googlecode.com/svn/trunk/ bgpsimple-read-only Status: Inactive (Google Code archived)

Note: Historical interest only.

Recommendation: ⭐ Use modern alternatives


πŸ§ͺ Erlang Implementations

18. eggpd ⭐⭐

Language: Erlang URL: https://github.com/ThomasHabets/eggpd Author: Thomas Habets Status: Experimental

Description: BGP implementation in Erlang.

Use Cases:

  • Erlang-based infrastructure
  • Experimentation

Recommendation: ⭐⭐ Experimental


19. erlang-bgp (brunorijsman) ⭐

Language: Erlang URL: https://github.com/brunorijsman/erlang-bgp Status: Start of implementation

Note: Very early stage.

Recommendation: ⭐ Research project


πŸ“ Haskell Implementation

20. hBGP ⭐⭐

Language: Haskell URL: https://github.com/hdb3/hBGP Status: Implementation available

Description: BGP implementation in Haskell.

Use Cases:

  • Functional programming research
  • Haskell infrastructure

Recommendation: ⭐⭐ Academic/research use


πŸ” Related Tools & Libraries

21. BaGPipe-BGP ⭐⭐⭐

Language: Python (ExaBGP-based) URL: https://github.com/Orange-OpenSource/bagpipe-bgp Organization: Orange Status: Active

Description: ExaBGP fork with lightweight implementation of BGP VPNs, focused on OpenStack integration.

Key Features:

  • BGP VPN support
  • OpenStack Neutron integration
  • Based on ExaBGP classes
  • EVPN support

Use Cases:

  • OpenStack cloud networking
  • BGP VPN deployments
  • Data center gateway integration

Strengths:

  • βœ… OpenStack integration
  • βœ… Production use at Orange

Recommendation: ⭐⭐⭐ For OpenStack deployments


22. Ryu (NTT) ⭐⭐⭐

Language: Python URL: https://github.com/osrg/ryu Organization: NTT Status: Active

Description: SDN framework with BGP support added in 2014.

Key Features:

  • SDN controller framework
  • BGP support
  • OpenFlow integration

Use Cases:

  • SDN controllers
  • BGP + OpenFlow integration

Recommendation: ⭐⭐⭐ For SDN use cases


23. pmacct / pmbmpd ⭐⭐⭐⭐

Language: C URL: https://github.com/pmacct/pmacct Website: http://www.pmacct.net/ Status: Active

Description: Passive network monitoring tools with BGP/BMP support. Not a BGP daemon but a BMP (BGP Monitoring Protocol) collector.

Key Features:

  • BMP (RFC 7854) collector
  • BGP prefix/update collection
  • NetFlow, IPFIX, sFlow support
  • Kafka integration

Use Cases:

  • BGP monitoring
  • Network telemetry
  • BGP data collection
  • ISP-scale monitoring

Strengths:

  • βœ… Production-grade monitoring
  • βœ… ISP deployments
  • βœ… Comprehensive telemetry

Recommendation: ⭐⭐⭐⭐ Essential for BGP monitoring


24. pbgp-parser (DE-CIX) ⭐⭐⭐

Language: Unknown URL: https://github.com/de-cix/pbgp-parser Organization: DE-CIX Status: Active

Description: PCAP file parser for BGP.

Use Cases:

  • PCAP analysis
  • BGP troubleshooting

Recommendation: ⭐⭐⭐ Useful tool


25. Piranha ⭐⭐

Language: Unknown URL: https://github.com/spale75/piranha Status: Unknown

Description: Network monitoring tool.

Recommendation: ⭐⭐ Research before using


26. BgpKit Parser πŸ“¦

Language: Rust URL: https://github.com/bgpkit/bgpkit-parser Status: Active

Description: MRT/BGP data parser library written in Rust. NOT a BGP daemon.

Use Cases:

  • BGP data analysis
  • MRT file parsing
  • Research

Note: Library for parsing, not a routing daemon.

Recommendation: Useful library for BGP data analysis


πŸ“Š Performance Comparison Summary

Speed Ranking (Fastest to Slowest)

  1. BIRD - ⚑⚑⚑⚑⚑ Fastest
  2. FRR - ⚑⚑⚑⚑ Very fast (25% slower than BIRD)
  3. RustyBGP - ⚑⚑⚑ Moderate (but improving)
  4. OpenBGPD - ⚑⚑ Slow (2-3x slower than BIRD, >10 neighbors)
  5. GoBGP - ⚑ Very slow (24s vs 3-4s)
  6. ExaBGP - ⚑ Python overhead (not designed for full table)

Memory Usage Ranking (Lowest to Highest)

  1. RustyBGP - Lowest (high neighbor count)
  2. BIRD - Very low
  3. FRR - Low
  4. GoBGP - 2x more than BIRD/FRR
  5. OpenBGPD - Highest in tests

Multi-Core Support

  • Multi-core: RustyBGP, GoBGP
  • Single-core: BIRD, FRR, OpenBGPD, ExaBGP

🎯 Use Case Recommendations

For IXP Route Servers

Winner: BIRD ⭐⭐⭐⭐⭐

  • Fastest performance
  • Powerful policy language
  • Industry standard for route servers
  • Lowest memory usage

For Full Routing Daemon (Enterprise/ISP)

Winner: FRRouting ⭐⭐⭐⭐⭐

  • Modern, actively developed
  • Full protocol suite
  • Good performance
  • Wide adoption
  • Excellent documentation

For DDoS Mitigation / FlowSpec

Winner: ExaBGP ⭐⭐⭐⭐⭐

  • Only open source FlowSpec implementation
  • Simple API for automation
  • Proven at Facebook scale
  • Easy integration

For Network Automation / Anycast

Winner: ExaBGP ⭐⭐⭐⭐⭐

  • STDIN/STDOUT API
  • Any language integration
  • Python flexibility
  • Health check integration
  • Facebook Katran uses it

For Cloud-Native / Kubernetes

Winners:

  1. GoBGP ⭐⭐⭐⭐ - gRPC API, modern design
  2. ExaBGP ⭐⭐⭐⭐ - Simple integration
  3. bio-routing ⭐⭐⭐ - Go-native

For Security-Focused Deployments

Winner: OpenBGPD ⭐⭐⭐⭐

  • OpenBSD security focus
  • Simple, auditable code
  • Clear configuration

For High-Performance Environments

Winner: BIRD ⭐⭐⭐⭐⭐

  • Fastest BGP implementation
  • Lowest memory usage
  • Handles full routing tables efficiently

For Research / Experimentation

Winners:

  1. freeRouter ⭐⭐⭐⭐ - Full features, P4 support
  2. RustyBGP ⭐⭐⭐ - Modern Rust
  3. YABGP ⭐⭐⭐ - Analysis focus

πŸ”₯ Quick Decision Matrix

Need Choose Why
IXP Route Server BIRD Fastest, best policies
Full Routing Daemon FRRouting Modern, complete, supported
DDoS Mitigation ExaBGP Only OSS FlowSpec
Anycast Services ExaBGP Simple API, proven
Kubernetes/Cloud GoBGP Cloud-native, gRPC
Maximum Performance BIRD Fastest implementation
Security First OpenBGPD OpenBSD security
Network Automation ExaBGP Scriptable, flexible
Java Environment freeRouter Full-featured Java
BGP Monitoring pmacct/pmbmpd BMP collector

πŸ“ˆ Maturity & Adoption Levels

Production-Grade (Battle-Tested)

  • βœ… BIRD - IXPs worldwide
  • βœ… FRRouting - Enterprises, ISPs, Linux distros
  • βœ… ExaBGP - Facebook, ISPs, enterprises
  • βœ… OpenBGPD - OpenBSD community

Production-Ready (Proven)

  • βœ… GoBGP - Cloud deployments
  • βœ… freeRouter - Research networks

Emerging (Active Development)

  • πŸ”„ RustyBGP - Promising but experimental
  • πŸ”„ bio-routing - Active development
  • πŸ”„ CoreBGP - Library for developers

Experimental / Niche

  • πŸ§ͺ YABGP - Analysis focus
  • πŸ§ͺ bgpd-rs - Learning project
  • πŸ§ͺ Erlang/Haskell implementations

🌐 Ecosystem Overview

By Language Popularity

C (Production Grade):

  • BIRD ⭐⭐⭐⭐⭐
  • FRRouting ⭐⭐⭐⭐⭐
  • OpenBGPD ⭐⭐⭐⭐

Python (Automation):

  • ExaBGP ⭐⭐⭐⭐⭐
  • YABGP ⭐⭐⭐
  • PyBal ⭐⭐

Go (Cloud-Native):

  • GoBGP ⭐⭐⭐⭐
  • bio-routing ⭐⭐⭐
  • CoreBGP ⭐⭐⭐

Rust (Emerging):

  • RustyBGP ⭐⭐⭐
  • bgpd-rs ⭐⭐

Java (Specialized):

  • freeRouter ⭐⭐⭐⭐

Ruby (Niche):

  • BGPFeeder ⭐⭐⭐
  • bgp4r ⭐⭐

πŸ“š Historical Evolution

1996: GNU Zebra
  ↓
2003: Quagga fork (Zebra abandoned)
  ↓
2009: ExaBGP created (Python automation)
  ↓
2010: BIRD development
  ↓
2013: GoBGP created (Go implementation)
  ↓
2017: FRRouting fork (Quagga successor)
  ↓
2018: RustyBGP experimental (Rust)
  ↓
2025: Mature ecosystem with choices for every use case

πŸŽ“ Learning Resources

For Beginners

  1. ExaBGP - Simplest to start (Python + API)
  2. FRRouting - Most documentation
  3. BIRD - Excellent docs once you learn syntax

For Research

  1. freeRouter - Full features for testing
  2. YABGP - BGP message analysis
  3. ExaBGP - Protocol experimentation

For Contributors

  1. GoBGP - Modern Go codebase
  2. RustyBGP - Rust learning
  3. bio-routing - Active Go project

πŸ’‘ Key Takeaways

  1. No single "best" implementation - depends on use case
  2. BIRD = Performance king for IXPs and route servers
  3. FRRouting = Default choice for full routing daemon
  4. ExaBGP = Automation specialist for FlowSpec/anycast
  5. GoBGP = Cloud-native but slower
  6. OpenBGPD = Security focus but slower
  7. Rust/Go = Future but not yet mature

πŸ”— Additional Resources


πŸ“ Summary Table

Implementation Language Status Speed Memory Use Case Rating
BIRD C Mature ⚑⚑⚑⚑⚑ Low IXP/Performance ⭐⭐⭐⭐⭐
FRRouting C Mature ⚑⚑⚑⚑ Low Full Daemon ⭐⭐⭐⭐⭐
ExaBGP Python Mature ⚑⚑ Low Automation ⭐⭐⭐⭐⭐
GoBGP Go Mature ⚑ High Cloud/K8s ⭐⭐⭐⭐
OpenBGPD C Mature ⚑⚑ High Security ⭐⭐⭐⭐
RustyBGP Rust Experimental ⚑⚑⚑ Lowest Research ⭐⭐⭐
freeRouter Java Active ⚑⚑⚑ Medium Research/P4 ⭐⭐⭐⭐
bio-routing Go Active ? ? Multi-protocol ⭐⭐⭐
YABGP Python Active ⚑ ? Analysis ⭐⭐⭐

Last Updated: 2025-11-09 Total Implementations Documented: 26+ Production-Ready: 6 Experimental: 10+ Languages Covered: 10 (C, Python, Go, Rust, Java, Ruby, Perl, Erlang, Haskell, PHP)


For Documentation Writers:

Use this document to:

  1. Compare ExaBGP with alternatives
  2. Show ExaBGP's unique position (FlowSpec, automation)
  3. Recommend alternatives for different use cases
  4. Demonstrate ecosystem awareness
  5. Link to community resources

ExaBGP's Unique Value: Only open source FlowSpec implementation + simplest automation API + proven at hyperscale (Facebook).

Clone this wiki locally