Открыт код Remy, системы динамической генерации алгоритмов контроля перегрузки TCP
Исследователи из Массачусетского технологического института опубликовали результаты разработки проекта Remy, в рамках которого создана система, использующая методы машинного обучения для автоматической генерации оптимального алгоритма контроля перегрузки TCP (TCP congestion control), учитывающего особенности текущего канала связи. Код Remy открыт под лицензией MIT. Последние несколько лет, специалисты обеспокоены негативным влиянием эффекта «Bufferbloat», приводящего к понижению эффективности изначально реализованных в TCP методов контроля перегрузки из-за усиления промежуточной буферизации пакетов на современном сетевом оборудовании. Удешевление памяти привело к активной буферизации сетевых пакетов в маршрутизаторах и коммутаторах, что затормаживает отбрасывание пакетов, в то время как алгоритм контроля перегрузки при расчете доступной пропускной способности в основном полагается на потерю пакетов. Таким образом алгоритм контроля перегрузки продолжает наращивать скорость, даже если канал физически уже перегружен. Неотправленные пакеты буферизируются, а не отбрасываются, и снижения скорости на основании начала потери пакетов вовремя не происходит. В итоге, алгоритм контроля перегрузки TCP срабатывает только после заполнения буфера и не может подобрать нужный баланс скорости потока, соотносящийся со скоростью физического линка.
В качестве выхода из сложившейся ситуации был реализован набор альтернативных алгоритмов контроля перегрузки TCP. Как правило основным фактором определения начала возможной перегрузки в новых алгоритмах является увеличение задержки в доставке пакета, но специфика работы каждого алгоритма очень сильно привязана к конкретным применениям, например, для беспроводных сетей, низкоскоростных мобильных сетей, широкополосного доступа и ультраскоростных сетей датацентров оптимальные алгоритмы будут отличаться. Выбор подхода также зависит от критерия оптимизации — увеличение пропускной способности или снижение задержек.
Remy позволяет сформировать идеальный для каждой конкретной ситуации алгоритм, который может учитывать до 150 различных правил. Суть работы Remy сводится к первоначальной генерации базового алгоритма с его последующей оптимизацией по мере накопления статистики. В качестве характеристик для проведения тюнинга могут задаваться весовые характеристики, выделяющие важность достижения высокой пропускной способности или указывающие на необходимость минимизации задержек в доставке пакетов. Remy работает на стороне одной из конечных точек канала связи и не требует модификации компонентов сетевой инфраструктуры или параметров системы на другой стороне соединения.
В итоге, сгенерированный автоматически алгоритм позволяет достигнуть более высокой пропускной способности и справедливости распределения канала, чем при использовании самых изощрённых универсальных схем. Например, сгенерированный Remy алгоритм для канала 15 Mbps, который совместно используется 8 отправителями, позволил достигнуть двухратного увеличения пропускной способности и на 2/3 раза снизить задержки из-за нахождения пакетов в очереди, по сравнению с алгоритмами Compound TCP (по умолчанию в Windows) и TCP NewReno (по умолчанию во FreeBSD). По сравнению с алгоритмом TCP Cubic, который используется по умолчанию в Linux, пропускная способность возросла на 70%, а задержки удалось уменьшить в три раза. В другом тесте, симулирующем работу через сотовую сеть Verizon, выигрыш алгоритма Remy составил 20–30% в пропускной способности и 25–40% в отзывчивости.
© OpenNet