QoS EcoRouter Documentation / QoS
- Архитектура QoS
- Классификация трафика
- RED
- Планировщик/Scheduler
- Счетчики
- Ограничение скорости
- Маркировка трафика
- Перемаркировка трафика
- Сервисные политики
- Профиль трафика
- Карты классов
- Ограничение входящего трафика по классам
QoS (англ. quality of service – качество обслуживания) – этим термином называют вероятность того, что сеть связи соответствует заданному соглашению о трафике. Также QoS обозначает возможность гарантировать доставку пакетов, контроль пропускной способности, назначение приоритетов для разных классов сетевого трафика.
Архитектура QoS
В EcoRouter схема реализации QoS разделена логически на несколько взаимодействующих блоков:
- Классификатор/Classifier
- RED
- Планировщик/Scheduler
Трафик, приходящий на интерфейс, поступает в Классификатор, где ему присваиваются метки, в соответствии с установленными классами. Далее при помощи механизма RED происходит выравнивание трафика по предустановленным параметрам и данным, приходящим с Планировщика, и отбрасывается часть пакетов. После чего, пакеты ставятся в очереди Планировщика и пропускаются на выход по заданным правилам. Правила Планировщика начинают выполняться только в том случае, если объем трафик превышает заданное значение полисера.
Данная схема реализуется для каждого сервисного интерфейса.
Ниже более подробно описан каждый из блоков.
Классификация трафика
Для настройки классификации в EcoRouterOS необходимо использовать специальные карты классов, создать соответствующий профиль трафика и привязать его к экземпляру сервиса (service-instance). В таком случае входящие в service-instance пакеты могут быть классифицированы, т.е. обработаны и рассмотрены другим QoS-функционалом.
Карты классов создаются в конфигурационном режиме при помощи команды class-map <NAME>, где NAME может быть любой строкой, рекомендуемый формат имени – все буквы заглавные.
Пример:
ecorouter(config)# class-map VIDEO
ecorouter(config)# class-map IPVOICE
ecorouter(config)# class-map MYCLASS
При создании карты класса пользователь оказывается в режиме ее конфигурирования.
Пример:
ecorouter(config)# class-map VOICE
ecorouter(config-cmap)#?
Traffic classifier configuration commands:
exit Exit from the current mode to the previous mode
help Description of the interactive help system
match Classification criteria
no Negate a command or set its defaults
set Set marking values
show Show running system information
В режиме конфигурации карты классов пользователю доступна команда match, которая позволит выделять определенные пакеты из общего потока трафика путем указания значения поля или его наименования в заголовках Ethernet, MPLS или IP. По значениям этих полей будет осуществляться классификация трафика. Введение нескольких правил match будет соответствовать логической операции «ИЛИ».
Пример:
ecorouter(config-cmap)#match ?
cos IEEE 802.1Q class of service priority values
dscp Match DSCP in IP packets
exp Match MPLS experimental
ecorouter(config-cmap)#match cos ?
<0-7> Enter class-of-service values
ecorouter(config-cmap)#match dscp ?
<0-63> Enter DSCP values
ecorouter(config-cmap)#match exp ?
<0-7> Enter MPLS exp values
Как видно из примера, классификация в EcoRouterOS может осуществляется по полям cos, dscp и exp. Значения могут задаваться только в десятичном виде. Можно задавать набор значений, используя в качестве разделителя запятую «,» или диапазон, используя в качестве разделителя дефис «-».
Для создания профилей трафика используется команда traffic-profile <NAME>, где <NAME> может быть любым наименованием, рекомендуемый формат имени – цифры или все буквы заглавные.
При создании профиля трафика пользователь оказывается в режиме его конфигурирования.
Пример:
ecorouter(config)# traffic-profile 1
ecorouter(config-traffic-profile)# ?
Traffic profile configuration commands:
class Select a class to configure
exit Exit from the current mode to the previous mode
help Description of the interactive help system
no Negate a command or set its defaults
show Show running system information
Для привязки классов трафика к профилю используется команда class с указанием имени ранее сконфигурированной карты классов.
Пример:
ecorouter(config)#traffic-profile 1
ecorouter(config-profile)#class VIDEO
ecorouter(config-profile)#class IPVOICE
Для включения классификации, возможности обрабатывать пакеты отдельно друг от друга и применять различные политики в зависимости от типа поступающего трафика пользователь должен применить профиль трафика к заранее созданной политике. Сделать это можно с помощью команды в конфигурационном режиме service-policy <NAME>, где <NAME> может быть любым наименованием, рекомендуемый формат имени – цифры или заглавные буквы.
Пример:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#traffic-profile 1
Далее необходимо применить политику на экземпляре сервиса (service-instance) во входящем направлении. Классификация трафика в исходящем направлении невозможна.
Пример:
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO in
Пример включения классификации голосового и видео-трафика во входящем направлении по отношении к порту ge1:
ecorouter(config)#class-map VIDEO
ecorouter(config-cmap)#match dscp 1
ecorouter(config-cmap)#exit
ecorouter(config)# class-map IPVOICE
ecorouter(config-cmap)#match dscp 2
ecorouter(config-cmap)#exit
ecorouter(config)#traffic-profile TEST
ecorouter(config-traffic-profile)#class VIDEO
ecorouter(config-traffic-profile)#class IPVOICE
ecorouter(config-cmap)#exit
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO in
Для проверки сконфигурированных параметров можно воспользоваться командами:
ecorouter#sh class-map
Class map default
Class map IP0
Match dscp: 2
Class map IP1
Match dscp: 4
Class map IP2
Match dscp: 8
Class map IP3
Match dscp: 12
show traffic-profile
Traffic profile prof-dscp
Class IP0
Class IP1
Class IP2
Class IP3
RED
Механизм RED действует как часть планировщика, предваряя его работу и основываясь на поступающих с него данных о загруженности очередей.
В общем виде, планировщик представляет собой механизм, распределяющий полосу пропускания в момент, когда передаваемого трафика больше, чем выделенной полосы пропускания. Такая ситуация называется Congestion. Она чревата тем, что в этот момент массово и одновременно происходит потеря во всех потоках трафика, за исключением малых потоков, чья скорость не превышает гарантированную. Массовая одновременная потеря пакетов приводит к тому, что TCP-сущности одновременно запускают механизм ре-инициализации TCP окна, и скорость всех потоков одновременно падает, после чего, одновременно растет. В итоге, график загрузки интерфейса выглядит пилообразно, и реальная загрузка интерфейса никогда не принимает устоявшегося значения, т.е. интерфейс не используется полностью в одни моменты времени, и испытывает перегрузки в другие. Для того, чтобы избежать подобного поведения, применяется механизм RED.
Работа механизма RED заключается в случайном отбрасывании пакетов ранее, чем они поступят в очередь. Это позволяет добиться того, что TCP-сессии меняют размер окна попеременно. Вероятность отбрасывания пакетов в этом случае является адаптивным значением. Пользователем устанавливаются значения загруженности интерфейса, при которой вероятность становится отличной от 0 и начинает расти. Помимо этого, устанавливается максимальная вероятность отброса пакета и значение загрузки интерфейса, при котором вероятность становится равной этому значению. При изменении загруженности интерфейса в рамках этих двух скоростей вероятность отбрасывания растет от 0 до указанного максимального значения, согласно принятой математической функции, учитывающей среднюю загруженность полосы пропускания, количество пакетов, пропущенных без отбрасывания.
Настройка RED
Для включения механизма RED необходимо ввести команду random-detect в режиме конфигурирования планировщика.
Параметры механизма RED задаются при конфигурировании очередей в планировщике.
Для каждой очереди задаются две границы: минимальная и максимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold).
Границы задаются соответственно параметрами red-min <NUM> и red-max <NUM>. Так как в EcoRouterOS длина очередей определяется динамически, то значения могут быть установлены в диапазоне от 0% до 100% от максимальной для очереди скорости (PIR). Значение red-min не должно быть больше значения red-max.
Если значения обоих параметров red-min и red-max равны 0, то механизм RED будет отключен.
До достижения минимальной границы вероятность того, что пакет будет отброшен, равна нулю. После этого вероятность начинает расти до максимально возможного уровня, который регулируется параметром red-inv-prob. Этот параметр устанавливает значение знаменателя в дроби, определяющей вероятность отбрасывания пакета (Probability = 1 / X).
Значения параметра могут быть установлены в диапазоне [1 - 255]. Значение по умолчанию 10.
При таком значении вероятность того, что пакет будет отброшен, равна 0,1 (Probability = 1 / 10 = 0,1), иными словами, будет отбрасываться каждый 10-ый пакет.
Настройка WRED
Механизм RED позволяет предотвращать переполнение очереди, относящейся к сервисному интерфейсу в целом.
Механизм WRED позволяет предотвращать переполнение любой сконфигурированной в планировщике очереди. Таким образом, позволяя настроить параметры WRED для каждой очереди в отдельности.
Для включения механизма WRED необходимо ввести команду weighted-random-detect в режиме конфигурирования планировщика.
Параметры механизма WRED задаются при конфигурировании очередей в планировщике.
Для каждой очереди задаются две границы: минимальная и максимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold).
Границы задаются соответственно параметрами wred-min <NUM> и wred-max <NUM>. Так как в EcoRouterOS длина очередей определяется динамически, то значения могут быть установлены в диапазоне от 0% до 100% от максимальной для очереди скорости (PIR). Значение wred-min не должно быть больше значения wred-max.
Если значения обоих параметров wred-min и wred-max равны 0, то механизм WRED будет отключен.
До достижения минимальной границы вероятность того, что пакет будет отброшен, равна нулю. После этого вероятность начинает расти до максимально возможного уровня, который регулируется параметром wred-inv-prob. Этот параметр устанавливает значение знаменателя в дроби, определяющей вероятность отбрасывания пакета (Probability = 1 / X).
Значения параметра могут быть установлены в диапазоне [1 - 255]. Значение по умолчанию 10.
При таком значении вероятность того, что пакет будет отброшен, равна 0,1 (Probability = 1 / 10 = 0,1), иными словами, будет отбрасываться каждый 10-ый пакет.
Планировщик/Scheduler
Планировщик управляет механизмом очередей. Под очередью (queue) в концепции EcoRouter понимается программно реализуемая очередь пакетов. Пакеты в такой очереди удерживаются средствами планировщика до тех пор, пока не освободится место в аппаратной очереди (порт не станет доступным) для дальнейшей отправки пакетов.
В EcoRouter есть 8 очередей: queue 0 - queue 7. Приоритет очереди, обозначаемый ее номером, определяет порядок, в котором они обрабатываются (см. рисунок ниже). То есть, после передачи гарантированного объема трафика (CIR) первой будет обрабатываться очередь 0 с наивысшим приоритетом. Далее будет обрабатываться очередь 1, 2 и так далее.
Размер каждой очереди динамически изменяется. Это необходимо для поддержания приемлемых значений полосы пропускания, задержки и дрожании фазы для не приоритетных очередей. Это придает гибкость при различных вариантах построения сети и типах передаваемого трафика. Сетевому администратору не придется задумываться о сохранении приемлемых значений параметров задержки и дрожании фазы, необходимо лишь задать полосу пропускания для конкретного типа трафика.
Очереди соотносятся с классами трафика, при этом возможны настройки, при которых часть трафика конкретного класса имеет больше гарантий по доставке. Это разделение происходит на основании количества трафика конкретного класса, переданного с начала итерации до определенного момента. Для этого вводятся понятия CIR и PIR.
CIR (Committed Information Rate) - это объем передаваемого за дельту времени трафика, который будет передан гарантированно. PIR (Peak Information Rate) - максимальное для очереди значение полосы пропускания. Трафик, превышающий PIR, будет безусловно отброшен. Если в других очередях есть трафик, он может вытеснить трафик, превышающий значение CIR, в соответствии с приоритетом.
Для каждой очереди можно задать параметры CIR и PIR в процентах или в абсолютном значении (Kbps). Также может быть задано значение remainder, отвечающий за выделение оставшейся незанятой части полосы пропускания.
Класс трафика очереди 7 по умолчанию - default. Это служебный класс, в который попадает любой трафик, не указанный остальных классах. Данный класс нельзя настроить, но можно назначить на любую очередь.
На схеме ниже представлен алгоритм обслуживания очередей планировщиком.
Как показано на рисунке, если в приоритетной очереди есть пакет, то планировщик сначала будет пытаться обеспечить указанный CIR для всех очередей и лишь затем распределять пакеты согласно приоритетам. После проверок обеспечения CIR и PIR для очереди пакет передается на сетевую карту и отправляется при наличии свободного места в аппаратной очереди. Если приоритетная очередь больше не содержит пакетов на передачу, то планировщик переходит к обработке пакетов из другой очереди. Затем процесс повторяется вновь через приоритетную очередь.
Настройка планировщика и очередей
Для создания планировщика в конфигурационном режиме используется команда: traffic-scheduler pqwrr.<NUM>.
Название планировщика обязательно должно начинаться с префикса "pqwrr.".
Далее в созданном планировщике задаются очереди.
Синтаксис команды: queue <0-31> class <NAME> cir <CIR> pir <PIR> (wred-min <0-100> wred-max <0-100>) (wred-inv-prob <1-255>) (cos <0-7>) (dscp <0-64>), параметры команды описаны в таблице ниже.
Параметр | Описание |
---|---|
0-31 | Номер очереди |
NAME | Имя созданного класса трафика или default (это служебный класс, в который попадает любой трафик, не указанный остальных классах) |
CIR | Объем передаваемого за dt трафика, который будет передан гарантированно. Задается одним из следующих способов:
Суммарное значение CIR в очередях одного планировщика не может превышать 100% |
PIR | Трафик, превышающий PIR (Peak Information Rate), будет безусловно отброшен. Задается одним из следующих способов:
|
wred-min | Минимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold). Устанавливается в диапазоне от 0 до 100%. Значение wred-min не должно быть больше значения wred-max. Значение по умолчанию - 0 |
wred-max | Максимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold). Устанавливается в диапазоне от 0 до 100%. Значение по умолчанию - 0 |
wred-inv-prob | Максимальная вероятность того, что пакет будет отброшен. Задается значение знаменателя дроби Probability = 1 / X. Значения устанавливаются в диапазоне (0 - 255). Значение по умолчанию - 10 |
cos | Перемаркировка поля CoS пакетов при обработке очередей. Допустимые значения от 0 до 7 |
dscp | Перемаркировка поля DSCP пакетов при обработке очередей. Допустимые значения от 0 до 64 |
Параметры wred-min, wred-max и wred-inv-prob устанавливают настройки механизма WRED.
В рамках одного планировщика каждый traffic-class может назначаться только одной очереди.
Трафик, который не попал под правила классификатора, попадает в дефолтную очередь - с наименьшим приоритетом. То есть обслуживается только в случае, если остальные очереди полностью реализовали весь трафик в рамках их ограничений.
Пример настройки очередей планировщиков:
ecorouter(config)#traffic-scheduler pqwrr.0
ecorouter(config-traffic-scheduler)# queue 2 class IPVOICE cir 60 pir 100 wred-min 45 wred-max 80 wred-inv-prob 100 cos 7 dscp 32
ecorouter(config-traffic-scheduler)# queue 5 class VIDEO cir 80 pir 100 wred-min 40 wred-max 83 wred-inv-prob 250 dscp 40
% Available CIR is 40 percent
ecorouter(config-traffic-scheduler)# queue 5 class VIDEO cir 40 pir 100 wred-min 40 wred-max 83 wred-inv-prob 250 dscp 40
ecorouter(config-traffic-scheduler)# exit
ecorouter(config)#traffic-scheduler pqwrr.1
ecorouter(config-traffic-scheduler)# queue 4 class IPVOICE cir 20000 kbps pir 50000 kbps wred-min 50 wred-max 100
ecorouter(config-traffic-scheduler)# queue 10 class VIDEO cir 100000 kbps pir 500000 kbps wred-min 5 wred-max 20 wred-inv-prob 200
ecorouter(config-traffic-scheduler)# exit
Счетчики
Для просмотра счетчиков QoS используется команда административного режима show counters port <NAME> queues.
Внимание: в EcoRouterOS в командах группы show при подсчете количества данных не учитываются следующие поля Ethernet-фрейма: Preamble, Frame delimiter, FCS, Interpacket gap (24 байта).
Показания счетчиков группируются по портам и выводятся в виде таблицы, в которой указывается класс трафика, количество пропущенных пакетов/байт и количество отброшенных пакетов/байт в связи с переполнением очереди при использовании алгоритма RED.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show counters port te1 queues | Вывести значения счетчиков QoS для порта te1 |
Вывод команды |
Для просмотра счетчиков QoS при использовании алгоритма WRED используется команда административного режима show counters port <NAME> wred.
Показывается класс трафика, сконфигурированные параметры, глубину очереди в % от PIR и количество отброшенных пакетов/байт при использовании алгоритма WRED.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show counters port te0 wred | Вывести значения счетчиков QoS с учетом WRED для порта te0 |
Вывод команды |
Для просмотра счетчиков QoS по количеству ограниченного трафика используется команда административного режима show counters port <NAME> policer {in | out}.
Показания счетчиков группируются по портам, выводятся данные по пройденным и отброшенным пакетам/байтам.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show counters port te1 policer in | Вывести значения счетчиков ограниченного трафика для порта te1, входящий трафик |
Port te1 Service instance te1.te1/eth2_2 traffic limiter policer.0 MATCHED DROPPED packets/bytes packets/bytes 30129/45596138 3184/4818608 Service instance te1.te1/eth3_3 traffic limiter policer.0 MATCHED DROPPED packets/bytes packets/bytes 30722/46494788 3142/4756164 | Вывод команды |
Для сброса счетчиков можно воспользоваться командами clear.
ecorouter#clear counters port te1 ?
policer policer statistics
queues QoS queues statistics
red-algorithms QoS RED/WRED algorithms statistics
Ограничение скорости
Для ограничения скорости/пропускной способности интерфейсов в EcoRouter используются ограничители (полисеры). При помощи полисеров сервисным интерфейсам может быть задано ограничение пропускной способности для того, чтобы сбалансировать распределение нагрузки между несколькими сервисными интерфейсами.
Для создания полисера необходимо создать сервисную политику и указать в ней максимально допустимое значение полосы пропускания. Для создания политики используется команда service-policy <NAME>, где <NAME> может быть любым наименованием, рекомендуемый формат имени – заглавные буквы или цифры. Полоса пропускания задается командой bandwidth {gbps | mbps | kbps | percent} <VALUE>, где <VALUE> — значение максимальной скорости в бит/c или в процентах от общей пропускной способности порта. Здесь необходимо указать верхнюю границу выделяемой полосы пропускания. Минимальное значение скорости в килобитах в секунду, которое можно установить, равно 64. Диапазон допустимых значений при указании ограничения в килобитах в секунду - от 64 до 100000000. Создав подобную политику, ее можно применить на нужный экземпляр сервиса (service-instance) в нужном направлении (см. соответствующий раздел руководства).
Пример включения ограничения исходящего трафика:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#bandwidth mbps 10
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO out
Результат работы ограничителя трафика в EcoRouterOS при приеме данных со скоростью, превышающей установленный лимит, отображает следующий график.
Такая обработка трафика производится для предотвращения глобальной TCP-синхронизации при совместной работе ограничителя и алгоритмов раннего обнаружения заполнения очередей в планировщике. Таким образом, пользователям может показаться, что количество трафика превышает установленные лимиты в ограничителе. Для накопления достаточного объема данных и усреднения необходимо довольно продолжительное время (при подаче трафика на одной и той же скорости ≈ 300 сек). Для определения реального объема пропускаемого трафика удобнее воспользоваться командой show counters port queues-speed.
Маркировка трафика
Маркировка трафика настраивается в EcoRouterOS при помощи сущности filter-map (см. раздел "Списки доступа"). Таким образом, к трафику определенного вида применяются различные действия, в том числе, маркировка. Под маркировкой здесь понимается то, что трафику, попадающему под действие правила, присваивается определенный класс (class-map).
Ниже приведен пример маркировки трафика с созданием двух карт классов с именами L2 и L3, соответствующими уровням фильтрации, которые устанавливают значения поля dscp 30 и 40.
ecorouter(config)#class-map L2
ecorouter(config-cmap)#set dscp 30
ecorouter(config)#class-map L3
ecorouter(config-cmap)#set dscp 40
Создание карты фильтрации для L3.
ecorouter(filter-map-ipv4)#filter-map ipv4 L3 10
Добавление правил.
ecorouter(filter-map-ipv4)#match icmp host 10.10.10.10 host 192.168.1.10
ecorouter(filter-map-ipv4)#set class-map L3
Создаем еще один блок фильтрации для L3.
ecorouter(filter-map-ipv4)#filter-map ipv4 L3 20
ecorouter(filter-map-ipv4)#match icmp host 10.10.10.10 host 192.168.1.11
ecorouter(filter-map-ipv4)#set accept
Создание карты фильтрации для L2. Здесь aaa.bbb.ccc - MAC-адрес хоста 192.168.1.10.
ecorouter(filter-map-ethernet)#filter-map ethernet L2 10
ecorouter(filter-map-ethernet)#match any host aaa.bbb.ccc
Назначение действия для L2.
ecorouter(filter-map-ethernet)#set class-map L2
ecorouter(filter-map-ethernet)#filter-map ethernet L2 20
ecorouter(filter-map-ethernet)#match any any
ecorouter(filter-map-ethernet)#set accept
Назначение filter-map L3 на вход интерфейса.
ecorouter(config)#int test
ecorouter(config-if)#set filter-map in L3
Назначение filter-map L2 на вход service-instance порта.
ecorouter(config)#port te1
ecorouter(config-port)#srevice-instance test
ecorouter(config-service-instance)#set filter-map in L2
При поступлении трафика на сервисный интерфейс есть возможность изменить значение его поля DSCP или сбросить в 0. Для этого используется команда контекстного режима конфигурирования сервисного интерфейса qos reset dscp (<0-63>|). Отменить сброс значения поля DSCP можно при помощи команды контекстного режима конфигурирования сервисного интерфейса no qos reset dscp (<0-63>|). Если новое значение поля не указано, то по умолчанию оно сбрасывается в 0.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 100
ecorouter(config-service-instance)#qos reset dscp 63
Перемаркировка трафика
EcoRouterOS позволяет перемаркировать поля DSCP, CoS, MPLS EXP. В режиме конфигурации карты классов пользователю доступна команда set, с помощью которой производится перемаркировка полей в заранее выделенных из общего потока трафика пакетах (правило match) путем указания новых значений для полей DSCP, CoS, MPLS EXP в заголовках IP, 802.1Q, MPLS .
Пример:
class-map test
match dscp 8
set dscp 18
EcoRouterOS позволяет классифицировать трафик по одним полям а маркировать по другим.
Пример:
class-map test
match dscp 8
set cos 1
EcoRouterOS позволяет перемаркировать несколько полей одновременно. Для перемаркировки нескольких полей необходимо, чтобы сценарий передачи фреймов предусматривал обработку соответствующих заголовков.
Пример:
class-map test
match dscp 8
set cos 1
set exp 2
Для применения функционала перемаркировки требуется создать профиль трафика, привязать к нему созданные классы трафика, создать политику и привязать ее к экземпляру сервиса (service-instance) в исходящем направлении. Более подробную информацию об этих шагах можно прочитать в разделах посвященных классификации трафика и созданию сервисных политик. Ниже приведен только пример конфигурирования функционала перемаркировки исходящего трафика в EcoRouterOS. Перемаркировка в входящем направлении невозможна.
Пример включения перемаркировки трафика, исходящего из порта ge1:
ecorouter(config)#class-map VIDEO
ecorouter(config-cmap)#match dscp 1
ecorouter(config-cmap)#set dscp 11
ecorouter(config-cmap)#exit
ecorouter(config)#class-map IPVOICE
ecorouter(config-cmap)#match dscp 2
ecorouter(config-cmap)#set dscp 12
ecorouter(config-cmap)#exit
ecorouter(config)#traffic-profile TEST
ecorouter(config-traffic-profile)#class VIDEO
ecorouter(config-traffic-profile)#class IPVOICE
ecorouter(config-cmap)#exit
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO out
Сервисные политики
В EcoRouterOS для применения следующего функционала:
- классификации данных (classifier);
- ограничения трафика (limiter);
- управления очередями и алгоритмами раннего обнаружения их заполнения (scheduler)
необходимо настраивать сервисные политики и применять их на экземплярах сервиса (service-instance) в нужном направлении.
Для создания политики используется команда service-policy <NAME>, где <NAME> может быть любым наименованием, рекомендуемый формат имени – заглавные буквы или цифры.
После ввода команды следует переход в контекстный режим конфигурирования политики, здесь доступны следующие команды:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#?
Service policy configuration commands:
bandwidth Bandwidth
exit Exit from the current mode to the previous mode
help Description of the interactive help system
no Negate a command or set its defaults
scheduler Select a traffic-scheduler to configure
show Show running system information
traffic-profile Select a traffic-profile to use
Для настройки ограничения трафика следует настроить параметр bandwidth. Администратор имеет возможность выбрать способ задания максимальной полосы пропускания. Значения можно указывать в Кбит/c, Мбит/c, Гбит/c или в процентах от максимальной скорости работы порта.
ecorouter(config-policy)#bandwidth ?
gbps Bandwidth value in gbps
kbps Bandwidth value in kbps
mbps Bandwidth value in mbps
percent Bandwidth value as a percentage
Для применения политики на экземпляре сервиса ее требуется указать в нужном service-instance и выбрать соответствующее направление. Команда выглядит следующим образом: ecorouter(config-service-instance)#service-policy <NAME> {in | out}, где <NAME> — имя заранее сконфигурированной политики, а ключевые слова in и out указывают, к трафику какого направления следует применять политику.
От заданного направления зависит в целом работа функционала QoS и ограничителя трафика. Так во входящем направлении работают классификация данных, общее ограничение трафика и ограничение трафика по классам. При настройке политики в исходящем направлении работают общее ограничение трафика, перемаркировка трафика, планировщик очередей, алгоритмы раннего обнаружения заполнения очередей.
Для настройки классификации следует привязать созданный ранее профиль трафика к сервисной политике (service-policy) и применить во входящем направлении. Для работы с планировщиком следует привязать созданный ранее профиль планировщика к сервисной политике (service-policy) и применить в исходящем направлении в нужном экземпляре сервиса (service-instance).
Примеры:
Конфигурация ограничения трафика во входящем направлении:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#bandwidth mbps 10
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO in
Конфигурация ограничения трафика в исходящем направлении:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#bandwidth mbps 10
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO out
Конфигурация классификации трафика во входящем направлении:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO in
Конфигурация ограничения трафика по классам во входящем направлении:
ecorouter(config)#service-policy ECO
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config-policy)#bandwidth mbps 10
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test
ecorouter(config-service-instance)#service-policy ECO in
Конфигурация включения функций планировщика очередей:
ecorouter(config)#service-policy ECO_rx
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config)#service-policy ECO_tx
ecorouter(config-policy)#traffic-profile TEST
ecorouter(config-policy)#bandwidth gbps 1
ecorouter(config-policy)#scheduler FAST
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance test1
ecorouter(config-service-instance)#service-policy ECO_rx in
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance test2
ecorouter(config-service-instance)#service-policy ECO_tx out
Более подробно конфигурирование вышеуказанного функционала изложено в соответствующих разделах документации.
Для проверки сконфигурированных данных в политике следует воспользоваться командой show service-policy.
Профиль трафика
В EcoRouterOS пользователю доступно составление профилей входящего в маршрутизатор трафика. Посредством созданных профилей и заранее сконфигурированных карт классов (class-map) пользователь может применять к этим профилям различные QoS-политики и функционал ограничения трафика. Профиль создается при помощи команды traffic-profile <NAME>, где <NAME> может быть любым, рекомендуемый формат имени – заглавные буквы или цифры.
После создании профиля трафика пользователь производится переход в режим его конфигурирования.
Пример:
ecorouter(config)# traffic-profile 1
ecorouter(config-traffic-profile)# ?
Traffic profile configuration commands:
class Select a class to configure
exit Exit from the current mode to the previous mode
help Description of the interactive help system
no Negate a command or set its defaults
show Show running system information
Для привязки классов трафика к профилю используется команда class c указанием имени ранее сконфигурированной карты классов.
ecorouter(config)#traffic-profile 1
ecorouter(config-profile)#class VIDEO
ecorouter(config-profile)#class IPVOICE
В профиле трафика нельзя добавить классы c пересекающимися значениями полей DSCP, CoS, MPLS EXP. В профиле трафика существует еще одно правило. Легче всего пояснить его на конкретном примере. Допустим, на маршрутизатор приходит пакет с тегированным полем MPLS EXP = 1 и DSCP = 3.
При этом профиль трафика и карты классов сконфигурированы следующим образом:
ecorouter(config)#class-map A
ecorouter(config-cmap)#match dscp 3
ecorouter(config-cmap)#exit
ecorouter(config)#class-map B
ecorouter(config-cmap)#match cos 1
ecorouter(config-cmap)#exit
ecorouter(config)#traffic-profile C
ecorouter(config-profile)#class A
ecorouter(config-profile)#class B
В таком случае при поступлении пакета с MPLS EXP = 1 и DSCP = 3 пакет будет принадлежать классу B, так как заголовок DOT1Q идет перед заголовком IP. Исходя из этого EcoRouterOS сначала проверит поле CoS, затем MPLS и лишь в конце поле DSCP.
Профили трафика применяются абсолютно для всего функционала QoS и требуют применения на конкретной сервисной политике (service-policy). Подробнее данный функционал описан в соответствующем разделе руководства.
Карты классов
За создание классов трафика и привязку к ним конкретных значений полей DSCP, CoS, MPLS EXP в EcoRouterOS отвечают карты классов (class-map). Подобные карты являются неотъемлемой частью всех функций QoS в маршрутизаторе EcoRouter, поскольку именно они позволяют работать по отдельности с различными типами входящего в маршрутизатор трафика.
Карты настраиваются в конфигурационном режиме. Для создания новой карты требуется ввести команду class-map <NAME>, где <NAME> может быть любым, рекомендуемый формат имени – все буквы заглавные. После ввода команды происходит переход в контекстный режим конфигурирования карты классов.
ecorouter(config)# class-map VOICE
ecorouter(config-cmap)#?
Traffic classifier configuration commands:
exit Exit from the current mode to the previous mode
help Description of the interactive help system
match Classification criteria
no Negate a command or set its defaults
set Set marking values
show Show running system information
Для указания соответствия определенного значения полей DSCP, CoS, MPLS EXP и самой карты, следует воспользоваться командой match.
ecorouter(config-cmap)#match ?
cos IEEE 802.1Q class of service priority values
dscp Match DSCP in IP packets
exp Match MPLS experimental
ecorouter(config-cmap)#match cos ?
<0-7> Enter class-of-service values
ecorouter(config-cmap)#match dscp ?
<0-63> Enter DSCP values
ecorouter(config-cmap)#match exp ?
<0-7> Enter MPLS exp values
Пользователю доступно введение в класс несколько команд match и определение класса по нескольким полям разного типа. Таким образом, в карте начинает работать логическое правило «ИЛИ». При первом совпадении входящего трафика со значением любого поля, сконфигурированного в классе, трафик будет соответствовать этому классу.
Для установки нового значения в поля DSCP и CoS при выходе трафика из EcoRouter следует воспользоваться командой set.
ecorouter(config-cmap)#set ?
cos IEEE 802.1Q class of service priority values
dscp Match DSCP in IP packets
ecorouter(config-cmap)#set cos ?
<0-7> Enter class-of-service values
ecorouter(config-cmap)#set dscp ?
<0-63> Enter DSCP values
В командах match и set значения могут задаваться только в десятичном виде. Можно задавать набор значений, используя в качестве разделителя запятую «,», или диапазон, используя в качестве разделителя дефис «-».
Карты классов позволяют классифицировать трафик, ограничивать его по классам, распределять трафик в разные очереди и применять к ним разные политики обслуживания.
Ограничение входящего трафика по классам
В EcoRouterOS помимо возможности ограничения трафика на экземплярах сервиса (service-instance) в различных направлениях существует возможность ограничивать входящий трафик по классам. Приходящие на маршрутизатор данные необходимо классифицировать, а затем в созданном профиле трафика указать максимально допустимые скорости (PIR) для каждого класса. Скорости можно задавать в бит/c и в процентах от максимально допустимого значения полосы пропускания в ограничителе трафика.
Команда для задания ограничения скорости в профиле трафика:
class <NAME> {kbps | mbps | gbps | percent} <VALUE>, где <NAME> может быть любым наименованием, рекомендуемый формат имени – все заглавные буквы или цифры.
Пример:
traffic-profile test
class test10 kbps 500
class test7 mbps 5
class test8 mbps 2
class test9 mbps 2
traffic-profile test2
class A percent 50
class B percent 20
class C percent 20
class D percent 10
Внимание: в профиле трафика необходимо придерживаться одного стиля задания скорости, то есть если для первого сконфигурированного класса скорость была указана в процентах, то и последующие ограничения скоростей для классов должны быть указаны в процентах.
Далее необходимо привязать сконфигурированный профиль трафика к сервисной политике (service-policy) и указать максимально допустимую общую для всех классов полосу пропускания трафика.
service-policy CLIENT_A
traffic-profile test
bandwidth max mbps 100
Далее для включения ограничения входящего трафика необходимо в контекстном режиме конфигурирования экземпляра сервиса (service-instance) указать сконфигурированную политику и задать ее во входящем направлении.
port te0
service-instance A
service-policy CLIENT_A in
Просмотр данных об ограниченном трафике производится при помощи команды show counters port <NAME> policer in.
При необходимости можно данные статистики можно сбросить при помощи команды clear counters port <NAME> policer in.