Управление QoS на платформе Windows. Обзор технологии айпи протокола Quality of Service

Рубрика «Консультация» cоздана на портале «Цифровая подстанция» для того, чтобы каждый читатель мог получить ответ на интересующий его вопрос. Свои вопросы участники могут направлять на адрес [email protected] . Сегодня мы рассматриваем следующий вопрос:

Когда речь идет о коммутаторах и о передаче данных по информационной сети Ethernet часто возникает такое понятие как QoS (Quality of Service). Что это такое?

Отвечает начальник отдела инжиниринга компании «ТЕКВЕЛ» Дмитрий Стешенко:

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

Качество обслуживания на втором уровне модели OSI (канальном) в пределах одного сетевого элемента обеспечивается за счет использования модели дифференцированного обслуживания (Differentiated Service – DiffServ) и обеспечивается:

  • Классификацией и разметкой трафика.
  • Управлением перегрузками (механизмы очередей).

Следует отметить, что данная модель начинает работать лишь в случае появления очередей и перегрузок.

Согласно стандарту МЭК 61850 все коммуникационные процессы передачи данных осуществляются посредством технологии Ethernet. Данная технология определяет формат Ethernet кадров (фреймов), линии соединения (среду передачи), электрические и световые сигналы на физическом уровне, протоколы управления доступом к среде - на втором уровне модели OSI (канальном). Основные методы и технологии Ethernet описываются семейством протоколов IEEE 802.3.

Протокол Ethernet в чистом виде не поддерживает функцию приоритезации трафика, поэтому наряду со стандартным протоколом Ethernet IEEE 802.3, организация IEEE разработала стандарт создания виртуальных локальных сетей VLAN IEEE 802.1q. В стандарте IEEE 802.1q предусматривается вставка дополнительного четырехбайтового тега VLAN в заголовок Ethernet исходного фрейма, содержащий метку приоритета (Priority) класса обслуживания (Class of Service – CoS) IEEE 802.1p (см. рис. 1).

Рис. 1. Структура кадра Ethernet согласно стандарту IEEE 802.1q

КЛАССИФИКАЦИЯ И РАЗМЕТКА ТРАФИКА

К примеру, коммутаторы 2–го уровня PULLNET семейства AGENT-2 позволяют различать кадры Ethernet (классифицировать трафик) по параметрам метки приоритета (Priority) IEEE 802.1p. Значения приоритета в зависимости от типа трафика приведены в таблице ниже. Стандарт МЭК 61850 по умолчанию предусматривает для GOOSE сообщений и выборок мгновенных значений SV приоритет равный 4.

Таблица 1. Классы трафика согласно стандарту IEEE 802.1p.

Биты приоритета

Обозначение

Класс приоритета трафика

NC (Network Controlled)

Критически важный для сети. Трафик управления сетью

Интерактивный мультимедийный (видео)

CL (Controlled Effort)

Контролируемый. Потоковый мультимедийный

EE (Excellent Effort)

Приоритетный

Стандартный (Экономный)

BE (Best Effort)

Низший. Трафик передаваемый с максимальными усилиями («по возможности»). Вариант по умолчанию

Таким образом, классификация и разметка трафика решает две задачи:

  • Отнесение передаваемых данных к определенному классу трафика.
  • Назначение передаваемому фрейму соответствующего приоритета.

УПРАВЛЕНИЕ ПЕРЕГРУЗКАМИ (МЕХАНИЗМЫ ОЧЕРЕДЕЙ)

Перегрузка возникает в случае переполнения выходных буферов передающего трафик оборудования. Основными механизмами возникновения перегрузок (или, что равнозначно, скоплений – congestions) является агрегация трафика (когда скорость входящего трафика превышает скорость исходящего) и несогласованность скоростей на интерфейсах. Управление пропускной способностью в случае перегрузок (узких мест) осуществляется с помощью механизма очередей. Кадры Ethernet помещаются в очереди, которые упорядоченно обрабатываются по определенному алгоритму. Фактически, управление перегрузками – это определение порядка, в котором фреймы выходят из интерфейса (очередей) на основе приоритетов. Если перегрузок нет – очереди не работают.

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

  • Выяснить, действительно ли очередь переполнена и нет ли в ней места для фреймов с высоким приоритетом.
  • Сформировать политику, согласно которой в первую очередь будут отбрасываться фреймы с более низким приоритетом, и только потом – с более высоким.

Приоритезация используется для классификации фреймов путем их привязки к одной из очередей выхода. Метка приоритета IEEE 802.1p для назначений очереди определяется пользователем. Коммутаторы 2–го уровня PULLNET семейства AGENT-2 поддерживают 4 очереди приоритетов. В таблице ниже представлена подробная информация по меткам приоритета для параметров очереди, установленных на коммутаторе PULLNET по умолчанию.

Таблица 2. Привязка Class of Service (CoS) к очереди пересылки данных по умолчанию.

Значение приоритета

CoS IEEE 802.1p

IEEE 802.1p

Номер очереди

по умолчанию

в PULLNET AGENT-2

q0 (низший приоритет)

q3 (максимальный приоритет)

После процесса классификации фреймы можно привязать к определенной очереди (очередям) в зависимости от метки приоритета CoS.

Настройка очередей выхода осуществляется с помощью схемы планирования одного из следующих способов:

  • Строгий приоритет (Strict Priority – SP).
  • Взвешенный циклический алгоритм (Weighted Round Robin –WRR).

Строгий приоритет (Strict Priority) – гарантирует, что чувствительные ко времени приложения передаются всегда. Строгий приоритет (Strict Priority) позволяет присвоить трафику, зависящему от целевого назначения и чувствительности ко времени, наивысший приоритет перед менее чувствительными ко времени данными. Т.е. фреймы, находящиеся в очереди с высоким приоритетом, обрабатываются первыми. Кадры Ethernet из следующей по приоритету обслуживания очереди начнут передаваться только после того, как опустеет высокоприоритетная очередь. Например, передача голоса по IP осуществляется до пересылки трафика FTP или электронной почты (SMTP). Недостатком данного метода является то, что данные с низким приоритетом могут длительное время не обрабатываться.


Рис. 2. Механизм обработки очередей “Строгий приоритет” (Strict Priority) при постановке фреймов в очередь в соответствии с настройками по умолчанию в коммутаторах PULLNET.

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

При наличии нескольких очередей фреймы могут быть помещены в разные очереди и обслуживаться по взвешенному циклическому алгоритму (Weighted Round Robin – WRR). Внутри очереди устанавливаются весовые коэффициенты (Weight Value) – в коммутаторах AGENT-2 это значения от 1 до 20. Они играют роль исходных точек, по которым определяется, с какой вероятностью может быть отброшен пакет. Процесс обработки очередей осуществляется по круговому принципу, начиная с самой приоритетной очереди. Из каждой непустой очереди передается некоторый объем трафика, пропорциональный назначенному ей весовому коэффициенту, после чего выполняется переход к следующей по убыванию приоритета очереди и так далее по кругу.


Рис. 3. Механизм обработки очередей “Взвешенный циклический алгоритм” (Weighted Round Robin).

Все очереди, за исключением очередей SP, могут работать по схеме WRR. Очереди SP обслуживаются непосредственно перед очередями WRR. Если поток трафика минимален и очереди SP не занимают всю полосу пропускания, назначенную для порта, то очереди WRR используют полосу пропускания совместно с очередями SP. При этом оставшаяся часть полосы пропускания распределяется в соответствии с весовыми коэффициентами. Данный комбинированный механизм «SP+WRR» доступен в коммутаторах PULLNET AGENT-2.

01.12.2016 | Владимир Хазов

