Thoughts on SDN and Cloud
Designing a cloud computing solution is a tricky endeavor. Regardless of the size or scope of your project, you will have to account for many different variables in your design. Not the least of which is how you will handle the virtual networking piece of the puzzle. In my experience, if there is one part of the design that can be considered fundamental to success or failure, it is the underlying virtual networking solution(s) that you choose to leverage. This will be a key element in determining how fast and far your environment can scale, as well as what types of use cases you can support.
Why has “Software Defined Networking” (SDN) become such a buzz word in this industry over the last few years? Actually, let’s take this a step further and talk about the “Software Defined Datacenter” (SDDC). In SDDC, every part of your stack from compute, to storage, to networking is automated and controlled by policy and scripting. Like many of you, I have spent my entire career working in the traditional datacenter environment. I am well aware of its constraints, and I am completely behind the concept of the SDDC. I am certainly not alone here either. The shift to the SDDC is a fundamental change in the way companies operate and support IT services. It is happening in virtually every sector of this industry. You could almost consider this is a type of IT renaissance.
Now I’m sure when I mention SDDC, most of you reading this immediately think of VMware. This has been a major push in virtually all of their marketing material in recent memory. They have done an excellent job in socializing this concept. But VMware is certainly not the originator here. Places such as Google, Facebook, and Amazon adopted this concept years ago. For very good reason. Lets take a closer look at Google.
Google’s network is massive. In fact in 2010, a study by Arbor Networks concluded that:
”If Google were an ISP, it would be the fastest growing and third largest global carrier. Only two other providers (both of whom carry significant volumes of Google transit) contribute to more inter-domain traffic.”
How can you conceivably support an environment that expands at this rate? Imagine trying to build a datacenter environment that could handle even a fraction of that workload. How would you do it?
One thing becomes clear right away. You cannot be constrained by vendor-specific hardware at any part of the stack (including networking). You need to consume services at a holistic level, and on a massive scale. You cannot worry that because you chose networking vendor “A” for one part of the stack, you must also choose networking vendor “A” for another piece.
If you were able to peek inside a Google datacenter you would not see monolithic shared storage appliances, or even vendor-specific compute or networking gear. In their case, every part of this stack is custom-built for their requirements. The networking gear was custom-built because there was no solution at the time that met their needs.
The real beauty of Google’s network design is in the fact that the intelligence for the underlying network infrastructure is handled in software. It is a true SDN. Meaning that devices are configured/controlled from a centralized management plane which then sends instructions via API to a control plane. This, in turn, manages the data plane (the actual network devices). The technology that empowers Google’s SDN is OpenFlow.
Martin now works for VMware.
Lets bring this back to cloud.
Imagine, hypothetically, you are building a global hybrid cloud solution for a large multi-national fortune 100 company. You have a user base that is in the hundreds of thousands, and the use-cases are as varied as the multitude of different business groups that exist throughout the organization. To top this all off, this company (like most) is literally aching for internal cloud capabilty. The demand for cloud has reached critical mass, and there is pressure from the highest levels of the executive leadership for the IT department to provide a solution.
The environment I just described is a powder keg, and cloud will be the match. What I mean by this, is that once you enable the services your customers are requesting, it is going to mushroom. If you do not appropriately plan for this type of scalability your solution will fail. This is why I consider the underlying virtual networking design/solution to be key to success.
I had a customer recently give me the most succinct and perfect response when asked what he wanted a cloud solution to provide for him. His response is something I should put on a plaque and hang in my office. He said, “Just get IT out of my way.”
To do this, you really must be able to support an almost infinite number of varied use cases. You must do so at reasonable cost, and most importantly you must do so quickly (on-demand). As companies like Google have proven, SDN is the only feasible solution here. If we are to link this to real-world products as it stands today, that essentially means VMware NSX or something like Cisco’s ACI (soon to be released) and the Nexus 9k. I will avoid going into my opinions on either product here, my point is just that you need a solid underlying networking solution that can provide a multitude of network services, and do so on-demand at (potentially massive) scale. SDN is absolutely the answer. It’s actually why it exists.
Thanks for reading! As always, please feel free to comment.