Comment 2 for bug 1630920

Revision history for this message
Bence Romsics (bence-romsics) wrote :

My original reason for opening this ticket was probably better described in the other ticket, let me try to explain better.

One place where we actually use the 'other_config' field is this openvswitch firewall rule:

table=0, priority=90,dl_dst=fa:16:3e:8a:48:37 actions=load:0x4b->NXM_NX_REG5[],load:0xfff->NXM_NX_REG6[],resubmit(,81)

Here we load the value 0xfff into register 6. But this only happens with the native driver. Using the vsctl driver we would store the port's actual vlan tag into reg6. The below code place shows the reason for this difference is the lack of 'other_config':

https://github.com/openstack/neutron/blob/3ade301/neutron/agent/linux/openvswitch_firewall/firewall.py#L257

Here's the same rule (with a different reg6 value) from the ovs firewall devref.
http://docs.openstack.org/developer/neutron/devref/openvswitch_firewall.html:

table=0, priority=90,dl_dst=fa:16:3e:a4:22:10 actions=load:0x1->NXM_NX_REG5[],load:0x284->NXM_NX_REG6[],resubmit(,81)

The registers will be used to set up conntrack zones. So I think if we don't have 'other_config' we may end up using the same conntrack zone for traffic that should be conntracked in different conntrack zones. That's quite an arcane error, but looks real.

Also please notice that some of the 'Transaction caused no change' messages come back in reaction to this:

DbSetCommand(table=Port, col_values=(('other_config', {'tag': 1}),), record=tap8e2a390d-63)

If that DbSetCommand caused no change because other_config was already set before, we still should see other_config filled in the output of:

sudo ovs-vsctl list Port | grep other_config

But in my devstack I never see non-empty other_config with the native driver.