Приоритизация трафика

QoS позволяет приоритизировать поток данных, передаваемый по каналам связи IP, обеспечивая трафик необходимым сервисом обслуживания в соответствии с заданными техническими рамками.

Общие принципы работы

Для работы QoS в ARMA Стена необходимо соблюдать следующую последовательность действий:

  • создать политику обработки трафика;

  • применить политику обработки трафика к входящему или исходящему интерфейсу.

После настройки QoS система автоматически начинает регистрировать события в трёх направлениях:

  • журналирование команд tc;

  • регистрация изменений конфигурации QoS;

  • мониторинг текущего состояния QoS.

Для просмотра в консоли событий, связанных с изменениями конфигурации QoS и командами tc в глобальном журнале, возможно использовать утилиту «grep», указав следующий шаблон: «show logging | grep -E "\sngfwos\s+qos(\[|:)"». Команда выполняется из УЗ суперпользователя:

admin@ngfwos:~$ sudo -i
root@ngfwos:~# show logging | grep -E "\sngfwos\s+qos(\[|:)"

Записи об изменениях конфигурации QoS в глобальном журнале возможно просмотреть в консоли, выполнив в эксплуатационном режиме команду «show logging users».

Единицы измерения

При настройке политики обработки трафика необходимо задавать скорость передачи данных. ARMA Стена оперирует следующими префиксами и суффиксами единиц измерения скорости передачи данных:

  1. Префиксы – возможно указать в десятичном или двоичном формате:

    • десятичный формат:

      • «1kbit» = 103 бит – килобит;

      • «1mbit» = 106 бит – мегабит;

      • «1gbit» = 109 бит – гигабит;

      • «1tbit» = 1012 бит – терабит;

      • «1kbps» = 103 * 8 бит – килобайт в секунду;

      • «1mbps» = 106 * 8 бит – мегабайт в секунду;

      • «1gbps» = 109 * 8 бит – гигабайт в секунду;

      • «1tbps» = 1012 * 8 бит – терабайт в секунду;

    • двоичный формат:

      • «1kibit» = 210 = 1024 бит – кибибит;

      • «1mibit» = 220 = 10242 бит – мебибит;

      • «1gibit» = 230 = 10243 бит – гибибит;

      • «1tibit» = 240 = 10244 бит – тебибит;

      • «1kibps» = 1024 * 8 бит – кибибайт в секунду;

      • «1mibps» = 10242 * 8 бит – мебибайт в секунду;

      • «1gibps» = 10243 * 8 бит – гибибайт в секунду;

      • «1tibps» = 10244 * 8 бит – тебибайт в секунду.

  2. Суффиксы – указываются в битах или байтах:

    • «bit» – краткое обозначение битов:

      • «kbit» – килобит в секунду;

      • «mbit» – мегабит в секунду;

      • «gbit» – гигабит в секунду;

      • «tbit» – терабит в секунду;

    • «b» – краткое обозначение байтов:

      • «kbps» – килобайт в секунду;

      • «mbps» – мегабайт в секунду;

      • «gbps» – гигабайт в секунду.

Классы

QoS позволяет классифицировать трафик в соответствии с заданными параметрами.

Для определения, к какому классу относится трафик, необходимо установить критерии соответствия. Пакет ассоциируется с определённым классом в том случае, если обнаруживается правило с подходящим классификатором.

Каждый класс обладает числовым идентификатором, который задаётся в процессе его настройки. Классу возможно назначить несколько классификаторов. Классификатор содержит множественные критерии соответствия. Трафик считается подошедшим, если все установленные критерии выполняются одновременно.

Для классификации трафика возможно использовать следующие параметры:

  • «ether» – протокол. Возможно указать следующие параметры для классификации:

    • MAC-адрес отправителя;

    • MAC-адрес получателя;

  • «interface» – имя интерфейса;

  • «ip» – протокол IPv4. Возможно указать следующие параметры для классификации:

    • метка DSCP;

    • максимальная длина тела пакета;

    • протокол, IPv4-адрес отправителя;

    • IPv4-адрес получателя;

    • номер порта отправителя;

    • номер порта получателя;

    • флаги TCP;

  • «ipv6» – протокол IPv6. Возможно указать следующие параметры для классификации:

    • метка DSCP;

    • максимальная длина тела пакета;

    • протокол;

    • IPv6-адрес отправителя;

  • «mark» – метка межсетевого экрана;

  • «vif» – идентификатор VLAN-интерфейса.

При задании классификатора возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметрах команды (см. Рисунок – Доступные параметры команды).

../../../../../_images/ngfw.r.cli.service.qos_1.2.1.png

Рисунок – Доступные параметры команды

Примечание

Классификатор с установленным параметром «IPv4» – «TCP» соответствует IPv4-пакетам с длиной заголовка 20 байт.

Классификатор с установленным параметром «IPv6» – «TCP» соответствует IPv6-пакетам, не имеющим расширенных заголовков.

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

Группы совпадений трафика

Группы совпадений трафика (traffic-match-group) используются для объединения нескольких правил классификации пакетов в одну логическую группу, для дальнейшего ее применения в политиках QoS (например, в классах шейпера или очередях). Группы совпадений позволяют:

  • логически объединять несколько критериев классификации трафика (например, несколько значений DSCP);

  • повторно использовать набор правил в разных QoS-классах или политиках;

  • централизованно управлять фильтрами (изменение группы автоматически влияет на все места, где она используется).

Для создания группы необходимо ввести команду:

set qos traffic-match-group <group_name>

где <group_name> – уникальный идентификатор группы.

Для создания описания группы необходимо ввести команду:

set qos traffic-match-group <group_name> description <text>

где <text> – описание группы.

Для указания идентификатора правила классификации трафика для группы необходимо ввести команду:

set qos traffic-match-group <group_name> match <match_name>

где <match_name> – идентификатор правила классификации трафика.

В качестве идентификатора правила классификации трафика возможно указать значения, представленные в таблице (см. Таблица «Идентификаторы правила классификации трафика»).

Таблица «Идентификаторы правила классификации трафика»

Значение

Значение

Значение

Значение

AF11

AF33

CS4

immediate

AF12

AF41

CS5

internet

AF13

AF42

CS6

lowdelay

AF21

AF43

CS7

network

AF22

critical

default

priority

AF23

CS1

EF

reliability

AF31

CS2

flash

throughput

AF32

CS3

flash-override

При задании параметров группы возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметрах команды (см. Рисунок – Доступные параметры команды).

../../../../../_images/ngfw.r.cli.service.qos_1.3.1.png

Рисунок – Доступные параметры команды

Предупреждение

При задании параметров идентификатора правила классификации не допускается совместное использование IPv4 и IPv6 протоколов в рамках одной группы.

Для наследования параметров существующей группы необходимо ввести следующую команду:

set qos traffic-match-group <group_name> match-group <inh_group_name>

где <inh_group_name> – уникальный идентификатор группы, из которой наследуются параметры.

Пример настройки групп совпадений трафика с политикой «shaper»:

set qos interface eth2 egress vyos3
set qos policy shaper vyos3 bandwidth 100mbit
set qos policy shaper vyos3 class 10 bandwidth 50%
set qos policy shaper vyos3 class 10 match-group VOICE
set qos policy shaper vyos3 class 10 priority 1
set qos policy shaper vyos3 class 10 queue-type fair-queue
set qos policy shaper vyos3 class 20 bandwidth 30%
set qos policy shaper vyos3 class 20 match-group REAL_TIME
set qos policy shaper vyos3 class 20 priority 2
set qos policy shaper vyos3 class 20 queue-type fair-queue
set qos policy shaper vyos3 default bandwidth 50mbit
set qos policy shaper vyos3 default ceiling 100%
set qos policy shaper vyos3 default queue-type fair-queue
set qos traffic-match-group REAL_TIME match CS6 ip dscp CS6
set qos traffic-match-group VOICE match EF ip dscp EF

Создание политики обработки трафика

ARMA Стена поддерживает следующие политики обработки трафика:

  • «Drop Tail»;

  • «Fair Queue»;

  • «FQ-CoDel»;

  • «Limiter»;

  • «Network Emulator»;

  • «Priority Queue»;

  • «Random Detect»;

  • «Rate Control»;

  • «Round Robin»;

  • «Shaper»;

  • «Cake».

Возможно настроить любое количество политик, но для каждого интерфейса, входящего или исходящего с учётом направления трафика, применима только одна политика.

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

Если необходимо выбрать политику для исходящего трафика, но при этом неизвестно, какая именно политика необходима в конкретном случае, рекомендуется использовать политику «Shaper», оставив по умолчанию встроенную в её очереди политику «FQ-CoDel».

Drop Tail

Порядок организации трафика: PFIFO.

Применение к направлению трафика: исходящий трафик.

Drop Tail – наиболее простой механизм управления очередью – отбрасываются все вновь пришедшие пакеты, не помещающиеся в буфер. Политика требует наименьших ресурсов, но используется крайне редко вследствие неэффективной обработки трафика.

Для настройки фильтрации трафика по алгоритму Drop Tail необходимо ввести команду:

set qos policy drop-tail <policy-name> queue-limit <number-of-packets>

где:

  • <policy-name> – уникальное имя политики;

  • <number-of-packets> – размер очереди, измеряемый в пакетах. Допустимые значения в диапазоне от «1» до «4294967295».

Fair Queue

Порядок организации трафика: SFQ.

Применение к направлению трафика: исходящий трафик.

Fair Queue – планировщик пакетов, который распределяет пакеты по очередям на основе потоков. Он балансирует трафик в равной степени между дочерними очередями, чтобы пакеты из каждого потока отправлялись строго по очереди, не позволяя таким образом одному потоку преобладать над другими.

Для создания фильтрации трафика по алгоритму «Fair Queue» необходимо ввести команду:

set qos policy fair-queue <policy-name>

где <policy-name> – уникальное имя политики.

Для распределения трафика по очередям «Fair Queue» использует классификатор, основанный на адресе отправителя, адресе получателя и номере порта отправителя. Алгоритм распределения использует специальные хеш-блоки. Каждый пакет должен принадлежать уникальному потоку. Поскольку несколько потоков могут попасть в один хеш-блок, алгоритм хеширования задействуется через настраиваемые интервалы времени. Рекомендуемое значение временного интервала составляет «10» секунд.

Для установки времени, через которое будет задействован алгоритм хеширования необходимо ввести команду:

set qos policy fair-queue <policy-name> hash-interval <seconds>

где <seconds> – время в секундах. Допустимые значения в диапазоне от «1» до «4294967295».

При завершении очереди каждый хеш-блок с данными используется в кольцевом порядке следования. Возможно сконфигурировать длину очереди, используя параметр «queue-limit» в следующей команде:

set qos policy fair-queue <policy-name> queue-limit <limit>

где <limit> – максимальное количество пакетов, ожидающих обработки в очереди. Допустимые значения в диапазоне от «1» до «127».

Fair Queue – политика без шейпинга, используется только в случае, если исходящий интерфейс действительно перегружен трафиком. Если в канале есть доступная для использования полоса пропускания, то существует возможность встроить «Fair Queue» в политику с шейпингом на основе классов.

FQ-CoDel

Порядок организации трафика: Fair/Flow Queue CoDel.

Применение к направлению трафика: исходящий трафик.

Политика «FQ-CoDel» направлена на борьбу с переполнением буфера и на снижение задержек.