Не весь интернет-трафик одинаково важен. Онлайн-видео без замираний картинки или звонок по Skype без заикания голоса важнее, чем загрузка большого файла с помощью торрент-клиента. Функция обеспечения качества обслуживания (QoS) маршрутизатора, шейпера или системы глубокого анализа трафика (DPI) позволяет расставлять приоритеты, какой трафик важнее, и предоставлять ему большую часть полосы пропускания.

И если дома каждый пользователь может настраивать QoS на своем роутере, то оператор связи, используя современное сетевое оборудование, управляет полосой пропускная для всех своих абонентов и обеспечивает неизменно высокое качество для каждого из них.

Что такое качество обслуживания (QoS )

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

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

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

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

Маршрутизатор делит полосу поровну между всеми, не выделяя приоритета какому-либо виду трафика.

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

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

Как включить QoS

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

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

Первый шаг: определить цель

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

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

Оператор связи использует QoS для достижения более глобальных целей:

  • дифференцирование трафика;
  • обеспечение равномерного потока трафика;
  • гарантия качества и скорости доступа в интернет для каждого абонента;
  • предотвращение сетевых перегрузок;
  • уменьшение затрат на Uplink.

Но принципы их достижения схожи с домашней сетью: определение приоритетных видов трафика и приложений, настройка правил в зависимости от приоритета и времени действия.

Второй шаг: определить скорость интернета

Для оператора связи скорость интернета – это скорость доступа к вышестоящему провайдеру (Uplink) или к нескольким провайдерам. Эта величина фиксированная и распределяется между всеми абонентами согласно их тарифным планам. Задачу ее оптимизации и грамотного распределения должны решать правила QoS для обеспечения удовлетворенности клиента от получаемой услуги.

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

Чтобы получить реальную картину, вам необходимо закрыть на компьютере все приложения, которые создают нагрузку на сеть, подключить его к роутеру медным кабелем. Технология беспроводной сети Wi-Fi, особенно если она работает не по современным протоколам Wireless N или Wireless AC, может быть узким местом полосы пропускания. Измерения могут показать скорость в 40 Мб/с вместо доступных 75 Мб/с именно из-за ограничений скорости беспроводной передачи данных.

Зайдите на сайт www.speedtest.net и нажмите кнопку «Начать проверку». Полученный результат необходимо перевести из «Мбит/с» в «Кбит/с», так как настройки QoS чаще всего задаются в этих единицах. Это можно сделать, умножив полученные значения на 1000.

В данном примере мы получили входящую скорость 42 900 Кбит/с, а исходящую – 3980 Кбит/с. Именно эти значения можно распределять между пользователями и приложениями в сети.

Третий шаг: включить QoS на роутере

Невозможно описать порядок включения QoS на всех роутерах, так как каждый производитель предоставляет пользователю свой интерфейс управления, а сетевые устройства операторского класса, такие как Cisco, Juniper, Huawei, настраиваются из командной строки.

В большинстве случаев вам потребуется зайти на страницу управления устройством (набрать в браузере его адрес, чаще всего это 192.168.1.1), ввести логин и пароль администратора, которые указаны в руководстве пользователя, и перейти в раздел NAT сетевых настроек, вкладку QoS. Выберите Enable напротив функции Start QoS, порт для применения правил – WAN (порт соединения с провайдером), настройки входящей и исходящей скорости (downlink и uplink) должны указываться в размере 85–90 % от измеренной во втором шаге.

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

Как приоритизировать трафик

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

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

Если же роутер позволяет производить ручные настройки приоритетов, вам необходимо задать их «вилки» в процентах от общей полосы пропускания:

  • Maximum: 60–100 %
  • Premium: 25–100 %
  • Express: 10–100 %
  • Standard: 5–100 %
  • Bulk: 1–100 %

Эти параметры определяют значение пропускной способности для конкретного устройства или приложения. Например, установив для приложения Maximum, вы назначаете ему использовать 60 % от полосы пропускания во время загрузки сети и 100 %, если сеть полностью доступна. Если установить «Магистральный», то, когда сеть свободна, приложение может использовать любую скорость полосы пропускания, но, если появляется нагрузка, оно получит лишь 1 %.

Хотим напомнить, что к приоритизации надо подходить с четким пониманием того, что вы хотите ограничить.

Варианты приоритизации

1. Приоритет сервиса или приложения

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

2. Приоритет интерфейса

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

3. Приоритет устройств по IP-адресу

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

4. Приоритет устройств по MAC-адресу

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

Тест и оценка

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

Убедиться в правильности работы правил можно запустив сервисы с высоким и низким приоритетом и сравнив их скорости, или запустить speedtest на устройствах сети с разными приоритетами и посмотреть, которое из них покажет больший результат.

Настройка QoS – более сложный процесс, чем базовая настройка роутера, а для оператора связи еще и дополнительные капитальные затраты для покупки платформы DPI, однако и результат позволит добиться более качественного доступа к сети Интернет, а также сэкономить финансы на покупке высокоскоростного канала связи.

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:35, 3 июля 2017.

Quality of service (QoS - качество обслуживания) - качественная мера производительности сети (например, телефонной или компьютерной), наблюдаемая ее пользователями. Чаще всего измерения качества обслуживания сети характеризуются следующими параметрами:

  • частота возникновения ошибок или отказов
  • скорость передачи данных
  • задержка передачи данных
  • пропускная способность канала связи
  • доступность сети

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

Механизм работы

Сети с коммутацией каналов обеспечивают QoS в их основном протоколе. Такие сети не нуждаются в дополнительных методах для достижения высокого качества.

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

Избыточная производительность

В качестве альтернативы сложным механизмам управления QoS может использоваться обеспечение высококачественной связи путем обеспечения избыточной производительности сети. Таким образом емкость сети основывается на оценках максимальной нагрузки на сеть. Данный подход прост для сетей с предсказуемыми пиковыми нагрузками.

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

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

Один убедительный пример необходимости QoS в Интернете связан с коллизиями. Интернет использует протоколы предотвращения переполнения, которые встроены в TCP, чтобы уменьшить трафик. Приложения с высоким QoS, такие как VoIP и IPTV, требуют постоянных битрейтов и низкой задержки, поэтому они не могут использовать TCP и не могут снижать скорость трафика, чтобы предотвращать перегрузку. Механизмы QoS ограничивают трафик, который может быть доступен в интернете, и тем самым обеспечивают контроль трафика, который может вызвать перегрузку, и, следовательно, является неотъемлемой частью способности интернета обрабатывать смешанный трафик в реальном времени без перегрузки.

Протоколы и методы

  • Поле тип службы (ToS) в заголовке IPv4 (сейчас заменено на DiffServ)
  • Дифференцированные службы (DiffServ)
  • Интегрированные услуги (IntServ)
  • Протокол резервирования ресурсов (RSVP)
  • Переключение многопротокольных меток (MPLS) предоставляет 8 классов облсуживания QoS
  • RSVP-TE
  • Ретрансляция кадров
  • Некоторые ADSL модемы
  • Асинхронный режим передачи (ATM)
  • IEEE 802.1p
  • IEEE 802.1Q
  • IEEE 802.11e
  • Домашняя сеть по коаксиальным и телефонным проводам (HomePNA)
  • Стандарт ITU-T G.hn обеспечивает QoS с помощью «возможностей передачи без ограничений» (CFTXOP), которые выделяются потокам, которые требуют QoS и которые согласовали «контракт» с сетевым контроллером. G.hn также поддерживает работу без QoS с помощью «временных интервалов на основе конкуренции».
  • Аудио-видео связь

Примеры технологий, требующих высокий QoS

