Updating hashes
Summary: GitHub commits:
https://github.com/facebook/CacheLib/commit/f2f83ceb43294e383bc4524bc294b681910737eb https://github.com/facebook/fb303/commit/ce8af6280bc7ce336ddc05064d0165cfdcb24b58 https://github.com/facebook/fbthrift/commit/da27a027f856b63281e2c36b1a35d3c38a7229cf https://github.com/facebook/folly/commit/e243181570d06e6e746bc3995f0745f0e3dfd532 https://github.com/facebook/hermes/commit/36ab30689cf94a66203f5f99d9a4dd4d7930c515 https://github.com/facebook/mvfst/commit/3fc45489431dea92fbbdbf6d74161da416178f1a https://github.com/facebook/proxygen/commit/4954ad12adc177a9654ef7b5f9c30a1bdc6d6658 https://github.com/facebook/pyrefly/commit/b4cf749b51534e0886d9568da126cbd7dae784cd https://github.com/facebook/wangle/commit/ab25c8c58a444e62adb5ba9cb59aa25d4aa1fb45 https://github.com/facebookexperimental/edencommon/commit/f7388c02828151cd5371e1a6d572f741aa7a31f2 https://github.com/facebookexperimental/rust-shed/commit/aaefb4dbc2685df0a63721e3ff2b45e0f5c3b124 https://github.com/facebookincubator/fizz/commit/7de8f52e9878206cd3a0192d9b4295cd58cd2ac9
Reviewed By: ajb85
fbshipit-source-id: 2f63954b9a484cc3590def6cf8ac9d41494bc41f
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
BGP++
BGP++ is Meta’s C++ implementation of the Border Gateway Protocol. It supports Meta’s Data Center and Express Backbone networks and can be used as a standalone routing daemon or as a collection of BGP libraries.
This repository provides two mutually exclusive build variants:
Build variants
dcfsdb_clientbgp_binsbin/bgpbbexported_librariesbgp_bb_binsbin/bgp_bbdcis the default CMake variant. GitHub CI always sets the variant explicitly.Only one variant is configured in each CMake tree. Use separate scratch directories for DC and BB builds.
Requirements
The supported OSS build uses
getdeps.py, which downloads and builds BGP++ and its dependencies.The build requires:
--allow-system-packages.GitHub CI uses 18 parallel jobs on a 32-core runner. Use a lower value on machines with less memory.
Clone the repository
Scratch directories
Use a separate scratch directory outside the Git checkout for each variant:
/tmp/${USER}-bgp-build-dc/tmp/${USER}-bgp-build-bbDo not use paths inside the repository, such as
./build-outputor./.getdeps, and do not share one scratch directory between DC and BB.There are two reasons:
getdeps.pyapplies dependency patches relative to the enclosing Git repository. An in-repository scratch path can make patches resolve against the BGP checkout and fail with errors such asNo such file or directory.BGP_BUILD_VARIANTandFBOSS_BUILD_PROFILEvalues. Reusing one scratch directory can retain dependency configuration from the other variant and cause incorrect configure or link results.When switching variants, use the matching existing scratch directory or create a new one.
Build the DC variant
The DC build uses the FBOSS
fsdb_clientprofile and producesbgp.BUILD_SAI_FAKE=1builds the FBOSS dependency without a vendor SAI SDK.--src-dir=.ensures that the current BGP checkout is built.Build the BB variant
The BB build uses the smaller FBOSS
exported_librariesprofile and producesbgp_bb.The BB profile builds only these FBOSS libraries and their dependencies:
nodebaseradix_treeexponential_back_offlog_thrift_callalert_loggerThe BGP manifest selects Open/R’s
exported_librariesprofile automatically.Run tests
Tests must use the same variant, FBOSS profile, scratch directory, and build type as the corresponding build.
DC tests
BB tests
Locate the installed binaries
Use
show-inst-dirwith the same scratch directory, CMake variant, and privilege as the corresponding build.DC
BB
getdeps.pyinstalls the selected daemon undersbin/, generated and public headers underinclude/, and reusable static libraries underlib/.Build only the daemon
The commands above build the complete selected variant, including its test targets. For a daemon-only build, add these options after the
buildsubcommand:--no-tests --cmake-target bgp_bin--no-tests --cmake-target bgp_bb_binRerun the complete build without
--no-testsbefore invokinggetdeps.py test.Build types
getdeps.pysupports:DebugRelWithDebInfo— defaultMinSizeRelReleasePass the same value to every build, test, and path-query command:
Runtime integration
Both daemons accept:
--config=<path>for the BGP configuration.--policy=<path>for an optional separate policy configuration.--helpto list all registered command-line flags.--versionfor build information.The main configuration schema is
configerator/structs/neteng/fboss/bgp/bgp_config.thrift. Policy schemas are underconfigerator/structs/neteng/bgp_policy/thrift/.A test-only standalone configuration is available at
neteng/fboss/bgp/cpp/tests/sample_configs/stand_alone_conf.json. It is a test fixture, not a production deployment template.During normal startup:
bgpwaits for the FBOSS Agent FIB service.bgp_bbwaits for both FibEbb and the Open/R FIB agent.--platform=devskips the platform-readiness wait for development, but does not provide the missing FIB services.Repository layout
The paths below are relative to the GitHub repository root.
CMakeLists.txtBGP_BUILD_VARIANT=dc|bb.cmake/neteng/fboss/bgp/configerator/common/build/fbcode_builder/getdeps.py, dependency manifests, and shared CMake helpers..github/workflows/CONTRIBUTING.mdCODE_OF_CONDUCT.mdLICENSE