git: bdbc05bea995 - main - tcp_rack: Add a manual page

From: Gordon Bergling <gbe_at_FreeBSD.org>
Date: Mon, 07 Nov 2022 11:29:14 UTC
The branch main has been updated by gbe (doc committer):

URL: https://cgit.FreeBSD.org/src/commit/?id=bdbc05bea995d73465def1ab31bb3b2b37b37a93

commit bdbc05bea995d73465def1ab31bb3b2b37b37a93
Author:     Gordon Bergling <gbe@FreeBSD.org>
AuthorDate: 2022-11-07 11:28:39 +0000
Commit:     Gordon Bergling <gbe@FreeBSD.org>
CommitDate: 2022-11-07 11:28:39 +0000

    tcp_rack: Add a manual page
    
    - add a manual page for tcp_rack(4)
    - link it in the tcp(4) and tcp_bbr(4) man pages
    - hook it up to build in the Makefile
    
    Reviewed by:    pauamma
    MFC after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D37209
---
 share/man/man4/Makefile   |   1 +
 share/man/man4/tcp.4      |   3 +-
 share/man/man4/tcp_bbr.4  |   5 +-
 share/man/man4/tcp_rack.4 | 159 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 165 insertions(+), 3 deletions(-)

diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index 413ac035003d..8be70670f6cb 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -546,6 +546,7 @@ MAN=	aac.4 \
 	targ.4 \
 	tcp.4 \
 	tcp_bbr.4 \
+	tcp_rack.4 \
 	tdfx.4 \
 	termios.4 \
 	textdump.4 \
diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4
index 1fca883a7d15..dea7da9054d0 100644
--- a/share/man/man4/tcp.4
+++ b/share/man/man4/tcp.4
@@ -34,7 +34,7 @@
 .\"     From: @(#)tcp.4	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd October 7, 2022
+.Dd November 7, 2022
 .Dt TCP 4
 .Os
 .Sh NAME
@@ -1054,6 +1054,7 @@ when trying to use a TCP function block that is not available;
 .Xr siftr 4 ,
 .Xr syncache 4 ,
 .Xr tcp_bbr 4 ,
+.Xr tcp_rack 4 ,
 .Xr setkey 8 ,
 .Xr sysctl 8 ,
 .Xr tcp_functions 9
diff --git a/share/man/man4/tcp_bbr.4 b/share/man/man4/tcp_bbr.4
index 604e205820fb..48281ad0164f 100644
--- a/share/man/man4/tcp_bbr.4
+++ b/share/man/man4/tcp_bbr.4
@@ -1,5 +1,5 @@
 .\"
-.\" Copyright (c) 2020, Gordon Bergling
+.\" Copyright (c) 2020, Gordon Bergling <gbe@FreeBSD.org>
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 24, 2020
+.Dd November 7, 2022
 .Dt TCP_BBR 4
 .Os
 .Sh NAME
@@ -129,6 +129,7 @@ Minimum RTO in ms.
 .Xr h_ertt 4 ,
 .Xr mod_cc 4 ,
 .Xr tcp 4 ,
+.Xr tcp_rack 4 ,
 .Xr mod_cc 9
 .Rs
 .%A "Neal Cardwell"
