Logo

EcoRouter

EcoNAT

EcoQOE

EcoBypass

English

  • Release Notes
  • QoS EcoRouter Documentation / QoS

    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 трафика, который будет передан гарантированно. Задается одним из следующих способов:

    • в процентах (от 0 до 100);
    • в абсолютных величинах (в Kbps). Для задания значения в абсолютных величинах, после значения параметра должен быть постфикс kbps, например: 500000 kbps;
    • оставшаяся нераспределенной полоса - remainder.

    Суммарное значение CIR в очередях одного планировщика не может превышать 100%

    PIRТрафик, превышающий PIR  (Peak Information Rate), будет безусловно отброшен. Задается одним из следующих способов:
    • в процентах (от 0 до 100);
    • в абсолютных величинах (в Kbps). Для задания значения в абсолютных величинах, после значения параметра должен быть постфикс kbps, например: 500000 kbps;
    • оставшаяся нераспределенной полоса - remainder
    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.