Re: [PATCH v3 net-next 3/6] tcp: add SACK compression
From: Yuchung Cheng <hidden>
Date: 2018-05-17 22:14:49
On Thu, May 17, 2018 at 2:57 PM, Neal Cardwell [off-list ref] wrote:
On Thu, May 17, 2018 at 5:47 PM Eric Dumazet [off-list ref] wrote:quoted
When TCP receives an out-of-order packet, it immediately sends a SACK packet, generating network load but also forcing the receiver to send 1-MSS pathological packets, increasing its RTX queue length/depth, and thus processing time.quoted
Wifi networks suffer from this aggressive behavior, but generally speaking, all these SACK packets add fuel to the fire when networks are under congestion.quoted
This patch adds a high resolution timer and tp->compressed_ack counter.quoted
Instead of sending a SACK, we program this timer with a small delay, based on RTT and capped to 1 ms :quoted
delay = min ( 5 % of RTT, 1 ms)quoted
If subsequent SACKs need to be sent while the timer has not yet expired, we simply increment tp->compressed_ack.quoted
When timer expires, a SACK is sent with the latest information. Whenever an ACK is sent (if data is sent, or if in-order data is received) timer is canceled.quoted
Note that tcp_sack_new_ofo_skb() is able to force a SACK to be sent if the sack blocks need to be shuffled, even if the timer has not expired.quoted
A new SNMP counter is added in the following patch.quoted
Two other patches add sysctls to allow changing the 1,000,000 and 44 values that this commit hard-coded.quoted
Signed-off-by: Eric Dumazet <edumazet@google.com> ---Very nice. I like the constants and the min(rcv_rtt, srtt). Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <redacted> Great work. Hopefully this would save middle-boxes' from handling TCP-ACK themselves.
Thanks! neal