Открыт код Remy, системы динамической генерации алгоритмов контроля перегрузки TCP

22 июля 2013 года

Исследователи из Массачусетского технологического института опубликовали результаты разработки проекта Remy, в рамках которого создана система, использующая методы машинного обучения для автоматической генерации оптимального алгоритма контроля перегрузки TCP (TCP congestion control), учитывающего особенности текущего канала связи. Код Remy открыт под лицензией MIT.

Последние несколько лет, специалисты обеспокоены негативным влиянием эффекта "Bufferbloat", приводящего к понижению эффективности изначально реализованных в TCP методов контроля перегрузки из-за усиления промежуточной буферизации пакетов на современном сетевом оборудовании. Удешевление памяти привело к активной буферизации сетевых пакетов в маршрутизаторах и коммутаторах, что затормаживает отбрасывание пакетов, в то время как алгоритм контроля перегрузки при расчете доступной пропускной способности в основном полагается на потерю пакетов. Таким образом алгоритм контроля перегрузки продолжает наращивать скорость, даже если канал физически уже перегружен. Неотправленные пакеты буферизируются, а не отбрасываются, и снижения скорости на основании начала потери пакетов вовремя не происходит. В итоге, алгоритм контроля перегрузки TCP срабатывает только после заполнения буфера и не может подобрать нужный баланс скорости потока, соотносящийся со скоростью физического линка.

В качестве выхода из сложившейся ситуации был реализован набор альтернативных алгоритмов контроля перегрузки TCP. Как правило основным фактором определения начала возможной перегрузки в новых алгоритмах является увеличение задержки в доставке пакета, но специфика работы каждого алгоритма очень сильно привязана к конкретным применениям, например, для беспроводных сетей, низкоскоростных мобильных сетей, широкополосного доступа и ультраскоростных сетей датацентров оптимальные алгоритмы будут отличаться. Выбор подхода также зависит от критерия оптимизации - увеличение пропускной способности или снижение задержек.

Remy позволяет сформировать идеальный для каждой конкретной ситуации алгоритм, который может учитывать до 150 различных правил. При этом в настоящее время ещё не подготовлены должные средства диагностики, поэтому трудно судить какое именно сочетание правил применяется в сгенерированном для каждого случая алгоритме. Отмечается, что пока для анализа создаваемых Remy алгоритмов можно применять методы обратного инжиниринга.

Суть работы Remy сводится к первоначальной генерации базового алгоритма с его последующей оптимизацией по мере накопления статистики (построение модели трафика). В качестве характеристик для проведения тюнинга могут задаваться весовые характеристики, выделяющие важность достижения высокой пропускной способности или указывающие на необходимость минимизации задержек в доставке пакетов. Remy работает на стороне одной из конечных точек канала связи и не требует модификации компонентов сетевой инфраструктуры или параметров системы на другой стороне соединения.

В итоге, сгенерированный автоматически алгоритм позволяет достигнуть более высокой пропускной способности и справедливости распределения канала, чем при использовании самых изощрённых универсальных схем. Например, сгенерированный Remy алгоритм для канала 15 Mbps, который совместно используется 8 отправителями, позволил достигнуть двухкратного увеличения пропускной способности и на 2/3 снизить задержки из-за нахождения пакетов в очереди, по сравнению с алгоритмами Compound TCP (по умолчанию в Windows) и TCP NewReno (по умолчанию во FreeBSD). По сравнению с алгоритмом TCP Cubic, который используется по умолчанию в Linux, пропускная способность возросла на 70%, а задержки удалось уменьшить в три раза. В другом тесте, симулирующем работу через сотовую сеть Verizon, выигрыш алгоритма Remy составил 20-30% в пропускной способности и 25-40% в отзывчивости.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Открыт код Remy, системы динамической генерации алгоритмов контроля перегрузки TCP», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.