КУБИЧЕСКИЙ TCP
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2016 г. ) |
CUBIC — это алгоритм предотвращения перегрузки сети для TCP , который позволяет быстрее и надежнее обеспечивать соединения с высокой пропускной способностью в условиях высокой задержки, чем более ранние алгоритмы. Это помогает оптимизировать длинные жирные сети . [ 1 ] [ 2 ]
В 2006 году была выпущена первая реализация CUBIC в ядре Linux 2.6.13 . [ 3 ] Начиная с версии ядра 2.6.19, [ 4 ] CUBIC заменяет BIC-TCP в качестве алгоритма управления перегрузкой TCP по умолчанию в ядре Linux. [ 3 ]
MacOS приняла TCP CUBIC с выпуском OS X Yosemite в 2014 году. [ 5 ] [ 6 ] в то время как предыдущий выпуск OS X Mavericks все еще использовал TCP New Reno. [ 7 ] [ 8 ]
Microsoft приняла его по умолчанию в обновлении Windows 10.1709 Fall Creators Update (2017) и обновлении Windows Server 2016 1709. [ 9 ]
Характеристики
[ редактировать ]CUBIC — это менее агрессивная и более систематическая производная от BIC TCP , в которой размер окна является кубической функцией времени с момента последнего события перегрузки, при этом точка перегиба устанавливается на размер окна до события. Поскольку это кубическая функция, рост окна состоит из двух компонентов. Первая представляет собой вогнутую часть, где размер окна быстро увеличивается до размера, существовавшего до последнего события перегрузки. Далее следует выпуклый рост, когда CUBIC ищет большую пропускную способность, сначала медленно, а затем очень быстро. CUBIC проводит много времени на плато между вогнутой и выпуклой областью роста, что позволяет сети стабилизироваться до того, как CUBIC начнет искать дополнительную пропускную способность. [ 10 ]
Еще одно важное различие между CUBIC и многими более ранними алгоритмами TCP заключается в том, что он не полагается на частоту RTT для увеличения размера окна. [ 11 ] Размер окна CUBIC зависит только от последнего события перегрузки. При использовании более ранних алгоритмов, таких как TCP New Reno, потоки с очень короткими временами двусторонней задержки (RTT) будут получать ACK быстрее и, следовательно, их окна перегрузки будут расти быстрее, чем у других потоков с более длинными RTT. CUBIC обеспечивает большую справедливость между потоками, поскольку рост окна не зависит от RTT.
Алгоритм
[ редактировать ]CUBIC увеличивает свое окно, чтобы оно зависело от реального времени, а не от RTT, как BIC. Расчет cwnd (окна перегрузки) также проще, чем BIC.
Определите следующие переменные:
- β : коэффициент мультипликативного уменьшения.
- w max : Размер окна непосредственно перед последним уменьшением.
- T : время, прошедшее с момента последнего сокращения окна.
- C : константа масштабирования
- cwnd : Окно перегрузки в текущий момент.
RFC 8312 указывает следующее:
- Единицей измерения всех размеров окон в этом документе являются сегменты максимального размера сегмента (MSS), а единицей измерения всех времен — секунды. (Раздел 4)
- β СЛЕДУЕТ установить равным 0,7 (раздел 4.5).
- C СЛЕДУЕТ установить на 0,4 (раздел 5).
Тогда cwnd можно смоделировать следующим образом:
См. также
[ редактировать ]- Алгоритм предотвращения перегрузки TCP
- Протокол управления передачей § Разработка
- SCTP
- Соединение TCP
Помимо оконных алгоритмов, таких как Cubic, существуют алгоритмы, основанные на скорости (включая BBR от Google), которые работают по-другому, используя «скорость отправки» вместо окна. [ 12 ]
Ссылки
[ редактировать ]- ^ Сангтэ Ха; Инджонг Ри; Лисонг Сюй (июль 2008 г.). «CUBIC: новый высокоскоростной вариант TCP, дружественный к TCP» (PDF) . Обзор операционных систем ACM SIGOPS . 42 (5): 64–74. дои : 10.1145/1400097.1400105 . S2CID 9391153 . Архивировано из оригинала (PDF) 26 июля 2015 года . Проверено 29 сентября 2015 г.
- ^ Сангтэ Ха; Инджонг Ри; Лисонг Сюй; Ларс Эггерт; Ричард Шеффенеггер (февраль 2018 г.). CUBIC для быстрых сетей дальней связи . дои : 10.17487/RFC8312 . RFC 8312 .
- ^ Перейти обратно: а б Ха, Сангте; Ри, Инджонг; Сюй, Лисонг (2008). «CUBIC: новый высокоскоростной вариант TCP, дружественный к TCP». Обзор операционных систем ACM SIGOPS . 42 . ACM Нью-Йорк, штат Нью-Йорк, США: 11. doi : 10.1145/1400097.1400105 . S2CID 9391153 .
{{cite journal}}
: CS1 maint: дата и год ( ссылка ) - ^ «[TCP]: сделать кубическим по умолчанию · torvalds/Linux@597811e» . Гитхаб .
- ^ «apple-oss-distributions/distribution-macOS в os-x-1010» . Гитхаб . Контроль перегрузки TCP реализован в ядре XNU, этот коммит ссылается на ядро XNU, используемое в Mac OS X Yosemite.
- ^ «xnu/tcp_cc.h at a3bb9fcc43a00154884a30c9080595284c26cec9 · apple-oss-distributions/xnu» . Гитхаб . 29 апреля 2022 г. Заголовочный файл реализации управления перегрузкой TCP ядра XNU, используемого в Mac OS X Yosemite, с указанием CUBIC по умолчанию.
- ^ «apple-oss-distributions/distribution-macOS at os-x-1095» . Гитхаб . Ссылки Ядро XNU, используемое в Mac OS X Mavericks
- ^ «xnu/tcp_cc.h at d2a0abf2ede8152c5a107fe51e032c1193d2015b · apple-oss-distributions/xnu» . Гитхаб . 29 апреля 2022 г. Заголовочный файл реализации управления перегрузкой TCP ядра XNU, используемого в Mac OS X Mavericks, с указанием New Reno по умолчанию.
- ^ Microsoft (15 ноября 2017 г.). «Обновления Windows TCP» (PDF) .
- ^ Теткос Инжиниринг (2014). «Сравнение алгоритмов контроля перегрузки TCP» (PDF) . Архивировано (PDF) из оригинала 31 марта 2017 г. Проверено 6 августа 2017 г.
- ^ Ла Роза, Александр (10 июля 2019 г.). «Почему CUBIC возвращает нас к контролю перегрузки TCP?» . Пандора ФМС . Архивировано из оригинала (html) 12 июля 2019 года . Проверено 12 июля 2019 г.
Целью является создание алгоритма, работающего с окнами перегрузки, инкрементные процессы которых более агрессивны, но не позволяют перегружать сеть. Для этого предлагается схему повышения и понижения передаточного отношения устанавливать по кубической функции.
- ^ «Контроль перегрузки, скорость модуля ядра PK3C на основе серверов потокового видео и данных» . Гитхаб . Проверено 1 августа 2021 г.