Changes in Release 0.9 through 0.9.3

Start and Stop the Lab with Netlab Commands

netlab up command creates configuration files, starts the virtual lab, and deploys device configurations. netlab down destroys the virtual lab.

Simple YAML inventory

Several netlab commands (notably netlab connect) relied on ansible-inventory to get device inventory data. netlab create can now create a simple lab inventory in a YAML file (default name: netsim-devices.yml). That file can be used with netlab connect in Ansible-free environments.

New or Changed Devices

  • Linux hosts (Ubuntu VMs or Alpine containers) are available in release 0.9.1.
    More details

  • Cumulus VX 4.4.0 Virtualbox Vagrant box is broken – box version is fixed @ 4.3.0 (release 0.9.2-2)

Topology Graphs

netlab create command can create graphviz1 .DOT files that can be used to draw:

  • A graph of physical connections (nodes and links)

  • A graph of autonomous systems, nodes, and BGP sessions

Transformed Lab Topology in YAML or JSON Format

netlab create command can output the transformed lab topology (nodes, links, defaults…) in YAML or JSON format for use in third-party tools.

Generic Output Framework

You can specify desired output format(s) in netlab create command, including:

  • Virtualization provider configuration file

  • Ansible inventory in various formats

  • Topology graph in DOT format (physical topology or BGP sessions)

  • YAML or JSON printout of transformed topology.

netsim-tools uses an extensible output framework implemented with dynamically loaded Python modules allowing you to add your own output formats.

Other Changes

  • Undocumented netlab transform command introduced in release 0.8 has been removed and replaced with generic output framework within netlab create command.

  • Release 0.9.3 supports static node IDs (used to generate management MAC address, interface addresses on multi-access links, and loopback addresses) and static interface addresses on multi-access links.

  • Arista EOS configuration deployment playbook uses wait_for_connection module to wait for SSH daemon when connecting to cEOS container (release 0.9.3)

python-box release 5.4.0 brought good and bad news:

  • It implemented mypy hints forcing me to cleanup the static typing hints and fix odd bits of code.

  • Unfortunately it also borked the setdefaults method. All calls to setdefaults have been replaced with more explicit alternatives.


graphviz is an excellent graphing tool that takes graph specification in text format, performs somewhat decent auto-placement and draws the graph in a number of output formats (including JPEG, PNG, and PDF).