Open Ethernet is based on complete separation between hardware and software, such that the same software application should be capable of running on any Open Ethernet hardware platform. There are no restrictions, however, for the nature of these applications. They can be open source, community-development applications, commercial applications, or home-grown applications.
The software interfaces the switch hardware via an abstraction layer. There are a few different options for the abstraction layer on which the software application is built: SDK, SAI and Switchdev. All three options implement a model that represents the switch ASIC in software and that exposes an API to provide the functionality to drive and control the switch.
Mellanox Onyx™ Ethernet Operating System
Mellanox Onyx (previously MLNX-OS Ethernet) is an extremely flexible and scalable switch operating system for next-generation data centers with storage, cloud, financial or media & entertainment fabrics. With built-in workflow automation, monitoring & visibility tools, enhanced high availability mechanisms, and more, Onyx simplifies network processes and workflows, increasing efficiencies and reducing operating expenses and time-to-service.
A Software Development Kit (SDK) is usually hardware vendor specific. The API it exposes may be open, but it is still proprietary. As such, software applications that are written directly on top of the SDK must be modified to comply with hardware from different vendors. A Network OS such as Cumulus Linux includes a hardware-specific adaptation layer between the application and the SDK, which allows it to be installed on different hardware.
Switch Abstraction Interface (SAI) defines a standard API that is hardware agnostic. The switch ASIC vendor implements a SAI driver for its hardware, exposing a consistent programming interface as defined by the SAI standard. This ensures that an application that is written on top of SAI can be used with different switch ASICs just by changing the SAI driver.
SAI is a user space model, usually built on top of an SDK. It is an open source project adopted by the Open Compute Project (OCP). Microsoft SONiC, Software for Open Networking in the Cloud, which powers Microsoft Azure, one of the largest clouds in the world, is built on top SAI. SONiC is fully open sourced on GitHub and is available to industrial collaborators, researchers, students, and innovators alike. As of November 2016, SAI has been also adopted by OpenSwitch, which is led by Dell and Snaproute as an open source operating system for switches.
Switchdev enables users to natively install any Linux distribution as the switch operating system and to use standard Linux tools and applications to configure the switch. The Switchdev driver mirrors the Linux network state to the switch hardware and ensures that all network traffic is seamlessly offloaded to it.
Switchdev is a 100% free open source driver that does not use any vendor’s proprietary binary blobs (as opposed to SAI, which usually uses the Switch SDK).