Приоритизация трафика по моделям QoS: что это и как работает

QoS (Quality of Service, качество обслуживания) — это технология управления ресурсами сетевых пакетов, позволяющая приоритизировать поток данных, передаваемых по каналам связи IP. Обеспечивает трафик необходимым сервисом обслуживания в соответствии с заданными техническими рамками.

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

QoS

Рисунок 1. Пример QoS

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

Обойти это невозможно из-за ограничения объёма передаваемых данных по каналу связи. Без QoS их передача происходит последовательно — передаётся тот трафик, который стоит первым в очереди. Это приводит к тому, что телефонные звонки прекращаются или звучат с перебоями.

В таких случаях можно настроить QoS для определения приоритета голосового и видеотрафика. Тогда они будут передаваться быстрее (но и в этом случае не будут передаваться одинаково быстро), в то время как остальной (менее важный) трафик — медленнее. QoS не устраняет перегрузку, но позволяет пропустить вперёд более важные пакеты данных.

Краткий экскурс в историю возникновения QoS

Голосовой трафик и обычная информация передавались по совершенно разным сетям. Для голосовых данных использовалась коммутируемая телефонная сеть общего пользования PSTN (Public Switched Telephone). А трафик данных передавался через IP-сети: корпоративную глобальную вычислительную сеть (WAN) и интернет. Например, персональный компьютер обращался к файловому серверу через корпоративную глобальную сеть.

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

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

QoS

Рисунок 2. Передача данных через конвергентную сеть

Конвергентные сети IP WAN (рис. 2) позволяют экономить средства, а также использовать более продвинутые функции для голосового и видеотрафика. При этом различным видам данных приходится конкурировать между собой за пропускную способность. Если её достаточно и сеть не перегружена, то проблем нет. Но, если сеть перегружена, то это может создавать трудности для видео и голосовых пакетов данных, которые чувствительны к задержкам.

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

Сферы применения QoS

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

  • Стриминговые сервисы и потоковые мультимедийные приложения, у которых высокие потребности в пропускной способности, и без приоритизации информационных пакетов им не обойтись.
  • Сервисы видеоконференций и IP-телефонии. Нестабильная передача видео и голосового трафика в таких приложениях приводит к сорванным звонкам и конференциям.
  • Приложения веб-камер в охранных системах, производственные системы автоматизированного управления, инструменты удалённой медицинской помощи (например, хирургия) и т. д.

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

Модели QoS

Применяются три основные модели качества обслуживания:

  • BES (Best Effort Service) — эта модель усиливает пропускную способность, но не занимается маркировкой и приоритизацией отдельных видов, передаваемых по каналам связи данных. Обычно такая модель работает с приложениями, не требовательными к скорости передачи данных, фазовым колебаниям и длительным задержкам.
  • IntServ (Integrated Service) — модель, которая резервирует ресурсы, используя для этого протокол RSVP. Перед отправкой пакетов данных он сообщает сети значение QoS и параметры трафика. Затем сеть резервирует необходимый под потребности протокола объём полосы. После получения информации о забронированных ресурсах, приложение передаёт в сеть пакеты данных.
  • DiffServ (Differentiated Service) — эта модель качества обслуживания классифицирует трафик. Затем каждому классу она присваивает значение QoS. Она также занимается и маркировкой пакетов данных, управлением интенсивностью сетевой передачи и использованием политики отбрасывания хвостов.

Характеристики сетевого трафика

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

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

  • пропускная способность (bandwidth),
  • задержка (delay),
  • джиттер (jitter),
  • потеря пакетов (loss).

Пропускная способность (bandwidth)

Общая пропускная способность канала измеряется в бит/с (Кбит/с, Мбит/с, Гбит/с). Инструменты QoS позволяют зарезервировать часть пропускной способности канала для определённых видов трафика. Например, можно зарезервировать 20% пропускной способности канала для голосового трафика, 30% для определённых видов трафика важных данных, и оставить 50% для всего остального трафика.

