The Switch Abstraction Interface (SAI) team at Microsoft is excited to announce that we will showcase our first implementations
of the specification at the Open Compute Project Summit,
which kicks off today at the San Jose Convention Center.
Open Compute Project
(OCP) is a community that via open collaboration focusses on developing the most efficient computing infrastructure possible encompassing both hardware and software. In January 2014, Microsoft announced that it will be joining the OCP community with the Open Cloud Server (OCS) specification on the hardware side.
We are thrilled to showcase SAI as one of our latest contributions to the OCP. Microsoft has been a driving factor on the software side, along with several industry contributors, in contributing SAI to the OCP. SAI is a specification by the OCP that provides a consistent programming interface for common networking functions implemented by network switch ASIC’s
. In addition, SAI allows network switch vendors to continue to build innovative features through extensions.
Why do networks need SAI?
Today in our production networks, we deploy a multitude of vendors across many layers, whether ASIC manufacturers or switch vendors. The reality is that something as basic as getting switches to forward packets requires undifferentiated work - be it basic Access Control List (ACL) rules, managing the Routing Information Base (RIB), programming chips, and managing its Forwarding Information Base (FIB). Even basic routing protocols are now all undifferentiated work. Yet, the underlying complexity of the hardware, and the strict coupling of protocol stack software to the hardware, denies us the freedom to pick and choose the combination of hardware and software that is the best suited for our networking needs.
SAI allows software to program many different switch chips without undergoing any changes. This helps us to keep the base router platform simple, consistent, and stable. It also reduces the time to market, and enables the adoption of the latest available hardware easily. It breaks the software-hardware coupling and allows us to cherry pick the best fit of software and hardware on a “need by application” or a “need by network basis”. By providing simple, consistent interfaces for applications and protocol stacks that orchestrate and automate cloud services, it helps consume the underlying complex and heterogeneous hardware easily. This helps in shifting our focus to applications that require integrating our network with our cloud. SAI is, therefore, a big step towards open networking software.
Additionally, SDKs are APIs commonly written in simple C like functions enabling the applications/protocol stack access to the switching ASIC. However, different switching vendors will have different SDKs serving as a wrapper for their proprietary algorithms. SAI is not just another SDK wrapper but a standardized API.
A standardized API allows network hardware vendors to develop innovative hardware architectures to achieve great speeds while keeping the programming interface consistent. As new hardware functions are exposed, hardware vendors can introduce extensions to the API. Revisions to the baseline standard could occur. This would introduce change at the hardware programming level, but this change would be much less frequent than today as it would only be required for functional changes, not simply implementation differences.
Working with the Community to Build SAI
Starting off we had three main goals:
- The ability to develop SAI on different vendor platforms.
- Demonstrate the ease of implementation of a Layer 3 IP router
- To deploy a SAI implementation in an operator’s network.
It’s been great to see tremendous support from several industry contributors to the SAI v0.92. Contributions to the OCP community for the SAI initiative are submitted as proposals to the OCP Networking SAI github repository.
Following a proposal submission, are discussions on the OCP mailing list further defining the proposal. Eventually the code is also submitted to a github repository
. The SAI v0.92 introduces numerous proposals including:
- Access Control Lists (ACL)
- Equal Cost Multi Path (ECMP)
- Forwarding Data Base (FDB, MAC address table)
- Host Interface
- Neighbor database, Next hop and next hop groups
- Port management
- Quality of Service (QoS)
- Route, router, and router interfaces
See SAI in Action at OCP Summit
Our SAI demo at OCP will showcase four different SAI applications on different platforms from Dell, Mellanox, Broadcom, and Microsoft, each of who play a different role in the networking industry: from switching vendors to ASIC manufacturers to operators. The demo will be focused on a real use case of the clos topology we use in our production networks. The main goal is to demonstrate the goodness of a SAI implementation, as a generic common interface, can have on how applications and protocol stacks operate seamlessly over any switching hardware platform that also implements SAI.
Having come this far, we are excited to see the industry’s enthusiasm on the SAI effort. Going forward, we expect to see (and welcome) collaboration from the industry. As this gathers momentum, we hope to see not only more contributors, but adopters as well.
We also hope to see you at the show. Please drop by Booth #B2
to learn more about SAI as well as a number of other exciting announcements, or follow the Microsoft OCP Summit experience at @MSCloud.