Once upon a time, I was helping a customer troubleshoot some connectivity issues to my employer's cloud services. I was logging into looking glass servers for every tier 1 carrier in the path and getting frustrated that the little tier 2/3 shops didn't have their own looking glasses for me to use, forcing me to make educated guesses about how traffic being routed within their network.
Then I started to look inward, and thought to myself, "well, why don't I have a looking glass for my own network?". I began looking into some open source options and came up a bit disappointed. The most actively maintained, feature-rich, and well-documented project is easily respawner/looking-glass, which does look like an excellent project. However, I was looking for something with a Python backend, and a highly customizable front end. Sadly, all the Python-based options on github were either extremely basic, platform-specific, or not actively maintained.
So, as a network engineer with no programming education or experience whatsoever, I thought it would be a great idea to dive straight into developing a complicated web application to get my feet wet! # end sarcasm
~2 months later at about 02:30 local time today, I finally made hyperglass available to "the masses", and I'm excited to share it with the community. hyperglass is a modern looking glass application, written completely in Python 3, that is intended to be too easy not to deploy (getting up and running should take no more than 10 minutes). For "traditional" network devices, Netmiko is used for SSH connection handling. For you edgy folks out there using FRRouting on Linux, I also built a little API called hyperglass-frr which runs on the Linux hosts and executes commands on behalf of hyperglass.
hyperglass also includes some neat features, such as IP/prefix blacklisting, query rate-limiting, response caching, and Prometheus metrics (Grafana dashboard also included!). I built the front-end on the Bulma CSS framework, which is extremely lightweight, pretty, and requires very little JavaScript (which makes me want to vomit). Supported query types are BGP Route, BGP Community, BGP AS Path, Ping, and Traceroute (any of which can be disabled). Almost everything application-wide is completely customizable - from the colors, fonts, and UI text of the front end to the SSH commands, error messages, and features on the back end, almost everything can be enabled, disabled, or changed via a simple TOML config file (all of which is documented).
I welcome any feedback from network engineers and programmers alike, and look forward to working with the community on improving hyperglass even more. My very lofty goal is that network operators out there will begin implementing looking glasses to help the rest of the network operators out there do their jobs better, ultimately making the internet work better (ever so slightly). Thanks for reading!
No comments:
Post a Comment