Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

QoS менеджер.

Синтаксис:

option {[-]rtp [-]dot1p [-]tos [-]tcpack [-]icmp [no]strict} [no]tunnel

classN {[max=N] [ceil=N] [ceilprio=N] [parent=N]} | {clear}

chN [max=N[%]|0] [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]] [classN] [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] ...

  • Команда "qm classN max=N" создаёт класс обслуживания и определяет его полосу пропускания (задаётся в тысячах бит/сек). Используется для динамического распределения пропускной способности между различными каналами. Удалить класс можно так: "qm classL clear".

Можно создавать иерархию классов обслуживания, когда один «родительский» (parent) класс используется для динамического распределения своей пропускной способности между «дочерними» классами. Для этого используются параметры "[ceil=N] [ceilprio=N] [parent=N]". Параметры "[ceil=N] [ceilprio=N]" по смыслу соответствуют одноименным параметрам команды qm chN. Параметр [parent=N] задает «родительский» класс для данного класса, где N – номер «родительского» класса.

  • Команда "qm chN [max=N[%]|0] [[ceil=N[%]|0] [ceilprio=N|0] [latency=N|0] [pri=P] [[no]strict]] [pps=N|0] [to=addr] [vlan=N|-1] [dscp=N|-1] [dot1p=N|-1] [classL] / clear" описывает один программный канал.

Номер канала (1..200) задаётся параметром "chN".

  • Параметр "max=N" устанавливает максимальную скорость потока для данного канала (тысяч бит/сек). Может принимать значения от 10 до 100000. При установке в 0 (ноль) отменяет ограничение по скорости.

Дополнительно можно указать параметр classN, привязав данный канал к классу обслуживания N. В этом случае ограничение скорости будет нежёстким: если пропускная способность интерфейса, указанного для класса N, не используется полностью, то ограничение скорости канала может быть превышено, вплоть до полной загрузки класса. При одновременной работе нескольких каналов, связанных с данным классом, они поровну поделят всю полосу пропускания.

ПРЕДОСТЕРЕЖЕНИЕ

Исключение: на платформе H02 при одновременной работе нескольких каналов, связанных с данным классом, они поделят всю полосу пропускания пропорционально их начальным ограничениям по скорости потока.

  • Параметр "max=N" можно задавать и в процентах от полосы пропускания класса, к которому привязан данный канал (max=50%).
  • С помощью параметра "ceil=N[%]" можно указать, максимальную не гарантированную скорость канала, подключенного к классу. Если пропускная способность класса, к которому подключен канал, используется не полностью, то скорость класса может увеличиться вплоть до заданного значения N. Значение данного параметра указывается в килобитах в секунду или в процентах от полосы пропускания класса. Для отключения параметра нужно поставить значение 0.
  • Параметр "ceilprio=N" назначает каналу приоритет, который используется для распределения не используемой пропускной способности вышестоящего в иерархии класса между каналами и классами, претендующими на эту пропускную способность. Для равно-приоритетных каналов прирост пропускной способности будет равным. Всего используется 17 приоритетов от 0 (наивысшего) до 16 (низшего). Для отключения параметра нужно поставить значение 0, т.е. возможно только понизить приоритет по сравнению со значением по умолчанию.
  • Параметр "latency=N" определяет максимальное время нахождения пакета в канале. Если время ожидания пакета в очереди канала превысит данное время, то пакет будет отброшен. Измеряется в миллисекундах. Для отключения параметра нужно поставить значение 0.
  • Параметр "pri=P" устанавливает приоритет потока для данного канала (0…16). Меньшее числовое значение определяет больший приоритет. Также используются два дополнительных значения параметра: “-1” – устанавливает наименьший приоритет, “-2” – удаляет приоритет у всех пакетов, попадающих в данный канал.
  • Параметр "[no]strict]" описывается ниже в разделе «Команда qm (конфигурация Quality-of-Service)».
  • Параметр "pps=N" устанавливает максимальное количество пакетов в секунду для данного потока. Для отключения параметра нужно поставить значение 0.
  • Параметр "to=ADDR" позволяет перенаправить весь поток на другой адрес, вне зависимости от сложившихся условий маршрутизации. Адрес ADDR должен быть непосредственно достижим через один из интерфейсов устройства (без дополнительной маршрутизации). Эту опцию можно использовать, например, в случае использования устройства в качестве блока доступа к сети, когда два независимых клиента хотят пользоваться услугами разных провайдеров через один блок.
  • Параметры "vlan=N", "dot1p=N", "dscp=N" позволяют манипулировать метками DSCP и/или приоритета 802.1p. Значение “-1” удаляет параметр:
    • DSCP  (допустимые значения 0-63) устанавливается в ноль.
    • приоритет 802.1p (допустимые значения 0-7) обнуляется и, если VLAN ID не указан, удаляется вместе с заголовком VLAN.
    • Vlan ID (допустимые значения 0-4095) удаляется вместе с заголовком VLAN  независимо от наличия приоритета 802.1p.
  • Параметр "[info="STRING"]" позволяет пользователю задать текстовое описание канала.
  • Параметр "clear" снимает все установки и освобождает канал.

