mbox series

[net-next,0/8] tcp: default RACK loss recovery

Message ID 20180516234017.172775-1-ycheng@google.com
Headers show
Series tcp: default RACK loss recovery | expand

Message

Yuchung Cheng May 16, 2018, 11:40 p.m. UTC
This patch set implements the features correspond to the
draft-ietf-tcpm-rack-03 version of the RACK draft.
https://datatracker.ietf.org/meeting/101/materials/slides-101-tcpm-update-on-tcp-rack-00

1. SACK: implement equivalent DUPACK threshold heuristic in RACK to
   replace existing RFC6675 recovery (tcp_mark_head_lost).

2. Non-SACK: simplify RFC6582 NewReno implementation

3. RTO: apply RACK's time-based approach to avoid spuriouly
   marking very recently sent packets lost.

4. with (1)(2)(3), make RACK the exclusive fast recovery mechanism to
   mark losses based on time on S/ACK. Tail loss probe and F-RTO remain
   enabled by default as complementary mechanisms to send probes in
   CA_Open and CA_Loss states. The probes would solicit S/ACKs to trigger
   RACK time-based loss detection.

All Google web and internal servers have been running RACK-only mode
(4) for a while now. a/b experiments indicate RACK/TLP on average
reduces recovery latency by 10% compared to RFC6675. RFC6675
is default-off now but can be enabled by disabling RACK (sysctl
net.ipv4.tcp_recovery=0) for unseen issues.

Yuchung Cheng (8):
  tcp: support DUPACK threshold in RACK
  tcp: disable RFC6675 loss detection
  tcp: simpler NewReno implementation
  tcp: account lost retransmit after timeout
  tcp: new helper tcp_timeout_mark_lost
  tcp: separate loss marking and state update on RTO
  tcp: new helper tcp_rack_skb_timeout
  tcp: don't mark recently sent packets lost on RTO

 Documentation/networking/ip-sysctl.txt |  4 +-
 include/net/tcp.h                      |  5 ++
 net/ipv4/tcp_input.c                   | 99 ++++++++++++++------------
 net/ipv4/tcp_recovery.c                | 80 ++++++++++++++++-----
 4 files changed, 124 insertions(+), 64 deletions(-)

Comments

David Miller May 17, 2018, 7:45 p.m. UTC | #1
From: Yuchung Cheng <ycheng@google.com>
Date: Wed, 16 May 2018 16:40:09 -0700

> This patch set implements the features correspond to the
> draft-ietf-tcpm-rack-03 version of the RACK draft.
> https://datatracker.ietf.org/meeting/101/materials/slides-101-tcpm-update-on-tcp-rack-00
> 
> 1. SACK: implement equivalent DUPACK threshold heuristic in RACK to
>    replace existing RFC6675 recovery (tcp_mark_head_lost).
> 
> 2. Non-SACK: simplify RFC6582 NewReno implementation
> 
> 3. RTO: apply RACK's time-based approach to avoid spuriouly
>    marking very recently sent packets lost.
> 
> 4. with (1)(2)(3), make RACK the exclusive fast recovery mechanism to
>    mark losses based on time on S/ACK. Tail loss probe and F-RTO remain
>    enabled by default as complementary mechanisms to send probes in
>    CA_Open and CA_Loss states. The probes would solicit S/ACKs to trigger
>    RACK time-based loss detection.
> 
> All Google web and internal servers have been running RACK-only mode
> (4) for a while now. a/b experiments indicate RACK/TLP on average
> reduces recovery latency by 10% compared to RFC6675. RFC6675
> is default-off now but can be enabled by disabling RACK (sysctl
> net.ipv4.tcp_recovery=0) for unseen issues.

Series applied.

These patches, the design of the ordering of changes in the patch series,
and the commit messages themselves were more than a pleasure to read.

Really, this patch series is a great model for others who want to
improve the quality and reviewability of their submissions.

Thank you.
hiren panchasara May 21, 2018, 6:39 p.m. UTC | #2
On 05/17/18 at 03:45P, David Miller wrote:
> From: Yuchung Cheng <ycheng@google.com>
> Date: Wed, 16 May 2018 16:40:09 -0700
> 
> > This patch set implements the features correspond to the
> > draft-ietf-tcpm-rack-03 version of the RACK draft.
> > https://datatracker.ietf.org/meeting/101/materials/slides-101-tcpm-update-on-tcp-rack-00
> > 
> > 1. SACK: implement equivalent DUPACK threshold heuristic in RACK to
> >    replace existing RFC6675 recovery (tcp_mark_head_lost).
> > 
> > 2. Non-SACK: simplify RFC6582 NewReno implementation
> > 
> > 3. RTO: apply RACK's time-based approach to avoid spuriouly
> >    marking very recently sent packets lost.
> > 
> > 4. with (1)(2)(3), make RACK the exclusive fast recovery mechanism to
> >    mark losses based on time on S/ACK. Tail loss probe and F-RTO remain
> >    enabled by default as complementary mechanisms to send probes in
> >    CA_Open and CA_Loss states. The probes would solicit S/ACKs to trigger
> >    RACK time-based loss detection.
> > 
> > All Google web and internal servers have been running RACK-only mode
> > (4) for a while now. a/b experiments indicate RACK/TLP on average
> > reduces recovery latency by 10% compared to RFC6675. RFC6675
> > is default-off now but can be enabled by disabling RACK (sysctl
> > net.ipv4.tcp_recovery=0) for unseen issues.
> 
> Series applied.
> 
> These patches, the design of the ordering of changes in the patch series,
> and the commit messages themselves were more than a pleasure to read.
> 
> Really, this patch series is a great model for others who want to
> improve the quality and reviewability of their submissions.

Second that as a maintainer of a non-linux stack. Thanks a ton for such
clear and crisp commit-log messages along with the actual changes.

Cheers,
Hiren