xref: /freebsd/share/man/man4/cc_newreno.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
129f269dcSLawrence Stewart.\"
229f269dcSLawrence Stewart.\" Copyright (c) 2009 Lawrence Stewart <lstewart@FreeBSD.org>
329f269dcSLawrence Stewart.\" Copyright (c) 2011 The FreeBSD Foundation
429f269dcSLawrence Stewart.\" All rights reserved.
529f269dcSLawrence Stewart.\"
629f269dcSLawrence Stewart.\" Portions of this documentation were written at the Centre for Advanced
7891b8ed4SLawrence Stewart.\" Internet Architectures, Swinburne University of Technology, Melbourne,
8891b8ed4SLawrence Stewart.\" Australia by Lawrence Stewart under sponsorship from the FreeBSD Foundation.
929f269dcSLawrence Stewart.\"
1029f269dcSLawrence Stewart.\" Redistribution and use in source and binary forms, with or without
1129f269dcSLawrence Stewart.\" modification, are permitted provided that the following conditions
1229f269dcSLawrence Stewart.\" are met:
1329f269dcSLawrence Stewart.\" 1. Redistributions of source code must retain the above copyright
1429f269dcSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer.
1529f269dcSLawrence Stewart.\" 2. Redistributions in binary form must reproduce the above copyright
1629f269dcSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer in the
1729f269dcSLawrence Stewart.\"    documentation and/or other materials provided with the distribution.
1829f269dcSLawrence Stewart.\"
1929f269dcSLawrence Stewart.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2029f269dcSLawrence Stewart.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2129f269dcSLawrence Stewart.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2229f269dcSLawrence Stewart.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
2329f269dcSLawrence Stewart.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2429f269dcSLawrence Stewart.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2529f269dcSLawrence Stewart.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2629f269dcSLawrence Stewart.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2729f269dcSLawrence Stewart.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2829f269dcSLawrence Stewart.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2929f269dcSLawrence Stewart.\" SUCH DAMAGE.
3029f269dcSLawrence Stewart.\"
31*767964fdSTom Hukins.Dd February 4, 2023
3229f269dcSLawrence Stewart.Dt CC_NEWRENO 4
3329f269dcSLawrence Stewart.Os
3429f269dcSLawrence Stewart.Sh NAME
3529f269dcSLawrence Stewart.Nm cc_newreno
3629f269dcSLawrence Stewart.Nd NewReno Congestion Control Algorithm
37370efe5aSLawrence Stewart.Sh SYNOPSIS
38370efe5aSLawrence Stewart.In netinet/cc/cc_newreno.h
3929f269dcSLawrence Stewart.Sh DESCRIPTION
4029f269dcSLawrence StewartDetails about the algorithm can be found in RFC5681.
41370efe5aSLawrence Stewart.Sh Socket Options
42370efe5aSLawrence StewartThe
43370efe5aSLawrence Stewart.Nm
44370efe5aSLawrence Stewartmodule supports a number of socket options under TCP_CCALGOOPT (refer to
45370efe5aSLawrence Stewart.Xr tcp 4
46370efe5aSLawrence Stewartand
47d458747eSChristian Brueffer.Xr mod_cc 9 for details)
48370efe5aSLawrence Stewartwhich can
49370efe5aSLawrence Stewartbe set with
50370efe5aSLawrence Stewart.Xr setsockopt 2
51370efe5aSLawrence Stewartand tested with
52370efe5aSLawrence Stewart.Xr getsockopt 2 .
53370efe5aSLawrence StewartThe
54370efe5aSLawrence Stewart.Nm
55370efe5aSLawrence Stewartsocket options use this structure defined in
56370efe5aSLawrence Stewart<sys/netinet/cc/cc_newreno.h>:
57370efe5aSLawrence Stewart.Bd -literal
58370efe5aSLawrence Stewartstruct cc_newreno_opts {
59370efe5aSLawrence Stewart	int name;
60370efe5aSLawrence Stewart	uint32_t val;
61370efe5aSLawrence Stewart}
62370efe5aSLawrence Stewart.Ed
63370efe5aSLawrence Stewart.Bl -tag -width ".Va CC_NEWRENO_BETA_ECN"
64370efe5aSLawrence Stewart.It Va CC_NEWRENO_BETA
65370efe5aSLawrence StewartMultiplicative window decrease factor, specified as a percentage, applied to
66370efe5aSLawrence Stewartthe congestion window in response to a congestion signal per: cwnd = (cwnd *
67370efe5aSLawrence StewartCC_NEWRENO_BETA) / 100.
68370efe5aSLawrence StewartDefault is 50.
69370efe5aSLawrence Stewart.It Va CC_NEWRENO_BETA_ECN
70370efe5aSLawrence StewartMultiplicative window decrease factor, specified as a percentage, applied to
71370efe5aSLawrence Stewartthe congestion window in response to an ECN congestion signal when
72370efe5aSLawrence Stewart.Va net.inet.tcp.cc.abe=1
73370efe5aSLawrence Stewartper: cwnd = (cwnd * CC_NEWRENO_BETA_ECN) / 100.
74370efe5aSLawrence StewartDefault is 80.
7568445e34SChristian Brueffer.Pp
76b8d60729SRandall StewartNote that currently the only way to enable
77b8d60729SRandall Stewarthystart++ is to enable it via socket option.
78a9696510SRandall StewartWhen enabling it a value of 1 will enable precise internet-draft (version 4) behavior
79b8d60729SRandall Stewart(subject to any MIB variable settings), other setting (2 and 3) are experimental.
801adc28f5SChristian Brueffer.El
8168445e34SChristian Brueffer.Pp
82b8d60729SRandall StewartNote that hystart++ requires the TCP stack be able to call to the congestion
83b8d60729SRandall Stewartcontroller with both the
84b8d60729SRandall Stewart.Va newround
85b8d60729SRandall Stewartfunction as well as the
86b8d60729SRandall Stewart.Va rttsample
87b8d60729SRandall Stewartfunction.
88b8d60729SRandall StewartCurrently the only TCP stacks that provide this feedback to the
89b8d60729SRandall Stewartcongestion controller is rack.
9029f269dcSLawrence Stewart.Sh MIB Variables
91370efe5aSLawrence StewartThe algorithm exposes these variables in the
92370efe5aSLawrence Stewart.Va net.inet.tcp.cc.newreno
93370efe5aSLawrence Stewartbranch of the
94370efe5aSLawrence Stewart.Xr sysctl 3
95370efe5aSLawrence StewartMIB:
96370efe5aSLawrence Stewart.Bl -tag -width ".Va beta_ecn"
97370efe5aSLawrence Stewart.It Va beta
98370efe5aSLawrence StewartMultiplicative window decrease factor, specified as a percentage, applied to
99370efe5aSLawrence Stewartthe congestion window in response to a congestion signal per: cwnd = (cwnd *
100370efe5aSLawrence Stewartbeta) / 100.
101370efe5aSLawrence StewartDefault is 50.
102370efe5aSLawrence Stewart.It Va beta_ecn
103370efe5aSLawrence StewartMultiplicative window decrease factor, specified as a percentage, applied to
104370efe5aSLawrence Stewartthe congestion window in response to an ECN congestion signal when
105370efe5aSLawrence Stewart.Va net.inet.tcp.cc.abe=1
106370efe5aSLawrence Stewartper: cwnd = (cwnd * beta_ecn) / 100.
107370efe5aSLawrence StewartDefault is 80.
1081adc28f5SChristian Brueffer.El
10929f269dcSLawrence Stewart.Sh SEE ALSO
1108ea5eeb9SMichael Tuexen.Xr cc_cdg 4 ,
11129f269dcSLawrence Stewart.Xr cc_chd 4 ,
11229f269dcSLawrence Stewart.Xr cc_cubic 4 ,
1138ea5eeb9SMichael Tuexen.Xr cc_dctcp 4 ,
11429f269dcSLawrence Stewart.Xr cc_hd 4 ,
11529f269dcSLawrence Stewart.Xr cc_htcp 4 ,
11629f269dcSLawrence Stewart.Xr cc_vegas 4 ,
117f772f9feSLawrence Stewart.Xr mod_cc 4 ,
11829f269dcSLawrence Stewart.Xr tcp 4 ,
119f772f9feSLawrence Stewart.Xr mod_cc 9
120370efe5aSLawrence Stewart.Rs
121370efe5aSLawrence Stewart.%A "Mark Allman"
122370efe5aSLawrence Stewart.%A "Vern Paxson"
123370efe5aSLawrence Stewart.%A "Ethan Blanton"
124370efe5aSLawrence Stewart.%T "TCP Congestion Control"
125370efe5aSLawrence Stewart.%O "RFC 5681"
126370efe5aSLawrence Stewart.Re
127370efe5aSLawrence Stewart.Rs
128370efe5aSLawrence Stewart.%A "Naeem Khademi"
129370efe5aSLawrence Stewart.%A "Michael Welzl"
130370efe5aSLawrence Stewart.%A "Grenville Armitage"
131370efe5aSLawrence Stewart.%A "Gorry Fairhurst"
132370efe5aSLawrence Stewart.%T "TCP Alternative Backoff with ECN (ABE)"
13312b678e9SMichael Tuexen.%O "RFC 8511"
134370efe5aSLawrence Stewart.Re
13529f269dcSLawrence Stewart.Sh ACKNOWLEDGEMENTS
13629f269dcSLawrence StewartDevelopment and testing of this software were made possible in part by grants
13729f269dcSLawrence Stewartfrom the FreeBSD Foundation and Cisco University Research Program Fund at
13829f269dcSLawrence StewartCommunity Foundation Silicon Valley.
13929f269dcSLawrence Stewart.Sh HISTORY
14029f269dcSLawrence StewartThe
14129f269dcSLawrence Stewart.Nm
14229f269dcSLawrence Stewartcongestion control algorithm first appeared in its modular form in
14329f269dcSLawrence Stewart.Fx 9.0 .
14429f269dcSLawrence Stewart.Pp
145*767964fdSTom HukinsThis was the default congestion control algorithm in FreeBSD before
146*767964fdSTom Hukinsversion
147*767964fdSTom Hukins.Fx 14.0 ,
148*767964fdSTom Hukinsafter which
149*767964fdSTom Hukins.Xr cc_cubic 4
150*767964fdSTom Hukinsreplaced it.
151*767964fdSTom Hukins.Pp
15229f269dcSLawrence StewartThe module was first released in 2007 by James Healy and Lawrence Stewart whilst
153891b8ed4SLawrence Stewartworking on the NewTCP research project at Swinburne University of Technology's
154891b8ed4SLawrence StewartCentre for Advanced Internet Architectures, Melbourne, Australia, which was made
155891b8ed4SLawrence Stewartpossible in part by a grant from the Cisco University Research Program Fund at
156891b8ed4SLawrence StewartCommunity Foundation Silicon Valley.
15729f269dcSLawrence StewartMore details are available at:
15829f269dcSLawrence Stewart.Pp
15929f269dcSLawrence Stewarthttp://caia.swin.edu.au/urp/newtcp/
16029f269dcSLawrence Stewart.Sh AUTHORS
16129f269dcSLawrence Stewart.An -nosplit
16229f269dcSLawrence StewartThe
16329f269dcSLawrence Stewart.Nm
16429f269dcSLawrence Stewartcongestion control module was written by
1656c899950SBaptiste Daroussin.An James Healy Aq Mt jimmy@deefa.com ,
1666c899950SBaptiste Daroussin.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org
16729f269dcSLawrence Stewartand
1686c899950SBaptiste Daroussin.An David Hayes Aq Mt david.hayes@ieee.org .
16929f269dcSLawrence Stewart.Pp
170370efe5aSLawrence StewartSupport for TCP ABE was added by
171370efe5aSLawrence Stewart.An Tom Jones Aq Mt tj@enoti.me .
172370efe5aSLawrence Stewart.Pp
17329f269dcSLawrence StewartThis manual page was written by
1746c899950SBaptiste Daroussin.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org .
175