Changes in Release 25.12
New Functionality
Common framework for standard/large/extended BGP community lists (extended BGP community lists are coming in the next release)
Large BGP community lists, implemented on Arista EOS, FRR, and Junos. You can use standard- or large community lists in routing policies
Support Cisco ASAv in vrnetlab containers
Reread validation tests from the lab topology file (if it was modified since the lab was started) every time you run the netlab validate command
The netlab validate command can also read validation tests from a separate file.
The shutdown link/interface attribute can be used to start labs with interfaces turned off
The bgp.rr_mesh parameter controls IBGP sessions between BGP route reflectors
Minor improvements
Add
--titleparameter to the netlab graph commandAdd 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,-iand-cparameters 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_withdata validation optionImplement
_defaultvalues in data validationDaemon 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.ymlprovider definition file must be a stringnetlab 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