...
В базовом режиме на маршрутизаторах ESR классификация (направление трафика в очередь) и перемаркировка работает работают только на входе (на интерфейсе, через который поступает трафик, должен быть включен QoS).
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Включить сервис QoS на интерфейсе/туннеле/сетевом мосту. Если на интерфейсе не назначена политика QoS, то интерфейс работает в режиме BasicQoS. | esr(config-if-gi)# qos enable | |
2 | Установить режим доверия к значениям кодов 802.1p и DSCP во входящих пакетах (не обязательно). | esr(config)# qos trust <MODE> | <MODE> – режим доверия к значениям кодов 802.1p и DSCP, принимает одно из следующих значений:
|
3 | Установить соответствие между значениями кодов DSCP входящих пакетов и исходящими очередями. Данное соответствие работает на входящие пакеты интерфейса/туннеля/моста, на котором включен QOS QoS (не обязательно). | esr(config)# qos map dscp-queue <DSCP> to <QUEUE> | <DSCP> – классификатор обслуживания в IP-заголовке пакета, принимает значения [0..63]; <QUEUE> – идентификатор очереди, принимает значения [1..8]. Значения по умолчанию:
|
4 | Установить соответствие между значениями кодов 802.1p входящих пакетов и исходящими очередями. Данное соответствие работает на входящие пакеты интерфейса/туннеля/моста, на котором включен QOS QoS (не обязательно). | esr(config)# qos map cos-queue <COS> to <QUEUE> | <COS> – классификатор обслуживания в теге 802.1q пакета, принимает значения [0..7]; <QUEUE> – идентификатор очереди, принимает значения [1..8]. Значения по умолчанию:
|
5 | Установить соответствие между значениями кодов DSCP входящих пакетов и кодов DSCP на выходе из устройства (в случае необходимости перемаркировки). Данное соответствие работает на входящие пакеты интерфейса/туннеля/моста, на котором включен QoS. | esr(config)# qos map dscp-queue <DSCP> to <DSCP> | <DSCP> – классификатор обслуживания в IP-заголовке пакета, принимает значения [0..63]. |
6 | Включить изменения кодов DSCP в соответствии с таблицей DSCP-Mutation (в случае необходимости перемаркировки). | esr(config)# qos dscp mutation | |
7 | Установить номер очереди по умолчанию, в которую попадает весь трафик, кроме IP, в режиме доверия DSCP-приоритетам. | esr(config)# qos queue default <QUEUE> | <QUEUE> – идентификатор очереди, принимает значения [1..8]. |
8 | Задать количество приоритетных очередей. Оставшиеся очереди являются взвешенными (не обязательно). | esr(config)# priority-queue out num-of-queues <VALUE> | <VALUE> – количество очередей, принимает значение [0..8], где:
Приоритетные очереди выделяются, начиная с 8, в сторону уменьшения номера очереди. Значение по умолчанию: 8. |
9 | Определить вес для соответствующих взвешенных очередей. | esr(config)# qos wrr-queue <QUEUE> bandwidth <WEIGHT> | <QUEUE> – идентификатор очереди, принимает значение [1..8]; <WEIGHT> – значение веса, принимает значение [1..255]. Значение по умолчанию: вес 1 для всех очередей. |
10 | Установить ограничение скорости исходящего трафика для определенной очереди или интерфейса в целом. Команда актуальна только для BasicQoS-режима интерфейса. Ели Если трафик на входе был классифицирован при помощи расширенного QoS, ограничение не сработает (в случае необходимости ограничения скорости входящего потока). | esr(config-if-gi)# traffic-shape { <BANDWIDTH> [BURST] | | <QUEUE> – идентификатор очереди, принимает значение [1..8]; <BANDWIDTH> – средняя скорость трафика в Кбит/с, принимает значение [3000..10000000] для TengigabitEthernet-интерфейсов и [64..1000000] для прочих интерфейсов и туннелей; <BURST> – размер сдерживающего порога в Кбайт, принимает значение [4..16000]. По умолчанию 128 Кбайт. Значение по умолчанию: Отключеноотключено. |
11 | Установить ограничение скорости входящего трафика (в случае необходимости ограничения скорости исходящего потока). | esr(config-if-gi)# rate-limit <BANDWIDTH> [BURST] | <BANDWIDTH> – средняя скорость трафика в Кбит/с, принимает значение [3000..10000000] для TengigabitEthernet-интерфейсов и [64..1000000] для прочих интерфейсов и туннелей; <BURST> – размер сдерживающего порога в Кбайт, принимает значение [4..16000]. По умолчанию 128 Кбайт. Значение по умолчанию: Отключеноотключено. |
Scroll Pagebreak |
---|
Пример настройки
...
В рамках данного примера произведем расчет пропускной способности взвешенных очередей. Результаты являются примерными и могут отличаются от практических значений, т. к. не учитывают влияние влспесковвсплесков.
Scroll Pagebreak |
---|
Пример конфигурации:
Блок кода | ||
---|---|---|
| ||
hostname ESR qos wrr-queue 1 bandwidth 1 qos wrr-queue 2 bandwidth 1 qos wrr-queue 3 bandwidth 1 qos wrr-queue 4 bandwidth 1 qos wrr-queue 5 bandwidth 1 qos wrr-queue 6 bandwidth 4 qos wrr-queue 7 bandwidth 5 qos wrr-queue 8 bandwidth 6 interface gigabitethernet 1/0/1 ip firewall disable ip address 10.100.0.1/30 qos enable exit interface gigabitethernet 1/0/2 ip firewall disable ip address 10.101.0.1/30 traffic-shape 100000 512 qos enable exit |
В нашем приведенном примере настроены взвешенные очереди с соответствующими весами.
В команде qos wrr-queue 7 bandwidth 5:
- 7 - – значение очереди,
- 5 - – значение веса очереди.
На входящий интерфейс входящий интерфейс GigabitEthernet 1/0/1 "приходят" 8 поступают 8 потоков трафика с различными значениями DSCP со скорость скоростью 100 Mbps Мбит/с каждый. По умолчанию маршрутизатор доверяет кодам DSCP, и распределение по очередням очередям происходит в соответствии со следующей картыкартой:
Блок кода | ||
---|---|---|
| ||
ESR# show qos map dscp-queue d1 : d2 0 1 2 3 4 5 6 7 8 9 ------- ------------------------------- 0 01 01 01 01 01 01 01 01 02 02 1 02 02 02 02 02 02 03 03 03 03 2 03 03 03 03 04 04 04 04 04 04 3 04 04 05 05 05 05 05 05 05 05 4 06 06 06 06 06 06 06 06 07 07 5 07 07 07 07 07 07 08 08 08 08 6 08 08 08 08 |
В соответствии с этими значениями , для нашего примера, распределение будет следующим: трафик с значением DSCP 0 попадет в очередь 1, DSCP 8 → очередь 2, DSCP 16 → очередь 3, DSCP 24 → очередь 4, DSCP 32 → очередь 5, DSCP 40 → очередь 6, DSCP 48 → очередь 7 и DSCP 56 → очередь 8 соответственно.
На выходном интерфейсе (GigabitEthernet 1/0/2) настроен шейпер с полосой пропускания 100 MbpsМбит/с. Для расчета полосы пропускания каждой очереди на выходном интерфейсе необходимо выполнить следующие вычисления:1) Находим
- Найти суммарный вес всех очередей: 1+1+1+1+1+4+5+6 = 20
...
- (
...
- сложить все значения bandwidth из
...
- конфигурации);
...
- С учетом значения шейпера (100
...
- Мбит/с)
...
- найти пропускную способность
...
- очереди на единицу веса:
...
- 100/20 = 5
...
- Мбит/с;
...
Вычислить пропускную способность каждой очереди с учетом их весов:
Блок кода Очередь 1: 1 * 5 = 5 Mbps; Очередь 2: 1 * 5 = 5 Mbps; Очередь 3: 1 * 5 = 5 Mbps; Очередь 4: 1 * 5 = 5 Mbps; Очередь 5: 1 * 5 = 5 Mbps; Очередь 6: 4 * 5 = 20 Mbps; Очередь 7: 5 * 5 = 25 Mbps; Очередь 8: 6 * 5 = 30 Mbps;
Расширенный QoS
Алгоритм настройки
...
Шаг | Описание | Команда | Ключи | |
---|---|---|---|---|
1 | Создать списки доступа для определения трафика, к которому должен быть применен расширенный QoS. | См. раздел Настройка списков доступа (ACL). | ||
2 | Создать класс QoS и перейти в режим настройки параметров класса. | esr(config)# class-map <NAME> | <NAME> – имя создаваемого класса, задается строкой до 31 символа. | |
3 | Задать описание класса QoS (не обязательно). | esr(config-class-map)# description <description> | <description> – до 255 символов. | |
4 | Определить трафик, относящийся к конфигурируемому классу по списку контроля доступа (ACL). | esr(config-class-map)# match access-group <NAME> | <NAME> – имя списка контроля доступа, задаётся строкой до 31 символа. | |
5 | Задать значение кода DSCP, которое будет установлено в IP-пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями IP Precedence и CoS) (при необходимости перемаркировки). | esr(config-class-map)# match dscp <DSCP> | <DSCP> – значение кода DSCP, принимает значения [0..63]. | |
6 | Задать значение кода IP Precedence, которое будет установлено в IP-пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями DSCP и CoS) (при необходимости перемаркировки). | esr(config-class-map)# set ip-precedence <IPP> | <IPP> – значение кода IP Precedence, принимает значения [0..7]. | |
7 | Задать значение 802.1p приоритета, которое будет установлено в пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями DSCP и IP Precedence) (при необходимости перемаркировки). | esr(config-class-map)# set сos <COS> | <COS> – значение 802.1p приоритета, принимает значения [0..7]. | |
8 | Создать политику QoS и осуществить переход в режим настройки параметров политики. | esr(config)# policy-map <NAME> esr(config-policy-map)# | <NAME> – имя создаваемой политики, задается строкой до 31 символа. | |
9 | Задать описание политики QoS (не обязательно). | esr(config-policy-map)# description <description> | <description> – до 255 символов. | |
10 | Установить гарантированную полосу пропускания исходящего трафика для политики в целом. | esr(config-policy-map)# shape average { <BANDWIDTH> | percent <BANDWIDTH_PERCENT> } [BURST] | <BANDWIDTH> – гарантированная полоса трафика в Кбит/с, принимает значение [64..10000000]; <BANDWIDTH_PERCENT> – гарантированная полоса трафика в %, рассчитывается от (в порядке от более приоритетного к менее приоритетному значению):
Принимает значение [1..100]. <BURST> – размер сдерживающего порога в Кбайт, принимает значение [128..16000]. По умолчанию 128 Кбайт. | |
11 | Включить работу полисера полисера (при необходимости). | esr(config-policy-map)# police <RATE> [burst-conforming <BURST-CONFORM>] [conform-action <CONFORM-ACTION>] [exceed-action <EXCEED-ACTION>] [burst-excess <BURST-EXCEED> [violate-action <VIOLATE-ACTION>]] | <RATE> <RATE> – скорость пополнения токенами conform-корзины в Кбит/с; <BURST-CONFORM> – размер conform- размер conform корзины Байтв байтах; <BURST-EXCEED> - размер excess корзины Байт– размер excess-корзины в байтах; <VIOLATE-ACTION> - действие– действие, которое необходимо выполнить с пакетом, для которого имеются токены conform-корзины, принимает значения <CONFORM-ACTION> - действие– действие, которое необходимо выполнить с пакетом, при исчерпании токенов conform если исчерпаны токены conform-корзины, но имеются токены excess-корзины, принимает значения { permit | deny | set-cos <COS> | set-dscp <DSCP>}; <EXCEED-ACTION> - действие– действие, которое необходимо выполнить с пакетом, для которого исчерпаны токены excess-корзины, принимает значения <COS> – классификатор обслуживания в теге 802.1q пакета1q пакета, принимает значения [0..7]; <DSCP> – значение кода DSCPкода DSCP, принимает значения [0..63]. | |
12 | Включить автоматическое распределение полосы пропускания между классами, в которых нет настройки полосы пропускания, включая класс по умолчанию (в случае необходимости). | esr(config-policy-map)# shape auto-distribution | ||
13 | Включить указанный QoS-класс в политику и осуществить переход в режим настройки параметров класса в рамках политики. | esr(config-policy-map)# class <NAME> | <NAME> – имя привязываемого класса, задается строкой до 31 символа. При указании значения «class-default» в данный класс попадает трафик, не классифицированный на входе. | |
14 | Включить политику QoS в класс QoS для создания иерархического QoS. | esr(config-class-policy-map)# service-policy <NAME> | <NAME> – имя политики, задается строкой до 31 символа. Вкладываемая политика должна быть уже создана. | |
15 | Установить гарантированную полосу пропускания исходящего трафика для класса в рамках политики (при необходимости). | esr(config-class-policy-map)# shape average { <BANDWIDTH> | percent <BANDWIDTH_PERCENT> } [BURST] | <BANDWIDTH> – гарантированная полоса трафика в Кбит/с, принимает значение [64..10000000]; <BANDWIDTH_PERCENT> – гарантированная полоса трафика в %, рассчитывается от (в порядке от более приоритетного к менее приоритетному значению):
Принимает значение [1..100]. <BURST> – размер сдерживающего порога в Кбайт, принимает значение [4..16000]. По умолчанию 128 Кбайт. | |
16 | Установить разделяемую полосу пропускания исходящего трафика для определенного класса. Данную полосу класс может занять, если менее приоритетный класс не занял свою гарантированную полосу (при необходимости). | esr(config-class-policy-map)# shape peak { <BANDWIDTH> | percent <BANDWIDTH_PERCENT> } [BURST] | <BANDWIDTH> – общая для priority class полоса трафика в Кбит/с, конкуренция происходит на основании приоритета класса, принимает значение [64..10000000]; <BANDWIDTH_PERCENT> – общая для priority class полоса трафика в %, конкуренция происходит на основании приоритета класса, рассчитывается от (в порядке от более приоритетного к менее приоритетному значению):
Принимает значение [1..100]. <BURST> – размер сдерживающего порога в Кбайт, принимает значение [4..16000]. По умолчанию 128 Кбайт. | |
17 | Включить работу полисера для определенного класса (при необходимости). | esr(config-class-policy-map)# police <RATE> [burst-conforming <BURST-CONFORM>] [conform-action <CONFORM-ACTION>] [exceed-action <EXCEED-ACTION>] [burst-excess <BURST-EXCEED> [violate-action <VIOLATE-ACTION>]] | <RATE> – скорость пополнения токенами conform-корзины Кбит/с; <BURST-CONFORM> – размер conform-корзины в байтах; <BURST-EXCEED> – размер excess-корзины в байтах; <VIOLATE-ACTION> – действие, которое необходимо выполнить с пакетом, для которого имеются токены conform-корзины, принимает значения <CONFORM-ACTION> – действие, которое необходимо выполнить с пакетом, если исчерпаны токены conform-корзины, но имеются токены excess-корзины, принимает значения { permit | deny | set-cos <COS> | set-dscp <DSCP>}; <EXCEED-ACTION> – действие, которое необходимо выполнить с пакетом, для которого исчерпаны токены excess-корзины, принимает значения <COS> – классификатор обслуживания в теге 802.1q пакета, принимает значения [0..7]; <DSCP> – значение кода DSCP, принимает значения [0..63]. | |
18 | Определить режим работы класса (не обязательно). | esr(config-class-policy-map)# mode <MODE> | <MODE> – режим класса:
Значение по умолчанию: FIFO. | |
1819 | Задать приоритет класса в WRR-процессе (при необходимости). | esr(config-class-policy-map)# priority class <PRIORITY> | <PRIORITY> – приоритет класса в WRR-процессе, принимает значения [1..8]. Классы с наибольшим приоритетом обрабатываются в первую очередь. | |
1920 | Перевести класс в режим StrictPriority и задать приоритет класса (при необходимости). | esr(config-class-policy-map)# priority level <PRIORITY> | <PRIORITY> – уровень приоритета в StrictPriority-процессе, принимает значения [1..8]. Классы с наибольшим приоритетом обрабатываются в первую очередь. Значение по умолчанию: класс работает в режиме WRR, приоритет не задан. | |
2021 | Задать значение кода DSCP, которое будет установлено в IP-пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями IP Precedence и CoS) (при необходимости перемаркировки параметрами класса в рамках политики). | esr(config-class-map)# match dscp <DSCP> | <DSCP> – значение кода DSCP, принимает значения [0..63]. | |
2122 | Задать значение кода IP Precedence, которое будет установлено в IP-пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями DSCP и CoS) (при необходимости перемаркировки параметрами класса в рамках политики). | esr(config-class-map)# set ip-precedence <IPP> | <IPP> – значение кода IP Precedence, принимает значения [0..7]. | |
2223 | Задать значение 802.1p приоритета, которое будет установлено в пакетах, соответствующих конфигурируемому классу (невозможно назначать одновременно с полями DSCP и IP Precedence) (при необходимости перемаркировки параметрами класса в рамках политики). | esr(config-class-map)# set сos <COS> | <COS> – значение 802.1p приоритета, принимает значения [0..7]. | |
2324 | Определить предельное количество виртуальных очередей (не обязательно). | esr(config-class-policy-map)# fair-queue <QUEUE-LIMIT> | <QUEUE-LIMIT> – предельное количество виртуальных очередей, принимает значения в диапазоне [16..4096]. Значение по умолчанию: 16. | |
2425 | Определить предельное количество пакетов для виртуальной очереди (не обязательно). | esr(config-class-policy-map)# queue-limit <QUEUE-LIMIT> | <QUEUE-LIMIT> – предельное количество пакетов в виртуальной очереди, принимает значения в диапазоне [2..4096]. Значение по умолчанию: 127. | |
2526 | Определить параметры RED (Random Early Detection) (при необходимости). | esr(config-class-policy-map)# random-detect <LIMIT> <MIN> <MAX> <APS> <APS-NUM> <PROBABILITY> | <LIMIT> – предельный размер очереди в байтах, принимает значения в диапазоне [1..1000000]; При указании значений должны выполняться следующие правила: <MAX>> 2 * <MIN> | |
2627 | Определить параметры GRED (Generalized Random Early Detection) (при необходимости). | esr(config-class-policy-map)# random-detect queue <QUEUE-NUM> | <QUEUE-NUM> – номер очереди [1..16]; При указании значений должны выполняться следующие правила: <MAX>> 2 * <MIN> | 27 |
28 | Определить очередь по умолчанию для механизма GRED. | esr(config-class-policy-map)# random-detect queue default <QUEUE-NUM> | Данной командой определяется очередь по умолчанию для механизма GRED. Для применения данной команды предварительно необходимо настроить команду random-detect queue <QUEUE-NUM> dscp <DSCP>/precedence <0-7> <LIMIT> <MIN> <MAX> <APS> <APS-NUM> <PROBABILITY>. После применения команд random-detect queue <QUEUE-NUM> dscp <DSCP>/precedence <0-7> <LIMIT> <MIN> <MAX> <APS> <APS-NUM> <PROBABILITY> и random-detect queue default <QUEUE-NUM> поля dscp/precedence в заголовке IP-пакетов данной очереди будут игнорироваться. <QUEUE-NUM> – номер очереди [1..16]; <DSCP> – классификатор обслуживания в IP-заголовке пакета, принимает значения [0..63]; <IPP> – значение кода IP Precedence, принимает значения [0..7]; <PRECEDENCE> – значение IP Precendence [0..7]; <LIMIT> – предельный размер очереди в байтах, принимает значения в диапазоне [1..1000000]; <MIN> – минимальный размер очереди в байтах, принимает значения в диапазоне [1..1000000]; <MAX> – максимальный размер очереди в байтах, принимает значения в диапазоне [1..1000000]; <APS> – средний размер пакета в байтах, принимает значение в диапазоне [1..10000000]; <APS-NUM> – количество пакетов среднего размера, разрешенных для кратковременного пропускания, принимает значение в диапазоне [0..10000000]; <PROBABILITY> – вероятность отбрасывания пакетов, принимает значения [0..100]. | |
29 | Включить протокол компрессии tcp-заголовков для трафика отдельного класса (при необходимости). | esr(config-class-policy-map)# compression header ip tcp28 | ||
30 | Включить сервис QoS на интерфейсе/туннеле/сетевом мосту. | esr(config-if-gi)# qos enable | ||
2931 | Назначить политику QoS на сконфигурируемом интерфейсе/туннеле/сетевом мосту для классификации входящего (input) или приоритизации исходящего (output) трафика. | esr(config-if-gi)# service-policy { input | output } <NAME> | <NAME> – имя QoS-политики, задаётся строкой до 31 символа. |
...
Классифицировать приходящий трафик по подсетям (10.0.11.0/24, 10.0.12.0/24), произвести маркировку по DSCP (38 и 42) и произвести разграничение по подсетям (40 Мбит/с и 60 Мбит/с), ограничить общую полосу до 250 Мбит/с, остальной трафик обрабатывать через механизм SFQ.
...
Блок кода |
---|
esr(config)# ip access-list extended fl1 esr(config-acl)# rule 1 esr(config-acl-rule)# action permit esr(config-acl-rule)# match protocol any esr(config-acl-rule)# match source-address 10.0.11.0 255.255.255.0 esr(config-acl-rule)# match destination-address any esr(config-acl-rule)# enable esr(config-acl-rule)# exit esr(config-acl)# exit esr(config)# ip access-list extended fl2 esr(config-acl)# rule 1 esr(config-acl-rule)# action permit esr(config-acl-rule)# match protocol any esr(config-acl-rule)# match source-address 10.0.12.0 255.255.255.0 esr(config-acl-rule)# match destination-address any esr(config-acl-rule)# enable esr(config-acl-rule)# exit esr(config-acl)# exit |
Scroll Pagebreak |
---|
...
Для настройки ограничения полосы пропускания в процентах необходимо использовать команду shape average percent.
Scroll Pagebreak |
---|
Для другого трафика настраиваем класс с режимом SFQ:
...
Блок кода |
---|
esr# do show qos policy statistics gigabitethernet 1/0/20 |
Механизм работы полисера
Механизм полисера реализован в виде по алгоритму односкоростного трехцветного полисера (Single Rate Three Color Marker/Policers).
У такого механизма есть два ведра две корзины токенов (первое conform , второе и exceed), каждое каждая из которых имеет свой размер. Conform ведро наполняется токенами определенным размером -корзина наполняется токенами до определенного размера с течением времени. Ведро exceed Корзина exceed наполняется излишками токенов ведра корзины conform.
Обрабатываемый ЕСР ESR трафик забирает из корзин токены размером соотвестующим , соответствующим размеру пакета. Если размер пришедшего пакета покрывает токены ведра корзины conform, то пакет окрасится в “зелёный” «зелёный», и для пакета него применится действие соответствующие , соответствующее настройке conform-action. Если токенов в первом ведре conform-корзине не хватило, но есть достаточно токенов в ведре корзине exceed, то пакет окрасится в “жёлтый” «жёлтый», и применится действие exceed-action. Если токенов недостаточно в обоих обеих корзинах, то пакет будет окрашен в “красный” «красный», и применится действие violate-action.
Действия exceedconform-action, exceed-action, violate-action определяются одним из следющих вариантов следующих вариантов:
- пропустить (permit)
...
- ;
- отбросить (deny)
...
- ;
- пропустить и изменить cos/dscp (set cos, set dscp).