Термин

Congestion control

Короткое определение

Алгоритм, по которому транспорт определяет, с какой скоростью передавать данные, чтобы не перегрузить сеть. CUBIC – долгое время был стандартным алгоритмом TCP, BBR всё чаще применяется в стриминге.

Контроль перегрузки – это механизм обратной связи, который не позволяет транспорту заполнить все буферы маршрутизаторов между отправителем и получателем. Классическая модель – additive increase, multiplicative decrease (AIMD) – постепенно увеличивает скорость передачи до тех пор, пока не обнаружится потеря пакета, после чего резко снижает её вдвое. CUBIC (RFC 8312, февраль 2018) – это улучшение AIMD, которое быстрее восстанавливается после потерь и более десяти лет является стандартным алгоритмом контроля перегрузки в TCP в Linux.

Для стриминга выбор алгоритма управления перегрузками особенно важен, потому что видеопоток имеет всплесковый характер и требует много пропускной способности. CUBIC хорошо работает на длинных каналах с высокой пропускной способностью и низкими потерями, но склонен переполнять буферы в сотовых сетях, вызывая задержку из-за bufferbloat, которую система ошибочно интерпретирует как потери пакетов. BBR (Bottleneck Bandwidth and Round-trip propagation time – разработан Google в 2016 году, последняя версия BBRv3 – в 2023) напрямую моделирует пропускную способность узкого места и целевой RTT, обеспечивая более высокий throughput на каналах с потерями и меньшую задержку при высокой нагрузке. Большинство крупных CDN предлагают BBR по выбору, а YouTube использует его по умолчанию уже много лет.

У WebRTC есть собственный контроль перегрузки – Google Congestion Control (GCC) и Transport-CC, который работает на уровне выше транспортного и реагирует на задержку пакетов, а не на их потери. Выбор алгоритма контроля перегрузки остаётся незаметным для пользователя, но ощущается при эксплуатации: CDN-узел, переключённый с CUBIC на BBR, может вдвое увеличить пропускную способность одной сессии по нестабильному 5G-аплинку без каких-либо других изменений.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.