Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »


Quality of Service (QoS) - технология предоставления различным классам трафика различных приоритетов в обслуживании. Для классификации трафика используются стандартные поля в заголовках:

  • 3-битный Class of Service (CoS) в Ethernet;
  • 6-битный Differentiated Services Code Point (DSCP) в IP.

Исходя из значений данных заголовков полученным кадрам назначается внутренний приоритет (Internal Priority), в соответствии с которым на выходе кадры распределяются по внутренним очередям. Для распределения по очередям используются так называемые карты QoS: CoS - IntP, DSCP - IntP, Exp - IntP и далее IntP - Queue.

Алгоритмы управления очередями

Приоритет передачи трафика для внутренних очередей определяется одним из следующих алгоритмов:

  • Strict Priority (SP) - строгий приоритет. Пока в более приоритетной очереди есть данные, которые необходимо передать, другие очереди не обрабатываются.
  • Weighted Round Robin (WRR) - для каждой очереди определяется вес. Из очередей по порядку берется кратное весу очереди число кадров.
  • Weighted Deficit Round Robin (WDRR) - для каждой очереди также устанавливается вес, определяющий количество бит, которые могут быть взяты из очереди. Количество бит пополняется каждый цикл.

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

Service policy

Позволяет классифицировать трафик на основе различных признаков (ACL, CoS, VLAN ID, IPv4 Precedence, DSCP, IPv6 FL) с возможностью дальнейшей перемаркировки, определения трафика в конкретную очередь, ограничения полосы пропускания и других действий. Рассмотрим создание service-policy подробнее:

Для классификации трафика создается карта классов:

class {class_name}

В режиме настройки класса выбирается критерий, по которому полученные кадры будут классифицированы:

match {...}

Далее создается карта политик:

policy-map {map_name}

Карта политик ассоциируется с необходимым классом и выбирается действие для классифицированного трафика.

Перемаркировка:

set {...}

Ограничение полосы пропускания:

policy {bits_per_second} burst-group {burst-group-id}

Действие сброса либо дальнейшей передачи трафика:

[no] drop
[no] transmit

Применять service-policy можно как к определенному порту в режиме его конфигурирования:

service-policy {input | output} {name}

так и к VLAN в режиме глобального конфигурирования:

service-policy {input | output} {name} vlan {vid}

Multicast policy

Позволяет задать метку CoS для маркировки multicast-трафика на коммутаторе. Можно задать разные значения CoS для разных источников и/или разных групп:

ip multicast policy {source_ip/mask} {group_ip/mask} cos {0-7}

Статистика QoS по очередям

На коммутаторах SNR серий S2995G, S3850G, S2990X, S300X, S300G и S4550 существует возможность просмотра статистики очередей QoS. Рассмотрим подробнее данный функционал:

Сначала необходимо включить возможность снятия статистики QoS в глобальной конфигурации:

mls qos queue statistics enable

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

show mls qos queue statistics interface ethernet 1/0/1

В случае, если QoS настроен по дефолту, все пакеты попадают в нулевую очередь, соответственно в графе dropped будут отображены пакеты, отброшенные по причине превышения пропускной способности канала:

Port:Ethernet1/0/1
-----------------------------------------
Queue Passed(packet) Dropped(packet)
0            2827022         2236755
1                  0               0
2                  0               0
3                  0               0
4                  0               0
5                  0               0
6                  0               0
7                  0               0

Снятие статистики дропов доступно по SNMP, OID: 1.3.6.1.4.1.40418.7.100.11.2.17.1.4.a.b, где:

a - номер порта;
b - номер очереди.

Настройка QoS на коммутаторах SNR

SNR-S2962, SNR-S2965, SNR-S2982G, SNR-S2985G

По умолчанию коммутаторы SNR-S2962(5) и SNR-S2982(5)G доверяют значению СoS, но режим доверия можно изменить. Выставляется данный режим отдельно для каждого порта:

[no] mls qos trust {cos | dscp}

Важно!

Если режим доверия установлен одновременно и для значения CoS и для значения DSCP - приоритет отдается значению DSCP.

Значение CoS для нетегированного входящего трафика можно установить в режиме конфигурирования порта:

mls qos cos {0-7}

Важно!

Чтобы добавить CoS 802.1p к внешнему тегу (s-vid) QinQ нужно отключить доверие существующей метке с помощью 'no mls qos trust cos' и прописать нужный CoS 802.1p с помощью 'mls qos cos', к внутреннему тегу (c-vid) CoS 802.1p можно добавить с помощью policy-map.

Полученные кадры распределяются по 8 внутренним очередям в соответствии с QoS-картой. По умолчанию значения CoS и внутренней приоритизации равны:

Ingress COS-TO-Internal-Priority map:
COS: 0 1 2 3 4 5 6 7
-----------------------------------------
INTP: 0 1 2 3 4 6 6 7

Ingress DSCP-TO-Internal-Priority map:
d1:d2     0 1 2 3 4 5 6 7 8 9
0:        0 0 0 0 0 0 0 0 1 1
1:        1 1 1 1 1 1 2 2 2 2
2:        2 2 2 2 3 3 3 3 3 3
3:        3 3 4 4 4 4 4 4 4 4
4:        5 5 5 5 5 5 5 5 6 6
5:        6 6 6 6 6 6 7 7 7 7
6:        7 7 7 7

Также могут быть установлены индивидуальные соответствия:

mls qos map dscp-intp {cos-dp | cos-intp | dscp-dp | dscp-dscp | dscp-intp}

Для управления очередями по умолчанию используется алгоритм WRR. Изменить алгоритм и веса очередей можно в контексте конфигурирования порта:

mls qos queue algorithm {sp | wdrr | wrr}
mls qos queue {wrr | wdrr} weight {weight0-weight7}

Важно!

• Одновременное изменение значений CoS и DSCP не поддерживается чипом коммутатора. Изменить значение можно только для одной метки.
• При изменении метки с помощью service-policy также необходимо изменять внутренний приоритет классифицированному трафику, в противном случае он будет выбран по первичному значению метки.
• Не рекомендуется одновременно использовать service-policy на VLAN и на портах данной VLAN.

Рассмотрим несколько примеров:

На нетегированных кадрах, полученных с порта 1/0/5, необходимо установить значение CoS равным 5, на порте 1/0/6 установить режим доверия DSCP. Кадры с CoS равным 5 должны обрабатываться по внутреннему приоритету 6. На порте 1/0/25 необходимо использовать алгоритм WDRR, при котором 6 очередь обрабатывается как Strict Priority.

Устанавливаем значение CoS для нетегированного трафика на порте 1/0/5:

Switch(config)#interface ethernet 1/0/5
Switch(config-if-ethernet1/0/5)#mls qos cos 5

Устанавливаем режим доверия DSCP на порте 1/0/6:

Switch(config)#interface ethernet 1/0/6
Switch(config-if-ethernet1/0/6)#no mls qos trust qos
Switch(config-if-ethernet1/0/6)#mls qos trust dscp

Изменяем QoS-карту для CoS:

Switch(config)#mls qos map cos-intp 0 1 2 3 4 6 6 7

Изменяем алгоритм и вес 6 очереди на порте 1/0/25:

Switch(config)#interface ethernet 1/0/25
Switch(config-if-ethernet1/0/25)#mls qos queue algorithm wdrr
Switch(config-if-ethernet1/0/25)#mls qos queue wdrr weight 1 2 4 8 16 0 32 64

Ограничить исходящую скорость для сети 10.168.1.0/24 до 10Mbps с CBS 100KB на порте 1/0/1.

Создаем карту классов:

Switch(config)#class-map maxrate

Устанавливаем соответствие карты классов необходимому критерию:

Switch(config)#access-list 1 permit 10.168.1.0 0.0.0.255
Switch(config)#class-map maxrate
Switch(config-classmap-maxrate)#match access-group 1

Настраиваем размер burst:

Switch(config)#policy burst 1 100

Создаем карту политик и привязываем к ней созданную карту классов:

Switch(config)#policy-map maxrate
Switch(config-policymap-maxrate)#class maxrate

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

Switch(config-policymap-maxrate-class-maxrate)#policy 10000 burst-group 1

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

