windows can‘t start when use vhostuser interface

Bug #1770378 reported by Henry
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Expired
Undecided
Unassigned

Bug Description

I create an windows-2012 vm in openstack which use vhostuser interface for vm, the vm system can not start and stuck in boot screen.

xml config:
<interface type="vhostuser">
  <model type="virtio"/>
  <source mode="client" path="/var/run/openvswitch/vhuaf770a14-ce" type="unix"/>
</interface>

when I use bridge instead of vhostuser it works:

<interface type="bridge">
  <source bridge="virbr0"/>
  <model type="virtio"/>
  <driver name='vhost'/>
</interface>

Revision history for this message
Matt Riedemann (mriedem) wrote :

Which release of nova are you using? Which version of libvirt and qemu?

Changed in nova:
status: New → Incomplete
Revision history for this message
Matt Riedemann (mriedem) wrote :
Revision history for this message
sean mooney (sean-k-mooney) wrote :

hi o/
without additional infomation i cannot confim but i would suspect you are using
ovs compiled with dpdk 16.07 on the host and are currently encountering the issue
adressed by this patch http://dpdk.org/dev/patchwork/patch/15541/

As such i think this is likely not a nova but but rather a ovs/dpdk bug that would be resolved by
using a newer ovs.

can you provide some more info on the host such as the ovs and dpdk versions in use
and there origin. e.g. did you install from distro packages vs compile from source.

if this is the issue and upgrading ovs to use a dpdk version after 16.07 is not an option
then a qemu wrapper script such as https://github.com/openstack/networking-ovs-dpdk/blob/master/devstack/libs/ovs-dpdk#L79-L138 to expcitly disable rx mergable buffers might be an option.

you would do this by setting mrg_rxbuf=off

e.g.
cat << 'EOF' | sudo tee $KVM_CMD
#!/bin/bash -
VIRTIO_OPTIONS="mrg_rxbuf=off"
i=0
while [ $# -gt 0 ]; do
    case "$1" in
    -device)
        args[i]="$1"
        (( i++ ))
        shift
        if [[ $1 == virtio-net-pci* ]]; then
                args[i]=${1},${VIRTIO_OPTIONS}
                (( i++))
                shift
        fi
        ;;
    *)
         args[i]="$1"
         (( i++ ))
         shift ;;
    esac
done
if [ -e /usr/libexec/qemu-kvm.orig ]; then
    exec /usr/libexec/qemu-kvm.orig "${args[@]}"
elif [ -e /usr/bin/qemu-system-x86_64 ]; then
    exec /usr/bin/qemu-system-x86_64 "${args[@]}"
fi
EOF

the default qemu wrapper in networking-ovs-dpdk is for bug in ubuntu 12.04/centos 6
and has not been need since around the realease ovs 2.1/2.2 to work around bug in negociating
virtio features. if you use it as is it will disable many hardware offloads and significantly reduce performance so if you choose to use warapper as a work around i would advise testing it extensively and only disabling mergable buffers. it should also be noted that disableing mergable buffers will prevent the use of jumbo frames see: https://github.com/openvswitch/ovs/blob/6bb97140b3a9caa4e90d3f5081ffaca9f6ae9d1b/Documentation/topics/dpdk/jumbo-frames.rst
so in general i would sugges using a newer version of ovs if possible.

Revision history for this message
Henry (guanzy) wrote :

Hi,
the version info:
virsh version
Compiled against library: libvirt 1.2.17
Using library: libvirt 1.2.17
Using API: QEMU 1.2.17
Running hypervisor: QEMU 2.3.0

openstack Mitaka
nova: 13.1.1
openvswitch: openvswitch-2.6.1
dpdk: dpdk-16.07

/etc/neutron/plugins/ml2/openvswitch_agent.ini
vhostuser_socket_dir = /var/run/openvswitch
datapath_type = netdev

Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for OpenStack Compute (nova) because there has been no activity for 60 days.]

Changed in nova:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.