From: Priyaranjan Jha <priyar...@google.com>
Date: Fri,  3 Nov 2017 16:38:48 -0700

> Currently TCP RACK loss detection does not work well if packets are
> being reordered beyond its static reordering window (min_rtt/4).Under
> such reordering it may falsely trigger loss recoveries and reduce TCP
> throughput significantly.
> 
> This patch improves that by increasing and reducing the reordering
> window based on DSACK, which is now supported in major TCP implementations.
> It makes RACK's reo_wnd adaptive based on DSACK and no. of recoveries.
> 
> - If DSACK is received, increment reo_wnd by min_rtt/4 (upper bounded
>   by srtt), since there is possibility that spurious retransmission was
>   due to reordering delay longer than reo_wnd.
> 
> - Persist the current reo_wnd value for TCP_RACK_RECOVERY_THRESH (16)
>   no. of successful recoveries (accounts for full DSACK-based loss
>   recovery undo). After that, reset it to default (min_rtt/4).
> 
> - At max, reo_wnd is incremented only once per rtt. So that the new
>   DSACK on which we are reacting, is due to the spurious retx (approx)
>   after the reo_wnd has been updated last time.
> 
> - reo_wnd is tracked in terms of steps (of min_rtt/4), rather than
>   absolute value to account for change in rtt.
> 
> In our internal testing, we observed significant increase in throughput,
> in scenarios where reordering exceeds min_rtt/4 (previous static value).
> 
> Signed-off-by: Priyaranjan Jha <priyar...@google.com>
> Signed-off-by: Yuchung Cheng <ych...@google.com>
> Signed-off-by: Neal Cardwell <ncardw...@google.com>

Applied, thanks.

Reply via email to