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.
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).
- Added pointers to new netlab CLI introduced with release 0.8.