Qwiki

CUBIC TCP: A Congestion Avoidance Algorithm

CUBIC TCP is an advanced network congestion avoidance algorithm specifically designed for the Transmission Control Protocol, which is widely used for managing internet connections. Unlike earlier algorithms, CUBIC is tailored to achieve high bandwidth connections more reliably and efficiently, particularly over networks with substantial bandwidth-delay products.

Background and Development

CUBIC TCP is a derivative of Binary Increase Congestion (BIC) TCP, which was initially implemented in Linux kernels 2.6.8 and later. The CUBIC algorithm later became the default in subsequent Linux kernels starting from version 2.6. This progression marked a significant shift in how congestion control was managed in Linux-based systems.

Mechanism

The primary innovation of CUBIC lies in its use of a cubic function to model the window size of data packets over time, specifically since the last congestion event. This cubic function provides two notable components to the growth of the congestion window:

  1. Independence from Round-Trip Time (RTT): Unlike traditional algorithms such as TCP New Reno, where the congestion window growth was heavily reliant on the cadence of RTTs, CUBIC decouples window size growth from RTTs. This means that the algorithm does not unfairly advantage flows with shorter RTTs, allowing for more equitable bandwidth allocation across different network conditions.

  2. Cubic Growth of Congestion Window: The cubic function allows the window to expand more aggressively after a congestion event has subsided, which accelerates the time required to reach maximum throughput again. The inflection point of the cubic curve is set to the window size before the last congestion event, allowing for a smooth and efficient recovery.

Advantages

  • Scalability: CUBIC TCP is particularly effective in environments with large bandwidth-delay products, making it well-suited for high-speed wide area networks.
  • Fairness: By making the window growth independent of RTTs, CUBIC ensures fairer distribution of resources among competing flows, which is especially beneficial in mixed networks with varied RTTs.
  • Stability: The algorithm's design minimizes oscillations in window size, providing a more stable connection over time.

Implementation and Usage

CUBIC has been widely adopted across various systems and platforms due to its ability to efficiently manage high-speed internet connections. It is used by default in several operating systems, including versions of the Linux kernel. Additionally, CUBIC TCP is part of the TCP congestion control suite, which includes other protocols like Compound TCP and TCP Veno.

Related Topics

CUBIC TCP continues to be a critical component for achieving reliable and efficient data transmission across complex network infrastructures. Its innovative approach to congestion avoidance has significantly influenced the design and implementation of modern TCP/IP protocols.