Эта дисциплина может с успехом применяться в тех случаях, когда необходимо "раскидать" трафик по приоритетам, основываясь не только на флагах TOS. Вы можете так же добавить другие дисциплины к предопределенным классам, что повысит возможности управления трафиком, по сравнению с pfifo_fast.
Поскольку данная дисциплина не имеет возможности шейпинга трафика, считаю своим долгом предупредить вас: используйте эту дисциплину только в том случае, если она полностью соответствует вашим требованиям, либо присоединяйте ее к классовым дисциплинам, которые могут выполнять шейпинг. Последнее замечание относится к владельцам кабельных модемов или DSL устройств.
Формально, дисциплина PRIO относится к разряду планировщиков типа Work-Conserving.
9.5.3.1. Параметры и порядок использования дисциплины PRIO.
Применительно к данной дисциплине, утилита tc допускает следующие параметры:
>bands
Число создаваемых полос. Каждая полоса фактически является классом. Если вы изменяете это число, то вы должны так же изменить и следующий параметр.
>priomap
Если ваша конфигурация не предусматривает наличие фильтров, выполняющих классификацию трафика, то дисциплина PRIO присваивает приоритеты по-умолчанию.
Все это работает точно так же, как и в случае с pfifo_fast.
Каждая полоса является классом и имеет свой дескриптор, начиная с <старший_номер>:1 и заканчивая <старший_номер>:3, по умолчанию. Таким образом, если дисциплине PRIO присвоен дескриптор 12: , то класс-полоса с наивысшим приоритетом получит дескриптор 12:1.
Повторюсь еще раз, полоса 0 получит младший номер дескриптора — 1! Полоса 1 — 2 и так далее.
9.5.3.2. Пример конфигурации.
В качестве примера создадим такое дерево:
> 1: корневая дисциплина
> / | \
> / | \
> / | \
> 1:1 1:2 1:3 классы
> | | |
> 10: 20: 30: дисциплины
> sfq tbf sfq
>полоса 0 1 2
Объемный трафик будет обслуживаться дисциплиной 30: , интерактивный — 20: или 10:.
Конфигурирование:
># tc qdisc add dev eth0 root handle 1: prio
>## Эта команда создаст классы 1:1, 1:2, 1:3
># tc qdisc add dev eth0 parent 1:1 handle 10: sfq
># tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 20kbit buffer 1600 limit 3000
># tc qdisc add dev eth0 parent 1:3 handle 30: sfq
Теперь посмотрим – что у нас получилось:
># tc –s
>qdisc ls dev eth0 qdisc sfq 30: quantum 1514b
>Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
>qdisc tbf 20: rate 20Kbit burst 1599b lat 667.6ms
>Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
>qdisc sfq 10: quantum 1514b