Surfing 🏄 the rising tide 🌊 of #TRÚLY-OPEN to lift all networks 🖧

Jeroen Van Bemmel
4 min readDec 13, 2021

--

Ivan Pepelnjak’s Netsim-Tools lacked support for truly open networking — until now…

Although it feels like ages ago, only a week has passed since I wrote about BGP Anycast in the context of Ivan’s Netsim-Tools. We find ourselves with an abundance of choice in great open source projects for networking, to a point where we risk having more solutions than we have problems for. This leads to an important meta-question that Ivan also likes ask: What problem(s) are we solving?

After all, configuring yet another box to do more or less the same thing as some other box — though perhaps subtly differently — has limited value in and of itself. At the same time, we are regularly reminded of just how important it is to have multiple vendor options for business critical networks —whether they be virtual or physical, fixed or wireless.

Seen on Twitter: Why one may need multiple different networking options

Open networking projects and standards

The problem with standards (xkcd)

On one hand there is a need to have multiple competing options. At the same time, this can lead to duplicated efforts and other inefficiencies as various projects find themselves solving the same issues. Part of the motivation for my BGP Anycast project was my observation that the resource requirements for Ivan’s lab setup (7 IOSv VMs) could be hard to meet for students. However, it is also true that more people are familiar with IOS CLI than with Nokia SROS — and learning about networking shouldn’t be about configuration syntax.

In summary, I arrived at the following set of problems to be solved:

✅ Create more accessible and easily reproducible/teachable networking options/tools and help get them in the hands of people willing to learn

✅ Help people focus on solving “real” networking problems, as opposed to subtle but annoying syntactic differences between vendors

Containerlab and NetSim-Tools each have their strengths, and they complement each other. In fact, NetSim-Tools can already leverage Containerlab as a platform to launch containers and VMs — but support for SRLinux and SROS was still lacking. Similarly, Containerlab is great at launching topologies with multi-vendor network devices — including SRL/SROS — but configuring those for various use cases is still at an early stage (certainly when compared to Netsim-Tools).

👀 Introducing: Support for #SROS and #SRLinux in Netsim-Tools, using OpenConfig (where possible)

Those who follow me may know that I like to approach things a little differently. I often prefer to introduce a little twist, something out of the ordinary. In this case, instead of creating Ansible playbook number ⓯, I decided to explore the possibility of using OpenConfig as a vendor-neutral configuration option, with gNMI as a transport.

Nokia SR-OS has had built-in support for OpenConfig since 2016. Although SRLinux does not technically support it yet, its YANG models are heavily influenced by OpenConfig concepts (down to regular expression bugs in AS community expressions). Other features have had priority, but it definitely belongs to the realm of possibilities.

Likewise, gNMI is supported as a transport protocol, in addition to Netconf/XML, JSON RPC, etc. gNMI is interesting because it is so much more than a provisioning protocol; it can be used for real-time event monitoring as well, for example.

OpenConfig: gNMI origin namespace support

In 2016 Rob Shakir and others proposed an extension to the gNMI schema to enable mixed-mode configurations: partly based on openconfig, part proprietary. The idea is simple and similar to namespaces in XML for example, but the Nokia Ansible Galaxy gNMI plug-in didn’t support it yet — until now.

Status and next steps (2021–12–12)

This Git repo contains a branch with my contributions, and I am working to build an SRL+SROS-based version of Ivan’s BGP Add path example. When ready, I intend to submit a PR to Ivan’s project — you can help by letting him know whether that would be desirable or not, in your opinion.

Update 2021–12–14: A PR has been submitted! 🥳

Using Openconfig to provision BGP Multipath example on Netsim-Tools (work in progress)

SR Linux (using CLI templates + copy file) — R21.6.4

🗸 Interfaces and loopback

🗸 BGP

🗸 OSPFv2

SR Linux OSPFv2 adjacencies on router ‘m’

SR OS (using OpenConfig + gNMI) — 21.10.R1:

🗸 Interfaces and loopback using OpenConfig (see above)

🗸 BGP (including routing policies)

🗸 OSPFv2 (using native gNMI models)

🗸 Custom Add Path extension

In fact, both OpenConfig and native provisioning methods can be used as needed; the NetSim driver will detect when features are not available through OpenConfig, and will switch to native mode automatically as needed.

--

--

Jeroen Van Bemmel
Jeroen Van Bemmel

Written by Jeroen Van Bemmel

Sustainable digital transformation at Webscale — real life stories about our discoveries in the world of networking. Views represented are my own.