Changes in Release 1.8¶
New Functionality¶
Release 1.8.1¶
Refactor the netlab status printout
Add ‘retry tests until the timeout’ functionality to netlab validate (including the actual time it took to get the expected results).
Use SSH_CONNECTION local IP address when displaying the tool launch URL
Warn user about IBGP sessions on nodes that have no IGP
Display original system default path settings with the ‘netlab show defaults’ command
Implement feature check for VRF routing protocols and report errors when the lab topology uses unsupported protocols.
New device features:
OSPFv3 in VRFs, implemented on Arista EOS, Cisco IOS, Cisco IOS-XE, FRR, and Junos (vMX, vPTX, vSRX).
EBGP sessions over IPv4 unnumbered and IPv6 LLA interfaces on Arista EOS
The default Arista cEOS container version has been changed to 4.31.2F.
Cisco IOS XRd container support
Use standard Linux ‘lo’ loopback on FRR instead of ‘lo0’ dummy interface
Execute a series of integration tests with the
device-module-test
script. The results are available at https://netlab-cicd.pages.dev/FRR supports VXLAN-over-IPv6
Minor fixes in device configuration templates:
Arista EOS:
Create next-hop-self route maps only when required
Reduce the IPv6 RA timer
Optimize OSPF convergence times
Configure OSPFv3 on interfaces before the interfaces are mentioned in the routing process.
Cisco IOS:
Optimize BGP configuration templates to improve convergence times
Replace ‘ipv6 ospf’ with ‘ospfv3’ commands
Loopback interface has to have OSPFv3 point-to-point network type to be advertised with the configured prefix.
Cisco Nexus OS:
Reduce the IPv6 RA timer
Loopback interface has to have OSPFv3 point-to-point network type to be advertised with the configured prefix.
Reduce OSPF SPF and LSA timers
Redistribute connected subnets into VRF OSPF instances
FRR:
Optimize OSPF convergence times
Set BGP router ID on FRR VRF BGP instances
Use ‘bridge fdb’ in VXLAN configuration to set the remote VTEP list
Remove SLAAC addresses from FRR interfaces
Junos:
Redistribute connected subnets into VRF OSPF processes.
Enable RA on Junos interfaces
SROS:
Allow BGP next-hop resolution via LDP
New development tools:
Integration tests for bgp.session plugin
Enhance the IPv6 LLA/RFC8950 integration tests
Restructured VXLAN integration tests include multi-node test
Restructured VRF integration tests include IPv6 and OSPFv3 tests
netlab package includes Linux ping/route validation plugin and FRR OSPF/BGP validation plugin
Use ‘retry actions’ validation functionality in the initial configuration, OSPF, BGP, VLAN, VRF, and VXLAN integration tests
Add ‘netlab_interfaces’ list parameter to simplify configuration templates
Add ‘–validate’ option to ‘netlab up’ to auto-start validation
Release 1.8.0¶
netlab up command can reload saved device configurations instead of starting the initial device configuration process.
DHCP configuration module implements DHCP clients, DHCP servers, and DHCP relays for IPv4 and IPv6.
Lab topology can include control plane- and network services daemons running in Linux containers.
BGP configuration module supports 4-octet BGP AS numbers and large BGP communities.
Validation plugins allow you to write more powerful validation tests without creating complex Jinja2 templates
IBGP sessions to routing daemons running on Linux VMs or containers can be established with external-facing IP addresses (not just remote loopbacks).
You can set netlab defaults from the environment variables
You can build Docker containers for the supported daemons with the netlab clab build command
Configuration template search paths and filenames are no longer hardcoded. Most can be configured in system defaults using defaults.paths dictionary.
New devices and daemons:
BIRD Internet Routing Daemon with OSPF and BGP support, including minimal bgp.session support.
New device features:
DHCP clients on Cisco IOS, Arista EOS, Cumulus Linux, and Ubuntu VMs
DHCP servers on Cisco IOS, Arista EOS, dnsmasq, and Ubuntu VMs
VRF-aware DHCP server on Cisco IOS XE
DHCP relays on Cisco IOS, Arista EOS, Cumulus Linux, and Ubuntu VMs
Inter-VRF DHCP relay on Arista EOS and Cisco IOS XE
FRR can use the neighbor local-as command to create a fake IBGP session.
Minor improvements:
Node and group data can include any parameter starting with
ansible_
ornetlab_
, making it easier to override Ansible variables for individual nodes.Use physical interface for IBGP sessions with BGP daemons running on hosts.
Integration tests:
Release 1.8.0 includes improved BGP, OSPFv2, and OSPFv3 integration tests with automated validation.
Breaking changes¶
Release 1.8.0¶
The default MTU on Cumulus Linux VMs has been changed to 1500 bytes to ensure OSPFv2/OSPFv3 interoperability with other devices.
The netlab collect command no longer creates subdirectories with configuration files for Cumulus Linux devices. FRR configuration is stored in
$nodename.cfg
, ifupdown configuration in$nodename-interfaces
, and FRR daemons in$nodename-frr.conf
.The stub link role no longer results in a passive IGP interface or BGP prefix advertisement. Instead, use protocol.passive and bgp.advertise link- or interface attributes instead.
groups.node_data attribute is deprecated. netlab generates a warning if you use it; future releases might throw an error.
net-tools
(arp
,route
,ifconfig
) are no longer installed by default on Ubuntu virtual machines as their installation increases the lab setup time (more details). Useip neigh
,ip route
,ip addr
andip link
. If you rely onnet-tools
, add the following line to your netlab defaults:
devices.linux.group_vars.netlab_net_tools: True
LLDP is no longer enabled on Ubuntu virtual machines by default as the installation of the LLDP service increases the lab setup time (more details). If you want to have LLDP running on all Linux virtual machines in your labs, add the following line to your netlab defaults:
devices.linux.group_vars.netlab_lldp_enable: True
Bug Fixes¶
Bug Fixes in Release 1.8.1-post2¶
Node name in links.interfaces should be a node_id (not a generic identifier)
Addressing report fails in IPv4-only networks
Bug Fixes in Release 1.8.1-post1¶
Native routed VLAN does not work with a VLAN trunk on l3-switches (fixes #1088)
Create Vagrant box metadata in ‘netlab libvirt’ (fixes #1089)
Initialize the VRF ID/RD data structures when there are no global VRFs
Improve the definition of ‘identifier’ data type
Display a warning when removing a routing protocol module from a node (fixes #1094)
Generate a warning if a node has no active VRFs (fixes #1093)
Do not delete VRFs from node ‘vrfs’ dictionary if the node has VRF loopbacks
SROS: Fixes to accomodate IXR-X devices (#1103)
SR Linux: Fix asymmetric IRB configuration (#1107)
Dell OS10: Improvements/Fixes on EVPN+BGP+IPv6 (#1105)
SR OS: Fix sap id logic (#1101)
SR Linux: Fix BGP communities inside VRFs (#1100)
Execute ‘netlab initial -o’ on systems without viable Ansible connection
Quote config directory name passed from ‘netlab initial’ to Ansible
Transform MPLS module after VRF module (fixes #1096)
Dell OS10: fixes in VRF+BGP (#1090)
Assign a unique Router ID to every IOSv OSPF process (fixes #1066)
Junos quirk: a routing instance can have only one loopback (fixes #1065)
VyOS: Configure BGP router-id in IPv6-only VRFs (#1082)
VyOS: controlled BGP community propagation (#1080)
VyOS: fix VRF route leaking without BGP module (#1078)
VyOS: add cluster-id in rr config (#1075)
VyOS: support for sending IPv6 RA (#1076)
Bug Fixes in Release 1.8.1¶
strings.confirm
function catches SIGINT and abortsStop ‘netlab down’ complaints with the double ‘–force’ option
Missing BGP prefix from a stub network in IPv6 BGP RR integration test
Fix Arista EOS VRF IPv6 routing typo
Set PYTHONPATH when running netlab from a Git repo
get_globbed_files should deal with path-as-string
Allow a list of target states in the FRR BGP validation plugin
Touch lock file in ‘netlab initial’ to extend ‘netlab validate’ delays
Use ‘bridge fdb’ on FRR instead of ‘ip link’ to set remote VTEP
Add ‘–skip-missing’ to ‘netlab validate’
‘netlab status’ should return an error status if no labs are running
Choices of -t parameter of ‘netlab graph’ must be a list
Hints added to warnings should not get into ERROR_LOG
Python 3.12 does not like an ASCII smiley :(
Add ‘state=missing’ parameter to OSPF/OSPFv3 prefix validation
FRR needs router-id in VRF BGP in IPv6-only deployments
VXLAN is not implemented for vPTX
Catch exception thrown by `os.getcwd()
‘netlab validate’ passed insufficient args to ‘netlab connect’
Return an error if ‘netlab show defaults’ cannot find the requested value
Text-only addressing report crashed in IPv6-only networks
Copy node OSPF data into VRFs and loopback interface to simplify config templates
FRR uses different JSON data structures for OSPFv2 and OSPFv3 routes
Don’t change multi-provider VLAN members to LAN links
Libvirt provider should batch only nodes using libvirt
Use double underscores in environment variables
Check that the ‘–node’ parameter in ‘netlab inspect’ is an identifier
NXOS template did not turn off
switchport
on L3 VLAN access links
Bug Fixes in Release 1.8.0-post2¶
Check the IOS XR management IP address only for the libvirt provider
Cannot mix include-tasks and import-tasks in recent Ansible versions
Cleanup the ‘using netlab from Git repo’ setup script
Bug Fixes in Release 1.8.0-post1¶
SSH options should be in key=value format
Create D2 links between LAN networks and nodes-in-clusters
Prevent vagrant complaining about vif interface names in multilab
Remove double curly braces from f-strings
Bug Fixes in Release 1.8.0¶
Make common error header optional when calling
log.fatal
Unify configuration collection from FRR and Cumulus Linux
Collect Cumulus Linux configuration into the main output directory
Don’t prettify YAML output values that are not structured
ArubaCX EVPN VRF w/o L3VNI
Set LIBVIRT environment variables to have a consistent box-building environment
Replace Jinja2 logic when generating host-to-IP mappings with Ansible variable
Retain the order of configuration module deployment in the
initial-config
playbookImplement warning-level error messages
Improve logging and error reporting in the ‘netlab libvirt package’ command.
Adapt to stricter IPv4 address checks introduced in netaddr 1.1.0
Avoid overloaded Ansible variable name
Add netlab directory to shell search path
Use shared task lists to deploy config templates with the
netlab config
command.netlab initial
could not configure the module(s) specified in the--module
parameterConsider the lab topology directory and current directory when searching for configuration templates.
Documentation Fixes¶
Documentation Fixes in Release 1.8.1-post1¶
Explain why you can’t change a multilab-controlled setting (fixes #1102)
Explain the interaction between global- and node VRFs
Document Linux commands used by netlab (fixes #1097)
Enable RSA SSH keys on AlmaLinux to use Cisco IOSv (fixes #1098)
Documentation Fixes in Release 1.8.1¶
Use environment variables to set Multilab parameters
Documentation Fixes in Release 1.8.0-post2¶
Caveat: you might have to install MPLS drivers on Ubuntu
Caveat: IOS XR enables the SSH server before it configures users
Documentation Fixes in Release 1.8.0¶
Changed documentation theme colors and dark mode
Better description of custom group Ansible variables
RouterOS CHR upload limits and trial license usage.
Describe the handling of physical interface attributes on VLAN access links
Slightly rewritten vEOS Vagrant box configuration instructions
Add missing ‘netlab show’ commands to help file, fix typos