Changes in Release 1.7

New Functionality

Release 1.7.1

  • Automatically create nodes from group members

  • Add ‘wait’ parameter to validation tests

  • Use colors in netlab up/down/test/validate printouts

  • Use color-coded error messages

  • Use the rich Python library to pretty-print tables, JSON, and YAML

  • Display object descriptions in the ‘netlab show attributes’ printout

  • Use any loopback interface for VXLAN VTEP (not just the Loopback0)

Platform enhancements:

  • Juniper vPTX can run as a container with containerlab

  • Implement unnumbered EBGP on FRR VRFs

Minor improvements:

  • Add parent interface data to unnumbered interfaces

  • Make loopback more like a regular interface

  • Print an error message when the validation test is interrupted

Integration tests:

Release 1.7.1 includes improved initial configuration, VLAN, VXLAN, and VRF integration tests with automated validation.

Release 1.7.0

New and improved plugins:

  • The fabric plugin generates a whole leaf-and-spine fabric topology from a few parameters.

  • The bgp.domain plugin allows you to create topologies with multiple independent devices or sites using the same BGP AS number.

  • The bgp.policy plugin supports AS-path prepending on Arista EOS, Aruba AOS-CX, Cisco CSR 1000v, Cisco IOSv, Cumulus Linux, FRR

  • bgp.originate plugin uses loopbacks (instead of static routes to Null device) to originate BGP IPv4 and IPv6 prefixes

Platform enhancements:

  • vptx device supports the vJunosEvolved release 23.2R1-S1.8 (or later). Older releases no longer work, you’ll have to rebuild your Vagrant boxes.

  • bgp.session: implement BFD, BGP timers, and passive BGP for Junos devices (vMX, vSRX, vPTX)

  • bgp.session: implement AS-path manipulation, default route origination, TTL security, passive BGP peers, MD5 passwords, and BGP timers on Cisco NexusOS

  • MPLS LDP on Nokia SR Linux

  • AOS-CX: Support for L3VNI and release 10.13

  • Change the default FRR release to 9.1.0

Documentation improvements:

Internal data validation changes:

  • Streamline common data type validation

  • User-defined data types (example: VLAN definition)

  • Add _namespace parameter to user-defined types to pull in parameters from other objects (example: link parameter in VRF)

  • Replace module extra attributes with data type validation _requires functionality

  • Add _required flag to check mandatory attributes

  • Add _subtype dictionary validation parameter to trigger recursive validation of vrfs and vlans attributes

  • Validate keys in a dictionary with the _keytype attribute

  • Add include defaults at parent level functionality, use it to define VRF and VLAN data types as global attributes

  • Cleanup data type validation in VLAN and VRF modules

  • New built-in data types: prefix_str (IPv4 or IPv6 prefix), node_id (node name), device (device identifier)

For more details, read the Lab Topology Attribute Validation

Breaking changes

Release 1.7.0

  • Old vJunosEvolved (vptx) releases don’t work with netlab release 1.7.0. In those releases, the vJunos virtual machine needed four additional interfaces for internal PFE and RPIO links. vJunosEvolved release 23.2R1-S1.8 implemented those links with intra-VM links. As there’s no reasonably sane way to support both architectures without confusing everyone, we decided to adopt the new architecture – a decision that breaks old Vagrant boxes.

  • extra_attributes can no longer be used. This parameter has been deprecated in release 1.5.0 and removed from documentation in release 1.6.4. Supported ways of adding custom attributes are described in Custom Attributes.

Bug Fixes

Bug Fixes in Release 1.7.2-post1

  • netlab config command breaks when used with newer Ansible releases. The modified deployment playbook uses the common deploy custom configuration templates task list used by netlab initial.

Bug Fixes in Release 1.7.2

  • Change pinned Vagrant/vagrant-libvirt releases to Vagrant 2.4.0-1 and vagrant-libvirt 0.12.2. Both releases were successfully tested on Ubuntu 20.04 and 22.04

  • Allow ansible_ or netlab_ variables in node and group data

Bug Fixes in Release 1.7.1

  • Hosts need at least one adjacent router with a real IPv4 address

  • Cumulus Linux 4.x using VLAN-aware bridge does no support routed native VLANs or routed subinterfaces

  • Pad NX-OS hostname if it’s too short

  • Make ‘hostvars’ available when evaluating validation templates

  • Use yet another path to Ansible filters to cope with Ansible release 4.10.0

  • Accept empty tools definitions could be empty (NoneType) when validating lab topology

  • Propagate module attribute types (global -> node, link -> intf)

  • Redistributing leaked VRF routes into OSPF on Arista EOS requires an additional configuration option

  • STP has to be disabled on VLAN-aware Linux bridges using VXLAN

  • Failure to execute command is a validation failure

  • Replace ‘termcolor’ with ‘rich’ markup

  • Fix DHCP race condition with ‘interfaces’ file mounted into Cumulus containers

  • loopback0 on Cumulus Linux is named ‘lo’ not ‘lo0’

Bug Fixes in Release 1.7.0-post1

  • ArubaCX: fix MTU plus minor stuff (#979)

  • Dell OS10: MTU fixes (#978)

  • FRR supports unnumbered interfaces with OSPF and IS-IS

  • The fabric.debug parameter was not a valid topology attribute.

  • Turn VLAN/interface attribute sets into dictionaries

Bug Fixes in Release 1.7.0

  • Configure new BGP community display format on Cisco IOS

  • Display plugin hook call sequence

  • Cleanup the generation of module supported_on lists (#933)

  • Validate error printouts in the test_error_cases test harness (#936)

  • Reorder steps early in the topology transformation process

  • Add the expand_topology plugin hook to support plugins that modify lab topology.

Documentation Fixes

Documentation Fixes in Release 1.7.2

  • RouterOS CHR upload limits and trial license usage

  • Better description of custom group Ansible variables

Documentation Fixes in Release 1.7.1

Documentation Fixes in Release 1.7.0-post1

  • Remove the FRR version from the platform support tables (fixes #973)

  • Updated IS-IS and OSPF platform support

  • Virtualbox should be the environment of last resort

  • Nested virtualization is not needed for containers

Documentation Fixes in Release 1.7.0