Thanks Dumitru and Ales.

I pushed this change to main. I attempted to backport this (as well as the previous patches from this series) to branch-23.03 but they did not apply cleanly. If you can provide a series that applies to branch-23.03, then I can get it backported there and attempt to apply it to older branches too.

On 5/16/23 11:20, Dumitru Ceara wrote:
On 5/16/23 15:14, Ales Musil wrote:
There was a race within packet buffering that could
result in first packt being dropped. It could happen
under following conditions and topology:
S1 == R1 == public == R2 == S2
SNAT on R1 and DGP on port connecting R1 with public.

1) The GARP is sent for the DGP SNAT
2) The GARP is delayed on R2 because it's multicast
3) The MAC binding is added to SB
4) Some traffic that gets buffered on S2
5) An ARP is sent as consequence of the buffering
6) Response for the ARP is ignored on lflow level,
because the MAC binding already exists
7) The buffered packet is never sent out and times out

In order to prevent the race add additonal lookup for the
buffered packets. When the packet is created do initial
lookup right away as there is a chance that the MAC binding
is already present in database. In any other case that would
prevent the tracked loop to provide correct information do
SB lookup, but only after certain timeout.

Signed-off-by: Ales Musil <[email protected]>
---
v8: Address comments from Dumitru:
     Remove the "next_lookup_at_ms" as it is not needed.
---

Looks good to me, thanks for addressing all my comments!

Acked-by: Dumitru Ceara <[email protected]>

Regards,
Dumitru

_______________________________________________
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