Добрый день, в данной статье хотел бы немного рассказать о методе построения правил QoS в устройствах Cisco. Для начала хочу дать краткое определение понятию QoS.
QoS — это способность сети, обеспечивать улучшенное обслуживание сетевого трафика независимо от выбранных технологий, включая Frame Relay, ATM, Ethernet или IP сеть с маршрутизацией.
Основная функция QoS — это предоставление усовершенствованного и более предсказуемого поведения сетевых служб, при помощи таких механизмов как:
  • Выделенная полоса пропускания
  • Улучшенная характеристика потерь
  • Предотвращение и управление перегрузками
  • Деление трафика
  • Приоритезация трафика
Теперь перейдем к рассмотрению детальной структуры командной строки управления QoS в устройствах Cisco. Данная модель является центральной в QoS решениях построенных на базе Cisco IOS. В оригинале она звучит как Modular QoS CLI, далее я буду называть ее MQC.
MQC разделяет задачи связанные с QoS на следующие модули:
  • Определение потока трафика
  • Классификация его на принадлежность к класcу QoS
  • Применение политик QoS для данного класса
  • Определение интерфейсов на которых политика должна быть приведена в исполнение.

Ниже указанна схема примерного взаимодействия данного алгоритма.

image

Постараюсь подробнее рассмотреть команды относящиеся к данному режиму конфигурации.
Switch(config)# class-map cisco
Switch(config-cmap)#

Команда class-map используется для того, чтобы описать класс трафика
  • Назначение класса трафика — классифицировать или идентифицировать трафик который будет передан конкретному QoS.
  • Трафик который соответствует определенным критериям.
Класс трафика состоит из 3 основных элементов:
  • Имя (name)
  • Набор команд match
  • Если существует больше одной ��оманды match, класс должен содержать инструкции по вычислению
данных команд.
Ниже приведу пример, весь трафик который разрешен, через ACL test будет частью класса известного как cisco.
Switch(config)# class-map cisco
Switch(config-cmap)# match access-group name test

Команда match используется для определения различных критериев классификации пакетов.
Если пакет совпадает с указанными критериями:
  • Пакет начинает относиться к данному классу
  • Пакет пересылается следуя спецификациям QoS указанных в политике трафика.

Пакеты которые не совпали в указанными критериями:
  • Классифицируются как класс по умолчанию.
  • Распределяются по другим политикам трафика.
Если в данном классе имеется больше чем одно совпадение, используется:
— class-map match-any или
— class-map match-all
Если используется match-any, то трафик будет будет двигаться исходя из правила, «должен соответствовать одному из указанных критериев»
Если используется match-all, то трафик будет двигаться исходя из правила, «должен соответствовать всем указанным критериям»
В качестве примера рассмотрим набор команд:

Switch(config)# class-map match-any cisco
Switch(config-cmap)# match access-group name test
Switch(config-cmap)# match interface fastethernet 0/1


Если трафик совпадает с утверждением «разрешено» в ACL test или трафик создается интерфейсом Fa0/1, он будет признан частью трафика известного как cisco.
Команда policy-map используется для создания политики трафика
— Назначение политики трафика — это конфигурирование функций QoS, которые должны быть связаны с трафиком который был классифицирован как трафик описанный пользователем.
Политика трафика состоит также из трех элементов:
  • Имя политики (Policy name)
  • Класс трафика (обозначается командой class)
  • политики QoS которые будут применены к каждому классу.
Рассмотрим пример:

Switch(config)# policy-map policy1
Switch(config-pmap)# class cisco
Switch(config-pmap-c)# bandwidth 3000
Switch(config-pmap)# class class-default
Switch(config-pmap-c)# bandwidth 2000

Данный policy-map создает политику трафика называющуюся policy1
  • Политика применяется ко всему трафику классифицируемому заранее описанным классом трафика «cisco». Указывает, что трафику в данном примере следует выделить полосу пропускания 3000 kbps.
  • Весь трафик который не принадлежит данному классу «cisco» формирует часть класса class-default. Ему будет предоставлена полоса пропускания 2000 kbps.
Switch(config)# interface fastethernet 0/1
Switch(config-if)# service-policy output policy1


Команда service policy используется для присоединения политики трафика, указанную командой policy-map, на интерфейс.
— Может быть применен как для входящих так и для исходящих пакетов на указанном интерфейсе, поэтому в данной команде необходимо указывать направление трафика.
Пример:

Switch(config)#interface fastethernet 0/1
Switch(config-if)#service-policy output policy1
Switch(config-if)#exit


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

1. Добавляем политику трафика к интерфейсу.
Switch(config)#interface fastethernet 0/1
Switch(config-if)#service-policy output policy1
2. Идентифицируем функцию QoS данной политики, используя классы.
Switch(config)#policy-map policy1
Switch(config-pmap)#class cisco
Switch(config-pmap-c)#bandwidth 3000
Switch(config-pmap)#class class-default
Switch(config-pmap-c)#bandwidth 2000

3. Классификация потока трафика, как принадлежащего к указанному классу QoS.
Switch(config)# class-map match-any cisco
Switch(config-cmap)# match access-group name test
Switch(config-cmap)# match interface fastethernet 0/1


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