Успешно сдайте бесплатный сертификационный экзамен в Академии "Инфинет" и получите статус сертифицированного инженера Инфинет.
Содержание
Описание
QoS (Quality of Service) – это удобный и гибкий механизм для управления потоками данных, проходящими через устройство. Можно создать до 200 логических каналов QoS, характеризующихся различными свойствами (такими как уровень приоритета и скорость передачи данных), а затем назначать этим каналам потоки данных в соответствии со специальными правилами. Пакеты, проходя по разным каналам, изменяют свои свойства и свойства соответствующих им потоков данных.
Синтаксис:
option [no]rtp [no]dot1p [no]dscp [no]tos [no]tcpack [no]icmp [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]tunnel [no]pppoe [no]mpls [no]selfqos [no]auto [no]ipfw | С помощью данного параметра осуществляется управление автоматическим назначением приоритетов потокам данных в устройстве. На устройстве применяется политика взвешенной приоритизации "Weighted Fair Queuing" (используются весовые коэффициенты для каждой очереди интерфейса, что позволяет последовательно обрабатывать пакеты из различных очередей в определенном соотношении, зависящем от весовых коэффициентов). Например, 4 пакета из очереди с приоритетом 1, затем 1 пакет из очереди с приоритетом 2 и т.д.
Схема соответствия приоритетов MINT и стандартов IEEE 802.1p/TOS/DSCP приведена ниже:
Например, на сетевом узле настроена автоматическая приоритизация пакетов с меткой приоритета стандарта IEEE 802.1p. На узел приходит пакет с меткой приоритета IEEE 802.1p "5", узел в этом случае назначит ему приоритет "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.
По умолчанию пакеты получают приоритет "REGULAR Best Effort=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 Результатом выполнения этих команд будет следующая иерархия:
|