Difference between revisions of "LibvirtVIFDrivers"
Line 14: | Line 14: | ||
* '''<code><nowiki>[[LibvirtBridgeDriver]](LibvirtBaseVIFDriver)</nowiki></code>'''. Connects VIFs to a plain Linux software bridge, whose name is provided by the <code><nowiki>network['bridge']</nowiki></code> 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. | * '''<code><nowiki>[[LibvirtBridgeDriver]](LibvirtBaseVIFDriver)</nowiki></code>'''. Connects VIFs to a plain Linux software bridge, whose name is provided by the <code><nowiki>network['bridge']</nowiki></code> 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. | ||
* '''<code><nowiki>[[LibvirtOpenVswitchDriver]](LibvirtBaseVIFDriver)</nowiki></code>'''. 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. | * '''<code><nowiki>[[LibvirtOpenVswitchDriver]](LibvirtBaseVIFDriver)</nowiki></code>'''. 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. | ||
− | * '''<code><nowiki>LibvirtHybridOVSBridgeDriver([[LibvirtBridgeDriver]], [[LibvirtOpenVswitchDriver]])</nowiki></code>'''. 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. | + | * '''<code><nowiki>LibvirtHybridOVSBridgeDriver([[LibvirtBridgeDriver]], [[LibvirtOpenVswitchDriver]])</nowiki></code>'''. 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. |
* '''<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. | + | * '''<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. |
Revision as of 18:21, 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.