[ovs-git] [ovn-org/ovn] c60f1a: ovn-controller: Clear flows not associated with db...
noreply at github.com
Mon Jul 27 19:29:35 UTC 2020
Author: Numan Siddique <numans at ovn.org>
Date: 2020-07-28 (Tue, 28 Jul 2020)
ovn-controller: Clear flows not associated with db rows in physical flow change handler.
The commit in the Fixes tag while handling changes for OVS interface changes and ct zone
changes, called physical_run() without clearing the flow table. This works ok for existing
flows in the flow table which are associated with ovsdb rows. physical_run() ensures that
such flows are deleted by calling ofctrl_delete_flows() by adding them back again.
But flows not associated with ovsdb rows (whose OF flow cookie is set to 0) are not cleared
at all until a full recompute is triggered. Particularly flows in table 33 which set
various conntrack zone registers still remain. Suppose a lport is claimed again and if
the ct-zone id for this lport changes, then the old flow for this lport still remains and
this causes the packet to enter the conntrack with a wrong zone id.
Such flows are stored indexed with the uuid 'hc_uuid' in the flow table and it is easy
to clear them. This patch clears such flows before calling physical_run() to fix this issue.
A more accurate fix would be to store the logical and physical flows in separate flow tables
and clear all the flows in the physical flow table before calling physical_run().
This patch is good enough for now until we implement separate flow tables.
Fixes: a3005f0dc777("ovn-controller: I-P for ct zone and OVS interface changes in flow output stage.")
Acked-by: Mark Michelson <mmichels at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>
(cherry-picked from master commit efe15a7585c7fba81516172c1eb473156a00359d)
More information about the git