Симметричный контроль потока на роутере что это

Обновлено: 03.07.2024

Механизм управления потоком (Flow Control) позволяет предотвратить потерю данных в случае переполнения буфера принимающего устройства.

Для управления потоком в полудуплексном режиме обычно используется метод обратного давления (Backpressure). Принимающее устройство ( порт коммутатора) в случае переполнения его буфера отправляет искусственно созданный сигнал обнаружения коллизии или отправляет обратно устройству-отправителю его кадры.

Для управления потоком в дуплексном режиме используется стандарт IEEE 802.3х. Согласно этому стандарту управление потоком осуществляется между МАС-уровнями с помощью специального кадра-паузы, который автоматически формируется МАС-уровнем принимающего устройства. В случае переполнения буфера принимающее устройство отправляет кадр -паузу с указанием периода времени, на который требуется остановить передачу данных, либо на уникальный МАС- адрес соответствующей станции, либо на специальный групповой адрес 01-80-C2-00-00-01. Если переполнение буфера будет ликвидировано до истечения периода ожидания, то для восстановления передачи принимающая станция отправляет второй кадр -паузу с нулевым значением времени ожидания.

Общая схема управления потоком показана на рис. 1.22.

Последовательность управления потоком IEEE 802.3x


Рис. 1.22. Последовательность управления потоком IEEE 802.3x

Правильно сконфигурированная функция управления потоком на устройствах позволяет повысить общую производительность сети за счет уменьшения потери данных и повторных передач. Управление потоком данных IEEE 802.3х большинства интерфейсных сетевых карт и встроенных сетевых карт включено по умолчанию. Коммутаторы D-Link имеют разные настройки функции IEEE 802.3х по умолчанию:

  • неуправляемые коммутаторы — управление потоком IEEE 802.3х включено;
  • коммутаторы серии Smart — управление потоком IEEE 802.3х отключено;
  • управляемые коммутаторы — управление потоком IEEE 802.3х отключено.

Поэтому для корректной работы функции IEEE 802.3х на порте коммутатора должна быть активизирована функция управления потоком.

Технологии коммутации и модель OSI

Коммутаторы локальных сетей можно классифицировать в соответствии с уровнями модели OSI , на которых они передают, фильтруют и коммутируют кадры. Различают коммутаторы уровня 2 ( Layer 2 (L2) Switch ) и коммутаторы уровня 3 ( Layer 3 (L3) Switch ).

Коммутаторы уровня 2 анализируют входящие кадры, принимают решение об их дальнейшей передаче и передают их пунктам назначения на основе МАС-адресов канального уровня модели OSI . Основное преимущество коммутаторов уровня 2 — прозрачность для протоколов верхнего уровня. Т.к. коммутатор функционирует на 2-м уровне, ему нет необходимости анализировать информацию верхних уровней модели OSI .

Коммутация 2-го уровня — аппаратная. Она обладает высокой производительностью. Передача кадра в коммутаторе может осуществляться специализированным контроллером ASIC . В основном коммутаторы 2-го уровня используются для сегментации сети и объединения рабочих групп.

Несмотря на преимущества коммутации 2-го уровня, она все же имеет некоторые ограничения. Наличие коммутаторов в сети не препятствует распространению широковещательных кадров по всем сегментам сети.

Коммутаторы уровня 3 осуществляют коммутацию и фильтрацию на основе адресов канального (уровень 2) и сетевого (уровень 3) уровней модели OSI . Коммутаторы 3-го уровня выполняют коммутацию в пределах рабочей группы и маршрутизацию между различными подсетями или виртуальными локальными сетями ( VLAN ).

Коммутаторы уровня 3 осуществляют маршрутизацию пакетов аналогично традиционным маршрутизаторам. Они поддерживают протоколы маршрутизации RIP ( Routing Information Protocol ), OSPF ( Open Shortest Path First ), BGP ( Border Gateway Protocol ) для обеспечения связи с другими коммутаторами уровня 3 или маршрутизаторами и построения таблиц маршрутизации, осуществляют маршрутизацию на основе политик, управление многоадресным трафиком.

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

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

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

