CUBIC TCP

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

CUBIC is an implementation of TCP with an optimized congestion control algorithm for high bandwidth networks with high latency (LFN: long fat networks).[1][2]

CUBIC TCP is implemented and used by default in Linux kernels 2.6.19 and above, as well as Windows 10.1709 Fall Creators Update, and Windows Server 2016 1709 update.[3]

Characteristics[edit]

It is a less aggressive and more systematic derivative of BIC TCP, in which the window size is a cubic function of time since the last congestion event, with the inflection point 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.[4]

Another major difference between CUBIC and standard TCP flavors is that it does not rely on the cadence of RTTs to increase the window size.[5] CUBIC's window size is dependent only on the last congestion event. With standard TCP, flows with very short round-trip delay times (RTTs) will receive ACKs faster and therefore have their congestion windows grow faster than other flows with longer RTTs. CUBIC allows for more fairness between flows since the window growth is independent of RTT.

Algorithm[edit]

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
 wmax:   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

Then cwnd can be modeled by:

See also[edit]

References[edit]

  1. ^ Sangtae Ha; Injong Rhee; Lisong Xu (July 2008). "CUBIC: A New TCP-Friendly High-Speed TCP Variant" (PDF). ACM SIGOPS Operating System Review. 42 (5): 64–74. doi:10.1145/1400097.1400105.
  2. ^ Sangtae Ha; Injong Rhee; Lisong Xu; Lars Eggert; Richard Scheffenegger (February 2018). CUBIC for Fast Long-Distance Networks. doi:10.17487/RFC8312. RFC 8312.
  3. ^ Microsoft (November 15, 2017). "Updates on Windows TCP" (PDF).
  4. ^ Tetcos Engineering (2014). "Comparison of TCP congestion control algorithms" (PDF). Archived (PDF) from the original on March 31, 2017. Retrieved August 6, 2017.
  5. ^ La Rosa, Alexander (10 July 2019). "Why does CUBIC take us back to TCP congestion control?". Pandora FMS. Archived from the original (html) on 12 July 2019. Retrieved 12 July 2019. The intention is to have an algorithm that works with congestion windows whose incremental processes are more aggressive, but are restricted from overloading the network. In order to achieve this, it is proposed that the scheme for increasing and decreasing the transmission ratio be established according to a cubic function.

External links[edit]