# Changes in Release 2.0 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` ## New Functionality (release-2.0.0)= ### Release 2.0.0 * Well-defined [node roles](node-router-host) (**host**, **router**, **bridge**) available on [multiple platforms](platform-host) * **[firewall.zonebased](plugin-firewall-zonebased)** plugin * **bridge** nodes can be used as [simple bridges](node-role-bridge) or to [implement multi-access links](node-bridge-lan) * **[netlab defaults](netlab-defaults)** command provides **sysctl**-like CLI interface to user/system defaults. * Gather usage statistics into a local file that can be inspected or managed with **[netlab usage](netlab-usage)** * SRv6: [BGP L3VPN support](module-srv6) * Use the **routing** module to configure static routes on [**host** devices](node-role-host). VRF-aware devices can use a default route; other devices get more specific routes for address pools and named prefixes. * Multiple [EVPN import/export route targets](evpn-vlan-service) allow you to build complex EVPN-based services like *common services* or *hub-and-spoke connectivity* * Implement [node/link styles for D2 graphs](outputs-d2-style-attributes) * Implement 'delete communities matching a list' in [routing policies](generic-routing-policies) **Retirements** * [Cumulus Linux 4.x is retired](caveats-cumulus). While there are no plans to remove it from _netlab_, we will not add new features or run integration tests. * [VirtualBox and direct Windows/macOS installations](lab-virtualbox) are obsolete. **Minor improvements** * Names of **defaults.const.validate** constants [can be used as wait times](validate-retry) in the validation **wait** parameter * Recognize **all** and device types in the [node selection expressions](netlab-inspect-node) used in **netlab inspect**, **netlab report** and **netlab exec** commands * Use a different Ansible task list when reloading device configuration * Accept 'int' and 'bool' values for management IP addresses * Combine default tcpdump flags with user filter in the **[netlab capture](netlab-capture)** command * Change the installed Vagrant version to 2.4.3-1 * Check reserved ranges (local network, multicast) during IPv4/IPv6 address/prefix validation * Warn about EBGP 'bgp' attributes used on intra-AS links/vlans (release-2.0.0-device-features)= **New device features** Arista EOS: * Configuration reload uses **configure replace** command * You can use Arista EOS as **router**, **host** or **bridge** node ArubaCX: * Unnumbered interfaces, including OSPFv2 support (requires release 10.14 or later) Bird: * BGP session features: BFD, BGP timers, default route origination, GTSM * RFC 8950 (IPv4 AF over IPv6 BGP session) support * BGP remove private AS * VLAN and LAG support * **netlab clab build** can build Bird v2 or Bird v3 containers * Route redistribution into OSPF * OSPF timers, router priority, and passwords * IPv6 RA configuration (#2109) * You can use Bird as **router** or **host** Cisco IOS: * Configuration reload uses **configure replace** command * You can use Cisco IOS as **router**, **host** or **bridge** node Dell OS10: * BGP BFD, timers, passwords, and default route origination * BGP AS manipulation: allowas-in and remove-private-as * OSPF default route origination * Routing policies, prefix lists, AS-path filters, and BGP community filters * Static routes FRR: * SRv6 with IS-IS * BGP L3VPN over SRv6 * You can use FRR as **router** or **host** node Junos: * Routing policies, prefix lists, AS-path filters, and BGP community filters * Static routes * BGP routing policies, local preference, MED, weight, AS-path prepending * Major cleanup and refactoring of routing policies * MAC-VRF EVPN implementation Linux: * VLAN support on Linux containers (#2103) * You can use Linux containers as **host** or **bridge** nodes SR Linux: * Release 25.3.1 support, including version-specific configuration templates that work with 24.10 and 25.3 releases * Support for configuration reload with **netlab up --reload** command VyOS: * Static routes (release-2.0.0-device-fixes)= **Fixes in configuration templates:** Arista EOS: * Disable PHY control messages with 'netlab_phy_control' variable * IBGP routes are reflected over local-as IBGP sessions, their next hop is forced to **self** ArubaCX: * Simplified Vagrant box build recipe * Do a soft clear of all BGP sessions after a routing policy change Bird: * Configure logging to /var/log/bird * Filter BGP communities per neighbor type * Advertise IPv6 loopback as /128 in OSPF * Do not send IPv6 RA in 'host' role * Set 'next-hop-self always' on local-as IBGP sessions (#2110) Cisco IOS: * Do a soft-clear of global and VRF BGP sessions after a routing policy change * IBGP routes are reflected over local-as IBGP sessions, their next hop is forced to **self** Cumulus Linux: * Change STP parameters on the bridge and VXLAN interfaces Cumulus Linux NVUE: * Explicitly enable IPv6 on extra loopbacks interfaces (#2118) * Filter duplicate VRF BGP network statements Dell OS10: * Fix VRF context for the bgp.policy plugin configuration * Fix BGP address family activation (#2075) * Configure per-VRF BGP router-id (#2073) * Move route-target configuration to VRF module, apply only when BGP module is used (#2055) dnsmasq: * Dnsmasq: Ubuntu 24.04 as the base image FRR: * Replace obsolete 'brctl' commands with modern equivalents (#2107) * Fix the ARP sysctl settings on VARP/anycast GW MACVLAN interface (#2100) * Assign VARP/VRRP interfaces to the correct VRF * IBGP routes are reflected over local-as IBGP sessions, their next hop is forced to **self** Junos: * Shutdown unused BGP neighbors on Junos Linux: * Set default **arp_announce** value to 2 (#2159) * IPv4 unnumbered peering * Create extra loopback interfaces on Linux-based daemons (#2114) * Postpone disabling IPv6 on interfaces on Ubuntu until after netplan has been applied (#2247) SR Linux: * Configure per-VRF BGP router ID (#2077) * Fix the BGP AF activation (#2074) VyOS: * Check for configuration failures in Ansible playbooks * VyOS: work around the LLDP configuration inconsistency between release 1.4 and 1.5 * Routing policies shall consider only IPv4 and IPv6 AF (#2146) * Fix BGP router-id on VRFs (#2072) ## Breaking changes (release-2.0.0-breaking)= ### Release 2.0.0 We implemented a generic mechanism to indicate that an attribute should not be inherited from a parent object (groups → nodes, nodes → interfaces, links → interfaces...). Setting an attribute to *False* will break the inheritance chain and remove the attribute. The only exceptions are the attributes that can accept a *False* value (bools, IP addresses/prefixes); the inheritance chain is broken due to the presence of attributes with *False* values, but they are not removed. The change did not impact any of our transformation and integration tests, so it should be pretty safe. However, it is not impossible that you'll discover an edge case that works differently than it did in the past. ## Bug Fixes (bug-fixes-2.0.0)= ### Bug Fixes in Release 2.0.0 * Add a hint regarding node/gateway id conflict * The 'prefix6' attribute should not be copied into link/node data (#2235) * 'false' value of an attribute with 'true_value' crashed validation * BGP session attributes can be removed with *False* value * Set defaults.provider when changing top-level provider * Change filelock minimum release to 3.16.1 (still supporting Python 3.8) * EVPN: Report an error when VNIs are used with mpls transport (#2205) * Enable VPNv4/VPNv6 AF based on mpls.vpn settings (#2221) * Consider intf/node bgp.local_as when computing 'external' role (#2215) * Prune IGP interfaces based on IGP/interface AF match (#2211) * Multi-protocol BFD whacked the IGP AF information (#2210) * Make 'localas_ibgp' a valid bgp.activate value (#2207) * Rename 'netlab usage' to 'netlab help', use rich console to print help * Add provider-specific node roles to daemons * Configure IPv6 LLA on bird loopback intf only when needed * BGP RFC 8950 test: DUT role must be set to 'router' * SR Linux: Need to explicitly specify type as link-local for static LLA (#2186) * BGP-with-BFD integration test * Provider-specific features disable DHCP clients on cEOS and Linux (#2181) * Make DHCP error messages provider-aware (#2180) * Implement provider-specific module/role support (#2177) * Fix the description of DHCP feature flags * Routing object normalization crashed on group objects * Always set 'disable_ipv6' flag on Linux interfaces (#2176) * Save collected SR Linux configs into '.cfg' files * Remove 'building config' banner from collected IOS configuration * Expand routing object shortcut definitions with the 'normalize' hook (#2168) * Implement static (defaults-driven) module hooks (#2166) * Fix: Insane 'plugin' values could crash netlab * Copyright and license: Update year to 2025 (#2165) * Fix double transformation for routing.community objects (#2164) * Split group sanity checks from in-depth data validation (#2163) * BGP module does not need pre_default hook * Configure VXLAN after BGP * Check source VRF of IPv4 addresses used on unnumbered VRF interfaces (#2123) * Move VRF loopback creation to post_link_transform hook (#2122) * Refactor the role-specific node transformation into a separate subsystem (#2095) * Check for a Linux bridge in the forwarding path of LAG links * Extract warnings generated in integration tests and store them in test results * Use report_quirk for consistent reporting of device quirks (#2083) * Remove paramiko-specific options from ansible.cfg (#2081) * 'loopback' attribute in global VRF definition must be a bool (#2076) * Allow 'no quirk flag' in devices.report_quirk * Select the best (not first) interface for daemon control-plane IP address * Add the 'activate' dictionary to VRF EBGP neighbors (#2060) * Replace calls to string.format with strings.eval_format (#2063) * Add VPNv4/VPNv6 AF checks to EOS/FRR BGP validation functions * Add checks for BGP session and AF activation to EVPN integration tests * Deal with inconsistent FRR 'bgp neighbor' JSON data structure * Allow 'bgp.multihop' node attribute * Check AF activation in FRR/EOS BGP validation functions * Add a dump of config variables to 'config' validation action ## Documentation Fixes (doc-fixes-2.0.0)= ### Documentation Fixes in Release 2.0.0 * Make VirtualBox and direct Windows/macOS installations obsolete * Document the impact of specifying a node parameter for an auto-created node (#2106) * Allow interface name to be set on a per-interface basis (#2105) * IBGP sessions within VRFs do not work