0

Излишняя сетевая буферизация как исправить

Излишняя сетевая буферизация (англ. Bufferbloat — распухание буфера) — явление, возникающее в сетях с коммутацией пакетов, когда чрезмерная буферизация вызывает увеличение времени прохождения пакетов (latency) и разброса задержки пакетов (jitter), и в результате уменьшение пропускной способности (throughput). Проект www.bufferbloat.net иронично определил этот термин, как «ухудшение производительности Интернета, вызванное предыдущими попытками её улучшения» [1] .

Термин Bufferbloat в конце 2010 предложил Джим Геттиc, сотрудник Bell Labs, член комитета W3C и один из редакторов спецификации HTTP/1.1 [2] .

Содержание

Суть явления [ править | править код ]

Проблема излишней буферизации возникает, когда на пути от источника до приёмника пакетов присутствует устройство со слишком большим буфером. Как правило, буферы присутствуют практически во всех узлах сети: коммутаторах, маршрутизаторах, стеках операционных систем и т. д. Они предназначены для временного хранения «лишних» пакетов, для того чтобы не происходила их потеря, когда отправитель передаёт данные узлу быстрее, чем может получить получатель. Это происходит, когда полоса пропускания у отправителя выше, чем у получателя. Буферизация задерживает передачу пакета на несколько миллисекунд. Если буфер наполняется, то следующий пакет отбрасывается. Протоколы контроля перегрузки обнаруживают это на стороне отправителя и снижают скорость передачи. Данные продолжают передаваться, используя максимально возможную пропускную способность.

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

С точки зрения обычных пользователей, основные симптомы излишней сетевой буферизации — это, когда сеть находится под нагрузкой (передаётся много данных), обычные веб-страницы грузятся очень долго (несколько секунд, а то и минут); любые службы, требующие постоянной пропускной способности (неважно, высокую или низкую), такие как VoIP, сетевые игры, чат, интерактивные приложения типа удалённого доступа становится невозможно использовать. Методы приоритизации (QoS), при которых для определенного вида трафика создается отдельная очередь пакетов, мало помогают решению проблемы.

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

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

Источники проблемы [ править | править код ]

Излишнюю сетевую буферизацию может вызывать любая служба или любое действие в сети, передающие большие объёмы данных или большое количество пакетов через сеть. Среди них:

  • Загрузка видео на youtube, файлов на Crash dump и другие сервисы
  • Скачивание фильмов из интернета, просмотр фильмов онлайн
  • Копирование файлов по сети, создание бэкапов
  • Электронные письма с большими приложениями
  • Торрент-клиенты
  • Видео-конференции
  • Веб-серфинг по сайтам с медиа-содержимым: youtube, google maps, и т. д.
Читайте также:  Барс имущество вход в личный кабинет

Где происходит [ править | править код ]

Явление может происходить везде, где происходит буферизация. В первую очередь затор создаётся на том узле, после которого идёт самая узкая полоса пропускания. Например:

  • Сетевой стек операционной системы
  • Сетевая карта, драйвер сетевой карты
  • Беспроводная точка доступа, домашний свитч, домашний маршрутизатор, домашний модем
  • DSLAM, CMTS и т. п.
  • Все маршрутизаторы, мосты, шлюзы на пути от источника до приёмника
  • Устройства спутниковой связи

Последствия [ править | править код ]

Многие протоколы и сетевые службы страдают от заторов и большого времени отклика. Например:

  • DNS. 100-ms задержки убивают запросы DNS от браузеров
  • ARP
  • DHCP. Машина не может попасть в сеть
  • RA, ND
  • VoIP, 1 пакет каждые 10 мс должен проходить для нормального функционирования. Разброс должен быть не более 30 мс.
  • Сетевые игры.
  • Потоковое видео.
  • Любые другие сетевые приложения.

Тем не менее, большие сетевые буфера нужны для нормальной обработки пакетов с большим MTU, например, Jumbo-кадров.

История [ править | править код ]

Предыстория [ править | править код ]

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

Первое проявление перегрузки сети в крупном масштабе произошло в 1986 г. в сети NSFNet [3] . В ответ на это событие в 1988 г. был разработан протокол контроля перегрузки сети Ван Якобсона (англ. Van Jacobson’s Congestion Control ).

Интернет продолжал расти. В 1993 С. Флойд и В. Якобсон разрабатывают алгоритм RED (англ. Random early detection — Произвольное Раннее Обнаружение) для управления переполнением очередей маршрутизаторов [4] .

В 1997 выходит RFC 2068, в которой сформулирован «принцип двух соединений»: одному клиенту следует использовать не более двух соединений одновременно с одним и тем же сервером [5] . По словам из этой же RFC, эта рекомендация дана «для уменьшения времени HTTP ответа и избежания чрезмерной загрузки Интернета или других сетей».

Годом позже выходит RFC 2309: «Рекомендации по управлению очередями и избежанию перегрузки в Интернете», в которой были предложены меры по улучшению и сохранению производительности Интернета.

В 2001 году выходит RFC 3168: «Добавление явного уведомления о перегрузке (Explicit Congestion Notification, ECN) в IP», в которой было предложено добавление поля ECN в IP и TCP пакетах, резервируя для этого 2 бита.

В 2004—2007 один из крупнейших интернет-провайдеров США Comcast испытывает трудности в связи с сетевой перегрузкой. Об этом свидетельствуют неоднократные отключения интернета «тяжёлым» пользователям [6] . А в 2007 Comcast, по словам Джима Геттиса, «задыхается» от битторрентов [7] . Компанию обвиняют в блокировании торрент-траффика [8] [9] и даже преследуют судебные иски [10] .

Обнаружение проблемы [ править | править код ]

