Changes in Release 26.05

New Functionality

Minor improvements

  • The 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 now serializes 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.

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 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

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

Breaking changes

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 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 that had networklab as its only requirement.

  • The SRv6 allocate_loopback parameter is no longer supported and does nothing. Change the loopback address pool if you want to allocate the loopback prefixes from within the SRv6 prefix[1].

  • 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.

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)

Documentation Fixes

  • Document the features.initial.normalize device flag

  • Document the nodefault netlab inspect expression

  • Cleanup SRv6 documentation