Стоит следующая задача. Локальная сеть состоит из порядка 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? Или, возможно, есть другой, более
рациональный, способ ограничения ширины полосы пропускания?
http://www.opennet.me/docs/RUS/iptables/#TABLE.LIMITMATCH
>http://www.opennet.me/docs/RUS/iptables/#TABLE.LIMITMATCH
Уважаемый, Батва, руководство Iptables Tutorial мне знакомо, пользовался им многократно. Критерий -m limit оперирует количеством пакетов в единицу времени, а мне нужны байты. Потянет ли iptables 5000 правил такого рода? Ну и хорошо бы привести пример как Вы это реализуете.