Высокое качество обслуживания является необходимым требований для определенных типов сетевого трафика, например:

  • Потоковые мультимедия
    • Аудио
  • Видеоконференции
  • Приложения, обеспечивающие стабильную работу системы или ее восстановление
  • Динамичные онлайн-игры в реальном времени

Для работы вышеперечисленных сервисов требуется обеспечить минимальную скорость передачи данных и максимальную латентность.

Практика

Любая приоритезация имеет смысл только в том случае, когда возникает очередь на обслуживание. Именно там, в очереди, можно пройти первым, используя своё право. Очередь же образуется там, где узко (обычно такие места называются «бутылочным горлышком», bottle-neck). Типичное «горлышко» - выход в Интернет офиса, где компьютеры, подключенные к сети как минимум на скорости 100 Мбит/сек, все используют канал к провайдеру, который редко превышает 100 МБит/сек, а часто составляет мизерные 1-2-10МБит/сек. На всех.

QoS не панацея: если «горлышко» уж слишком узкое, то часто переполняется физический буфер интерфейса, куда помещаются все пакеты, собирающиеся выйти через этот интерфейс. И тогда новопришедшие пакеты будут уничтожены, даже если они сверхнужные. Поэтому, если очередь на интерфейсе в среднем превышает 20% от максимального своего размера (на маршрутизаторах cisco максимальный размер очереди составляет как правило 128-256 пакетов), есть повод крепко задуматься над дизайном своей сети, проложить дополнительные маршруты или расширить полосу до провайдера.

Разберемся с составными элементами технологии.

Маркировка

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

  • Ethernet. Поле Class of Service (CoS) - 3 бита. Позволяет разделить трафик на 8 потоков с различной маркировкой
  • IP. Есть 2 стандарта: старый и новый. В старом было поле ToS (8 бит), из которого в свою очередь выделялись 3 бита под названием IP Precedence. Это поле копировалось в поле CoS Ethernet заголовка. Позднее был определен новый стандарт. Поле ToS было переименовано в DiffServ, и дополнительно выделено 6 бит для поля Differencial Service Code Point (DSCP), в котором можно передавать требуемые для данного типа трафика параметры.

Маркировать данные лучше всего ближе к источнику этих данных. По этой причине большинство IP-телефонов самостоятельно добавляют в IP-заголовок голосовых пакетов поле DSCP = EF или CS5. Многие приложения также маркируют трафик самостоятельно в надежде, что их пакеты будут обработаны приоритетно. Например, этим «грешат» пиринговые сети.

Очереди

Даже если не используются никаких технологий приоритезации, это не значит, что не возникает очередей. В узком месте очередь возникнет в любом случае и будет предоставлять стандартный механизм FIFO (First In First Out) . Такая очередь, очевидно, позволит не уничтожать пакеты сразу, сохраняя их до отправки в буфере, но никаких преференций, скажем, голосовому трафику не предоставит. Если нужно предоставить некоторому выделенному классу абсолютный приоритет (т.е. пакеты из этого класса всегда будут обрабатываться первыми), то такая технология называется Priority queuing. Все пакеты, находящиеся в физическом исходящем буфере интерфейса будут разделены на 2 логических очереди и пакеты из привилегированной очереди будут отсылаться, пока она не опустеет. Только после этого начнут передаваться пакеты из второй очереди. Эта технология простая, довольно грубая, её можно считать устаревшей, т.к. обработка неприоритетного трафика будет постоянно останавливаться. На маршрутизаторах cisco можно создать 4 очереди с разными приоритетами. В них соблюдается строгая иерархия: пакеты из менее привилегированных очередей не будут обслуживаться до тех пор, пока не опустеют все очереди с более высоким приоритетом. Справедливая очередь (Fair Queuing). Технология, которая позволяет каждому классу трафика предоставить одинаковые права. Как правило не используется, т.к. мало даёт с точки зрения улучшения качества сервиса. Взвешенная справедливая очередь (Weighted Fair Queuing, WFQ). Технология, которая предоставляет разным классам трафика разные права (можно сказать, что «вес» у разных очередей разный), но одновременно обслуживает все очереди. Все пакеты делятся на логические очереди, используя в качестве критерия поле IP Precedence. Это же поле задаёт и приоритет (чем больше, тем лучше). Дальше, маршрутизатор вычисляет, пакет из какой очереди «быстрее» передать и передаёт именно его.

Считает он это по формуле:

D T = (t (i) − t (0)) / (1 + I P P) {\displaystyle dT=(t(i)-t(0))/(1+IPP)}

IPP - значение поля IP Precedence t(i) - Время, требуемое на реальную передачу пакета интерфейсом. Можно вычислить, как L/Speed, где L - длина пакета, а Speed - скорость передачи интерфейса.

Такая очередь по умолчанию включена на всех интерфейсах маршрутизаторов cisco, кроме интерфейсов точка-точка (инкапсуляция HDLC или РРР). WFQ имеет ряд минусов: такая очередизация использует уже отмаркированные ранее пакеты, и не позволяет самостоятельно определять классы трафика и выделяемую полосу. Мало того, как правило уже никто не маркирует полем IP Precedence, поэтому пакеты идут немаркированные, т.е. все попадают в одну очередь. Развитием WFQ стала взвешенная справедливая очередь, основанная на классах (Class-Based Weighted Fair Queuing, CBWFQ). В этой очереди администратор сам задаёт классы трафика, следуя различным критериям, например, используя ACL, как шаблон или анализируя заголовки протоколов (NBAR). Далее, для этих классов определяется «вес» и пакеты их очередей обслуживаются, соразмерно весу (больше вес - больше пакетов из этой очереди уйдёт в единицу времени). Но такая очередь не обеспечивает строгого пропускания наиболее важных пакетов (как правило голосовых или пакетов других интерактивных приложений). Поэтому появился гибрид Priority и Class-Based Weighted Fair Queuing - PQ-CBWFQ, также известный как, Low Latency Queuing (LLQ). В этой технологии можно задать до 4х приоритетных очередей, остальные классы обслуживать по механизму CBWFQ. LLQ - ?наиболее удобный, гибкий и часто используемый механизм. Но он требует настройки классов, настройки политики и применения политики на интерфейсе. Таким образом процесс предоставления качества обслуживания можно поделить на 2 этапа:

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

Технология QoS - достаточно ресурсоёмкая и весьма существенно загружает процессор. И тем сильнее загружает, чем глубже в заголовки приходится залезать для классификации пакетов. Для сравнения: маршрутизатору гораздо проще посмотреть заголовок IP пакета и проанализировать там 3 бита IPP, нежели раскручивать поток практически до уровня приложения, определяя, что за протокол идёт внутри (технология NBAR). Для упрощения дальнейшей обработки трафика, а также для создания так называемой «области доверия» (trusted boundary), где мы верим всем заголовкам, относящимся к QoS, мы можем делать следующее: 1. На коммутаторах и маршрутизаторах уровня доступа (близко к клиентским машинам) ловить пакеты, сортируя их по классам 2.В политике качестве действия перекрашивать заголовки по-своему или переносить значения QoS-заголовков более высокого уровня на нижние.

Например, на маршрутизаторе ловим все пакеты из гостевого WiFi домена (предполагаем, что там могут быть не управляемые нами компьютеры и софт, который может использовать нестандартные QoS-заголовки), меняем любые заголовки IP на начальные, сопоставляем заголовкам 3 уровня (DSCP) заголовки канального уровня (CoS), чтобы дальше и коммутаторы могли эффективно приоритезировать трафик, используя только метку канального уровня.

Настройка LLQ

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

