Заметки по QoS(Cisco). Классификация трафика .

Usupovman
5 min readApr 23, 2021

--

классификация трафика может осуществляется на основании :

  • меток
  • адресации
  • сигнатур приложений (DPI )

Обычно на границе домена, производится классификация трафика , а затем маркировка, последующие устройства доверяют данной маркировке .

Маркировка может производится как на канальном уровне(L2) так и на сетевом(L3)

Маркировка на L2

В обычном ethernet кадре нет возможности маркировки , зато она появилась в 802.1Q( а точнее в 802.1P). В общем в заголовке 802.1Q, который несет в себе информацию о VLAN ID, предусмотрено поле User Priority или второе более позднее название CoS (Class of Service) состоящее из 3-х бит.

Эти три бита могут принимать значение от 0 до 7, соответственно у нас появляется 8 классов трафика с разным приоритетом обслуживания. Стандарт 802.1P предлагает следующую таблицу маркировки и классификации трафика:

Маркировка на L3

В заголовке IP пакета имеется специальное поле TOS для определения приоритета пакета, в RFC 791 оно определено так :

Bits 0-2:  Precedence.
Bit 3: 0 = Normal Delay, 1 = Low Delay.
Bits 4: 0 = Normal Throughput, 1 = High Throughput.
Bits 5: 0 = Normal Relibility, 1 = High Relibility.
Bit 6-7: Reserved for Future Use.

0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+

Precedence

111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine

Позже в RFC 1349 это поле слегка переопределили . В общем у нас есть три бита , которые используются для определения приоритета пакета или IP Precedence, использование остальных битов не получило популярности. И наконец в RFC 2474 еще раз было переопределено использование битов поля TOS , теперь для выставления приоритета пакета выделялось 6 битов DSCP вместо трех битов IPP.

0     1     2     3     4     5     6     7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | |
| DSCP | 0 | 0 |
| | | |
+-----+-----+-----+-----+-----+-----+-----+-----+

DSCP: differentiated services codepoint
Последние два бита поля TOS все еще не используются !

Все 6 бит DSCP администратор может использовать, как ему заблагорассудится, разделяя максимум до 64 классов сервиса.
Однако в угоду совместимости с IP Precedence за первыми тремя битами сохранили роль Class Selector. То есть, как и в IPP, 3 бита Class Selector позволяют определить 8 классов. И того получаем такую картину :

        0     1     2     3     4     5     6     7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | |
| Class Selector | Drop Precedence | 0 | 0 |
| | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+

Таким образом первые три бита (Class Selector) определяют класс пакета , следующие три бита(Drop Precedence) приоритет отбрасывания пакета. Причем чем выше значение Class selector , тем к более приоритетному классу принадлежит пакет, и напротив чем больше значение Drop Precendence , тем выше вероятность что пакет отбросят . То есть чем больше Class selector тем лучше , чем меньше Drop precendence тем лучше(меньше вероятность что пакет дропнут). Суммируя все сказанное получаем такую таблицу :

Обратили внимание что количество значений в таблице меньше чем 64, дело в том что это популярный и удобный способ представления значений DSCP, который использует не все возможные варианты, а лишь некоторые подробнее о них ниже , но если вдруг кому понадобится использовать больше вариантов , то в этом нет проблем, при конфигурации можно так же указать десятичное значение dscp от 0 до 63.

Class Selector

Как уже было сказано их для DSCP всего 8, столько же сколько и у IP Prcendence. Это CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7. У Class selector последние три бита равны 0(биты 3–5).

Assured Forwarding

Как только вы начинаете указывать 3–4 биты в рамках CS начиная с первого CS1 (001xx0) и заканчивая CS4 (100xx0) включительно, появляются 4 новых подтипа пересылки пакетов — Assured Forwarding (AF) — AF1–AF4 . RFC 2597 (Assured Forwarding PHB Group).

EF — Expedited Forwarding
Экстренная пересылка.
Это модель для приложений, которым нужны отсутствие потерь, короткие задержки, стабильный джиттер, но они не жадные до полосы. Как, например, телефония.
RFC 3246 (An Expedited Forwarding PHB).

DF — Default Forwarding
Стандартная пересылка.
Если классу трафика не назначена модель поведения специально, он будет обрабатываться именно по Default Forwarding.
Это Best Effort — устройство сделает всё возможное, но ничего не гарантирует. Возможны отбрасывания, разупорядочивание, непредсказуемые задержки и плавающий джиттер и.т.д.
Такая модель подходит для нетребовательных приложений, вроде почты или загрузки файлов. Одновременно такая категория default является и первым class selector’ом (CS) — CS0

MQC. Модульный подход для настройки QOS.

В MQC настройка QOS осуществляется в три этап , создание class-map (этап классификации трафика) , создание Policy-map(этап создания политик для различных классов трафика) , применение Policy-map на интерфейсе . Классификацию можно осуществлять на основании многих параметров, и на разных сетевых уровнях .

в class-map мы указываем что будем матчить, для примера :

ip access-list extended ICMP_ACL
permit icmp any any
class-map match-all ICMP_CLASS_MAP
match access-group name ICMP_ACL
class-map match-all HTTP_CLASS_MAP
match protocol http
class-map match-all TORRENT_CLASS_MAP
match protocol bittorent

Трафик можно матчить двумя способами с использованием двух команда class-map match-all либо команда class-map match-any , all означает использование логической операции and между правилами , any — означает использование логической операции or.

Далее в policy-map указываем действие которое будет производиться с классифицированным трафиком :

policy-map TEST
class ICMP_CLASS_MAP
set ip dscp ef
class HTTP_CLASS_MAP
bandwidth percent 50
class TORRENT_CLASS_MAP
bandwidth percent 30

в примере выше мы задали минимальную гарантированную ширину для разных классов трафика , команда bandwidth в данном случае не ограничивает скорость физического или логического интерфейса, а лишь резервирует минимальную полосу пропускания в случае возникновения перегрузки интерфейса. Если интерфейс не испытывает перегрузки трафиком , то ширина полосы для указанных классов будет больше. Так же мы маркируем трафик, который подпадает под условия ACL( в примере это ICMP трафик) меткой ef .

Применяем политику на выбранном интерфейсе на вход или выход:

interface GigabitEthernet1
service-policy output TEST

Просмотреть результат применённой политики можно с помощью команды :

show policy-map interface GigabitEthernet1

--

--