(Как проверить, какой слой потерял кадры? Оборудование сетевой карты 1000M использует UDP для отправки данных на сетевую карту 10M / 100M. Будет ли потеряно большое количество кадров из-за переполнения буфера? )

Какие проблемы могут быть вызваны отсутствием функции управления потоком Ethernet?

IEEE802.3xСтандарт определяет новый метод для достижения управления потоком в полнодуплексной среде (PAUSE)。

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

IEEE802.3zСтандарт определяет конкретную операцию асимметричного управления потоком (ASM_DIR)。

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

В положениях протокола IEEE802.3 кадр PAUSE является кадром управления, используемым для управления потоком данных для прекращения отправки, генерируемым на передающей стороне MAC, анализируемым и исполняемым на приемной стороне MAC. Когда объем входных данных устройства на этом конце слишком велик для обработки во времени, на отправляющей стороне MAC этого конца будет сгенерирован кадр PAUSE и отправлен на противоположный конец, запрашивая противоположный конец прекратить отправку данных в течение определенного времени.

Работа с кадром PAUSE реализует простой механизм управления потоком по уравнению остановки.Это может предотвратить ненужную потерю кадров при переполнении буфера из-за временной перегрузки.

IEEE802.3 делит канальный уровень на три уровня:LLC,Подуровень управления MAC(Необязательно) иПодуровень управления доступом к среде MAC。

MACКонтрольный подслойОбщая полнодуплексная структура управления потоком уточняется.

Чтобы предотвратить переполнение буфера, схема управления обменом может использовать подуровень управления MAC для управления работой подуровня управления доступом к среде Ethernet. Когда используемая емкость буфера достигает заданного порогового значения, порт отправляет запрос на прекращение отправки данных партнеру полнодуплексной линии связи, который реализуется через управляющий кадр, сгенерированный подуровнем управления MAC.

Аналогично, порт может принимать контрольные кадры, сгенерированные подуровнем управления MAC других сайтов. Кадры управления отправляются в потоке кадров данных клиента. Приемник разделяет контрольные кадры в соответствии с содержимым кадра и передает трафик подуровню управления MAC. Модуль управления и модуль управления потоком анализируют содержимое кадра управления, извлекают параметры управления в кадре и определяют время для приостановки передачи в соответствии с параметрами управления.


Формат кадра PAUSE выглядит следующим образом:

Кадр управления MAC (кадр PAUSE) - это кадр Ethernet, который соответствует протоколу IEEE802.3 и может быть идентифицирован по уникальному идентификатору поля типа (0x8808). Передача и прием управляющих кадров MAC в сети аналогичны кадрам данных. За исключением преамбулы и начального символа кадра, длина является минимальной длиной кадра Ethernet-кадра (64 байта). В поле данных кадра управления MAC первые два байта идентифицируют код операции управления MAC и указывают функцию управления запроса кадра. В настоящее время протокол определяет только один код операции, а именно операцию PAUSE, код операции равен 0x0001. После кода операции указывается параметр, необходимый для операции. Параметр использует только 2 байта поля данных, а оставшиеся биты в поле данных будут заполнены нулями.

Определение каждого поля кадра PAUSE следующее:

Адрес назначения: Протокол указывает, что адресом назначения PAUSE является зарезервированный адрес многоадресной рассылки 0x01-80-C2-00-00-01.

Типы: Кадр управления MAC (кадр PAUSE) - это кадр Ethernet, соответствующий протоколу IEEE802.3, который можно идентифицировать по уникальному идентификатору поля типа (0x8808).

Опкод: Постоянно 0x0001. Фактически, кадры PAUSE являются типом кадров управления MAC. Другие типы кадров управления MAC используют разные значения кода операции, которые здесь подробно не описываются. Кадр PFC, аналогичный PAUSE, будет обсуждаться позже. Значение этого поля в кадре PFC составляет 0x0101.

Рабочие параметры: Параметр времени паузы 2 байта. Это время, которое отправитель PAUSE запрашивает у другой стороны прекратить отправку фреймов данных, обычно 0xFFFF,Единица измерения времени - это время, необходимое для передачи 512-битных данных с текущей скоростью передачи., Фактическое время паузы приемника является произведением содержимого поля параметра операции и времени, необходимого для передачи 512-битных данных с текущей скоростью передачи.

Проверка последовательности (FCS): 4-байтовое поле последовательности проверки циклическим избыточным кодом (CRC). CRC - это математический алгоритм, который будет запускаться, когда передающая сторона MAC (MAC_TX) создает каждый кадр. Когда принимающая сторона MAC (MAC_RX) принимает кадр, она использует преамбулу, SFD, DA, SA, длину / тип, DATA и Pading в качестве входных данных для выполнения вычисления CRC.Результат сравнения сравнивается с полем FCS принятого кадра. Тот же результат указывает, что кадр является действительным. В результате разные получатели считают, что произошла ошибка, а затем отбрасывают кадр.

Используйте программное обеспечение wireshark для анализа кадров PAUSE:


Как показано на рисунке, левая сторона является чипом локального конца, а правая сторона является чипом противоположного конца.


И MAC0, и MAC1 содержат отправляющую сторону tx и принимающую сторону rx. Сигнал управления потоком fc_rdy находится на передающей стороне восходящего модуля mac A и mac0 внутри микросхемы слева. Высокий сигнал указывает на то, что модуль A не может вовремя обработать входные данные и должен выполнить управление потоком. Чтобы выделить ключевые моменты, PCS, serdes и другие модули опущены.

Обязательные требования протокола обработки кадров паузы:

В инструменте ethtool для просмотра информации о сетевой карте есть следующие поля для просмотра текущей функции управления потоком:

Среди них «Объявленное использование кадра паузы» указывает текущий режим управления потоком, и он напечатает «Симметричный», когда непосредственно найден через исходный код ethtool.

Механизм управления потоком (Flow Control) позволяет предотвратить потерю данных в случае переполнения буфера принимающего устройства.

Для управления потоком в полудуплексном режиме обычно используется метод обратного давления (Backpressure). Принимающее устройство ( порт коммутатора) в случае переполнения его буфера отправляет искусственно созданный сигнал обнаружения коллизии или отправляет обратно устройству-отправителю его кадры.

Для управления потоком в дуплексном режиме используется стандарт IEEE 802.3х. Согласно этому стандарту управление потоком осуществляется между МАС-уровнями с помощью специального кадра-паузы, который автоматически формируется МАС-уровнем принимающего устройства. В случае переполнения буфера принимающее устройство отправляет кадр -паузу с указанием периода времени, на который требуется остановить передачу данных, либо на уникальный МАС- адрес соответствующей станции, либо на специальный групповой адрес 01-80-C2-00-00-01. Если переполнение буфера будет ликвидировано до истечения периода ожидания, то для восстановления передачи принимающая станция отправляет второй кадр -паузу с нулевым значением времени ожидания.

Общая схема управления потоком показана на рис. 1.22.

Последовательность управления потоком IEEE 802.3x


Рис. 1.22. Последовательность управления потоком IEEE 802.3x

Правильно сконфигурированная функция управления потоком на устройствах позволяет повысить общую производительность сети за счет уменьшения потери данных и повторных передач. Управление потоком данных IEEE 802.3х большинства интерфейсных сетевых карт и встроенных сетевых карт включено по умолчанию. Коммутаторы D-Link имеют разные настройки функции IEEE 802.3х по умолчанию:

  • неуправляемые коммутаторы — управление потоком IEEE 802.3х включено;
  • коммутаторы серии Smart — управление потоком IEEE 802.3х отключено;
  • управляемые коммутаторы — управление потоком IEEE 802.3х отключено.

Поэтому для корректной работы функции IEEE 802.3х на порте коммутатора должна быть активизирована функция управления потоком.

Технологии коммутации и модель OSI

Коммутаторы локальных сетей можно классифицировать в соответствии с уровнями модели OSI , на которых они передают, фильтруют и коммутируют кадры. Различают коммутаторы уровня 2 ( Layer 2 (L2) Switch ) и коммутаторы уровня 3 ( Layer 3 (L3) Switch ).

