Открыт код 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% в отзывчивости.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.