Switch(config-if-ethernet1/0/1)#service-policy input maxrate

Для кадров с VLAN ID 100 на порте 1/0/28 установить CoS равным 3, кадры должны быть помещены в соответствующую данному классу очередь.

Создаем карту классов:

Switch(config)#class-map vid100

Устанавливаем соответствие карты классов необходимому критерию:

Switch(config-classmap-vid100)#match vlan 100

Создаем карту политик и привязываем к ней созданную карту классов:

Switch(config)#policy-map vid100
Switch(config-policymap-vid100)#class vid100

Изменяем значение меток CoS и Internal Priority:

Switch(config-policymap-vid100-class-vid100)#set cos 3
Switch(config-policymap-vid100-class-vid100)#set internal-priority 3

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

Switch(config)#interface ethernet 1/0/28
Switch(config-if-ethernet1/0/28)#service-policy input vid100

SNR-S2995G, SNR-S3850G

По умолчанию коммутаторы SNR-S2995G и SNR-S3850G не доверяют ни одной из меток. Режим доверия можно изменить отдельно для каждого порта:

[no] mls qos trust {cos | dscp | exp}

Важно!

Если режим доверия установлен одновременно и для значения CoS и для значения DSCP - приоритет отдается значению DSCP. Если установлен и EXP, то он имеет наивысший приоритет.

Значение CoS для нетегированного входящего трафика можно установить в режиме конфигурирования порта:

mls qos cos {0-7}

Кроме этого, данные модели позволяют выставить внутренний приоритет для нетегированного трафика в режиме конфигурирования порта:

mls qos internal-priority {0-119}

В случае, если необходимо изменить IntP для определенного порта, но метку CoS/DSCP/ExP оставить без изменений (в обычном варианте значение метки будет выбрано по IntP) на данных моделях создан функционал pass-through:

pass-through-cos
pass-through-dscp-exp

Полученные кадры распределяются по 8 внутренним очередям в соответствии с QoS-картой:

Ingress COS-TO-Internal-Priority map:
COS:  0 1  2  3  4  5  6  7
----------------------------
INTP: 0 8 16 24 32 40 48 56

Ingress DSCP-TO-Internal-Priority map:
d1 : d2      0   1  2  3  4  5  6  7  8  9
0:           0   1  2  3  4  5  6  7  8  9
1:           10 11 12 13 14 15 16 17 18 19
2:           20 21 22 23 24 25 26 27 28 29
3:           30 31 32 33 34 35 36 37 38 39
4:           40 41 42 43 44 45 46 47 48 49
5:           50 51 52 53 54 55 56 57 58 59
6:           60 61 62 63

Также могут быть установлены индивидуальные соответствия:

mls qos map dscp-intp {cos-cos | cos-dscp | cos-intp | dscp-cos | dscp-dscp | dscp-intp | exp-intp | intp-cos | intp-dp | intp-dscp | intp-exp | intp-intp | intp-queue}

Как мы видим по QoS-картам, данные модели позволяют управлять метками в обоих направлениях, а не только ingress.

Для управления очередями по умолчанию используется алгоритм WDRR. Изменить веса очередей можно в глобальном режиме:dot1q1

mls qos queue weight {weight0-weight7}

Важно!

• На данных моделях приоритетными очередями (SP) - могут быть только очереди, начиная с последней. Их может быть несколько, но последовательность должна быть непрерывной;
• Не рекомендуется одновременно использовать service-policy на VLAN и на портах данной VLAN;
• При изменении метки с помощью service-policy также необходимо изменять внутренний приоритет классифицированному трафику, в противном случае он будет выбран по первичному значению метки.

Рассмотрим еще один пример (примеры, указанные для серий S2962, S2965, S2982G и S2985G справедливы и для этой серии):

Для нетегированного трафика на порте 1/0/28 установить IntP равным 64, при этом значение CoS нужно оставить без изменений.

Switch(config)#interface ethernet 1/0/28
Switch(config-if-ethernet1/0/28)#pass-through-cos
Switch(config-if-ethernet1/0/28)#mls qos internal-priority 64
  • No labels