There is a potential race condition in OVN where, if an ARP is received right
before the MAC Binding threshold is reached, it updates the MAC Binding related
stats flows but, before ovn-controller probes those stats, the mac_binding
related
flows get removed by ovn-northd as reaching the threshold.
Hence, in that case, the MAC Binding ends up being deleted (and not recreated),
despite an ARP being recently received.
This is similar to dropping an ARP reply, in a case where ARP replies to
multiple ARP probes were already lost.
The test was sometimes hitting that case.
This patch does not fix the ovn race condition, but reduces the probability of
failures by simulating reception of ARP/NA right after ARP probes, hence giving
more time to ovn-controller to probe flow-related stats before threshold is hit.
Fixes: 47203af82aba ("mac-cache: Send broadcast re-ARP probes after a while.")
Signed-off-by: Xavier Simonart <[email protected]>
---
tests/ovn.at | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tests/ovn.at b/tests/ovn.at
index 1e108802d..f40ca1ea0 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -37738,15 +37738,15 @@ dump_arp 1 00:00:00:00:10:00 00:00:00:00:10:1b
10.10.10.1 10.10.10.101 00:00:00:
dump_ns 00:00:00:00:10:1b 00:00:00:00:10:00 fd11::65 fd11::1 fd11::65 >
ucast_v6_65.pkt
OVS_WAIT_UNTIL([test $($PYTHON "$ovs_srcdir/utilities/ovs-pcap.in"
hv1/vif1-tx.pcap | \
grep -Fc "$(cat ucast_v4_101.pkt)") -ge 2])
+# The neighbours answer, refreshing the rows in place (resetting arp_attempts).
+v4_ts=$(fetch_column Mac_Binding timestamp ip=10.10.10.101)
+send_garp hv1 vif1 2 00:00:00:00:10:1b 00:00:00:00:10:00 10.10.10.101
10.10.10.1
OVS_WAIT_UNTIL([test $($PYTHON "$ovs_srcdir/utilities/ovs-pcap.in"
hv1/vif1-tx.pcap | \
grep -Fc "$(cat ucast_v6_65.pkt)") -ge 2])
-
-# The neighbours answer, refreshing the rows in place (resetting
-# arp_attempts). Confirm the timestamps advanced.
-v4_ts=$(fetch_column Mac_Binding timestamp ip=10.10.10.101)
v6_ts=$(fetch_column Mac_Binding timestamp ip=\"fd11::65\")
-send_garp hv1 vif1 2 00:00:00:00:10:1b 00:00:00:00:10:00 10.10.10.101
10.10.10.1
send_na hv1 vif1 00:00:00:00:10:1b 00:00:00:00:10:00 fd11::65 fd11::1
+
+# Confirm the timestamps advanced.
OVS_WAIT_UNTIL([test $(fetch_column Mac_Binding timestamp ip=10.10.10.101) -gt
$v4_ts])
OVS_WAIT_UNTIL([test $(fetch_column Mac_Binding timestamp ip=\"fd11::65\") -gt
$v6_ts])
--
2.47.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev