Skip to content
forked from osrg/rustybgp

BGP implemented in the Rust Programming Language

License

Notifications You must be signed in to change notification settings

rust-stuff/rustybgp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RustyBGP: BGP implementation in Rust

The mission is to develop a high-perofrmance, low-memory-footprint, and safe BGP implementaiton; an experiment to implement aged and rusty BGP protocol in a modern language.

RustyBGP supports the gRPC APIs same as GoBGP; GoBGP's CLI command enables you to manage RustyBGP. Currently, all RustyBGP can do is accepting peers, getting routes, doing the best path selection, advertising the best paths, and showing you these routes via the gRPC API. No active connection, policy, etc.

Get Started

You can easily build RusyBGP on any system that has Docker running. You don't need Rust development environment. You can build the x86_64 statically-linked binary as follows:

$ git clone https://github.com/osrg/rustybgp.git
$ cd rustybgp
$ docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder cargo build --release
$ ls -hl target/x86_64-unknown-linux-musl/release/daemon
-rwxr-xr-x 2 fujita fujita 8.1M Dec  6 12:26 target/x86_64-unknown-linux-musl/release/daemon

No configuration file support.

$ sudo ./target/debug/daemon
Hello, RustyBGP!
grpc: listening on 127.0.0.1:50051

After starting the RustyBGP daemon, you need to configure the AS number and the router ID then the daemon starts accepting peers.

$ gobgp global as 65000 router-id 10.0.0.1

Then you set up peer configuration.

$ gobgp neighbor add 10.0.0.2 as 65001
$ gobgp neighbor
Peer        AS Up/Down State       |#Received  Accepted
10.0.0.2 65001   never Idle        |        0         0

If you just want to check out the performance, start the daemon with --perf option. The daemon starts immediately with AS number 65001, then accepts any peers.

About

BGP implemented in the Rust Programming Language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%