# Changes in Release 26.03 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` (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](release-26.03-device-features) for details. * Juniper [cRPD](https://www.juniper.net/us/en/products/routers/cRPD.html) is now supported as a containerlab node with shell-script-based configuration deployment. * [EVPN/VXLAN](module-evpn) is now supported on Juniper vPTX and vJunos-router. * [SR-MPLS](module-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](module-sr-mpls) can now be selectively enabled for a subset of address families using the **sr.af** parameter. * New [netlab report](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. (release-26.03-device-features)= ## 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 (release-26.03-ios-xr)= 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 (release-26.03-device-fixes)= ## 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 (release-26.03-breaking)= ## Breaking changes The SR-MPLS module data model has been refactored. The following **global** attributes have been renamed or removed: * `sr.ipv6_sid_offset` → `sr.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_start` → `sr.srgb.start`, `sr.srgb_range_size` → `sr.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-26.03)= ## 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) (doc-fixes-26.03)= ## 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