Self-organizing #EVPN fabrics: Taking SR Linux for a spin 🔄

Jeroen Van Bemmel
4 min readAug 2, 2021

--

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.

Deployed EVPN lab based on https://github.com/jbemmel/srl-self-organizing

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.

Auto-config agent YANG model parameters

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.

LLDP based LAG auto-discovery in action

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:

Extended communities encoding hosts discovered through LLDP (4 MAC octets:port)

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).

Automatic EVPN-backed LAG configuration on leaf2
Summary of the auto-configured fabric
Ping from h2 to VIP at h1

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.

--

--

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.

No responses yet