netlab 25.06: Fixing Nokia SR-OS Configuration Templates
TL&DR: netlab release 25.06 was published last week.
Before discussing the new features, let’s walk the elephant out of the room: I changed the release versions to YY.MM scheme, so I will never again have to waste my time on the existential question of which number in the release specification to increase.
Now for the new features:
- Blackhole/discard static routes (routes point to null interface)
- Redistribution of static routes into OSPF, IS-IS, RIPv2, RIPng, and BGP
- Link aggregation on Junos.
I hope you’ll find these features useful, but also that at least someone will benefit from the time I spent fixing the ancient ruins of Nokia SR-OS configuration templates. This is how the integration test report for Nokia SR-OS looked on May 25th:

And this is the result of testing the configuration templates from release 25.06 after fixing “a few” bugs1:

While fixing old stuff, I also added a few features to the SR-OS configuration templates:
- Static ingress replication for VXLAN
- EVPN transit VNI within VPRN service (previous implementation created a separate VPLS service for the transit VNI)
- Propagation of MPLS/VPN and EVPN routes to CE-routers
- VRF-aware EBGP multihop, IS-IS, OSPFv3
- Inter-VRF route leaking in MPLS/VPN deployments (next step: I have to figure out how to do that on a standalone device)
- Route import into BGP, OSPFv2, OSPFv3, and IS-IS
I must admit that I kind of liked working with SR-OS. Apart from a few conceptual quirks2, it’s pretty fast3, quite neat, and easy to work with (once you figure out configuration changes won’t be applied until you do a commit). If only there were an easy way to get the VM image…
Upgrading or Starting from Scratch?
- To upgrade your netlab installation, execute
pip3 install --upgrade networklab
. - New to netlab? Start with the Getting Started document and the installation guide.
- Need help? Open a discussion or an issue in netlab GitHub repository.
-
I won’t bore you with the details; you can find them in commit messages and pull requests. ↩︎
-
For example, global routing protocols are configured in base Router instance while the user-facing interfaces these protocols are using are defined in Internet Edge Services instance. ↩︎
-
Particularly considering the alternatives - Junos on vRouter-switch or the “you can go fix a five-course lunch, I’m booting” IOS XRd. ↩︎