Changes in Release 1.1¶
If you wrote custom Jinja2 templates or Python plugins, you might want to read the breaking changes section first.
New Functionality in Release 1.1.4¶
netlab clab tarball create a tar package that can be deployed with containerlab without netlab
Added
--tar
and-cleanup
options to netlab collectAdded
--cleanup
option to netlab downSupport for OSPFv3 on VyOS
Build recipes for Arista vEOS and Juniper vSRX use management VRF
Use netlab_device_type instead of ansible_network_os to select configuration templates
Developer documentation for initial device configurations, OSPFv2 and OSPFv3 and configuration deployment task lists.
Add fetch_config action for SR Linux and SR OS. You can use netlab collect to get current configuration from these devices
New Functionality in Release 1.1.3¶
netlab show command displays system settings in tabular format
Restructured installation documentation
netlab up has new flags:
--no-config
and--fast-config
EIGRP implementation of common routing protocol features
Configurable address family support (IPv4 and/or IPv6) for IS-IS, OSPF, and EIGRP
Libvirt box creating script for Cisco CSR 1000v and Juniper vSRX 3.0
netlab install installs Vagrant from Hashicorp repository
Support for /31 IPv4 P2P links
Configurable MTU for VyOS and RouterOS
New Functionality in Release 1.1.2¶
Router ID calculations for IPv6-only devices and configurable router ID
Cumulus Linux 5.0 support (configuration via NVUE)
BGP graphs can show RR-client sessions as directed arrows
Building vEOS and Nexus 9300v libvirt boxes has been significantly simplified with netlab libvirt package command
New Functionality in Release 1.1.1¶
Cumulus VX: unnumbered IPv4 interfaces
Cumulus VX: support for EBGP sessions over unnumbered IPv4 interfaces
OVS bridge support in containerlab provider
New Functionality in Release 1.1¶
Layer-2-only address pools
Layer-2-only interfaces on numbered or unnumbered links
Unnumbered interfaces attached to numbered links
Per-protocol unnumbered links (example: IPv4 prefix + IPv6 LLA)
Specifying node IP address as N-th IP address on the link
Multiple attachments of a node to the same link (use cases: inter-VRF back-to-back links or bridging loops)
BFD configuration module (contributed by Jeroen van Bemmel)
BFD support for IS-IS and OSPF
IS-IS over unnumbered multi-access links
Device capability checks: unnumbered interfaces, OSPF and IS-IS over unnumbered links
Linux bridges are used to implement multi-access links in containerlab (contributed by Jeroen van Bemmel)
Major Code Changes¶
Nodes data structure has been changed from a list to a dictionary. The change impacts plugins written for release 1.0.x that traverse nodes data structure.
Link data structure has been changed – nodes connected to a link (previously dictionary keys) are now collected in interfaces list.
Final node data structure has been changed – links (list of interfaces) have been renamed to interfaces
BFD, OSPF, and IS-IS configuration modules calculate interface state in Python code, significantly simplifying Jinja2 device configuration templates.
IPAM code refactoring – unifying address handling on all links and adding new functionality:
Layer-2-only pools, links, and interfaces
Unnumbered multi-access links. Standard IPv6 feature (LLA), might not work for IPv4 on all platforms (depends on platform implementation quality).
Per-address-family unnumbered interfaces
Unnumbered interfaces on numbered or layer-2-only links
Provider-specific device settings have been moved into devices dictionary (release 1.1.2)
Tons of new test cases to stress-test IPAM code and increase code coverage
Device image names have been moved into provider-specific device settings (release 1.1.3)
Bug Fixes in Release 1.1.4¶
Invalid modules are reported and stop topology transformation (previously you’d get as far as failing Ansible playbook)
Make sure node.interfaces are always defined
Bug Fixes in Release 1.1.3¶
IOSv does not support unnumbered IPv4 interfaces
Node- and interface module data did not merge correctly
Fix precedence of node-level module parameters (node, global, device, system default)
Copy select node module settings into interface data
Implement explicit interface-level module attributes
Allow provider-specific data to be specified on individual nodes
Bug Fixes in Release 1.1.2¶
netlab requires Python 3.7 or later
Static hostnames on Junos
Wait for eth1/1 interface to appear before starting Nexus OS configuration
Add a check for gNMI plugin
Earlier Bug Fixes¶
Limit Linux bridge name to 15 characters (1.1.1)
Prefer netlab_console_connection Ansible variable over ansible_connection in netlab connect to connect to devices that use less common connection plugins.
Set Fortinet OSPF Area ID
Fix “unnumbered IPv4 interfaces” flags – they don’t work on IOSv, IS-IS on vSRX and SR/OS works on P2P links
Check that the BGP AS number is an integer
netlab down should have the same CLI options as netlab up or netlab create
Documentation Fixes¶
Disabling zero-touch on Arista vEOS is crucial
Fixed tutorial printouts
Describe automated tests
Change minimum Ansible version recommendation
Fix BFD platform support table
Breaking Changes¶
Don’t bother with this section if you’re not using custom configuration templates or plugins.
links list in node data (which is also what you get in Ansible inventory) has been renamed to interfaces. You’ll have to change most device configuration templates. Apologize for the inconvenience; we had to bite that bullet sooner or later.
topology.links and topology.nodes changed. You will have to rewrite any plugins you developed for release 1.0. Fortunately, that’s pretty easy to do, and the new data structures are easier to work with.
ipv4 and ipv6 interface attributes could be an IP address or a boolean value (for unnumbered/LLA interfaces), requiring additional checks in device configuration templates. You can ignore this change if you’re not using unnumbered interfaces.
Cleanup¶
Removed ancient (release 0.1) management network addressing parameters
ArcOS is no longer supported by netlab – technical documentation is not available online, the VM image cannot be downloaded, and the contributor of this platform is no longer working at Arrcus.