• Randall Stewart's avatar
    tcp: Add support for DSACK based reordering window to rack. · 5baf32c9
    Randall Stewart authored
    The rack stack, with respect to the rack bits in it, was originally built based
    on an early I-D of rack. In fact at that time the TLP bits were in a separate
    I-D. The dynamic reordering window based on DSACK events was not present
    in rack at that time. It is now part of the RFC and we need to update our stack
    to include these features. However we want to have a way to control the feature
    so that we can, if the admin decides, make it stay the same way system wide as
    well as via socket option. The new sysctl and socket option has the following
    meaning for setting:
    00 (0) - Keep the old way, i.e. reordering window is 1 and do not use DSACK bytes to add to reorder window
    01 (1) - Change the Reordering window to 1/4 of an RTT but do not use DSACK bytes to add to reorder window
    10 (2) - Keep the reordering window as 1, but do use SACK bytes to add additional 1/4 RTT delay to the reorder window
    11 (3) - reordering window is 1/4 of an RTT and add additional DSACK bytes to increase the reordering window (RFC behavior)
    The default currently in the sysctl is 3 so we get standards based behavior.
    Reviewed by: tuexen
    Sponsored by: Netflix Inc.
    Differential Revision: https://reviews.freebsd.org/D31506