Сайт о телевидении

Сайт о телевидении

» » Qos настройка управления очередями. глобальные виды Qos. Видео по настройке QoS на роутере

Qos настройка управления очередями. глобальные виды Qos. Видео по настройке QoS на роутере

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

Механизмы QoS

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

Рассмотрим следующие модели:

  • Best Effort –негарантированная доставка используется во всех сетях по умолчанию. Положительная сторона заключается в том, что эта модель не требует абсолютно никаких усилий для реализации. Не используются никакие механизмы QoS, весь трафик обслуживается по принципу “пришел первым – обслужили первым”. Такая модель не подходит для современных сетевых сред;
  • Integrated Services (IntServ) – эта модель интегрированного обслуживания использует метод резервирования. Например, если пользователь хотел сделать VoIP вызов 80 Кбит/с по сети передачи данных, то сеть, разработанная исключительно для модели IntServ , зарезервировала бы 80 Кбит/с на каждом сетевом устройстве между двумя конечными точками VoIP, используя протокол резервирования ресурсов RSVP (Resource Reservation Protocol) . На протяжении звонка эти 80 Кбит/с будут недоступны для другого использования, кроме как для VoIP звонка. Хотя модель IntServ является единственной моделью, обеспечивающей гарантированную пропускную способность, она также имеет проблемы с масштабируемостью. Если сделано достаточное количество резервирований, то сеть просто исчерпает полосу пропускания;
  • Differentiated Services (DiffServ) – модель дифференцированного обслуживания является самой популярной и гибкой моделью для использования QoS. В этой модели можно настроить каждое устройство так, чтобы оно могло использовать различные методы QoS, в зависимости от типа трафика. Можно указать какой трафик входит в определенный класс и как этот класс должен обрабатываться. В отличие от модели IntServ , трафик не является абсолютно гарантированным, поскольку сетевые устройства не полностью резервируют полосу пропускания. Однако DiffServ получает полосу, близкую к гарантированной полосе пропускания, в то же время решая проблемы масштабируемости IntServ . Это позволило этой модели стать стандартной моделью QoS;

Инструменты QoS

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

  • Классификация и разметка (Classification and Marking) - Эти инструменты позволяют идентифицировать и маркировать пакет, чтобы сетевые устройства могли легко идентифицировать его по мере пересечения сети. Обычно первое устройство, которое принимает пакет, идентифицирует его с помощью таких инструментов, как списки доступа (access-list), входящие интерфейсы или deep packet inspection (DPI), который рассматривает сами данные приложения. Эти инструменты могут быть требовательны к ресурсам процессора и добавлять задержку в пакет, поэтому после того как пакет изначально идентифицирован, он сразу помечается. Маркировка может быть в заголовке уровня 2 (data link ), позволяя коммутаторам читать его и/или заголовке уровня 3 (network ), чтобы маршрутизаторы могли его прочитать. Для второго уровня используется протокол 802.1P , а для третьего уровня используется поле Type of Service . Затем, когда пакет пересекает остальную сеть, сетевые устройства просто смотрят на маркировку, чтобы классифицировать ее, а не искать глубоко в пакете;
  • Управление перегрузками (Congestion Management) – Перегрузки возникают, когда входной буфер устройства переполняется и из-за этого увеличивается время обработки пакета. Стратегии очередей определяют правила, которые маршрутизатор должен применять при возникновении перегрузки. Например, если интерфейс E1 WAN был полностью насыщен трафиком, маршрутизатор начнет удерживать пакеты в памяти (очереди), чтобы отправить их, когда станет доступна полоса пропускания. Все стратегии очередей направлены на то, чтобы ответить на один вопрос: “когда есть доступная пропускная способность, какой пакет идет первым?“;
  • Избегание заторов (Congestion Avoidance) – Большинство QoS механизмов применяются только тогда, когда в сети происходит перегрузка. Целью инструментов избегания заторов является удаление достаточного количества пакетов несущественного (или не очень важного) трафика, чтобы избежать серьезных перегрузок, возникающих в первую очередь;
  • Контроль и шейпинг (Policing and Shaping) – Этот механизм ограничивает пропускную способность определенного сетевого трафика. Это полезно для многих типичных «пожирателей полосы» в сети: p2p приложения, веб-серфинг, FTP и прочие. Шейпинг также можно использовать, чтобы ограничить пропускную способность определенного сетевого трафика. Это нужно для сетей, где допустимая фактическая скорость медленнее физической скорости интерфейса. Разница между этими двумя механизмами заключается в том, что shaping формирует очередь из избыточного трафика, чтобы выслать его позже, тогда как policing обычно сбрасывает избыточный трафик;
  • Эффективность линков (Link Efficiency) – Эта группа инструментов сосредоточена на доставке трафика наиболее эффективным способом. Например, некоторые низкоскоростные линки могут работать лучше, если потратить время на сжатие сетевого трафика до его отправки (сжатие является одним из инструментов Link Efficiency);
