Open Source

I’m involved in quite some Open Source Software projects, have written a number of tools by myself as well as made PRs to other projects over the years. This site contains an overview of some projects / tools which might be helpful.

Networking

bio-routing – a project to create a versatile, fast and reliable routing daemon in Golang. bio = BGP + IS-IS + OSPF

Network Automation

While in my time as Network Automation Engineer at Cloudflare, I started building Octopus, and managed to Open Source it. It provides an extensible data aggregation layer to tap into various data sources (with its tentacles, if you will), and retrieve all information needed to build an enriched topology view of the infrastructure. Its data format follows the NetBox data schema and the Open Sourced version contains the NetBox connector, to retrieve related information from NetBox.

Freifunk Hochstift Salt Stack / “SDN”

The Freifunk Hochstift Community network is managed by a self-made SDN based on Salt Stack, Python, and NetBox as Source of Truth.

Most of the Salt configuration as well as the NetBox Abstraction and Caching Layer (NACL) are publicly available on GitHub.

NetBox

The netbox-scripts repo contains some NetBox Custom Scripts I wrote to make life of operators easier. Most scripts here were written for the Freifunk Hochstift network, and are used to provision NetBox data to be consumed by the FFHO Salt stack. Related blog posts:

When you’re starting you NetBox journey, you might find the Netbox DeviceType library useful, which contains a lot of DeviceType and ModuleType definitions which are ready-to-use.

When you’re using NetBox Scripts, this PR to the netbox-community/customization repo adding a helper library might be of interest.

With PR11152, I’ve added support to gracefully abort a NetBox Script by raising an AbortScript Exception. This is part of NetBox >=v3.4.4.

Observability

BMP

bbmp2kafka an Open Source BGP Monitoring Protocol (BMP, RFC7854) receiver based on the Bio-Routing BGP/BMP library, designed to forward all BMP Monitoring messages, so specifically BGP UPDATEs and WITHDRAWs, onto a Kafka stream as protobuf messages.

Prometheus

node_exporter

If you’re using Prometheus for monitoring your environment, you’re most likely also using node_exporter. Since PR2515 it now also exposes the adminstate of any interface, which might come in handy for alerting.

transceiver_exporter

When you’re operating a network using a Linux-based systems (e.g. using native Linux, or NOSes like CumulusLinux or even SONiC – I’m sorry!), you pretty likely want to observe the power levels of the transceivers present in your devices. The nice folks from WobCom have built a transceiver-exporter which fills this gap very nicely. While working at Cloudflare, I’ve made a patch so that you can get the optical levers in dBm instead of mW to stick to the common unit used on vendor kit 🙂

Icinga2

I’ve been using Icinga2 for monitoring and alerting in multiple roles and had the need to create some checks, which can be found on my GitHub profile as well as on Icinga2 Exchange.

This includes checks for

System software

ifupdown-ng – a network device manager that is largely compatible with Debian ifupdown, BusyBox ifupdown and Cumulus Networks’ ifupdown2.

When running machines, which need to store data, one most likely wants to have the data encrypted at rest, e.g., but using LUKS. If you want to be able to reboot such machines remotely, and also be able to unlock the disks, you can do that using Fluffy UnLUKS – unlock yur LUKS encrypted drives remotely via SSH.