Ключевые слова:cbq, shaper, bandwidth, linux, limit, (найти похожие документы)
From: http://freeunix.unicor.ru/Subject: Настройка ограничения трафика в Linux через скрипт cbq.init
/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:
----------8<---------------------
DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.0/24
----------8<---------------------
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]
---------
---8<-----/etc/sysconfig/cbq/cbq-28.client-out----
DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.1
---8<---------------------------------------------
---8<-----/etc/sysconfig/cbq/cbq-128.client-in----
DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.168.1.1,
---8<---------------------------------------------
^обратите внимание на "," - это адрес клиента-отправителя!