Политика использует стохастическую модель распределения для классификации входящих пакетов на различные потоки и применяется для обеспечения равных долей пропускной способности всем потокам. Каждый поток обрабатывается в соответствии с дисциплиной CoDel. Переупорядочение пакетов в составе потока исключено, поскольку дисциплина CoDel использует внутреннюю очередь FIFO.

Политика «FQ-CoDel» позволяет эффективное использование с параметрами по умолчанию на скорости 10 Гбит/сек.

При скорости 1 Гбит/сек и ниже рекомендуется снизить значение параметра «queue-limit» до «1000» пакетов или меньше.

При скорости 10 Мбит/сек рекомендуется установить значение параметра «queue-limit» в «600» пакетов.

При скорости 100 Мбит/сек и выше, если политика «FQ-CoDel» встроена в политику «Shaper», рекомендуется установить значение параметра «quantum» в «8000» байт для снижения нагрузки на процессор.

При скорости менее 40 Мбит/сек рекомендуется уменьшить значение параметра «quantum» до «300» байт.

При скорости менее 3 Мбит/сек рекомендуется: уменьшить значение параметра «quantum» до «300» байт; увеличить значение параметра «target» до «15» миллисекунд и увеличить значение параметра «interval» до «150» миллисекунд.

Список команд настройки «FQ-CoDel»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «FQ-CoDel»:

set qos policy fq-codel <policy name>
  1. Команда установки максимального количества байт, извлекаемых из очереди за один раз:

set qos policy fq-codel <policy name> codel-quantum <bytes>

где <bytes> – количество байт. Допустимые значения в диапазоне от «0» до «1048576». По умолчанию используется значение «1514».

  1. Команда установки количества дочерних очередей, в которые будут помещаться классифицированные пакеты:

set qos policy fq-codel <policy name> flows <number-of-flows>

где <number-of-flows> – значение количества дочерних очередей. Допустимые значения в диапазоне от «1» до «65536». По умолчанию используется значение «1024».

  1. Команда установки периода времени, используемого управляющим циклом CoDel:

set qos policy fq-codel <policy name> interval <miliseconds>

где <miliseconds> – значение периода времени в миллисекундах. Допустимые значения в диапазоне от «0» до «4294967295». По умолчанию используется значение «100».

Период времени необходим для обнаружения устоявшихся очередей и исключения значительного увеличения минимально определённой задержки.

  1. Команда установки предельного размера очереди:

set qos policy fq-codel <policy-name> queue-limit <number-of-packets>

где <number-of-packets> – значение предельного размера очереди в пакетах. Допустимые значения в диапазоне от «2» до «10999». По умолчанию используется значение «1024».

При достижении предельного размера все новые пакеты отбрасываются.

  1. Команда установки минимально допустимой задержки в ожидающей/устоявшейся очереди:

set qos policy fq-codel <policy-name> target <miliseconds>

где <miliseconds> – значение минимально допустимой задержки в миллисекундах. Допустимые значения в диапазоне от «0» до «4294967295». По умолчанию используется значение «5».

Limiter

Порядок организации трафика: Ingress Policer.

Применение к направлению трафика: входящий трафик.

Политика «Limiter» подразумевает простое ограничение входящих потоков трафика. Возможно определить несколько классов трафика и применить к каждому классу свои ограничения. Механизм не имеет возможность удерживать пакеты, как это делает механизм «shaper». Трафик, превышающий установленные ограничения полосы пропускания, отбрасывается.

Допускается настроить до 4090 классов с различными настройками и политикой по умолчанию, которая будет применяться к любому трафику, не соответствующему ни одному из настроенных классов.

Список команд настройки «Limiter»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Limiter»:

set qos policy limiter <policy-name>
  1. Команда установки числового идентификатора класса:

set qos policy limiter <policy-name> class <class id>

где <class id> – значение идентификатора класса. Допустимые значения в диапазоне от «1» до «4090».

  1. Команда, устанавливающая имя и описание для правила в указанном классе:

set qos policy limiter <policy-name> class <class ID> match <match-name> description <description>

где:

  • <match-name> – имя правила;

  • <description> – описание правила.

  1. Команда установки максимально допустимой полосы пропускания для класса:

set qos policy limiter <policy-name> class <class-ID> bandwidth <number>

где <number> – значение максимально допустимой полосы пропускания.

Возможные варианты указания значения максимально допустимой полосы пропускания (см. Рисунок – Limiter. Допускаемые единицы измерения полосы пропускания):

  • без указания единиц измерения – используются биты в секунду;

  • «bit» – бит в секунду;

  • «kbit» – килобит в секунду;

  • «mbit» – мегабит в секунду;

  • «gbit» – гигабит в секунду;

  • «tbit» – терабит в секунду;

  • «%» – процент от скорости соединения интерфейса.

../../../../../_images/ngfw.r.cli.service.qos_2.4.1.png

Рисунок – Limiter. Допускаемые единицы измерения полосы пропускания

  1. Команда установки размера всплеска трафика для класса:

set qos policy limiter <policy-name> class <class-ID> burst <burst-size>

где <burst-size> – значение размера всплеска трафика в байтах. По умолчанию используется значение «15».

Допускается указывать размер всплеска трафика в байтах, килобайтах, мегабайтах, гигабайтах (см. Рисунок – Допускаемые единицы измерения размера всплеска трафика).

../../../../../_images/ngfw.r.cli.service.qos_2.4.2.png

Рисунок – Допускаемые единицы измерения размера всплеска трафика

  1. Команда установки приоритета правила:

set qos policy limiter <policy-name> class <class ID> priority <value>

где <value> – значение приоритета, при котором выполняется оценка правила (чем меньше число, тем выше приоритет). Допустимые значения в диапазоне от «0» до «20». По умолчанию используется значение «20».

