Release 0.74#
2026-03-08 · Full Changelog
Spirent STC#
The spirent_stc kind adds support for running Spirent containerized Test Center in your labs. The node handles the quirks of STC's cgroups v1 dependency and interface renaming automatically, exposing test ports with portX naming that matches the Spirent GUI — so what you see in the topology is what you see in the Spirent interface.
Lab name magic variable#
A new __clabLabName__ magic variable joins the existing set of magic variables. Combined with __clabNodeName__, it unlocks a powerful workflow for the save --copy command: save your running configs to a directory, then reference them as startup configs using magic variables — no hardcoded paths needed.
name: mylab
topology:
nodes:
node1:
startup-config: startup-configs/__clabLabName__/__clabNodeName__/config.json
node2:
startup-config: startup-configs/__clabLabName__/__clabNodeName__/config.json
Magic variables are now also resolved inside node extras section (ceos-copy-to-flash and srl-agents), so you can use templated paths everywhere in your topology definition. #3099
Events enhancements#
The events stream gets two improvements in this release. First, container exposed ports are now included in the event data, giving consumers full visibility into which ports are mapped for each container. Second, internal event processing was reworked to batch interface queries — replacing per-interface lookups with a single snapshot per tick and caching netem state — cutting CPU usage by up to 30%.
VxLAN stitched links fix#
A race condition in VxLAN stitched link deployment has been fixed. Previously, TC stitch rules could be applied before the underlying veth and VxLAN interfaces were ready, causing intermittent deployment failures. The deployment ordering now guarantees that all veth pairs are created before VxLAN interfaces, and VxLAN interfaces exist before TC rules are applied.
Additionally, the TC action was corrected from mirred egress mirror (which copies packets) to mirred egress redirect (which moves packets) — the correct behavior for bridging two interfaces. #3083
TX offload on clab network#
The long-standing code that disabled TX checksum offload on the Containerlab management bridge has been removed. This code was originally added to work around checksum issues with SR Linux, but since then SR Linux started recomputing checksums and the per-veth offload disable (which remains in place) is the correct fix. The stale bridge-level disable was causing DNS failures for containers running under Orbstack and potentially other hypervisors. #3082
SSH-agent fallback#
Containerlab now gracefully handles restricted execution environments (such as Cursor remote sessions) where the process runs with setuid but lacks CAP_DAC_OVERRIDE. When the SSH agent socket cannot be accessed with elevated privileges, Containerlab falls back to the original user's credentials to retrieve SSH public keys — ensuring that SSH key injection into nodes works regardless of the host's capability restrictions. #3098
veesix osvbng#
to the
veesix_osvbng kind! Containerlab can now run veesix ::networks Open Source vBNG nodes, bringing broadband network gateway functionality to your labs. Packaged as a native container image and available on Docker Hub.
Thanks @BSpendlove #3072
Fresh looks#
The Containerlab startup banner got a visual refresh — the logo text now renders using braille characters for a crisper, more compact look in your terminal.
Miscellaneous#
- Fixed distributed SR-SIM nodes becoming unreachable when deployed with
--skip-post-deployby moving TX offload disable toDeployEndpoints(). Also fixedPostDeploytimeout loop that never iterated. Thanks @bayars #3045 - Disabled TX offload on IOL node management interface, fixing SSH connectivity from other devices on the bridge. Thanks @bendergm #3077
- Fixed overly restrictive JSON schema regex for
nokia_sroscustom varianttype, which rejected valid distributed chassis definitions from the documentation. Thanks @antoinekh #3081 - Added magic variable prefix support to the JSON schema. Thanks @juliusliu02 #3057
- Added
ceos-copy-to-flashto the.clab.ymlschema. Thanks @rrajpuro #3091 - Added
ixr-e2nanda1to the SR Linux kind schema and docs - Fixed scrapli-based SROS config save #3097
- Modernized
frr01example lab to usegroupsandexeckeys, updated container images to current versions. Thanks @blinklet #3085 #3084 - Fixed typos and
curlcommand in manual installation docs. Thanks @earies #3067 - Bumped Docker API to use
golang.org/x/sysv0.41.0 andgithub.com/brunoga/deepv1.3.1