Задержка (delay)

Существуют два основных вида задержек.

Виды задержек

Рисунок 3. Виды задержек на примере передачи голосового трафика между двумя телефонами.

Первый вид — one-way delay или end-to-end delay. Это односторонняя задержка, которая измеряется временем, необходимым трафику для прохождения расстояния от отправителя до адресата. Например (рис. 3), время, которое требуется для передачи голосового пакета данных от телефона 1 к телефону 2 называется односторонней задержкой.

Второй вид — two-way delay. Это двусторонняя задержка, то есть время, необходимое трафику для прохождения от отправителя до места назначения и обратно. Таким образом измеряется не только период времени для передачи данных от телефона 1 к телефону 2, но и период получения ответа телефоном 1.

Джиттер (jitter)

Это отклонение сигнала по типу «дрожания». Другими словами, это вариация односторонней задержки между пакетами данных, отправленными одним и тем же приложением. Если одни пакеты доставляются за 10 миллисекунд, а другие за 100 миллисекунд, то это высокий джиттер. Есть большая разница в том, сколько времени потребуется каждому пакету, чтобы достичь адресата.

Джиттер негативно влияет на качество звука телефонных звонков, поэтому IP-телефоны имеют буферы джиттера, обеспечивающие фиксированную задержку аудиопакетов. Но, если джиттер слишком высок, он переполнит буфер и качество звука пострадает.

Потеря пакетов (loss)

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

Существует несколько рекомендуемых стандартов приемлемого качества интерактивного звука:

  • односторонняя задержка (не более 150 миллисекунд),
  • джиттер (не более 30 миллисекунд),
  • потеря пакетов (не более 1%).

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

Как работает QoS

Качество обслуживания сервисов обеспечивается несколькими механизмами работы:

  • классификация и маркировка,
  • управление очередями и перегрузками,
  • формирование и профилирование трафика.

Классификация и маркировка

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

Вот некоторые из них:

  • Списки контроля доступа ACL (Access Control List). Трафик, разрешённый ACL, будет обрабатываться определённым образом. Например, одни данные могут рассматриваться как высокоприоритетные, а другие — запрещённые ACL. Это похоже на то, как ACL используется для динамического NAT.
  • Распознавание сетевых приложений NBAR (Network Based Application Recognition). Иногда простого просмотра информации нижнего уровня, такого как номер порта TCP или UDP и IP-адрес, недостаточно, чтобы точно определить, что это за трафик. NBAR выполняет так называемую «глубокую проверку пакетов» для просмотра информации уровней 3 и 4, но при необходимости может проводить анализ до 7-го уровня, чтобы идентифицировать конкретный тип трафика.
  • На уровнях 2 и 3 есть специальные поля для идентификации трафика — кодовая точка приоритета PCP (Priority Code Point) и поле заголовка IP DSCP, кодовая точка дифференцированных услуг.

PCP

PCP также известна как COS (Class Of Service), класс обслуживания, использование которого определяется открытым стандартом тегирования трафика IEEE 802.1p. PCP — это 3-битное поле.

Эти 3 бита дают 8 возможных значений и определяются типами трафика, три из которых наиболее важны и желательно их запомнить.

PCP

Рисунок 4. PCP (COS)

Обычный неприоритетный трафик относят к значению «0» — негарантированная доставка. Это означает, что нет никаких гарантий того, что трафик будет доставлен и что он соответствует какому-либо стандарту QoS.

IP-телефоны маркируют свой сигнальный трафик как PCP3, он классифицируется как критически важный трафик со значением «3». Эта классификация используется для установления телефонных вызовов. Но когда вызов уже установлен, то сам голосовой трафик и аудиопакеты помечаются (маркируются) как PCP5, и классифицируются значением «5». Для маркировки трафика необходимо установить значение в полях PCP и DSCP. Затем сетевые устройства просматривают эту маркировку и используют её для классификации трафика как высокоприоритетного, низкоприоритетного и т. д. Когда IP-телефон помечает свой голосовой трафик как PCP5, он хочет, чтобы маршрутизаторы и коммутаторы классифицировали эти пакеты, как высокоприоритетные.

PCP

Рисунок 5. Простая сеть с парой компьютеров в VLAN10 и IP-телефонов в VLAN20

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

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

Если предположить, что сеть настроена так, что все компьютеры и телефоны могут взаимодействовать друг с другом и через внешнюю сеть, то какие из этих каналов являются магистральными или каналами доступа Voice VLAN?

Соединения между телефонами и коммутаторами — это порты доступа с голосовым VLAN. Трафик, входящий и исходящий от телефонов, будет тегирован. И эти два соединения будут магистральными каналами, маркирующими трафик в VLAN10 (20).

Устройства по этим соединениям могут помечать трафик определённым значением PCP, чтобы указать другим устройствам обрабатывать трафик с определённым уровнем приоритета. А устройства, получающие этот отмеченный трафик, могут классифицировать его как высокий, средний, низкий или любой другой приоритет на основе маркировки значений PCP.

При таком типе проектирования сети трафик от персонального компьютера не тегируется dot1q, тогда по этому линку не может быть маркировки PCP. Кроме того, весь трафик между R1 и R2 (или между R2 и внешними пунктами назначения) не будет иметь тега dot1q. Таким образом, трафик по этим ссылкам не может быть маркирован значением PCP, а PCP не может использоваться для классификации трафика. Это главное ограничение.

IP ToS Byte

Type of Service

Рисунок 6. Как осуществляются классификация и маркировка на уровне 3

В заголовке IPv4 есть байт, который называется байтом ToS (Type of Service), типом услуги. Этот байт стоит вторым в заголовке после полей Version и IHL (рис. 6). Современное использование байта ToS состоит из двух полей DSCP (кодовая точка дифференцированных услуг) и ECN («явное уведомление о перегруженности»).

ToS byte

Рисунок 7. ToS byte устаревшее использование

Раньше этот байт был организован иначе (рис. 7). 3 бита использовались для поля IPP, иными словами приоритета IP. IPP был нужен для маркировки пакетов в соответствии с их приоритетом, как поле PCP в заголовке dot1q. Остальные 5 битов в основном были определены для каких-либо других целей, а возможно и вовсе не использовались. В старой модели 3 бита тоже дают 8 возможных значений, как и в поле PCP-заголовка dot1q.

Однако, текущее использование байта ToS, показанное выше (рис. 6), таково: 6 бит для DSCP и 2 бита для ECN. 6 бит для DSCP позволяют использовать в общей сложности 64 значения, что даёт большую гибкость в отношении того, как можно маркировать и классифицировать трафик.

IPP (IP Precedence)

Стандартная маркировка IPP аналогична PCP:

  • Значения «6» и «7» зарезервированы для так называемого трафика «управления сетью». Это относится к трафику, такому как сообщения протокола OSPF, передаваемые между маршрутизаторами.
  • Интерактивный голосовой трафик маркируется как IPP5.
  • Интерактивный видеотрафик маркируется как IPP4.
  • IPP3 используется для трафика голосовой сигнализации, для установления и завершения телефонных звонков.
  • IPP0 используется для обычной передачи пакетов данных без каких-либо особых требований и гарантии доставки

Таким образом, если зарезервированы «7» и «6», остаётся только 6 возможных значений. Хотя для многих сетей достаточно 6, но стандарты QoS некоторых более сложных сетей требуют большей гибкости. И поскольку IPP использовал только 3 бита байта ToS, а остальные 5 практически не использовались, было решено добавить к IPP дополнительные 3 бита, чтобы создать DSCP, кодовую точку дифференцированных услуг.

DSCP

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

Поэтому было разработано несколько соответствующих сетевым стандартам наборов маркировок:

  • Переадресация по умолчанию (Default Forwarding, DF). Это маркировка «негарантированной доставки» (наилучшего трафика, best effort). К такому трафику не предъявляются какие-то особые требования QoS. Значение DSCP для DF — это «0».
  • Ускоренная пересылка (Expedited Forwarding, EF). Используется для трафика, требующего низкого уровня потерь, задержек и джиттера. Значение DSCP для EF — это «46».
  • Гарантированная пересылка (Assured Forwarding, AF). Это не одна маркировка, а набор из 12 стандартных значений DSCP, с которыми проще работать. Определяет четыре класса трафика. Все пакеты в классе имеют одинаковый приоритет. Более высокий номер класса означает более высокий приоритет, его пакеты будут передаваться с лучшим обслуживанием, чем пакеты с более низким приоритетом. Внутри каждого класса есть три уровня приоритета отбрасывания. Более высокий уровень отбрасывания означает, что пакет с большей вероятностью будет отброшен во время перегрузки из-за WRED.
  • Селектор классов (Class Selector, CS). Это способ организации поля DSCP в набор из 8 стандартных значений. CS обеспечивает обратную совместимость с IPP. Как работает обратная совместимость? Трём битам, добавленным для DSCP, присваивается значение «0», а исходные биты IPP используются для 8 возможных значений.

Границы доверия (Trust Boundaries)

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

Управление очередями и перегрузками

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

Организация очереди трафика без QoS

Рисунок 8. Организация очереди трафика без QoS

Пример: на рис. 8 маршрутизатор получает пакеты через интерфейсы G0/0 и G0/1 быстрее, чем пересылает их из своего интерфейса G0/2. И таким образом очередь для интерфейса G0/2 постепенно заполняется. По умолчанию сообщения в очереди будут пересылаться согласно FIFO. Это означает, что сообщения будут отправляться в том порядке, в котором они были получены. Никакому виду трафика не уделяется особого внимания. Когда очередь переполнится, трафик продолжит поступать на интерфейсы G0/0 и G0/1 быстрее, чем маршрутизатор может пересылать пакеты из G0/2. И очередь переполнится. Когда это произойдет, новые пакеты будут отброшены. Если этот пакет прибывает и его необходимо переслать из G0/2, но очередь переполнена, он отбрасывается. Это называется отбрасыванием хвоста или отбрасыванием конца очереди (tail drop).

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

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

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

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

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

Но, существует глобальный порог, и, если объём трафика в очереди пересекает его, устройство начнет случайным образом отбрасывать трафик, как сказано выше. Однако, улучшенная версия под названием «взвешенное случайное раннее обнаружение» (WRED) позволяет контролировать, какие пакеты отбрасываются, в зависимости от класса трафика.

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

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

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

Управление очередями

Рисунок 9. Пример управления очередями

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

Распространённым методом планирования является завершённый циклический анализ. Это означает, что пакеты берутся из каждой очереди по порядку, циклически. Каждый раз из очередей с высоким приоритетом берётся больше трафика, поэтому эти очереди более результативны.

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

Вот ещё один пример:

Управление очередями

Рисунок 10. Ещё один пример управления очередями

Трафик классифицируется, помещается в очередь, планируется и передаётся. Устройство использует взвешенный планировщик циклического перебора, циклически отправляя определённый объем трафика из каждой очереди. Кроме того, каждая очередь получает гарантированный минимальный объём пропускной способности, даже если очереди перегружены. Это более продвинутый механизм, чем просто очередь вывода. Но, всё еще не идеальный, в частности, для голосового и видеотрафика. Даже если трафик получает гарантированный минимальный объём полосы пропускания, циклический перебор может добавить задержку и джиттер, поскольку даже высокоприоритетные очереди аудио и видеопакетов должны ждать своей очереди в планировщике.

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

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

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

Формирование и профилирование трафика (shaping and policing)

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

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

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