Skip to content

Release 0.60 ๐ŸŽ„#

2024-12-04 ยท Full Changelog

New Year New Look: The new table style#

Yes, the New Year is not quite here, but the gifts are. We have a new table style and layout that you will see whenever you run any of the containerlab commands that display tabular data.

Before we used the classic table style which was not very pretty, but more importantly, it was quite W I D E. We've seen you struggling with it, shrinking the terminal font size to fit the table view. It was not a great UX.

So we decided to change that, and in this release we introduce a new table style that looks nice(er) and is much more compact! Here is a 1:1 comparison of the table output for the SR Linux ACL lab that has three nodes in it:

Old table style:
+---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+
| # |    Name    | Container ID |                   Image                    |     Kind      |  State  |  IPv4 Address  |     IPv6 Address     |
+---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+
| 1 | acl-client | ad01263e77f4 | ghcr.io/srl-labs/network-multitool         | linux         | running | 172.20.20.3/24 | 3fff:172:20:20::3/64 |
| 2 | acl-server | 59623d96308b | public.ecr.aws/nginx/nginx:1.27-alpine3.19 | linux         | running | 172.20.20.2/24 | 3fff:172:20:20::2/64 |
| 3 | acl-srl    | 9e3048d5e678 | ghcr.io/nokia/srlinux:24.10.1              | nokia_srlinux | running | 172.20.20.4/24 | 3fff:172:20:20::4/64 |
+---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+

New table style:
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚    Name    โ”‚                 Kind/Image                 โ”‚  State  โ”‚   IPv4/6 Address  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ acl-client โ”‚ linux                                      โ”‚ running โ”‚ 172.20.20.4       โ”‚
โ”‚            โ”‚ ghcr.io/srl-labs/network-multitool         โ”‚         โ”‚ 3fff:172:20:20::4 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ acl-server โ”‚ linux                                      โ”‚ running โ”‚ 172.20.20.2       โ”‚
โ”‚            โ”‚ public.ecr.aws/nginx/nginx:1.27-alpine3.19 โ”‚         โ”‚ 3fff:172:20:20::2 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ acl-srl    โ”‚ nokia_srlinux                              โ”‚ running โ”‚ 172.20.20.3       โ”‚
โ”‚            โ”‚ ghcr.io/nokia/srlinux:24.10.1              โ”‚         โ”‚ 3fff:172:20:20::3 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

As you can see, the table is now almost half the width of the old one, which means you are less likely to have to shrink the font size to fit the table. Simply lovely.

Of course, it is not the style that made the difference, you may notice that we removed some columns like Container ID and node index. We also made each node to make use of the vertical space and combined Kind/Image and v4/v6 fields. This allowed us to narrow down the overall table width.

Font matters

There is a small price to pay for the new table style; it might be sensitive to the font family you use. In the terminal most fonts will work brilliantly, but when you dump the table to some UIs it might not be as pretty.

For example, when dumping the tables to the beautiful chalk.ist, select the Nova font.

We are curious to hear your feedback, negative or positive. If you feel that we should make the style configurable, please let us know in Discord.

Transparent management mode for VM-based nodes (beta)#

As predicted, we saw a growth in container-native network OSes over the past couple of years. Slowly, but surely we are moving to a better place, where we can run networking topologies fully in containers.

But there is still a lot of legacy infrastructure out there, and we needed to support it. That was the prime motivation to integrate vrnetlab to containerlab and wrap these fatty VMs with a thin container layer.

One particular feature of vrnetlab was that VMs were using the Qemu user-mode network stack, which is a bit of a pain to work with. It boils down to all VMs having the same management interface IP address, which is, of course, not ideal. It is quite critical to network management systems, who went crazy when they saw the same IP address on all VMs calling home. It was time to fix that.

Thanks to @vista- and the work he started in hellt/vrnetlab#268 we started to chip away on what we call a "transparent management mode" for vrnetlab. In this mode, each VM will have a distinct IP address assigned to its management interface that matches the IP address you see in the containerlab table.
With some tc magic we were able to achieve a functional management connectivity while keeping the telnet/console accesses intact.

pic

We are looking for beta testers for this feature that is documented in https://github.com/hellt/vrnetlab/issues/286 with support added for

  • Nokia SR OS
  • Juniper vJunos and vSRX

Other vrnetlab-based nodes will be supported as well, if you want to help -- please reach out to us on Discord or vrnetlab issue tracker.

Devcontainer and DevPod#

The ultimate goal Containerlab pursues is to make networking labs a commodity. Doesn't matter what OS you are using, what platform you are on, or how skilled you are with containers.

Over time we approached this lofty goal by making iterative improvements. Starting with making sure it is easy to install containerlab on any Linux distro using the quick setup script.

Then making it easy to run containerlab on borrowed and free compute - that is how Codespaces integration story started and was picked up by the community.

For this ๐ŸŽ„ release we are taking another step further and releasing two new integrations that will help you reduce the mean-time-to-lab even further.

Devcontainer#

The devcontainer integration is a way to start a lab on a laptop, desktop, server or VM without installing anything on the host besides Docker. If you rememeber how easy it was to start a lab in Codespaces, you will be happy to get the same UX now with your local compute.

We are documenting Devcontainer support

And in this video we dive into the details of how to use it.

DevPod#

DevPod takes the devcontainer experience and adds better UX on top of it ๐Ÿ˜‰

An open-source project by Loft Labs, DevPod makes it possible to use the same devcontainer specification and create a "workspace" that uses almost any IDE known to men and deploys it on a wide range of providers.

macOS documentation#

It took us a while, but we finally refreshed the macOS documentation. The availability of Nokia SR Linux in a native arm64 architecture was definitely a catalyst for this, but not the only one.

After @hellt did a video on running containerlabs on arm64 architecture where he featured OrbStack in the role of a virtual machine manager for macOS, we've been getting a lot of feedback from our users saying that they finally got to run labs on their Macs.

Windows Subsystem for Linux (WSL) documentation#

We also refreshed the Windows documentation that revolves around WSL. It was a bit outdated, and WSL is still improving quite a lot.

With Win11 it became even better and the tireless team of our contributors - @kaelemc, @FloSch62, and @hyposcaler-bot - spent 900 messages in dicsord while delivering a custom WSL distro to elevate WSL experience to the sky.

Please meet WSL-Containerlab.

Miscellaneous#

  • network aliases option for nodes #2256 by @mzagozen
  • added packet corruption capability for the tools netem command #2271
  • support for the interactive mode of the drawio integration #2291 by @FloSch62
  • fixes and improvements to the installation scripts #2273 #2273
  • enabled Netconf on SR Linux #2322

Patches#

0.60.1#

  • do not check bind paths when performing destroy #2334 #2337
  • setup docker/moby 26.1.5 #2336