Jump to: navigation, search

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 the network['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 the network['id'] parameter. Does not configure any network filtering. The TAP device name is set based on the VIF UUID.