Skip to content

Latest commit

 

History

3,563 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rustbgpd rustbgpd

rustbgpd

Build License

An API-first BGP daemon in Rust for route servers, route reflectors, and network automation.

Manage peers, apply policy, and inject routes through gRPC or the rbgp CLI. Inspect unicast route decisions from the live RIB, test policies before applying them, and stream routing events to your own tools.

Documentation · Install · Releases · Website

Stability: inventoried IPv4/IPv6 unicast route-server and route-reflector surfaces have a narrow v1 compatibility contract, with baseline v0.69.0. The project remains alpha overall; unlisted surfaces, EVPN, and Linux dataplane features are outside that promise. Stability and compatibility explains the boundaries.

Choose your path

IXP route server

IPv4/IPv6 unicast, per-member policy, RPKI, and Add-Path. Inventoried surfaces are covered by the narrow v1 contract.

Evaluate · Deploy · Shadow pilot

Route reflector

IPv4/IPv6 unicast under the narrow v1 contract. VPN, labeled-unicast, RT-Constrain, and BGP-LS reflection have separate, scoped support; EVPN remains alpha.

Deploy · Family boundaries

Monitoring and automation

BMP/MRT feeds, route injection, FlowSpec, and gRPC integration. Shipped capabilities have individual limits; support does not imply v1 stability.

Monitoring recipe · API reference · DDoS example

Linux FIB integration is opt-in. VPN reflection does not provide PE/VRF or MPLS forwarding, and rustbgpd does not provide a full multi-protocol routing suite. Check the current limitations for your role.

Try it locally

With Git and Docker Compose installed, start rustbgpd and an FRR peer that advertises sample IPv4 and IPv6 routes. The first run builds the daemon from source; subsequent runs reuse cached build layers.

git clone https://github.com/lance0/rustbgpd
cd rustbgpd/examples/docker-compose
docker compose up -d --build

The demo supplies a public test-only bearer token to in-container rbgp commands. Once the containers are running, check the session and open the TUI:

docker compose exec rustbgpd rbgp -s http://127.0.0.1:50051 summary
docker compose exec rustbgpd rbgp -s http://127.0.0.1:50051 top

rbgp top — on-demand route explorer

Select the FRR peer, open its detail, then press r to explore its unicast Best, Received, Advertised, and Rejected tables and explain export decisions. Press q to exit. You can also explain a sample route directly:

docker compose exec rustbgpd rbgp -s http://127.0.0.1:50051 rib --prefix 192.168.1.0/24 --explain

When finished, run docker compose down. The demo guide covers more commands and resetting its persistent state.

Policy you can test before it touches a route

Write policies in .rpol with named prefix/community sets, composition, and unit tests in the policy file. Compile them offline, then dry-run a candidate against an installed daemon's live RIB before applying it.

From the repository root, using the shipped route-server policy:

rbgp policy check examples/route-server/hygiene.rpol
rbgp policy test examples/route-server/hygiene.rpol --policy ixp-hygiene --direction import
rbgp rib --prefix 203.0.113.0/24 advertised 198.51.100.7 --explain
rbgp policy stats

The live commands use your installed daemon's local socket by default; substitute your prefix and peer for the export example. Import-decision explain requires [policy.explain] enabled = true; unicast best-path and export-gate explain need no decision cache.

Policy language · Route explainability · Feature tour

Install

The daemon supports Linux x86_64 and aarch64. Releases provide tarballs, Debian/RPM packages, and container images; consult the platform support contract and the installation guide for platform requirements, checksum verification, and image architecture availability.

The default gRPC listener is a local Unix socket. For remote administration, use the documented mTLS and authorization setup.

Documentation

Start with the documentation index, or go directly to your task:

Task Guide
Configure, operate, or upgrade Configuration · Operations · Deployment
Automate or embed gRPC API · gNMI · Rust libraries
Evaluate the evidence Performance results · Operational proof · Interop and receipts
Understand or contribute Architecture · Contributing · Roadmap
Check compatibility or get help Stability · Support · Security reporting

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

An API-first BGP daemon in Rust for programmable route-server and control-plane use cases

Topics

Resources

Contributing

Security policy

Stars

61 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages