Collecting and analyzing routing information with Rotonda#
NLNOG Day 2025 (Amsterdam) digest Program Core pick Amsterdam · 30 September 2025
Luuk Hendriks (NLnet Labs)
- Why: BGP/datapath tooling the PM can adopt directly. Rotonda is the open-source engine for exactly what the previous talk argues for: ingesting BMP at scale and making it queryable.
- What: NLnet Labs' Rotonda: a routing-data collector and store that ingests BMP, live BGP, MRT dumps, and even RTR feeds; maintains RIBs per peer and per stage (pre/post policy, in/out/local); and exposes everything over an HTTP API. Example queries from the deck:
/api/v1/ribs/ipv4unicast/routes/185.49.140.0/23, with filters likefilter[ribType]=inPre(Adj-RIB-In pre-policy),filter[rovStatus]=valid(RPKI ROV status),filter[originAsn]=1133,filter[community]=AS1103:9876, plusinclude=moreSpecifics— all AND-combined. - How: The standout mechanism is Roto, a strongly-typed, compiled scripting language for filtering route data inside API queries — Roto compiles through Cranelift IR down to native x86_64/ARM64, so user-supplied filter functions run at compiled speed over stored RIBs rather than as interpreted per-route callbacks. Outputs include HTTP/JSON, MQTT, and files;
/metricsprovides Prometheus-style monitoring (the speaker candidly warns some built-in metrics are currently off and being overhauled). - Where applicable: General-purpose operator tooling, open source from NLnet Labs, deployable by anyone running BMP-capable routers — it pairs naturally with bgproutes.io-style collection and with internal route-monitoring/alerting pipelines.
