Quality of Service (QoS) - технология предоставления различным классам трафика различных приоритетов в обслуживании. Для классификации трафика используются стандартные поля в заголовках:
Исходя из значений данных заголовков полученным кадрам назначается внутренний приоритет (Internal Priority), в соответствии с которым на выходе кадры распределяются по внутренним очередям. Для распределения по очередям используются так называемые карты QoS: CoS - IntP, DSCP - IntP, Exp - IntP и далее IntP - Queue.
Приоритет передачи трафика для внутренних очередей определяется одним из следующих алгоритмов:
Возможно комбинирование алгоритмов WRR/WDRR с SP, для этого достаточно задать нулевой вес для очереди, которую необходимо обрабатывать приоритетно.
Позволяет классифицировать трафик на основе различных признаков (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} |
Позволяет задать метку CoS для маркировки multicast-трафика на коммутаторе. Можно задать разные значения CoS для разных источников и/или разных групп:
ip multicast policy {source_ip/mask} {group_ip/mask} cos {0-7} |
На коммутаторах 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 - номер очереди.
По умолчанию коммутаторы 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 не поддерживается чипом коммутатора. Изменить значение можно только для одной метки. |
Рассмотрим несколько примеров:
На нетегированных кадрах, полученных с порта 1/0/5, необходимо установить значение CoS равным 5, на порте 1/0/6 установить режим доверия DSCP. Кадры с CoS равным 5 должны обрабатываться по внутреннему приоритету 6. На порте 1/0/25 необходимо использовать алгоритм WDRR, при котором 6 очередь обрабатывается как Strict Priority. Устанавливаем значение CoS для нетегированного трафика на порте 1/0/5:
Устанавливаем режим доверия DSCP на порте 1/0/6:
Изменяем QoS-карту для CoS:
Изменяем алгоритм и вес 6 очереди на порте 1/0/25:
|
Ограничить исходящую скорость для сети 10.168.1.0/24 до 10Mbps с CBS 100KB на порте 1/0/1. Создаем карту классов:
Устанавливаем соответствие карты классов необходимому критерию:
Настраиваем размер burst:
Создаем карту политик и привязываем к ней созданную карту классов:
Устанавливаем ограничение полосы пропускания:
Привязываем карту политик к необходимому порту:
|
Для кадров с VLAN ID 100 на порте 1/0/28 установить CoS равным 3, кадры должны быть помещены в соответствующую данному классу очередь. Создаем карту классов:
Устанавливаем соответствие карты классов необходимому критерию:
Создаем карту политик и привязываем к ней созданную карту классов:
Изменяем значение меток CoS и Internal Priority:
Привязываем карту политик к необходимому порту:
|
По умолчанию коммутаторы 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 нужно оставить без изменений.
|