class - map NAME match ? access- group Access group any Any packets class - map Class map cos IEEE 802.1 Q/ ISL class of service/ user priority values destination- address Destination address discard- class Discard behavior identifier dscp Match DSCP in IP(v4) and IPv6 packets flow Flow based QoS parameters fr- de Match on Frame- relay DE bit fr- dlci Match on fr- dlci input- interface Select an input interface to match ip IP specific values mpls Multi Protocol Label Switching specific values not Negate this match result packet Layer 3 Packet length precedence Match Precedence in IP(v4) and IPv6 packets protocol Protocol qos- group Qos- group source - address Source address vlan VLANs to match

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

Создание политики:

policy- map POLICY class NAME1? bandwidth Bandwidth compression Activate Compression drop Drop all packets log Log IPv4 and ARP packets netflow- sampler NetFlow action police Police priority Strict Scheduling Priority for this Class queue- limit Queue Max Threshold for Tail Drop random- detect Enable Random Early Detection as drop policy service- policy Configure Flow Next set Set QoS values shape Traffic Shaping

Для каждого класса в политике можно либо выделить приритетно кусок полосы:

policy- map POLICY class NAME1 priority? [ 8-2000000 ] Kilo Bits per second percent % of total bandwidth

и тогда пакеты этого класса смогут всегда рассчитывать как минимум на этот кусок.

Либо описать, какой «вес» имеет данный класс в рамках CBWFQ

policy- map POLICY class NAME1 bandwidth? [ 8-2000000 ] Kilo Bits per second percent % of total Bandwidth remaining % of the remaining bandwidth

В обоих случаях можно указать как аболютное значение, так и процент от всей доступной полосы. Возникает резонный вопрос: а откуда маршрутизатор знает ВСЮ полосу? Ответ банален: из параметра bandwidth на интерфейсе. Даже если он не сконфигурирован явно, какое то его значение обязательно есть. Его можно посмотреть командой sh int. Также обязательно помнить, что по умолчанию вы распоряжаетсь не всей полосой, а лишь 75%. Пакеты, явно не попавшие в другие классы, попадают в class-default. Эту настройку для дефолтного класса можно задать явно

policy- map POLICY class class - default bandwidth percent 10

Изменить максимальную доступную полосу с дефолтных 75% можно командой на интерфейсе: max-reserved-bandwidth

Маршрутизаторы следят, чтобы администратор не выдал случайно больше полосы, чем есть и ругаются на такие попытки. Создаётся впечатление, что политика будет выдавать классам не больше, чем написано. Однако, такая ситуация будет лишь в том случае, если все очереди наполнены. Если же какая то пустует, то выделенную ей полосу наполненные очереди поделят пропорционально своему «весу». Работать же вся эта конструкция будет так: если идут пакеты из класса с указанием priority, то маршрутизатор сосредотачивается на передаче этих пакетов. Причем, т.к. таких приоритетных очередей может быть несколько, то между ними полоса делится пропорционально указанным процентам. Как только все приоритетные пакеты закончились, наступает очередь CBWFQ. За каждый отсчёт времени из каждой очереди «зачёрпывается» доля пакетов, указанная в настройке для данного класса. Если же часть очередей пустует, то их полоса делится пропорционально «весу» класса между загруженными очередями.

Применение на интерфейсе:

int s0/ 0 service- policy [ input| output] POLICY

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

police [ speed] [ birst] conform- action [ действие] exceed- action [ действие]

она позволяет явно указать желаемую среднюю скорость (speed), максимальный «выброс», т.е. количество передаваемых данных за единицу времени. Чем больше «выброс», тем больше реальная скорость передачи может отклоняться от желаемой средней. Также указываются: действие для нормального трафика, не превышающего указанную скорость и действие для трафика, превысившего среднюю скорость. Действия могут быть такими

police 100000 8000 conform- action? drop drop packet exceed- action action when rate is within conform and conform + exceed burst set- clp- transmit set atm clp and send it set- discard- class - transmit set discard- class and send it set- dscp- transmit set dscp and send it set- frde- transmit set FR DE and send it set- mpls- exp - imposition- transmit set exp at tag imposition and send it set- mpls- exp - topmost- transmit set exp on topmost label and send it set- prec- transmit rewrite packet precedence and send it set- qos- transmit set qos- group and send it transmit transmit packet

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

Дабы точно предсказать, какие пакеты дойдут до соседа, а какие будут уничтожены в силу загруженности канала на «медленной» стороне, надо на «быстрой» стороне создать политику, которая бы заранее обрабатывала очереди и уничтожала избыточные пакеты. И тут мы сталкиваемся с одной очень важной вещью: для решения этой задачи надо сэмулировать «медленный» канал. Для этой эмуляции не достаточно только распределять пакеты по очередям, надо ещё сэмулировать физический буфер «медленного» интерфейса. У каждого интерфейса есть скорость передачи пакетов. Т.е. в единицу времени каждый интерфейс может передать не более, чем N пакетов. Обычно физический буфер интерфейса рассчитывают так, чтобы обеспечить «автономную» работу интерфейсу на несколько единиц вермени. Поэтому физический буфер будет в десятки раз больше какого-нибудь интерфейса Serial.

Что же плохого в том, чтобы запомнить много? Давайте рассмотрим подробно, что произойдёт, в случае если буфер на быстрой передающей стороне будет существенно больше буфера принимающей. Пусть для простоты есть 1 очередь. На «быстрой» стороне сэмулируем малую скорость передачи. Это значит, что попадая под нашу политику пакеты начнут накапливаться в очереди. Т.к. физический буфер большой, то и логическая очередь получится внушительной. Часть приложений (работающих через ТСР) поздно получат уведомление о том, что часть пакетов не получена и долго будут держать большой размер окна, нагружая сторону-приемник. Это будет происходить в том идеальном случае, когда скорость передачи будет равна или меньше скорости приёма. Но интерфейс принимающей стороны может быть сам загружен и другими пакетами и тогда маленькая очередь на принимающей стороне не сможет вместить всех пакетов, передаваемых ей из центра. Начнутся потери, которые повлекут за собой дополнительные передачи, но в передающем буфере ведь ещё останется солидный «хвост» ранее накопленных пакетов, которые будут передаваться «вхолостую», т.к. на принимающей стороне не дождались более раннего пакета, а значит более позние будут просто проигнорированы.

Поэтому для корректного решения задачи понижения скорости передачи к медленному соседу физический буфер тоже надо ограничить. Делается это командой

shape average [ speed]

Ну а теперь самое интересное: а как быть, если мне помимо эмуляции физического буфера надо внутри него создать логические очереди? Например, выделить приоритетно голос? Для это создаётся так называемая вложенная политика, которая применяется внутри основной и делит на логические очереди то, что в неё попадает из родительской. Пришло время разобрать какой-нибудь залихватский пример на основе приведенной картинки. Пусть мы собираеися создать устойчиво работающие голосовые каналы через интернет между CO и Remote. Для простоты пусть сеть Remote (172.16.1.0/24) имеет только связь с СО (10.0.0.0/8). Скорость интерфейса на Remote - 1 Мбит/сек и выделяется 25% этой скорости на голосовой трафик. Тогда для начала нам надо выделить приоритетный класс трафика с обеих сторон и создать политику для данного класса. На СО дополнительно создадим класс, описывающий трафик между офисами На СО:

class - map RTP match protocol rtp policy- map RTP class RTP priority percent 25 ip access- list extended CO_REMOTE permit ip 10.0.0.0 0.255.255.255 172.16.1.0 0.0.0.255 class - map CO_REMOTE match access- list CO_REMOTE

На Remote поступим иначе: пусть в силу слабого железа мы не можем использовать NBAR, тогда нам остаётся только явно описать порты для RTP

ip access- list extended RTP permit udp 172.16.1.0 0.0.0.255 range 16384 32768 10.0.0.0 0.255.255.255 range 16384 32768 class - map RTP match access- list RTP policy- map QoS class RTP priority percent 25

policy- map QoS class CO_REMOTE shape average 1000000 service- policy RTP

и применить политику на интерфейсе

int g0/ 0 service- policy output QoS

На Remote установим параметр bandwidth (в кбит/сек) в соответствие со скоростью интерфейса. Напомню, что именно от этого параметра будет считаться 25%. И применим политику.

int s0/ 0 bandwidth 1000 service- policy output QoS

1. Собираем статистику по сетевому трафику. Либо по NetFlow, либо NBARом, либо по SNMP. 2. Выявляем профиль нормального трафика, т.е. по статистике, в среднем, протокол HTTP (Hypertext Transfer Protocol) занимает не больше 70%, ICMP - не больше 5% и т.д. Такой профиль можно либо создать вручную, либо применив накопленную NBARом статистику. Мало того, можно даже автоматически создать классы, политику и применить на интерфейсе командой autoqos. 3. Далее, можно ограничить для нетипичного сетевого трафика полосу. Если вдруг и подцепим заразу по нестандартному порту, большой беды для шлюза не будет: на загруженном интерфейсе зараза займет не более выделенной части. 4. Создав конструкцию (class-map - policy-map - service-policy) можно оперативно реагировать на появление нетипичного всплеска трафика, создавая вручную для него класс и сильно ограничивая полосу для этого класса.

QoS – целая пачка технологий, без которых современная сеть работает крайне плохо, а ряд задач не может выполнить вообще. Это и логики классификации трафика, и схема marking’а, когда данные помечаются путём помещения в заголовок канального или сетевого уровня соответствующих пометок, и управление логикой работы очередей, когда надо отправить несколько потоков данных через ограниченный по пропускной способности интерфейс, и шейпинг, и многие другие дисциплины, без которых целостная картина просто не получится. Фундаментально это изучается разве что на курсе , да и то – в пять дней не всегда влезаем, материала там много.

Однако, сетевые настройки Windows в плане “глубже, чем просто айпишник назначить”, обычно являют собой что-то мистическое для администратора (да и для большинства тренеров Microsoft тоже, т.к. сетевые вопросы в авторизованных курсах Microsoft рассказываются крайне минималистично). Хотя ничего ужасного в сетевых технологиях нет, скорее, наоборот – зачастую бытует мнение, что “в Windows этого нет”, базирующееся на глубоком выводе о том, что говорящий это не нашёл за 10 секунд.

Попробуем разобраться.

Предположим, что Вы уже знаете сетевые технологии на базовом уровне, хотя бы слышали про ethernet, 802.1Q и формат IP-пакета. Если не слышали – имеет смысл послушать наш курс , это бесплатно. Конечно, лучше изучить QoS основательно , но это, в принципе, не строго необходимо для восприятия данного материала.

QoS в Windows Server 2012 и других версиях ОС

  • Глобальные настройки QoS
  • Настраиваем политики QoS
  • IP Precedence, DSCP – что и как
  • WMM_AC и специфика 802.11-сетей
  • Взаимодействие политик QoS

Включаем поддержку QoS в сетевой подсистеме Windows

Для того, чтобы маркировать и CoS и ToS, у Windows есть специальный сетевой компонент, который так и называется – QoS Packet Scheduler. Установите его и включите на всех сетевых интерфейсах, на которых планируется управление QoS.

QoS для старых версий Windows – Windows XP и Windows Server 2003

Для поддержки QoS в NT 5.1 / NT 5.2 Вам также необходимо в явном виде включить поддержку маркировки ToS – по умолчанию там она выключена. Это делается путём изменения DWORD32 значения DisableUserTOSSetting у ключа реестра HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters на нуль. Если такого значения нет – создайте его и обнулите в явном виде, а после перезапустите систему – без этого параметр не применится и ОС будет продолжать игнорировать заданную приложениями через Winsock опцию IP_TOS.

Теперь продолжим про настройки, общие для разных версий Windows.

Если посмотреть внимательно, то этот компонент по сути и есть NDIS-драйвер:

Далее. Для того, чтобы мы могли указывать не только L3-параметры QoS (которые в IP-заголовке в поле ToS), а ещё и L2-параметры (которые в 802.1Q заголовке, в части, называемой 802.1p), нам надо включить на сетевом адаптере поддержку 802.1Q. Это будет выглядеть по разному в разных сетевых адаптерах – но примерно так:

Если такого пункта нет, то ставить метки CoS в кадре 802.3 некуда. Это уменьшит практическую пользу от настроек QoS, но, в общем-то, не уберёт её. Суть в том, что обычный хост не добавляет этот заголовок в 802.3-кадр, и эта настройка, в зависимости от сетевого адаптера, может обозначать разное – или “принимать кадры с 802.1Q-заголовком и анализировать его, в том числе и 802.1p”, или “делать это только в случае, когда мы отправляем кадр с меткой 802.1Q”. Смотрите детальнее специфику своего сетевого адаптера, общий совет тут выдать можно только один – если заголовка 802.1Q нет, то данные о качестве обслуживания можно добавить лишь в L3-заголовок.

Если Вы проделали всё вышеуказанное – система готова к тому, чтобы реализовывать заданные Вами параметры QoS. Теперь надо их задать.

Глобальные настройки QoS в Windows

Глобальные настройки QoS коснутся двух моментов – того, как будет обрабатываться входящий TCP-трафик, и того, как будут взаимодействовать политики QoS и установки QoS на уровне отдельных приложений. Находятся они в объекте групповой политики, точнее – в , в контекстном меню Advanced QoS Settings… , вызываемом нажатием правой кнопки мыши. Рассмотрим их по отдельности.

Настройки Inbound TCP Traffic

Выглядеть они будут примерно так:

Это, по сути, никакой не QoS, а управление окном TCP для трафика в сторону данного хоста. Идея в том, что данная настройка напрямую влияет на то, какое максимальное значение receive window будет предлагаться при работе TCP-соединений. Начиная с NT 6.0, в Windows появилась человеческая поддержка окна TCP размером более 64К, вот данная политика и позволяет задать это максимальное значение окна централизованно. При задании уровня 0 окно будет ограничено 64КБ, при 1 – 256КБ, при 2 – 1МБ, а при 3 – 16МБ.

Учтите, что чем больше окно, тем реже TCP отправляет подтверждения о приёме, и тем менее “динамично” он реагирует на форс-мажорные ситуации, когда сегмент TCP задерживается или теряется. Чем меньше – тем быстрее реакция, но больше служебного трафика. В общем и целом в надёжных сетях при передаче больших объёмов данных (например, файл-сервер в локальной сети офиса) целесообразно устанавливать значение выше, а при сценарии “По tcp-сессии идёт не очень много данных, но у канала варьируется латентность и качество” – меньшее значение.

Настройки DSCP Marking Override

Выглядеть данные настройки будут так:

Это достаточно простая настройка, некий аналог mls qos trust cos в Cisco IOS. Суть – разрешать или нет приложениям, которые умеют метить трафик, делать это. Если выберете, что в явном виде можно – то когда приложение будет устанавливать поле ToS, то политики QoS будут игнорироваться, если нет – то наоборот; приложения на данном хосте будут безрезультатно вызывать функции API по маркировке трафика, а вся маркировка будет идти по явно указанной в политиках логике.

Давайте теперь посмотрим, как эти политики формируются.

Настраиваем политики QoS

Находятся они там же – Computer Configuration / Windows Settings / Policy-based QoS . Рассмотрим создание политики.

Первое, что надо учесть – ограничения политик. Под них может подпадать только трафик TCP и UDP. Другие IP-протоколы ограничить не получится. Плюс есть дополнительные настройки для HTTP-сессий, что улучшает ситуацию. Поэтому штатное решение по управлению качеством обслуживания затрагивает не весь возможный трафик, но в подавляющем большинстве случаев является достаточным. Приоритет исходящего IPSec или PPTP-трафика, например, задать не получится.

При создании политики первым делом надо будет указать её название (произвольное, технического назначения не имеет), значение DSCP и ограничение на полосу. Давайте чуток вспомним, что это и зачем.

QoS – это большая пачка технологий. Это и то, как помечать пакеты и кадры (Marking), и то, как формировать очереди для отправки нескольких потоков с разными метками через один интерфейс (Queuing), и то, как сбрасывать из этих очередей лишний трафик (Shaping). Когда речь идёт о сегменте сети, в котором эта логика единообразна и продумана (трафик X помечается на всех устройствах однотипно и однотипно же добавляется в очереди), говорят о том, что это – домен QoS. Мы будем рассчитывать на то, что установки, которые мы сейчас делаем через групповую политику, будут аналогично восприниматься сетевыми устройствами – это уже out of scope для этой статьи, но для полноценной поддержки QoS в организации это сделать нужно. Иначе нет никакого особого смысла тщательно классифицировать трафик, потом помечать, а потом на первом же коммутаторе в процессе отправки в uplink валить всё в одну кучу с логикой FIFO.

Когда деревья были большими – 31 год назад, в 1981 году – в заголовке IP-пакета тоже, как и сейчас, было одинокое поле размером с байт и с названием ToS – Type of Service. То, что делать с этим полем, написали в RFC 791 и назвали IP Precedence. Делать предлагалось многое – помечать каждый пакет “уровнем важности” от 0 до 7, используя 3 бита этого поля, и добавлять пожелания вида “если есть возможность, отправь трафик по каналу с меньшей латентностью / большей надёжностью / большей номинальной полосой пропускания”, используя ещё 3 бита. Два бита отложили до лучших времён. Как-то так:

[
Бит приоритета N0 |
Бит приоритета N1 |
Бит приоритета N2 |
Бит задержки |
Бит толщины |
Бит надёжности |
Unused |
Unused
]

Потом ещё чуток подумали и задействовали дополнительный бит, добавив 4е пожелание – “чтобы через тот канал, который подешевле в плане денег” – RFC 1349 . Итого остался один незадействованный бит, получилось 8 уровней приоритета трафика плюс 4 бита и их комбинации влияли на выбор “при прочих равных условиях”.

Предполагалось, что этого хватит. Стало так:

[
Бит приоритета N0
Бит приоритета N1
Бит приоритета N2
Бит нежелательной задержки
Бит толщины (канала)
Бит надёжности
По любви или за деньги
Unused
]

Хорошо заметно, что логическую модель пожеланий разрабатывала женщина.

Модель IP Precedence была простой и предполагала, что весь трафик можно разбить на 8 классов, между которыми будет простое логическое соотношение вида “5 всегда важнее, чем 4”, плюс добавить некоторые пожелания. Все задачи по реализации этой схемы (чтобы одинаковый трафик метили одинаковыми IP Precedence, и обрабатывали схожим способом, плюс учитывали пожелания в виде 4х дополнительных бит) ложились на администратора. Впоследствии 4 бита “пожеланий” практически перестали использовать, и схема IP Precedence превратилась в минималистичную “8 глобальных типов трафика, выстроеных по важности”. Их можно трактовать и называть по-разному, логики работы это не поменяет, например так:

  • 0 – То, что называется Best Effort – трафик, который будет доставляться по остаточному принципу, когда будет возможность. Best Effort – это не “наилучшим способом”, это “хотели, как лучше, а как получится – посмотрим”. Обычно 0 – это весь неклассифицированный трафик.
  • 1 – Распознаный трафик. Например, HTTP, SMB, FTP. Это не значит, что этот трафик какой-то особенный. Он хотя бы “понятно какой”.
  • 2 – Приоритетный трафик. Например, RDP – при перекачке файла будет не очень хорошо, если начнёт тормозить работа с терминальным сервером.

Но 14 лет назад, в 1998 году, парни из EMC и Cisco решили, что не хватит, и придумали ощутимо более гибкую систему, притом сразу и для ToS в IPv4, и для его потомка – Traffic Class в IPv6 . Назвали её Differentiated Services. Система задействовала уже все 8 бит поля ToS – 6 на идентификатор класса (DSCP), и 2 на сигнализацию в случае заторов в сети (ECN). Как раз этот, более современный способ, и используется в политиках Windows. Метки, заданные по DSCP, более многочисленные, поэтому разбиваются на несколько групп.

DSCP-метки группы CS – Class Selector’ы

Этот механизм, который описан в RFC 2474 , нужен для совместимости с предыдущей реализацией. В этом случае используется только 3 первые бита из 6, остальные устанавливаются в нули, поэтому с точки зрения расположения данных внутри байта ToS, CS’ы задают те же самые биты, что и IP Precedence. Соответственно, CS’ов будет 8 штук – от CS0 до CS7, и выглядеть они будут предсказуемо:

  • CS0 = 000 000
  • CS1 = 001 000
  • CS2 = 010 000
  • CS3 = 011 000
  • CS4 = 100 000
  • CS5 = 101 000
  • CS6 = 110 000
  • CS7 = 111 000

DSCP-метки группы AF – Assured Forwarding

Эти метки, логика которых есть в RFC 2597 , уже интереснее – они содержат по 2 значения, x и y, поэтому записываются в читаемом варианте как AFxy.

Первое значение – x – будет обозначать класс трафика. Классов определено 4 – от единицы до четвёрки. Их иногда называют словами – единица = бронзовый, двойка = серебряный, тройка = золотой, четвёрка = платиновый. Это значение будет записано в первые 3 бита. Во вторые будет записан y – он будет обозначать приоритет при необходимости сброса трафика. Будет определено три значения – единица будет обозначать low drop priority, двойка – medium, тройка – high. Это будет обозначать, что трафик одного и того же класса, но с разными приоритетами, будет при возникновении ситуации удаляться исходя из этого приоритета – вначале low, потом medium, потом high. Не запутайтесь – пакет с high drop priority сбрасывается последним, а с low – первым.

Если сеть не поддерживает 3 приоритета, то она должна поддерживать хотя бы 2 – тогда они выглядят как AFx1 в роли “менее важного” и AFx2-AFx3 в роли “более важного”.

Определены следующие значения:

  • AF11 = 001 010 (в десятичном варианте DSCP = 10)
  • AF12 = 001 100 (в десятичном варианте DSCP = 12)
  • AF13 = 001 110 (в десятичном варианте DSCP = 14)
  • AF21 = 010 010 (в десятичном варианте DSCP = 18)
  • AF22 = 010 100 (в десятичном варианте DSCP = 20)
  • AF23 = 010 110 (в десятичном варианте DSCP = 22)
  • AF31 = 011 010 (в десятичном варианте DSCP = 26)
  • AF32 = 011 100 (в десятичном варианте DSCP = 28)
  • AF33 = 011 110 (в десятичном варианте DSCP = 30)
  • AF41 = 100 010 (в десятичном варианте DSCP = 34)
  • AF42 = 100 100 (в десятичном варианте DSCP = 36)
  • AF43 = 100 110 (в десятичном варианте DSCP = 38)

DSCP-метка EF – Expedited Forwarding

Это – высший, “premium” класс обслуживания. Значение этой метки – 46, она обозначает трафик, который надо отправить самым лучшим по всем параметрам способом.

Вкратце всё. Как понятно, значение DSCP равное нулю будет обозначать Best-Effort доставку.

Специфика 802.11-сетей