При одновременном указании нескольких параметров, порядок обработки следующий: сначала отрабатывается ограничение по скорости, затем переадресация, а потом приоритет. При одновременном указании параметров "vlan" и "dot1p", сначала обрабатывается "vlan", а затем "dot1p".

ПРЕДОСТЕРЕЖЕНИЕ

Ключевые слова и значения параметров пишутся слитно, без обрамляющих пробелов вокруг знака "=".

  • Команда "qm stat [full] [clear]" отображает статистику работы конкретного канала (только для каналов с ограничением по скорости):
qm ch1 max=128 cur=127 packets=12345 (1234) bytes=1234567 (12345)

числа в скобках отображают количество отброшенных единиц.

Опция “full” отображает расширенную статистику работы канала. Опция “clear” обнуляет статистику.

ВНИМАНИЕ

 Команда “qm stat” показывает статистику по пакетам в секунду (PPS), только если для потока задано максимальное количество пакетов в секунду (qm chN pps=N).

  • Команда "qm add [ifname] chN [pass] rule..." позволяет подключить поступающий на устройство пакет, который  удовлетворяет правилу "rule" к каналу N. Обработка исходящих с устройства пакетов, осуществляется с помощью опции "out" (qm addout …).
  • Необязательный параметр "num" используется для явного указания порядкового номера правила в списке.
  • Дополнительно может быть указано имя интерфейса, через который пакет попадает в систему (ifname).
  • Параметр “pass” позволяет после выполнения команды продолжить просмотр других правил по списку. Синтаксис правил, описывающих пакет, полностью соответствует синтаксису команды ipfw.
  • Команда "qm del RULE_NUMBER" удаляет указанное правило из списка.
  • Команда "qm mov RULE_A RULE_B" меняет номер правила с номера «A» на номер «B».
  • Команда "qm rearrange [N]" перенумеровывает все правила с инкрементом  N (по умолчанию 5).
  • Номера правил можно посмотреть командой "config show".

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

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

На основе  каналов "qm" менеджера осуществляется сквозная приоритезация в сети MINT.

Администратор имеет возможность направлять входящие потоки в подходящий канал на основе правил "qm/ipfw", а также полей "tos" и "dscp".

qm ch1 pri=6
qm add ch1 all from x/x to y/y
qm add ch1 dscp=31 all from a to b
qm add ch1 dscp=42

Каждому каналу может быть присвоен приоритет (0…16). Однажды назначенный приоритет будет автоматически обрабатываться каждым узлом при перемещении пакета внутри сети MINT. Схема распределения приоритетов выглядит так:

КаналПриоритет
QM_PRIO_NETCRIT0
QM_PRIO_VOICE    1
QM_PRIO_VOICE22
QM_PRIO_VIDEO3
QM_PRIO_VIDEO24
QM_PRIO_QOS15
QM_PRIO_QOS26
QM_PRIO_QOS37
QM_PRIO_QOS48
QM_PRIO_BUSINESS19
QM_PRIO_BUSINESS210
QM_PRIO_BUSINESS311
QM_PRIO_BUSINESS412
QM_PRIO_BUSINESS513
QM_PRIO_BUSINESS614
QM_PRIO_REGULAR15
QM_PRIO_BACKGROUND16
Таблица - Схема распределения приоритетов

Приоритеты 1 и 2 подвергаются дополнительной обработке как голосовые. По умолчанию пакеты получают приоритет QM_PRIO_REGULAR=15 и обрабатываются соответственно.

 «Qm option»: 

qm option {[-]rtp [-]dot1p [-]tos [-]icmp [-]tcpack [-]strict} [no]tunnel
  • позволяет управлять автоматическим назначением приоритетов потокам данных в устройстве. Опции команды "[-]rtp [-]dot1p [-]tos [-]icmp [-]tcpack" позволяют включить/выключить автоматическое назначение приоритетов пакетам реального времени, пакетам с меткой приоритета стандарта IEEE 802.1p (схема соответствия приоритетов MINT и стандарта IEEE 802.1p приведена ниже), пакетам с меткой TOS, пакетам ICMP, пакетам TCP ACK  соответственно.
  • опция "[-]strict" означает, что для всех очередей будет применяться политика "Strict Priority" (т.е. пока более приоритетная очередь не пуста остальные очереди вообще не обрабатываются). В противном случае (по умолчанию) применяется политика "Weighted Fair Queuing" (т.е. даже если более приоритетная очередь не пуста пакеты из других очередей будут обрабатываться в определенной последовательности относительно более приоритетной очереди). Например, 4 пакета из очереди с приоритетом 1 – 1 пакет из очереди с приоритетом 2, 8 пакетов из очереди с приоритетом 1 – 1 пакет из очереди с приоритетом 3).
  • опция "[no]tunnel" позволяет автоматически назначить приоритет всему трафику, относящемуся к туннелям. Значение по умолчанию – выкл.
