URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 71652
[ Назад ]

Исходное сообщение
"Аналог FreeBSD ipfw pipe в Linux"

Отправлено sire , 23-Янв-07 21:51 
Стоит следующая задача. Локальная сеть состоит из порядка 10 подсетей,
в каждой примерно по 4000 IP-адресов, реально компьютеров примерно по
300 в каждой из подсетей. Для каждого компьютера каждой подсети необходимо
индивидуально ограничить полосу пропускания. Для компьютеров, принадлежащих
одной подсети, параметры шейпинга одинаковы.

Если назначать шейпинг на подсеть - компьютеры одной подсети будут делить
между собой назначенную полосу. Если задавать отдельные правила шейпинга
для каждого адреса каждой подсети - tc отказывается добавлять правила при
примерно 10000 правил (может и меньше, точно не знаю). Кроме того, при
количестве правил tc порядка нескольких тысяч даже неслабый комп под
нагрузкой затыкается до полной потери интерактивности. В этой же ситуации
под управлением FreeBSD процессор загружен менее чем на 10%.

В FreeBSD всё делается просто:
ipfw add 800 pipe 10 ip from any to 10.1.128.0/20
ipfw pipe 10 config bw 128Kbit/s mask dst-ip 0x0000ffff

Вторая команда создаёт отдельный "канал" для каждого адреса подсети
10.1.128.0/20, попадающего под маску 0x0000ffff. При этом добавление
правил происходит быстро (всего два правила), и много памяти не тратится.

Есть ли в Linux аналог маски в pipe? Или, возможно, есть другой, более
рациональный, способ ограничения ширины полосы пропускания?


Содержание

Сообщения в этом обсуждении
"Аналог FreeBSD ipfw pipe в Linux"
Отправлено Batva , 23-Янв-07 23:09 
http://www.opennet.me/docs/RUS/iptables/#TABLE.LIMITMATCH

"Аналог FreeBSD ipfw pipe в Linux"
Отправлено sire , 19-Фев-07 15:59 
>http://www.opennet.me/docs/RUS/iptables/#TABLE.LIMITMATCH


Уважаемый, Батва, руководство Iptables Tutorial мне знакомо, пользовался им многократно. Критерий -m limit оперирует количеством пакетов в единицу времени, а мне нужны байты. Потянет ли iptables 5000 правил такого рода? Ну и хорошо бы привести пример как Вы это реализуете.