On Mon, Sep 14, 2026 at 6:10 PM Xavier Simonart via dev <
[email protected]> wrote:
> 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]>
> ---
>
Hi Xavier,
thank you for the patch, it seems we posted the same thing
at the same time. I'm also including a different fix in the patch,
would you mind taking a look at that? I will review the first
2 of the series in the meantime.
Regards,
Ales
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
>
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev