# Changes in Release 1.1 If you wrote custom Jinja2 templates or Python plugins, you might want to read the [breaking changes](#breaking-changes) section first. ## New Functionality in Release 1.1.4 * **[netlab clab tarball](../netlab/clab.md)** create a tar package that can be deployed with *containerlab* without *netlab* * Added `--tar` and `-cleanup` options to **[netlab collect](../netlab/collect.md)** * Added `--cleanup` option to **[netlab down](../netlab/down.md)** * Support for [OSPFv3 on VyOS](../module/ospf.md) * Build recipes for [Arista vEOS](../labs/eos.md) and [Juniper vSRX](../labs/vsrx.md) use management VRF * Use **netlab_device_type** instead of **ansible_network_os** to select configuration templates * Developer documentation for [initial device configurations](../dev/config/initial.md), [OSPFv2 and OSPFv3](../dev/config/ospf.md) and [configuration deployment task lists](../dev/config/deploy.md). * Add **fetch_config** action for SR Linux and SR OS. You can use **[netlab collect](../netlab/collect.md)** to get current configuration from these devices ## New Functionality in Release 1.1.3 * [netlab show](../netlab/show.md) command displays system settings in tabular format * Restructured [installation documentation](../install.md) * [OSPFv3 support](../module/ospf.md) on a [few platforms](../platforms.md#ipv6-support) * [netlab up](../netlab/up.md) has new flags: `--no-config` and `--fast-config` * EIGRP implementation of [common routing protocol features](../module/routing.md) * [Configurable address family support](../module/routing.md) (IPv4 and/or IPv6) for IS-IS, OSPF, and EIGRP * Libvirt box creating script for [Cisco CSR 1000v](../labs/csr.md) and [Juniper vSRX 3.0](../labs/vsrx.md) * **[netlab install](../netlab/install.md)** installs Vagrant from Hashicorp repository * Support for /31 IPv4 P2P links * Configurable MTU for VyOS and RouterOS ## New Functionality in Release 1.1.2 * [Containerlab installation script](../netlab/install.md) * [System and interface MTU](../links.md#changing-mtu) * [Configurable VM memory and CPU settings](../nodes.md#node-attributes) * [Configurable BGP cluster ID](../module/bgp.md#node-configuration-parameters) * [Router ID calculations](../example/addressing-tutorial.md#using-built-in-address-pools) for IPv6-only devices and [configurable router ID](../module/ospf.md#node-parameters) * [Hosts and default gateways](../links.md#hosts-and-default-gateways) * [Static loopback addresses](../nodes.md#node-attributes) * [Cumulus Linux 5.0 support](../platforms.md) (configuration via NVUE) * BGP graphs can [show RR-client sessions as directed arrows](../outputs/graph.md) * Building [vEOS](../labs/eos.md) and [Nexus 9300v](../labs/nxos.md) libvirt boxes has been significantly simplified with **netlab libvirt package** command * Proof-of-concept [EVPN](../module/evpn.md) and [SRv6](../module/srv6.md) modules ## New Functionality in Release 1.1.1 * Cumulus VX: unnumbered IPv4 interfaces * Cumulus VX: support for EBGP sessions over unnumbered IPv4 interfaces * OVS bridge support in *containerlab* provider ## New Functionality in Release 1.1 * Layer-2-only address pools * Layer-2-only interfaces on numbered or unnumbered links * Unnumbered interfaces attached to numbered links * Per-protocol unnumbered links (example: IPv4 prefix + IPv6 LLA) * Specifying node IP address as N-th IP address on the link * Multiple attachments of a node to the same link (use cases: inter-VRF back-to-back links or bridging loops) * BFD configuration module (contributed by [Jeroen van Bemmel](https://github.com/jbemmel)) * BFD support for IS-IS and OSPF * IS-IS over unnumbered multi-access links * Device capability checks: unnumbered interfaces, OSPF and IS-IS over unnumbered links * Linux bridges are used to implement multi-access links in *containerlab* (contributed by [Jeroen van Bemmel](https://github.com/jbemmel)) ## Major Code Changes * Nodes data structure has been changed from a list to a dictionary. The change impacts plugins written for release 1.0.x that traverse **nodes** data structure. * Link data structure has been changed -- nodes connected to a link (previously dictionary keys) are now collected in **interfaces** list. * Final node data structure has been changed -- **links** (list of interfaces) have been renamed to **interfaces** * BFD, OSPF, and IS-IS configuration modules calculate interface state in Python code, significantly simplifying Jinja2 device configuration templates. * IPAM code refactoring -- unifying address handling on all links and adding new functionality: * Layer-2-only pools, links, and interfaces * Unnumbered multi-access links. Standard IPv6 feature (LLA), might not work for IPv4 on all platforms (depends on platform implementation quality). * Per-address-family unnumbered interfaces * Unnumbered interfaces on numbered or layer-2-only links * Provider-specific device settings have been moved into **devices** dictionary (release 1.1.2) * Tons of new test cases to stress-test IPAM code and increase code coverage * Device image names have been moved into provider-specific device settings (release 1.1.3) ## Bug Fixes in Release 1.1.4 * Invalid modules are reported and stop topology transformation (previously you'd get as far as failing Ansible playbook) * Make sure node.interfaces are always defined ## Bug Fixes in Release 1.1.3 * IOSv does not support unnumbered IPv4 interfaces * Node- and interface module data did not merge correctly * Fix precedence of node-level module parameters (node, global, device, system default) * Copy select node module settings into interface data * Implement explicit interface-level module attributes * Allow provider-specific data to be specified on individual nodes ## Bug Fixes in Release 1.1.2 * *netlab* requires Python 3.7 or later * Static hostnames on Junos * Wait for eth1/1 interface to appear before starting Nexus OS configuration * Add a check for gNMI plugin ## Earlier Bug Fixes * Limit Linux bridge name to 15 characters (1.1.1) * Prefer **netlab_console_connection** Ansible variable over **ansible_connection** in **netlab connect** to connect to devices that use less common connection plugins. * Set Fortinet OSPF Area ID * Fix "unnumbered IPv4 interfaces" flags -- they don't work on IOSv, IS-IS on vSRX and SR/OS works on P2P links * Check that the BGP AS number is an integer * **netlab down** should have the same CLI options as **netlab up** or **netlab create** ## Documentation Fixes * Disabling zero-touch on Arista vEOS is crucial * Fixed tutorial printouts * Describe automated tests * Change minimum Ansible version recommendation * Fix BFD platform support table ## Breaking Changes Don't bother with this section if you're not using custom configuration templates or plugins. * **links** list in node data (which is also what you get in Ansible inventory) has been renamed to **interfaces**. You'll have to change most device configuration templates. Apologize for the inconvenience; we had to bite that bullet sooner or later. * **topology.links** and **topology.nodes** changed. You will have to rewrite any plugins you developed for release 1.0. Fortunately, that's pretty easy to do, and the new data structures are easier to work with. * **ipv4** and **ipv6** interface attributes could be an IP address or a boolean value (for unnumbered/LLA interfaces), requiring additional checks in device configuration templates. You can ignore this change if you're not using unnumbered interfaces. ## Cleanup * Removed ancient (release 0.1) management network addressing parameters * ArcOS is no longer supported by *netlab* -- technical documentation is not available online, the VM image cannot be downloaded, and the contributor of this platform is no longer working at Arrcus.