LPardue / rustybgp

BGP implemented in the Rust Programming Language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:Apache License 2.0


Languages

Language:Rust 100.0%