From: Enke Chen <redacted>
The TCP_USER_TIMEOUT is checked by the 0-window probe timer. As the
timer has backoff with a max interval of about two minutes, the
actual timeout for TCP_USER_TIMEOUT can be off by up to two minutes.
In this patch the TCP_USER_TIMEOUT is made more accurate by taking it
into account when computing the timer value for the 0-window probes.
This patch is similar to the one that made TCP_USER_TIMEOUT accurate for
RTOs in commit b701a99e431d ("tcp: Add tcp_clamp_rto_to_user_timeout()
helper to improve accuracy").
Signed-off-by: Enke Chen <redacted>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
---
include/net/tcp.h | 1 +
net/ipv4/tcp_input.c | 4 ++--
net/ipv4/tcp_output.c | 2 ++
net/ipv4/tcp_timer.c | 18 ++++++++++++++++++
4 files changed, 23 insertions(+), 2 deletions(-)
From: Eric Dumazet <edumazet@google.com> Date: 2021-01-22 20:45:05
On Fri, Jan 22, 2021 at 8:13 PM Enke Chen [off-list ref] wrote:
From: Enke Chen <redacted>
The TCP_USER_TIMEOUT is checked by the 0-window probe timer. As the
timer has backoff with a max interval of about two minutes, the
actual timeout for TCP_USER_TIMEOUT can be off by up to two minutes.
In this patch the TCP_USER_TIMEOUT is made more accurate by taking it
into account when computing the timer value for the 0-window probes.
This patch is similar to the one that made TCP_USER_TIMEOUT accurate for
RTOs in commit b701a99e431d ("tcp: Add tcp_clamp_rto_to_user_timeout()
helper to improve accuracy").
Signed-off-by: Enke Chen <redacted>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
---
SGTM, thanks !
Signed-off-by: Eric Dumazet <edumazet@google.com>
From: Jakub Kicinski <kuba@kernel.org> Date: 2021-01-23 01:44:29
On Fri, 22 Jan 2021 11:13:06 -0800 Enke Chen wrote:
From: Enke Chen <redacted>
The TCP_USER_TIMEOUT is checked by the 0-window probe timer. As the
timer has backoff with a max interval of about two minutes, the
actual timeout for TCP_USER_TIMEOUT can be off by up to two minutes.
In this patch the TCP_USER_TIMEOUT is made more accurate by taking it
into account when computing the timer value for the 0-window probes.
This patch is similar to the one that made TCP_USER_TIMEOUT accurate for
RTOs in commit b701a99e431d ("tcp: Add tcp_clamp_rto_to_user_timeout()
helper to improve accuracy").
Signed-off-by: Enke Chen <redacted>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
This is targeting net, any guidance on Fixes / backporting?
Hi, Jakub:
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
Thanks. -- Enke
On Fri, Jan 22, 2021 at 05:43:25PM -0800, Jakub Kicinski wrote:
On Fri, 22 Jan 2021 11:13:06 -0800 Enke Chen wrote:
quoted
From: Enke Chen <redacted>
The TCP_USER_TIMEOUT is checked by the 0-window probe timer. As the
timer has backoff with a max interval of about two minutes, the
actual timeout for TCP_USER_TIMEOUT can be off by up to two minutes.
In this patch the TCP_USER_TIMEOUT is made more accurate by taking it
into account when computing the timer value for the 0-window probes.
This patch is similar to the one that made TCP_USER_TIMEOUT accurate for
RTOs in commit b701a99e431d ("tcp: Add tcp_clamp_rto_to_user_timeout()
helper to improve accuracy").
Signed-off-by: Enke Chen <redacted>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
This is targeting net, any guidance on Fixes / backporting?
From: Jakub Kicinski <kuba@kernel.org> Date: 2021-01-23 02:35:41
On Fri, 22 Jan 2021 18:28:23 -0800 Enke Chen wrote:
Hi, Jakub:
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
As in it:
Fixes: 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
or does it further fix the same issue, so:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
?
Hi, Jakub:
On Fri, Jan 22, 2021 at 06:34:24PM -0800, Jakub Kicinski wrote:
On Fri, 22 Jan 2021 18:28:23 -0800 Enke Chen wrote:
quoted
Hi, Jakub:
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
As in it:
Fixes: 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
or does it further fix the same issue, so:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
?
Let me clarify:
1) 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
fixes the bug and makes it work.
2) The current patch makes the TCP_USER_TIMEOUT accurate for 0-window probes.
It's independent.
With 1) and 2), the known issues with TCP_USER_TIMEOUT for 0-window probes
would be resolved.
Thanks. -- Enke
On Fri, Jan 22, 2021 at 9:45 PM Enke Chen [off-list ref] wrote:
Hi, Jakub:
On Fri, Jan 22, 2021 at 06:34:24PM -0800, Jakub Kicinski wrote:
quoted
On Fri, 22 Jan 2021 18:28:23 -0800 Enke Chen wrote:
quoted
Hi, Jakub:
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
As in it:
Fixes: 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
or does it further fix the same issue, so:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
?
Let me clarify:
1) 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
fixes the bug and makes it work.
2) The current patch makes the TCP_USER_TIMEOUT accurate for 0-window probes.
It's independent.
Patch (2) ("tcp: make TCP_USER_TIMEOUT accurate for zero window
probes") is indeed conceptually independent of (1) but its
implementation depends on the icsk_probes_tstamp field defined in (1),
so AFAICT (2) cannot be backported further back than (1).
Patch (1) fixes a bug in 5.1:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
So probably (1) and (2) should be backported as a pair, and only back
as far as 5.1. (That covers 2 LTS kernels, 5.4 and 5.10, so hopefully
that is good enough.)
neal
Hi, Neal:
What you described is more accurate, and is correct.
Thanks. -- Enke
On Sat, Jan 23, 2021 at 07:19:13PM -0500, Neal Cardwell wrote:
On Fri, Jan 22, 2021 at 9:45 PM Enke Chen [off-list ref] wrote:
quoted
Hi, Jakub:
On Fri, Jan 22, 2021 at 06:34:24PM -0800, Jakub Kicinski wrote:
quoted
On Fri, 22 Jan 2021 18:28:23 -0800 Enke Chen wrote:
quoted
Hi, Jakub:
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
As in it:
Fixes: 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
or does it further fix the same issue, so:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
?
Let me clarify:
1) 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
fixes the bug and makes it work.
2) The current patch makes the TCP_USER_TIMEOUT accurate for 0-window probes.
It's independent.
Patch (2) ("tcp: make TCP_USER_TIMEOUT accurate for zero window
probes") is indeed conceptually independent of (1) but its
implementation depends on the icsk_probes_tstamp field defined in (1),
so AFAICT (2) cannot be backported further back than (1).
Patch (1) fixes a bug in 5.1:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
So probably (1) and (2) should be backported as a pair, and only back
as far as 5.1. (That covers 2 LTS kernels, 5.4 and 5.10, so hopefully
that is good enough.)
neal
From: Jakub Kicinski <kuba@kernel.org> Date: 2021-01-24 03:37:31
On Sat, 23 Jan 2021 16:56:43 -0800 Enke Chen wrote:
On Sat, Jan 23, 2021 at 07:19:13PM -0500, Neal Cardwell wrote:
quoted
On Fri, Jan 22, 2021 at 9:45 PM Enke Chen [off-list ref] wrote:
quoted
On Fri, Jan 22, 2021 at 06:34:24PM -0800, Jakub Kicinski wrote:
quoted
On Fri, 22 Jan 2021 18:28:23 -0800 Enke Chen wrote:
quoted
In terms of backporting, this patch should go together with:
9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
As in it:
Fixes: 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
or does it further fix the same issue, so:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
?
Let me clarify:
1) 9d9b1ee0b2d1 tcp: fix TCP_USER_TIMEOUT with zero window
fixes the bug and makes it work.
2) The current patch makes the TCP_USER_TIMEOUT accurate for 0-window probes.
It's independent.
Patch (2) ("tcp: make TCP_USER_TIMEOUT accurate for zero window
probes") is indeed conceptually independent of (1) but its
implementation depends on the icsk_probes_tstamp field defined in (1),
so AFAICT (2) cannot be backported further back than (1).
Patch (1) fixes a bug in 5.1:
Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
So probably (1) and (2) should be backported as a pair, and only back
as far as 5.1. (That covers 2 LTS kernels, 5.4 and 5.10, so hopefully
that is good enough.)
What you described is more accurate, and is correct.
That makes it clear.
I added a Fixes tag, reworded the message slightly and applied, thanks!