Оглавление |
Название
qm - QoS (Quality of Service) менеджерСинтаксис
qm chN max=N pri=N to=ADDR clearОписание
qm del N
qm mov N M
qm add [ifname] chN rule...
QoS менеджер представляет собой удобный и гибкий механизм манипуляции потоками данных, проходящими через маршрутизатор.
Концепция этого механизма заключается в следующем:
В системе существует несколько (64) программных каналов, каждый из которых может обладать некоторыми свойствами. С помощью специальных правил, можно заставить некоторые пакеты, проходящие через маршрутизатор, проходить через тот или иной канал и, тем самым, изменять свойства самого пакета или потока, которому он принадлежит.
Количество свойств, которыми обладают каналы, будет расширяться по мере развития системы.Команда "qm chN max=N pri=N to=ADDR clear" описывает один программный канал.
Номер канала (1..64) задаётся параметром chNПараметр max=N устанавливает максимальную скорость потока для данного канала (килобит/сек). Может принимать значения от 20 до 2000. При установке в 0 (ноль) отменяет ограничение по скорости.
Параметр pri=N устанавливает приоритет потока для данного канала (1..255). Меньшее числовое значение определяет больший приоритет. При установке в 0 (ноль) отменяет приоритетную обработку канала.
Параметр to=ADDR позволяет перенаправить весь поток на другой адрес, вне зависимости от сложившихся условий маршрутизации. Адрес ADDR должен быть непосредственно достижим через один из интерфейсов маршрутизатора (без дополнительной маршрутизации).
Эту опцию можно использовать, например, в случае использования маршрутизатора в качестве блока доступа к сети, когда два или более различных клиентов хотят пользоваться услугами разных провайдеров через один блок.Параметр clear снимает все установки и освобождает канал.
При одновременном указании нескольких параметров, порядок обработки следующий: сначала отрабатывается ограничение по скорости, затем переадресация, а потом приоритет.
Внимание.
Команда "qm add [ifname] chN rule..." позволяет подключить пакет, удовлетворяющий правилу "rule" к каналу N. Дополнительно может быть указано имя интерфейса, через который пакет попадает в систему (ifname). Синтаксис правил, описывающих пакет, полностью соответствует синтаксису команды ipfw.
- Ключевые слова и значения параметров пишутся слитно, без обрамляющих пробелов вокруг знака "=".
- Все необходимые опции команды должны быть указаны в одной строке.
Команда "qm del N" удаляет правило N из списка.
Команда "qm mov N M" перемещает правило N в позицию M.
Номера правил можно посмотреть командой config show.
Следует иметь в виду, что во время работы каждый пакет, проходящий через систему, проверяется на соответствие правилам строго по порядку, от к первого до последнего, пока не встретится правило удовлетворяющее свойствам пакета, либо до конца списка.
Порядок правил существенно важен для правильной работы, поэтому следует очень внимательно следить за этим.Примеры:
qm ch1 max=64
qm add eth0 ch1 all from 0/0 to 0/0
При выполнении на абонентском блоке позволяет ограничить весь исходящий трафик клиента величиной 64 Кбит/сек.qm ch1 pri=10
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=10
qm ch1 pri=20
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 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
В более сложном случае, когда маршрутизаторы провайдеров не достижимы непосредственно с данного узла, следовало бы сначала организовать туннели до выбранных провайдеров, а уже потом выполнять переадресацию.