Механизмы Link Efficiency

При использовании медленных интерфейсов возникают две основных проблемы:

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

Чтобы побороть эти проблемы были разработаны следующие Link Efficiency механизмы:

  • Сжатие полезной нагрузки (Payload Compression) – сжимает данные приложения, оправляемые по сети, поэтому маршрутизатор отправляет меньше данных, по медленной линии;
  • Сжатие заголовка (Header Compression) – Некоторый трафик (например, такой как VoIP) может иметь небольшой объем данных приложения (RTP-аудио) в каждом пакете, но в целом отправлять много пакетов. В этом случае количество информации заголовка становится значимым фактором и часто потребляет больше полосы пропускания, чем данные. Сжатие заголовка решает эту проблему напрямую, устраняя многие избыточные поля в заголовке пакета. Удивительно, что сжатие заголовка RTP, также называемое сжатым транспортным протоколом реального времени (Compressed Real-time Transport Protocol - cRTP ) уменьшает 40-байтовый заголовок до 2-4 байт!;
  • Фрагментация и чередование (Link Fragmentation and Interleaving) - LFI решает проблему задержки сериализации путем измельчения больших пакетов на более мелкие части до их отправки. Это позволяет маршрутизатору перемещать критический VoIP-трафик между фрагментированными частями данных (которые называются «чередованием» голоса);
Алгоритмы очередей

    Постановка в очереди (queuing ) определяет правила, которые маршрутизатор должен применять при возникновении перегруженности. Большинство сетевых интерфейсов по умолчанию используют базовую инициализацию First-in, First-out (FIFO) . В этом методе сначала отправляется любой пакет, который приходит первым. Хотя это кажется справедливым, не весь сетевой трафик создается равным. Основная задача очереди - обеспечить, чтобы сетевой трафик, обслуживающий критически важные или зависящие от времени бизнес-приложения, отправлялся перед несущественным сетевым трафиком. Помимо очередности FIFO используются три первичных алгоритма очередности:

  • Weighted Fair Queuing (WFQ) – WFQ пытается сбалансировать доступную полосу пропускания между всеми отправителями равномерно. Используя этот метод, отправитель с высокой пропускной способностью получает меньше приоритета, чем отправитель с низкой пропускной способностью;
  • Class-Based Weighted Fair Queuing (CBWFQ) – этот метод массового обслуживания позволяет указать гарантированные уровни пропускной способности для различных классов трафика. Например, вы можете указать, что веб-трафик получает 20 процентов полосы пропускания, тогда как трафик Citrix получает 50 процентов пропускной способности (вы можете указать значения как процент или конкретную величину полосы пропускания). Затем WFQ используется для всего неуказанного трафика (остальные 30 процентов в примере);
  • Low Latency Queuing (LLQ) - LLQ часто упоминается как PQ-CBWFQ, потому работает точно так же, как CBWFQ, но добавляется компонент приоритета очередей (Priority Queuing - PQ ). Если вы указываете, что определенный сетевой трафик должен идти в приоритетную очередь, то маршрутизатор не только обеспечивает пропускную способность трафика, но и гарантирует ему первую полосу пропускания. Например, используя чистый CBWFQ, трафику Citrix может быть гарантированно 50% пропускной способности, но он может получить эту полосу пропускания после того, как маршрутизатор обеспечит некоторые другие гарантии трафика. При использовании LLQ приоритетный трафик всегда отправляется перед выполнением любых других гарантий. Это очень хорошо работает для VoIP, делая LLQ предпочтительным алгоритмом очередей для голоса;

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

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