diff --git a/share/man/man4/tcp_rack.4 b/share/man/man4/tcp_rack.4
new file mode 100644
index 000000000000..ce424ae73045
--- /dev/null
+++ b/share/man/man4/tcp_rack.4
@@ -0,0 +1,159 @@
+.\" SPDX-License-Identifier: BSD-2-Clause
+.\"
+.\" Copyright (c) 2022, Gordon Bergling <gbe@FreeBSD.org>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd November 7, 2022
+.Dt TCP_RACK 4
+.Os
+.Sh NAME
+.Nm tcp_rack
+.Nd TCP RACK-TLP Loss Detection Algorithm for TCP
+.Sh SYNOPSIS
+To use this TCP stack, place the following line in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options TCPHPTS"
+.Ed
+.Pp
+To load the TCP stack as a module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+tcp_rack_load="YES"
+.Ed
+.Pp
+To enable the TCP stack, place the following line in the
+.Xr sysctl.conf 5 :
+.Bd -literal -offset indent
+net.inet.tcp.functions_default=rack
+.Ed
+.Sh DESCRIPTION
+RACK-TLP uses per-segment transmit timestamps and selective
+acknowledgments (SACKs) and has two parts.
+Recent Acknowledgment (RACK) starts fast recovery quickly
+using time-based inferences derived from acknowledgment (ACK)
+feedback, and Tail Loss Probe (TLP) leverages RACK
+and sends a probe packet to trigger ACK feedback to avoid
+retransmission timeout (RTO) events.
+.Pp
+Compared to the widely used duplicate acknowledgment (DupAck)
+threshold approach, RACK-TLP detects losses more efficiently
+when there are application-limited flights of data, lost
+retransmissions, or data packet reordering events.
+.Pp
+It is intended to be an alternative to the
+DupAck threshold approach.
+.Sh MIB Variables
+The algorithm exposes the following scopes in the
+.Va net.inet.tcp.rack
+branch of the
+.Xr sysctl 3
+MIB:
+.Bl -tag -width indent
+.It Va net.inet.tcp.rack.misc
+Misc related controls
+.It Va net.inet.tcp.rack.features
+Feature controls
+.It Va net.inet.tcp.rack.measure
+Measure related controls
+.It Va net.inet.tcp.rack.timers
+Timer related controls
+.It Va net.inet.tcp.rack.tlp
+TLP and Rack related Controls
+.It Va net.inet.tcp.rack.timely
+Rack Timely RTT Controls
+.It Va net.inet.tcp.rack.hdwr_pacing
+Pacing related Controls
+.It Va net.inet.tcp.rack.pacing
+Pacing related Controls
+.It Va net.inet.tcp.rack.tp
+Rack tracepoint facility
+.It Va net.inet.tcp.rack.probertt
+ProbeRTT related Controls
+.It Va net.inet.tcp.rack.stats
+Rack Counters
+.It Va net.inet.tcp.rack.sack_attack
+Rack Sack Attack Counters and Controls
+.El
+.Pp
+Besides the variables within the above scopes the following
+variables are also exposed in the
+.Va net.inet.tcp.rack
+branch:
+.Bl -tag -width indent
+.It Va net.inet.tcp.rack.clear
+Clear counters
+.It Va net.inet.tcp.rack.opts
+RACK Option Stats
+.It Va net.inet.tcp.rack.outsize
+MSS send sizes
+.It Va net.inet.tcp.rack.req_measure_cnt
+If doing dynamic pacing, how many measurements
+must be in before we start pacing?
+.It Va net.inet.tcp.rack.use_pacing
+If set we use pacing, if clear we use only the original burst mitigation
+.It Va net.inet.tcp.rack.rate_sample_method
+What method should we use for rate sampling 0=high, 1=low
+.El
+.Sh SEE ALSO
+.Xr cc_chd 4 ,
+.Xr cc_cubic 4 ,
+.Xr cc_hd 4 ,
+.Xr cc_htcp 4 ,
+.Xr cc_newreno 4 ,
+.Xr cc_vegas 4 ,
+.Xr h_ertt 4 ,
+.Xr mod_cc 4 ,
+.Xr tcp 4 ,
+.Xr tcp_bbr 4 ,
+.Xr mod_cc 9
+.Rs
+.%A "Neal Cardwell"
+.%A "Yuchung Cheng"
+.%A "Nandita Dukkipat"
+.%A "Priyaranjan Jha"
+.%T "The RACK-TLP Loss Detection Algorithm for TCP"
+.%O "RFC 8985"
+.%D "February 2021"
+.Re
+.Rs
+.%A "Ahmed M. Abdelmoniem"
+.%A "Brahim Bensaou"
+.%T "T-RACKs: A Faster Recovery Mechanism for TCP in Data Center Networks"
+.%O "https://arxiv.org/pdf/2102.07477.pdf"
+.%D "February 2021"
+.Re
+.Sh HISTORY
+The
+.Nm
+congestion control module first appeared in
+.Fx 13.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+congestion control module was written by
+.An Randall Stewart Aq Mt rrs@FreeBSD.org
+and sponsored by Netflix, Inc.
+This manual page was written by
+.An Gordon Bergling Aq Mt gbe@FreeBSD.org .