For a good part of the last decade, one could be forgiven for thinking that the field of networking was on the verge of getting left behind, as all the attention focused on the development of networked applications. Whether it was Google, providing the world with Web search, monetized advertising, and a host of applications, or Facebook providing both a social networking application and a platform for third party applications, or Amazon providing IaaS and basically creating the Cloud Computing business - everything interesting seemed to be happening outside the "core" of networking. Networks continued to be important – you need to be able to access all those services provided by Google, Amazon, etc. – but they seemed destined to be the boring "plumbing" while all the cool innovation went on in the data centers.
The point at which I began to believe that there was still hope for the field of networking was when I saw Scott Shenker's talk "The Future of Networking, The Past of Protocols". Although the Software-Defined Networking hype machine was already in full swing by this point, Scott's talk distilled the critical element of SDN that I now view as fundamental: the fact that you can separate the topology of the network control plane from that of the data plane. This does not, as is often claimed, equate to centralizing the control plane - what it means is that you get to design the control plane independently from the topology of the data plane.
One of the most immediate consequences of this freedom from the data plane topology is that the technologies that have been developed for large scale applications can now be used to develop networking control planes. Rather than designing the networking control plane to run on widely distributed nodes of varying capabilities connected over high-latency, lossy links, you can build the control plane using a tightly coupled cluster of high-performance servers sitting next to each other in a data center. In other words, all the innovations that have been going on in the development of large scale applications for the last decade or so can now be applied to networking.
There are lots of things you can do with this model. As everyone in the networking world now knows, Google applied this approach to build a traffic engineering solution for their inter-data center network. The idea that you could get better traffic engineering solutions from centralized algorithms has been known for a long time, but the implementation using a fault-tolerant cluster of servers leveraged the technologies of the applications world to solve an old networking problem.
At Nicira, we're tackling the problem space of network virtualization using this same idea of control- and data-plane decoupling. The data plane topology that we deal with is the Open vSwitch instances running in hypervisors, and the tunnels that interconnect them. Our control plane is decoupled from that topology, and runs on a fault-tolerant, scale-out cluster of servers. That is what enables us to manage the large amount of state that arises when you create thousands of virtual networks in multi-tenant data centers. Managing that state is no small task – not only is there a lot of it, due to the scale of these data centers, but it also needs to be kept consistent in the face of configuration changes, VM migration, etc. Control plane decoupling also enables us to expose a single point of control to cloud management systems, which is critical to providing the programmatic control of networking services that is expected by the operators of these data centers. And finally, we get to leverage the work of the large-scale applications community, including large bodies of open source software. There is a pleasant symmetry to that: networking enabled the rise of networked applications, and now the technologies from those applications feed back into networking. I think we're just beginning to see the benefits of that virtuous cycle.