Начнем с определений:

Сравнение IPP и DSCP.

Per-Hop Behaviors (PHB)

1.Default PHB

3.Assured Forwarding PHB (AF)


4.Class Selector PHB (CS)

Попробуем разобраться, что такое QoS (Quality of Service), какие стандарты и определения к ней относятся. Поговорим о Best Effort Service, IntServ, DiffServ, PHB, ToS, CoS, IP Precedence (IPP), DSCP, AF, EF, Default PHB.

Давайте первым делом определимся, что же такое Quality of Service. Существует множество определений QoS, мне больше всего нравится вот это:

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

Под сервисом понимается множество параметров при передачи данных. Рассмотрим основные из них:

1. Bandwidth - ширина полосы пропускания. 2. End-to-end delay - задержка при передаче пакета. 3. Jitter - изменение задержки во времени при передаче пакетов. 4. Packet Loss – потеря (отбрасывание) пакетов при передачи данных.

Сервисные модели Quality of Service.

Существуют 3 различные сервисные моделей QoS.

1. Best Effort Service. Негарантированная доставка.

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

2. Integrated Service (IntServ). Интегрированное обслуживание.

Обеспечивает сквозное (End-to-End) качество обслуживания, т.е. происходит резервирование ресурсов на всем пути прохождения трафиика. Для резирвирования ресурсов (Resource reservation) используется протокол RSVP, гарантируя необходимую пропускную способность. Существенным недостатком является постоянное резервирование ресурса, даже в том случае, если он не используется или используется не полностью.

3. Differentiated Service (DiffServ). Дифференцированное обслуживание.

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

DiffServ выпоняет две функции:

1. Формирование трафика на границах сети - функции классификации, маркировки пакетов и управление интенсивностью. 2. Политика пошагового обслуживания PHB (Per-Hop Behavior) включает функции распределения ресурсов и отбрасывания пакетов.

QoS Классификация и маркировка пакетов.

Начнем с определений:

Классификация пакетов (Packet Classification) - отнесение пакета к определенному классу.

Маркировка пакетов (Packet Marking) - установка требуемого приоритета.

Следует отметить, что классификация и маркировка пакетов отличаются в зависимости от уровня OSI, на котором работает устройство. Как правило, все коммутаторы работают на уровне L2, а именно с Ethernet кадрами. Маршутизаторы работают на уровне L3 и уже не с кадрами, а пакетами.

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

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

Однако не все так плохо. Появился стандарт IEEE 802.1Q, описывающий технологию виртуальных локальных сетей VLAN, вместе с которым был разработан стандарт 802.1P для обеспечения QoS в сетях Ethernet (классификации и маркировки Ethernet кадров).

В стандарте 802.1P предусмотрено поле User Priority или второе более позднее название CoS (Class of Service), состоящее из 3-х бит в заголовке 802.1Q, т.е. CoS может принимать значения от 0 до 7.

Формат Ethernet кадра 802.1Q.

Классы трафика согласно стандарту IEEE 802.1P.

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

На L3 мы имеем дело с протоколом IP (Internet Protocol). При разработке протокола IP для целей QoS было специально предусмотрено поле ToS (Type of Service) размером один байт.

