Содержание
Описание
QoS (Quality of Service) – это удобный и гибкий механизм для управления потоками данных, проходящими через устройство. Можно создать до 200 логических каналов QoS, характеризующихся различными свойствами (такими как уровень приоритета и скорость передачи данных), а затем назначать этим каналам потоки данных в соответствии со специальными правилами. Пакеты, проходя по разным каналам, изменяют свои свойства и свойства соответствующих им потоков данных.
Синтаксис:
option [no]rtp [no]dot1p [no]dscp [no]tos [no]tcpack [no]icmp [no]strict [no]tunnel [no]pppoe [no]mpls [no]selfqos [no]auto [no]ipfw classN {max=N} | {clear} chN [max=N[%]|0] [classN] [ceil=N[%]|0] [ceilprio=N|0] [latency=N|0] [[add]pri=[N] | setpri=[N]] [[no]strict]] [pps=N|0] [to=ADDR] [vlan=[N|-1]] [dot1p=[N|-1]] [dscp=[N|-1]] [info="STRING"] clear stat [full] [clear] del RULE_NUMBER dump RULE_NUMBER mov RULE_A RULE_B rearrange [STEP] add[out] [NUM] [IFNAME] chN rules... rules: [{setpri|addpri}=[N]] [pass] [vlan={N|any|$ACL}] [dot1p=N] [swg=N] [ether={X|any}] [dscp=N|tos=N] [prf] -f "pcap filter expression" | PROTO from [not] ADDR [PORTs] to [not] ADDR [PORTs] PROTO: [all] | tcp | udp | icmp | arp | proto NUMBER ADDR: IP | $LOCAL | $ROUTE | $ACL | mac x:x:x:x:x:x } PORTS: NUM[:NUM] [NUM] ...
ПРЕДОСТЕРЕЖЕНИЕ
Ключевые слова и значения параметров пишутся слитно, без пробелов до и после "=".
Параметры
Параметры | Описание | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
option [no]rtp [no]dot1p [no]dscp [no]tos [no]tcpack [no]icmp [no]strict [no]tunnel [no]pppoe [no]mpls [no]selfqos [no]auto [no]ipfw | С помощью данного параметра осуществляется управление автоматическим назначением приоритетов потокам данных в устройстве.
Схема соответствия приоритетов MINT и стандартов IEEE 802.1p/TOS/DSCP приведена ниже:
Например, на сетевом узле настроена автоматическая приоритизация пакетов с меткой приоритета стандарта IEEE 802.1p. На узел приходит пакет с меткой приоритета IEEE 802.1p "5", узел в этом случае назначит ему приоритет "QM_PRIO_VOICE". | ||||||||||||||||||||||||||||||||||||
classN {max=N} | {clear} | Создание класса обслуживания и определение его полосы пропускания. Используется для распределения пропускной способности между различными каналами.
| ||||||||||||||||||||||||||||||||||||
chN [max=N[%]|0] [ceil=N[%]|0] [ceilprio=N|0] [latency=N|0] | Команда описывает один канал. На основе каналов "qm" осуществляется сквозная приоритизация в сети MINT:
ВНИМАНИЕ Для всех функций автоматической приоритизации должен использоваться аргумент "addpri". Таким образом приоритеты будут устанавливаться в следующем порядке:
После этого будет применен тот же порядок для исходящих пакетов, если существуют соответствующие правила.
ПРЕДОСТЕРЕЖЕНИЕ На платформе H02 при одновременной работе нескольких каналов, связанных с данным классом, вся полоса пропускания будет поделена пропорционально их начальным ограничениям по скорости потока.
ВНИМАНИЕ При одновременном указании нескольких аргументов, порядок обработки следующий: сначала отрабатывается ограничение по скорости, затем переадресация, потом приоритет. При одновременном указании аргументов "vlan" и "dot1p", сначала обрабатывается "vlan", затем "dot1p". Каждому каналу может быть присвоен приоритет (0…16). Назначенный приоритет будет автоматически обрабатываться каждым узлом при перемещении пакета внутри сети MINT.
Приоритеты 1 и 2 подвергаются дополнительной обработке как голосовые. По умолчанию пакеты получают приоритет "QM_PRIO_REGULAR=15" и обрабатываются соответственно. Классификация пакетов может также выполняться с помощью фильтров "pcap". ПРЕДОСТЕРЕЖЕНИЕ Реальная приоритизация внутри сети MINT осуществляется по приоритету, заданному параметром "pri=N". Метка DSCP прозрачно передаётся через сеть MINT в любом режиме её работы. Приоритет 802.1p прозрачно передаётся только при работе в режиме коммутатора. При необходимости, для исходящих через определенный интерфейс устройства пакетов могут быть назначены требуемые параметры "dot1p" и "dscp", по желанию оператора. | ||||||||||||||||||||||||||||||||||||
stat [full] [clear] | Статистика работы конкретного канала (только для каналов с ограничением по скорости):
qm ch1 max=128 cur=127 packets=12345 (1234) bytes=1234567 (12345) Числа в скобках отображают количество отброшенных единиц. ВНИМАНИЕ Команда "qm stat" показывает статистику по пакетам в секунду (PPS), только если для потока задано максимальное количество пакетов в секунду (qm chN pps=N). | ||||||||||||||||||||||||||||||||||||
del RULE_NUMBER | Удаление указанного правила из списка. | ||||||||||||||||||||||||||||||||||||
dump RULE_NUMBER | Отображает скомплированный псевдо-код правила, заданного в формате PCAP. Позволяет визуально оценить сложность/оптимальность, либо корректность полученного правила. | ||||||||||||||||||||||||||||||||||||
mov RULE_A RULE_B | Изменение правила с номера "A" на "B". | ||||||||||||||||||||||||||||||||||||
rearrange [STEP] | Перенумерация всех правил с шагом "[STEP]" (по умолчанию 5). Номера правил можно посмотреть командой "config show". | ||||||||||||||||||||||||||||||||||||
add[out] [NUM] [IFNAME] chN rules.. | Команда позволяет добавить поступающий/исходящий на/с устройства пакет, удовлетворяющий правилу к каналу "N".
ВНИМАНИЕ Все манипуляции с заголовками пакетов, например смена метки dscp или 802.1p, возможны только с помощью команды "qm addout", то есть, только для покидающих устройство пакетов. | ||||||||||||||||||||||||||||||||||||
rules: [{setpri|addpri}=[N]] [pass] | Синтаксис правил полностью соответствует синтаксису команды "ipfw" (см. раздел "Команда ipfw (IP Firewall)"). ВНИМАНИЕ Следует иметь в виду, что во время работы каждый пакет, проходящий через систему, проверяется на соответствие правилам строго по порядку, от первого до последнего, пока не встретится правило удовлетворяющее свойствам пакета.
| ||||||||||||||||||||||||||||||||||||
PROTO from [not] ADDR [PORTs] to [not] ADDR [PORTs] | Классификаторы уточняют определенное направление передачи от и/или к:
Возможные форматы : nn.nn.nn.nn nn.nn.nn.nn:xxx.xxx.xxx.xxx nn.nn.nn.nn/NN Запись "0/0" описывает все возможные IP-адреса. | ||||||||||||||||||||||||||||||||||||
PROTO: [all] | tcp | udp | icmp | arp | proto NUMBER | Классификаторы ограничивают по признаку соответствия определенному протоколу. Возможные протоколы: TCP, UDP, ICMP, ARP, либо числовое значение номера протокола. ARP-пакеты будут всегда пропускаться для тех IP-адресов и диапазонов IP-адресов, которые указаны в разрешающих (accept) фильтрах, даже если эти фильтры созданы для других типов пакетов. | ||||||||||||||||||||||||||||||||||||
ADDR: IP | $LOCAL | $ROUTE | $ACL | mac x:x:x:x:x:x } | Если необходимо составить фильтр, который применяется к нескольким сетевым адресам или группам, то вместо повторения однотипных правил удобнее и эффективнее сгруппировать все фигурирующие адреса в соответствующий список доступа и указать имя списка в качестве IP-адреса ($ACLRULE). Существует несколько предопределённых динамических списков:
ВНИМАНИЕ Следует иметь ввиду, что правила, использующие MAC-адреса для входящих пакетов будут обработаны раньше всех остальных правил, а правила для исходящих пакетов, напротив, будут обработаны в самую последнюю очередь. | ||||||||||||||||||||||||||||||||||||
PORTS: NUM[:NUM] [NUM] ... | Используется для фильтрации трафика по номерам портов. Можно использовать список портов для указания сразу нескольких портов в одной команде. Первый элемент списка портов может задавать диапазон номеров от меньшего к большему, разделённый двоеточием. |
Примеры
Ограничим весь исходящий трафик клиента величиной 64 Кбит/с на абонентском терминале. qm ch1 max=64 qm add eth0 ch1 all from 0/0 to 0/0 |
Назначим трафику сети "1.1.1.0/24" больший приоритет по отношению ко всем остальным потокам данных. qm ch1 pri=5 qm add ch1 all from 1.1.1.0/24 to 0/0 qm add ch1 all from 0/0 to 1.1.1.0/24 |
Назначим трафику сети "1.1.1.0/24" меньший приоритет по отношению к всем остальным потокам данных. Обратите внимание на порядок правил. Последнее правило, которому удовлетворяет каждый пакет, должно стоять в конце списка. qm ch1 pri=5 qm ch2 pri=10 qm add ch2 all from 1.1.1.0/24 to 0/0 qm add ch2 all from 0/0 to 1.1.1.0/24 qm add ch1 all from 0/0 to 0/0 |
Абоненты сети:
В более сложном случае, когда маршрутизаторы провайдеров недостижимы непосредственно с данного узла, необходимо сначала организовать туннели до выбранных провайдеров, а уже потом выполнять переадресацию. qm ch1 to=10.10.10.10 qm ch2 to=20.20.20.20 qm add ch1 all from 1.1.1.0/24 to 0/0 qm add ch2 all from 2.2.2.0/24 to 0/0 |
Отключим автоматическую приоритизацию пакетов реального времени и включим автоматическую приоритизацию TOS. qm option –rtp tos |
Увеличим приоритет всех пакетов до значения "N", но только в случае если "N" превышает текущий приоритет пакета. qm ch1 addpri=N |
Всем пакетам будет присвоен указанный приоритет. qm ch1 setpri=N |
Канал 1 сбрасывает метки DSCP и приоритеты 802.1p. qm ch1 dscp=0 dot1p=-1 |
Канал 2 устанавливает приоритет "QM_PRIO_BUSINESS1" и метку DSCP 31. qm ch2 pri=9 dscp=31 |
Для обнуления всех приоритетов пропустим весь трафик через канал 1. qm add ch1 pass all from 0/0 to 0/0 |
Поместим часть трафика в канал 2. qm add ch2 tcp from X.X.X.0/24 to 0/0 Другую часть трафика в канал 3. qm add ch3 udp from X.X.X.0/24 PORT to 0/0 Оставшийся трафик будет обрабатываться как не приоритетный, либо назначить ему приоритет, поместив в канал 4. qm add ch4 all from 0/0 to 0/0 |
Установим 802.1p приоритет пакетам в канале 25. qm ch25 dot1p=5 |
Установим 802.1p приоритет и VLAN ID в канале 26. Заголовок VLAN будет добавлен автоматически в случае его отсутствия. qm ch26 vlan=7 dot1p=4 |
Поместим исходящие пакеты, назначенные интерфейсу "eth0" и помеченные меткой DSCP 11, в канал 25. qm addout eth0 ch25 dscp=11 from 0/0 to 0/0 |
Поместим исходящие пакеты UDP, назначенные интерфейсу "eth0", в канал 25 и промаркируем их меткой DSCP 51. qm ch25 dscp=51 qm addout eth0 ch25 udp from 0/0 to 0/0 |
Пример использования pcap-фильтра для классификации пакетов: в канал 5 будет добавлен весь ICMP-трафик, направленный от или к сетевым узлам "1.1.1.1" и "1.1.1.5". qm add ch5 –f “icmp and host (1.1.1.1 or 1.1.1.5)“ |
Пример использования класса обслуживания. qm class1 max=1000 qm ch1 max=200 ceil=1000 class1 qm ch2 max=400 ceil=1000 class1 qm ch3 max=100 ceil=300 class1 qm ch4 max=200 ceil=300 class1 Результатом выполнения этих команд будет следующая иерархия:
|