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.
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\"'