Поиск по этому блогу

20.07.2016

Настройка QoS на коммутаторе Cisco 3750

Работа коммутатора с отключенным QoS


Без лишней необходимости включать qos на коммутаторе не нужно. Это касается и cisco voip autoqos, в частности. Как минимум, необходимо убедиться в корректной маркировке пакетов телефонами или кодеками, иначе будет только хуже. Если qos на коммутаторе выключен:
  • с высокой вероятностью дропов на портах нет;
  • все порты доверяют меткам cos и dscp по-умолчанию;
  • для всех портов одинаковые и малоизвестные настройки очередей, где для трафика выделено от 90% полосы и буферов. Часть буферов может быть зарезервирована для network control. Передача данных с разными метками через порт коммутатора возможна на скорости близкой к скорости порта, но за счет буферизации может немного вырасти jitter;
  • возможны дропы в буфере коммутации, но это уже зависит от чипа, который использовал производитель коммутаторов. В чипе может не хватить памяти, либо он обрабатывает эту память недостаточно быстро, я не знаю наверняка. Например, в сети могут возникать т.н. микробёрсты - большой объем данных, переданных за короткое время, которые могут передаваться через гигабитный интерфейс без потерь, к примеру, а при коммутации в 100мбит/с интерфейс, куда включен ip-телефон и ПК, эти данные могут быть частично потеряны.

Работа коммутатора с включенным QoS по-умолчанию


Есть хорошее описание настройки qos для коммутатора Cisco 3750X, которое можно применить в т.ч. и к старым 3750. Если qos на коммутаторе включен и никаких предварительных настроек не проводилось:
  • порты не доверяют меткам cos или dscp;
  • начинают работать 4 исходящие очереди с одинаковыми настройками. Поскольку все метки снимаются, то весь трафик попадет в одну очередь, которая почти в 4 раза меньше той, которая была при выключенном qos.
  • с высокой вероятностью появляются дропы на портах. Их можно посмотреть командой sh int counters errors в столбце OutDiscards;
  • с буфером коммутации ситуация не поменялась, но поскольку метки сбросились, то все попадает в одну входящую очередь из двух.


Подготовка к настройке


Для маркировки трафика ip-телефонии и видеоконференцсвязи в своей работе использую dscp. Практически все устройства так или иначе поддерживают маркировки, которые можно посмотреть в таблице QoS.

Для ip-телефонии и видеоконференцсвязи часто используются следующие значения dscp:
  • 46 - ef – медиа (rtp)
  • 24 - cs3 – сигнализация (sip,h323,unistim)
  • 32 - cs4 – видео c кодеков(rtp)
  • 34 - af41 – видео с телефона, софтового клиента, кодека (rtp)
  • 0 – весь остальной трафик без маркировки.   

Для начала рекомендуется изучить вывод следующих команд и понять какой "dscp" в какую очередь попадет. Цвета добавил для понимания что к чему относится.
SWITCH#sh mls qos maps dscp-input-q
Dscp-inputq-threshold map:
d1 :d2 0 1 2 3 4 5 6 7 8 9
------------------------------------------------------------
0 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01
1 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01
2 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01
3 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01
4 : 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 01-01 01-01
5 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01
6 : 01-01 01-01 01-01 01-01

SWITCH#sh mls qos maps dscp-output-q
Dscp-outputq-threshold map:
d1 :d2 0 1 2 3 4 5 6 7 8 9
------------------------------------------------------------
0 : 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01
1 : 02-01 02-01 02-01 02-01 02-01 02-01 03-01 03-01 03-01 03-01
2 : 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01
3 : 03-01 03-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
4 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 04-01 04-01
5 : 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
6 : 04-01 04-01 04-01 04-01
Необходимо изучить параметры очередей по-умолчанию, которые придется менять или можно будет оставить по-умолчанию. Входящая очередь:
SWITCH#sh mls qos input-queue 
Queue : 1 2
----------------------------------------------
buffers : 90 10
bandwidth : 4 4
priority : 0 10
threshold1: 100 100
threshold2: 100 100
Исходящая очередь:
SWITCH#sh mls qos queue-set 1
Queueset: 1
Queue : 1 2 3 4
----------------------------------------------
buffers : 25 25 25 25
threshold1: 100 200 100 100
threshold2: 100 200 100 100
reserved : 50 50 50 50
maximum : 400 400 400 400
Здесь хочу вставить замечание о том, что таких профиля всего два и, соответственно, выбор ограничен, а значит, оборудование необходимо подключать только одного типа, например, телефоны+ПК, но никак не сервера видеонаблюдения, СХД и т.п. Если рассматривать конкретно Cisco и ее autoqos, то можно обратить внимание, как один профиль используется на пользовательских портах, а второй – на аплинках/транках.
Посмотреть текущие dscp на портах коммутатора не включая qos можно. Для этого необходимо выполнить sh mls qos interface <ifname> statistics с указанием имени интересующего интерфейса.

Настройка QoS


