From 4f86a19420b4d146f0e14309205146d9a7ad2dbe Mon Sep 17 00:00:00 2001 From: Frode Nordahl Date: Thu, 8 Feb 2024 09:48:12 +0100 Subject: [PATCH ovn branch-22.09] controller: Set check_tnl_key for BFD on tunnel ifaces. The OVS BFD configuration option `check_tnl_key` controls whether OVS should consider the tunnel key before processing BFD control messages. The OVN pipeline design ensures traffic originating from a logical port will have a non-zero tunnel key. Always set `check_tnl_key` to "true" to avoid processing of BFD control messages originating from a logical port. Signed-off-by: Frode Nordahl Signed-off-by: Dumitru Ceara --- controller/bfd.c | 3 +++ tests/ovn.at | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/controller/bfd.c b/controller/bfd.c index cf011e382..f47333191 100644 --- a/controller/bfd.c +++ b/controller/bfd.c @@ -235,6 +235,9 @@ bfd_run(const struct ovsrec_interface_table *interface_table, if (mult) { smap_add(&bfd, "mult", mult); } + /* `check_tnl_key` must always be set to "true" to avoid processing of + * BFD control messages originating from a logical port. */ + smap_add(&bfd, "check_tnl_key", "true"); } /* Enable or disable bfd */ diff --git a/tests/ovn.at b/tests/ovn.at index d3fc17f4f..36f90dce2 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -13260,7 +13260,7 @@ as gw1 for chassis in gw2 hv1 hv2; do echo "checking gw1 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done @@ -13270,7 +13270,7 @@ as gw2 for chassis in gw1 hv1 hv2; do echo "checking gw2 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done @@ -13279,7 +13279,7 @@ as hv1 for chassis in gw1 gw2; do echo "checking hv1 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done # make sure BFD is not enabled to hv2, we don't need it @@ -13293,7 +13293,7 @@ as hv2 for chassis in gw1 gw2; do echo "checking hv2 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done # make sure BFD is not enabled to hv1, we don't need it @@ -13333,7 +13333,7 @@ for chassis in gw1 hv1 hv2; do echo "checking gw2 -> $chassis" OVS_WAIT_UNTIL([ bfd_cfg=$(ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0) - test "$bfd_cfg" = "enable=true min_rx=2000" + test "$bfd_cfg" = "check_tnl_key=true enable=true min_rx=2000" ]) done ovn-nbctl --wait=hv set NB_Global . options:"bfd-min-tx"=1500 @@ -13341,7 +13341,7 @@ for chassis in gw1 hv1 hv2; do echo "checking gw2 -> $chassis" OVS_WAIT_UNTIL([ bfd_cfg=$(ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0) - test "$bfd_cfg" = "enable=true min_rx=2000 min_tx=1500" + test "$bfd_cfg" = "check_tnl_key=true enable=true min_rx=2000 min_tx=1500" ]) done ovn-nbctl remove NB_Global . options "bfd-min-rx" @@ -13350,7 +13350,7 @@ for chassis in gw1 hv1 hv2; do echo "checking gw2 -> $chassis" OVS_WAIT_UNTIL([ bfd_cfg=$(ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0) - test "$bfd_cfg" = "enable=true min_tx=1500 mult=15" + test "$bfd_cfg" = "check_tnl_key=true enable=true min_tx=1500 mult=15" ]) done @@ -13486,7 +13486,7 @@ as gw1 for chassis in gw2 hv1 hv2; do echo "checking gw1 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done @@ -13495,7 +13495,7 @@ as gw2 for chassis in gw1 hv1 hv2; do echo "checking gw2 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done @@ -13504,7 +13504,7 @@ as hv1 for chassis in gw1 gw2; do echo "checking hv1 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done # make sure BFD is not enabled to hv2, we don't need it @@ -13517,7 +13517,7 @@ as hv2 for chassis in gw1 gw2; do echo "checking hv2 -> $chassis" AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], - [[enable=true + [[check_tnl_key=true enable=true ]]) done # make sure BFD is not enabled to hv1, we don't need it -- 2.43.0