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

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 NOS (e.g. using CumulusLinux or SONiC), you pretty likely want to observe the power levels of the transceivers present in your devices. The nice folks from WobCom have build a transceiver-exporter which fills this gap very nicely. While working at Cloudflare I’ve made 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.