Notes from the network

Engineering lessons, automation, and lab builds.

A searchable knowledge base of networking, automation and infrastructure articles — design notes, troubleshooting write-ups and reproducible labs, written down so they’re easy to find the next time they matter.

Featured posts

View all →

Building a Lightweight Network Lab with Netlab and Containerlab on Ubuntu 24.04

Build a lightweight network lab on Ubuntu using netlab, containerlab, Docker, and Cisco IOL for fast, repeatable topology deployment and testing.

|

13 min read

Learning Byte 002: Following BGP Routes Across Multiple Autonomous Systems

Follow BGP routes across multiple autonomous systems and see how AS_PATH, route propagation, loop prevention, and best-path selection work in a real lab.

|

13 min read

Learning Byte 001: BGP Fundamentals

Learn the core concepts behind BGP, including autonomous systems, eBGP vs. iBGP, peer communication, neighbor states, message types, route advertisements, and AS_PATH.

|

14 min read

Recent posts

Building a Lightweight Network Lab with Netlab and Containerlab on Ubuntu 24.04

Build a lightweight network lab on Ubuntu using netlab, containerlab, Docker, and Cisco IOL for fast, repeatable topology deployment and testing.

|

13 min read

Learning Byte 002: Following BGP Routes Across Multiple Autonomous Systems

Follow BGP routes across multiple autonomous systems and see how AS_PATH, route propagation, loop prevention, and best-path selection work in a real lab.

|

13 min read

Learning Byte 001: BGP Fundamentals

Learn the core concepts behind BGP, including autonomous systems, eBGP vs. iBGP, peer communication, neighbor states, message types, route advertisements, and AS_PATH.

|

14 min read

Junos PyEZ Foundations

Learn the foundations of Junos PyEZ by connecting to Junos devices, retrieving structured operational data, and working with the results in Python.

|

15 min read

Out-of-Band Management That You’ll Actually Be Glad You Built

Console servers, a separate path, and the failure modes a dedicated OOB network quietly saves you from at 3am.

|

6 min read

From SSH Scripts to a Real Source of Truth with NetBox

Why a database beats a folder of YAML, and a migration path you can take one device type at a time without a big-bang cutover.

|

11 min read

Built for engineers

Articles include copy-pasteable, syntax-highlighted snippets — labelled by filename so you always know where the code belongs.

collect_bgp_state.py
# Pull BGP neighbor state from a device and flag anything not Established
from netmiko import ConnectHandler

def bgp_summary(host, creds):
    conn = ConnectHandler(host=host, **creds)
    rows = conn.send_command("show bgp summary", use_textfsm=True)
    down = [r for r in rows if r["state"] != "Established"]
    return {"host": host, "total": len(rows), "down": down}