У WiFi будет своя классификация типов трафика. Она будет называться WMM_AC (Wireless MultiMedia Access Categories) и будет достаточно несложной.

  1. Весь трафик с DSCP от 48 и выше относится к Voice-классу (обозначается как VO)
  2. Весь трафик с DSCP от 32 до 47 относится к Video-классу (обозначается как VI)
  3. Весь трафик с DSCP от 24 до 31 относится к BestEffort-классу (обозначается как BE)
  4. Весь трафик с DSCP от 8 до 23 относится к Background-классу (обозначается как BK)
  5. Весь трафик с DSCP от 0 до 7 относится (опять, да?) к BestEffort-классу (обозначается тоже как BE)

Соответственно, если Ваш WiFi-адаптер поддерживает WMM, то Вы можете включить это на уровне драйвера WiFi-адаптера, и он будет классифицировать свой исходящий трафик по 4м очередям в соответствии с “VO самый главный, VI второй, BE обычный, а BK – фоновый”. Если в Вашей сети политики QoS будут действовать на хосты с WiFi-адаптерами – учитывайте эти моменты при планировании политик.

Создаём политику

При создании политики мы можем указать нужный DSCP-класс и ограничение на полосу пропускания исходящего трафика, подпадающего под нужный критерий. Как оба этих значения, так и одно из них.

Применение политики на указанные приложения

Здесь есть три варианта – политика будет действовать на трафик от любого приложения, от указанного (указывается исполняемый модуль), или только на HTTP-ответы от наших приложений, подпадающих под нужные критерии. Третий вариант будет интересен, когда надо будет через политику ограничить полосу отдаваемого трафика для указанных HTTP-ресурсов – допустим, если мы хотим ограничить “отдаваемые с нас” видеофайлы, подпадающие под критерий вида “http://www..

Применение политики на указанные source/destination IPv4/IPv6-адреса

Достаточно тривиальные настройки – можно дополнительно ограничить применение политик QoS на трафик по L3-критерию. Замечу, что если в предыдущей настройке было выбрано “ограничить отдаваемый от нас в ответ на специфичный HTTP-запрос трафик”, то будет доступна только фильтрафия по destination, т.к. откуда исходит трафик и так понятно – от нас.

Применение политики на указанные source/destination TCP/UDP порты

Это просто – разве что не забудьте, что диапазон портов указывается через двоеточие (вида 1024:65535, а не 1024-65535).

В общем-то всё, политика создана. Можно создать и ещё. Как они будут взаимодействовать в случае пересечения?

Взаимодействие политик QoS

В случае, когда трафик будет подпадать под несколько политик, будет определяться “выигравшая”, приоритеты будут выставляться так:

  • Политики QoS уровня пользователя перекрывают политики QoS уровня компьютера
  • Если определена политика, влияющая на конкретное приложение, и есть политика, под которую тот же трафик подпадает, но уже по сетевым критериям (адреса, номера портов), то выигрывает политика приложения
  • Политика, действующая на настройку более конкретно, перекроет общую. Это отнесётся и к подпадению сразу под две политики сетевого плана (подпасть под 192.168.1.0/24 важнее, чем под 192.168.0.0/16), и под “указанный явно порт лучше чем диапазон портов”, и под “более конкретный URL вида http://host/video/* лучше, чем http://host/*”

Зафиксируйте также интересную штуку – на серверных ОС Microsoft настройки QoS применяются всегда, а на клиентских – только в случае, когда сетевой интерфейс для исходящего трафика распознан как Domain Network. Это сделано специально, чтобы ограничения, действующие на ноутбук сотрудника при работе в корп.сети, не ограничивали бы по скорости и качеству его работу во внешних сетях. Это не влияет на безопасность, поэтому не является ослаблением оной; это лишь ограничения исходящего трафика.

Теперь – о глобальных настройках “движка QoS” – сетевого компонента QoS Packet Scheduler.

Данные параметры будут указывать общесистемные (не относящиеся к конкретному типу трафика и сетевому интерфейсу) настройки этого механизма. Располагаться они будут в соответствующей ветке групповых политик:

Параметр QoS Packet Scheduler – Limit Outstanding Packets

Данная настройка указывает максимальный размер системной очереди исходящих пакетов. Т.е. если пакет назначен для отправки через конкретный интерфейс (найден next-hop и назначен egress interface), он считается “отправляемым” по данному критерию, и увеличивает этот счётчик на единицу. Как только пакет будет успешно отправлен (заметьте – именно пакет, этот счётчик работает только для L3-пакетов), счётчик уменьшится. Технически в Windows L3-очереди для конкретного интерфейса нет, есть только L2 (т.е. из кадров), поэтому если суммарное количество таких вот “ожидающих” пакетов будет больше указанного числа, то новый пакет не будет отправлен вообще, пока очередь не будет разгружена. От размера пакета это не зависит, считаются “головы” ожидающих пакетов. Пакеты всех сетевых протоколов (и IPv4, и IPv6) считаются вместе, т.е. при значении по умолчанию – 65536 – поставить “в очередь” по, допустим, 35 тысяч пакетов IPv4 и IPv6 не получится – 65537й пакет любого протокола будет отброшен по логике tail drop (т.е. не помещён в очередь).

Я бы рекомендовал помнить, что исходящий пакет лимитируется кадровым MTU, которое в случае включения поддержки Jumbo Frames на сетевых интерфейсах будет 9КБ, поэтому даже дефолтная настройка, по сути, выделяет буфер для ожидающих пакетов суммарным размером до 589.824.000 байт, т.е. более полугигабайта (в случае обычного сетевого интерфейса 10/100Мбит – поменьше, 98.304.000 байт). Этого более чем достаточно на все случаи жизни (просто подумайте, что это за приложение такое, которое будет пытаться впихнуть в исходящую очередь интерфейса столько пакетов), поэтому зачастую целесообразно это значение уменьшать – уменьшается объём RAM, занимаемый служебными структурами драйвера QoS Packet Scheduler. Я ставлю на хосты, у которых виртуальные сетевые интерфейсы и не-интенсивная нагрузка (например, DC/GC) значение в 4096, и footprint драйвера QoS проседает.

Для узлов, к которым подключается много внешних сессий, плюс настроен QoS, плюс отдаваемые данные состоят из мелких пакетов (голос, торренты) это значение может быть увеличено. Общая логика, думается, понятна – есть память и потребность отдавать очень много мелких пакетов – вполне можно и в ограничение в 65536 упереться.

Параметр QoS Packet Scheduler – Set Timer Resolution

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

Логика проста – допустим, используется стандартное значение в 10ms. Это значит, что секунда делится на 100 равных частей. Допустим, есть правило, которое ограничивает сервис X по отправке до 5МБайт в секунду. Следовательно, 100 раз в секунду будет запускаться счётчик, который будет измерять трафик, фактически отправленный подпадающим под правило сервисом. Если этот трафик за учётный период в 10ms наберёт 50КБ, то больше он отправляться не будет и начнёт уходить в “ожидающую” очередь, про которую рассказано в предыдущем пункте. Ну а когда начнётся новый период в 10ms, опять сможет быть отправлено 50КБ.

Соответственно, чем это число больше, тем шейпинг будет “грубее”, но меньше будет тратиться процессорных ресурсов. А чем число меньше, тем более “гладко” будет уходить трафик – заметьте, это всё относится только к трафику, подпадающему под правила QoS, трафик без маркировки это затрагивать не будет. Имеет смысл увеличить разрешение таймера (до 2ms например) в случае, когда есть правило по отправке голосового трафика – это положительно повлияет на качество исходящего потока.

Параметр QoS Packet Scheduler – Limit Reservable Bandwidth

