LibvirtVIFDrivers
Revision as of 18:21, 3 January 2013 by DanielBerrange (talk)
Libvirt VIF Driver Enhacement
The Libvirt VIF driver implementations as present in Folsom suffer from a number of problems
- The Nova admin has to know what Quantum driver is used and configure the vif_driver to match
- Nova can only support a single VIF type for Quantum, which prevents concurrent use of different Quantum drivers with Nova
- The Nova admin is at risk of making suboptimal config choices. For example, choosing LibvirtOpenVswitchDriver instead of LibvirtOpenVswitchVirtualPortDriver for new libvirt
- The Nova admin is at risk of making nonsensical config choices. For example, choosing LibvirtOpenVswitchDriver at the same time as the Libvirt NWFilter firewall will result in non-operational firewall - they should use LibvirtHybridOVSBridgeDriver if they need firewalling to work
Current VIF Driver Impls in Folsom
As of Folsom the following VIF drivers exist
-
[[LibvirtBridgeDriver]](LibvirtBaseVIFDriver)
. Connects VIFs to a plain Linux software bridge, whose name is provided by thenetwork['bridge']
parameter. Configures filter parameters for nwfilter firewalling. Libvirt is allowed to auto-assign a TAP device name. Optionally creates the bridge device, and a VLAN device on the host. -
[[LibvirtOpenVswitchDriver]](LibvirtBaseVIFDriver)
. Connects VIFs to a OpenVSwitch bridge, whose name is set by CONF.libvirt_ovs_bridge parameter. The OVS integration is done manually and the TAP device name is based on the VIF UUID. No filter parameters are allowed. -
LibvirtHybridOVSBridgeDriver([[LibvirtBridgeDriver]], [[LibvirtOpenVswitchDriver]])
. Connects VIFS to an OpenVSwitch bride, whose name is set by the CONF.libvirt_ovs_bridge parameter. The OVS integration is done using a software bridge and pair of veth devices, to allowing nwfilter firewalling to operate. The bridge/veth device names are chosen based on the VIF UUID. Libvirt is allowed to auto-assign a TAP device name. -
[[LibvirtOpenVswitchVirtualPortDriver]]([[LibvirtOpenVswitchDriver]])
. Connects VIFs to a OpenVSwitch bridge, whose name is set by CONF.libvirt_ovs_bridge parameter. The OVS integration is done by libvirt and it is allowed to auto-assign a TAP device name. No filter parameters are allowed. -
QuantumLinuxBridgeVIFDriver(LibvirtBaseVIFDriver)
. Connects VIFs to a Quantum created software bridge, whose name is derived from thenetwork['id']
parameter. Does not configure any network filtering. The TAP device name is set based on the VIF UUID.