Для обработки входящего трафика на интерфейсе возможно применить только одну политику – политика Limiter. Отсутствует возможность применения политики «shaper» ко входящему трафику на любом интерфейсе, поскольку «shaper» работает исключительно для исходящего трафика.

Существует сценарий, позволяющий применить политику «shaper» ко входящему трафику, перенаправив его на промежуточный виртуальный интерфейс «Intermediate Functional Block». К этому виртуальному интерфейсу возможно применить любую политику, которая работает для исходящего трафика (см. «Ограничение скорости c использованием Intermediate Functional Block»).

Примечание

Механизм «Intermediate Functional Block» необходимо настроить после установки параметров конфигурации политики обработки трафика. В противном случае возникнет ошибка «RTNETLINK answer: File exists». Для исправления этой ошибки необходимо ввести команду «sudo ip link delete ifb0».

Network Emulator

Порядок организации трафика: Network Emulator + Token Bucket Filter.

Применение к направлению трафика: исходящий трафик.

Политика «Network Emulator» имитирует условия эксплуатации реальной сети. Политика позволяет сконфигурировать следующие параметры:

  • пропускную способность;

  • всплеск трафика;

  • задержку при передаче данных;

  • процент потери пакетов;

  • неправильные пакеты или пакеты с нарушением порядка следования.

Данная политика используется для определения поведения приложения в конкретных условиях эксплуатации сети.

Список команд настройки «Network Emulator»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Network Emulator»:

set qos policy network-emulator <policy-name>
  1. Команда установки пропускной способности для политики фильтрации трафика:

set qos policy network-emulator <policy-name> bandwidth <number>
  1. Команда установки задержки пакетов, отправляемых из интерфейса:

set qos policy network-emulator <policy-name> delay <delay>

где <delay> – значение времени задержки пакета в миллисекундах. По умолчанию используется значение «50».

  1. Команда установки в процентном соотношении количества неправильных пакетов:

set qos policy network-emulator <policy-name> corruption <percent>

где <percent> – значение неправильных пакетов в процентах.

В случайном порядке для выбранного процента пакетов вводится случайная ошибка.

  1. Команда установки допустимых потерь пакетов:

set qos policy network-emulator <policy-name> loss <percent>

где <percent> – значение допустимой потери пакетов в процентах.

  1. Команда установки количества пакетов с нарушенным порядком следования:

set qos policy network-emulator <policy-name> reordering <percent>

где <percent> – количество пакетов с нарушенным порядком следования в процентах.

  1. Команда для установки максимального числа пакетов, которые одновременно находятся в очереди:

set qos policy network-emulator <policy-name> queue-limit <limit>

где <limit> – количество пакетов в очереди. Возможно использовать значение в диапазоне от «1» до «4294967295».

Priority Queue

Порядок организации трафика: PRIO.

Применение к направлению трафика: исходящий трафик.

Политика «Priority Queue» является классовой политикой планирования. При использовании данной политики пакеты не задерживаются, а удаляются из очередей в соответствии с заданным приоритетом. «Priority Queue» не является политикой с шейпингом.

Возможно настроить до 7 очередей, которые определяются как классы с различными приоритетами. Пакеты помещаются в очереди в соответствии с заданным классификатором. Пакеты передаются из очередей в порядке приоритета. Если классы с высоким приоритетом заполняются пакетами, пакеты из классов с пониженным приоритетом будут передаваться только после уменьшения объёма трафика из классов с более высоким приоритетом.

Примечание

Политика «Priority Queue» предусматривает задание числового идентификатора класса для обозначения приоритета от «1» до «7». Чем ниже значение, тем выше приоритет.

«Priority Queue» позволяет определить различные типы соответствующих классам правил:

  • «ether» – соответствие протоколам Ethernet;

  • «interface» – идентификатор интерфейса;

  • «ip» – соответствие протоколу IPv4;

  • «ipv6» – соответствие протоколу IPv6;

  • «mark» – соответствие по метке, установленной брандмауэром;

  • «vif» – идентификатор виртуальной локальной сети.

В «Priority Queue» возможно встраивать другие политики в классы, включая класс по умолчанию, с помощью параметра «queue-type» (см. Рисунок – Доступные параметры команды):

admin@ngfwos# set qos policy priority-queue <policy-name> class <class-id> queue-type
../../../../../_images/ngfw.r.cli.service.qos_2.6.1.png

Рисунок – Доступные параметры команды

По умолчанию используется значение «drop-tail».

Список команд настройки «Priority Queue»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Priority Queue»:

set qos policy priority-queue <policy-name>
  1. Команда установки числового идентификатора класса:

set qos policy priority-queue <policy-name> class <class-id>

где <class id> – значение идентификатора класса. Допустимые значения в диапазоне от «1» до «7».

  1. Команда установки максимально допустимого размера очереди:

set qos policy priority-queue <policy-name> class <class-id> queue-limit <limit>

где <limit> – размер очереди. Допустимые значения в диапазоне от «1» до «4294967295».

При достижении ограничения новые пакеты отбрасываются.

Random-Detect

Порядок организации трафика: Generalized Random Early Drop.

Применение к направлению трафика: исходящий трафик.

При использовании политики «Random-Detect» пакеты случайным образом отбрасываются из очереди перед тем, как она будет заполнена. Политика «Random-Detect» не является политикой с шейпингом. В отличие от стандартной дисциплины RED, политика «Random-Detect» использует обобщённую политику случайного раннего обнаружения, которая предоставляет различные виртуальные очереди в зависимости от значения приоритета IP. Благодаря этому некоторые виртуальные очереди могут пропускать больше пакетов, чем другие. Это достигается за счёт использования первых трёх бит поля «ToS» для классификации потоков данных и принятия решения в соответствии с заданными параметрами приоритета IP.

Уровни приоритета, определённые в «RFC 791» (см. Таблица «Уровни приоритета»).

Таблица «Уровни приоритета»

Уровень

Имя

7

Network Control

6

Internetwork Control

5

CRITIC/ECP

4

Flash Override

3

Flash

2

Immediate

1

Priority

0

Routine

Список команд настройки «Random-Detect»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Random-Detect»:

set qos policy random-detect <policy-name>
  1. Команда установки пропускной способности для политики фильтрации трафика «Random-Detect»:

set qos policy random-detect <policy-name> bandwidth <number>

Значение должно соответствовать полосе пропускания сетевого интерфейса.

  1. Команда установки значения приоритета IP:

set qos policy random-detect <policy-name> precedence <IP-precedence-value>

где <IP-precedence-value> – значение приоритета IP. Допустимые значения в диапазоне от «0» до «7». Чем больше значение приоритета, тем выше приоритет.

  1. Команда установки среднего размера пакета:

set qos policy random-detect <policy-name> precedence <IP-precedence-value> average-packet <bytes>

где <bytes> – значение размера пакета в байтах. Допустимые значения в диапазоне от «16» до «10240». По умолчанию используется значение «1024».

  1. Команда установки вероятности отбрасывания пакетов:

set qos policy random-detect <policy-name> precedence <IP-precedence-value> mark-probability <value>

где <value> – значение «N» в дробном выражении «1/N». Допустимые значения в диапазоне от «0» до «4294967295». По умолчанию используется значение «10».

  1. Команда установки максимального количества пакетов для случайного отбрасывания:

set qos policy random-detect <policy-name> precedence <IP-precedence-value> maximum-threshold <packets>

где <packets> – количество пакетов. Допустимые значения в диапазоне от «0» до «4096». По умолчанию используется значение «18».

При заданном пороговом количестве вероятность отбрасывания будет максимальной.

  1. Команда установки минимального количества пакетов для случайного отбрасывания:

set qos policy random-detect <policy-name> precedence <IP-precedence-value> minimum-threshold <packets>

где <packets> – количество пакетов. Допустимые значения в диапазоне от «0» до «4096».

Если заданное пороговое значение превышается, пакеты будут отбрасываться.

Значение минимального порога по умолчанию зависит от приоритета IP (см. Таблица «Значение минимального порога»).

Таблица «Значение минимального порога»

Приоритет

Значение по умолчанию

7

16

6

15

5

14

4

13

3

12

2

11

1

10

0

9

  1. Команда установки максимального размера очереди:

set qos policy random-detect <policy-name> precedence <IP-precedence-value> queue-limit <packets>

где <packets> – значение размера очереди, измеряемое в пакетах. Допустимые значения в диапазоне от «1» до «4294967295».

При достижении заданного значения все новые пакеты отбрасываются.

Если средний размер очереди ниже значения параметра «minimum-threshold», поступающий пакет будет помещён в очередь.

Если средний размер очереди находится в диапазоне значений параметров «minimum-threshold» и «maximum-threshold», поступающий пакет будет помещён в очередь или отброшен. Это зависит от значения параметра «mark-probability».

Если значение параметра «maximum-threshold» установлено, а значение параметра «minimum-threshold» не определено, то последний определяется как 50% от значения параметра «maximum-threshold».

Для данных параметров рекомендовано соблюдать следующее неравенство: «minimum-threshold» < «maximum-threshold» < «queue-limit».

Rate Control

Порядок организации трафика: Tocken Bucket Filter.

Применение к направлению трафика: исходящий трафик.

Политика «Rate Control» является бесклассовой политикой, ограничивающей поток пакетов установленной скоростью. Обработка трафика осуществляется путём контроля расхода токенов. Токены в некоторой степени соответствуют байтам.

Допустимо превышение лимита короткими пакетами. Политика «Rate Control» накапливает токены, количество которых соответствует объёму трафика при однократном проходе. Токены поступают с постоянной скоростью, пока буфер не заполнится.

Список команд настройки «Rate Control»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Rate Control»:

set qos policy rate-control <policy-name>
  1. Команда установки пропускной способности для политики фильтрации трафика «Rate Control»:

set qos policy rate-control <policy-name> bandwidth <number>
  1. Команда установки размера буфера для пакетной передачи:

set qos policy rate-control <policy-name> burst <burst-size>

где <burst-size> – значение размера буфера в байтах.

Допускается указывать размер буфера в байтах, килобайтах, мегабайтах, гигабайтах (см. Рисунок – Rate-control. Допускаемые единицы измерения размера буфера).

../../../../../_images/ngfw.r.cli.service.qos_2.8.1.png

Рисунок – Rate-control. Допускаемые единицы измерения размера буфера

Примечание

Для сетевых адаптеров с технической пропускной способностью в 10 Мбит/сек необходимо установить буфер ёмкостью в 10 килобайт для достижения заданной скорости. Буфер меньшей ёмкости быстро приведёт к отбрасыванию пакетов.

  1. Команда установки максимально допустимой задержки пакетов в очереди:

set qos policy rate-control <policy-name> latency <number>

где <number> – значение задержки в миллисекундах. Допустимые значения в диапазоне от «0» до «4096». По умолчанию используется значение «50».

Round Robin

Порядок организации трафика: Deficit Round Robin.

Применение к направлению трафика: исходящий трафик.

Политика «Round Robin» является политикой, распределяющей трафик по различным классам. Возможно встроить политику «Round Robin» в каждый из доступных классов, включая класс по умолчанию.

Каждому классу назначается специальный счётчик дефицита данных (количество байт, которые передаются в рамках потока при его обработке), инициализируемый параметром – квант. Квант – это фиксированное количество байт, предоставляемых счётчику на каждом цикле его работы. Затем политика «Round Robin» начинает перемещать указатель по очередям. Если счётчик дефицита данных превышает размер пакета в начале очереди, пакет будет отправлен, а значение счётчика – уменьшено на размер пакета. Затем размер следующего пакета снова сравнивается со значением счётчика, и процесс повторяется. Как только очередь окажется пустой или текущего значения счётчика будет недостаточно для сравнения, указатель будет перемещён к следующей очереди. Если очередь пустая, то значение счётчика дефицита данных сбрасывается к нулевому значению.