Поле ToS может быть заполнен классификатором IP Precedence или DSCP в зависимости от задачи.

IP precedence (IPP) имеет размерность 3 бита, может принимать значения 0-7, т.е. можно говорить о 8-ми классах обслуживания. Изначально использовался классификатор IPP, но со временем появилась необходимость разделять трафиик на большее чем 8 классов обслуживания, следствием чего явилась разработка классификатора DSCP.

DSCP состоит из 6 бит (значения 0-63). Использование дополнительных 3-х бит позволяют ввести большее количество классов. DSCP обратно совместим с IPP. Важно понимать, что оборудование должно поддерживать обработку поля ToS заполненого классификатором DSCP, на старом оборудование с этим могут возникнуть проблемы.

Сравнение IPP и DSCP.

Per-Hop Behaviors (PHB)

Разберем более подробно понятие PHB.

Per-Hop Behaviors (PHB) - это политика пошагового обслуживания, иными словами, это некий алгоритм действий по обработки пакетов, выполняемый на каждом узле. PHB определяет, к какой из очередей отнести пакет, а также сброс пакетов в очереди в случае перегрузок.

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

1.Default PHB

Применяется для передачи Best-Efforts (негарантированая доставка) трафика, т.е. нет никакой маркировки, а точнее биты DSCP с 5 по 7 равны 000. Используется для совместимости с сетевыми устройствами, не поддерживающими маркировку или если она не используется.

Распределение бит DSCP в Default PHB.

2.Expedited Forwarding PHB (EF)

Используется для передачи трафика, чувствительного к задержкам. Биты DSCP с 5 по 7 равны 101. Пакеты, помеченные как EF, передаются с наименьшей задержкой в очереди.

Распределение бит DSCP в EF PHB.

3.Assured Forwarding PHB (AF)

Используется для гарантированной доставки. Значение бит DSCP с 5 по 7 может принимать 4 значения (001, 010, 011, 100), следовательно получается четыре стандартных класса AF (AF1, AF2, AF3, AF4), а внутри каждого класса может существует три уровня сбросса пакетов (low, medium, high).

Распределение бит DSCP в AF PHB.

aaa - номер класс обслуживания.
dd - вероятность сброса пакета.

4.Class Selector PHB (CS)

Значение бит DSCP со 2 по 4 равны 000, что дает обратную совместимось с полем ToS, заполненым классификатором IPP.

Распределение бит DSCP в Class Selector PHB.

Ниже приведу таблицу сравнения DSCP и IP Precedence.

Сравнительная таблица DSCP и IPP.

Вот и все. Я попытался коротко рассказать о QoS и понятиях, входящих в него, таких как Best Effort Service, IntServ, DiffServ, PHB, ToS, CoS, IPP, DSCP, AF, EF, Default PHB.

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

