From nobody Mon Nov 21 07:22:10 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NFzNf4Rc4z4hscL; Mon, 21 Nov 2022 07:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NFzNf2sXKz3G0S; Mon, 21 Nov 2022 07:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669015330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8YMLd0PGPjFbtPZrS/1X8dIGMb0vu0Tk1cjY39iF95M=; b=qIsinbPFygx7Ut4HKpJ/rK/lZtUfGf7mtUvpr2s1fvk2YuSgFitVpWuBwjPkXK0/XlRS8n b1Ob55JaSHmvjS0tDMyG9PFsu+xH7HhaoTBdWVSAGes6+1KkoGyCWwhSkLV0sYZgytPpVX FJF5c/2hzrsHglq/5hLO4zSBWcrBxbvrgdU5uiiQ1KHnlmjOqUAAjlGODX2ax1cNpD/tqN yPrnvSm7zuneqI8LaQnMnu0LSaLe5APqx3miKfw/XBCbXZXLwGVHHmAcHD+Zz4QLiaFkQp 0ONZyZfMzxy8W1nbKMDZLMkcS9DoyIOmJ/GaDeR8upZANOwcNAG6BUFQvknz4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669015330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8YMLd0PGPjFbtPZrS/1X8dIGMb0vu0Tk1cjY39iF95M=; b=QaNWhV4KzLQ5qmTMy9UdIIrSDClYF6RqExUODKNU33oo7HnWxGqzZc37znJ4cJtCMZ2TEc v/JTVWOsNgNe9Axlo+Wj3dk3oqAkG/0840gOl1UO5lQ+KnoxHH4lw3k9tXgIF0rh2V4DE8 n+dwxV+5Ogld2NSxIvwoUM3pH5PI2MNLd8tPlsxmJpgLNbRHRzspMAt09kJRX31yw/8GYV Hly6PSIrYPLT5pScLdyk02TGuUlwntv92wEtnTjZocCu1zcshzjRsC3gP9jV7QyEa1Yp2y MJ4Amp77PLkcg5a2erRY4PiNVZ5dTdXXP9p/2oYdByeCloe72vXbFvWRL1QSrQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1669015330; a=rsa-sha256; cv=none; b=SpusyjbKT6S01Pv1eD8xpLAaczPxP/xnzNvJtLw0PrmVPG5d8jHLiK9kchGyFZnjvBmOL/ VMPFtU4v0FR8UWFtqg8IYRvGzVqYtebl495wXBBTT86J7jEGpjbTvUfF2T3p8GMgX4E4+S Itk3vXtKoyiFj/tr/dzBRfGLRi1Th2y1+JZSII/yJaRB4dnNFSWOswvRv+d1A/uQkdAbI1 OMuL/BSKmegjORAzKbgft7khoaF6nkCpSFPLb1nZn3h6PcU7bIdtHex7mBqMAQuZBsijFb XpD2tv/tcH6/U6lysdt3/cecQBdACvyL3VLDzcVDGXSFLWj5y+aZGjoeiLlxnQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NFzNf1xBGzvPB; Mon, 21 Nov 2022 07:22:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2AL7MAxr028909; Mon, 21 Nov 2022 07:22:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2AL7MAWU028908; Mon, 21 Nov 2022 07:22:10 GMT (envelope-from git) Date: Mon, 21 Nov 2022 07:22:10 GMT Message-Id: <202211210722.2AL7MAWU028908@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: b1bcde8605fa - stable/13 - tcp_rack: Add a manual page List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b1bcde8605fa96037c11cc54b5bf4d5b0a0e07ae Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=b1bcde8605fa96037c11cc54b5bf4d5b0a0e07ae commit b1bcde8605fa96037c11cc54b5bf4d5b0a0e07ae Author: Gordon Bergling AuthorDate: 2022-11-07 11:28:39 +0000 Commit: Gordon Bergling CommitDate: 2022-11-21 07:21:58 +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 Differential Revision: https://reviews.freebsd.org/D37209 (cherry picked from commit bdbc05bea995d73465def1ab31bb3b2b37b37a93) --- 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 dccac2f7b24e..a1c6ade9bb69 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -557,6 +557,7 @@ MAN= aac.4 \ targ.4 \ tcp.4 \ tcp_bbr.4 \ + tcp_rack.4 \ tdfx.4 \ terasic_mtl.4 \ termios.4 \ diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4 index 3fe2753bf408..0584397a64d4 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 January 8, 2022 +.Dd November 7, 2022 .Dt TCP 4 .Os .Sh NAME @@ -957,6 +957,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 tcp_functions 9 .Rs 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 .\" .\" 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 +.\" +.\" 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 .