Список команд настройки «Round Robin»:

  1. Команда присвоения уникального имени для политики фильтрации трафика типа «Round Robin»:

set qos policy round-robin <policy name>
  1. Команда установки числового идентификатора класса:

set qos policy round-robin <policy name> class <class-id>

где <class id> – значение идентификатора класса. Допустимые значения в диапазоне от «1» до «4095».

  1. Команда установки размера кванта для определённого идентификатора класса:

set qos policy round-robin <policy name> class <class-ID> quantum <packets>

где <packets> – значение размера кванта. Допустимые значения в диапазоне от «0» до «4294967295».

Значение будет добавляться на каждом цикле работы счётчика дефицита данных.

  1. Команда установки размера очереди:

set qos policy round-robin <policy name> class <class ID> queue-limit <packets>

где <packets> – количество пакетов в очереди. Допустимые значения в диапазоне от «1» до «4294967295».

Политику «Round Robin» возможно встроить в класс другой политики с помощью параметра «queue-type» (см. Рисунок – Доступные параметры команды):

admin@ngfwos# set qos policy round-robin <policy name> class <class-ID> queue-type
../../../../../_images/ngfw.r.cli.service.qos_2.9.1.png

Рисунок – Доступные параметры команды

По умолчанию используется значение «drop-tail».

Shaper

Порядок организации трафика: Hierarchical Token Bucket.

Применение к направлению трафика: исходящий трафик.

Политика «Shaper» не гарантирует низкую задержку, но гарантирует определённую полосу пропускания для различных классов трафика.

Каждый класс имеет гарантированную часть общей пропускной способности, определённой для всей политики. Совокупность всех этих ресурсов, не должна превышать предельную пропускную способность политики.

Если для класса обеспечен гарантированный трафик и доступна дополнительная пропускная способность, возможно использовать параметр «ceiling». Параметр «ceiling» применяется для определения объёма дополнительной полосы пропускания, который возможно предоставить.

Если несколько классов запрашивают дополнительную полосу пропускания, то порядок распределения дополнительного трафика определяется настройкой приоритета. Приоритет указывается в диапазоне от «0» до «7», где «0» – это самый высокий приоритет, а «7» – самый низкий.

Список команд настройки «Shaper»:

  1. Команда присвоения уникального имени для политики фильтрации трафика «Shaper»:

set qos policy shaper <policy-name>
  1. Команда установки гарантированной полосы пропускания для всего трафика без учёта классов:

set qos policy shaper <policy-name> bandwidth <number>

где <number> – значение максимально допустимой полосы пропускания.

Возможные варианты указания значения гарантированной полосы пропускания (см. Рисунок – Shaper. Допускаемые единицы измерения полосы пропускания):

  • без указания единиц измерения – используются биты в секунду;

  • «auto» – соответствует скорости соединения интерфейса;

  • «bit» – бит в секунду;

  • «kbit» – килобит в секунду;

  • «mbit» – мегабит в секунду;

  • «gbit» – гигабит в секунду;

  • «tbit» – терабит в секунду;

  • «%» – процент от скорости соединения интерфейса.

../../../../../_images/ngfw.r.cli.service.qos_2.10.1.png

Рисунок – Shaper. Допускаемые единицы измерения полосы пропускания

  1. Команда установки числового идентификатора класса:

set qos policy shaper <policy-name> class <class-id>

где <class id> – значение идентификатора класса.

  1. Команда установки гарантированной полосы пропускания для трафика определённого класса:

set qos policy shaper <policy-name> class <class-ID> bandwidth <number>
  1. Команда установки размера буфера:

set qos policy shaper <policy-name> class <class-ID> burst <bytes>

где <bytes> – значение размера буфера в байтах. По умолчанию используется значение «15» килобайт.

Допускается указывать размер буфера в байтах, килобайтах, мегабайтах, гигабайтах (см. Рисунок – Shaper. Допускаемые единицы измерения размера буфера).

../../../../../_images/ngfw.r.cli.service.qos_2.10.2.png

Рисунок – Shaper. Допускаемые единицы измерения размера буфера

  1. Команда установки размера буфера при использовании максимально возможной скорости:

set qos policy shaper <policy-name> class <class-ID> cburst <bytes>

где <bytes> – значение размера буфера в байтах.

Возможные варианты указания значения размера буфера (см. Рисунок – Shaper. Допускаемые единицы измерения размера буфера).

  1. Команда установки максимально возможной скорости для определённого класса:

set qos policy shaper <policy-name> class <class-ID> ceiling <bandwidth>

где <bandwidth> – значение максимально возможной скорости. Используются килобиты в секунду, если не указаны единицы измерения.

Возможные варианты указания значения максимально возможной скорости (см. Рисунок – Shaper. Допускаемые единицы измерения скорости) (см. «Единицы измерения»):

  • «%» – процент от общей скорости;

  • «bit» – биты в секунду;

  • «ibit»;

  • «ibps»;

  • «bps» – байты в секунду.

../../../../../_images/ngfw.r.cli.service.qos_2.10.3.png

Рисунок – Shaper. Допускаемые единицы измерения скорости

  1. Команда установки приоритета использования доступной полосы пропускания при условии, что обеспечена гарантированная полоса:

set qos policy shaper <policy-name> class <class-ID> priority <0-7>

где <0-7> – значение приоритета. Допустимые значения в диапазоне от «0» до «7». По умолчанию используется значение «0».

Политику «Shaper» возможно встроить в класс другой политики с помощью параметра «queue-type» (см. Рисунок – Доступные параметры команды):

admin@ngfwos# set qos policy shaper <policy-name> class <class-ID> queue-type
../../../../../_images/ngfw.r.cli.service.qos_2.10.4.png

Рисунок – Доступные параметры команды

По умолчанию используется значение «drop-tail».

Примечание

Если сконфигурирован класс для трафика VoIP, не рекомендуется устанавливать для него параметр «ceiling». Возможны обрывы соединения вызовов VoIP, когда другие классы начинают использовать выделенную им полосу пропускания.

Для просмотра информации по доступным «Shaper» политикам для выбранного интерфейса необходимо в эксплуатационном режиме ввести следующую команду:

admin@ngfwos:~$ show qos shaper interface ethN

Пример настройки политики «Shaper» ко входящему трафику на интерфейсе «eth0»:

set qos policy shaper <my-ingress-shaping> bandwidth 1000kbit
set qos policy shaper <my-ingress-shaping> default bandwidth 1000kbit
set qos policy shaper <my-ingress-shaping> default queue-type fair-queue

set qos interface ifb0 egress <my-ingress-shaping>
set interfaces ethernet eth0 redirect ifb0

CAKE

Порядок организации трафика: Deficit mode.

Применение к направлению трафика: исходящий трафик.

CAKE – Common Applications Keeped Enhanced – это комплексная система управления очередями, реализованная в виде дисциплины очередей qdisc для ядра Linux. Она предназначена для замены и улучшения сложной иерархии простых дисков, которая требуется для эффективного решения проблемы переполнения буфера на границе сети.

Список команд настройки «CAKE»:

  1. Команда присвоения уникального имени для политики «CAKE»:

set qos policy cake <policy name>
  1. Команда установки пропускной способности для политики «CAKE»:

set qos policy cake <policy name> bandwidth <number>

где <number> – значение пропускной способности.

Возможные варианты указания значения пропускной способности (см. Рисунок – CAKE. Допускаемые единицы измерения полосы пропускания):

  • без указания единиц измерения – используются биты в секунду;

  • «auto» – соответствует скорости соединения интерфейса;

  • «bit» – бит в секунду;

  • «kbit» – килобит в секунду;

  • «mbit» – мегабит в секунду;

  • «gbit» – гигабит в секунду;

  • «tbit» – терабит в секунду;

  • «%» – процент от скорости соединения интерфейса.

../../../../../_images/ngfw.r.cli.service.qos_2.11.1.png

Рисунок – CAKE. Допускаемые единицы измерения полосы пропускания

  1. Команда добавления описания:

set qos policy cake <policy name> description <text>
  1. Команда отключения разделения потока:

set qos policy cake <policy name> flow-isolation blind

Весь трафик проходит через одну очередь.

  1. Команда определения потока адресом назначения:

set qos policy cake <policy name> flow-isolation dst-host
  1. Команда определения потока 5-tuple – IP-адрес назначения:

set qos policy cake <policy name> flow-isolation dual-dst-host

Принимаются сначала к адресам назначения, затем к отдельным потокам.

  1. Команда определения потока 5-tuple – IP-адрес источника:

set qos policy cake <policy name> flow-isolation dual-src-host

Принимаются сначала к адресам источников, затем к отдельным потокам.

  1. Команда определения потока всеми атрибутами 5-tuple:

set qos policy cake <policy name> flow-isolation flow

Потоки определяются всеми атрибутами 5-tuple: IP-адрес источника, порт источника, IP-адрес назначения, порт назначения, транспортный протокол.

  1. Команда определения потока парой хостов источник – назначение:

set qos policy cake <policy name> flow-isolation host
  1. Команда поиска NAT перед применением правил изоляции потоков:

set qos policy cake <policy name> flow-isolation nat
  1. Команда определения потока по адресу источника:

set qos policy cake <policy name> flow-isolation src-host
  1. Команда определения потока 5-tuple:

set qos policy cake <policy name> flow-isolation triple-isolate

Применяется к адресам источника, назначения и к отдельным потокам. Параметр используется по умолчанию.

  1. Команда для определения времени прохождения пакетов в оба конца, используемая для активного управления очередью:

set qos policy cake <policy name> rtt <rtt>

где <rtt> – значение времени в миллисекундах. Допустимые значения в диапазоне от «1» до «3600000». По умолчанию используется значение «100».

  1. Для просмотра информации по доступным CAKE политикам для выбранного интерфейса необходимо в эксплуатационном режиме ввести следующую команду:

admin@ngfwos:~$ show qos cake interface ethN

Применение политики

После конфигурирования политики обработки трафика её необходимо применить к соответствующему интерфейсу:

set qos interface <ethN> egress <policy name>

где:

  • <ethN> – идентификатор интерфейса;

  • <policy name> – имя политики.

Возможно применить только одну политику для каждого интерфейса и направления. Допускается использовать одну политику для разных интерфейсов и направлений:

set qos interface eth0 ingress WAN-IN
set qos interface eth0 egress WAN-OUT
set qos interface eth1 ingress LAN-IN
set qos interface eth1 egress LAN-OUT
set qos interface eth2 ingress LAN-IN
set qos interface eth2 egress LAN-OUT
set qos interface eth3 ingress TWO-WAY-POLICY
set qos interface eth3 egress TWO-WAY-POLICY
set qos interface eth4 ingress TWO-WAY-POLICY
set qos interface eth4 egress TWO-WAY-POLICY

Примеры настройки политик

Ограничение скорости входящего и исходящего соединений

В качестве примера настройки ограничения скорости будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки ограничения скорости).

../../../../../_images/ngfw.r.cli.service.qos_4.1.1.png

Рисунок – Схема стенда для настройки ограничения скорости

Предварительные настройки ARMA Стена:

  1. Выполнены настройки получения IP-адресов для интерфейсов «eth0» и «eth1»:

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 hw-id-auto-pinning false
set interfaces ethernet eth1 address 192.168.4.1/24
commit
save
  1. Выполнены настройки NAT:

set nat source rule 10 outbound-interface name eth0
set nat source rule 10 translation address masquerade
commit
save

Для ограничения скорости применяются политики «Shaper» для исходящего трафика и «Limiter» для входящего со следующими параметрами:

set qos interface eth0 egress OUTPUT
set qos interface eth0 ingress INPUT
set qos policy limiter INPUT default bandwidth 10mbit
set qos policy shaper OUTPUT default bandwidth 10mbit
commit
save

Ограничение скорости c использованием Intermediate Functional Block

В качестве примера настройки ограничения скорости будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для ограничения скорости с использованием Intermediate Functional Block).

../../../../../_images/ngfw.r.cli.service.qos_4.2.1.png

Рисунок – Схема стенда для ограничения скорости с использованием Intermediate Functional Block

Для ограничения скорости применяется политика «Shaper» для интерфейса «eth1» со следующими параметрами:

set interfaces ethernet eth1 address dhcp
set interfaces ethernet eth1 redirect ifb1
set interfaces input ifb1
set interfaces ethernet eth2 address 10.101.1.1/24
set nat source rule 100 outbound-interface name eth1
set nat source rule 100 source address 10.101.1.0/24
set nat source rule 100 translation address masquerade
set qos policy shaper UPLOAD default bandwidth 50mbit
set qos policy shaper UPLOAD default queue-type fq-codel
set qos policy shaper DOWNLOAD default bandwidth 50mbit
set qos policy shaper DOWNLOAD default queue-type fq-codel
set qos interface eth1 egress UPLOAD
set qos interface ifb1 egress DOWNLOAD

Маркировка и классификация трафика

В качестве примера настройки маркировки и классификации трафика будет использоваться схема стенда, представленная на рисунке (см. Рисунок – Схема стенда для настройки маркировки и классификации трафика).

../../../../../_images/ngfw.r.cli.service.qos_4.3.1.png

Рисунок – Схема стенда для настройки маркировки и классификации трафика

На ARMA Стена предварительно разрешён транзитный трафик:

set firewall ipv4 forward filter default-action accept
commit
save

Для настройки классификации и маркировки трафика необходимо выполнить следующие шаги на ARMA Стена:

set qos policy shaper ngfw class 10 match ADDRESS10 ip source address 7.7.7.102/32
set qos policy shaper ngfw class 10 set-dscp CS4
set qos policy shaper ngfw class 20 match ADDRESS20 ip source address 7.7.7.103/32
set qos policy shaper ngfw class 20 set-dscp CS5
set qos policy shaper ngfw class 30 match ADDRESS30 ip source address 7.7.7.104/32
set qos policy shaper ngfw class 30 set-dscp CS6
set qos policy shaper ngfw default bandwidth 10%
set qos policy shaper ngfw default ceiling 100%
set qos policy shaper ngfw default priority 7
set qos policy shaper ngfw default queue-type fair-queue
set qos interface eth2 egress ngfw
commit
save

Для проверки маркировки и классификации трафика на одном из устройств-клиентов, которые подключены к «eth1» ARMA Стена, необходимо ввести команду:

ping 7.7.8.101

Для того, чтобы просмотреть маркировку трафика на ARMA Стена в режиме суперпользователя необходимо ввести следующую команду:

root@ngfwos:~# tcpdump -i eth2 -v -n -c 10 'ip'
tcpdump: listening on eth2, link-type EN10MB (Ethernet), snapshot length 262144 bytes
14:04:50.981357 IP (tos 0x80, ttl 63, id 18797, offset 0, flags [DF], proto ICMP (1), length 84)
  7.7.7.102 > 7.7.8.101: ICMP echo request, id 37571, seq 3, length 64
14:04:50.982143 IP (tos 0x80, ttl 64, id 29747, offset 0, flags [none], proto ICMP (1), length 84)
  7.7.8.101 > 7.7.7.102: ICMP echo reply, id 37571, seq 3, length 64
14:04:51.983178 IP (tos 0x80, ttl 63, id 18978, offset 0, flags [DF], proto ICMP (1), length 84)

В приведённом примере маркировка «tos 0x80» соответствует DSCP CS4.

Ограничение скорости в зависимости от загруженности канала

В качестве примера настройки политики с ограничением скорости в зависимости от загруженности канала будет использоваться настройка для интерфейса «eth1». В рамках настройки задаются приоритеты для двух классов, пропускная способность, а также размер буфера для гарантированной и максимальной скоростей:

set qos interface eth1 egress Prio
set qos policy shaper Prio bandwidth 100mbit
set qos policy shaper Prio class 10 bandwidth 20%
set qos policy shaper Prio class 10 burst 10mb
set qos policy shaper Prio class 10 cburst 1mb
set qos policy shaper Prio class 10 ceiling 40mbit
set qos policy shaper Prio class 10 match test ip destination port 3389
set qos policy shaper Prio class 10 priority 1
set qos policy shaper Prio class 10 queue-type fair-queue
set qos policy shaper Prio class 20 bandwidth 10%
set qos policy shaper Prio class 20 burst 10mb
set qos policy shaper Prio class 20 cburst 1mb
set qos policy shaper Prio class 20 ceiling 80%
set qos policy shaper Prio class 20 match test ip source address 192.168.100.0/24
set qos policy shaper Prio class 20 priority 6
set qos policy shaper Prio class 20 queue-type fair-queue
set qos policy shaper Prio default bandwidth 10%
set qos policy shaper Prio default burst 1mb
set qos policy shaper Prio default cburst 500kb
set qos policy shaper Prio default ceiling 100%