Re: [PATCH net v2] tcp: fix TCP_USER_TIMEOUT with zero window

From: Jakub Kicinski
Date: Mon Jan 18 2021 - 23:05:27 EST


On Fri, 15 Jan 2021 14:30:58 -0800 Enke Chen wrote:
> From: Enke Chen <enchen@xxxxxxxxxxxxxxxxxxxx>
>
> The TCP session does not terminate with TCP_USER_TIMEOUT when data
> remain untransmitted due to zero window.
>
> The number of unanswered zero-window probes (tcp_probes_out) is
> reset to zero with incoming acks irrespective of the window size,
> as described in tcp_probe_timer():
>
> RFC 1122 4.2.2.17 requires the sender to stay open indefinitely
> as long as the receiver continues to respond probes. We support
> this by default and reset icsk_probes_out with incoming ACKs.
>
> This counter, however, is the wrong one to be used in calculating the
> duration that the window remains closed and data remain untransmitted.
> Thanks to Jonathan Maxwell <jmaxwell37@xxxxxxxxx> for diagnosing the
> actual issue.
>
> In this patch a new timestamp is introduced for the socket in order to
> track the elapsed time for the zero-window probes that have not been
> answered with any non-zero window ack.
>
> Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
> Reported-by: William McCall <william.mccall@xxxxxxxxx>
> Co-developed-by: Neal Cardwell <ncardwell@xxxxxxxxxx>
> Signed-off-by: Neal Cardwell <ncardwell@xxxxxxxxxx>
> Signed-off-by: Enke Chen <enchen@xxxxxxxxxxxxxxxxxxxx>
> Reviewed-by: Yuchung Cheng <ycheng@xxxxxxxxxx>
> Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx>

I take it you got all these tags off-list? I don't see them on the v1
discussion.

Applied to net, thanks!