Building network automation solutions

9 module online course

Start now!

netsim-tools: Release 0.4 Is Out

TL&DR: The new release of netsim-tools includes unnumbered interfaces, configuration modules, and OSPF configuration.

In mid-March, we enjoyed another excellent presentation by Dinesh Dutt, this time focused on running OSPF in leaf-and-spine fabrics. He astonished me when he mentioned unnumbered Ethernet interfaces being available on all major network operating systems. It was time to test things out, and I wanted to use my networking simulation builder to build the test lab.

Job#1: add unnumbered interface support to netsim-tools.

I also wanted to have OSPF configured on all devices without logging into them and typing like a mad monkey. I was thinking about adding configuration modules (OSPF, BGP, EVPN…) to network topologies for a long while. This was a perfect opportunity to put the framework in place.

Job#2: add support for extensible and configurable configuration modules.

Finally, after implementing the unnumbered interfaces and configuration module framework, it was time to develop a basic OSPF configuration module.

Job#3: add support for OSPF routing configuration. It allows you to configure OSPF process ID, node-level and per-link areas, and link costs.

Building a full-blown OSPF test network became a simple process (details coming in another blog post):

  • Describe desired network topology in YAML file.
  • Run create-topology script to create Ansible inventory and Vagrantfile (this script has been replaced with netlab create command in release 0.8)
  • Start the lab with vagrant up. Wait… Wait some more…
  • Deploy device configurations with initial-config.ansible playbook (this playbook is invoked with the netlab create command in release 0.8). The playbook deploys initial device configurations as well as any configuration modules (OSPF in my example).
  • Start doing the real testing instead of wasting time building and configuring a lab.

Finally, no job is finished until the paperwork is done. I probably spent way more time writing the documentation than code, but in the end, it paid off. While “wasting” time on documentation, I figured out (and fixed) a few quirks in the system. I also made parameter inheritance much more flexible than what Ansible inventory groups could do.

Finally, Job#4: Commit, merge, push. Hope you’ll find the new release useful and install and use it ;) – if you do, I’d appreciate hearing from you. You could also open a GitHub issue if there’s something you’d like to see in an upcoming release (no promises, though).

Revision History

Added pointers to new netlab CLI introduced with release 0.8.

Blog posts in this series

Add comment