From nobody Mon Nov 07 11:29:14 2022 X-Original-To: dev-commits-src-main@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 4N5TXB3gM0z4gkv3; Mon, 7 Nov 2022 11:29:14 +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 4N5TXB3CFlz3pKM; Mon, 7 Nov 2022 11:29:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1667820554; 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=eYBYHkZFl4dknYHz79XPnCrT8mR5UyCmphNCUbDjlQA=; b=SIV+rdCf3PLWWzgElCWAepa4SmWeuY9sra8qrM/PgOYd/opD+w1QOznz8WyWJDcMumCMCk NnvjDHFZhlPA7LSUYxrd/xOESwuThxrBV7kbcooOQn4zcN7K3uKlLcpV0O0ZPTLlE2IOZy 6AgSt3Qt1uZlv4oooyeAizsjTnJiM/Klg5oFa6iwkFu9rrdX8+6ODmFvEjGI467QmYcvSJ 9iq6SJJCXkRDnEnnx3FnivpzfPQ9i/I2ETfB942jgicfOlMfMGGv42ZnlAMpEBZ0n0lcfH Q++A0YuUYQwEOBUqwWDSkwnd9+TRk2B//A43SCHculljBq3Vg0QvXROWA/JWfQ== 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 4N5TXB2Gl1z10KC; Mon, 7 Nov 2022 11:29:14 +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 2A7BTENF096693; Mon, 7 Nov 2022 11:29:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2A7BTEuS096692; Mon, 7 Nov 2022 11:29:14 GMT (envelope-from git) Date: Mon, 7 Nov 2022 11:29:14 GMT Message-Id: <202211071129.2A7BTEuS096692@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gordon Bergling Subject: git: bdbc05bea995 - main - tcp_rack: Add a manual page List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: bdbc05bea995d73465def1ab31bb3b2b37b37a93 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1667820554; 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=eYBYHkZFl4dknYHz79XPnCrT8mR5UyCmphNCUbDjlQA=; b=QNql5JovgktabfXs/HbHY8Ic+jx6wZks+j6P1NgsLIkKnWGtudES/7b1C1QwvNhIugfEqh TGHjpzghu5a8NRDZQveOhwKy74VaZ3+xvnHQjnFFFa/OGLF9S6QBwyEyqYt/CT3flmuirF CD/rWQhEvxY2rQuxhg3Q9Ipw7hd5zBfXXXMfStLepuxiMRVfIrDEWv0lj1ycwmwOPLKOAh yzgTk7EmBWihjf6uYr4zuzfW4FymodHpMSGFiG+lMSGTHU9Vq72F/H+ejtd9TPMQrOBzP6 YuMKt5s+uAZvi9g+z5NAICB4RZXOZK4QqzYZejmpdQzUOC3vYH9EDtcEba83sw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1667820554; a=rsa-sha256; cv=none; b=BuiOl2qrPq7r4fcEAM+kUQZ5vugs+Xga1rfIqAqyZcCRt7TnONVO/TBSwoX/dLIk8epGAK bLZM1xciaN9+Viw7jOHghAtffU0hNtibnN5yuZjeqrv0Mzx2ns64EwZSeyv3Y2DjU5qR/+ HTrW1c/ccMuX+Vmg+DGl4w17vExWYH7TH0RUEQ02puHr/MUdmFoK0JtC2v8MFf2lnuZJCf GWM7JbvjInF9uJAZOQJN4z98IrKz1jMvGLNJjPfwF4HUKvzjDZ3GT+6H+U4yNt6UgFeWcT oQSXUXvd/RddZmK4L30JLmvcOi60nWx0hXGfwrJ4qBLIH5IIgROmlgoANAO2zg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=bdbc05bea995d73465def1ab31bb3b2b37b37a93 commit bdbc05bea995d73465def1ab31bb3b2b37b37a93 Author: Gordon Bergling AuthorDate: 2022-11-07 11:28:39 +0000 Commit: Gordon Bergling 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 .\" .\" 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 .