# Changes in Release 26.05 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` (release-26.05)= ## New Functionality * Junos OSPF/IS-IS [route redistribution](routing_import), VRF [IS-IS instances](isis-platform), and OSPF [interface parameters](ospf-interface-optional-support) * Streamline and speed up the FortiOS initial device configuration by [@a-v-popov](https://github.com/a-v-popov) * Support for [global BGP routes with SRv6 next hops](module-srv6-services) (inspired by proof-of-concept by [@jvbemmel](https://github.com/jbemmel)) on FRR and IOS XR * Support for Juniper cSRX container by [@leec-666](https://github.com/leec-666) * We changed the minimum supported Python version to 3.10. New _netlab_ versions will thus no longer run on Ubuntu 20.04. * You can [define scripts](dev-cli-hooks) (for example, device license management) that are executed at various points in the `netlab up` and `netlab down` processes. **Minor improvements** * The **[netlab restart](netlab-restart)** command has been rewritten and now identifies lab topology from the snapshot file * Identify devices that cannot have their configurations collected/reloaded and generate warnings or errors during **netlab collect**, **netlab up --reload**, or **netlab config --reload**. * Device configuration reloads now have a dedicated normalization phase, making `netlab up --reload`, `netlab config --reload`, and related workflows more consistent across supported platforms. * `graph.linkorder` and `graph.rank` are easier to use in topology graph definitions. * The [multilab plugin](plugin-multilab) now [serializes](multilab-mutex) concurrent **up** and **down** operations with a mutex lock. * **netlab down** now prints the core provider commands it is about to execute. * Minimum supported **containerlab** release is now 0.75.0. (release-26.05-device-features)= ## New Device Features FortiOS: * Generate API token during initial device configuration * Optional "allow any" policy in initial configuration * Streamline and speed up the initial device configuration (which could be a [breaking change](release-26.05-breaking-fortios) if you use an old FortiOS version without a license). Cisco IOS XR: * SRv6 next hops for global BGP prefixes FRRouting: * SRv6 next hops for global BGP prefixes * Upgraded to release 10.6.1 * Skip control-plane initial configuration during config reloads Junos: * Route redistribution into OSPFv2/OSPFv3 and IS-IS * IS-IS VRF instances * OSPFv2/OSPFv3 interface parameters (timers, router priority, passwords) Nokia SR Linux: * Upgraded default container release to 26.3.2 (release-26.05-device-fixes)= ## Fixes in Configuration Templates Arista EOS: * Check OSPF address family when configuring passive interfaces Cisco ASAv: * Clean up the collected configuration * Generate partial initial configuration for configuration reloads Cisco IOS XE: * Rewrite SRv6 templates to use per-neighbor data structures Cisco IOS XR: * Use `replace=config` when reloading device configuration Extreme Networks EXOS: * Normalize interface configuration FortiOS: * Use a 1-based OSPF network index Junos: * User-defined policies use `accept` instead of `next-policy` * BGP routing policies no longer need an internal community Nokia SR OS: * Use the common filename suffix when saving configurations (release-26.05-breaking)= ## Breaking changes (release-26.05-breaking-fortios)= We made major changes to the **fortinet** initial device configuration playbook: * The playbook generates an API token for the **netlab** user (which should have been added during the Vagrant box creation process). Set `netlab_generate_api_token` node/group variable to `False` to disable this step. * The configuration deployment process uses HTTPS instead of HTTP (which just redirects to HTTPS in most cases). This might not work if you're using a Fortinet device without a license. Set the following node/group variables to use HTTP: ``` ansible_httpapi_use_ssl: false ansible_httpapi_port: 80 ``` * The playbook tries to reach the FortiOS HTTPS server immediately after switching to multi-VDOM mode and will retry several times. When needed, use [these node/group variables](caveats-fortios-70) to increase the wait time. Other breaking changes: * _netlab_ no longer supports Python 3.8/3.9 or Ubuntu 20.04. We also stopped building the [legacy `netsim-tools` stub package](https://pypi.org/project/netsim-tools/) that had `networklab` as its only requirement. * The SRv6 **allocate_loopback** parameter is no longer supported and does nothing. Change the **loopback** [address pool](address-pools) if you want to allocate the loopback prefixes from within the SRv6 prefix[^NGA]. * The 'reload device configuration' functionality relied on **initial.reload: False** feature flag to detect devices that do not support it. We added an explicit **initial.reload** feature to all devices, and changed the default behavior to "device does not support configuration reloads". This might prevent configuration reloads from working on custom devices until their feature definitions are updated. [^NGA]: That's probably not a good idea and does not work with some SRv6 implementations. (bug-fixes-26.05)= ## Bug Fixes * Use Arista cEOS containers in MPLS integration tests * Check the supported BGP neighbor type before enabling EVPN AF (#3329) * EVPN control-plane-only nodes can use per-transport settings. * Correct lab topology names in graph creation scripts * Fix the mismatch between a plugin configuration name and its internal name (#3334) * Split configuration normalization from initial config deployment (#3332) * Set the `normalize` argument when calling `initial` from `config` * Consistent device features.initial.{collect,reload} flags (#3352) * Do a device readiness check before reloading configuration (#3347) * Use the common normalization step in `netlab config --reload` (#3349) * Initial configuration is no longer needed when reloading IOS configurations * Pass **netlab collect** verbosity level to the Ansible playbook * Remove sets from topology subsets rendered into JSON (#3356) * Make CI/CD tests work with **ruamel** * Check for VLAN/VRF-enabled nodes attached to VLAN/VRF links (#3373) * Warn about links having irrelevant module attributes (#3374) * Limit SRv6 services to IBGP (#3377) * Use `shlex.split` and `shlex.join` in `run_command` (#3376) * Don't crash when a configuration file cannot be created * Build per-neighbor SRv6 data structures (#3383) * Disable SRv6 support on Nokia SR OS * Parametrize transformation tests and anchor the pytest environment (#3391) * Change vSRX QEMU machine type (#3399) * Junos configuration cannot start with 'delete:' (#3400) (doc-fixes-26.05)= ## Documentation Fixes * Document the **features.initial.normalize** device flag * Document the `nodefault` **netlab inspect** expression * Cleanup SRv6 documentation