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: