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

Алгоритм congestion control от Google, моделирующий ёмкость бутылочного горлышка и минимальный RTT напрямую, а не реагирующий на потери. Больший throughput на путях с потерями и меньшая задержка под нагрузкой.

BBR – Bottleneck Bandwidth and Round-trip propagation time – Google опубликовала в 2016, и за два года BBR заменил CUBIC как дефолт собственных сервисов Google. Где CUBIC выводит congestion из потерь, BBR непрерывно оценивает два свойства пути: доступную полосу бутылочного горлышка (по delivery rate) и минимальный RTT пути (по наблюдаемым RTT). Затем BBR pacing-ует отправку по bandwidth-delay product, удерживая ровно столько данных в полёте, чтобы заполнить трубу без очередей.

Для стриминга практический выигрыш – на сотовых и Wi-Fi-путях. CUBIC трактует случайные радио-потери как congestion и отступает, теряя полосу. BBR продолжает слать на оценочной скорости и поглощает потери ретрансмитами. Результат – устойчивый throughput на линках, которые раньше залипали на 20 % ёмкости. BBRv2 (2019) добавил явную справедливость к CUBIC-потокам; BBRv3 (2023) уточнил оценку полосы и pacing при переменной congestion.

BBR доступен в mainline Linux с ядра 4.9, в QUIC- и HTTP/3-реализациях Google и опционально на большинстве крупных CDN. Минус: BBR может быть агрессивнее CUBIC сам к себе в сценариях с общим буфером, давая per-flow несправедливость внутри CDN POP. Большинство операторов используют BBR на стороне сервера (где они контролируют оба конца) и оставляют CUBIC на клиенте.

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

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