Cloud computing is the use of computing resources, hardware and software, that are delivered as a service over a network. The main enabling technologies for cloud computing are virtualization and self-managed or autonomic computing. Virtualization refers to the creation a virtual machine which acts like a real computer with an operating system. A host machine is the actual machine on which the virtualization takes place, and a guest machine is the virtual machine. The software or firmware that creates a virtual machine on the host machine is called a hypervisor.
Software defined networking (SDN) is an approach to building a computer network that separates and abstracts elements of the networking systems. It has become more important with the emergence of virtualization where virtual machines (VMs) may be dynamically spawned or moved, to which the network needs to quickly respond. SDN decouples the system that makes decisions about where traffic is sent (i.e., the control plane) from the system that forwards traffic to the selected destination (i.e., the data plane). OpenFlow is a communications protocol that enables the control plane to access and configure the data plane.
Recently, there have been commodity OpenFlow Ethernet switches in the market. Those switches are relatively low-cost, but they also have severe limitations in terms of the number of classification entries and the variety of classification keys. Supposedly, an OpenFlow device offers the ability of controlling the traffic by flows. The severe limitations of those switches greatly discount the ability because the number of flows that can be configured on those switches is relatively small, e.g. in thousands. Those limitations are inherent in the hardware designed and have nothing to do with OpenFlow, and OpenFlow is still good for enabling the control plane to configure the data plane. However, the assumption that the control plan can configure many (e.g. millions) of flows via OpenFlow or even any other communications protocol functionally similar to OpenFlow to the data plane may not hold. In this invention, we disclose a system and methods of using commodity switches and commodity servers to produce a load-balanced, redundant network for a computing cloud, taking into considerations the limitations of the commodity switches and the requirements of high availability.