Quality of Service (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. Это же поле задаёт и приоритет (чем больше, тем лучше). Дальше, маршрутизатор вычисляет, пакет из какой очереди «быстрее» передать и передаёт именно его.

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

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.1Q/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?

Kilo Bits per second
percent % of total bandwidth


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

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

policy-map POLICY
class NAME1
bandwidth?

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

(UPD, спасибо OlegD)
Изменить максимальную доступную полосу с дефолтных 75% можно командой на интерфейсе

max-reserved-bandwidth

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

Создаётся впечатление, что политика будет выдавать классам не больше, чем написано. Однако, такая ситуация будет лишь в том случае, если все очереди наполнены. Если же какая то пустует, то выделенную ей полосу наполненные очереди поделят пропорционально своему «весу».

Работать же вся эта конструкция будет так:

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

Как только все приоритетные пакеты закончились, наступает очередь CBWFQ. За каждый отсчёт времени из каждой очереди «зачёрпывается» доля пакетов, указанная в настройке для данного класса. Если же часть очередей пустует, то их полоса делится пропорционально «весу» класса между загруженными очередями.

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

int s0/0
service-policy POLICY

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

Для решения этой задачи для класса трафика в политике есть технология

police 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 пакетов. Обычно физический буфер интерфейса рассчитывают так, чтобы обеспечить «автономную» работу интерфейсу на несколько единиц вермени. Поэтому физический буфер, скажем, GigabitEthernet будет в десятки раз больше какого-нибудь интерфейса Serial.

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

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

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

Делается это командой

shape average

Ну а теперь самое интересное: а как быть, если мне помимо эмуляции физического буфера надо внутри него создать логические очереди? Например, выделить приоритетно голос?

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

Пришло время разобрать какой-нибудь залихватский пример на основе приведенной картинки.

Пусть мы собираеися создать устойчиво работающие голосовые каналы через интернет между 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

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

На более умных L2/3 коммутаторах на маршрутизируемых интерфейсах (т.е. либо на interface vlan, либо если порт выведен со второго уровня командой no switchport ) применяется та же конструкция, что работает и на маршрутизаторах, а если порт или весь коммутатор работает в режиме L2 (верно для моделей 2950/60), то там для класса трафика можно использовать только указание police, а priority или bandwidth не доступны.

Причем часто червь распространяется по нужным для работы портам (ТСР/135,445,80 и др.) Просто закрыть на маршрутизаторе эти порты было бы опрометчиво, поэтому гуманнее поступать так:

1. Собираем статистику по сетевому трафику. Либо по NetFlow, либо NBARом, либо по SNMP.

2. Выявляем профиль нормального трафика, т.е. по статистике, в среднем, протокол HTTP занимает не больше 70%, ICMP - не больше 5% и т.д. Такой профиль можно либо создать вручную, либо применив накопленную NBARом статистику. Мало того, можно даже автоматически создать классы, политику и применить на интерфейсе
командой autoqos :)

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

4. Создав конструкцию (class-map - policy-map - service-policy ) можно оперативно реагировать на появление нетипичного всплеска трафика, создавая вручную для него класс и сильно ограничивая полосу для этого класса.

Нет ни одного человека, который бы хоть раз не прочитал какой-нибудь FAQ по Windows XP. А раз так, то каждый знает, что есть такая вредная служба Quality of Service — сокращенно QoS. При настройке системы ее настоятельно рекомендуется отключать, потому что она по умолчанию ограничивает сетевую пропускную способность на 20%, и как будто бы эта проблема существует и в Windows 2000.

Вот эти строки:

Q: Как полностью отключить службу QoS (Quality of Service)? Как ее настроить? Правда ли, что она ограничивает скорость сети?
A: Действительно, по умолчанию Quality of Service резервирует для своих нужд 20% от пропускной способности канала (любого - хоть модем на 14400, хоть гигабитный Ethernet). Причем даже если удалить службу QoS Packet Scheduler из Properties-соединения, этот канал не освобождается. Освободить канал или просто настроить QoS можно здесь. Запускаем апплет Group Policy (gpedit.msc). В Group Policy находим Local computer policy и нажимаем на Administrative templates. Выбираем пункт Network - QoS Packet Sheduler. Включаем Limit reservable bandwidth. Теперь снижаем Bandwidth limit 20% до 0% или просто отключаем его. При желании здесь же можно настроить и другие параметры QoS. Для активации произведенных изменений остается только перезагрузиться.

20% - это, конечно, очень много. Воистину Microsoft - "маздай". Утверждения подобного рода кочуют из FAQ в FAQ, из форума в форум, из СМИ в СМИ, используются во всевозможного рода "твикалках" - программах по "настройке" Windows XP (кстати говоря, откройте "Групповые политики" и "Локальные политики безопасности", и ни одна "твикалка" не сравнится с ними по богатству вариантов настройки). Разоблачать голословные утверждения такого рода нужно осторожно, что мы сейчас и сделаем, применив системный подход. То есть основательно изучим проблемный вопрос, опираясь на официальные первоисточники.

Что такое сеть с качественным сервисом?

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

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

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

Основные параметры QoS

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

  • Bandwidth (полоса пропускания) - скорость, с которой трафик, генерируемый приложением, должен быть передан по сети;
  • Latency (задержка) - задержка, которую приложение может допустить в доставке пакета данных;
  • Jitter - изменение времени задержки;
  • Loss (потеря) - процент потерянных данных.

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

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

Фундаментальные ресурсы QoS и механизмы обработки трафика

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

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

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

Распределение ресурсов QoS по сетевым устройствам

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

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

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

Механизм обработки трафика включает в себя:

  • 802.1p;
  • Дифференцированные услуги per-hop-behaviors (diffserv PHB);
  • Интегрированные услуги (intserv);
  • ATM и др.

Большинство локальных сетей основано на технологии IEEE 802 включая Ethernet, token-ring и др. 802.1p - это механизм обработки трафика для поддержки QoS в таких сетях.

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

Diffserv - это механизм уровня 3. Он определяет поле в уровне 3 заголовка пакетов IP, названных diffserv codepoint (DSCP).

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

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

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

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

Определение

Quality of Service (QoS) - это технология предоставления определенным классам трафика заданных приоритетов при обслуживании. Такой подход имеет смысл лишь при возникновении очереди. Последняя образуется в особо «узких» местах. И часто называют ее «бутылочным горлышком». Типичным примером очереди можно считать Интернет в офисе, где компьютеры подключены к сети со скоростью около 100 Мбит/сек. При этом все они используют единый канал. Однако технологию QoS нельзя считать панацеей. Если «горлышко» слишком узкое, часто переполняется буфер интерфейса. Именно в него помещаются пакеты данных.

Параметры

Далее будет подробно рассмотрена настройка QoS. Внесение изменений в очереди заключается в корректировке классов. Далее для них следует определить параметры для Теперь следует применить на интерфейс созданную конструкцию. Дальнейшая настройка QoS заключается в сортировке пакетов на классы. Для этого можно использовать различные атрибуты. Например, основываясь на поле DSCP, выделяя соответствующий конкретный протокол либо указывая как шаблон ACL. Давайте разберемся, откуда маршрутизатору известна вся полоса. Данные поступают из атрибута bandwidth в интерфейсе. Даже когда он явно не сконфигурирован, какое-то его значение возникает обязательно. Его можно увидеть при помощи команды sh int.

Принцип работы

Когда осуществляется настройка QoS, важно учесть, что по умолчанию в нашем распоряжении не вся полоса, а лишь 75 %. Пакеты, не попавшие в состав других классов, поступают в class-default. Маршрутизаторы следят, чтобы администратор не выдал больше полосы, чем имеет в распоряжении. Подобные попытки пресекаются. Создаётся впечатление, будто политика намерена выдавать классам не более заданного показателя. Однако подобная ситуация создается лишь в том случае, если наполнены все очереди. В случае опустения какой-либо, предназначенную ей полосу пропорционально делят наполненные «соседи». Если данные идут из класса, имеющего статус priority, маршрутизатор сосредотачивается именно на передаче подобных пакетов. Причем приоритетных очередей бывает несколько. В таком случае полоса между ними делится пропорционально заданным процентам. Когда приоритетные пакеты заканчиваются, наступает очередь для CBWFQ.

За каждый временной отсчёт из всех очередей «зачерпывается» доля данных. Ее необходимо указать в настройке соответствующего класса. Если часть очередей по определенным причинам пустует, их полоса пропорционально делится. Теперь разберем, что делать, когда необходимо строго рубить данные из класса, которые выходят за указанную скорость. Важно помнить, что указание bandwidth только распределяет полосу, когда очереди полностью загружены. Вы можете указать необходимую среднюю скорость и максимальный «выброс». Чем больше последний показатель, тем быстрее передача может отклоняться в сторону. Мы коротко описали, на каких принципах основывается настройка QoS.