CUBIC is a
network congestion avoidance
Network congestion in data networking and queueing theory is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle. Typical effects include queueing delay, packet loss or the blocking of ...
algorithm for
TCP which can achieve high bandwidth connections over networks more quickly and reliably in the face of high latency than earlier algorithms. It helps optimize
long fat networks.
In 2006, the first CUBIC implementation was released in
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
kernel 2.6.13.
Since kernel version 2.6.19, CUBIC replaces
BIC-TCP as the default TCP congestion control algorithm in the Linux kernel.
MacOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
adopted TCP CUBIC with the
OS X Yosemite
OS X Yosemite ( ; version 10.10) is the eleventh major release of macOS, Apple Inc.'s desktop and server operating system for Macintosh computers.
OS X Yosemite was announced and released to developers on June 2, 2014, at WWDC 2014 and rel ...
release in 2014, while the previous release
OS X Mavericks
OS X Mavericks (version 10.9) is the 10th major release of macOS, Apple Inc.'s desktop and server operating system for Macintosh computers. OS X Mavericks was announced on June 10, 2013, at WWDC 2013, and was released on October 22, 2013, worl ...
still used TCP New Reno.
Microsoft adopted it by default in
Windows 10.1709 Fall Creators Update (2017), and Windows Server 2016 1709 update.
Characteristics
CUBIC is a less aggressive and more systematic derivative of
BIC TCP
BIC TCP (Binary Increase Congestion control) is one of the congestion control algorithms that can be used for Transmission Control Protocol (TCP). BIC is optimized for high speed networks with high latency: so-called "long fat networks". For t ...
, in which the window size is a
cubic function
In mathematics, a cubic function is a function of the form f(x)=ax^3+bx^2+cx+d
where the coefficients , , , and are complex numbers, and the variable takes real values, and a\neq 0. In other words, it is both a polynomial function of degree ...
of time since the last congestion event, with the
inflection point
In differential calculus and differential geometry, an inflection point, point of inflection, flex, or inflection (British English: inflexion) is a point on a smooth plane curve at which the curvature changes sign. In particular, in the case of ...
set to the window size prior to the event. Because it is a cubic function, there are two components to window growth. The first is a concave portion where the window size quickly ramps up to the size before the last congestion event. Next is the convex growth where CUBIC probes for more bandwidth, slowly at first then very rapidly. CUBIC spends a lot of time at a plateau between the concave and convex growth region which allows the network to stabilize before CUBIC begins looking for more bandwidth.
Another major difference between CUBIC and many earlier TCP algorithms is that it does not rely on the cadence of RTTs to increase the window size.
CUBIC's window size is dependent only on the last congestion event. With earlier algorithms like TCP New Reno, flows with very short
round-trip delay time
In telecommunications, round-trip delay (RTD) or round-trip time (RTT) is the amount of time it takes for a signal to be sent ''plus'' the amount of time it takes for acknowledgement of that signal having been received. This time delay includes pr ...
s (RTTs) will receive ACKs faster and therefore have their congestion windows grow faster than other flows with longer RTTs. CUBIC allows for more
fairness
Fairness or being fair can refer to:
* Justice
* The character in the award-nominated musical comedy '' A Theory of Justice: The Musical.''
* Equity (law), a legal principle allowing for the use of discretion and fairness when applying justice ...
between flows since the window growth is independent of RTT.
Algorithm
CUBIC increases its window to be real-time dependent, not RTT dependent like BIC. The calculation for cwnd (congestion window) is simpler than BIC, too.
Define the following variables:
* ''β'': Multiplicative decrease factor
* ''w''
max: Window size just before the last reduction
* ''T'': Time elapsed since the last window reduction
* ''C'': A scaling constant
* ''cwnd'': The congestion window at the current time
RFC 8312 indicates the following:
* The unit of all window sizes in this document is segments of the maximum segment size (MSS), and the unit of all times is seconds. (Section 4)
* ''β'' SHOULD be set to 0.7 (Section 4.5)
* ''C'' SHOULD be set to 0.4 (Section 5)
Then cwnd can be modeled by:
See also
*
TCP congestion avoidance algorithm
Transmission Control Protocol (TCP) uses a network congestion-avoidance algorithm that includes various aspects of an additive increase/multiplicative decrease (AIMD) scheme, along with other schemes including #Slow start, slow start and #Conge ...
*
*
SCTP
The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the p ...
*
Compound TCP
Compound TCP (CTCP) is a Microsoft algorithm that was introduced as part of the Windows Vista and Window Server 2008 TCP stack. It is designed to aggressively adjust the sender's congestion window to optimise TCP for connections with large ban ...
Apart from window based algorithms like Cubic, there are rate based algorithms (including BBR from Google) that works differently using "sending rate" instead of the window
References
External links
BIC & CUBIC Home Page at NC State University
TCP congestion control
{{compu-network-stub