ubuntuopenstackkvmopenvswitchopenstack-neutron

Open vSwitch bridge in VM does not send traffic over port


I'm trying to run the Pike release OpenStack Kolla with Open vSwitch in a VM as a part of a test / dev environment. I feel like I am missing something obvious, but I just figure it out.

In the VM, Open vSwitch in a docker container.

The version in both the VM and host is:

openvswitch-switch/xenial-updates,now 2.8.1-0ubuntu0.17.10.2~cloud0 amd64 [installed] I create the bridge using:

ovs-vsctl add-br br-ex ovs-vsctl add-port br-ex ens3 ip addr flush ens3

I run the same commands on a bare-metal server and it works just fine. In the VM, the MAC address for br-ex doesn't match the MAC of the NIC. They MACs match on the bare-metal instance.

If I delete the bridge ovs-vsctl del-br then traffic flows normally through the ens3 interface.

While the bridge is active, ovs-system is listed as a capability on the nic.

ovs-vsctl show
<snip>
    Bridge br-ex
        Port "ens3"
            Interface "ens3"
        Port br-ex
            Interface br-ex
                type: internal

The main difference that I can see is that the ens3 in the VM is using the net-virtio driver. I don't see why this would make a difference.

Ubuntu 16.04.4 is the operating system for both the host and vm. Using a typical KVM, QUEMU, and libvirt setup compute nodes.


Solution

  • I still don't know why this behaves differently in a VM than on bare-metal. Setting the MAC on the bridge to match the network interface resolved this issue.

    ovs-vsctl add-br br-ex -- set bridge br-ex other-config:hwaddr=\"ff:ff:ff:ff:ff:ff\"'