понедельник, 29 февраля 2016 г.

QoS on Cisco




Просто о сложном. Заметки для себя.
QOS НА КОММУТАТОРАХ CISCO.

ОГЛАВЛЕНИЕ
QoS на коммутаторах Cisco.
1. Функции средств контроля качества (QoS) обслуживания коммутаторов Cisco Catalyst
2. Функции обеспечения качества обслуживания входящих данных (Ingress QoS)
2.1. Конфигурации QoS по умолчанию
2.2. Классификация и маркировка
2.2.1. Классификация и маркирование на базе портов
2.2.2. Классификация — настройка доверенных портов
2.2.3. Маркировка — настройка таблиц карт качества обслуживания (MLS QOS MAP)
2.2.4. Классификация и маркировка на базе MQC
2.3. Ограничение трафика (Policing)
2.3.1. Классификация, маркирование и ограничение трафика (действие при превышении — drop)
2.3.2. Классификация, маркирование и ограничение трафика (действие при превышении - policed-dscp-transmit)
2.4. Управление и предотвращение перегрузок
2.4.1. Формирование очередей, отбрасывание пакетов и планирование загрузки — конфигурация по умолчанию
2.4.2. Формирование очередей и планирование нагрузки
3. Функции обеспечения качества обслуживания (QoS) исходящего(egress) трафика
3.1. Команды управления качеством (QoS) для исходящей очереди
3.1.1. Конфигурация по умолчанию для egress qos
3.1.2. Обработка очереди, сброс пакетов и планирование

По умолчанию, в коммутаторах Cisco Catalyst контроль качества обслуживания отключен. При отключенном QoS, все кадры и пакеты передаются через коммутатор без изменений. Например, если кадр класса обслуживания 5 и пакетом внутри кадра со значением DSCP, равным EF передается коммутатору, метки класса обслуживания CoS и DSCP не изменяются. Данные отправляются от коммутатора с теми же значениями класса обслуживания и DSCP, что и ранее. Весь трафик, включая голосовой, доставляется с самым высоким приоритетом.
ALM-3750X-SRV#sh mls qos
QoS is disabled
QoS ip packet dscp rewrite is enabled


Важно!!!

Даже не смотря на ТО, ЧТО директива «QoS ip packet dscp rewrite is enabled» говорит о том, что DSCP Rewrite работает не верьте, это не так!!!

1.    Функции средств контроля качества (QoS) обслуживания коммутаторов Cisco Catalyst

После включения режима контроля качества (QoS) обслуживания для коммутатора, некоторые функции контроля качества входной и выходной сети включаются по умолчанию. На этой диаграмме показано высокоуровневое представление архитектуры системы обеспечения качества обслуживания коммутатора:




2.    Функции обеспечения качества обслуживания входящих данных (Ingress QoS)

В этом разделе описаны различные способы настройки средств качества обслуживания. В этом разделе рассматриваются следующие темы:

·         Конфигурации QoS по умолчанию
·         Классификация и маркировка
·         Ограничение трафика (Policing)
·         Предотвращение и управление перегрузками

2.1.  Конфигурации QoS по умолчанию

Вот как коммутатор по умолчанию обрабатывает кадры после включения QoS:
·         Кадр передается порту коммутатора, и он непомечен (что означает, что порт — это access port и кадр принимается коммутатором, не обладая при этом VLAN Header dot1q).
·         Коммутатор выполняет инкапсуляцию кадра методом dot1q.
·         В состав тега кадра dot1q входят три бита, которые называются битами приоритета 802.1p или, иначе, классом обслуживания. Эти биты устанавливаются в значение 0.

·         После этого коммутатор определяет значение DSCP в соответствии с таблицей CoS-DSCP. Согласно таблице, коммутатор устанавливает значение DSCP равным 0. Значение DSCP находится в заголовке IP пакета.

2.2.    Классификация и маркировка

