A modern, open-source Border Gateway Protocol (BGP) implementation written in Go for scalable network routing.
GoBGP is a complete, open-source Border Gateway Protocol (BGP) implementation written in Go, designed for modern networking environments. It provides a robust and scalable solution for internet routing, route serving, and data center networking, supporting advanced features like EVPN, Flowspec, and RPKI. The project addresses the need for a performant, maintainable BGP stack that integrates seamlessly with contemporary infrastructure.
Network engineers, operators, and developers building or managing routing infrastructure for data centers, internet exchange points (IXPs), or service providers. It is also suitable for developers creating custom network applications that require programmable BGP control via gRPC or a Go library.
Developers choose GoBGP for its modern, clean architecture implemented in Go, offering high performance, ease of integration, and extensibility. Its unique selling points include native support for advanced routing capabilities (e.g., BGP-LS, SR Policy), comprehensive monitoring tools (MRT, BMP), and optimizations for scalable data center networking like unnumbered BGP and dynamic neighbors.
BGP implemented in the Go Programming Language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports full BGP capabilities including route reflection, graceful restart, and peer groups, as documented in the CLI and operation guides.
Includes EVPN, Flowspec, BGP-LS, and SR Policy for modern use cases like data center networking and traffic engineering, with dedicated documentation sections.
Provides MRT and BMP integration for route telemetry and metrics collection, essential for network analysis and security, as outlined in the monitoring docs.
Offers gRPC-based management and a Go-native BGP library, enabling seamless automation and custom application development, detailed in the gRPC and lib guides.
Requires deep networking expertise to set up and tune properly, with extensive CLI and policy documentation that can be overwhelming for novices.
Has fewer third-party tools, plugins, and community resources compared to established alternatives like FRR, which might slow integration in diverse environments.
As a full-featured Go implementation, it may consume more memory and CPU than minimal BGP daemons, making it less ideal for resource-constrained scenarios.