Changes in Release 26.03

New Functionality

  • Cisco IOS XR has received massive new functionality (SR-MPLS, MPLS/VPN, MPLS 6PE, EVPN over MPLS, VRRP, full BGP routing policy support). See New Device Features for details.

  • Juniper cRPD is now supported as a containerlab node with shell-script-based configuration deployment.

  • EVPN/VXLAN is now supported on Juniper vPTX and vJunos-router.

  • SR-MPLS now supports OSPFv2 in addition to IS-IS (implemented on EOS, FRR, Cisco IOS XE, and Cisco IOS XR).

Minor improvements

  • SR-MPLS can now be selectively enabled for a subset of address families using the sr.af parameter.

  • New netlab report: IS-IS interfaces, circuit types, and metrics.

  • netlab can now declare attributes as obsolete, deprecated, or migrated in module/feature definitions, producing automatic warnings and backward-compatible data migration.

  • JSON output files are now formatted with indentation, making them easier to read with Unix tools like cat and grep.

  • The node_files directory is cleaned up before generating device configurations, preventing stale configuration files from being deployed.

New Device Features

Arista EOS:

  • SR-MPLS support for OSPFv2

  • EVPN support for SR-MPLS transport

Cisco IOS XE:

  • SR-MPLS support for OSPFv2

  • EVPN/VXLAN symmetric IRB

  • EVPN/MPLS using LDP or SR-MPLS

  • Configurable BGP TCP-AO authentication algorithm

Cisco IOS XR:

  • MPLS support (LDP, SR-MPLS, MPLS/VPN, 6PE)

  • EVPN over MPLS

  • VRRP

  • EBGP multihop

  • BGP session security (password, TTL security, TCP-AO)

  • BGP session parameters (timers, keepalives, AS-path handling)

  • BGP route aggregation

  • Complete implementation of routing policies

  • Prefix sets and prefix matching in routing policies

  • AS-path sets and corresponding routing policy matches

  • Complete standard and large BGP community support (including set/append/delete and community lists)

  • Shell-script configuration deployment for XRd containers (optional, set netlab_config_mode to sh)

  • Management VRF for all IOS XR-based containers

FRRouting:

  • SR-MPLS support for OSPFv2

Juniper vPTX:

  • EVPN/VXLAN

Juniper vJunos-router:

  • EVPN/VXLAN

Nokia SR Linux:

  • Bump default container release to 25.10.2

OpenBSD:

  • BGP support

Fixes in Configuration Templates

Cisco IOS/IOS XE:

  • Configure BGP RR clients in VPNv4/VPNv6 address families

  • MPLS/VPN and MPLS 6PE BGP route-reflector fixes

FortiOS:

  • Disable password policy enforcement

FRRouting:

  • MPLS/VPN and MPLS 6PE BGP route-reflector fixes

Nokia SR OS:

  • MPLS 6PE BGP route-reflector fixes

  • Advertise inactive BGP routes

VyOS:

  • MPLS/VPN and MPLS 6PE BGP route-reflector fixes

Breaking changes

The SR-MPLS module data model has been refactored. The following global attributes have been renamed or removed:

  • sr.ipv6_sid_offsetsr.node_sid_offset.ipv6 (migrated automatically with a warning)

  • sr.srgb_range_start and sr.srgb_range_size are obsolete (the SRGB range is device-specific and must be set as a node or device attribute); using them generates a warning, and the values are ignored.

The following changes were made to node-level attributes:

  • These attributes have been migrated: sr.srgb_range_startsr.srgb.start, sr.srgb_range_sizesr.srgb.size

  • sr.ipv6_sid_offset is now obsolete at the node level (set it globally instead).

  • Node SID values that were previously calculated in Jinja2 configuration templates are now stored in sr.node_sid.ipv4 and sr.node_sid.ipv6

Other potentially breaking changes:

  • The Cisco IOS XRd shell-script configuration deployment mode is now optional (set netlab_config_mode to sh to use it).

  • Routing policy objects are sorted by sequence numbers (documentation claimed that was true, but it was not)

Bug Fixes

  • Cleanup /etc/hosts generation on Cumulus Linux, FRRouting, and SR Linux (#3187)

  • Unified handling of in-VRF BGP neighbors across all ebgp.multihop configuration templates

  • Reorder device provisioning template search paths so that user-provided templates take precedence over defaults (#3185)

  • Do not attempt to apply empty IOS XRd configuration snippets

  • Symmetric IRB fixes for MPLS and SR-MPLS transport

  • Create per-AF min/max prefix-length values in prefix lists

  • SR-MPLS module is now configured after OSPF and IS-IS to ensure correct module ordering

  • The ‘non-empty list’ constraint is now available for attribute validation: set empty: false on a list attribute to reject empty lists.

  • Format JSON inventory output with indentation for better Unix tool compatibility (#3100)

  • Clean up the node_files directory before generating device configurations (#3108)

  • Remove artifacts resembling netlab files from the Ansible inventory (#3140)

  • Adjust validation plugins to enable VRF prefix checks (#3132)

  • Fix integration tests broken by line-wrap behavior change in python-box 7.3.3 (#3130)

  • mpls.6pe settings do not need to be explicitly adjusted when not configured

  • Use a more recent IOS XRd container image (#3102)

  • OpenBSD needs additional startup time before accepting SSH connections (#3134)

Documentation Fixes

  • Clarify bgp.originate plugin IPv6 support

  • stp.priority increments by 4096, not 1024

  • Ansible cisco.iosxr collection compatibility has been fixed

  • Make IOS XR spelling consistent throughout (IOS XR, not IOS/XR)

  • Clarify delete.community.list attributes in routing policy

Template Developer Documentation

  • MPLS: LDP, MPLS/VPN, 6PE

  • Generic routing: routing policies, prefix filters, AS-path filters, BGP community filters, static routes

  • ebgp.multihop plugin