Changes in Release 1.5

New Functionality

Release 1.5.4

  • Juniper vPTX/vEVO support by Stefano Sasso (initial configuration, IPv4+IPv6, OSPFv2/v3, IS-IS, BGP, BFD, VLANs, VRFs, MPLS, SR-MPLS)

  • Juniper vSRX can be run as a vrnetlab-packaged container (by Stefano Sasso)

  • Documentation migrated to

Release 1.5.3

Breaking changes:

  • containerlab 0.41.0 is the minimum version of containerlab that works with release 1.5.3

  • Strict validation of provider- and tool attributes might break some advanced topologies

Release 1.5.2

Release 1.5.1

Breaking changes:

  • Identifiers (names) in existing lab topologies might be too long to meet the identifier requirements. You will have to shorten those names.

  • Default ASAv password was changed. You might have to rebuild your ASAv boxes.

Release 1.5.0

Breaking changes

Release 1.5.3

  • Containerlab changed topology attribute names in release 0.41.0, forcing us to change topology file template and completely breaking backward compatibility.

  • Release 1.5.3 implements strict validation of provider- and tool attributes, which might trigger errors in some topologies. Please open an issue if we missed a provider attribute you need.

Release 1.5.2

  • We switched to Python Box 7.0.x and replaced tons of calls to get_from_box (internal function to get a value from a hierarchical key) with calls to Box .get method. That migration might have broken some obscure code path that is not covered with our CI/CD tests.

  • Loopback interface names for loopback links and VRF loopbacks are sequential within a single node, starting with one. Previously, loopback interfaces created from links used linkindex (a low value based on links list), and VRF loopbacks used vrfidx (a value starting with 100).

Release 1.5.1

Maximum Name Length

Release 1.5.1 added stricter checks of node names, group names, VLAN names, VRF names, link roles, addressing pools, devices, and Linux bridges. These names must be identifiers: alphanumeric strings (plus hyphen and underscore) up to 16 characters long. You might have to shorten too-verbose names in your topology files.

ASAv Default Password

Newer ASAv versions enforce a minimum password length of 8. The default password (vagrant) was changed to vagrant1. You should rebuild your ASAv Vagrant boxes to use the new password (using the new build recipe), or change the defaults through user default file containing:

devices.asav.group_vars.ansible_ssh_pass: vagrant
devices.asav.group_vars.ansible_become_password: vagrant

Release 1.5.0

Release 1.5.0 introduced strict validation of topology attributes. We ran extensive tests, including all the integration tests, so we’re pretty sure that whatever we ever wanted to use still works. Obviously it’s possible you used a combination of attributes that we did not test, or that we did not check attribute types in the past and unexpected types just worked.

We had to change the underlying data structure from lists of attributes to hierarchical dictionaries, we expect most plugins that added new core- or module attributes to break. Please take a look at the updated plugins in netsim/extra directory to see how your plugin should add new attributes (or open a GitHub case and we’ll help you).

Bug Fixes

Bug Fixes in Release 1.5.4-post1

  • Implement FRR on libvirt/Virtualbox as Ubuntu VM + FRR package

  • Make packet forwarding on Linux devices configurable

  • Control installation of Ubuntu packages with group variables

  • Make the list of ignored attributes configurable and allow ‘netlab_’ attributes in nodes

  • FRR BGP template fixes/enhancements

  • ebgp.utils implementation for FRR

  • Create empty links list if needed when using VLAN module

  • Merge global VRF data with node VRF data in post-transform hook

  • Add missing variable to ‘include_task’ module to display context-dependent task names during initial configuration

  • Mark ‘foreign’ nodes in multi-provider topology as ‘unmanaged’

  • Allow clab file binds templates in subdirectories

  • Consider node-specific provider when deploying device configurations

Bug Fixes in Release 1.5.4

  • Fix Vagrant version in installation script and document supported versions for Vagrant and vagrant-libvirt plugin

  • Accept any Python expression as a format modifier for YAML/JSON output modules

  • Build default dictionary from loopback addresses

  • Skip provider-specific shutdown steps if the provider is not installed

  • Fixes for Nokia SR OS IXR ECMP profiles

  • Replace ‘_’ with ‘-’ in Cumulus/Linux hostname

  • Copy BGP interface attributes from EBGP neighbors into bgp.neighbors data structure

  • Convert ‘netlab up’ CLI settings into int/bool if possible

  • Strip spaces from node names used in A-B link format

  • Nokia SR/OS: configure static blackhole routes for originated BGP networks

  • Enable ports in Nokia SR/OS initial configuration

  • Change containerlab release to 0.41.2

