Головна Мережі та Теорія графів Контроль перевантаження TCP

🌐 Контроль перевантаження TCP

Вікно перевантаження TCP у дії: подвоєння на повільному старті, адитивне зростання AIMD і мультиплікативне зменшення при втраті (Tahoe/Reno/CUBIC). Дивіться пилку cwnd і заповнення/скидання буфера.

Мережі та Теорія графів2DСкладний60 FPS
tcp-congestion ↗ Відкрити окремо
DRAG · SCROLL · CLICK — керуйте прямо у вікні симуляції.

Схожі симуляції

Про цю симуляцію

Цей симулятор виконує справжній цикл контролю перевантаження TCP крок за кроком (RTT за RTT): cwnd подвоюється кожен раунд-трип під час повільного старту, перемикається на лінійне адитивне зростання в режимі уникнення перевантаження, щойно перевищує ssthresh, і мультиплікативно зрізається в момент, коли переповнюється буфер вузького місця або трапляється випадкова втрата. Перемикайтеся між Tahoe, Reno, NewReno та варіантом у стилі CUBIC, щоб побачити, як кожен по-різному відкочується назад, і налаштовуйте пропускну здатність, RTT, розмір буфера й рівень втрат, щоб відтворити нестабільні бездротові канали, крихітні буфери маршрутизаторів або шляхи з високим добутком пропускної здатності на затримку.

🔬 Що показано

Класична пилка cwnd: блакитне експоненційне зростання під час повільного старту, фіолетове лінійне зростання під час уникнення перевантаження та червоне падіння при втраті, коли переповнюється буфер вузького місця (показаний у діаграмі каналу) або скидається випадковий пакет.

🎮 Як користуватися

Налаштуйте пропускну здатність вузького місця, RTT, розмір буфера та рівень випадкових втрат, оберіть варіант алгоритму (Reno, Tahoe, у стилі CUBIC, NewReno) або завантажте пресет (Ideal link, Lossy wireless, Small buffer, High BDP) і спостерігайте, як фаза, cwnd, ssthresh, пропускна здатність і втрати оновлюються в реальному часі.

💡 Чи знали ви?

Tahoe скидає cwnd аж до 1 пакета при будь-якій втраті й перезапускає повільний старт з нуля, тоді як Reno та NewReno лише зменшують cwnd удвічі й одразу повертаються в режим уникнення перевантаження — одна з причин, чому TCP родини Reno відновлюють пропускну здатність значно швидше після втрати одного пакета.

Часті запитання

Що таке вікно перевантаження (cwnd)?

Це кількість пакетів, яку відправник TCP може мати в польоті без підтвердження. Воно починається з 1 пакета і зростає відповідно до поточної фази — повільного старту або уникнення перевантаження — доки втрата не змусить його зменшитися.

Що спричиняє пилкоподібний візерунок?

cwnd продовжує зростати (експоненційно під час повільного старту, потім лінійно під час уникнення), доки не перевищить те, що може поглинути канал і буфер вузького місця. Пакет скидається, cwnd мультиплікативно зрізається, і зростання починається знову — повторення цього циклу малює знайому пилку.

Що таке ssthresh?

Це поріг повільного старту: значення cwnd, при якому відправник перемикається з подвоєння кожен RTT на додавання приблизно одного пакета за RTT. Він встановлюється на половину cwnd одразу після втрати, тому й знижується з кожним падінням пилки.

Чим CUBIC відрізняється від Reno?

Reno збільшує cwnd лінійно незалежно від того, скільки часу минуло з останньої втрати. Зростання у стилі CUBIC тут слідує кубічній функції часу з моменту останньої втрати, повільно зростаючи одразу після відкату, а потім прискорюючись назад до попереднього розміру вікна — корисно на шляхах з високим добутком пропускної здатності на затримку, де саме лише лінійне зростання відновлює пропускну здатність надто повільно.

Чому малий буфер спричиняє частіші втрати?

Малий буфер вузького місця заповнюється, щойно cwnd трохи перевищує пропускну здатність каналу, тому він переповнюється швидше й частіше, ніж великий буфер — спробуйте пресет «Small buffer» і порівняйте частоту пилки з «Ideal link».