← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1686206] [NEW] VM fails to boot with trunk port attached when using OVS-DPDK

 

Public bug reported:

Nova fails to boot a VM with Neutron trunk port (vlan-aware-vms; [1])
attached if running with DPDK-enabled OVS (i.e. networking-ovs-dpdk
devstack plugin).

n-cpu.log (attached) shows an attempt to use os-vif with "No conversion
for VIF type vhostuser" message reported by nova.network.os_vif_util.
That causes Nova to fallback to 'Legacy non-os-vif codepath' [2] which
fails with "ovs-vsctl: no bridge named tbr-%s" error. That is because
'Legacy non-os-vif codepath' does not include the 'ensure_ovs_bridge'
functionality present in os-vif (e.g. [3]) that Neutron trunk port
support relies upon.


The issue was reproduced using (stable/newton) devstack with local.conf from [4] and OVS firewall_driver and trunk service_plugin enabled:

[[post-config|/$Q_PLUGIN_CONF_FILE]]
[securitygroup]
firewall_driver=openvswitch
[[post-config|$NEUTRON_CONF]]
[DEFAULT]
service_plugins=neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,trunk

To reproduce the issue, create a trunk port [1] and boot a VM using that port (port0):
openstack network create net0
openstack network create net1
openstack network create net2
openstack subnet create --network net0 --subnet-range 10.0.4.0/24 subnet0
openstack subnet create --network net1 --subnet-range 10.0.5.0/24 subnet1
openstack subnet create --network net2 --subnet-range 10.0.6.0/24 subnet2

openstack port create --network net0 port0
openstack port create --network net1 port1
openstack port create --network net2 port2
openstack network trunk create --parent-port port0 \
  --subport port=port1,segmentation-type=vlan,segmentation-id=101 \
  --subport port=port2,segmentation-type=vlan,segmentation-id=102 \
  trunk0


[1] https://wiki.openstack.org/wiki/Neutron/TrunkPort#CLI_usage_example
[2] https://github.com/openstack/nova/blob/stable/newton/nova/virt/libvirt/vif.py#L819-L832
[3] https://github.com/openstack/os-vif/blob/stable/newton/vif_plug_ovs/ovs.py#L84
[4] https://github.com/openstack/networking-ovs-dpdk/blob/master/doc/source/_downloads/local.conf.single_node

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: dpdk trunk

** Attachment added: "n-cpu.log"
   https://bugs.launchpad.net/bugs/1686206/+attachment/4867951/+files/n-cpu.log

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1686206

Title:
  VM fails to boot with trunk port attached when using OVS-DPDK

Status in OpenStack Compute (nova):
  New

Bug description:
  Nova fails to boot a VM with Neutron trunk port (vlan-aware-vms; [1])
  attached if running with DPDK-enabled OVS (i.e. networking-ovs-dpdk
  devstack plugin).

  n-cpu.log (attached) shows an attempt to use os-vif with "No
  conversion for VIF type vhostuser" message reported by
  nova.network.os_vif_util. That causes Nova to fallback to 'Legacy non-
  os-vif codepath' [2] which fails with "ovs-vsctl: no bridge named
  tbr-%s" error. That is because 'Legacy non-os-vif codepath' does not
  include the 'ensure_ovs_bridge' functionality present in os-vif (e.g.
  [3]) that Neutron trunk port support relies upon.

  
  The issue was reproduced using (stable/newton) devstack with local.conf from [4] and OVS firewall_driver and trunk service_plugin enabled:

  [[post-config|/$Q_PLUGIN_CONF_FILE]]
  [securitygroup]
  firewall_driver=openvswitch
  [[post-config|$NEUTRON_CONF]]
  [DEFAULT]
  service_plugins=neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,trunk

  To reproduce the issue, create a trunk port [1] and boot a VM using that port (port0):
  openstack network create net0
  openstack network create net1
  openstack network create net2
  openstack subnet create --network net0 --subnet-range 10.0.4.0/24 subnet0
  openstack subnet create --network net1 --subnet-range 10.0.5.0/24 subnet1
  openstack subnet create --network net2 --subnet-range 10.0.6.0/24 subnet2

  openstack port create --network net0 port0
  openstack port create --network net1 port1
  openstack port create --network net2 port2
  openstack network trunk create --parent-port port0 \
    --subport port=port1,segmentation-type=vlan,segmentation-id=101 \
    --subport port=port2,segmentation-type=vlan,segmentation-id=102 \
    trunk0

  
  [1] https://wiki.openstack.org/wiki/Neutron/TrunkPort#CLI_usage_example
  [2] https://github.com/openstack/nova/blob/stable/newton/nova/virt/libvirt/vif.py#L819-L832
  [3] https://github.com/openstack/os-vif/blob/stable/newton/vif_plug_ovs/ovs.py#L84
  [4] https://github.com/openstack/networking-ovs-dpdk/blob/master/doc/source/_downloads/local.conf.single_node

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1686206/+subscriptions