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

На коммутаторах серий MES14xx, MES24xx, MES3400-xx, MES37хх возможна настройка 8 выходных очередей для каждого интерфейса. Очереди могут работать по алгоритмам Strict priority, Weighted Round Robin, либо их комбинаций.

Strict priority (SP) - строгая очередь, имеет наивысший приоритет. Алгоритм предполагает пропуск всех пакетов наиболее приоритетной очереди и переход к обработке менее приоритетной, только после того как высокоприоритетная станет пустой. При этом, если в процессе обработки низкоприоритетной очереди, приходит пакет в высокоприоритетную, диспетчер переключится на нее. SP подходит для критически чувствительных к задержкам типов трафика, к примеру голоса или пакетов сигнальных протоколов, наподобие bfd, так как может обеспечить им гарантированную передачу. Этот же принцип является и недостатком SP, нагруженная трафиком высокоприоритетная очередь не позволит диспетчеру перейти к обработке менее приоритетной.

Алгоритм Weighted Round Robin (WRR) обеспечивает обработку очередей в соответствии с их весом. Диспетчер циклически проходит по всем очередям и пропускает пакеты из каждой кратно ее весу, это позволяет не допустить использование отдельным приложением всех доступных к пересылке ресурсов.

В случае использования комбинации SP и WRR на одном интерфейсе, очереди с алгоритмом SP будут обслуживаться раньше очередей WRR. Если поток трафика минимален и очереди SP не занимают всю, назначенную для интерфейса, полосу пропускания, то очереди WRR используют полосу пропускания совместно с очередями SP.

Алгоритм работы планировщика определяется для каждого интерфейса командой вида:

scheduler sched_num interface {fastethernet fa_port | gigabitethernet gi_port | twopointfivegigabitethernet two_port | tengigabitethernet te_port | port-channel group} sched-algo {strict-priority | wrr}

К примеру планировщик с индексом 10 настроенный для интерфейса gi0/1 с алгоритмом SP настраивается командой:

scheduler 10 interface gigabitethernet 0/1 sched-algo strict-priority

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


Назначение выходной очереди для пакета возможно средствами class-map.

Логика работы данного механизма предполагает:

1. Создание ACL для указания трафика, который будет определяться в ту или иную очередь.
2. Назначение ACL на входящий, для определяемого в очередь трафика, интерфейс.
3. Создание class-map и привязку к нему ACL для назначения очереди обработки, в которую помещается, попадающий под ACL, трафик.

Рассмотрим примеры назначения очередей для трафика различных профилей.

Классификация трафика по метке VLAN:

!
mac access-list extended 1 <---создаем mac acl 1, фильтрующий кадры во vlan id 10
permit any any vlan 10
!
interface gigabitethernet 0/1
mac access-group 1 in <---привязываем mac acl 1 к интерфейсу
!
class-map 11 <---создаем классификатор 11
match access-group mac-access-list 1 <---определяем критерий классификации, в данном случае классифицироваться будет трафик, попадающий под mac acl 1
set class 11 regen-priority 0 group-name queue1 <---помещаем классифицированный трафик в первую очередь.
!

Классификация трафика по метке CoS:

!
mac access-list extended 2 <---создаем mac acl 2, фильтрующий кадры с меткой CoS 2
permit any any cvlan-priority 2
!
interface gigabitethernet 0/1
mac access-group 2 in <---привязываем mac acl 2 к интерфейсу
!
class-map 12 <---создаем классификатор 12
match access-group mac-access-list 2 <---определяем критерий классификации
set class 12 regen-priority 1 group-name queue2 <---помещаем классифицированный трафик во вторую очередь.
!

Классификация трафика по source MAC:

!
mac access-list extended 3 <---создаем mac acl 3, фильтрующий кадры с mac адресом источника e4:6f:13:f3:a1:33
permit host e4:6f:13:f3:a1:33 any
!
interface gigabitethernet 0/1
mac access-group 3 in <---привязываем mac acl 3 к интерфейсу
!
class-map 13 <---создаем классификатор 13
match access-group mac-access-list 3 <---определяем критерий классификации
set class 13 regen-priority 2 group-name queue3 <---помещаем классифицированный трафик в третью очередь.
!

Классификация трафика по source IP:

