Обсуждение: bufferbloat — сетевая проблема, которая существует больше десяти лет

в 15:24, , рубрики: bufferbloat, vas experts, Блог компании VAS Experts, буферизация, Исследования и прогнозы в IT, Сетевые технологии

Обсудим причины, а также механизмы, которые позволят разрешить ситуацию с bufferbloat или «излишней сетевой буферизацией» (по крайней мере, в теории).

/ Unsplash.com / Jake Nackos
/ Unsplash.com / Jake Nackos

Буферное надувательство

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

Большое количество пакетов может вызывать так называемое «распухание буфера», или bufferbloat. Это явление приводит к продолжительным паузам в передаче данных. Перебои особенно заметны в контексте требовательных сетевых задач вроде стриминга, онлайн-игр и даже VoIP.

Эксперимент с целью оценить влияние bufferbloat на пропускную способность проводили в сетях американских провайдеров. В обычном режиме средняя задержка на 40-мегабитном DSL-подключении составляет 27 мс, а на 300-мегабитном оптоволокне — 20 мс. Если нагрузить канал (например, передачей фото или видео в облако), средние задержки «подскакивают» до 281 и 48 мс соответственно.

Давняя проблема

О ситуации с излишней сетевой буферизацией известно как минимум с 2010 года. Впервые о ней заговорил Джим Геттис, инженер и член комитета W3C. Но за прошедшие двенадцать лет bufferbloat так и не удалось побороть окончательно.

Да, существуют специальные алгоритмы, противостоящие раздуванию буферов. Например, классические Reno и CUBIC, которые идентифицируют перегрузку по количеству потерянных пакетов. С другой стороны, BBR применяет методы моделирования канала связи и прогнозирует пропускную способность на основе показателя RTT. Кроме них, существуют десятки других алгоритмов, а в 2011 году вообще был сформирован экспериментальный репозиторий Linux-ядра — debloat-testing. Разработчики тестировали в нем новые механизмы для противодействия излишней буферизации.

Однако в августе инженеры из MIT опубликовали результаты нового исследования. Они утверждают, что существующие механизмы борьбы с bufferbloat недостаточно эффективны. В большинстве случаев они ориентируются на рост задержек и потери пакетов — ключевые индикаторы перегрузки сети — но их может вызывать не только переполнение буфера.

Вообще, существуют специальные инструменты для проверки качества соединения. Если во время нагрузочного тестирования задержка серьезно возрастает, скорее всего, сеть подвержена влиянию bufferbloat. Например, можно воспользоваться консольной утилитой flent. На официальном сайте проекта вы найдете руководство по быстрому старту и полную документацию. Но чтобы оценить пропускную способность достаточно ввести следующую команду:

flent rrul -p all_scaled -H flent-fremont.bufferbloat.net 

Также существуют специальные тесты, которые позволяют провести оценку в онлайн-формате и без установки дополнительного ПО.

Движение вперед

Решением проблемы bufferbloat может стать дальнейшее развитие программно-аппаратного стека. Одна из перспективных технологий в этой области — smart queue management (SQM).

/ Unsplash.com / Kyle Hinkson
/ Unsplash.com / Kyle Hinkson

На сетевом устройстве формируются несколько очередей (вместо одной) для разных типов трафика — например, загрузки данных в облачное хранилище, передачу электронной почты или потокового видео. Приоритет отдают очередям меньшего размера, чтобы компактные задания «не застревали» за длинными последовательностями пакетов. В каком-то смысле SQM напоминает QoS в сетях провайдеров, только последняя технология приоритезирует различные классы трафика. К сожалению, большинство маршрутизаторов на рынке пока не поддерживает smart queue management.

В долгосрочной перспективе решением может стать переход на новую сетевую архитектуру. В этом направлении уже ведут работу инженеры IETF. Они работают над проектом L4S и предлагают [PDF, стр.1] использовать масштабируемые алгоритмы контроля перегрузки канала вроде Prague, Explicit Congestion Notification (ECN) и Dual Queue Coupled Active Queue Management (DQC AQM). Однако разработка идет как минимум с 2017 года, и до финализации стандарта все еще далеко.


Дополнительное чтение в нашем блоге на Хабре:

Больше материалов о сетях и работе провайдеров — на сайте VAS Experts:

Автор: VAS Experts

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js