Thread (2 messages) flat view 2 messages, 2 authors, 2020-02-01

Re: Re: Re: [PATCH 2/3] tcp: Reduce SYN resend delay if a suspicous ACK is received

From: SeongJae Park <hidden>
Date: 2020-02-01 06:09:01
Also in: linux-kselftest, lkml

On Fri, 31 Jan 2020 22:55:34 -0500 Neal Cardwell [off-list ref] wrote:
On Fri, Jan 31, 2020 at 5:18 PM SeongJae Park [off-list ref] wrote:
quoted
On Fri, 31 Jan 2020 17:11:35 -0500 Neal Cardwell [off-list ref] wrote:
quoted
On Fri, Jan 31, 2020 at 1:12 PM Eric Dumazet [off-list ref] wrote:
quoted


On 1/31/20 7:10 AM, Neal Cardwell wrote:
quoted
On Fri, Jan 31, 2020 at 7:25 AM [off-list ref] wrote:
quoted
From: SeongJae Park <redacted>

When closing a connection, the two acks that required to change closing
socket's status to FIN_WAIT_2 and then TIME_WAIT could be processed in
reverse order.  This is possible in RSS disabled environments such as a
connection inside a host.
[...]
quoted
I looked into fixing this, but my quick reading of the Linux
tcp_rcv_state_process() code is that it should behave correctly and
that a connection in FIN_WAIT_1 that receives a FIN/ACK should move to
TIME_WAIT.

SeongJae, do you happen to have a tcpdump trace of the problematic
sequence where the "process A" ends up in FIN_WAIT_2 when it should be
in TIME_WAIT?
Hi Neal,


Yes, I have.  You can get it from the previous discussion for this patchset
(https://lore.kernel.org/bpf/20200129171403.3926-1-sjpark@amazon.com/ (local)).  As it
also has a reproducer program and how I got the tcpdump trace, I believe you
could get your own trace, too.  If you have any question or need help, feel
free to let me know. :)
Great. Thank you for the pointer.

I had one quick question: in the message:
  https://lore.kernel.org/bpf/20200129171403.3926-1-sjpark@amazon.com/ (local)
... it showed a trace with the client sending a RST/ACK, but this
email thread shows a FIN/ACK. I am curious about the motivation for
the difference?
RST/ACK is traced if LINGER socket option is applied in the reproduce program,
and FIN/ACK is traced if it is not applied.  LINGER applied version shows the
spikes more frequently, but the main problem logic has no difference.  I
confirmed this by testing both of the two versions.

In the previous discussion, I showed the LINGER applied trace.  However, as
many other documents are using FIN/ACK, I changed the trace to FIN/ACK version
in this patchset for better understanding.  I will comment that it doesn't
matter whether it is FIN/ACK or RST/ACK in the next spin.


Thanks,
SeongJae Park
Anyway, thanks for the report, and thanks to Eric for further clarifying!

neal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help