Changes in Release 1.5¶
Table of Contents
‘unknown’ device type can be used to deploy devices not yet supported by netlab
Public libvirt networks can be used to connect labs to outside world
netlab can use (and preserve) existing libvirt networks
Maximum node name length is configurable.
Add MPLS VPN support for SR OS
Improved virtualization provider installation testing with (hopefully) useful error messages
Support for containerlab 0.41.0
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
Stricter type checks for node names, group names, VLAN names, VRF names, link roles, address pools, device names, and Linux bridges. Names must be identifiers: alphanumeric strings up to 16 characters long.
netlab status file tracks active lab instances
netlab create command refuses to create provider configuration files in a directory with a running lab instance.
netlab up command checks the status file to prevent multiple copies of the same lab instance.
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.
Split large libvirt topology into smaller vagrant up batches
Use custom network/bridge name and IP subnet for
Create DHCP bindings for the whole
‘loopback’ link type can be used to create additional loopback interfaces
netlab show devices command displays valid device types
topology-defaults.ymlinto numerous smaller files
Strict validation of core and module attributes
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.
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
.getmethod. 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).
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 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).
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 node.af 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
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
Allow srl-agents clab provider attribute
Pick specific containerlab version in netlab install containerlab installation script
Update containerlab topology template for IPv6 management
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
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
Critical fix: kill
dhcpclientprocess 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
IOS XR box building instructions
Document ASAv password change as a breaking change
Incorrect link references (detected by newer sphinx version)
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
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
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
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
Arista no longer provides vEOS Vagrant boxes
Prefer mutated Nexus 9300v boxes
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