In the networking world, there exist a multitude of vendor proprietary Software Development Kits, that expose an API to the user of that type of ASIC that allows them to program the chipset according to their needs and application.
ASIC vendors are understandably concerned about disclosing the internal workings of their chipsets, and associated intellectual property. These SDK's are most often protected by strict Non Disclosure Agreements (NDAs), which prohibit distributing code written against these API's.
The chipset vendors realized that this is not a way forward in the world of open networking, and started to develop a (still proprietary) open API on top of their internal SDK API, which is openly published. Code written against this layer can be published and shared, which is substantial for developing an open community working together on networking solutions. Examples for this approach are OpenNSL and OF-DPA from Broadcom, or OpenEthernet by Mellanox.
While this approach also solves some of the problems, it still does not allow to develop software running across different hardware platforms, as they expose different APIs. In this situation, the OCP stepped forward and developed SAI, a set of APIs that now is implemented identically on different platforms, and allows that code written against SAI on platform A will work on platform B, as long as B also supports SAI.
Companies supporting SAI are for example: Barefoot Networks: Tofino, Broadcom Limited: Trident and Tomahawk, Cavium: XPliant, Centec Networks: Goldengate, Mellanox Technologies: Spectrum, Marvell Technology Group Ltd.: Prestera, Nephos Inc: Taurus, Microsoft, Dell, Big Switch Networks.
As already mentioned, SAI is a collection of APIs, covering different feature groups on a device:
As you can see there are mandatory parts, optional parts and even vendor specific APIs can be included. So when purchasing a hardware platform supporting SAI, it is very important that eventually needed optional or vendor specific parts are supported on the selected platform.
More details regarding these APIs can be found in the SAI spec file.
The development of SAI is still ongoing, currently the following participants are working on additional functionallity to be included in SAI: