A re-implementation of BGP, IS-IS and OSPF in go. We value respect and robustness!
To build Bio-Routing binares and/or examples you need Go installed and in your $PATH
.
Currently the minimum supported Go version is v1.20.
To build all commands and examples, you can leverage the Makefile
, if you have make
installed, and run
make build
If you're only interested in one particular command/service or example, found in the cmd/
or examples/
sub-directories within this repository,
enter the respective directory on a shell and run go build
.
You should get a binary named like the current directory, which you can run.
To build the BGP examples, this would look like
cd exmaples/bgp
go build
To build the bio-rd
service binary, this would look like
cd cmd/bio-rd
go build
go test -v -cover ./...
bio-rd
is the main binary which provides a configurable BGP speaker.
It supports the following command-line parameters:
Usage of ./bio-rd:
-bgp.listen-addr-ipv4 string
BGP listen address for IPv4 AFI (default "0.0.0.0:179")
-bgp.listen-addr-ipv6 string
BGP listen address for IPv6 AFI (default "[::]:179")
-config.file string
bio-rd config file (default "bio-rd.yml")
-grpc_keepalive_min_time uint
Minimum time (seconds) for a client to wait between GRPC keepalive pings (default 1)
-grpc_port uint
GRPC API server port (default 5566)
-metrics_port uint
Metrics HTTP server port (default 55667)
You can find an example configuration file within in cmd/bio-rd
directory.
As bio-rd
needs to listen on the priviledged TCP port 179 for BGP connections, you either need to start the service as root
or using sudo
, e.g.
$ sudo ./bio-rd -config.file bio-rd.yml
The benchmarks can be found in the bio-routing/bio-rd-benchmarks repository.