[ovs-dev] [PATCH] ovn-northd: Fix ARP respond flows flapping.

Han Zhou zhouhan at gmail.com
Thu Jul 25 23:03:12 UTC 2019

From: Han Zhou <hzhou8 at ebay.com>

>From ovn-controller debug log it is seen that when creating a lsp
in NB, a lflow for ARP respond is added and then deleted in SB
by northd (the flow will be added again when the port is bound
to a chassis). This causes unnecessary handling from ovn-controller.

The root cause is lsp_is_up() returns true when the column is not
set, when the lsp is just created. So northd adds the ARP respond
flow in SB lflow table. At the same time it will create port-binding
in SB without chassis binding. Then in the next iteration northd
will process that port-binding change and notice that there is no
chassis binding for this lsp, so it will set the "up" to false,
which causes northd to delete the ARP respond flow.

The fix is to make sure when "up" is not set, it is regarded as
false by default.

Signed-off-by: Han Zhou <hzhou8 at ebay.com>
 ovn/northd/ovn-northd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index eb6c47c..212aa88 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -3495,7 +3495,7 @@ lsp_is_enabled(const struct nbrec_logical_switch_port *lsp)
 static bool
 lsp_is_up(const struct nbrec_logical_switch_port *lsp)
-    return !lsp->up || *lsp->up;
+    return lsp->up && *lsp->up;
 static bool

More information about the dev mailing list