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':
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:
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. docs.openstack. org/developer/ neutron/ devref/ openvswitch_ firewall. html:
http://
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.