По утверждению Джима Геттиса, первым, кто обнаружил проблему излишней сетевой буферизации, был Дэйв Кларк [7] . В 2004 г. он наблюдал это явление на своём DSLAMе и использовал его, чтобы отбить у своего сына привычку подолгу играть в WOW [11] .

Читайте также:  Витая пара 10 гбит

В 2007 г. сам Джим Геттис начинает получать жалобы от своей семьи на плохой интернет и испытывает повреждения оборудования от грозового перенапряжения [7] .

В 2009 г. Дэйв Рид заявил о слишком большом времени оборота (RTT) пакетов (до 30 секунд) при малых потерях пакетов в сетях 3G, сделав сообщение в списке рассылки полного цикла. Сам Джим Геттис фиксировал в сетях 3G RTT до 6 секунд.

Геттис продолжает получать жалобы от семьи о медленном интернете. В апреле 2010 он провёл тест «ширина полосы пропускания / время ожидания» [12] . Результат теста показал, что время ожидания (задержка) пакетов возрастает при продолжительной передаче данных. 15 июля 2010 Геттис провёл совместный ланч с представителями Comcast [13] , где была предложена причина проблемы: слишком большие буфера. Причина, в свою очередь, двумя годами ранее была предложена компании Дэйвом Кларком, но в компании не смогли найти доказательств этому. Другие причины, сопутствующие распуханию буфера: RED зачастую не включают в сетях, потому что он требует сложной настройки; ECN блокируются в некоторых сетях, потому что они приводят к сбоям домашних роутеров.

Геттис продолжил исследования, делая замеры дома и в командировках. Замер от 20 сентября показал задержку 8 с на пути, который проходится обычно за 10 мс [14] . Далее Геттис вопроизвёл это и на других роутерах разных производителей.

В ноябре Геттис воспроизвёл проблему на разных ОС. Оказалось, что под Linux и Mac эта проблема легче воспроизводится, чем под Windows. Геттис сделал вывод: «чем-то попахивает в сетевых стеках операционных систем» [15] .

3 декабря 2010 Джим Геттис публикует в своём блоге статью «The criminal mastermind: bufferbloat!», где он даёт название этому явлению — bufferbloat. В этой и последующих статьях Геттис рассказывает о сути явления, местах возникновения, причинах и последствиях [16] .

Реакция [ править | править код ]

Роберт Крингли, журналист, пишущий для InfoWorld, в своей статье «Предсказания 2011 года: Одно слово — bufferbloat. Или это два слова?» предсказывает, что излишняя сетевая буферизация будет величайшей проблемой 2011 года [17] . Ссылаясь на Геттиса, он даёт описание проблемы. Через 3 дня ars technica опубликовал статью Ильича ван Бейнума, в которой тот указал, что некоторые детали, описанные Крингли, неверны, но при этом подтвердил наличие проблемы излишней сетевой буферизации [18] .

Вскоре был создан проект www.bufferbloat.net, целью которого было скоординировать усилия озабоченных лиц по решению проблемы излишней сетевой буферизации. Основные задачи проекта:

  • Собрать вместе экспертов, чтобы заняться вопросом управления очередями в сетевых стеках
  • Распространить информацию о проблеме конечным пользователям
  • Создать инструменты для демонстрации и диагностики проблемы
  • Произвести эксперименты по улучшенному управлению перегрузками
  • Создать патчи для популярных ОС, драйверов устройств и стеков TCP/IP.

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

Суть этого явления в накоплении большого количества «лишних» пакетов в буферах, встречающихся на пути от источника данных до приемника. Такие буферы присутствуют в коммутаторах, маршрутизаторах, других узлах сети.

Читайте также:  Запись видео с помощью веб камеры

Каким образом накапливаются пакеты в буферах

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

В некоторых узлах сети буферы большого объема могут накапливать пакеты долгое время, в результате из-за возникающих пауз алгоритмы контроля перегрузки сбиваются и некорректно функционируют: одни пакеты задерживаются, другие отбрасываются. В буфере образовывается «затор» пакетов, что и вызывает временные негативные симптомы при работе по сети. Через время буфер освобождается от «лишних» пакетов, скорость работы сети нормализуется до следующего наполнения буфера.

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

В каких случаях в буферах накапливаются «лишние» пакеты

Излишнюю сетевую буферизацию вызывают действия пользователя, связанные с передачей больших объемов данных по сети. Это могут быть:

  • скачивание и просмотр медиафайлов больших размеров;
  • загрузка видео на каналы youtube и другие сервисы;
  • отправка и получение электронных писем большого объема;
  • пользование торрент-сервисами;
  • проведение видеоконференций;
  • просмотр страниц с медиа-содержимым.

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

  • Излишняя сетевая буферизация (англ. Bufferbloat — распухание буфера) — явление, возникающее в сетях с коммутацией пакетов, когда чрезмерная буферизация вызывает увеличение времени прохождения пакетов (latency) и разброса задержки пакетов (jitter), и в результате уменьшение пропускной способности (throughput). Проект www.bufferbloat.net иронично определил этот термин, как «ухудшение производительности Интернета, вызванное предыдущими попытками её улучшения».

Термин Bufferbloat в конце 2010 предложил Джим Геттиc, сотрудник Bell Labs, член комитета W3C и один из редакторов спецификации HTTP/1.1.

Связанные понятия

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

Операционные системы используют менеджеры блокировок (англ.) для организации и координации доступа к ресурсам. Распределенный менеджер блокировок (англ. Distributed lock manager, DLM, ) работает на каждой машине в кластере, с идентичной копией базы данных блокировок кластера. Таким образом, DLM является пакетом программного обеспечения, который позволяет компьютерам в кластере координировать доступ к совместно используемым ресурсам .

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

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *