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 Стена оперирует следующими префиксами и суффиксами единиц измерения скорости передачи данных:
Префиксы – возможно указать в десятичном или двоичном формате:
QoS позволяет классифицировать трафик в соответствии с заданными параметрами.
Для определения, к какому классу относится трафик, необходимо установить критерии соответствия. Пакет ассоциируется с определённым классом в том случае, если обнаруживается правило с подходящим классификатором.
Каждый класс обладает числовым идентификатором, который задаётся в процессе его настройки. Классу возможно назначить несколько классификаторов. Классификатор содержит множественные критерии соответствия. Трафик считается подошедшим, если все установленные критерии выполняются одновременно.
Для классификации трафика возможно использовать следующие параметры:
«ether» – протокол. Возможно указать следующие параметры для классификации:
MAC-адрес отправителя;
MAC-адрес получателя;
«interface» – имя интерфейса;
«ip» – протокол IPv4. Возможно указать следующие параметры для классификации:
метка DSCP;
максимальная длина тела пакета;
протокол, IPv4-адрес отправителя;
IPv4-адрес получателя;
номер порта отправителя;
номер порта получателя;
флаги TCP;
«ipv6» – протокол IPv6. Возможно указать следующие параметры для классификации:
метка DSCP;
максимальная длина тела пакета;
протокол;
IPv6-адрес отправителя;
«mark» – метка межсетевого экрана;
«vif» – идентификатор VLAN-интерфейса.
При задании классификатора возможно использовать клавишу «Tab» на клавиатуре для вывода информации о доступных к использованию параметрах команды (см. Рисунок – Доступные параметры команды).
Группы совпадений трафика (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» на клавиатуре для вывода информации о доступных к использованию параметрах команды (см. Рисунок – Доступные параметры команды).
При задании параметров идентификатора правила классификации не допускается совместное использование 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 – наиболее простой механизм управления очередью – отбрасываются все вновь пришедшие пакеты, не помещающиеся в буфер. Политика требует наименьших ресурсов, но используется крайне редко вследствие неэффективной обработки трафика.
Для настройки фильтрации трафика по алгоритму Drop Tail необходимо ввести команду:
set qos policy drop-tail <policy-name> queue-limit <number-of-packets>
где:
<policy-name> – уникальное имя политики;
<number-of-packets> – размер очереди, измеряемый в пакетах. Допустимые значения в диапазоне от «1» до «4294967295».
Применение к направлению трафика: исходящий трафик.
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» в политику с шейпингом на основе классов.
Порядок организации трафика: 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»:
Команда присвоения уникального имени для политики фильтрации трафика «FQ-CoDel»:
set qos policy fq-codel <policy name>
Команда установки максимального количества байт, извлекаемых из очереди за один раз:
set qos policy fq-codel <policy name> codel-quantum <bytes>
где <bytes> – количество байт. Допустимые значения в диапазоне от «0» до «1048576». По умолчанию используется значение «1514».
Команда установки количества дочерних очередей, в которые будут помещаться классифицированные пакеты:
set qos policy fq-codel <policy name> flows <number-of-flows>
где <number-of-flows> – значение количества дочерних очередей. Допустимые значения в диапазоне от «1» до «65536». По умолчанию используется значение «1024».
Команда установки периода времени, используемого управляющим циклом CoDel:
set qos policy fq-codel <policy name> interval <miliseconds>
где <miliseconds> – значение периода времени в миллисекундах. Допустимые значения в диапазоне от «0» до «4294967295». По умолчанию используется значение «100».
Период времени необходим для обнаружения устоявшихся очередей и исключения значительного увеличения минимально определённой задержки.
Команда установки предельного размера очереди:
set qos policy fq-codel <policy-name> queue-limit <number-of-packets>
где <number-of-packets> – значение предельного размера очереди в пакетах. Допустимые значения в диапазоне от «2» до «10999». По умолчанию используется значение «1024».
При достижении предельного размера все новые пакеты отбрасываются.
Команда установки минимально допустимой задержки в ожидающей/устоявшейся очереди:
set qos policy fq-codel <policy-name> target <miliseconds>
где <miliseconds> – значение минимально допустимой задержки в миллисекундах. Допустимые значения в диапазоне от «0» до «4294967295». По умолчанию используется значение «5».
Применение к направлению трафика: входящий трафик.
Политика «Limiter» подразумевает простое ограничение входящих потоков трафика. Возможно определить несколько классов трафика и применить к каждому классу свои ограничения. Механизм не имеет возможность удерживать пакеты, как это делает механизм «shaper». Трафик, превышающий установленные ограничения полосы пропускания, отбрасывается.
Допускается настроить до 4090 классов с различными настройками и политикой по умолчанию, которая будет применяться к любому трафику, не соответствующему ни одному из настроенных классов.
Список команд настройки «Limiter»:
Команда присвоения уникального имени для политики фильтрации трафика «Limiter»:
set qos policy limiter <policy-name>
Команда установки числового идентификатора класса:
set qos policy limiter <policy-name> class <class id>
где <class id> – значение идентификатора класса. Допустимые значения в диапазоне от «1» до «4090».
Команда, устанавливающая имя и описание для правила в указанном классе:
set qos policy limiter <policy-name> class <class ID> match <match-name> description <description>
где:
<match-name> – имя правила;
<description> – описание правила.
Команда установки максимально допустимой полосы пропускания для класса:
set qos policy limiter <policy-name> class <class-ID> bandwidth <number>
где <number> – значение максимально допустимой полосы пропускания.
Рисунок – Допускаемые единицы измерения размера всплеска трафика
Команда установки приоритета правила:
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».
Применение к направлению трафика: исходящий трафик.
Политика «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
Порядок организации трафика: Generalized Random Early Drop.
Применение к направлению трафика: исходящий трафик.
При использовании политики «Random-Detect» пакеты случайным образом отбрасываются из очереди перед тем, как она будет заполнена. Политика «Random-Detect» не является политикой с шейпингом. В отличие от стандартной дисциплины RED, политика «Random-Detect» использует обобщённую политику случайного раннего обнаружения, которая предоставляет различные виртуальные очереди в зависимости от значения приоритета IP. Благодаря этому некоторые виртуальные очереди могут пропускать больше пакетов, чем другие. Это достигается за счёт использования первых трёх бит поля «ToS» для классификации потоков данных и принятия решения в соответствии с заданными параметрами приоритета IP.
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».
Порядок организации трафика: Tocken Bucket Filter.
Применение к направлению трафика: исходящий трафик.
Политика «Rate Control» является бесклассовой политикой, ограничивающей поток пакетов установленной скоростью. Обработка трафика осуществляется путём контроля расхода токенов. Токены в некоторой степени соответствуют байтам.
Допустимо превышение лимита короткими пакетами. Политика «Rate Control» накапливает токены, количество которых соответствует объёму трафика при однократном проходе. Токены поступают с постоянной скоростью, пока буфер не заполнится.
Список команд настройки «Rate Control»:
Команда присвоения уникального имени для политики фильтрации трафика «Rate Control»:
set qos policy rate-control <policy-name>
Команда установки пропускной способности для политики фильтрации трафика «Rate Control»:
set qos policy rate-control <policy-name> bandwidth <number>
Команда установки размера буфера для пакетной передачи:
set qos policy rate-control <policy-name> burst <burst-size>
где <burst-size> – значение размера буфера в байтах.
Рисунок – Rate-control. Допускаемые единицы измерения размера буфера
Примечание
Для сетевых адаптеров с технической пропускной способностью в 10 Мбит/сек необходимо установить буфер ёмкостью в 10 килобайт для достижения заданной скорости. Буфер меньшей ёмкости быстро приведёт к отбрасыванию пакетов.
Команда установки максимально допустимой задержки пакетов в очереди:
set qos policy rate-control <policy-name> latency <number>
где <number> – значение задержки в миллисекундах. Допустимые значения в диапазоне от «0» до «4096». По умолчанию используется значение «50».
Применение к направлению трафика: исходящий трафик.
Политика «Round Robin» является политикой, распределяющей трафик по различным классам. Возможно встроить политику «Round Robin» в каждый из доступных классов, включая класс по умолчанию.
Каждому классу назначается специальный счётчик дефицита данных (количество байт, которые передаются в рамках потока при его обработке), инициализируемый параметром – квант. Квант – это фиксированное количество байт, предоставляемых счётчику на каждом цикле его работы. Затем политика «Round Robin» начинает перемещать указатель по очередям. Если счётчик дефицита данных превышает размер пакета в начале очереди, пакет будет отправлен, а значение счётчика – уменьшено на размер пакета. Затем размер следующего пакета снова сравнивается со значением счётчика, и процесс повторяется. Как только очередь окажется пустой или текущего значения счётчика будет недостаточно для сравнения, указатель будет перемещён к следующей очереди. Если очередь пустая, то значение счётчика дефицита данных сбрасывается к нулевому значению.
Список команд настройки «Round Robin»:
Команда присвоения уникального имени для политики фильтрации трафика типа «Round Robin»:
set qos policy round-robin <policy name>
Команда установки числового идентификатора класса:
set qos policy round-robin <policy name> class <class-id>
где <class id> – значение идентификатора класса. Допустимые значения в диапазоне от «1» до «4095».
Команда установки размера кванта для определённого идентификатора класса:
set qos policy round-robin <policy name> class <class-ID> quantum <packets>
где <packets> – значение размера кванта. Допустимые значения в диапазоне от «0» до «4294967295».
Значение будет добавляться на каждом цикле работы счётчика дефицита данных.
Команда установки размера очереди:
set qos policy round-robin <policy name> class <class ID> queue-limit <packets>
где <packets> – количество пакетов в очереди. Допустимые значения в диапазоне от «1» до «4294967295».
Порядок организации трафика: Hierarchical Token Bucket.
Применение к направлению трафика: исходящий трафик.
Политика «Shaper» не гарантирует низкую задержку, но гарантирует определённую полосу пропускания для различных классов трафика.
Каждый класс имеет гарантированную часть общей пропускной способности, определённой для всей политики. Совокупность всех этих ресурсов, не должна превышать предельную пропускную способность политики.
Если для класса обеспечен гарантированный трафик и доступна дополнительная пропускная способность, возможно использовать параметр «ceiling». Параметр «ceiling» применяется для определения объёма дополнительной полосы пропускания, который возможно предоставить.
Если несколько классов запрашивают дополнительную полосу пропускания, то порядок распределения дополнительного трафика определяется настройкой приоритета. Приоритет указывается в диапазоне от «0» до «7», где «0» – это самый высокий приоритет, а «7» – самый низкий.
Список команд настройки «Shaper»:
Команда присвоения уникального имени для политики фильтрации трафика «Shaper»:
set qos policy shaper <policy-name>
Команда установки гарантированной полосы пропускания для всего трафика без учёта классов:
set qos policy shaper <policy-name> bandwidth <number>
где <number> – значение максимально допустимой полосы пропускания.
Если сконфигурирован класс для трафика 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 – Common Applications Keeped Enhanced – это комплексная система управления очередями, реализованная в виде дисциплины очередей qdisc для ядра Linux. Она предназначена для замены и улучшения сложной иерархии простых дисков, которая требуется для эффективного решения проблемы переполнения буфера на границе сети.
Список команд настройки «CAKE»:
Команда присвоения уникального имени для политики «CAKE»:
set qos policy cake <policy name>
Команда установки пропускной способности для политики «CAKE»:
set qos policy cake <policy name> bandwidth <number>
После конфигурирования политики обработки трафика её необходимо применить к соответствующему интерфейсу:
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
Рисунок – Схема стенда для настройки ограничения скорости
Предварительные настройки ARMA Стена:
Выполнены настройки получения 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
Выполнены настройки 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
Рисунок – Схема стенда для настройки маркировки и классификации трафика
На 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%