# Changes in Release 1.5 ```eval_rst .. contents:: Table of Contents :depth: 2 :local: ``` ## New Functionality (release-1.5.4)= ### Release 1.5.4 * [Juniper vPTX/vEVO](../platforms.md) support by Stefano Sasso (initial configuration, IPv4+IPv6, OSPFv2/v3, IS-IS, BGP, BFD, VLANs, VRFs, MPLS, SR-MPLS) * [Juniper vSRX](../platforms.md) can be run as a *vrnetlab*-packaged container (by Stefano Sasso) * Documentation migrated to [netlab.tools](https://netlab.tools) (release-1.5.3)= ### Release 1.5.3 * ['unknown' device type](platform-unknown) can be used to deploy devices not yet supported by *netlab* * [Public *libvirt* networks](libvirt-network-external) can be used to connect labs to outside world * *netlab* can [use (and preserve) existing libvirt networks](libvirt-network) * [Maximum node name length](nodes-list-of-strings) is configurable. * Add MPLS VPN support for SR OS * Improved virtualization provider installation testing with (hopefully) useful error messages * Support for containerlab 0.41.0 [Breaking changes](release-1.5.3-breaking): * containerlab 0.41.0 is the minimum version of containerlab that works with release 1.5.3 * Strict validation of provider- and tool attributes might break some advanced topologies (release-1.5.2)= ### Release 1.5.2 * [External network management tools](../extools.md) * [Aruba AOS-CX Support](../platforms.md) * [Reusable topology components](../components.md) * [Tunnel interfaces](links-tunnel) * Add `--force` flag to **[netlab down](../netlab/down.md)** command * Use [Ansible filters in netlab templating system](../labs/clab.md#jinja2-filters-available-in-custom-configuration-files) * Deploy [per-node custom configuration templates](../dev/config/deploy.md#finding-custom-configuration-templates) * Dry run mode for **netlab up** and **netlab down** commands. (release-1.5.1)= ### Release 1.5.1 * [Simplified definition of VLAN access links](module-vlan-creating-access-links) * [Simplified definition of VRF links](module-vrf-links) * [Link groups](link-groups) * [Output module](../outputs/d2.md) for [D2 diagram scripting language](https://d2lang.com/tour/intro) * Stricter type checks for node names, group names, VLAN names, VRF names, link roles, address pools, device names, and Linux bridges. Names must be *identifiers*: alphanumeric strings up to 16 characters long. * _netlab_ status file [tracks active lab instances](../netlab/status.md) * **[netlab create](../netlab/create.md)** command refuses to create provider configuration files in a directory with a running lab instance. * **[netlab up](../netlab/up.md)** command checks the status file to prevent multiple copies of the same lab instance. [Breaking changes](release-1.5.1-breaking): * Identifiers (names) in existing lab topologies might be too long to meet the *identifier* requirements. You will have to shorten those names. * [Default ASAv password was changed](release-1.5.1-breaking-asav). You might have to rebuild your ASAv boxes. (release-1.5.0)= ### Release 1.5.0 * [Multi-provider topologies](../labs/multi-provider.md) * [Running multiple lab instances on Linux Servers](../plugins/multilab.md) * Split large *libvirt* topology into [smaller **vagrant up** batches](../labs/libvirt.md#starting-virtual-machines-in-batches) * [Use custom network/bridge name and IP subnet](../labs/libvirt.md#libvirt-management-network) for `vagrant-libvirt` management network * Create DHCP bindings for the whole `vagrant-libvirt` management subnet * ['loopback' link type](../links.md#loopback-links) can be used to create additional loopback interfaces * **[netlab show devices](../netlab/show.md)** command displays valid device types * Split `topology-defaults.yml` into numerous smaller files * Strict validation of core and module attributes ## Breaking changes (release-1.5.3-breaking)= ### Release 1.5.3 * Containerlab [changed topology attribute names](https://containerlab.dev/rn/0.41/) in release 0.41.0, forcing us to change topology file template and completely breaking backward compatibility. * Release 1.5.3 implements strict validation of provider- and tool attributes, which might trigger errors in some topologies. Please open an issue if we missed a provider attribute you need. (release-1.5.2-breaking)= ### Release 1.5.2 * We switched to Python Box 7.0.x and replaced tons of calls to `get_from_box` (internal function to get a value from a hierarchical key) with calls to Box `.get` method. That migration might have broken some obscure code path that is not covered with our CI/CD tests. * Loopback interface names for loopback links and VRF loopbacks are sequential within a single node, starting with one. Previously, loopback interfaces created from links used `linkindex` (a low value based on links list), and VRF loopbacks used `vrfidx` (a value starting with 100). (release-1.5.1-breaking)= ### Release 1.5.1 #### Maximum Name Length Release 1.5.1 added stricter checks of node names, group names, VLAN names, VRF names, link roles, addressing pools, devices, and Linux bridges. These names must be *identifiers*: alphanumeric strings (plus hyphen and underscore) up to 16 characters long. You might have to shorten too-verbose names in your topology files. (release-1.5.1-breaking-asav)= #### ASAv Default Password Newer ASAv versions enforce a minimum password length of 8. The default password (*vagrant*) was changed to *vagrant1*. You should rebuild your ASAv Vagrant boxes to use the new password (using the new build recipe), or change the defaults through *user default file* containing: ``` devices.asav.group_vars.ansible_ssh_pass: vagrant devices.asav.group_vars.ansible_become_password: vagrant ``` (release-1.5.0-breaking)= ### Release 1.5.0 Release 1.5.0 introduced strict validation of topology attributes. We ran extensive tests, including all the integration tests, so we're pretty sure that whatever we ever wanted to use still works. Obviously it's possible you used a combination of attributes that we did not test, or that we did not check attribute types in the past and unexpected types just worked. We had to change the underlying data structure from lists of attributes to hierarchical dictionaries, we expect most plugins that added new core- or module attributes to break. Please take a look at the updated plugins in `netsim/extra` directory to see how your plugin should add new attributes (or open a GitHub case and we'll help you). ## Bug Fixes ### Bug Fixes in Release 1.5.4-post1 * Implement FRR on libvirt/Virtualbox as Ubuntu VM + FRR package * Make packet forwarding on Linux devices configurable * Control installation of Ubuntu packages with group variables * Make the list of ignored attributes configurable and allow 'netlab_' attributes in nodes * FRR BGP template fixes/enhancements * ebgp.utils implementation for FRR * Create empty links list if needed when using VLAN module * Merge global VRF data with node VRF data in post-transform hook * Add missing variable to 'include_task' module to display context-dependent task names during initial configuration * Mark 'foreign' nodes in multi-provider topology as 'unmanaged' * Allow clab file binds templates in subdirectories * Consider node-specific provider when deploying device configurations ### Bug Fixes in Release 1.5.4 * Fix Vagrant version in installation script and document supported versions for Vagrant and vagrant-libvirt plugin * Accept any Python expression as a format modifier for YAML/JSON output modules * Build default node.af dictionary from loopback addresses * Skip provider-specific shutdown steps if the provider is not installed * Fixes for Nokia SR OS IXR ECMP profiles * Replace '_' with '-' in Cumulus/Linux hostname * Copy BGP interface attributes from EBGP neighbors into `bgp.neighbors` data structure * Convert 'netlab up' CLI settings into int/bool if possible * Strip spaces from node names used in A-B link format * Nokia SR/OS: configure static blackhole routes for originated BGP networks * Enable ports in Nokia SR/OS initial configuration * Change _containerlab_ release to 0.41.2 ### Bug Fixes in Release 1.5.3-post1 * Allow **srl-agents** clab provider attribute * Pick specific *containerlab* version in **netlab install containerlab** installation script * Update *containerlab* topology template for IPv6 management ### Bug Fixes in Release 1.5.3 * Structured virtualization provider probes result in better error messages during 'netlab up' and 'netlab down' * Strict validation of provider- and tool attributes * Use libvirt P2P UDP tunnels only on links with two nodes and link.type == p2p * Link to IOS XR build recipe was missing * Add sphinx-rtd-theme to docs requirements * containerlab multi-line startup-config * Load host MPLS kernel module before configuring MPLS in FRR containers. * Support SR Linux r23.3.1 * SR Linux: Check if a VLAN has EVPN enabled * Fix MPLS EVPN transport configuration for SR OS * Fix IPv6 LLA configuration on Nexus OS * Abort if python-box version is lower than 7.0 ### Bug Fixes in Release 1.5.2 * D2 output: add list of interfaces to nodes * Allow IP address allocations that barely fit into a prefix (like 2 nodes into /30) * Unify loopback and virtual interface processing * Ignore node provider equal to topology provider * Avoid dependency on Python for custom container configuration templates/scripts * SR Linux/SROS: OSPF related fixes * SR Linux: Use passive flag from interface * SR OS: Remove VRF dependency on BGP module * Deal with Python Box 7.0 expanding dots in keys read from YAML files ### Bug Fixes in Release 1.5.1 * Critical fix: kill `dhcpclient` process in Cumulus CX initial configuration * Nokia SR OS: Changes for IXR platform (#762) * Nokia SR OS: Include system interface in OSPF process (#760) * libvirt P2P links crash when using loopback links * Bug fix: Validate that VLANS and VRFS (if present) are dictionaries * Use link._linkname to display link context in error messages Documentation fixes: * IOS XR box building instructions * Document ASAv password change as a breaking change * Incorrect link references (detected by newer sphinx version) ### Bug Fixes in Release 1.5.0-post4 * Include files from user's home directory * Use formatted strings in 'read topology' error messages * Documentation: Missing pip install step on Ubuntu 20.04 (#754) * Integrate #754 into 'netlab install ansible' installation script ### Bug Fixes in Release 1.5.0-post3 * Include user defaults in 'netlab show' display * Include user defaults from multiple default files * Implement nic_adapter_count libvirt parameter * Add missing 'loopback' node attribute * SR OS: Filter for interfaces having the address family enabled * Update SR Linux CA file path to match latest Containerlab changes ### Bug Fixes in Release 1.5.0-post2 * Report 'unknown command' or 'cannot load module' in netlab CLI * Check the presence of topology snapshot file early in 'netlab down' * Critical fix: remove the extra '---' from ruamel-generated Ansible files ### Bug Fixes in Release 1.5.0-post1 * Extend attributes with extra_attributes before group init * Set low 'bgp update-delay' on Cisco IOS to speed up BGP convergence * Enabled EIGRP/IPv4 on IOS loopback interface * Convert values set via CLI into ints or bools if needed * Minor fixes to NX-OS templates Documentation fixes: * Arista no longer provides vEOS Vagrant boxes * Prefer mutated Nexus 9300v boxes * Deprecate 'extra_attributes' ### Bug Fixes in Release 1.5.0 * Identify malformed device definitions * Check for Nokia Ansible plugin only once per device * Junos MTU has to be applied to the main interface * FRR daemons not started * Use consistent interface name templates * Run integration tests on pull requests * Report fatal error when a configuration module cannot be loaded