Microsoft’s recent love affair with open source programming is getting into high gear these days. Aside from all the Windows related work various teams have been putting forth in the open source community, it looks like Microsoft is extending its efforts into Linux-based operating systems.
Principal Architect of Azure Networking, Kamala Subramaniam recently discussed Microsoft’s new Azure Cloud Switch, which works as a sort of cross-platform OS Microsoft built that could network with data centers built on Linux.
The Azure Cloud Switch (ACS) is our foray into building our own software for running network devices like switches. It is a cross-platform modular operating system for data center networking built on Linux. ACS allows us to debug, fix, and test software bugs much faster. It also allows us the flexibility to scale down the software and develop features that are required for our datacenter and our networking needs.”
Microsoft’s vertical integration of its ACS also includes a solution for sharing the same software stack across hardware from multiple switch vendors. Microsoft’s Switch Abstraction Interface (SAI) specification, “is the first open-standard C API for programming network switching ASICs, of the Open Compute Project (OCP),” according to Kamala.
Microsoft is also seeing the benefits of ACS as it pertains to easier configuration and management as well as open networking.
While it’s being reported that ACS is for internal use only at Microsoft, the company is contributing its code for ACS to the Open Computer Project. Meaning, those interested my eventually benefit from some of the following work:
- Applications: These include open source applications such as Quagga, Microsoft specific applications that could relate to an entire configuration management system like Autopilot or a feature like SWAN, and also third party applications.
- Switch State Service (SSS): The SSS is a subset of the global network state. It helps in driving the switch towards its goal state. It avails open source key-value pair stores like Redis to manage all switch states requirements. Having a database layer which is also a SAI object management sublayer helps in the object sharing and dependency among different applications. The database is modular and provides application with a view of the states.
- SAI: Before SAI, the underlying complexity of the hardware, with its strict coupling of protocol stack software, denied us the freedom to choose the best combination of hardware and software for our networking needs. SAI allows software to program multiple switch chips without any changes, thus making the base router platform simple, consistent, and stable. A standardized API also allows network hardware vendors to develop innovative hardware architectures to achieve great speeds while keeping the programming interface consistent. Additionally, SAI also enables open and easier software development of features, stacks, and applications. As of July 2015, SAI has been officially accepted into the Open Compute Project (OCP). Read more about it here.
- Vendor provided hardware and software: This comprises of the actual ASICs, its drivers, the software development kit (SDKs) which talk northbound to the SAI.
Again, this isn’t a product up for sale from Microsoft or even being widely distributed. However, it seems like Microsoft’s continued foray into open source programming is having positive results on the company’s future development.Further reading: ACS, Azure, Cloud, Linux, Microsoft, Open Source