Коммутаторы уровня 2 анализируют входящие кадры, принимают решение об их дальнейшей передаче и передают их пунктам назначения на основе МАС-адресов канального уровня модели OSI . Основное преимущество коммутаторов уровня 2 — прозрачность для протоколов верхнего уровня. Т.к. коммутатор функционирует на 2-м уровне, ему нет необходимости анализировать информацию верхних уровней модели OSI .

Коммутация 2-го уровня — аппаратная. Она обладает высокой производительностью. Передача кадра в коммутаторе может осуществляться специализированным контроллером ASIC . В основном коммутаторы 2-го уровня используются для сегментации сети и объединения рабочих групп.

Несмотря на преимущества коммутации 2-го уровня, она все же имеет некоторые ограничения. Наличие коммутаторов в сети не препятствует распространению широковещательных кадров по всем сегментам сети.

Коммутаторы уровня 3 осуществляют коммутацию и фильтрацию на основе адресов канального (уровень 2) и сетевого (уровень 3) уровней модели OSI . Коммутаторы 3-го уровня выполняют коммутацию в пределах рабочей группы и маршрутизацию между различными подсетями или виртуальными локальными сетями ( VLAN ).

Коммутаторы уровня 3 осуществляют маршрутизацию пакетов аналогично традиционным маршрутизаторам. Они поддерживают протоколы маршрутизации RIP ( Routing Information Protocol ), OSPF ( Open Shortest Path First ), BGP ( Border Gateway Protocol ) для обеспечения связи с другими коммутаторами уровня 3 или маршрутизаторами и построения таблиц маршрутизации, осуществляют маршрутизацию на основе политик, управление многоадресным трафиком.

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

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

Почему пинг высокий и как его понизить?

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

Jumbo Frame

Jumbo Frame - Jumbo Packet - Большой кадр:
Использование этого параметра, наверно только гипотетически поможет снизить пинг в играх и наверно какая то выгода будет во время долгих массовых сражений и осад, когда в одну секунду генерируется очень приличное количество трафика. Дело в том, что использование больших кадров должно быть настроено у всех участников взаимодействия, как у клиента и сервера, так и транзитных узлов. Но за пределами вашего провайдера (да и у самого провайдера) mtu всегда примерно равен 1,5 кб плюс\минус десятки байтов. Если использовать его в локальных сетях (где можно точно проконтролировать эту настройку у всех), то там пинг зачастую и так достаточно низкий.
В чем плюс? Если использовать 9 кб у всех участников, вместо 1,5 кб, то для обсчета одного кадра потребуется в 6 раз реже задействовать процессор. Что должно лучше сказаться на прибавке фпс.
В чем минус? Если использовать его только на клиенте, при отсылке на остальных узлах пакет будет фрагментирован, в лучшем случаем на 6 частей, а при mtu <1500 может и на более. Которые в итоге будут переданы на каждый последующий узел, и где он должен попасть на сервер без потерь и корректно собран в один целый. В век высоких технологий, сбор и разбиение проходят быстро, но тем не менее, не всегда возможно предсказать насколько будет загружено оборудование обрабатывающее эти фрагменты. И эта фрагментация и загрузка транзитных узлов и может привести к росту пинга.
Значение: Выкл.

Checksum Offload - IPv4 Checksum Offload - Контрольная сумма разгрузки IPv4:
Если ваш адаптер имеет такую функцию, то включите ее. Это позволит освободить центральный процессор от расчета и проверки контрольных сумм для отправляемых и принимаемых пакетов. Что должно положительно сказаться на фпс в игре. Но бывают и обратные случаи, когда отключение это функции позволяет улучшить пинг и снизить лаги. Так что, попробуйте поиграться с этим параметром, при наличии лагом и скачущего пинга.
Значение: Вкл для Tx и Rx

Speed & Duplex - Link Speed/Duplex Mode - Скорость и дуплекс
Тут нужно проверить, что у вас стоит 10\100\1 Гб дуплекс. При использовании режима полудуплекс, пинг становится выше.
Можете в этом убедиться, переключив режимы и пингануть любой сервер.
Значение: Дуплексный режим

