On 26 Aug 2025, at 14:44, Ilya Maximets wrote:

> The last ACK from the 3-WAY handshake in this test goes to userspace
> (miss upcall) after going through conntrack because +est traffic is
> handled differently from +new in this set of OpenFlow rules.
>
> The sender though proceeds with sending the data that may end up
> re-ordered with the aforementioned ACK.  Since connection is very
> short, it is possible that this one ACK will be delivered even after
> the connection is already closed, i.e., after all the data is sent
> and the connection termination sequence (FIN-ACK-FIN-ACK) is done.
> Delivery in this case triggers an RST reply.  And RST transitions
> TIME_WAIT into CLOSE (CLOSING in OVS terms), causing the test failure.
>
> It's not really possible to fully avoid the packet re-ordering as it
> is part of the upcall mechanism.  But there is a couple ways to avoid
> it in this particular case, e.g., if we predict how the +est packet
> will look like and install the datapath flow for +est while processing
> the original +new, or by storing the upcall PID in the kernel for the
> whole time of action execution and not only for one packet we're
> executing actions for (TCP handshake replies are happening in the
> context of the initiator, which is OVS handler thread in our case).
> But these are large changes that will not help with test failures
> on older branches / older kernels.  For now, fixing the test instead.
>
> The intention in the test was to check that the state is terminal at
> the end of the connection, i.e., that our actions do not leave
> established or incomplete conntrack entries.  So it should be fine to
> check for both TIME_WAIT and CLOSING, as both of these are terminal
> states.
>
> Fixes: 8d48d5f39436 ("system-traffic: Add conntrack floating IP test")

Thank you for taking the time to investigate and resolve this intermediate 
failure.

The change looks good to me!

Cheers,

Eelco

Acked-by: Eelco Chaudron <echau...@redhat.com>

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to