Механизм CBQ (Class Based Queueing).

Автор: Автор не известен (http://freeunix.unicor.ru)

 

/etc/sysconfig/cbq/cbq-<класс>.<комментарии>

В каталоге /etc/sysconfig/cbq/ описываются шейпера - логические устройства, управляющие траффиком в физическом интерфейсе (например eth0). Для этого используется механизм CBQ (Class Based Queueing), который позволяет классифицировать пользовательский траффик и управлять им, присваивая конкретному классу различные характеристики, такие как пропускная способность, приоритет, способ взаимодействия с другими классами. Таким образом, используя механизм CBQ можно описать некий класс и присвоить ему определенную пропускную способность. Для построения шейпера (устройства, ограничивающего траффик) необходимо описать его характеристики в файле конфигурации cbq-<класс>.<комментарии>.

cbq-1280.My_first_shaper

^^^ ^^^  ^^^^^^^^^^^^^
 |  |            |______ Название шейпера, любое слово
 |  |___________________ ID класса (0000 - FFFF)
 |______________________ Имя файла конфигурации должно начинаться с "cbq-"

Проще всего это рассмотреть на примере:

/cbq/cbq-1280.My_first_shaper:


DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.0/24

DEVICE=eth0,10Mbit,1Mbit
eth0 - физическое устройство, на котором будет создан шейпер
10Mbit - реальная скорость интерфейса
1Mbit - так называемый "вес" класса :1 , который является родительским классом для всех шейперов, работающих на данном интерфейсе. Обычно эта величина берется из расчета "реальная скорость/10" т.е. в 10 раз меньше реальной скорости физического интерфейса.
*** Если вы хотите создать на одном физическом интерфейсе несколько шейперов, достаточно лишь в одном файле конфигурации описать DEVICE полностью. В остальных можно ограничится лишь DEVICE=eth0.

RATE=128Kbit
128Kbit - пропускная способность шейпера - в Mbit, Kbit или bps (байт в секунду)

WEIGHT=10Kbit
10Kbit - "вес" шейпера - аналогично весу родительского класса, т.е. в десять раз меньше пропускной способности _шейпера_.

PRIO=5
Приоритет шейпера - от 1 до 8. 1 - высший приоритет.

RULE=192.168.1.0/24
192.168.1.0/24 - адрес назначения пакетов, для которых шейпер будет ограничивать скорость.
Формат записи RULE следующий:
[source addr][:source port],[dest addr][:dest port], где
source addr - IP адрес интерфейса, который отправил пакет
source port - порт, с которого пакет покинул интерфейс
dest addr - IP адрес назначения
dest port - порт назначения

Несколько примеров RULE:

RULE=10.1.1.0/24:80
весь траффик в сторону сети 10.1.1.0 и с портом назначения 80 будет ограничиваться шейпером.

RULE=10.2.2.5
шейпер будет работать только для пакетов с адресом назначения 10.2.2.5

RULE=:25,10.2.2.128/25:5000
весь траффик с порта 25 с адресом назначения 10.2.2.128-10.2.2.255 и портом назначения 5000 будет ограничен пропускной способностью шейпера

RULE=10.5.5.5:80
траффик с адреса 10.5.5.5 и порта 80 будет ограничен шейпером.

В одном шейпере может быть несколько правил RULE:
RULE=10.1.1.2:80
RULE=10.1.1.2:25
RULE=10.1.1.2:110

ВНИМАНИЕ: Шейпер работает только на _исходящий_ траффик. Для того, чтобы ограничить траффик в двух направлениях, необходимо создать аналогичный шейпер на втором физическом интерфейсе. Для примера рассмотрим вариант, когда нам необходимо ограничить траффик в сторону клиента до 28Kbit, а траффик от клиента - до 128Kbit:

                    ---------             192.168.1.1
BACKBONE -----eth0-|  linux  |-eth1------*[our client]
                    ---------

/etc/sysconfig/cbq/cbq-28.client-out


DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.1

/etc/sysconfig/cbq/cbq-128.client-in


DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.1,
                ^обратите внимание на "," - это адрес клиента-отправителя!

 

 


Вернуться в начало:

Rambler's Top100