On 2/3/21 12:06 PM, Numan Siddique wrote:
On Tue, Feb 2, 2021 at 3:15 PM Dumitru Ceara <dce...@redhat.com> wrote:

The supported upgrade procedure is to always upgrade ovn-controllers
first and OVN DBs and ovn-northd later.  This leads however to the
situation when ovn-controller might try to set the Port_Binding.up field
while the Southbound DB isn't yet aware of this field which would
trigger transaction failures and control plane/data plane outages.

To avoid such situations ovn-controller only sets the Port_Binding.up
field if it was explicitly set to 'false'.  This ensures that the SB
database was already upgraded.

On the ovn-northd side, as soon as ovn-northd is upgraded it will update
all existing Port_Bindings and explicitly set 'Port_Binding.up' to
false, implicitly notifying ovn-controller that it is safe to write to
the field.

Reported-by: Numan Siddique <num...@ovn.org>
Fixes: 4d3cb42b076b ("binding: Set Logical_Switch_Port.up when all OVS flows are 
installed.")
Signed-off-by: Dumitru Ceara <dce...@redhat.com>


Thanks Dumitru for addressing this issue.

Thanks for the review!


I see a problem with the approach taken here when the central nodes
are upgraded first.

I do understand that OVN recommends updating/upgrading ovn-controllers
first. But from
what I have seen, Openstack tripleo (and possibly Openshift too)
update the central nodes
first.

Suppose if ovn-northd and DBs are upgraded first, then after this
patch, ovn-northd sets
the logical_switch_port.up to 'down' for all the logical ports until
the ovn-controllers are
upgraded. This could cause some control plane issues. Like Openstack
neutron may notify
Nova service of vif-unplugged events. We could see this issue even if
ovn-controllers are configured
with - "ovn-match-northd-version=true".

Another approach to solve this problem would be - ovn-controller will
not set the port_binding.up
to true if the internal version in SB DB is lesser than the version in
which this new column - port_binding.up
was added.

What do you think ?


An alternative is to add a "features" column to SB.Chassis. Newer ovn-controllers could register there that they support a specific feature, e.g., "port-up-notification".

In northd we could check the feature support for chassis that claimed a port binding and based on that take into account Port_Binding.up when setting LSP.up.

Does this sound ok?

Thanks,
Dumitru

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to