В коммутаторах Cisco Catalyst классификация и маркирование уровней качества обслуживания выполняется иначе, чем в маршрутизаторах. В маршрутизаторах Cisco можно классифицировать пакеты при помощи:
·         MQC
·         либо на основе значения DSCP входящего пакета
·         либо на основе списка управления доступом (ACL)
В коммутаторе Cisco Catalyst  кадры можно классифицировать:
·         либо с учетом входящих значений CoS и DSCP
·         либо на основе списка управления доступом.
Настройка по входящему значению CoS и DSCP достигается тремя различными способами:
·         Настройка каждого порта при помощи команд интерфейса mls qos
·         Настройка на основе MQC с использованием карты классов и карты политик
·         Настройка на базе VLAN
Можно использовать любой из этих методов, однако вместе использовать их нельзя.

 Например, выполнена настройка при помощи команды mls qos trust cos, для конкретного порта.
При настройке порта с использованием команды service-policy input <policy-map-name> происходит автоматическое удаление команды mls qos trust cos, .


2.2.1. Классификация и маркирование на базе портов


Иногда возникает недопонимание как осуществляется классификация и маркировка трафика для коммутаторов Cisco Catalyst, из-за того, что класс обслуживания CoS или значения DSCP (пакетов внутри кадров) перемаркируются с использованием таблиц трансформаций. Использование этих таблиц в маршрутизаторах Cisco недоступно. Функции, связанные с использованием этих таблиц, доступны только в коммутаторах Cisco Catalyst. Здесь я объясняю функции, которые предполагают использование этих таблиц.

2.2.2. Классификация — настройка доверенных портов

Входящий пакет или кадр может уже обладать меткой качества обслуживания. Могут возникнуть следующие вопросы:
·         Стоит ли доверять этой метке качества обслуживания пакета/кадра, поступившего на порт?
·         Если к порту подключен IP-телефон и ПК, каким меткам QoS нам доверять? Отправляемым с телефона, ПК или с обоих устройств?
 В этом разделе приводятся различные сценарии с примерами.
Параметры настройки доверия для порта таковы:
Switch(config-if)#mls qos trust ?
  cos            cos keyword
  device         trusted device class
  dscp           dscp keyword
  ip-precedence  ip-precedence keyword
  <cr>
Пример 1. 
Если порт представляет собой порт доступа (access port) или порт L3, необходимо настроить команду mls qos trust dscp .
Нельзя использовать команду mls qos trust cos, поскольку кадр от порта доступа или порта L3 не содержит тегов dot1q. Биты класса обслуживания CoS присутствуют только в кадрах dot1q или ISL.
interface GigabitEthernet1/0/1
 description **** Layer 3 Port ****
 no switchport
 ip address 192.168.10.1 255.255.255.0
 mls qos trust dscp
end

interface GigabitEthernet1/0/2
 description **** Access Port ****
 switchport access vlan 10
 switchport mode access
 mls qos trust dscp
end

Пример 2. 
Если используемый порт является транковым, можно настроить:
·         либо команду mls qos trust cos
·          либо mls qos trust dscp 
Таблица сопоставлений dscp-cos используется для вычисления значения класса обслуживания CoS, если порт настроен на доверие DSCP. Таким же образом, таблица сопоставлений cos-dscp используется для вычисления значения DCSP, если порт настроен на доверие классу обслуживания CoS.
interface GigabitEthernet1/0/3
description **** Trunk Port ****
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 5
switchport trunk allowed vlan 5,10,20,30,40,50
mls qos trust cos



interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 spanning-tree portfast
end
!--- Cisco IP Phone использует IEEE 802.1Q фреймы для трафика голосового VLAN.

Пример 3. 
Если порт является транковым и настроен при помощи команды mls qos trust cos, то фреймы NATIVE VLAN будут иметь нулевые значения класса обслуживания (CoS) и DSCP. Поскольку фреймы NATIVE VLAN не обладают тегами, а теги присваиваются только после попадания кадра в коммутатор, коммутатор задает значение CoS по умолчанию равным 0, а в таблице сопоставления CoS-DSCP значение DSCP также устанавливается равным 0.
Примечание: Значение DSCP пакета, получаемого в NATIVE VLAN, будет установлено равным 0.
Можно также настроить порт коммутатора на изменение нулевого значения класса обслуживания по умолчанию для нетегированных кадров на любое другое в диапазоне от 0 до 7 при помощи команды mls qos cos <0-7> .
Эта команда не изменяет значений CoS для кадров, отмеченных тегами.
Например, порт GigabitEthernet1/0/12 настроен для как access port в  VLAN 10 и передачи голосового трафика в голосовом VLAN 20.

interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 spanning-tree portfast
По умолчанию компьютер не присваивает тегов отправляемым данным. Неотмеченный тегами трафик от PC , подключенного к телефону Cisco IP Phone, проходит через телефон без изменений, вне зависимости от состояния доверия порта доступа телефона на коммутаторе.
Телефон передает маркированные кадры dot1q с идентификатором голосовой VLAN 20(VID 20). Поэтому, если порт настроен при помощи команды mls qos trust cos, он доверяет значениям класса обслуживания кадров, отправляемых с телефона (кадры, отмеченные тегами VID20), и обнуляет значения класса обслуживания кадров, передаваемых от ПК (кадры, не отмеченные тегами). Затем таблица сопоставлений CoS-DSCP обнуляет значение DSCP для пакета внутри кадра, поскольку в таблице сопоставлений значению CoS "0" соответствует значение DSCP "0".
Distribution1#show mls qos maps cos-dscp
   Cos-dscp map:
        cos:   0[SN1]   1  2  3  4  5  6  7
     --------------------------------
       dscp:   0  8 16 24 32 40 48 56


Distribution1#show mls qos maps dscp-cos
   Dscp-cos map:
     d1 :  d2 0  1  2  3  4  5  6  7  8  9
     ---------------------------------------
      0 :    00 00 00 00 00 00 00 00 01 01
      1 :    01 01 01 01 01 01 02 02 02 02
      2 :    02 02 02 02 03 03 03 03 03 03
      3 :    03 03 04 04 04 04 04 04 04 04
      4 :    05 05 05 05 05 05 05 05 06 06
      5 :    06 06 06 06 06 06 07 07 07 07
      6 :    07 07 07 07

 Если пакеты от компьютера обладают каким бы то ни было значением DSCP, то это значение будет обнулено. При настройке команды mls qos cos 3 для этого порта, будет выполнена установка значения класса обслуживания CoS всех кадров от компьютера в значение "3", однако это не изменит значение класса обслуживания CoS для кадров, передаваемых телефоном.
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 mls qos cos 3[SN2] 
!--- Эта директива работает только для непомеченного трафика поступающего на вход порта коммутатора
 spanning-tree portfast
end
Если нам необходимо переопределить значения класса обслуживания CoS для всех кадров ( как тегированных, так и нет) то нам поможет команда mls qos cos 3 override.
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 mls qos cos 3 override
!--- Эта директива переопределяет команду mls qos trust cos.

!--- Значение CoS 3 применяется для всех без исключения фреймов во всех VLAN (vlan 10 и 20).

Пример 4.
Если допустить такую ситуацию, что ПК присваивает своему кадру тег идентификатора VLAN 20, а порт сконфигурирован следующим образом:
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos

В этом случае, мы имеем следующую ситуацию. Поскольку интерфейс настроен на доверие значению класса обслуживания, весь трафик PC, получаемый через порт телефона IP Cisco Phone, проходит через телефон без изменений. Коммутатор также доверяет и пропускает трафик от ПК, предоставляя этому трафику тот же приоритет, что и трафику IP-телефона. Такая конфигурация нас явно не устроит. Этого можно избежать при помощи команды switchport priority extend cos <cos-value> .

interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 switchport priority extend cos 0
!--- Переписываем значения CoS для трафика PC в значение 0.
Команда switchport priority extend cos <cos-value> выполняет настройку IP-телефона таким образом, что в нем происходит обнуление значений класса обслуживания CoS трафика ПК.
Пример 5. 
Например, если кто-то пытается реализовать прямое подключение ПК к коммутатору и указать в кадрах dot1q данных ПК теги с более высоким значением класса обслуживания CoS, чтобы получить более приоритетное обслуживание, то тогда наша директива switchport priority extend cos 0 не будет работать, поскольку в разрыве уже нет телефона, злоумышленник подключается напрямую в порт коммутатора.Этого можно избежать при помощи указания команды mls qos trust device cisco-phone .
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****
 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos
 switchport priority extend cos 0
 mls qos trust device cisco-phone
