Changes in Release 25.12

New Functionality

Minor improvements

  • Add --title parameter to the netlab graph command

  • Add clab.exec parameter to execute commands when starting containers

  • Replace routing policy set.community.delete attribute with delete.community attribute. netlab automatically translates old attributes into new ones.

  • Bump minimum containerlab release to 0.72.0 (needed to support Cisco ASAv and the new Cisco IOSv kind)

  • Use daemon configuration files to create container-side bash scripts that are executed during the container startup process

  • The netlab initial command creates daemon configuration files in Python code, not in an Ansible playbook

  • You can use the -m, -i and -c parameters with the netlab initial –output command to control the configuration files created in the output directory

New Device Features

Arista EOS:

  • VXLAN over IPv6

  • Large BGP community lists

Bird:

  • A completely Ansible-free configuration process relying on Bird daemon configuration files and container-side Bash scripts

Cisco 8000v (IOS/XR):

  • Static routes

  • Route import into BGP, IS-IS, and OSPFv2/v3

  • OSPFv2/v3 default route

  • VLAN and VRF support

  • BGP confederations

  • BGP local-as support

Cisco ASAv:

  • You can run ASAv in a vrnetlab container (supported in containerlab release 0.72.0)

Cisco Catalyst 8000v:

  • VXLAN over IPv4 with static ingress replication

  • The default container version has been changed to IOS/XE 17.16.01a (see also: changing device images).

  • netlab tracks the state of the Catalyst 8000v license applied to the nodes with the cat8000v.license node attribute. The default value of this parameter is premier.

  • netlab checks the configured Catalyst 8000v license level and refuses to configure MPLS, SR-MPLS, VXLAN, or SRv6 on a Catalyst 8000v node if the cat8000v.license parameter is not set to premier.

  • The VLAN configuration template has been changed to use the new bridge-domain configuration model (service instances are defined as members of bridge-domain) when the cat8000v.license node attribute is set to premier. You might have to rebuild your Catalyst 8000v containers using the latest vrnetlab code for the new template to work, or set the cat8000v.license parameter to none (more details).

Cisco IOSv:

  • Use the new containerlab kind for IOSv containers

Fortinet:

  • Replace device configuration through Ansible modules with configuration templates.

  • Try to use FortiOS Monitor API to upload configuration scripts to a FortiOS device; fall back to SSH/Expect if needed

FRRouting:

  • Large BGP community lists

  • You can enable additional FRR daemons not used by netlab configuration modules. List them in the frr.daemons node attribute

  • FRRouting containers and VMs can be used as custom bridges

Junos:

  • Large BGP community lists

Fixes in Configuration Templates

Cisco 8000v:

  • Set default IPv6 RA interval to 5 seconds

  • Configure low OSPF SPF/LSA throttle timers

  • Rewrite the BGP template to use new BGP neighbor attributes

Breaking changes

  • Catalyst 8000v VLAN configuration template assumes you use VMs or containers with the network-premier license. You might have to rebuild your Catalyst 8000v container using the latest vrnetlab code (more details).

  • The code expanding link groups retains the link order. Previously, the group members were appended to the end of the links list. This change will change the lab addressing for labs using link groups.

  • The routing.policy.set.community.delete/delete_list attributes have been replaced with routing.policy.delete.community attribute. You can still use the old attributes in lab topology files; you might have to adjust any custom device configuration templates (or other post-processing tools) that delete communities in route maps.

  • The routing.community.type attribute, which signalled standard (simple matching) versus expanded (regex matching) BGP community list type, has been renamed to cl_type. The routing.community.type attribute now encodes the type of communities matched by the community list (standard, large, and extended). There is no impact on lab topologies; you might have to update custom configuration templates.

Development Features

  • Implement _invalid_with data validation option

  • Implement _default values in data validation

  • Daemon daemon_config attribute can be used to generate container-side initial device configuration

Bug Fixes in Release 25.12.03

  • Use mgmt.ipv4 as ansible_host for containers with SSH servers (#2913)

  • Improved ‘netlab version’ printout (#2912)

Bug Fixes in Release 25.12.03

  • Containerlab version was changed from “0.72” to “0.72.0”

Bug Fixes in Release 25.12.01

  • Containerlab version specified in the clab.yml provider definition file must be a string

  • netlab install should stringify default values copied into the process environment

Bug Fixes in Release 25.12

  • Increase BGP/IS-IS redistribution wait times for Cisco 8000v

  • Fix device descriptions for Catalyst 8000v and Cisco 8000v

  • Enable EVPN only on IPv4 or RFC 8950 BGP sessions (#2813)

  • Stop ‘netlab initial’ on first error during integration tests

  • Add tools/ to package MANIFEST.in (#2819)

  • Use the generic readiness check for the IOS/XR container

  • SRSIM config deployment crashed with empty update elements

  • Transform community lists into type/value format

  • Move rarely-used tests into ‘code coverage’ tests

  • Fix the node-level STP protocol override setting (#2821)

  • Add the ability to generate generic warnings only once

  • Do not print WARNING/INFO messages when running in QUIET mode

  • Fix Junos community quirks to work with the new routing policy and community list attributes

  • Unnumbered interfaces crash topology graphs

  • Treat ‘initial’ as another module when creating daemon configs

  • Add ‘extra_path’ parameter to write_template function (#2873)

  • Path to ‘daemons’ directory is already included in default paths

  • Refactor the containerlab configuration template (#2859)

  • Normalize containerlab interface names containing ‘/’ when used in the netlab capture command

  • Retain link order when expanding link groups

  • Copy relevant link module data to interfaces attached to a bridge

  • Remove support for task-list-only device configuration

  • Match the whole test names against the netlab validate CLI arguments

  • Split the netlab validate command into numerous modules

Integration test fixes:

  • Use symbolic wait times in integration tests

  • Add wait times to VRF static routing tests

  • Increased OSPF SPF times for conditional default route generation

  • Extend the OSPF adjacency wait time over VLANs

  • Use redistribution wait times in IS-IS integration tests

  • It takes Cisco 8000v 60+ seconds to start VRF IPv6 EBGP session

  • Adjust the BGP VRF tests to use ‘BGP redistribution’ timeouts

  • Increase ping timeouts in static routing and data-plane VRF tests

  • Test EVPN in a dual-stack network

  • Generic integration test adjustment plugin

  • vPTX (who else) needs longer for IPv6 interfaces to wake up

Documentation Fixes

  • Update the ‘waiting for VM’ part of the containerlab documentation

  • Use a recent vrnetlab version to build Cat8000v containers

  • New Wireshark release breaks old plugins

  • vrnetlab can build Cat8000v containers with premier license

  • Fix the list of commands printed by the netlab help command