cc_newreno —
NewReno Congestion Control Algorithm
#include
<netinet/cc/cc_newreno.h>
The NewReno congestion control algorithm is the default for TCP. Details about
the algorithm can be found in RFC5681.
The
cc_newreno module supports a number of socket
options under TCP_CCALGOOPT (refer to
tcp(4) and
moc_cc(9) for details) which can be set with
setsockopt(2) and tested with
getsockopt(2). The
cc_newreno socket options use this structure
defined in <sys/netinet/cc/cc_newreno.h>:
struct cc_newreno_opts {
int name;
uint32_t val;
}
- CC_NEWRENO_BETA
- Multiplicative window decrease factor, specified as a
percentage, applied to the congestion window in response to a congestion
signal per: cwnd = (cwnd * CC_NEWRENO_BETA) / 100. Default is 50.
- CC_NEWRENO_BETA_ECN
- Multiplicative window decrease factor, specified as a
percentage, applied to the congestion window in response to an ECN
congestion signal when
net.inet.tcp.cc.abe=1 per: cwnd = (cwnd *
CC_NEWRENO_BETA_ECN) / 100. Default is 80.
The algorithm exposes these variables in the
net.inet.tcp.cc.newreno branch of the
sysctl(3) MIB:
- beta
- Multiplicative window decrease factor, specified as a
percentage, applied to the congestion window in response to a congestion
signal per: cwnd = (cwnd * beta) / 100. Default is 50.
- beta_ecn
- Multiplicative window decrease factor, specified as a
percentage, applied to the congestion window in response to an ECN
congestion signal when
net.inet.tcp.cc.abe=1 per: cwnd = (cwnd *
beta_ecn) / 100. Default is 80.
cc_chd(4),
cc_cubic(4),
cc_hd(4),
cc_htcp(4),
cc_vegas(4),
mod_cc(4),
tcp(4),
mod_cc(9)
Mark Allman,
Vern Paxson, and Ethan
Blanton, TCP Congestion Control,
RFC 5681.
Naeem Khademi,
Michael Welzl, Grenville
Armitage, and Gorry Fairhurst,
TCP Alternative Backoff with ECN (ABE),
RFC 8511.
Development and testing of this software were made possible in part by grants
from the FreeBSD Foundation and Cisco University Research Program Fund at
Community Foundation Silicon Valley.
The
cc_newreno congestion control algorithm first
appeared in its modular form in
FreeBSD 9.0.
The module was first released in 2007 by James Healy and Lawrence Stewart whilst
working on the NewTCP research project at Swinburne University of Technology's
Centre for Advanced Internet Architectures, Melbourne, Australia, which was
made possible in part by a grant from the Cisco University Research Program
Fund at Community Foundation Silicon Valley. More details are available at:
http://caia.swin.edu.au/urp/newtcp/
The
cc_newreno congestion control module was
written by
James Healy
<
[email protected]>,
Lawrence Stewart
<
[email protected]>
and
David Hayes
<
[email protected]>.
Support for TCP ABE was added by
Tom Jones
<
[email protected]>.
This manual page was written by
Lawrence
Stewart
<
[email protected]>.