!--- Указываем что Cisco IP Phone является единственным устройством которому мы доверяем.
Пример 6. 
Например, на интерфейсе GigabitEthernet1/0/12 необходимо настроить доверие меткам класса обслуживания CoS, передаваемых от ПК. ПК подключен к VLAN 10. В этом случае команда mls qos trust cos, не сработает, поскольку пакет, передаваемый от ПК, не содержит необходимого значения класса обслуживания CoS(он попросту не тегирован). При этом фрейм имеет  только значение DSCP. Коммутатор добавляет кадр dot1q и устанавливает значение класса обслуживания CoS по умолчанию, равное 0. Затем при помощи таблицы CoS-DSCP рассчитывается и сбрасывается в 0 значение DSCP.




Distribution1#show mls qos maps cos-dscp
   Cos-dscp map:
        cos:   0  1  2  3  4  5  6  7
     --------------------------------
       dscp:   0  8 16 24 32 40 48 56

Решить эту проблему можно двумя способами.
Первый способ — настроить классификацию и маркирование при помощи MQC. Можно создать список управления доступом (ACL) для сопоставления трафика ПК в зависимости от источника, IP-адреса назначения и исходных/целевых номеров портов. После этого можно сопоставить этот список управления доступом в карте классов. Можно создать карту политик для доверия этому типу трафика. Это решение описывается в следующем разделе. В этом разделе описывается второй метод.
Второй метод заключается в том, чтобы включить доверие метке DSCP вместо метки CoS. После этого метка DSCP-CoS используется для вычисления и установки значения класса обслуживания, которое соответствует значению DSCP.
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****

 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust dscp
 spanning-tree portfast
end
Первый метод является предпочтительным, поскольку не рекомендуется доверять всем меткам класса обслуживания трафика.


2.2.3.  Маркировка — настройка таблиц карт качества обслуживания (MLS QOS MAP)

После включения mls qos, таблицы карт создаются со значениями по умолчанию и, затем, применяются.
Distribution1#show mls qos maps cos-dscp
   Cos-dscp map:
        cos:   0  1  2  3  4  5  6  7
     --------------------------------
       dscp:   0  8 16 24 32 40 48 56
 
Distribution1#show mls qos maps dscp-cos
   Dscp-cos map:
     d1 :  d2 0  1  2  3  4  5  6  7  8  9
     ---------------------------------------
      0 :    00 00 00 00 00 00 00 00 01 01
      1 :    01 01 01 01 01 01 02 02 02 02
      2 :    02 02 02 02 03 03 03 03 03 03
      3 :    03 03 04 04 04 04 04 04 04 04
      4 :    05 05 05 05 05 05 05 05 06 06
      5 :    06 06 06 06 06 06 07 07 07 07
      6 :    07 07 07 07

Если порт настроен на доверие CoS, все входящие значения класса обслуживания становятся доверенными, а значения DSCP перемаркируются согласно таблице сопоставления класса обслуживания и DSCP. В соответствии с настройками сопоставления класса обслуживания и DSCP по умолчанию, значения сопоставляются следующим образом:
Класс обслуживания (CoS)
DSCP (десятичное)
DSCP
0
0
По умолчанию
1
8
CS1
2
16
CS2
3
24
CS3
4
32
CS4
5
40
CS5
6
48
CS6
7
56
CS7

Интересный момент, который необходимо помнить.
Например, интерфейс GigabitEthernet1/0/12 настроен на доверие CoS.
interface GigabitEthernet1/0/12
 description **** Cisco IP Phone  ****

 switchport access vlan 10
 switchport mode access
 switchport voice vlan 20
 mls qos trust cos

 spanning-tree portfast
end
Телефон Cisco IP Phone отмечает полезную нагрузку значениями CoS 5 и DSCP EF при отправке трафика на коммутатор. При входе трафика в порт Gi 1/0/12, коммутатор доверяет значению CoS. После этого, коммутатор смотрит в таблицу COS-DSCP, которая говорит ему о следующих соответствиях:
Distribution1#show mls qos maps cos-dscp
   Cos-dscp map:
        cos:   0  1  2  3  4  5  6  7
     --------------------------------
       dscp:   0  8 16 24 32 40 48 56

Т.е  сопоставляет значение DSCP CS5 (40) для значения CoS 5 из таблицы сопоставления класса обслуживания и DSCP. Весь полезный голосовой трафик с классом обслуживания 5 маркируются коммутатором значением DSCP, равным CS5. Т.е, изначально телефон промаркировал пакет значением DSCP=EF(46), а на выходе с коммутатора мы уже имеем CS5.
Использование этого значения нежелательно. Необходимое значение DSCP для полезной голосовой нагрузки — DSCP EF. По умолчанию, другие значения класса обслуживания сопоставляются значениям DSCP согласно спецификациям RFC.
Чтобы этого избежать мы можем подкорректировать таблицу сопоставления COS-DSCP, чтобы изменить значение DSCP, равное EF, таким образом, что оно соответствовало CoS 5.
Distribution1(config)#mls qos map cos-dscp 0  8 16 24 32 46 48 56
!--- Значение DSCP 46 соответсвует EF и CoS 5

Теперь взглянем на нашу карту.
ALM-3750X-SRV#sh mls qos maps cos-dscp 
   Cos-dscp map:
        cos:   0  1  2  3  4  5  6  7 
     --------------------------------
       dscp:   0  8 16 24 32 46 48 56
  
Теперь трафик телефона в голосовом VLAN, будет маркироваться теми же значениями DSCP=EF, которые выставляет телефон.  Если порт настроен на доверие DSCP, все входящие значения DSCP становятся доверенными, а значения COS перемаркируются согласно таблице сопоставления класса обслуживания и DSCP. В соответствии с настройками сопоставления DSCP и класса обслуживания по умолчанию, значения сопоставляются следующим образом:


Distribution1#show mls qos maps dscp-cos
   Dscp-cos map:
     d1 :  d2 0  1  2  3  4  5  6  7  8  9
     ---------------------------------------
      0 :    00 00 00 00 00 00 00 00 01 01
      1 :    01 01 01 01 01 01 02 02 02 02
      2 :    02 02 02 02 03 03 03 03 03 03
      3 :    03 03 04 04 04 04 04 04 04 04
      4 :    05 05 05 05 05 05 05 05 06 06
      5 :    06 06 06 06 06 06 07 07 07 07
      6 :    07 07 07 07
 
В этом случае не требуется изменять эти значения по умолчанию!!!
Примечание: В одной сети все коммутаторы Cisco Catalyst должны обладать идентичными таблицами сопоставлений. Наличие различных таблиц в разных коммутаторах приведет к нежелательным последствиям!!!


В разделе "Классификация и маркирование" описывается метод классификации и маркировки при помощи MQC. Вместо настройки для каждого порта можно использовать MQC. Можно также маркировать входящие пакеты при помощи карты политик.
Требования в этом примере таковы:
·         Необходимо установить доверие к значениям CoS трафика, передаваемого IP телефоном.
·         Необходимо пометить значение DSCP для пакетов программного приложения на ПК, подключенного к IP-телефону значением AF21.
·         Отключить доверительное отношение ко всему другому трафику идущего с ПК.
На диаграмме ниже показана карта политик, закрепленная на входном интерфейсе коммутатора. Нельзя применить карту политик к исходящему трафику любого интерфейса коммутатора Catalyst. В этом разделе не уделено особого внимания той составляющей функции обеспечения контроля качества, которая основывается на очередях. Раздел посвящен MQC, который применяется для интерфейса.





 [SN1]В таблице сопоставлений значению CoS "0" соответствует значение DSCP "0".



 [SN2]Эта директива работает только для непомеченного трафика поступающего на вход порта коммутатора

Комментариев нет:

Отправить комментарий