Рассматривается приоритезация трафика ip-телефонии и видеоконференцсвязи на коммутаторе EX2200 путем изменения дефолтовых настроек class-of-service (CoS). К коммутатору подключены ip-телефоны. Для маркировки ip-пакетов от ip-PBX и других ip-телефонов используются следующие значения dscp:
Без лишней необходимости включать qos на коммутаторе не нужно. Как минимум, необходимо убедиться в корректной маркировке пакетов телефонами или кодеками, иначе будет только хуже. Если qos на коммутаторе не настраивался:
Необходимо dscp ef и af поставить в соответствие с внутренними классами expedited-forwarding и assured-forwarding. Для этого настраивается т.н. classifiers. Можно создать и новые классы, но для примера пусть будет так. Перечислять все остальные биты dscp, как это сделано в класифире по умолчанию, смысла нет.
Итоговая конфигурация выглядит вот так:
После применения конфигурации часть фреймов будет в очередях потеряна, поэтому надо почистить счетчики и спустя короткое время проверить счетчики дропов, где значение отлично от нуля.
- 46 - ef – медиа (rtp)
- 24 - cs3 – сигнализация (sip,h323,unistim)
- 32 - cs4 – видео c кодеков(rtp)
- 34 - af41 – видео с телефона, софтового клиента, кодека (rtp)
- 0 – весь остальной трафик без маркировки.
Работа коммутатора EX2200 с дефолтовым CoS
Без лишней необходимости включать qos на коммутаторе не нужно. Как минимум, необходимо убедиться в корректной маркировке пакетов телефонами или кодеками, иначе будет только хуже. Если qos на коммутаторе не настраивался:
- с высокой вероятностью дропов на портах нет;
- все порты доверяют меткам cos и dscp по умолчанию;
- для всех портов одинаковые настройки очередей, где для всего трафика, кроме network control выделено 95% буферов. Разделение происходит по маркировке, которую можно посмотреть в настройках CoS по умолчанию.
ex2200> show class-of-service forwarding-class
Forwarding class ID Queue Policing priority SPU priority
best-effort 0 0 normal low
expedited-forwarding 1 5 normal low
assured-forwarding 2 1 normal low
network-control 3 7 normal low
ex2200> show class-of-service interface ge-0/0/1
Physical interface: ge-0/0/1, Index: 130
Queues supported: 8, Queues in use: 4
Scheduler map:, Index: 2
Congestion-notification: Disabled
Logical interface: ge-0/0/1.0, Index: 70
Object Name Type Index
Classifier ieee8021p-default ieee8021p 11
ex2200> show class-of-service classifier name ieee8021p-default
Classifier: ieee8021p-default, Code point type: ieee-802.1, Index: 11
Code point Forwarding class Loss priority
000 best-effort low
001 best-effort low
010 best-effort low
011 best-effort low
100 best-effort low
101 best-effort low
110 network-control low
111 network-control low
ex2200> show class-of-service classifier name dscp-default
Classifier: dscp-default, Code point type: dscp, Index: 7
Code point Forwarding class Loss priority
000000 best-effort low
000001 best-effort low
000010 best-effort low
000011 best-effort low
000100 best-effort low
000101 best-effort low
000110 best-effort low
000111 best-effort low
001000 best-effort low
001001 best-effort low
001010 best-effort low
001011 best-effort low
001100 best-effort low
001101 best-effort low
001110 best-effort low
001111 best-effort low
010000 best-effort low
010001 best-effort low
010010 best-effort low
010011 best-effort low
010100 best-effort low
010101 best-effort low
010110 best-effort low
010111 best-effort low
011000 best-effort low
011001 best-effort low
011010 best-effort low
011011 best-effort low
011100 best-effort low
011101 best-effort low
011110 best-effort low
011111 best-effort low
100000 best-effort low
100001 best-effort low
100010 best-effort low
100011 best-effort low
100100 best-effort low
100101 best-effort low
100110 best-effort low
100111 best-effort low
101000 best-effort low
101001 best-effort low
101010 best-effort low
101011 best-effort low
101100 best-effort low
101101 best-effort low
101110 best-effort low
101111 best-effort low
110000 network-control low
110001 network-control low
110010 network-control low
110011 network-control low
110100 network-control low
110101 network-control low
110110 network-control low
110111 network-control low
111000 network-control low
111001 network-control low
111010 network-control low
111011 network-control low
111100 network-control low
111101 network-control low
111110 network-control low
111111 network-control low
ex2200> show class-of-service code-point-aliases dscp
Code point type: dscp
Alias Bit pattern
af11 001010
af12 001100
af13 001110
af21 010010
af22 010100
af23 010110
af31 011010
af32 011100
af33 011110
af41 100010
af42 100100
af43 100110
be 000000
cs1 001000
cs2 010000
cs3 011000
cs4 100000
cs5 101000
cs6 110000
cs7 111000
ef 101110
nc1 110000
nc2 111000
ex2200> show class-of-service scheduler-map
Scheduler map:, Index: 2
Scheduler:, Forwarding class: best-effort, Index: 21
Transmit rate: 95 percent, Rate Limit: none, Buffer size: 95 percent, Buffer Limit: none, Priority: low
Excess Priority: low
Drop profiles:
Loss priority Protocol Index Name
High non-TCP 1
High TCP 1
Scheduler:, Forwarding class: network-control, Index: 23
Transmit rate: 5 percent, Rate Limit: none, Buffer size: 5 percent, Buffer Limit: none, Priority: low
Excess Priority: low
Drop profiles:
Loss priority Protocol Index Name
High non-TCP 1
High TCP 1
Настройка СoS на коммутаторе EX2200
Необходимо dscp ef и af поставить в соответствие с внутренними классами expedited-forwarding и assured-forwarding. Для этого настраивается т.н. classifiers. Можно создать и новые классы, но для примера пусть будет так. Перечислять все остальные биты dscp, как это сделано в класифире по умолчанию, смысла нет.
ex2200> show configuration class-of-service classifiersДля каждого класса необходимо настроить шедулеры:
dscp custom-dscp {
forwarding-class network-control {
loss-priority low code-points [ cs6 cs7 ];
}
forwarding-class expedited-forwarding {
loss-priority low code-points ef;
}
forwarding-class assured-forwarding {
loss-priority low code-points [ cs3 cs4 af41 ];
}
}
ex2200> show configuration class-of-service schedulersНазвания выбираются произвольно, а процент выделенных буферов - по потребностям. Для шедулеров sc-ef и sc-nc включается механизм strict-priority. Для шедулера sc-af полоса ограничивается 20мбит/с, а для sc-be - 80% от полосы интерфейса. Далее шедулеры надо поставить в соответствие с внутренними классами:
sc-ef {
buffer-size percent 10;
priority strict-high;
}
sc-af {
shaping-rate 20m;
buffer-size percent 10;
}
sc-nc {
buffer-size percent 5;
priority strict-high;
}
sc-be {
shaping-rate percent 80;
buffer-size {
remainder;
}
}
ex2200> show configuration class-of-service scheduler-mapsВ итоге, scheduler-map и classifier необходимо применить ко всем интерфейсам, описав их как шаблон, например:
custom-maps {
forwarding-class network-control scheduler sc-nc;
forwarding-class expedited-forwarding scheduler sc-ef;
forwarding-class assured-forwarding scheduler sc-af;
forwarding-class best-effort scheduler sc-be;
}
ex2200> show configuration class-of-service interfacesНа интерфейсы можно применить одинаковые или индивидуальные настройки, т.е. можно написать разные scheduler и scheduler-maps для разных интерфейсов. В этом отношении коммутаторы juniper лучше, чем cisco 2960/3750, где всего два queue-set.
ge-* {
scheduler-map custom-maps;
unit 0 {
classifiers {
dscp custom-dscp;
}
}
}
ae* {
scheduler-map custom-maps;
unit 0 {
classifiers {
dscp custom-dscp;
}
}
}
Итоговая конфигурация выглядит вот так:
ex2200> show configuration class-of-serviceПеред применением конфигурации необходимо ее проверить командой commit check. У меня возникала следующая ошибка:
classifiers {
dscp custom-dscp {
forwarding-class network-control {
loss-priority low code-points [ cs6 cs7 ];
}
forwarding-class expedited-forwarding {
loss-priority low code-points ef;
}
forwarding-class assured-forwarding {
loss-priority low code-points [ cs3 cs4 af41 ];
}
}
}
host-outbound-traffic {
forwarding-class network-control;
}
interfaces {
ge-* {
scheduler-map custom-maps;
unit 0 {
classifiers {
dscp custom-dscp;
}
}
}
ae* {
scheduler-map custom-maps;
unit 0 {
classifiers {
dscp custom-dscp;
}
}
}
}
scheduler-maps {
custom-maps {
forwarding-class network-control scheduler sc-nc;
forwarding-class expedited-forwarding scheduler sc-ef;
forwarding-class assured-forwarding scheduler sc-af;
forwarding-class best-effort scheduler sc-be;
}
}
schedulers {
sc-ef {
buffer-size percent 10;
priority strict-high;
}
sc-af {
shaping-rate 20m;
buffer-size percent 10;
}
sc-nc {
buffer-size percent 5;
priority strict-high;
}
sc-be {
shaping-rate percent 80;
buffer-size {
remainder;
}
}
}
[edit class-of-service interfaces]Это буквально означает, что нельзя указать priority "strict-high" только для 5ой очереди, когда у 7ой останется priority "low". Поэтому тут или переписать классы и изменить очередь у network-control, либо настроить для network-control priority "strict-high", что и было сделано.
'ge-*'
One or more "strict-high" priority queues have lower queue-numbers than priority "low" queues in custom-maps for ge-*. Ifd ge-* supports strict-high priority only on higher numbered queues.
error: configuration check-out failed
После применения конфигурации часть фреймов будет в очередях потеряна, поэтому надо почистить счетчики и спустя короткое время проверить счетчики дропов, где значение отлично от нуля.
clear interfaces statistics allЕсли счетчики дропов нарастают, то имеется ошибка в конфигурации. Например, если какой-то интерфейс не описан в class-of-service interfaces шаблоном или в явном виде, то трафик в классах дропнется. Ниже пример нормальной работы без потерь.
show interfaces queue | match dropped | except " 0$"
ex2200> show interfaces queue ge-0/0/22Классы можно мониторить по snmp.
Physical interface: ge-0/0/22, Enabled, Physical link is Up
Interface index: 151, SNMP ifIndex: 531
Forwarding classes: 16 supported, 4 in use
Egress queues: 8 supported, 4 in use
Queue: 0, Forwarding classes: best-effort
Queued:
Transmitted:
Packets : 320486
Bytes : 145189648
Tail-dropped packets : 0
RL-dropped packets : 0
RL-dropped bytes : 0
Queue: 1, Forwarding classes: assured-forwarding
Queued:
Transmitted:
Packets : 317
Bytes : 169479
Tail-dropped packets : 0
RL-dropped packets : 0
RL-dropped bytes : 0
Queue: 5, Forwarding classes: expedited-forwarding
Queued:
Transmitted:
Packets : 624
Bytes : 138260
Tail-dropped packets : 0
RL-dropped packets : 0
RL-dropped bytes : 0
Queue: 7, Forwarding classes: network-control
Queued:
Transmitted:
Packets : 674
Bytes : 243314
Tail-dropped packets : 0
RL-dropped packets : 0
RL-dropped bytes : 0