Bug Fixes in Release 1.5.3-post1

  • Allow srl-agents clab provider attribute

  • Pick specific containerlab version in netlab install containerlab installation script

  • Update containerlab topology template for IPv6 management

Bug Fixes in Release 1.5.3

  • Structured virtualization provider probes result in better error messages during ‘netlab up’ and ‘netlab down’

  • Strict validation of provider- and tool attributes

  • Use libvirt P2P UDP tunnels only on links with two nodes and link.type == p2p

  • Link to IOS XR build recipe was missing

  • Add sphinx-rtd-theme to docs requirements

  • containerlab multi-line startup-config

  • Load host MPLS kernel module before configuring MPLS in FRR containers.

  • Support SR Linux r23.3.1

  • SR Linux: Check if a VLAN has EVPN enabled

  • Fix MPLS EVPN transport configuration for SR OS

  • Fix IPv6 LLA configuration on Nexus OS

  • Abort if python-box version is lower than 7.0

Bug Fixes in Release 1.5.2

  • D2 output: add list of interfaces to nodes

  • Allow IP address allocations that barely fit into a prefix (like 2 nodes into /30)

  • Unify loopback and virtual interface processing

  • Ignore node provider equal to topology provider

  • Avoid dependency on Python for custom container configuration templates/scripts

  • SR Linux/SROS: OSPF related fixes

  • SR Linux: Use passive flag from interface

  • SR OS: Remove VRF dependency on BGP module

  • Deal with Python Box 7.0 expanding dots in keys read from YAML files

Bug Fixes in Release 1.5.1

  • Critical fix: kill dhcpclient process in Cumulus CX initial configuration

  • Nokia SR OS: Changes for IXR platform (#762)

  • Nokia SR OS: Include system interface in OSPF process (#760)

  • libvirt P2P links crash when using loopback links

  • Bug fix: Validate that VLANS and VRFS (if present) are dictionaries

  • Use link._linkname to display link context in error messages

Documentation fixes:

  • IOS XR box building instructions

  • Document ASAv password change as a breaking change

  • Incorrect link references (detected by newer sphinx version)

Bug Fixes in Release 1.5.0-post4

  • Include files from user’s home directory

  • Use formatted strings in ‘read topology’ error messages

  • Documentation: Missing pip install step on Ubuntu 20.04 (#754)

  • Integrate #754 into ‘netlab install ansible’ installation script

Bug Fixes in Release 1.5.0-post3

  • Include user defaults in ‘netlab show’ display

  • Include user defaults from multiple default files

  • Implement nic_adapter_count libvirt parameter

  • Add missing ‘loopback’ node attribute

  • SR OS: Filter for interfaces having the address family enabled

  • Update SR Linux CA file path to match latest Containerlab changes

Bug Fixes in Release 1.5.0-post2

  • Report ‘unknown command’ or ‘cannot load module’ in netlab CLI

  • Check the presence of topology snapshot file early in ‘netlab down’

  • Critical fix: remove the extra ‘—’ from ruamel-generated Ansible files

Bug Fixes in Release 1.5.0-post1

  • Extend attributes with extra_attributes before group init

  • Set low ‘bgp update-delay’ on Cisco IOS to speed up BGP convergence

  • Enabled EIGRP/IPv4 on IOS loopback interface

  • Convert values set via CLI into ints or bools if needed

  • Minor fixes to NX-OS templates

Documentation fixes:

  • Arista no longer provides vEOS Vagrant boxes

  • Prefer mutated Nexus 9300v boxes

  • Deprecate ‘extra_attributes’

Bug Fixes in Release 1.5.0

  • Identify malformed device definitions

  • Check for Nokia Ansible plugin only once per device

  • Junos MTU has to be applied to the main interface

  • FRR daemons not started

  • Use consistent interface name templates

  • Run integration tests on pull requests

  • Report fatal error when a configuration module cannot be loaded