LEDBAT

12.03.2021

Низкая дополнительная задержка фонового транспорта ( LEDBAT ) - это способ быстрой передачи данных в Интернете без засорения сети. LEDBAT был изобретен Станиславом Шалуновым и используется Apple для обновлений программного обеспечения и BitTorrent в большинстве своих передач, а также при распространении программного обеспечения Microsoft SCCM. По оценкам, LEDBAT будет переносить 13—20 % интернет-трафика. LEDBAT — это алгоритм управления перегрузкой, основанный на задержке, который использует всю доступную полосу пропускания при ограничении увеличения задержки. Он делает это путем измерения односторонней задержки и использования изменений в измерениях, чтобы ограничить перегрузку, которую вызывает сам поток LEDBAT в сети.

Цели дизайна

Контроль перегруженности LEDBAT преследует следующие цели:

  • Использовать всю доступную пропускную способность и поддерживать низкую задержку в очереди, когда другой трафик отсутствует;
  • Ограничить задержку в очереди, добавляемую к задержке другого трафика;
  • Быстро уступить стандартному TCP, который имеет ту же самую узкую ссылку.
  • Реализации и развертывание

    Две основные реализации — это uTP от BitTorrent и как часть TCP от Apple. BitTorrent использует uTP для большей части трафика и делает код доступным по лицензии с открытым исходным кодом. Apple использует LEDBAT для обновлений программного обеспечения, так что большие загрузки программного обеспечения для Mac OS X компьютеров и устройств IOS не мешают нормальной деятельности пользователей. Кроме этого Apple делает доступным исходный код.

    Обе вышеперечисленные реализации направлены на ограничение задержки организации очереди до 100 мс. Это максимум времени задержки, разрешенный стандартизированным протоколом. Если один из них использует более низкое значение, то он будет голодать, когда используется другой.

    В Windows 10 в Anniversary Update появилась поддержка LEDBAT через опцию недокументированного сокета в качестве экспериментального модуля контроля перегрузки Windows TCP и Windows Server 2019.

    Пример

    Предположения:

  • Часы отправителя и получателя не синхронизированы.
  • Отправитель отправляет с фиксированной скоростью.
  • Отправитель отправляет 5 пакетов данных каждые 10 тактов: 10, 20, 30, 40, 50. Единицы не важны. Получатель получает данные не только от этого конкретного отправителя, но и из других источников. Для 5 отправленных пакетов получатель получает их со следующими отсчетами тактов: 112, 135, 176, 250, 326. Первые различия (задержка в одну сторону) между полученным и отправленным счетчиком тактов: 102, 115, 146, 210, 276. Вторые различия (изменение в одну сторону задержки): 13 (115—102), 31, 64 и 66. Из положительного увеличения задержки в одном направлении получатель сделает вывод о том, что перегрузка увеличивается, и соответственно скорректирует скорость передачи.