Howdy. In my previous post, I mentioned doing a deep dive of SONiC, the recent software release from Microsoft. So without further delay, Software for Open Networking in the Cloud, or SONiC.
What It Ain’t
I’m sure y’all might have read this FAQ, but just in case, I’ll hit the main points:
- SONiC is not a Linux Distribution
- SONiC is not going to be distributed, sold, or supported by Microsoft
- SONiC is not another FBOSS (a switch ASIC driver with control plane tools)
What it is
Now then, let’s talk about what SONiC really is. SONiC is a collection of kernel patches; platform device drivers; a Platform Abstraction Library (PAL); a switch cache database (a.k.a switch state service); and utilities to manipulate the switch cache db, access front panel ports, and pluggables. When you combine all of these pieces with a Linux distribution like Debian Jessie, y’all end up with a proper NOS.
To use an analogy, think of SONiC as a cake mix; it’s not a cake by itself, but when combined with eggs, butter/oil, and water and baked for 30 – 45 min, you end up with a nice tasty confection.
Y’all with me?
Let’s dive in further on the individual pieces, starting with the kernel patches and platform device drivers.
Kernel Patches And Device Drivers
So lots of people like to talk about NOSs with an ‘unmodified’ kernel. This is just marketing BS. I have yet to see a NOS support a given platform without any kernel modifications (direct patches or kernel modules).
The reason is simple: not all platforms have their drivers upstreamed to the Linux kernel. Without these drivers, the NOS doesn’t know how to read temperature sensors, adjust fans accordingly, regulate PSUs, or manage the front panel ports and LEDs. These are the unsung drivers that make a NOS, well…a NOS.
That’s why SONiC has three repos of patches:
- Generic Kernel Patches: Patches from Cumulus Networks and Microsoft against the Debian Jessie 3.16 kernel for proper I2C, PSU, and front panel ports (SFF 8436) (Note: Cumulus, which is my employer, didn’t provide these patches directly to Microsoft for SONiC; this is the product of Cumulus upstreaming and making their platform patches open source for all to use)
- Dell S6000 Platform Patches: Patches specific to the Dell S6000 platform
- Arista 7050 Platform Patches: Patches specific to the Arista 7050 platform
Driving The ASIC
When it comes to driving the ASIC and performing basic routing and forwarding, we have the following repos:
- SAI: Basic headers with which to build other tools (SAI driver provided by ASIC vendor)
- Switch State Service (SwSS): Database switch cache
- SyncDB: Python daemon to keep the SwSS in-sync with the hardware
- Various other utilities and libraries located here
Building SONiC On Debian Jessie
And then of course, there are the repos for actually building SONiC into a deployable state with Debian Jessie using ONIE that can be found here. As one can see, a Debian Jessie system is built with the appropriate kernel patches and utilities. When the resulting NOS is installed, there are a few containers (a la Docker) that are running SwSS/Redis, SyncDB, LLDP, PTF, SNMP, and Quagga.
Industry And Analyst Reactions
Switching gears here, I was at the Goodwill in Bellevue, WA dropping off some things we don’t need anymore after we moved from Texas last year.
While waiting for the wife to get herself some chai, I went in to see what kind of semi-old electronics I might find for some tinkering off the clock. I found an old, gently used Arista box (7050, 10G box). It still had asset tracking tags on it. I’m not a religious man, but I took this as a sign.
In the last couple of weeks, there’s been some press around SONiC, how it’s going to take over the world or displace Arista/Cisco, etc.
So I would like to take the time and go over some key articles:
- The Register: Walks the fine line of truth and sensationalism (to drive ad/clicks, web trackers, etc.)
- Investor’s Business Daily: This article, from a technical perspective, is spot on
- Business Insider: Again, another fine line of truth and sensationalism but this time throwing Cisco and VMWare into the conversation
- SDXCentral: This article starts out by using the Investor’s Business Daily article and then gets a counter-perspective with another analyst. There are a few logical disparities in it like:
- “Cloud providers for the most part, outside of Google, have their secret sauce as the control plane, which is abstracted from the actual switches…adding that this control plane is different from the operating system and is more akin to a software-defined networking (SDN) controller.” SONiC isn’t control plane logic software like SDN controllers. Microsoft didn’t abstract anything from the switch (at least, not what it has released so far).
- “There are millions of lines of code that Arista has written…It’s not in anyone’s best interest to replace that. It’s not something that could be done quickly.” Yeah, this is a standard line I hear from certain folks which is, for the most part, marketing BS they’re repeating. Let me explain:
- First, Arista wouldn’t have had to employ hundreds of employees to write millions of lines of code to re-invent various Internet protocols that already exist in the Linux kernel, which is deployed/trusted by millions all over the world, if they just used the Linux kernel’s networking stack. They have only themselves to blame for their pain. But, you know, whatever.
- Microsoft, with less than 10 FTEs, built an Arista EOS-like NOS in less than a year. That is by definition, disruption. Not only that, they did so while supporting multiple platforms and ASICs. This is something Arista doesn’t do with their ‘hundreds of employees and millions of lines of code’.
- What Microsoft demonstrated at the OCP Summit was that they are in control of their network–not their network vendors. This point was made clear by making Arista nothing more than a bare metal vendor to compete with all other bare metal vendors for their business. This is the way the industry is going and not just for the big players, but for everyone. Accept it and move on.