Self-organizing #EVPN fabrics: Taking SR Linux for a spin 🔄
It took a little bit longer than anticipated, but last week it finally happened: Nokia released a public version of its SR Linux container image. That means one can now do
docker pull ghcr.io/nokia/srlinux
to get the cutting edge fabric software we’ve been playing with internally for a while. No registration, no license requests: Simply ‘pull’ and off you go.
While raw access to the image is great, I would highly recommend ContainerLab to deploy virtual network topologies. The sample configs have been updated to reference the newly released public image, allowing users to easily checkout and explore reference topologies and configurations — including multi-vendor setups. So if you’re interested in testing interop between Nokia and Juniper or Arista devices for example, you can start from there. Likewise, if you need a step-by-step walk-through of EVPN configuration: see here.
Truly open model-driven programmability — so what?
SR Linux is a fully programmable, truly open Network Operating System (NOS). This means anyone can customize it: The way the CLI works, the processes that run, the protocols that are operational. Using any programming language that runs on x86–64 Linux, users can tailor the network to their needs, and experiment in a virtual container environment. Then, once the functionality is deemed ready, it can be deployed on physical hardware — unmodified.
To illustrate the power of these concepts, consider this GitHub project with a small (~600 lines) Python based software agent. Starting from a (mostly) empty configuration which specifies the role of the system at hand (“spine”, “leaf” or “endpoint”), the code uses gNMI commands to determine and auto-configure the following items:
- router-id (from a configurable subnet range, default 1.1.0.0/22)
+ Spines: 1.1.0.x
+ Leaves: 1.1.1.x
+ Hosts: 1.1.2.x (emulated using SRL nodes) - peering links: /31 IPv4 addresses (from a configurable range)
+ Required for VXLAN v4 - (optional) OSPFv3 as IGP
- BGP peering (evpn iBGP to spine route-reflectors, v4/v6 iBGP to hosts)
+ Including required policies and flags - For leaves: a host-facing overlay VRF with VXLAN
- EVPN based multi-chassis LAGs for hosts connected to multiple leaves
All of the above is done dynamically, based on LLDP messages received from the SR Linux NDK.
LAG auto-discovery protocol
The agent implements LAG discovery using an experimental protocol based on LLDP. Upon startup, leaves temporarily modify their system name in order to communicate a discovered host:port combination to the spines. The spines, in turn, modify their hostname to announce the host to all other leaves. Since LLDP messages are sent in 30 second intervals, this process may take a while for a fully populated fabric — but eventually, things will get there.
In the above example (taken on leaf1), we can see how leaf1 is announcing ‘h1’ on its port 3 (ethernet-1/3). Both spines are currently passing on the fact that ‘h2’ is connected to port 3 on leaf2, and leaf3 is also announcing h2 on port3 — hence we have found a LAG for h2.
If this all seems rather cumbersome and not very practical for real deployments, I would agree with you. However, the point here is simply to show that it is possible to experiment with various techniques for automating fabric configuration.
For future enhancements, consider the BGP extended communities that each leaf configures based on LLDP information:
By configuring the appropriate routing policies, this information can be shared with the fabric — and leaves could similarly detect peers with matching LAG endpoints (up to 4 per LAG).
In summary: #open #empowered #fearless
With SR Linux Nokia has opened the doors to an entirely new generation of networking software. Where this will take us is entirely up to the extended community; you are fully empowered to take matters into your own hand, and build out your network using software tools that are only limited by your imagination.
Feel free to reach out with questions or suggestions for improvements — always happy to learn more.