MINTIEEE 802.1p
QM_PRIO_REGULAR0 BE Best Effort
QM_PRIO_BACKGROUND1 BK Background
QM_PRIO_BUSINESS12 EE Excellent Effort
QM_PRIO_QOS13 CA Critical Applications
QM_PRIO_VIDEO4 VI Video
QM_PRIO_VOICE5 VO Voice
QM_PRIO_NETCRIT6 IC Internetwork Control
QM_PRIO_SYS17 NC Network Control
Таблица - Схема соответствия приоритетов MINT и стандарта IEEE 802.1p

Например, на узле настроена автоматическая приоритезация пакетов с меткой приоритета стандарта IEEE 802.1p. На узел приходит пакет с меткой приоритета IEEE 802.1p «5 VO Voice». Тогда узел присвоит ему приоритет «QM_PRIO_VOICE» и согласно схеме распределения приоритетов, этот пакет будет обработан раньше пакетов с другими приоритетами. 

Классификация пакетов может также выполняться с помощью "pcap" фильтров.

ПРЕДОСТЕРЕЖЕНИЕ

Реальная приоритезация внутри сети MINT осуществляется по приоритету, заданному параметром "pri=N". Метка DSCP прозрачно передаётся через сеть MINT в любом режиме её работы. Приоритет 802.1p прозрачно передаётся только при работе в режиме коммутатора. При необходимости, на выходе из сети MINT можно назначить требуемые параметры "dot1p" и "dscp", по желанию оператора.

QoS менеджер позволяет составлять достаточно гибкие правила по приоритезации и "перекраске" трафика (см. примеры ниже).

Например,

qm ch1 max=64
qm add eth0 ch1 all from 0/0 to 0/0

При выполнении на абонентском блоке позволяет ограничить весь исходящий трафик клиента величиной 64 Кбит/сек.

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

Трафик сети 1.1.1.0/24 будет менее приоритетным по отношению к всем остальным потокам данных. Обратите внимание на порядок правил. Последнее правило, которому удовлетворяет каждый пакет, должно стоять в конце списка.

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

Абоненты сети 1.1.1.0/24 будут работать через провайдера 10.10.10.10, в то время как абоненты сети 2.2.2.0/24 будут работать через провайдера 20.20.20.20. 

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

qm option –rtp tos

Данная команда отключает автоматическую приоритезацию пакетов реального времени и включает автоматическую приоритезацию TOS.

Кроме того, приоритет пакетов может быть изменен непосредственно, с помощью команд:

qm ch1 addpri=N

Приоритет всех пакетов будет увеличен до значения N, но только в случае если 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

Канал 3 устанавливает приоритет потока "QM_PRIO_VIDEO" и метку "DSCP 11"

qm ch3 pri=3 dscp=11

Канал 4 устанавливает приоритет потока "QM_PRIO_BUSINESS8" и метку "DSCP 51"

qm ch4 pri=16 dscp=51

Пропускаем весь трафик через канал 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

Канал 25 устанавливает 802.1p приоритет пакета. Если заголовка VLAN еще не было, он будет добавлен автоматически

qm ch25 dot1p=5

Канал 26 устанавливает 802.1p приоритет и VLAN ID. Если заголовка VLAN еще не было, он будет добавлен автоматически

qm ch26 vlan=7 dot1p=4

Пакеты, выходящие из сети MINT через интерфейс eth0 и помеченные меткой DSCP 11, помещаем в канал 25

qm addout eth0 ch25 dscp=11 from 0/0 to 0/0

Пакеты, выходящие из сети MINT через интерфейс eth0 и помеченные меткой DSCP 13, помещаем в канал 26

qm addout eth0 ch26 dscp=13 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 class2 max=600 ceil=1000 parent=1 
qm class3 max=300 ceil=1000 ceilprio=1 parent=1 
qm ch1 max=200 ceil=1000 class2 
qm ch2 max=400 ceil=1000 class2
qm ch3 max=100 ceil=300 class3 
qm ch4 max=200 ceil=300 class3

В результате этих команд получится следующая иерархия (см. рисунок), в которой каналы (Ch1 и Ch2), входящие в "Class2", имеют больший приоритет для  занятия свободной полосы пропускания в классе "Class 1" - 1000 Кб/с, чем каналы (Ch3 и Ch4), т.к. "Class 2" имеет больший приоритет, чем "Class 3".

  • No labels