Difference between revisions of "LibvirtVIFDrivers"
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
= Libvirt VIF Driver Enhacement = | = Libvirt VIF Driver Enhacement = | ||
− | |||
The Libvirt VIF driver implementations as present in Folsom suffer from a number of problems | The Libvirt VIF driver implementations as present in Folsom suffer from a number of problems | ||
Line 17: | Line 16: | ||
* '''<code><nowiki>[[LibvirtOpenVswitchVirtualPortDriver]]([[LibvirtOpenVswitchDriver]])</nowiki></code>'''. 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. | * '''<code><nowiki>[[LibvirtOpenVswitchVirtualPortDriver]]([[LibvirtOpenVswitchDriver]])</nowiki></code>'''. 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. | ||
* '''<code><nowiki>QuantumLinuxBridgeVIFDriver(LibvirtBaseVIFDriver)</nowiki></code>'''. Connects VIFs to a Quantum created software bridge, whose name is derived from the <code><nowiki>network['id']</nowiki></code> parameter. Does not configure any network filtering. The TAP device name is set based on the VIF UUID. | * '''<code><nowiki>QuantumLinuxBridgeVIFDriver(LibvirtBaseVIFDriver)</nowiki></code>'''. Connects VIFs to a Quantum created software bridge, whose name is derived from the <code><nowiki>network['id']</nowiki></code> parameter. Does not configure any network filtering. The TAP device name is set based on the VIF UUID. | ||
+ | |||
+ | The '''<code><nowiki>[[LibvirtBridgeDriver]]</nowiki></code>''' VIF is designed to work with Nova networking. The other VIF drivers are all designed to work with Quantum networking. |
Revision as of 18:22, 3 January 2013
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.
The [[LibvirtBridgeDriver]]
VIF is designed to work with Nova networking. The other VIF drivers are all designed to work with Quantum networking.