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

Исходное сообщение
"ipfw tables и pipe"

Отправлено Дима , 16-Май-07 21:34 
У нас есть куча правил для клиентов, типа:

ipfw pipe 1000 config bw 512Kbit/s
ipfw add 1000 pipe 1000 ip from any to  192.168.0.10
ipfw add 1000 allow  all from 192.168.0.10 to any

ipfw pipe 1001 config bw 512Kbit/s
ipfw add 1001 pipe 1000 ip from any to  192.168.0.10
ipfw add 1001 allow  all from 192.168.0.10 to any

Т.е. мы каждому юзеру создаем правила для доступа в нет и урезаем входящий канал до 512кбит/c
Но правил не мало ( больше 2000 ), и хочеться как-то их оптимизировать для более быстрой работы.

Хотелось бы использовать tables в ipfw, есть примеры, но не уверенн, вот пример:

ipfw table 1 add 192.168.0.10
ipfw table 1 add 192.168.0.11

ipfw pipe 1000 config bw 512Kbit/s mask src-ip 0xffffff00

ipfw add 1000 pipe 1000 ip from any to "table(1)"
ipfw add 1001 allow ip from "table(1)" to any

Так вот, в этом случае, каждому из ip-адресов будет выдан канал в 512 кбит, или на все вместе???


Содержание

Сообщения в этом обсуждении
"ipfw tables и pipe"
Отправлено butcher , 17-Май-07 18:36 
>У нас есть куча правил для клиентов, типа:
>
>ipfw pipe 1000 config bw 512Kbit/s
>ipfw add 1000 pipe 1000 ip from any to  192.168.0.10
>ipfw add 1000 allow  all from 192.168.0.10 to any
>
>ipfw pipe 1001 config bw 512Kbit/s
>ipfw add 1001 pipe 1000 ip from any to  192.168.0.10
>ipfw add 1001 allow  all from 192.168.0.10 to any
>
>Хотелось бы использовать tables в ipfw, есть примеры, но не уверенн, вот
>пример:

Можете заменить это на такой набор:
ipfw pipe 1000 config bw 512Kbit/s
ipfw pipe 1001 config bw 512Kbit/s
ipfw pipe 1002 config bw 512Kbit/s

ipfw table 1 add 192.168.0.10 1000
ipfw table 1 add 192.168.0.11 1001
ipfw table 1 add 192.168.0.12 1002

ipfw add pipe tablearg ip from any to table(1)
ipfw add allow ip from table(1) to any


"ipfw tables и pipe"
Отправлено Serga , 23-Июл-07 21:38 
>[оверквотинг удален]
>ipfw table 1 add 192.168.0.10
>ipfw table 1 add 192.168.0.11
>
>ipfw pipe 1000 config bw 512Kbit/s mask src-ip 0xffffff00
>
>ipfw add 1000 pipe 1000 ip from any to "table(1)"
>ipfw add 1001 allow ip from "table(1)" to any
>
>Так вот, в этом случае, каждому из ip-адресов будет выдан канал в
>512 кбит, или на все вместе???

Пример не будет работать, т.к.
маску надо уж тогда ставить 0xffffffff, если хочешь на каждого клиента резать.
При этом, если тебе надо входящий юзеру резать, то надо dst-ip.
Если исходящий , то в твоем примере правила наоборот должны быть , т.е.
ipfw add 1000 allow ip from any to "table(1)"
ipfw add 1001 pipe 1000 ip from "table(1)" to any

Если на всех резать полосу, то маску вообще не надо . Но тебе тогда надо с очередью возиться, иначе пакеты от такого количества клиентов отбрасываться будут.
При этом , раз у тебя такая куча правил, то тебе еще надо смотреть системные переменные влияющие на динамические правила , т.е.
net.inet.ip.dummynet.hash_size по умолчанию 64, тебе будет мало надо будет до 2048 увелич.
net.inet.ip.fw.dyn_buckets тоже увелич. до 2048