[ovs-dev] [PATCH ovn] binding: Set Port_Binding.up only if supported.

Numan Siddique numans at ovn.org
Wed Feb 3 12:25:16 UTC 2021


On Wed, Feb 3, 2021 at 5:43 PM Dumitru Ceara <dceara at redhat.com> wrote:
>
> On 2/3/21 12:06 PM, Numan Siddique wrote:
> > On Tue, Feb 2, 2021 at 3:15 PM Dumitru Ceara <dceara at 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 <numans at ovn.org>
> >> Fixes: 4d3cb42b076b ("binding: Set Logical_Switch_Port.up when all OVS flows are installed.")
> >> Signed-off-by: Dumitru Ceara <dceara at 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?

This sounds fine to me.

Thanks
Numan

>
> Thanks,
> Dumitru
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list