TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) — это алгоритм управления перегрузкой в сетях, разработанный Google. В отличие от классических алгоритмов (например, CUBIC), которые реагируют на потерю пакетов как на признак перегрузки, BBR фокусируется на измерении реальной пропускной способности канала и времени задержки (RTT) для оптимизации передачи данных.
Как работает TCP BBR?
- Измерение параметров сети:
- Bottleneck Bandwidth (максимальная пропускная способность «узкого места» в сети).
- Round-Trip Time (время оборота пакета от отправителя к получателю и обратно).
- Адаптация скорости передачи:
- Отправляет данные со скоростью, которая не превышает пропускную способность канала.
- Динамически регулирует размер «окна» передачи, чтобы избежать перегрузок.
- Фазы работы:
- Startup: быстро наращивает скорость до заполнения канала.
- Drain: снижает скорость для устранения очередей в буферах.
- ProbeBW: постоянно тестирует сеть, ища максимальную доступную полосу.
- ProbeRTT: периодически измеряет минимальный RTT для калибровки.
Преимущества BBR:
- Выше скорость: эффективнее использует доступную полосу пропускания (на 10–40% быстрее, чем CUBIC).
- Ниже задержки: уменьшает RTT за счет избегания переполнения буферов.
- Устойчивость к потере пакетов: не снижает скорость резко при случайных потерях (актуально для Wi-Fi и мобильных сетей).
- Стабильность: предсказуемая работа в условиях нестабильных сетей.
Где используется?
- Google внедрила BBR в YouTube, Google Cloud, QUIC-протокол.
- CDN-сети (Cloudflare, Akamai) для ускорения доставки контента.
- Стриминговые сервисы (Netflix, Twitch) для минимизации буферизации.
- Спутниковый интернет (Starlink) из-за высокой чувствительности к задержкам.
Сравнение с CUBIC:
Параметр | BBR | CUBIC |
---|---|---|
Основа | Измерение полосы и RTT | Реакция на потерю пакетов |
Скорость | Стабильная, близкая к максимуму | Колеблется |
Задержки | Ниже | Выше |
Потери пакетов | Менее критичны | Вызывают резкое снижение скорости |
Пример работы:
Если канал имеет пропускную способность 100 Мбит/с и RTT 50 мс:
- CUBIC будет «дробить» скорость при потере пакетов, даже если сеть не перегружена.
- BBR определит, что канал может стабильно передавать 100 Мбит/с, и будет поддерживать эту скорость, игнорируя случайные потери.
Ограничения:
- Неэффективен в сетях с сильной конкуренцией за полосу (например, публичный Wi-Fi).
- Требует поддержки на уровне ОС (реализован в ядре Linux с версии 4.9).
BBR — революция в управлении сетевым трафиком, особенно для высокоскоростных и «длинных» каналов (межконтинентальные соединения). Однако его эффективность зависит от конкретных условий сети.