# Changes in Release 1.8 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` ## New Functionality (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 * 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)= ### 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](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](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 ``` ## Bug Fixes (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 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 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.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