Flow Control - Управление потоком
Данная настройка призвана решать проблему, когда входящий трафик приходит с такой скоростью, что создает угрозу переполнения буфера на сетевом оборудовании и тогда источнику отправляется команда, чтобы он выждал паузу и снова повторил отправку данных, через какой-то промежуток времени. Если же такой команды не послать, то из-за перегрузки часть данных просто потеряется, т.е. в игре это гарантированный лаг. Вроде бы хорошая и правильная и нужная функция, но только для тех кто скачивает большие объемы. В играх как правило трафик приходит не в таком интенсивном режиме. Если же кадр паузы будет послан, то одномоментно увеличится пинг. Т.е. если у вас в играх частые лаги и высокая сетевая задержка, попробуйте поиграться с этим параметром.
Значение: Выключить

Transmit Buffers - Буферы передачи / Receive Buffers - Буферы приема
Зачастую буфер приема имеет в настройках больший размер, так как трафика мы скачиваем больше, чем отдаем. Здесь главное придерживаться правила, что буфер приема минимум должен быть равен 100*mtu. Если mtu=1500 байт, то размер буфера должен быть не меньше 147 кб. Если будет меньше, то в массовых событиях в игре, с генерацией большого количества трафика, возможна потеря пакетов. Прямого влияние на пинг, данные настройки не оказывают. Скорее это касается лагов. Так что убедитесь, что данные параметры выставлены по умолчанию и не имеют слишком малого размера.
Для буфера передачи вполне подойдет заводское значение. Вряд ли на клиенте в игре можно на генерировать столько трафика, чтобы пакеты при этом не поместились в буфер.

TCP/UDP Checksum Offload IPv4/IPv6 - Контрольная сумма разгрузки TCP/UDP IPv4/IPv6
Чтобы узнать, дошел ли пакет до адресата целый и без ошибок, для проверки на другой стороне в него добавляют контрольную сумму, которая рассчитывается на основании данных пакета. Если у вас имеется данная функция в настройке, попробуйте ее включить для обоих типов трафика. Таким образом все вычисления будет проводить не процессор, а сетевой адаптер, что в итоге должно положительно сказаться на фпс в игре.
Значение: Rx & Tx Включить

Receive Side Scaling

Interrupt Moderation - Модерация прерывания
При получении одного пакета, сетевой адаптер вызывает прерывание. Когда идет интенсивный обмен трафиком такие прерывания создают нагрузку на процессор. И чтобы снизить ее, придумали накапливать события в течении какого-то времени и после этого вызывать прерывание (IRQ). Таким образом реже задействуя процессор. У такого способа есть свои плюсы, описанный ранее и так же можно сказать, что вся прелесть этой функции раскрывается для тех, кто много качает.
Из минусов, чтобы пакет был обработан, он ожидает, пока отработает таймер. Это то и добавляет пинга в игре.
Значение: Выключить
Receive Side Scaling - RSS - Получение бокового масштабирования
Это интересный и нужный механизм для обладателей многоядерных процессоров. При включении его, пакеты делятся по потокам и каждый поток может обрабатывать отдельный процессор. Т.е. задействуются все ядра, что должно положительно сказаться на производительности в целом и на пинге в частности. Если эта функция выключена, весь трафик обрабатывается одним ядром.
Но все эти преимущества будут, если драйвер написан без ошибок. Иначе, бывают случаи, когда после включения начинаются проблемы и деградация производительности. Если вы впервые включаете его, внимательно понаблюдайте за сетью какое-то время.
Значение: Включить

Large Send Offload IPv4/IPv6 - Giant Send Offload - Разгрузка при большой отправке IPv4/IPv6
Фрагментацией пакетов данных при отправке будет заниматься сетевой адаптер, а не программное обеспечение. В идеале аппаратное фрагментирование проходит быстрее, меньше задействуется процессор, что в итоге для любителей игр должно положительно сказаться на пинге и фпс.
Есть еще настройка Large Send Offload v2, она выполняет ту же функцию, только для пакетов покрупнее. Иногда ее включение плохо влияет на производительность сети.
Значение: Включить

И в заключении коротко про пинг и представленные настройки

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

Читайте также: