# Changes in Release 1.8 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` ## New Functionality (release-1.8.4)= ### Release 1.8.4 * Support for [Cisco Catalyst 8000v](platform-devices) * Unified support of [vrnetlab containers](clab-vrnetlab) (including ArubaCX, Cisco Catalyst 8000v, Cisco CSR 1000v, Dell OS10, Cisco Nexus 9000v, Mikrotik RouterOS, Juniper vMX, vPTX and vSRX) * Automated build of GitHub Codespaces devcontainer * Handle keyboard interrupts in long-running netlab commands, including **[netlab up](netlab-up)**, **[netlab initial](netlab-initial)** and **[netlab validate](netlab-validate)**. * Add `--ready` action to **[netlab initial](netlab-initial)** command to wait for lab devices to become ready without configuring them. (release-1.8.4-device-features)= **New device features:** * VyOS: support for RIPv2 and RIPng (release-1.8.3)= ### Release 1.8.3 * [RIPv2/RIPng configuration module](module-ripv2) implemented on Arista EOS, Cisco IOS/IOS-XE, Cumulus Linux, FRR, and Nokia SR OS. * Implement BGP Link Bandwidth community in [bgp.policy plugin](plugin-bgp-policy). Available on Arista EOS, Cisco IOSv/IOS-XE, Cumulus Linux, FRR, and SR OS * Implement a BGP route server/client in [bgp.session](plugin-bgp-session). It is available on Arista EOS, Bird, Cisco IOSv/IOS-XE, Cumulus Linux, and FRR. * Installation scripts work with Ubuntu 24.04. They were also tested on Ubuntu 22.04, Ubuntu 20.04, and Debian Bookworm. * **netlab install** [describes Python package installation options](netlab-install-python) and asks for user confirmation before installing packages as root. * The `--user` option of the **netlab install** command installs Python packages in the user's `.local` directory. (release-1.8.3-device-fixes)= **Minor fixes in device configuration templates:** Aruba CX: * Reset BGP sessions after applying neighbor route-maps in bgp.policy template FRR: * Load VRF kernel module during initial configuration, and disable management VRF when it is not available (#1210) SR Linux: * Add +1 to allow-own-as value (#1189) * Fix next-hop-self for EBGP routes (#1203) * Add quirk to warn about BGP extended communities not being filtered (#1201) * Fix BGP prefix origination (#1200) * Fix IBGP local-as test case (#1199) * Add BGP export policy to filter what gets announced (#1204) SR OS: * Fix ISIS context (#1188) * Add BGP export policy to filter what gets announced (#1204) VyOS: * Support for the bgp.policy plugin (#1195) (release-1.8.3-dev)= **New development tools:** * bgp.policy integration tests * Implement Arista EOS and Cumulus Linux BGP and OSPF validation plugins, add integration tests for validation plugins * Refactor FRR BGP and OSPF validation plugin * Add 'best', 'locpref' and 'med' checks to the 'bgp_prefix' validation function * Move 'aspath' and 'community' checks into the main 'bgp_prefix' validation function * Validation plugins can Raise successful results with the `log.Result` exception or skip a test with the `log.Skipped exception * Implement custom data type validators (release-1.8.2)= ### Release 1.8.2 * [Create reports](netlab-report) from a subset of nodes * [Inspect](netlab-inspect) the same variable(s) [across multiple nodes](netlab-inspect-node) * Check for Vagrant boxes or Docker containers before [starting the lab](netlab-up) and display pointers to build recipes. * Check installed Ansible collections before starting **[netlab up](netlab-up)** or **[netlab initial](netlab-initial)** * New device: Sonic (based on Azure sonic-vs images). It supports IPv4, IPv6, and EBGP. (release-1.8.2-vagrant)= Improvements in Vagrant box building process ([**netlab libvirt package**](netlab-libvirt-package) command): * Automatically unpack OVA files * Use a temporary build directory within `/tmp`, resulting in cleaner source directories. * Use internal code to generate a Vagrant box, skipping the download of an external script and an extra copying operation. * The resulting Vagrant box is not compressed, resulting in significantly faster completion. Other improvements: * Use `defaults.paths` setting when loading transformation plugins * Implement a mechanism to prepend/append directories to default search paths * Generate a warning if the topology was modified after the snapshot was created * IS-IS integration tests * Create different hostnames for VRF IP addresses (for example, `r1-red` instead of `r1`) (release-1.8.2-device-features)= **New device features:** * Add box preinstall hook that copies extra Dell OS10 files to build directory (#1125) (release-1.8.2-device-fixes)= **Minor fixes in device configuration templates:** ArubaCX: * Enable IPv6 Router Advertisements * Implement VRF route redistribution between connected subnets, OSPF, and BGP * Reduce *connect retry* and *advertisement interval* BGP timers Dell OS10: * Reduce the maximum boot waiting time to two minutes * Multiple BGP configuration fixes (including a fixed BGP template definition) * Do not set IPv6 ND on loopbacks * Reject lab topologies running OSPF on SVI interfaces FRR: * Implement bgp.session parameters for unnumbered EBGP sessions * Management VRF in FRR containers * Use the same mechanism to build /etc/hosts in Linux/FRR containers and virtual machines IOS/IOS XE: * Change loopback OSPFv3 network type to comply with RFC 5340 * IOSv fix: configure ISIS routing process after enabling ISIS on interfaces Nexus OS: * BGP community propagation on VRF EBGP sessions * Configuration errors in NXOS bgp.session template * Change loopback OSPFv3 network type to comply with RFC 5340 Nokia SR Linux: * Fix VRF BGP import/export policies * IS-IS over IPv4 unnumbered interfaces * Remove check for IPv6 LLA on interface EBGP sessions * Allow activation of IPv4 over IPv6 session and vice versa * Fix formatting of OSPF area ID as IPv4 address * Catch inter-VRF leaking scenarios without EVPN * Remove the hardcoded notion that stubs get implemented as loopbacks * Support OSPF over unnumbered ipv4 interfaces * Fix IS-IS cost metric configuration * Capture lack of IS-IS multi-topology support Nokia SR OS: * Instantiate IS-IS in the correct context * Minor IPv6 gateway fixes * Set OSPF router ID Mikrotik RouterOS7: * Enable IPv6 Router Advertisements using an interval of less than 30 seconds * Rewrite OSPF configuration template * Add 'remove-private-as' and refactor bgp.session configuration template * Change BGP configuration templates to use the new BGP and router redistribution configuration syntax VyOS: * Restart FRR after changing the VyOS hostname * Refactor of bgp.session template (#1180) **New development tools:** * Restructured bgp.session integration tests * Split the initial interface configuration test into addresses and MTU tests * Increase timeouts for GTSM and BGP password integration tests * New VRF integration test: BGP community propagation in VRF (release-1.8.1)= ### Release 1.8.1 * Refactor the **[netlab status](netlab-status)** printout * Add '[retry tests until the timeout](validate-retry)' functionality to **[netlab validate](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](netlab-show-defaults)' command * Implement feature check for [VRF routing protocols](module-vrf-platform-routing-support) and report errors when the lab topology uses unsupported protocols. (release-1.8.1-device-features)= **New device features:** * [OSPFv3 in VRFs](module-vrf-platform-routing-support), implemented on Arista EOS, Cisco IOS, Cisco IOS-XE, FRR, and Junos (vMX, vPTX, vSRX). * [EBGP sessions over IPv4 unnumbered and IPv6 LLA interfaces](bgp-platform) 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 (release-1.8.1-device-fixes)= **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 * The loopback interface has to have an OSPFv3 point-to-point network type to be advertised with the configured prefix. Cisco Nexus OS: * Reduce the IPv6 RA timer * The loopback interface has to have an 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 * Reduce IS-IS LSP generation timers to speed up IS-IS convergence 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)= ### Release 1.8.0 * **netlab up** command can [reload saved device configurations](netlab-up-reload) instead of starting the initial device configuration process. * [DHCP configuration module](module-dhcp) implements DHCP clients, DHCP servers, and DHCP relays for IPv4 and IPv6. * Lab topology can include control plane- and network services [daemons](platform-daemons) running in Linux containers. * [BGP configuration module](module-bgp) supports 4-octet BGP AS numbers and [large BGP communities](bgp-community-propagation). * [Validation plugins](validate-plugin) allow you to write more powerful validation tests without creating complex Jinja2 templates * [IBGP sessions](bgp-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](topo-defaults) from the [environment variables](defaults-env) * You can build Docker containers for the [supported daemons](platform-daemons) with the **[netlab clab build](netlab-clab-build)** command * [Configuration template search paths and filenames](dev-config-deploy-paths) are no longer hardcoded. Most can be configured in [system defaults](topo-defaults) using **defaults.paths** dictionary. **New devices and daemons:** * [BIRD Internet Routing Daemon](platform-daemons) with [OSPF](ospf-platform) and [BGP](bgp-platform) support, including [minimal **bgp.session** support](bgp-session-platforms). * [dnsmasq DHCP server](platform-daemons) **New device features:** * [DHCP clients](dhcp-platform) on Cisco IOS, Arista EOS, Cumulus Linux, and Ubuntu VMs * [DHCP servers](dhcp-platform) on Cisco IOS, Arista EOS, dnsmasq, and Ubuntu VMs * VRF-aware DHCP server on Cisco IOS XE * [DHCP relays](dhcp-platform) 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-breaking)= ### 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](linux-ubuntu-package)). Use `ip neigh`, `ip route`, `ip addr` and `ip link`. If you rely on `net-tools`, add the following line to your [netlab defaults](defaults-user-file): ``` devices.linux.group_vars.netlab_net_tools: True ``` * [LLDP is no longer enabled on Ubuntu virtual machines](linux-lldp) by default as the installation of the LLDP service increases the lab setup time ([more details](linux-ubuntu-package)). If you want to have LLDP running on all Linux virtual machines in your labs, add the following line to your [netlab defaults](defaults-user-file): ``` devices.linux.group_vars.netlab_lldp_enable: True ``` * The _clab_ [user-defined custom configuration files](clab-config-template) are no longer expected to be in the current directory but use the device-specific [configuration deployment search paths](dev-config-deploy-paths). For example, the FRR `daemons` configuration template has to be in `./templates/frr/daemons.j2`. ## Bug Fixes (bug-fixes-1.8.4-post2)= ### Bug Fixes in Release 1.8.4-post2 * Save FRR running configuration (#1233) * Add missing `__init__.py` files in FRR validation modules (#1232) (bug-fixes-1.8.4-post1)= ### Bug Fixes in Release 1.8.4-post1 * Convert OSPF areas specified as integers into IP addresses (for example, **area 0** becomes **area 0.0.0.0**) * A validation logging message was printed before the log system was initialized * Extra initial validation delay is no longer needed on vPTX (bug-fixes-1.8.4)= ### Bug Fixes in Release 1.8.4 * Add missing IOS XR initial configuration file * Fix OSPFv3 unnumbered integration test * Rewrite FRR/clab modprobe test to work around Ansible stupidities (bug-fixes-1.8.3)= ### Bug Fixes in Release 1.8.3 * Recreate topology.sys data when printing 'connect to tool' message in 'netlab connect' * Check overlap with node names before creating BGP groups (fixes #1193) * Bug fix: use an older version of the Graphite container * Execute node custom configs after plugin custom configs (fixes #1198) * Don't skip VXLAN module if a node has EVPN L3VNIs (fixes #1197) * bgp.session: Make 'locpref' and 'med' link/interface attributes * Report an error when a device template is not found in custom config directory * Update template file name rendering for custom configs in subdirectories (#1208) * Use absolute path to kvm-ok, document workarounds (fixes #1205) * Install libssh-dev (required by ansible-pylibssh on Ubuntu 24.04) (bug-fixes-1.8.2)= ### Bug Fixes in Release 1.8.2 * Addressing report breaks in IPv4-only networks * Do not include missing directories in the evaluated search paths * Add system defaults (`/etc/netlab`) directory to search paths * Node name in links.interfaces should be a node_id * Create the box-building ASAv virtual machine using an XML template * Cleanup box building environment after a KeyboardInterrupt * Use explicit MTU in OSPF, BGP, VRF, and VXLAN integration tests * IBGP local-as is not supported on ArubaCX * Use 'stub_loopback' device setting before the system default * Always execute 'vagrant box list' and 'docker images ls', even when starting **netlab up** with `--dry-run` option * Wiring report crashes if an interface has no neighbors * **netlab status** should survive labs with missing 'status' * Use low static VNI in multivendor VXLAN test * isis.network_type attribute could be a bool * Improve parsing of JSON results in **netlab validate** * Print error messages when failing to load validation plugins or when a validation plugin does not have the required action * Pass **netlab connect** `-q` flag to the logging module * SR Linux: Fix path to root CA for 'netlab collect' * SR Linux: Cannot configure L2 MTU on IXR-H platforms * Clear BGP sessions after configuring parameters in bgp.session plugin (bug-fixes-1.8.1-post2)= ### 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-1.8.1-post1)= ### 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 accommodate 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 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 (doc-fixes-1.8.4-post2)= ### Documentation Fixes in Release 1.8.4-post2 * _clab_ configuration template search path for user-specified templates has changed in release 1.8.0 (doc-fixes-1.8.4-post1)= ### Documentation Fixes in Release 1.8.4-post1 * FRR supports IPv4 EBGP AF over IPv6 LLA (doc-fixes-1.8.3)= ### Documentation Fixes in Release 1.8.3 * FRR containers need the VRF kernel module on the host (doc-fixes-1.8.2)= ### Documentation Fixes in Release 1.8.2 * Move generic box-building caveats into a single file * The 'EVPN needs an AS' hint should be more explicit * Updated Dell OS10 Ansible-related information * Update URL for the latest ArubaCX release * Optimized Aruba CX box-building recipe * Simplify RouterOS7 box building process * Updated platform documentation and added pointers to build recipes * Add a 'write/reload' step to dellos10 build recipe * nokia.grpc collection works with Ansible release 9.5.1 * Describe how to get kvm-ok on non-Ubuntu distros * Document IS-IS caveats * Update [](topo-links) documentation (doc-fixes-1.8.1-post1)= ### 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