If you have not figured it out yet, this is not your grandfather’s Microsoft. The software giant that vanquished most competition from the PC and leveraged this into a wildly profitable desktop application and server middleware and systems software businesses has been forced by circumstances to do things that it is hard to imagine the Microsoft of old doing.
Like not only supporting Linux on its Azure public cloud, but actually supporting key software like the impending SQL Server 2016 database on Linux, as the company said it would do last week, as well as creating and opening up a stack of software that it created for its Azure cloud that turns a base Linux kernel into a full-blown and cleverly designed switch operating system, which the company’s top brass unveiled at the Open Compute Summit in San Jose this week.
What is going on here? To put it bluntly, a transformation that is more dramatic than Microsoft’s embrace of Internet technologies back in 1995.
While there is no shortage of Windows Server in the datacenter – tens of millions of businesses depend upon it – and no doubt that Microsoft has done a remarkable job in three decades moving from the desktop to dominate the enterprise datacenter, the fact remains that Linux runs on somewhere between a quarter and a third of the servers in the world. And the numbers are growing. On Microsoft’s own Azure public cloud, two years ago one in five of the instances running on its Azure VMs was running Linux, and last year it was one in four and growing, as Azure CTO and Microsoft Technical Fellow Mark Russinovich told The Next Platform last fall. In certain markets – high performance computing systems for simulation and modeling, financial trading systems, and a slew of open source analytics tools created largely by hyperscalers – the servers by default run Linux because it is known, safe, and open source.
The rise of Linux has in large part made the operating system something of a commodity, but that may not be the end of it. (Being a commodity does not mean it does not have value – it just means it is pervasive and relatively inexpensive and familiar and therefore hard to substitute.) The operating system of the future could be componentized and containerized into a collection of services that we can pick and choose from in an a la carte fashion – the way we wish we could do with our cable television providers – and we will not install as a giant, monolithic hunk of code. There are millions upon millions of techies who have intimate knowledge of Linux, which is also becoming the substrate for switching and storage as well as advanced analytics programs like Hadoop and Java.
You can’t fight Linux, and therefore, it makes sense that Microsoft, as it makes the jump from the datacenter to the cloud, would selectively and thoughtfully make use of Linux as well as doing everything it can to be neutral when it comes to pitting its own Windows Server against Linux.
In some cases, Microsoft doesn’t have much of a choice but to embrace Linux.
Anyone who is interested in mastering the Linux kernel or any of its system software add-ons can do so by downloading the open source code and getting on with it. The only way to do this with Windows Server is to get a job at Microsoft. The wonder is not that Microsoft is embracing Linux, but that it took this long. This, we think, is the difference between Microsoft being a software supplier aimed at small, midrange, and some large enterprises and seeking to take out proprietary minicomputers and mainframes as well as Unix servers from the datacenter to being a hyperscaler in its own right and needed to compete against Amazon Web Services, Google, and a handful of others who have more expertise in Linux than the commercial Linux distributors. The pool of talent that other hyperscalers can pull from is much larger than the pool for Windows – Russinovich being an exception as a gadfly in Microsoft’s face for so many years, of course, and that is why he was hired by the company and is now Azure CTO.
It would be fun and exciting for Microsoft to pull an Apple and actually take its Windows interface and graft it to Linux. (MacOS is what happens when you put the Macintosh interface atop BSD Unix.) But we do not think that will happen. But there is absolutely no reason that the Azure Stack and the underpinnings of the actual Azure cloud – think of these as a distributed operating system that Microsoft is creating as the future of the corporate datacenter – could not shift from the Windows kernel to the Linux kernel very gradually and gracefully. There would have to be a compelling reason to do such a thing, and with a vast installed base of customers who are comfortable and familiar with Windows Server, this would seem to be foolish. Microsoft has embraced Linux for SQL Server so it can take on Oracle in the relational database market, where Linux is a popular platform. We think that the database market is a special case, and it will be unlikely that Microsoft will port other middleware such as Exchange Server or Sharepoint or IIS to Linux. But as we said, what great fun that might be to watch.
The use of Linux as a platform for networking is unavoidable, which is why Microsoft created its Switch Abstraction interface, which was donated to the Open Compute Project this time last year, and SONiC, which is short for Software for Open Networking in the Cloud and which it is donating to the OCP cause this year.
Because the open source application network application stack is based on Linux, the easiest thing for Microsoft to do as a hyperscaler is embrace Linux at this level of its Azure infrastructure stack. And that is precisely what it has done with the Azure Cloud Switch stack, which is comprised of SAI and SONiC and which the company previewed as a concept last September. The software developer kits for major switch ASICs run atop Linux, and the SAI layer which abstracts away the differences between these SDKs ride on top of that. The Linux user space then supports the switch state service and then a slew of other networking services. Here is how Kushagra Vaid, general manager of server engineering for Microsoft’s cloud, explained it to The Next Platform in a pretty picture:
Because of the sensitivity of the network stack to performance, the SAI abstraction layer and the SONiC layer that sits between high-level network services and those layers of abstraction (which are necessary mostly because switch ASIC makers do not open source their SDKs, by the way) are both coded in C and C++, says Vaid. By the way, SONiC is not something that Microsoft has had in use on the Azure cloud for years that it is now opening up. It started writing it after SAI was open sourced and it has been used in production for about six months.
The Azure Cloud Switch stack was developed and run on a Debian variant of Linux, the same Linux that Dell has chosen for its modular OS10 network operating system. The Linux of choice adopted by the OCP community is OpenNetLinux, contributed by Big Switch Networks, but there is no reason why Red Hat Enterprise Linux, CentOS, or another Linux could not be the basis of a stack that is based on SAI and SONiC.
By the way, Microsoft uses Ansible to manage the configuration of its switches, and that is one service on top of SONiC that Microsoft will make available. Others can bring Chef and Puppet support to the networking stack, and this is precisely what Vaid expects to happen. The core bits of SONiC that come from Microsoft and that are available on GitHub include that switch state service, platform drivers for various ASICs, SNMP monitoring, and various utilities. The stack also draws in open source elements such as Quagga routing software, Link Aggregation Group (LAG) and Link Layer Discovery Protocol (LLDP) protocols; a Redis key/value store is used to store the routing tables of the switch.
Ultimately, what Microsoft and its hyperscaler peers want are network devices where the management, data plane, and control plane of the switches and routers are separated from each other and independently scalable and adaptable. They want to be able to write their network provisioning and management software to deploy and run their networks much as their cloud controller code does for server and storage resources, and do so independently of the underlying switch ASICs and SDKs used by the switch chip makers.
But ultimately, and the best reason Microsoft is opening up the network stack it has created for the Azure public cloud, is that it wants to make the management software used on private clouds using the Azure Stack software that will be put into production later this year consistent with the Azure public cloud.
“The idea is to build this ecosystem and that will help bridge the public cloud and the enterprise, which is a big goal for Microsoft,” says Vaid. “This is why we joined the Open Compute Project in the first place, and we are the only public cloud provider who can do this. This doesn’t stop, you just keep going up the stack, one thing at a time.”
This is something that Amazon Web Services and Google cannot do. AWS does not believe in private clouds and does not have a vast base of Windows Server customers to move to private clouds or a mix of public and private clouds, and Google similarly does not have enterprise customers using its wares inside of their own datacenters. This is, and massive investments in its Azure cloud and its private mirror, is what makes Microsoft a contender in a way that other niche players will not be.