You realize that it is time to get a new car. You go to the local dealer and look around. You spot the car you want, and it meets your budget. You take a look at the list of features you wrote down at home, and you check each and every one of them.
A salesperson approaches you and asks: “How may I help you?”
You say: “I like this one, is it possible to take it to a test drive?”
The salesperson says: “Of course, may I see your driver’s license?” You hand him your license.
He takes a look and says: “I’m sorry, but you will need to take additional driving lessons to drive this model.”
“What? I don’t mind reading the owner’s manual, but why driving lessons? This is a car, not a school bus!”
Obviously, each car make and model is different, but they share so much of their functionality, that you can change from one make and model to another almost instantly. If that wasn’t the case, we would all be forced to buy the same model again and again.
So why not in Ethernet switching?
The Ethernet switch industry faces a similar conflict. In the heart of almost every Ethernet switch you would find a switching ASIC, and while every ASIC is different, they share a lot of functionality. So yes, you should read the manual to operate them correctly, but why do you need driving lessons to use an ASIC from another manufacturer?
The Open Compute Project (OCP) community has decided to try and address this by defining a common API layer, and specify them as Switch Abstraction Interface, or SAI. By utilizing the generic interface provided by SAI as a common interface, applications and protocol stacks can operate seamlessly over any compatible switching hardware platform.
SAI, which will become an open specification, is co-authored by system and silicon vendors and lists the API to drive most of the common functionality an Ethernet switch ASICs, such as initialization flow, port management, data forwarding, switching and routing modes, quality of service, forwarding rules (ACL) and others. Since every ASIC is different, SAI supports vendor specific functionality.
Mellanox sees SAI as part of its Open Ethernet initiative and delivers SAI as an integral part of its OCP-compliant switch systems and contributes to the specification, in the same way that we take an active part in other OCP areas and Open Source community projects. Mellanox Open Ethernet customers can choose if to interface SAI or the SwitchX SDK API, as both are available. Being committed to open source, the SwitchX SDK API is the only such API that is available as open source to anyone in the community.
In the OCP Summit, taking place in March 2015, the Mellanox Open Ethernet switch system is integrated into a SAI demo, which is organized by Microsoft. The demo includes switch systems from Mellanox and Dell, and switch operating systems from Microsoft and Dell that exercise the SAI APIs in the respective hardware.
Mellanox is involved and contributes to other open source projects, such as OpenStack, ONIE, Open MLAG and others, and already contributed certain adaptor applications to the open source community. Mellanox is also a leading member and contributor of the Open Compute Project, where it provides NICs, switches and software.
SwitchX SDK open API: https://github.com/Mellanox/SwitchX-interfaces
SAI on the OCP website: http://www.opencompute.org/wiki/Networking/SpecsAndDesigns#Switch_Abstraction_Interface