предисловие
В прошлый раз я кратко представил характеристики и основные идеи реализации BBR, но BBR — это не существование идеального разгрома всех остальных алгоритмов. В июле 2018 г. Google выпустила план улучшения, связанный с BBR.В настоящее время существуют пробные документы для альфа-версии BBR v2, а официальная версия еще не выпущена. Поэтому с помощью обновленного содержания BBR v2 кратко резюмируем некоторые недостатки или недостатки BBR.
Содержание обновления плана BBR V2
- Улучшите справедливость при сосуществовании с другими алгоритмами: отрегулируйте время полосы пропускания зонда BBR, чтобы оно сосуществовало с CUBIC/Reno.
- Уменьшите давление в очереди (потеря пакетов и задержка в очереди), примите во внимание потерю пакетов и ECN при расчете следующих показателей.
- Область безопасности для данных в полете
- Когда выходить из STARTUP
- Ускорить сходимость min_rtt: увеличить частоту PROBE_RTT
- Уменьшите крайности, когда PROBE_RTT
Новая модель расчета объема данных в полете
Версия v2 использует новую модель для расчета диапазона размеров данных в полете, которая содержит три параметра: inflight_lo, inflight_high, inflight_prob.
- inflight_lo: минимальное значение пакетов в пути, рассчитанное на основе потери пакетов и сигнала ECN.
- inflight_hi: максимальное значение пакетов в пути до потери пакетов и сигнала ECN
- inflight_prob: увеличение за пределы inflight_hi при проверке пропускной способности.
Стадия ЗАПУСКА
В BBR v1 STARTUP продолжит увеличивать скорость отправки до тех пор, пока обнаруженная максимальная пропускная способность не выровняется, а затем завершится. Однако на этом этапе не учитываются потери пакетов, поэтому на этапе ЗАПУСКА могут произойти серьезные потери пакетов. В версии v2 в условие выхода фазы STARTUP добавлен пункт: при обнаружении потери пакета или ECN фаза STARTUP также будет выходить досрочно, а переменная inflight_hi одновременно будет обновляться. Другая модификация фазового режима STARTUP заключается в изменении коэффициента усиления окна перегрузки с 2,89 до 2. Это изменение усугубит проблему простоя, вызванную агрегацией ACK, и BBR предлагает решение этой проблемы — BBR Extra-CWND, которого здесь не так уж много. , я узнаю больше об этом позже.
стадия СЛИВА
Фаза DRAIN замедляет отправку, пытаясь сбросить кэш промежуточного устройства до тех пор, пока передаваемые данные не станут меньше, чем расчетная пропускная способность («слив до цели»). Этот этап не изменился.
Этап PROBE_BW
В версии v2 PROBE_BW разделен на три этапа: круиз (стабильный), повышение (проверка большей пропускной способности) и понижение (конвергенция к доступной пропускной способности). При этом для сосуществования с другими алгоритмами, основанными на потере пакетов, продолжительность цикла PROBE_BW составляет уже не 8 min_rtt, а min(T_bbr, T_reno), T_bbr — временной диапазон 2-5 с, а T_reno — мин(BDP, 50) * RTT . Время истечения BDP — это не последние десять раундов, а более длинные 2 цикла PROBE_BW.
cruise
В версии v1 стационарная фаза будет поддерживать постоянное значение inflight, в то время как версия v2 будет резервировать часть пространства (отдавать его другим соединениям), так что inflight находится между inflight_lo и inflight_hi и будет уменьшаться в соответствии с к потере пакетов и событиям ECN Значение inflight_lo.
up
В версии v1 скорость передачи просто увеличивалась на 1/4 при обнаружении большей пропускной способности, в то время как в версии v2 применялся метод экспоненциального роста, при котором доступная пропускная способность определялась сначала медленно, а затем быстро, до тех пор, пока не произойдет потеря пакетов или пока не будет получена новая доступная пропускная способность. больше, чем ожидаемая пропускная способность. В 1,25 раза больше расчетной пропускной способности, а inflight_hi будет обновляться при потере пакетов.
down
В версии v1 каждая конвергенция будет уменьшаться только на 1/4, в то время как в версии v2 напрямую используется стратегия «слива до цели», которая будет напрямую сходиться к расчетной пропускной способности. Эта последующая фаза может непосредственно заменить фазу DRAIN.
Этап PROBE_RTT
В версии v1 при входе на этап PROBE_RTT для обнаружения min_RTT окно будет напрямую уменьшено до 4. В то же время, чтобы минимизировать влияние снижения пропускной способности, вызванного PROBE_RTT, частота PROBE_RTT относительно низкий (каждые 10 с). Это делает сходимость BBR очень медленной (обычно занимает 20-30 секунд). В v2 были внесены два улучшения:
- Уменьшение окна более умеренное, уже не 4, а 0,75*BDP.
- Проверяйте чаще, теперь не каждые 10 секунд, а каждые 2,5 секунды.
Благодаря такой настройке PROBE_RTT не так агрессивен, и скорость сходимости может быть эффективно улучшена.
Суммировать
Версия BBR v2, как правило, более консервативна, учитывая потерю пакетов и ECN, а также принимая во внимание сосуществование других алгоритмов.
Приложение: ECN — это явное уведомление о перегрузке, которое может уведомить оба конца сети о перегрузке посредством явного уведомления. За подробностями обращайтесь к Википедии.