QoS в Cisco

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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


Содержание

[править] Modular QoS CLI

Использование команды match в class map:

  • До 4 (CoS и IPP) или 8 (DSCP) значений могут быть указаны в одной команде match cos, match precedence или match dscp. Если любое из указанных значений будет обнаружено в пакете, он совпадет с соответствующей class-map.
  • Если в class map используется несколько команд match, то параметр match-any или match-all(используется по умолчанию) команды class-map, определяет используется между этими командами логическое ИЛИ или И.
  • Внутри class map можно ссылаться на другую class map, используя команду match class
  • Команда match protocol предполагает использование Network Based Application Recognition (NBAR).

[править] Утилиты для классификации и маркировки

[править] Class-Based Marking (CB Marking)

Особенности логики и настройки CB Marking:

  • Для CB Marking нужно включать CEF, иначе соответствующую service-policy нельзя будет применить на интерфейсе.
  • CB Marking включается для пакетов входящих или выходящих из интерфейса.
  • Могут быть настроены несколько команд set для маркировки трафика в нескольких полях.
  • Пакеты, которые не совпали с явно настроенными class, совпадают со специальным class, который называется class-default.
  • Если для class не задана команда set, то трафик, который совпадает с ним, не маркируется.

[править] Настройка CB Marking

Маркировка трафика, который совпадает с параметрами class-map определенным значением поля IP Precedence:

router(config-pmap-c)# set [ip] precedence <ip-precedence-value>

Для этой и следующей команды, если указан параметр ip, то значение поля устанавливается только для пакетов IPv4. Если параметр опущен, то значения IPP и DSCP устанавливаются для пакетов IPv4 и IPv6.

Маркировка трафика определенным значением поля DSCP:

router(config-pmap-c)# set [ip] dscp <ip-dscp-value>

Маркировка трафика определенным значением поля CoS:

router(config-pmap-c)# set cos <cos-value>

Указание идентификатора группы для QoS group:

router(config-pmap-c)# set qos-group <group-id>

Установка в ячейке ATM бита CLP:

router(config-pmap-c)# set atm-clp 

Установка в кадре Frame Relay бита DE:

router(config-pmap-c)# set fr-de

[править] QoS Pre-Classification

Устройство, на котором выполняется маркировка трафика, может терминировать VPN-туннель. В этом случае в туннельные заголовки (IPsec или GRE) копируется значение поля ToS. Но такие функции как NBAR не могут работать с трафиком, который инкапсулирован в туннельный заголовок.

В IOS существует функция, которая помогает решить этот вопрос — QoS Pre-Classification.

QoS pre-classification "помнит" исходный, не зашифрованный трафик, до тех пор пока не будут выполнены действия QoS в исходящем направлении.

Эта функция может быть включена командой qos pre-classify в таких режимах:

  • interface tunnel (для GRE и IPIP)
  • interface virtual-template (для L2F и L2TP)
  • crypto map (для IPsec)

[править] Просмотр информации

Для того чтобы регулировать частоту с которой проверяется статистика на интерфейсах (packet rate, bit rate) используется команда load-interval. Интервал указывается в секундах, по умолчанию 5 минут:

dyn5(config-if)# load-interval <30-600>

[править] Управление перегрузками и избежание перегрузок

Управление перегрузками (congestion management) или queuing — каким образом маршрутизатор или коммутатор управляет пакетами или кадрами, пока они ожидают своей очереди для выхода из устройства.

Для маршрутизаторов характерно output queuing, а для коммутаторов input и output queuing.

Избежание перегрузок (congestion avoidance) — логика, которую использует устройство, когда решает отбрасывать ли пакет и когда его отбрасывать, если система очередей становится более загруженной.

[править] Программные и аппаратные очереди

  • Программная очередь (software queue) -- очереди, которые реализованы в программном обеспечении и которыми можно управлять с помощью различных утилит.
  • Аппаратная очередь (hardware queue) -- после того как пакет покидает программную очередь, он попадает в небольшую аппаратную FIFO очередь. В Cisco эта очередь ещё называется transmit queue (TX queue) или transmit ring (TX ring).

Свойства аппаратных очередей:

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

Посмотреть текущий размер аппаратной очереди (для этого маршрутизатора по умолчанию размер очереди 256):

dyn5# sh controllers fa0/0
.......
 tx_limited=0(256)
.......

Изменение размера очереди:

dyn5(config)# int fa0/0
dyn5(config-if)# tx-ring-limit 3

После изменения размер аппаратной очереди:

dyn5# sh controllers fa0/0
.......
 tx_limited=0(3)
.......

[править] Утилиты управления очередями

Старые утилиты:

  • Priority queuing (PQ)
  • Custom queuing (CQ)

Новые утилиты:

  • Class-based weighted fair queuing (CBWFQ)
  • Low-latency queuing (LLQ)

Классы определенные в policy-map соответствуют очередям. Поэтому термины очередь (queue) и класс (class) взаимозаменяемы в контексте обсуждения LLQ и CBWFQ.

LLQ и CBWFQ поддерживают 64 очереди. Кроме того, существует одна специальная очередь по умолчанию class-default queue. В эту очередь попадают пакеты, которые НЕ совпали с критериями явно настроенных классов.

[править] CBWFQ

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

  • Классификация — выполняется на основании любых критериев, которые доступны в MQC с помощью команды match,
  • Политика отбрасывания пакетов — tail drop или WRED, настраивается для каждой очереди,
  • Количество очередей — 64,
  • Максимальная длина очереди — зависит от модели маршрутизатора,
  • Обслуживание в пределах одной очереди — FIFO в 63 очередях, FIFO или WFQ в class-default queue,
  • Обслуживание между очередями — на основании выделенной пропускной способности для каждой очереди.
[править] Проверка количества выделенной пропускной способности

Когда policy-map применяется к интерфейсу (команда service-policy output), IOS выполняет проверку не выделяет ли эта policy map слишком много пропускной способности для конкретного интерфейса. Если policy map не проходит проверку, то она не применяется к интерфейсу.

Проверка выполняется на основании двух команд указанных в режиме настройки интерфейса:

  • bandwidth
  • max-reserved-bandwidth

IOS позволяет policy map выделять пропускную способность величиной (сумма всех значений bandwidth) не более чем произведение значений bandwidth и max-reserved-bandwidth (по умолчанию 75 процентов).

Пример задания величин на интерфейсе (bandwidth задается в килобитах, а max-reserved-bandwidth а процентах):

dyn5(config)# int fa0/0
dyn5(config-if)# bandwidth 10000
dyn5(config-if)# max-reserved-bandwidth 70

После задания таких параметров, если на интерфейс fa0/0 применяется policy-map, то пропускная способность, которая выделена в ней не должна быть более чем 7000.

Пример policy-map:

dyn5(config)# policy-map test-bw
dyn5(config-pmap)# class class1      
dyn5(config-pmap-c)# bandwidth 4000
dyn5(config-pmap)# class class2      
dyn5(config-pmap-c)# bandwidth 5000

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

dyn5(config-if)# service-policy output test-bw
I/f FastEthernet0/0 class class2 requested bandwidth 5000 (kbps), available only 3000 (kbps)

Policy-map не была применена так как максимальное значение пропускной способности которое может быть для неё выделено 7000. Первый класс забрал 4000, а оставшихся 3000 не хватает для второго класса. Поэтому и появляется ошибка, что доступно только 3000, а класс запросил 5000.

Существует другой вариант выделения пропускной способности для policy-map. При выделении пропускной способности для класса используются команды:

  • bandwidth percent — процент пропускной способности выделенной для класса, процент считается от всей пропускной способности интерфейса. Сумма пропускной способности выделенной для классов в policy-map не должна превышать max-reserved-bandwidth настроенной на соответствующем интерфейсе.
  • bandwidth remaining percent — процент пропускной способности выделенной для класса, процент считается от значения произведения bandwidth и max-reserved-bandwidth интерфейса. Сумма пропускной способности выделенной для классов в policy-map соответственно может быть 100 процентов.

Пример policy-map:

dyn5(config)# policy-map test-bw
dyn5(config-pmap)# class class1
dyn5(config-pmap-c)# bandwidth percent 20

Icon-caution.gif

В одной policy-map может использоваться только один из трёх вариантов выделения пропускной способности для класса (bandwidth, bandwidth percent или bandwidth remaining percent).

[править] Размер очереди для CBWFQ

Пример задания размера очереди для класса (диапазон от 1 до 4096 пакетов):

dyn5(config)# policy-map test-bw           
dyn5(config-pmap)# class class1
dyn5(config-pmap-c)# queue-limit 500
[править] Включение WFQ для класса по умолчанию

Для класса по умолчанию можно включить WFQ (и только для него):

dyn5(config)# policy-map test-bw           
dyn5(config-pmap)# class class-default
dyn5(config-pmap-c)# fair-queue
[править] congestive-discard-threshold
fair-queue [congestive-discard-threshold]

[править] LLQ

Синтаксис команды для настройки LLQ:

dyn5(config-pmap-c)# priority <bandwidth-kbps | percent <percentage>> [burst-size]

Команда priority для класса:

  • включает LLQ,
  • резервирует пропускную способность,
  • включает функцию policing,
  • (опционально) указывает размер burst для policer (по умолчанию 20 процентов).

Пропускная способность может быть задана конкретным значением или процентами от пропускной способности интерфейса. В одной и той же policy-map могут использоваться различные способы указания пропускной способности priority или priority percent.

Суммарная пропускная способность выделенная в policy-map командами priority и bandwidth не должна превышать значение произведения bandwidth и max-reserved-bandwidth.

Фактически LLQ будет использоваться только когда аппаратная очередь заполнена.

Параметр bandwidth указывает максимальное значение пропускной способности, которое выделяется пакетам, которые принадлежат классу в котором указана команда priority. Этот параметр с одной стороны гарантирует указанную пропускную способность классу, с другой -- сдерживает поток пакетов приоритетного класса.

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

Пример policy-map в которой для class1 настроено LLQ:

dyn5(config)# policy-map test-bw
dyn5(config-pmap)# class llq-class      
dyn5(config-pmap-c)# priority percent 30

Просмотр policy-map:

dyn5# sh policy-map test-bw
  Policy Map test-bw
    Class llq-class
      Strict Priority
      Bandwidth 30 (%)

Просмотр статистики по конкретному классу:

dyn5# sh policy-map interface fa0/0 output class llq-class
 FastEthernet0/0 

  Service-policy output: test-bw

    Class-map: llq-class (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: none 
      Queueing
        Strict Priority
        Output Queue: Conversation 264 
        Bandwidth 30 (%)
        Bandwidth 30000 (kbps) Burst 750000 (Bytes)
        (pkts matched/bytes matched) 0/0
        (total drops/bytes drops) 0/0

[править] Weighted Round Robin Queuing

Weighted Round Robin (WRR)

sw(config-if)# wrr-queue cos-map queue-id threshold-id cos-1...cos-n

Strict-priority queue:

wrr-queue priority-queue 
sw(config-if)# wrr-queue bandwidth <Q1-weight> <Q2-weight> <Qn-weight>

[1]

[править] Weighted Random Early Detection (WRED)

Tail drop — когда очередь заполнена, IOS начинает отбрасывать новые пакеты.

Weighted Random Early Detection (WRED) — отслеживает длину очереди и отбрасывает некоторый процент пакетов в очереди для улучшения производительности сети.

WRED отбрасывает пакеты до тех пор как очередь заполнится.

Для того чтобы определить достаточно ли полна очередь для того чтобы отбрасывать пакеты WRED измеряет среднюю глубину очереди (average queue depth). Затем, значение average depth сравнивается с minimum threshold и maximum threshold. В зависимости от результата сравнения выполняются различные действия.

Значение average depth относительно threshold Действие Название действия в WRED
average < min threshold Пакеты не отбрасываются No drop
min threshold < average < max threshold Процент пакетов отбрасывается. Процент пакетов, которые отбрасываются возрастает от 0 до максимального процента по мере приближения значения average к max threshold Random drop
average > max threshold Все новые пакеты отбрасываются Full drop


Mark probability denominator (MPD) — на основании этого значения вычисляется процент пакетов, которые будут отброшены.

WRED дает больший приоритет пакетам с определенными значениями IPP и DSCP. Для того чтобы сделать это WRED использует разные профили трафика (traffic profile) для пакетов с разными значениями IPP и DSCP.

WRED traffic profile состоит из настроек для трёх переменных:

  • minimum threshold,
  • maximum threshold,
  • MPD.


Профили WRED заданные по умолчанию для DSCP-based WRED:

DSCP Min threshold Max threshold MPD 1/MPD
AFx1 33 40 10 10%
AFx2 28 40 10 10%
AFx3 24 40 10 10%
EF 37 40 10 10%

Exponential weighting constant контролирует насколько быстро меняется средняя глубина очереди. Если значение константы меньше, то средняя глубина очереди меняется быстрее; если константа больше, то - медленнее. По умолчанию используется значение 9.

[править] Настройка WRED

WRED может быть настроен на:

  • физическом интерфейсе (с FIFO очередью),
  • для класса (класс должен быть не LLQ) внутри CBWFQ policy-map,
  • для ATM VC.

Для использования WRED на физическом интерфейсе, IOS отключает остальные механизмы управления очередями и создает одну очередь FIFO.

Команды по настройке WRED аналогичны на интерфейсе и для класса внутри policy-map.

Включение WRED (по умолчанию включается WRED с использованием IPP):

dyn5(config-if)# random-detect 

Включение WRED с использованием DSCP для определения профиля трафика:

dyn5(config-if)# random-detect dscp-based

Изменение настроек по умолчанию WRED для конкретного значения IPP:

dyn5(config-if)# random-detect precedence <precedence> <min-thres> <max-thres> <mpd>

Изменение настроек по умолчанию WRED для конкретного значения DSCP:

dyn5(config-if)# random-detect dscp <dscp-value> <min-thres> <max-thres> <mpd>

Exponential weighting constant:

dyn5(config-if)# random-detect exponential-weighting-constant <1-16>

[править] Просмотр настроек

Просмотр настроек:

dyn5# sh queueing [interface | custom | fair | priority | random-detect]

Пример вывода настроек:

dyn5# sh queueing 
Current fair queue configuration:
Current DLCI priority queue configuration:
Current priority queue configuration:
Current custom queue configuration:
Current random-detect configuration:
  FastEthernet0/0
    Queueing strategy: random early detection (WRED)
    Random-detect not active on the dialer
    Exp-weight-constant: 9 (1/512)
    Mean queue depth: 0

  class                     Random drop      Tail drop    Minimum Maximum  Mark
                            pkts/bytes       pkts/bytes    thresh  thresh  prob
      0                         0/0              0/0           20      40  1/10
      1                         0/0              0/0           22      40  1/10
      2                         0/0              0/0           24      40  1/10
      3                         0/0              0/0           26      40  1/10
      4                         0/0              0/0           28      40  1/10
      5                         0/0              0/0           31      40  1/10
      6                         0/0              0/0           33      40  1/10
      7                         0/0              0/0           35      40  1/10
   rsvp                         0/0              0/0           37      40  1/10

Current per-SID queue configuration:

[править] Modified Deficit Round-Robin (MDRR)

Утилита MDRR реализована только для маршрутизаторов Cisco 12000, так как они не поддерживают CBWFQ и LLQ.

MDRR позволяет классифицировать трафик на семь round-robin очередей (0-6), с одной дополнительной приоритетной очередью.

Если в приоритетной очереди нет пакетов, то WDRR обслуживает очереди по принципу round-robin. Если в приоритетной очереди есть пакеты, то WDRR может обрабатывать пакеты одним из вариантов:

  • Strict priority mode — приоритетная очередь обслуживается сразу, как только там появляются пакеты;
  • Alternate mode — приоритетная очередь обслуживается после каждой не приоритетной очереди.

MDRR поддерживает два типа scheduling.

  • Quantum value (QV) — количество байтов. WDRR удаляет пакеты из очереди до тех пор пока QV для этой очереди будет удалено.
  • Deficit — количество байт которые были обработаны сверх нормы (более чем QV). При следующем прохождении цикла с очереди в которой было взято больше байт, будет взято на эту же величину меньше.

[править] Управление перегрузками и избежание перегрузок на коммутаторах

Коммутаторы 3550 и 3560 выполняют входящее и исходящее управление очередями. У 3550 одна входящая очередь работающая по принципу FIFO. У 3560 две входящих очереди, одна из которых может быть настроена как приоритетная очередь.

В 3560 packet scheduler использует метод shared round-robin (SRR) для того чтобы контролировать отправку пакетов. На входящих очередях SRR разделяет пропускную способность между очередями, в соответствии с настроенными весами. Вес выполняет роль относительной, а не абсолютной величины.

Пол умолчанию, трафик промаркированный значением COS 5 попадает во вторую очередь, остальной в первую. Можно настроить назначение трафика в очередь по значению DSCP.

switch# show mls qos maps cos-input-q
switch# show mls qos maps dscp-input-q

Настройка коэффициентов для очередей (по умолчанию 90 процентов в очередь 1 и 10 процентов в очередь 2):

switch(config)# mls qos srr-queue input buffers <percentage1> <percentage2>

Настройка процентов для пропускной способности, которые устанавливают частоту с которой scheduler берет пакеты из двух буферов (по умолчанию оба значения 4):

switch(config)# mls qos srr-queue input bandwidth <weight1> <weight2>

Две указанные команды вместе определяют какое количество данных коммутатор может

Настройка приоритетной очереди:

switch(config)# mls qos srr-queue input priority-queue <queue-id> bandwidth <weight>

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

[править] Shaping и Policing

[править] Терминология

  • Tc — временной интервал, измеряемый в секундах, в течение которого может быть отправлен commited burst (Bc). Для многих shaping утилит Tc=Bc/CIR.
  • Bc — commited burst rate, измеряется в битах. Количество трафика которое будет отправлено в течение Tc интервала.
  • CIR — commited information rate, в битах в секунду, определяет rate VC в соответствии с контрактом.
  • Shaped rate — rate, в битах за секунду, до которого конкретная настройка делает shape трафику. Может быть установлен или нет в значение равное CIR.
  • Be — excess burst size, в битах. Количество битов, которое может быть отправлено сверх указанного Bc после периода неактивности.

[править] Shaping в сетях Frame-Relay

Minimum information rate (MIR) или mincir.

Уменьшает rate шейпер в том случае, если обнаруживает перегрузку с помощью одного из двух методов:

  • получает кадр с установленным битом BECN (Backward Explicit Congestion Notification),
  • получает проприетарное сообщение о перегрузке (congestion message) Cisco ForeSight.

При получении BECN или ForeSight сообщения, шейпер снижает rate на 25 процентов от максимального rate. Фактически уменьшается Bc и Be на 25 процентов, а Tc остается неизменным. Если опять приходит сообщение BECN или ForeSight, то происходит уменьшение ещё на 25 процентов. Так происходит то тех пор пока не будет достигнут mincir.

После получения 16 сообщений без BECN или ForeSight, rate снова возрастает.

[править] Class-based shaping

CB shaping может быть настроен только для исходящих пакетов и может быть применен к физическому интерфейсу или подынтерфейсу.

dyn5(config-pmap-c)# shape [average | peak] <mean-rate> [[burst-size][exceed-burst-size]]

Должен быть указан shaping rate. Bc и Be могут быть опущены, а Tc не может быть задан напрямую. Соответственно CB shaping высчитывает неуказанные значения. Значения высчитываются по-разному в зависимости от того чему равен shaping rate.

Переменная Rate <= 320 kbps Rate > 320 kbps
Bc 8000 bits Bc = shaping rate * Tc
Be Be = Bc = 8000 Be = Bc
Tc Tc = Bc / shaping rate 25ms

[править] CB shaping peak rate

Если CB shaping настроен командой shape peak, то:

  • значения Bc, Be, Tc высчитываются как и для команды shape average,
  • токены Bc и Be (а не только Bc) пополняются каждый временной интервал.
Shaping rate = configured rate (1 + Be/Bc)

[править] Generic Traffic Shaping

[2]

[править] Frame-Relay traffic shaping

Frame-Relay traffic shaping (FRTS):

  • FRTS может использоваться только на frame-relay интерфейсах, а CB shaping может использоваться для любого протокола канального уровня.
  • Как и CB shaping, FRTS позволяет использовать утилиты для управления очередями вместо одной очереди FIFO.
  • В отличие от CB shaping, FRTS не позволяет включать дополнительные утилиты управления очередями на физическом интерфейсе одновременно с FRTS.
  • FRTS всегда шейпит трафик в каждой VC отдельно.
  • FRTS не может классифицировать трафик для того чтобы шейпить часть трафика конкретной VC.
  • В отличие от CB shaping, FRTS может динамически получать значение CIR, Bc и Be, настроенные на FR-коммутаторе, используя Enhanced Local Management Interface (ELMI).

Настройка FRTS:

dyn5(config)# map-class frame-relay testFR
dyn5(config-map-class)# frame-relay traffic-rate <average> [peak]

Пример явного указания параметров:

dyn5(config)# map-class frame-relay testFR
dyn5(config-map-class)# frame-relay cir 64000
dyn5(config-map-class)# frame-relay bc 640

Настройка динамического реагирования маршрутизатора на основании BECN:

dyn5(config-map-class)# frame-relay adaptive-shaping

[3]

[править] CB policing

CB policing разделяет пакеты на две или три категории, в зависимости от вида policing, а затем применяет к каждой категории соответствующее действие.

Возможные категории:

  • conforming
  • exceeding
  • violating

[править] Single-rate, two-color policing (one bucket)

Policer использует две категории:

  • conform
  • exceed

CB Policer заполняет bucket не на основании временных интервалов, а на основании пакетов.

Количество токенов высчитывается по формуле:

((current_packet_arrival_time - Previous_packet_arrival_time) * Police_rate) / 8

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

Когда приходит новый пакет, policer должен определить превышает или нет этот пакет установленный контракт.

Policer сравнивает количество байт в пакете (Xp) с количеством токенов в token bucket (Xb).

Категория Требования Токены, которые забраны из bucket
Conform Если Xp <= Xb Xp токенов
Exceed Если Xp > Xb не забираются

[править] Single-rate, three-color policing (two buckets)

Policer использует три категории:

  • conform
  • exceed
  • violate

Xbc — количество токенов в Bc bucket, Xbe — количество токенов в Be bucket.

Категория Требования Токены, которые забраны из bucket
Conform Если Xp <= Xbc Xp токенов из Bc bucket
Exceed Если Xp > Xbc и Xp <= Xbe Xp токенов из Be bucket
Violate Если Xp > Xbc и Xp > Xbe не забираются

[править] Two-rate, three-color policing (two buckets)

Two rate:

  • Commited information rate (CIR)
  • Peak information rate (PIR)

Policer использует три категории:

  • conform — пакеты передающиеся до CIR,
  • exceed — пакеты передающиеся выше CIR, но до PIR,
  • violate — пакеты передающиеся выше PIR.
Категория Требования Токены, которые забраны из bucket
Conform Если Xp <= Xbc Xp токенов из Bc bucket и Xp токенов из Be bucket
Exceed Если Xp > Xbc и Xp <= Xbe Xp токенов из Be bucket
Violate Если Xp > Xbc и Xp > Xbe не забираются

[править] Настройка CB policing

Пример настройки:

police cir 8000 bc 1000 be 500 conform-action transmit exceed-action transmit violate-action drop 

Если не указаны значения Bc или Be, то используются значения по умолчанию, которые зависят от типа policing.

Тип policing Как определить тип по команде police Значения по умолчанию
Single rate, two color не настроено violate-action Bc = CIR/32, Be = 0
Single rate, three color настроено violate-action Bc = CIR/32, Be = Bc
Dual rate, three color настроено PIR Bc = CIR/32, Be = PIR/32

[править] Multi-action policing

Multi-action policing — маркировка нескольких полей в одном пакете с помощью CB policing.

[править] Commited access rate (CAR)

CAR это single-rate, two-color policing.
CAR оптимизирован для высокоскоростных соединений.
CAR применяется для входных и выходных интерфейсов (включая подинтерфейсы в том числе Frame Relay и ATM)
может так же использоваться для предотвращения DOS атак.

Настройка CAR:

dyn5(config-if)# rate-limit <input | output> [access-group [rate-limit] acl-index] 
bps burst-normal burst-max conform-action action exceed-action action  

Параметры команды:

  • access-group - аксесс лист классификации
  • bps - скорость бит/с (commited access rate)
  • burst-normal - размер всплеска
    рекомендовано считать по формуле ([4]):
  • burst-normal = bps * (1 byte)/(8 bits) * 1.5 seconds
  • burst-max - максимальный размер всплеска
  • burst-max=burst-normal*2
  • conform-action action - действие при соответствии ограничения
  • exceed-action action - действие при превышении ограничения
    • Возможные варианты действий:
      • drop – уничтожить
      • transmit - передать
      • set-dscp-transmit – пометить пакет
  • burst-max - трафик, который можно передать при пустой очереди
    рекомендовано задавать по формуле:
    burst-max=burst-normal*2

Пример CAR:

interface Tunnel122
 ip address 10.84.239.230 255.255.255.252
 ip mtu 1420
 rate-limit input access-group 199 8000 1600 2000 conform-action transmit exceed-action drop
 ...
end

Просмотр трафика, который попадает под CAR:

sm-sht-c2811#sh int tu 122 rate-limit
Tunnel122 crypto tunnel sm
  Input
    matches: access-group 199
      params:  8000 bps, 1600 limit, 2000 extended limit
      conformed 23741 packets, 1994692 bytes; action: transmit
      exceeded 3210 packets, 184395 bytes; action: drop
      last packet: 1149595396ms ago, current burst: 0 bytes
      last cleared 14w0d ago, conformed 0 bps, exceeded 0 bps

На интерфейс можно описывать любое число правил, ограничивающих трафик на данном интерфейсе
Следующий пример ограничивает ICMP трафик до 500 kb/s, а так же UDP трафик до уровня 2 Мб/s на одном из интерфейсов

!
sm-c3660(config-if)#rate-limit input access-group 100 500000 62500 62500 conform-action transmit exceed-action drop
sm-c3660(config-if)#rate-limit input access-group 101 2010000 250000 250000 conform-action transmit exceed-action drop
!
sm-c3660(config)#access-list 100 permit icmp any any
sm-c3660(config)#access-list 101 permit udp any any

[5] [6]

[править] rate-limit ACL

dyn1(config)# access-list rate-limit ?
  <0-99>     Precedence ACL index
  <100-199>  MAC address ACL index
  <200-299>  mpls exp ACL index
dyn1(config)# access-list rate-limit 1 mask <0-FF>

Порядок вычисления параметра mask:

  1. Определить какие значения IPP нужны.
  2. Каждому значению IP precedence соответствует бит в выделенном байте:
    • 00000001 — 0
    • 00001000 — 3
    • 00100001 — 5
  3. Сложить получившиеся 8мибитные числа. Например, если необходимо совпадение значений 0, 3 и 5, то итоговое значение будет 00101001.
  4. Перевести полученное значение в соответствующее шестнадцатеричное число. Для приведенного примера это будет число 0x29.
  5. Настроить соответствующий ACL. Для указанного примера: access-list rate-limit 1 mask 29.

[править] QoS Policy Propagation через BGP (QPPB)

[7]

[править] Дополнительная информация

Cisco 3560 QoS:

Источник — «http://xgu.ru/wiki/QoS_%D0%B2_Cisco»