Английская Википедия:CUBIC TCP

Материал из Онлайн справочника
Версия от 18:13, 13 февраля 2024; EducationBot (обсуждение | вклад) (Новая страница: «{{Английская Википедия/Панель перехода}} {{Short description|TCP congestion avoidance algorithm}} {{Use American English|date=January 2019}} {{Use mdy dates|date=January 2019}} {{refimprove|date=January 2016}} '''CUBIC''' is a network congestion avoidance algorithm for TCP which can achieve high bandwidth connections over networks more quickly and reliably in...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:Use American English Шаблон:Use mdy dates Шаблон:Refimprove CUBIC is a network congestion avoidance 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.[1][2]

In 2006, the first CUBIC implementation was released in Linux kernel 2.6.13.[3] Since kernel version 2.6.19,[4] CUBIC replaces BIC-TCP as the default TCP congestion control algorithm in the Linux kernel.[3]

MacOS adopted TCP CUBIC with the OS X Yosemite release in 2014,[5][6] while the previous release OS X Mavericks still used TCP New Reno.[7][8]

Microsoft adopted it by default in Windows 10.1709 Fall Creators Update (2017), and Windows Server 2016 1709 update.[9]

Characteristics

CUBIC 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.[10]

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.[11] 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 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

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

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:

<math display=block>\begin{array}{lcr} cwnd \ = \ C(T-K)^3 + w_Шаблон:Max \\ \textrm{where} \ K = \sqrt[3]{\frac{w_Шаблон:Max(1-\beta)}{C}} \end{array}</math>

See also

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[12]

References

Шаблон:Reflist

External links

Шаблон:Compu-network-stub

  1. Ошибка цитирования Неверный тег <ref>; для сносок Sangtae and Injong and Xu, NCSU, 2008 не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок RFC8312 не указан текст
  3. 3,0 3,1 Шаблон:Cite journal
  4. Шаблон:Cite web
  5. Шаблон:Cite web TCP Congestion Control is implemented in the XNU Kernel, this commit references the XNU Kernel used in Mac OS X Yosemite
  6. Шаблон:Cite webHeader file of the TCP congestion control implementation of the XNU Kernel used in Mac OS X Yosemite stating CUBIC as default
  7. Шаблон:Cite webReferences XNU Kernel used in Mac OS X Mavericks
  8. Шаблон:Cite web Header file of the TCP congestion control implementation of the XNU Kernel used in Mac OS X Mavericks stating New Reno as default
  9. Ошибка цитирования Неверный тег <ref>; для сносок Microsoft, 2017 не указан текст
  10. Ошибка цитирования Неверный тег <ref>; для сносок Tetcos, 2014 не указан текст
  11. Ошибка цитирования Неверный тег <ref>; для сносок La Rosa, Pandora FMS, 2019 не указан текст
  12. Шаблон:Cite web