Самая страшная настройка – сколько про неё сказок рассказывается уже лет 10, просто ппц. Легенды о том, что “венда по дефолту 20% сетевой полосы пропускания просто так зажимает”, я слышал в десятках вариантов – от безобидного “потому что они тупые там и не могут нормально сетевуху полностью нагрузить” до шизоидного “это чтобы данные с винта пользователя в Пентагон отправлять”.

На самом деле всё просто. Это – суммарное количество резервируемой всеми правилами QoS, работающими на данной системе, полосы пропускания. Т.е. если оно 20%, а у Вас сетевой интерфейс в 100 Мбит, то как бы Вы не старались, и не создавали, например, 3 правила, каждое из которых резервирует под приложение по 15 мегабит (3*15=45), то Вы никак больше 20 мегабит не займёте в результате своим приоритезированным трафиком.

Грубо говоря, это значение показывает, сколько “QoS’овского классифицированного” трафика в процентах от номинальной полосы пропускания интерфейса может быть. Целесообразно, если Вы пишете политики QoS, увеличить это число например до 90%. Почему не до 100? Потому что в случае, когда по каким-то причинам весь трафик некоего приложения станет супер-приоритетным, и полоса резервирования будет 100%, другой трафик будет вечно проигрывать соревнование за очерёдность отправки, и система не сможет делать свои задачи – грубо говоря, например, отвалятся всякие служебные протоколы типа IKE, который ходит по 500му порту UDP, NTP, DNS, и прочие. Вот от этого идёт страховка, когда делают не 100, а не от того, что “винда просто так берёт и часть сети не использует”.

Quality Windows Audio Video Experience (qWave) – что такое и нужен ли

Данный компонент, появившийся со времен NT 6.0, представляет из себя клиент-серверный сервис, технически работающий по портам 2177 TCP/UDP, и нужный для того, чтобы две службы на разных хостах могли “договориться” о том, какому потоку данных какой приоритет предоставить. Сервер, инициирующий передачу данных, имеет роль initiator, принимающая сторона имеет роль sink. Суть в том, что приложение, которое сможет “заказать” у qWave уровень качества для своих данных, должно быть соответствующим способом разработано (например, использовать для установки сессии функционал.NET). qWave, по сути, будет перекрывать своими настройками, если они есть, системные. Плюсов у интегрированного подхода много – qWave автоматически определяет, поддерживается ли 802.1p не только на конечных хостах, но и на промежуточном сетевом оборудовании, позволяет гибко и на ходу переопределять резервируемую полосу для нужного трафика, а также постоянно отслеживать такие параметры, как latency канала (QoS Packet Scheduler этого делать не может), периодически отправляя тестовые пакеты и “промеряя” качество линии между двумя хостами.

Напомню – “просто так” установить этот компонент можно, но нужен софт, который будет уметь запросить у него функционал. По умолчанию qWave не работает, т.к. если бы он работал, то он тратил бы ресурсы сети на тестовые измерения качества канала.

Вместо заключения

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

«Кос » — это технология, обеспечивающая выделение предпочтений высокоприоритетному сетевому трафику, устройству или критичному приложению, необходимая для работы Ип-телефонов , видеоконференций, потокового видео, CITRIX-Приложений, телефонии Voip и подобного чувствительного к задержкам трафика.
Упрощённо говоря, с её помощью приложения наподобие Скайпа, сетевого медиа-проигрывателя, (VLC-Player какой-нибудь), коллективной онлайн игры, смогут получить достаточную полосу пропускания (скорость) при любой степени загрузки Интернет-канала, тем самым не будут "тупить" и "лагать".


Видео: основы Qos, как это работает.

QoS оперирует некоторыми параметрами передачи данных, вот основные:
Полоса пропускания Bandwidth , или (BW ). Данный параметр определяет ширину канала, описывает номинальную пропускную способность среды передачи. Может измеряться в: Бит/сек (bps), Кбит/сек (kbps), Мбит/сек (mbps).
Delay: описывает величину возможной задержки передачи пакета по сети.
Jitter: флуктуации (диапазон возможных задержек) при передаче сетевых пакетов.
Packet Loss: этот параметр задает количество пакетов, которые отбрасываются в процессе передачи.

МЕТОДЫ ВНЕДРЕНИЯ в вычислительную сеть

Технология QoS может обеспечиваться различными способами. Каждый способ имеет свои особенности, преимущества и недостатки. Рассмотрим их подробнее.
1) Резервирование. Суть метода резервирования сетевых ресурсов заключена в его названии. Непосредственно перед передачей информации происходит запрос и резервирование необходимой приложению полосы пропускания. Реализуется посредством технологии интегрированного обслуживания IntServ вместе с протоколом RSVP .
2) Приоритезация. Трафик делится на классы различного приоритета. Некоторые классы, например видео, имеют приоритет над голосом. Технология осуществляется посредством дифференцированного обслуживания DiffServ .
3) Перемаршрутизация. Механизм пересылает трафик по резервному маршруту при перегрузке основного.

Вам также может быть интересен следующий материал. Как работает приоритезация в беспроводных сетях .

глобальные виды Qos

УРОВЕНЬ 2

CoS (Class of service) - технология второго уровня, простая схема разметки, реализуемая посредством протокола 802 1P . Для реализации данной технологии необходимо задействовать протокол 802 1Q (TRUNK + VLAN), после чего станет возможным активация CoS посредством 802_1P. Стандарт 802_1P маркирует кадры Ethernet 2го уровня трехбитным полем CoS, принимающем значения от 0 до 7.
Метод поддерживается бюджетными коммутаторами сиско, наподобие Каталист Экспресс Series 500, старшими Catalysts 2900 Switches. Такой вид приоритезации используется внутри локальной сети на втором уровне модели OSI и не выходит за пределы ЛВС. Для корректной работы QoS уровня 2 требуется включить и сконфигурировать его поддержку на всех коммутаторах сети.

Классификация и маркировка трафика на третьем уровне

Qos третьего уровня может называться ToS (от Type of service) . Маршрутизационное оборудование работает с IP пакетами (Layer 3), в заголовке у которых под приоритезационные цели выделено специальное поле: «Tos» объемом один байт. Поле может быть заполнено разными классификаторами.
1) Трехбитный IPP (IP PRECEDENCE) может принимать значения 0-7.
2) Шестибитный DSCP (модель: DiffServ) более гибок, позволяет выставить значение с 0 по 63.
Используется для приоритезации ИП трафика, (третий уровень OSI); настраивается на маршрутизаторах. Поддерживается всеми моделями маршрутизаторов Сиско Systems, включая бюджетную серию ЦИСКО ИСР 870. В КоСе 3-го уровня могут использоваться две схемы разметки пакетов. Internet Protocol Precedence — простая система приоритезации. В ней заголовок АЙ-ПИ пакета размечается значениями с 0 по 7.
Ip Dscp (differentiated services code point) - глубокая дифференцированная приоритезация с точкой отсчета. Она позволяет более гибко настраивать приоритеты для нужд конвергентной сети.

Каким сетям критически необходим QoS?

Полная поддержка "качества обслуживания" необходима при проектировании корпоративных мультисервисных, конвергентных сетей, где планируется перегон критичного голосового, видео трафика по каналу совместно с данными. Особенно остро возникает необходимость корректного внедрения QoS при прогоне на роутере конвергентного трафика через каналы WAN ограниченной пропускной способности (DSL, ISDN, E-3) как вариант, при межофисном обмене в сетях VPN между удаленными офисами.

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

какие устройства и в какой мере поддерживают QoS

Ip телефоны Cisko требуют комплексной поддержки КоСа (АйПи DSCP). Хотя есть модели (Циско 7920), поддерживающие базовый набор параметров «QBSS», что может выражаться в сужении универсальности, гибкости при работе данного устройства в сложной сетевой среде.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то