- Notifications
You must be signed in to change notification settings - Fork1
Modular, programmable BGP Engine
License
NLnetLabs/rotonda
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The composable, programmable BGP Engine
The current version of Rotonda allows you to open BGP and BMP sessions andcollect incoming routes from many peers into a in-memory database, modeled asa Routing Information Base (RIB). It also supports importing routes from MRTfiles into this database. Conditions for accepting incoming routes and sendingmessages to log files or a MQTT stream can be created using filters with theRoto
programming language. The RIB can be queried through an HTTP/JSONAPI.
Future versions of Rotonda will support an on-disk database, using externaldatasets in filters, reading routes from Kafka streams, and more.
Read thedocumentation to find out how toinstall and use Rotonda.
Rotonda
is under active development and features are added regularly.The APIs, the configuration and theRoto
syntax may change between0.x versions.For more information on upcoming features and changes see theROADMAP
Rotonda applications are built by combining units into a pipeline throughwhich BGP data will flow. You can filter, and store the BGP data alongthe way, and create signals based on it to send to other applications. Weaim for units to be hot-swappable, i.e. they can be added and removed in arunning Rotonda application.
Rotonda offers units to create BGP and BMP sessions, Routing InformationBases (RIBs), and more.
The behaviour of the units can be modeled by using a small, fun programminglanguage calledRoto
, that we created to combine flexibility andease-of-use. Right now,Roto
is used define filters that run in the hotpath of the Rotonda pipeline. It's our goal to integrate filter definition,configuration syntax, and query syntax intoRoto
scripts in one place.Modifying, versioning and provisioning of yourRoto
scripts should beas straight forward as possible.
Rotonda aims to offer units that perform the same task, but with differentperformance characteristics, so that you can optimize for your needs, be ita high-volume, low latency installation or a small installation in aconstraint environment.
All Rotonda units will have their own finely-grained logging capabilities,and some have built-in queryable JSON API interfaces to give informationabout their current state and content through Rotonda’s built-in HTTPSserver. Signals can be sent to other applications. Moreover, Rotonda aimsto offer true observability by allowing the user to trace BMP/BGP packetsstart-to-end through the whole pipeline.
By default a Rotonda application stores all the data that you want tocollect in memory. It should be possible to configure parts to persistto another storage location, such as files or a database. Whether you putRIBs to files or in a database, you can should still be able to query ittransparently withRoto
.
Roto
filter units should be able to make decisions based on real-timeexternal data sources. Similarly filter units should be ahlt to makedecisions based on data present in multiple RIBs. External data sourcescan be, among others, files, databases or even a RIB backed by an RTRconnection.
Multiple Rotonda instances should be able to synchronize or shard data viaa binary protocol, that we dubbedrotoro
.
Rotonda applications will be able to use data provided by the RPKI throughconnections with tools like Routinator and Krill. Besides that, Rotondasupports BGPsec out of the box. Again, no patching or recompiling required.
NLnet Labs offersprofessional support and consultancyservices with a service-levelagreement. Rotonda is liberally licensed under the[Mozilla Public License 2.0](https://github.com/NLnetLabs/rotonda/blob/main/LICENSE).
About
Modular, programmable BGP Engine