# Changes in Release 1.4 (release-1.4.3)= ## New Functionality in Release 1.4.3 * [IOS XRv](../platforms.md) support (initial configuration, IPv4+IPv6, OSPFv2/v3, IS-IS, BGP) * [MPLS, LDP and L3VPN](../module/mpls.md) support on FRR * [Rewrite Linux container deployment](clab-linux) to remove Python and `ip` dependencies * [Custom templates for container configuration files](clab-config-template) (release-1.4.2)= ## New Functionality in Release 1.4.2 Stefano Sasso added numerous Juniper-related improvements: * [Juniper vMX](../platforms.md) support * Junos BFD, VRF, MPLS, SR-MPLS, and MPLS/VPN support * Full VLAN support on vMX and routed VLAN interfaces on vSRX Other few features include: * CSR 1000v VLAN and VXLAN support * VyOS containerlab support by [Oleg A. Arkhangelsky](https://github.com/sysoleg) (release-1.4.1)= ## New Functionality in Release 1.4.1 * [Cisco ASAv support](../platforms.md): IPv4, IPv6, IS-IS and BGP support, libvirt box building instructions * [VRRP and anycast gateway](../module/gateway.md) on Dell OS10 * [VRRP on VyOS](../module/gateway.md) * VyOS: [unnumbered OSPF interfaces](../module/ospf.md#platform-support) * Add support for all [EVPN bundle services](../module/evpn.md#evpn-bundle-services) * FRR: default version is 8.4.0 * Install ansible-pylibssh in Ansible installation script (release-1.4.0)= ## New Functionality in Release 1.4.0 * [EVPN asymmetric IRB](../module/evpn.md#asymmetric-irb) on Arista EOS, Cumulus Linux, Dell OS10, Nokia SR Linux, Nokia SR OS and VyOS * [Anycast gateway](../module/gateway.md#anycast-gateway) on Arista EOS, Cumulus Linux, Nokia SR OS and Nokia SR Linux * [VRRP](../module/gateway.md#virtual-router-redundancy-protocol-vrrp) on Arista EOS, Cisco IOSv/CSR, Cisco Nexus OS, Cumulus Linux and Nokia SR OS * [EVPN MPLS transport](../module/evpn.md#platform-support) on Arista EOS and Nokia SR Linux * MPLS/LDP support on Nokia SR OS * New address allocation algorithm for links with small IPv4 prefixes * [Control allocation of VNI identifiers](../module/vxlan.md#selecting-vxlan-enabled-vlans) with **vxlan.vlans** attribute * [Specify EVPN-enabled VLANs and VRFs](../module/evpn.md#global-evpn-parameters) with **evpn.vlans** and **evpn.vrfs** lists * VLAN interfaces are [created for all VLANs listed in node **vlans** dictionary](module-vlan-creating-interfaces) even when there's no physical interface using a particular VLAN. * VLANs and VRFs mentioned in group **vlans**/**vrfs** dictionaries are [copied into all group members](../groups.md#using-group-node-data-with-vrfs-and-vlans), resulting in VLAN interfaces and VRFs on all group members. * **node_data** is deprecated -- you can [specify node attributes directly in group data](../groups.md#setting-node-data-in-groups). * [**unmanaged** devices](../example/external.md#unmanaged-devices) participate in data transformation process but are not part of virtual lab topology. * [Devices in **unprovisioned** group](../example/external.md#unprovisioned-devices) are not configured during the **netlab initial** process. * Routing protocols could be [disabled for the whole VRF](../module/routing.md#disabling-a-routing-protocol-in-vrf) * Strict validation of topology, node, group, VLAN, VRF, and addressing attributes (see also [](#breaking-changes)) * Implement 'device quirks' framework to deal with implementation limitations of individual virtual network devices * EVPN proxy-ARP plugin ## Breaking changes Release 1.4.0 introduced behind-the-scenes functionality that might break existing topologies: * **vni** attribute is assigned to VLANs only if the topology uses VXLAN module. In release 1.3, the **vni** attribute was assigned by the VLAN module. * **vlan.auto_vni** attribute is no longer used. Specify VXLAN-enabled VLANs with **vxlan.vlans** if you don't want to assign **vni** values to all VLANs. * EVPN module using VXLAN transport still takes control of all VLANs with **vni** attribute and VRFs with **evpn** attribute, but it's not recommended to rely on that behavior. Specify EVPN-enabled VLANs and VRFs with **evpn.vlans** and **evpn.vrfs** lists. * Flexible address allocation algorithm might change IP addresses on links with small IPv4 prefixes. * Node, VLAN, and VRF attributes are checked -- topologies that used extra node attributes not related to configuration modules would no longer work. Use **extra_attribute.nodes** to define your own node attributes * Provider-specific node attributes have been moved into provider-specific namespace. For example, **runtime** attribute became **clab.runtime**. * Interface (node-to-link attachment) attributes are checked -- topologies using extra interface attributes not related to configuration modules would no longer work. Use **extra_attribute.interfaces** to define your own interface attributes. * Address pool attributes are checked. Topologies that included extra attributes in address pools (even though they were useless) would break. * **ip** attribute within an address pool is no longer valid. Use **ipv4**. * **ip** attribute within a **prefix** dictionary is no longer valid. Use **ipv4**. * The tests for unique VNI values are stricter and might break topologies that used duplicate VNI values in VLANs or VRFs. * Stricter checking of VLANs on VLAN trunks breaks nonsense topologies that had a non-VLAN node connected to a trunk with no native VLAN, or that had a single node using a particular VLAN on the trunk. * Group data is thoroughly checked, including node attributes. This might break topologies that used invalid node attributes or attributes for non-active modules in **node_data**. * Group node attribute inheritance sometimes produced incorrect results in releases prior to 1.4, in particular when combined with BGP-based groups. Resolved circular dependency between groups and BGP module might result in slightly different (but correct) group membership and node data. ## Bug Fixes in Release 1.4.3 * Minor vMX SR-MPLS fixes * Don't create vagrant-libvirt virtual network during libvirt installation * Documentation fixes: VRF and SR-MPLS module supported platforms * Use provider-specific configuration templates and deployment scripts * Support for generic initial device readiness check * Use sysctl instead of echo for Cumulus and FRR * Validate IS-IS node or link type (L1/L2/L1-2) * FRR: don't lose interface IPv6 address after VRF enslavement * FRR: use "ip ospf passive" * VyOS: remove hard-coded MPLS and LDP on loopback (dummy) interface ## Bug Fixes in Release 1.4.2 * Fix external provider template * Missing _ifupdown_ 'auto' flag on Cumulus VLAN interfaces * Updates to accomodate changes in SR Linux release 22.11.1 * Generalize docker_shell handling in 'netlab connect' * IGP BFD status should not be present on interfaces without IGP * Use vagrant-libvirt plugin version 0.11.2 * CSR 1000v initial box config needs interface name as DHCP client ID * Increase vSRX CPU quota and command execution timeout * Test multi-access network in "netlab test clab" * Set correct first-hop gateway on VLANs with partial FHRP support * Report errors on VXLAN-enabled nodes with no links * Move to python-box 6.1.0 and force ruamel to emit YAML 1.1 documents * Fix VyOS wrong BGP macro invocation * SR Linux/SR OS: don't assume VRF module is being used with EVPN * Check for device-specific raw Vagrantfile template * Use new- or old-style Python formatting strings when creating interface names ## Bug Fixes in Release 1.4.1 * Merge group modules with node modules (needed for overlapping groups) * Don't create VXLAN-enabled VLANs on nodes that don't need them * Fix VLAN lookup for node-local VLANs defined on a neighbor node * Enforce string type for VLAN names ## Bug Fixes in Release 1.4.0 * Validate module names early in transformation process * Resolve circular dependency between groups and BGP module * Check for transformation errors before initializing modules * Add environment variables to installation scripts to stop LTS 22.04 popups * Polish interface labels in graphs * Deal with partially-overlapping VLAN trunks * Use topology defaults instead of hard-coded lists to drive VLAN interface logic * Copy global EVPN data into nodes before checking VRF IRB support