tcp: add PLB functionality for TCP
authorMubashir Adnan Qureshi <mubashirq@google.com>
Wed, 26 Oct 2022 13:51:12 +0000 (13:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Oct 2022 09:47:42 +0000 (10:47 +0100)
commit1a91bb7c3ebf95e908ec33220defbcda1ecc072f
tree16dcf09023e80efd8e75368ca4a43ec417141532
parentbd456f283b66704920fae8e655ebc769cb743420
tcp: add PLB functionality for TCP

Congestion control algorithms track PLB state and cause the connection
to trigger a path change when either of the 2 conditions is satisfied:

- No packets are in flight and (# consecutive congested rounds >=
  sysctl_tcp_plb_idle_rehash_rounds)
- (# consecutive congested rounds >= sysctl_tcp_plb_rehash_rounds)

A round (RTT) is marked as congested when congestion signal
(ECN ce_ratio) over an RTT is greater than sysctl_tcp_plb_cong_thresh.
In the event of RTO, PLB (via tcp_write_timeout()) triggers a path
change and disables congestion-triggered path changes for random time
between (sysctl_tcp_plb_suspend_rto_sec, 2*sysctl_tcp_plb_suspend_rto_sec)
to avoid hopping onto the "connectivity blackhole". RTO-triggered
path changes can still happen during this cool-off period.

Signed-off-by: Mubashir Adnan Qureshi <mubashirq@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/Makefile
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_plb.c [new file with mode: 0644]