!
ip access-list extended 1004 <---создаем ip acl 1004, фильтрующий пакеты с ip адресом источника 192.168.1.11
permit ip host 192.168.1.11 any
!
interface gigabitethernet 0/1
ip access-group 1004 in <---привязываем ip acl 1004 к интерфейсу
!
class-map 14 <---создаем классификатор 14
match access-group ip-access-list 1004 <---определяем критерий классификации
set class 14 regen-priority 3 group-name queue4 <---помещаем классифицированный трафик в четвертую очередь.
!

Классификация трафика по метке DSCP:

!
ip access-list extended 1005 <---создаем ip acl 1004, фильтрующий пакеты с меткой DSCP 5
permit ip any any dscp 5
!
interface gigabitethernet 0/1
ip access-group 1005 in <---привязываем ip acl 1005 к интерфейсу
!
class-map 15 <---создаем классификатор 15
match access-group ip-access-list 1005 <---определяем критерий классификации
set class 15 regen-priority 4 group-name queue5 <---помещаем классифицированный трафик в пятую очередь.
!


Примечание:
Опция regen-priority устанавливает внутренний приоритет для указанного класса, на основании которого классифицированный трафик помещается в определенную очередь. При этом нумерация regen-priority считается с 0, а номер выходной очереди с 1. Поэтому команда set class 11 regen-priority 0 group-name queue1 определяет трафик в первую очередь. Опция group-name является аналогом description и не влияет на классификацию трафика.

Командой show class-map можно вывести сводную информацию по классификатору:

console#show class-map 15
QoS Class Map Entries
---------------------
ClassMapId : 15 <--- id классификатора
L2FilterId : None
L3FilterId : 1005 <--- критерий классификации, в данном случае ip acl 1005
PriorityMapId : None
VlanMapId : None
CLASS : 15 <--- id класса
PolicyMapId : None
PreColor : None
Status : Active


Настроим 8 очередей интерфейса gi0/1 с планировщиком 10 работающим по алгоритму SP и весом очередей от 1 до 8:

scheduler 10 interface gigabitethernet 0/1 sched-algo strict-priority

queue 1 interface gigabitethernet 0/1 scheduler 10 weight 1
queue 2 interface gigabitethernet 0/1 scheduler 10 weight 2
queue 3 interface gigabitethernet 0/1 scheduler 10 weight 3
queue 4 interface gigabitethernet 0/1 scheduler 10 weight 4
queue 5 interface gigabitethernet 0/1 scheduler 10 weight 5
queue 6 interface gigabitethernet 0/1 scheduler 10 weight 6
queue 7 interface gigabitethernet 0/1 scheduler 10 weight 7
queue 8 interface gigabitethernet 0/1 scheduler 10 weight 8

и посмотрим как это все работает.

Для наглядности в тесте будем использовать генератор трафика на платформе IxNetwork и коммутатор MES3400-24F, включенные по схеме:


интерфейс te0/1 будет входящим, gi0/1 - исходящим.

Сгенерируем трафик с общим рейтом 2400Mb/s из 8 односторонних сессий следующего профиля:

1 сессия - dst mac: 00:00:15:00:00:01, src mac: 00:00:00:00:00:01, src ip: 192.168.1.1, dst ip: 192.168.6.1.
2 сессия - dst mac: 00:00:15:00:00:02, src mac: 00:00:00:00:00:02, src ip: 192.168.1.2, dst ip: 192.168.6.2.
3 сессия - dst mac: 00:00:15:00:00:03, src mac: 00:00:00:00:00:03, src ip: 192.168.1.3, dst ip: 192.168.6.3.
4 сессия - dst mac: 00:00:15:00:00:04, src mac: 00:00:00:00:00:04, src ip: 192.168.1.4, dst ip: 192.168.6.4.
5 сессия - dst mac: 00:00:15:00:00:05, src mac: 00:00:00:00:00:05, src ip: 192.168.1.5, dst ip: 192.168.6.5.
6 сессия - dst mac: 00:00:15:00:00:06, src mac: 00:00:00:00:00:06, src ip: 192.168.1.6, dst ip: 192.168.6.6.
7 сессия - dst mac: 00:00:15:00:00:07, src mac: 00:00:00:00:00:07, src ip: 192.168.1.7, dst ip: 192.168.6.7.
8 сессия - dst mac: 00:00:15:00:00:08, src mac: 00:00:00:00:00:08, src ip: 192.168.1.8, dst ip: 192.168.6.8.

суммарная скорость будет делиться по 300Mb/s на каждую сессию. Трафик каждой сессии определим в отдельную очередь по признаку destination mac.

Конфигурация:

!
mac access-list extended 1
permit any host 00:00:15:00:00:01
!
mac access-list extended 2
permit any host 00:00:15:00:00:02
!
mac access-list extended 3
permit any host 00:00:15:00:00:03
!
mac access-list extended 4
permit any host 00:00:15:00:00:04
!
mac access-list extended 5
permit any host 00:00:15:00:00:05
!
mac access-list extended 6
permit any host 00:00:15:00:00:06
!
mac access-list extended 7
permit any host 00:00:15:00:00:07
!
mac access-list extended 8
permit any host 00:00:15:00:00:08
!
interface tengigabitethernet 0/1
mac access-group 1 in
mac access-group 2 in
mac access-group 3 in
mac access-group 4 in
mac access-group 5 in
mac access-group 6 in
mac access-group 7 in
mac access-group 8 in
!
class-map 11
match access-group mac-access-list 1
set class 11 regen-priority 0 group-name qos
!
class-map 12
match access-group mac-access-list 2
set class 12 regen-priority 1 group-name qos
!
class-map 13
match access-group mac-access-list 3
set class 13 regen-priority 2 group-name qos
!
class-map 14
match access-group mac-access-list 4
set class 14 regen-priority 3 group-name qos
!
class-map 15
match access-group mac-access-list 5
set class 15 regen-priority 4 group-name qos
!
class-map 16
match access-group mac-access-list 6
set class 16 regen-priority 5 group-name qos
!
class-map 17
match access-group mac-access-list 7
set class 17 regen-priority 6 group-name qos
!
class-map 18
match access-group mac-access-list 8
set class 18 regen-priority 7 group-name qos
!
scheduler 10 interface gigabitethernet 0/1 sched-algo strict-priority
!
queue 1 interface gigabitethernet 0/1 scheduler 10
queue 2 interface gigabitethernet 0/1 scheduler 10 weight 2
queue 3 interface gigabitethernet 0/1 scheduler 10 weight 3
queue 4 interface gigabitethernet 0/1 scheduler 10 weight 4
queue 5 interface gigabitethernet 0/1 scheduler 10 weight 5
queue 6 interface gigabitethernet 0/1 scheduler 10 weight 6
queue 7 interface gigabitethernet 0/1 scheduler 10 weight 7
queue 8 interface gigabitethernet 0/1 scheduler 10 weight 8
!
end


В графе "Loss %" статистики потоков на сервере IXIA мы видим порядок обработки трафика в соответствии с весом очередей. Трафик высокоприоритетных очередей 6, 7 и 8 прошел полностью без потерь, утилизировав 900Mb/s пропускной способности интерфейса gi0/1. В очереди 5 потери составили около 70%, что соответствует оставшейся на интерфейсе полосе пропускания в 100Mb/s. Пакеты оставшихся очередей были полностью отброшены.

Теперь поменяем алгоритм работы планировщика на WRR

scheduler 10 interface gigabitethernet 0/1 sched-algo wrr

вес очередей оставим таким же, посмотрим на результат:

и начинаем считать.

Общий вес очередей 36 (1+2+3+4+5+6+7+8), в алгоритме WRR очереди с весом 8 достанется чуть больше 22% возможной полосы пропускания 8/36=0,(2), очереди с весом 1 менее 3% 1/36=0,02(7).

С учетом общей полосы пропускания интерфейса 1Gb/s, веса очередей и скорости каждой очереди 300Mb/s, получаем:

первая очередь имеет вес - 1, ей доступно 2,8% от всей полосы - около 30Mb/s, соответственно будет отброшено 300-30=270Mb/s, что соответствует ~90% потерь.
вторая очередь: вес - 2, доступно 2/36=5,5% - 55Mb/s, отброшено 245Mb/s, потерь ~81%
третья очередь: вес - 3, доступно 3/36=8,3% - 83Mb/s, отброшено 217Mb/s, потерь ~72%
четвертая очередь: вес - 4, доступно 4/36=11,1% - 111Mb/s, отброшено 189Mb/s, потерь ~63%
пятая очередь: вес - 5, доступно 5/36=13,9% - 139Mb/s, отброшено 161Mb/s, потерь ~54%
шестая очередь: вес - 6, доступно 6/36=16,7% - 167Mb/s, отброшено 133Mb/s, потерь ~44%
седьмая очередь: вес - 7, доступно 7/36=19,4% - 194Mb/s, отброшено 106Mb/s, потерь ~35%
восьмая очередь: вес - 8, доступно 8/36=22,2% - 222Mb/s, отброшено 78Mb/s, потерь ~26%

  • No labels