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 netlab.tools
Release 1.5.3
‘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
Release 1.5.2
Add
--force
flag to netlab down commandDry run mode for netlab up and netlab down commands.
Release 1.5.1
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.
Release 1.5.0
Split large libvirt topology into smaller vagrant up batches
Use custom network/bridge name and IP subnet for
vagrant-libvirt
management networkCreate DHCP bindings for the whole
vagrant-libvirt
management subnet‘loopback’ link type can be used to create additional loopback interfaces
netlab show devices command displays valid device types
Split
topology-defaults.yml
into numerous smaller filesStrict validation of core and module attributes
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 usedvrfidx
(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 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
bgp.neighbors
data structureConvert ‘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 configurationNokia 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