Linux Advanced Routing & Traffic Control HOWTO (Hubert, Graf) - страница 42

Эта дисциплина может с успехом применяться в тех случаях, когда необходимо "раскидать" трафик по приоритетам, основываясь не только на флагах 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