TBD, see "Outstanding questions" below
The proposed CloudStack networking plugin will bring the MidoNet network virtualization technology to CloudStack.
This is a functional specification of the MidoNet Network Plugin, which has Jira ID 996
External link describing the MidoNet SDN solution: http://www.midokura.com/midonet/
Date |
Revision |
Author |
Description of the change |
---|---|---|---|
1/21/2013 |
0.1 |
Dave Cahill |
Initial Draft |
Term |
Definition |
---|---|
CS |
CloudStack |
For the MidoNet plugin, we plan to support the following network model / service combinations:
1. Advanced Isolated network mode:
2. VPC network mode:
3. Basic network mode:
The initial implementation targets the KVM hypervisor.
The intended use case is for all routing etc to be handled in the MidoNet virtual network - no Virtual Router VMs need to be spun up. This eliminates the bottleneck at the Virtual Router, as routing in MidoNet is handled at the edge (in the hypervisor).
MidoNet is an overlay network solution, with MidoNet agents running on each host to form a mesh of GRE tunnels among the hosts. It stores the network state in distributed storage, and provides a REST API to manage the virtual network resources. MidoNet implements L2, L3 and basic L4 functionality.
The MidoNet networking plugin functions as a REST client to the MidoNet API server. A running instance of the MidoNet API server is required in order to test the plugin's functionality.
The following tests should be verified before declaring the feature complete:
There won't be any change to the existing CloudStack workflow. Of course, a NetworkOffering will need to be created with MidoNet set as the Provider for the relevant capabilities.
When a guest network is created, the plugin will create the logical topology in MidoNet by making REST calls to the MidoNet API.
When a guest VM is launched, the VIF driver on the host automatically assigns the VM to its configured guest network(s) and plugs the VM into the MidoNet datapath. MidoNet provides network isolation and connectivity among VMs, routing functions, Static Nat, Source NAT etc.
A MidoNet networking plugin will be developed to add MidoNet network virtualization into CloudStack.
We will implement a MidoNetGuestNetworkGuru (for Guest Traffic), and a MidoNetElement. We will also create a VIF Driver for plugging VMs into the MidoNet datapath on the Host in KVM.
The Capability / Networking mode combinations to be supported by the MidoNet plugin are listed in the "Feature Summary" section above.
Two new configuration parameters to be added to global settings (Config.java):
midonet.apiserver.address
The address of the MidoNet REST API server.
midonet.providerrouter.id
In a MidoNet / CloudStack deployment, guest network routers connect to an uplink router in the logical network. This configuration parameter is the identifier for the uplink router, and facilitates creating the logical uplink connection.
A new NetworkDevice called Midonet will be added (ExternalNetworkDeviceManager.java)
A new isolation type MIDO will be added (PhysicalNetwork.java)
A BroadcastDomainType Mido will be added (Networks.java)
None.
No change.
None.