Hi Ales

Yes, thanks, you can drop  this one. It seems we had the exact same fix for
that test (except for the comments) :-)

Thanks
Xavier

On Tue, Sep 15, 2026 at 7:49 AM Ales Musil <[email protected]> wrote:

>
>
> 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

Reply via email to