BGP++ is Meta’s production BGP (Border Gateway Protocol) implementation, designed
and built to run as part of the FBOSS
network platform. It provides a high-performance BGP speaker with
support for modern protocol extensions including ECMP, Graceful Restart, and
Add-Path.
Requirements
Linux (tested on CentOS and Ubuntu)
Compiler supporting C++17 or higher
CMake 3.16+
Dependencies
BGP++ builds on top of several open-source libraries:
folly — Facebook’s C++ library of
reusable components
BGP++ uses CMake and follows the same build pattern as FBOSS and OpenR:
# Install dependencies and build
bash ./build/build_bgppp.sh
# Or build manually with CMake
mkdir build && cd build
cmake ..
make -j$(nproc)
# Run tests
make test
How BGP++ Works
BGP++ implements the BGP-4 protocol (RFC 4271)
with the following extensions:
BGP++: Meta’s BGP Implementation
BGP++ is Meta’s production BGP (Border Gateway Protocol) implementation, designed and built to run as part of the FBOSS network platform. It provides a high-performance BGP speaker with support for modern protocol extensions including ECMP, Graceful Restart, and Add-Path.
Requirements
Dependencies
BGP++ builds on top of several open-source libraries:
folly— Facebook’s C++ library of reusable componentsfbthrift— Facebook’s Thrift RPC frameworkfb303— Base service frameworkfboss— Facebook Open Switching Systemgflags,glog,gtest,fmt,re2,boostBuilding BGP++
Repo Directory Structure
Build Steps
BGP++ uses CMake and follows the same build pattern as FBOSS and OpenR:
How BGP++ Works
BGP++ implements the BGP-4 protocol (RFC 4271) with the following extensions:
Data Flow
Contributing
See the CONTRIBUTING file for how to help out.
License
BGP++ is MIT licensed, as found in the LICENSE file.