/rotonda-doc

Documentation for Rotonda

Primary LanguageCSSCreative Commons Zero v1.0 UniversalCC0-1.0

NOT ALL FEATURES MENTIONED IN THE DOCUMENTATION IN THIS REPOSITORY ARE CURRENTLY IMPLEMENTED.

For more information see the ROADMAP

Rotonda

Roll your own BGP service application with Rotonda.

BGP services that you can build with Rotonda include, but are not limited to, a route monitor|collector|server|reflector, all this without modifying a single line in the source code of Rotonda. Rotonda is and always will be free, open-source software.

ROTONDA IS CURRENTLY IN ALPHA, DO NOT USE IN PRODUCTION

Rotonda is being actively worked on and this repository and all the packages we supply are still in ALPHA stage. Use it to experiment freely (we value your feedback!), but do not use it with data and data-streams you cannot afford to lose.

You should also be aware that all the APIs, configuration and the Roto syntax and grammar are still (highly) unstable.

For more information see the ROADMAP

Modular

Rotonda applications are built by combining units into a pipeline through which BGP data will flow. You can filter, modify and store the BGP data along the way, and create signals based on it to send to other applications. Units can be added and removed in a running Rotonda application.

Rotonda offers units to create BGP and BMP sessions, filters, Routing Information Bases (RIBs), and more.

Flexible

The behaviour of the units can be modelled by using a small, fun programming language called Roto, that we created to combine flexibility and ease-of-use. Roto lets you configure a Rotonda application, program units and create queries. Roto scripts can be created with your favourite text editor, but they can also be composed from the command line that's included in Rotonda.

High Performance

All data structures come with a trade-off between space and time, and Rotonda is no exception. Rotonda therefore offers units that perform the same task, but with different performance characteristics, so that you can optimize for your needs, be it a high-volume, low latency installation or a small installation in a constraint environment. None of this requires patching the Rotonda source, it's all configurable with a nimble Roto script.

Although Rotonda is still in alpha, these performance-critical parts have been battle-tested by, and are indeed being used in, large production environments.

Observable

All Rotonda units have their own finely-grained logging capabilities, and some have built-in queryable JSON API interfaces to give information about their current state and content through Rotonda's built-in HTTPS server. Signals can be sent to other applications. Moreover, Rotonda offers true observability by allowing the user to trace BMP/BGP packets start-to-end through the whole pipeline.

Storage Persistence

By default a Rotonda application stores all the data that you want to collect in memory. It can be configured to persist parts to another storage location, such as files or a database. Whether you put RIBs to files or in a database, you can still query it transparently with Roto.

Distributed

Multiple Rotonda instances can synchronize or shard data via our AVRO-based rotoro protocol, to create robust redundancy and/or scalability. Again you can still query all the distributed instances with Roto.

External Data Sources

Open-source with professional support services

NLnet Labs offers professional support and consultancy services with a service-level agreement. Rotonda is liberally licensed under the [Mozilla Public License 2.0] (https://github.com/NLnetLabs/rotonda/blob/main/LICENSE).