← Projects
Active Tools

Network Topology Visualiser

View on GitHub ↗
PythonNetmikoNetworkXGraphvizMatplotlibYAML

About this project

Python-based tool that ingests Cisco device configs (LLDP, CDP, routing tables) and generates interactive network topology diagrams. Useful for enterprise network documentation and change planning.

Background

Network documentation is perpetually out of date. Engineers make changes, diagrams aren't updated, and six months later the diagram no longer reflects what's actually connected. The Topology Visualiser inverts that: instead of maintaining a diagram and hoping it stays accurate, you generate it from the live device state on demand. The source of truth becomes the devices themselves, not the Visio file.

Netmiko handles the SSH collection layer — it abstracts the differences between IOS, NX-OS, and other Cisco variants and gives you a consistent interface for running show commands and parsing output. LLDP and CDP neighbour tables are the primary discovery mechanism: from any single device, you can walk the graph of directly connected neighbours and build the topology structure automatically. Routing tables add Layer 3 context — where the subnet boundaries are, how traffic flows between segments.

The NetworkX graph model stores the topology in a form that supports both visualisation and analysis: you can query shortest paths, identify bottlenecks, or export the adjacency structure for import into other tools. Graphviz provides the layout algorithms for static output; the interactive variant uses a JavaScript force-directed graph rendered from a DOT file export. The YAML inventory file means you can define the seed devices for discovery without hardcoding them into the script.

Highlights

  • SSH-based config collection from Cisco IOS/NX-OS via Netmiko
  • LLDP/CDP neighbour discovery with automatic edge construction
  • Layer 2 and Layer 3 topology rendering with VLAN annotation
  • YAML-based inventory file for multi-site, multi-device deployments
  • Exportable to PNG, SVG, and DOT formats for Visio/Lucidchart import
← All projects GitHub ↗
← Publication-Quality Figure Generator Research LaTeX Template →