Today, all but the simplest applications consist of multiple virtual machines. These machines communicate with each other over an IP network, and provide a service together. The configuration of the network, which includes things such as host names, IP address and firewall rules, is an essential part of an application’s configuration. Change the network, and your application stops working.
In the public cloud however, the network is very different from what it is in the datacenter. For example, static IP addresses are usually not available, IP addresses might change across restarts, and broadcast/multicasting usually does not work.
Ravello allows you to run existing multi-VM applications unmodified in the cloud, not just single virtual machines. To make this possible, we provide a software-defined network that virtualizes the connectivity between the virtual machines in an application. The virtual network is completely user-defined and can include multiple subnets, routers, and supplemental services such as DHCP, DNS servers and firewalls. The virtual network can be made to look exactly like a datacenter network. You can even create your own network elements by uploading virtual appliances that implement the desired function. For example, this way you can implement load balancing appliances and L2/L3 site-to-site or access VPN endpoints.
The data plane of the virtual network is formed by a virtual switch software component that resides within HVX. Network packets that are sent by a VM are intercepted and injected into the switch. The switch operates very similar to a regular network switch. For each virtual network device, the virtual switch creates a virtual port that handles incoming and outgoing packets from the connected virtual NIC device. The virtual port learns MAC addresses of incoming packets and builds a forwarding table based on this. For broadcast frames, the virtual port floods the packet to all other distributed virtual ports in the same broadcast domain. The transport between ports is done using either a local transport (in case the ports are on the same switch), or using P2P tunnels over UDP.
The control plane of our software-defined network includes a distributed router and also distributed DNS and DHCP servers. Each service is located at every HVX node.