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

  • 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


  • 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


  • Redistribute connected subnets into VRF OSPF processes.

  • Enable RA on Junos interfaces


  • 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

New devices and daemons:

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_ or netlab_, 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). Use ip neigh, ip route, ip addr and ip link. If you rely on net-tools, add the following line to your netlab defaults:

devices.linux.group_vars.netlab_net_tools: True
devices.linux.group_vars.netlab_lldp_enable: True

Bug Fixes

Bug Fixes in Release 1.8.1

  • strings.confirm function catches SIGINT and aborts

  • Stop ‘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 playbook

  • Implement 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 parameter

  • Consider the lab topology directory and current directory when searching for configuration templates.

Documentation Fixes

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