Цифры для настройки очередей предварительно подбираются, но за основу можно брать тот же autoqos. Никакого другого пояснения я дать не могу. Будут дропы – надо будет менять параметры. Не будет – все хорошо. Ниже в примере приоритетная первая очередь отмечена желтым цветом, вторая очередь с основным объем данных – зеленым. Сигнализация попадет в 3-ю очередь, видео - в 4-ю. Вторая очередь будет иметь максимальный процент буфера - 60.
mls qos queue-set output 1 threshold 1 150 150 90 150
mls qos queue-set output 1 threshold 2 400 400 100 400
mls qos queue-set output 1 threshold 3 150 150 90 400
mls qos queue-set output 1 threshold 4 150 150 50 400
mls qos queue-set output 1 buffers 10 60 15 15
Qos включать только тогда, когда все настройки выполнены. Если в очередях будут дропы, то нужно отключить qos, подумать, внести изменения, например, часть dscp перенести по другим очередям, поменять буферы очередей. Включение qos:
SWITCH#(config)#mls qos
При отключении qos все остальные строки конфига удалять не нужно, они не будут "работать":
SWITCH#(config)#no mls qos
Перемаркировка dscp по-умолчанию включена и необходима в случае использования политик на интерфейсе. Если отключить эту команду, то политика работать на интерфейсе не будет.
SWITCH#(config)#mls qos rewrite ip dscp
На всех интефейсах необходимо включить strict priority для 1ой очереди из dscp-output-q
SWITCH#(config-if)# priority-queue out
По-умолчанию коммутатор с включенным qos не доверяет меткам. Надо это исправить.
SWITCH#(config-if)# mls qos trust dscp

 

Маркировка трафика на примере IP-PBX


Если надо маркировать трафик, например, для сервера с ip-pbx, то сначала создаются acl, которые указываются в классах, из которых составляется политика
ip access-list extended rtp
permit udp any range 10000 20000 any
ip access-list extended signaling
permit tcp any any eq 5060
permit udp any any eq 5060
permit udp any eq 5060 any
permit tcp any eq 5060 any
permit udp any any eq 1720
permit tcp any any eq 1720

class-map match-all MARK-SIGN
match access-group name signaling
class-map match-all MARK-VOICE
match access-group name rtp
!
policy-map MARK-PBX
class MARK-VOICE
set dscp ef
class MARK-SIGN
set dscp cs3
class class-default
На интерфейсе ip-pbx нет trust dscp. Тут применяется политика для маркировки трафика.
SWITCH#sh run int gi1/0/22
interface GigabitEthernet1/0/22
description IP-PBX
switchport access vlan 100
switchport mode access
priority-queue out
spanning-tree portfast edge
spanning-tree bpdufilter enable
service-policy input MARK-PBX

SWITCH#sh mls qos interface gi1/0/22
GigabitEthernet1/0/22
Attached policy-map for Ingress: MARK-PBX
trust state: not trusted
trust mode: not trusted
trust enabled flag: ena
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
qos mode: port-based
Вот так проводится анализ маркировки входящего трафика и исходящего, осуществляется наблюдение за очередями.Остается добавить, что в этом выводе очереди нумеруются с 0 ,а не с 1. Видно, что по входу нет маркированного трафика с 24 и 46, а исходящий трафик (подчеркнул dscp 46) преимущественно промаркирован на телефонах и попадает в приоритетную очередь.
SWITCH#sh mls qos interface gi1/0/22 statistics 
GigabitEthernet1/0/22 (All statistics are in packets)

dscp: incoming
-------------------------------

0 - 4 : 7510037 0 0 0 0
5 - 9 : 0 0 0 0 0
10 - 14 : 0 0 0 0 0
15 - 19 : 0 0 0 0 0
20 - 24 : 0 0 0 0 4
25 - 29 : 0 0 0 0 0
30 - 34 : 0 0 0 0 0
35 - 39 : 0 0 0 0 0
40 - 44 : 0 0 0 0 0
45 - 49 : 0 2 0 114 0
50 - 54 : 373 0 104 0 1479
55 - 59 : 0 0 0 0 0
60 - 64 : 0 0 0 0
dscp: outgoing
-------------------------------

0 - 4 : 125576 0 0 0 0
5 - 9 : 0 0 0 0 0
10 - 14 : 0 0 932963 0 0
15 - 19 : 0 0 0 0 0
20 - 24 : 0 0 0 0 31532
25 - 29 : 0 32781 0 0 0
30 - 34 : 0 0 0 0 0
35 - 39 : 0 0 0 0 0
40 - 44 : 0 0 0 0 0
45 - 49 : 0 6364194 0 159 0
50 - 54 : 0 0 0 0 94
55 - 59 : 0 0 0 0 0
60 - 64 : 0 0 0 0
cos: incoming
-------------------------------

0 - 4 : 7512319 0 0 0 0
5 - 7 : 0 0 0
cos: outgoing
-------------------------------

0 - 4 : 125883 932963 0 64313 0
5 - 7 : 6364194 253 874
output queues enqueued:

queue: threshold1 threshold2 threshold3
-----------------------------------------------
queue 0: 6364193 0 0
queue 1: 1058845 121 23495
queue 2: 64272 0 0
queue 3: 253 0 0

output queues dropped:
queue: threshold1 threshold2 threshold3
-----------------------------------------------
queue 0: 0 0 0
queue 1: 0 0 0
queue 2: 0 0 0
queue 3: 0 0 0

Policer: Inprofile: 0 OutofProfile: 0