Skip to content

Release 0.71#

2025-10-10 ยท Full Changelog

SR-SIM enhancements#

For multi component nodes, the config to provision the CPMs, Line cards and MDAs will be added automatically. This massively simplifies the cognitive load as you no longer need to worry about the essential config to bring up the cards and modules and focus on the actual service configs. Thanks @kaelemc #2827

Another improvement touched the logging part where now if you made an error in your SR-SIM configuration file, the error will be fetched from the container logs and displayed to you in the CLI. This should help you to debug your config issues faster. Thanks #2874

Env vars for all#

In this release we added comprehensive support for the env vars-based configuration. Every containerlab CLI flag of every command now comes with a corresponding env var.

All command line arguments can be also provided via environment variables (CLI flags take precedence). The environment variable names are constructed by prepending CLAB_ to the flag name, then adding the command path and ending with the flag name in its full form, all in uppercase and with hyphens replaced by underscores.

For example, the --max-workers flag for the deploy command can be set via CLAB_DEPLOY_MAX_WORKERS environment variable.
Or CLAB_INSPECT_ALL=1 to set --all flag for the inspect command.
Or CLAB_TOPO=srlinux.dev/clab-srl clab dep -c to deploy a lab with the topology passed via environment variable.

Cisco SD-WAN nodes#

Thanks to @torbbang, Containerlab got support for Cisco SD-WAN components (vManage, vSmart, vBond). Check cisco_sdwan kind docs for more details. #2877

IP addressing new home#

In 0.70 we toyed with the idea of assigning IP addresses on the links automatically based on the user input under the links section. Originally we put the ipv4 and ipv6 keys under the .links.vars section, however, IP is such an essential part of the link definition, that it makes sense to move it up and make it a property of the link itself.

Here is how it looks now in the brief format:

  links:
    - endpoints: ["srl1:e1-1", "srl2:e1-1"]
-       vars:
-         ipv4: ["192.168.0.1/24", "192.168.0.2/24"]
-         ipv6: ["2001:db8::1/64", "2001:db8::2/64"]
+     ipv4: ["192.168.0.1/24", "192.168.0.2/24"]
+     ipv6: ["2001:db8::1/64", "2001:db8::2/64"]

And the extended format is even more expressive:

       endpoints:
         - node: srl1
           interface: e1-2
-          vars:
-            ipv4: 192.168.0.1/24
-            ipv6: 2001:db8::1/64
+          ipv4: 192.168.0.1/24
+          ipv6: 2001:db8::1/64

         - node: srl2
           interface: e1-2
-          vars:
-            ipv4: 192.168.0.2/24
-            ipv6: 2001:db8::2/64
+          ipv4: 192.168.0.2/24
+          ipv6: 2001:db8::2/64

Topology data export file#

A few tools have been built around the topology data export file that Containerlab generates. With the introduction of link IP addressing, we revisited the topology data and its links sections in particular. Apparently, the default export template was not adhering to the extended link format that we have, so it felt like a good time to fix it.

Now the topology data export will change the links section to feature endpoints, and link vars and IP addresses will be properly represented there. #2882

Here is an example of the links section when the default (auto.tmpl) template is used:

  "links": [
    {
      "endpoints": {
        "a": {
          "node": "srl1",
          "interface": "e1-2",
          "mac": "aa:c1:ab:56:36:28",
          "vars": {
            "srl1ep1var1": "val1",
            "srl1ep1var2": {
              "a": "b",
              "c": "d"
            }
          },
          "peer": "z"
        },
        "z": {
          "node": "srl2",
          "interface": "e1-2",
          "mac": "aa:c1:ab:09:2f:ea",
          "vars": {
            "srl2ep1var1": "val2",
            "srl2ep1var2": {
              "x": "y",
              "z": "a"
            }
          },
          "peer": "a"
        }
      }
    }
  ]

Miscellaneous#

  • an alias for the version upgrade command has been added - version update. #2844
  • improved error message when subnet override is detected #2845
  • added integer division function for templates #2854
  • documented all magic variables and their usage #2839
  • clab graph will show now all routable addresses to reach the web server serving the topo image #2838