канал 320/320 Kbit/s - 4 человека, 1 качалка (mldonkey) ... Вопросы ниже )
Код: Выделить всё
net.inet.ip.fw.one_pass: 0
net.inet.ip.dummynet.io_fast=1
Код: Выделить всё
rc.firewall
#!/bin/sh -
f='/sbin/ipfw'
${f} -f flush
${f} -f queue flush
${f} -f pipe flush
${f} -f table 1 flush
${f} -f table 2 flush
${f} -f table 3 flush
vpnnet="192.168.200.0/29"
ipinet="212.98.XXX.XXX"
if_inet="ng0"
# only our net to inet
${f} add allow all from ${ipinet} to any out via ng0
${f} add deny all from not ${vpnnet} to any out via ng0
# Две трубы, одна на аплоад, другая на доунлоад
# Для трубы внутренняя очередь - может быть в слотах или в байтах. Слоты в байты переводим - слот x MTU.
# для нашего случая - время заполнения очереди в трубе - ( 24Kbytes * 8 ) /320Kbit/s = 0.6 sec
${f} pipe 1 config bw 320Kbit/s queue 24Kbytes
${f} pipe 11 config bw 320Kbit/s queue 24Kbytes
# очереди с приоритетами. Тут свои очереди - 30x1500x8 / max 320 <= 1,2 sec
# VIP
${f} queue 2 config pipe 1 weight 80 queue 30 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
${f} queue 21 config pipe 11 weight 80 queue 30 mask src-ip 0xffffffff gred 0.002/10/30/0.1
# users
${f} queue 3 config pipe 1 weight 50 queue 30 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
${f} queue 31 config pipe 11 weight 50 queue 30 mask src-ip 0xffffffff gred 0.002/10/30/0.1
# mldonkey
${f} queue 4 config pipe 1 weight 1 queue 30 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
${f} queue 41 config pipe 11 weight 1 queue 30 mask src-ip 0xffffffff gred 0.002/10/30/0.1
# shaper out
${f} add queue 21 ip from "table(1)" to any out via ${if_inet}
${f} add queue 31 ip from "table(2)" to any out via ${if_inet}
${f} add queue 41 ip from "table(3)" to any out via ${if_inet} uid downloader
# NAT
${f} add divert 8778 ip from ${vpnnet} to any out via ${if_inet}
${f} add divert 8778 ip from any to ${ipinet} in via ${if_inet}
# shaper in
${f} add queue 2 ip from any to "table(1)" in via ${if_inet}
${f} add queue 3 ip from any to "table(2)" in via ${if_inet}
${f} add queue 4 ip from any to "table(3)" in via ${if_inet} uid downloader
# load tables
/etc/fw/addtable.sh
Код: Выделить всё
01100 16164 8671027 allow ip from 212.98.175.79 to any out via ng0
01200 240 11652 deny ip from not 192.168.200.0/29 to any out via ng0
01300 80 8016 queue 21logamount 1 ip from table(1) to any out via ng0
01400 24 2045 queue 31 logamount 1 ip from table(2) to any out via ng0
01500 0 0 queue 41 logamount 1 ip from table(3) to any out via ng0 uid downloader
01600 80 8016 divert 8778 ip from 192.168.200.0/29 to any out via ng0
01700 18004 13494255 divert 8778 ip from any to 212.98.XXX.YYY in via ng0
01800 83 56092 queue 2 ip from any to table(1) in via ng0
01900 23 2435 queue 3 ip from any to table(2) in via ng0
02000 17563 13399736 queue 4 ip from any to table(3) in via ng0 uid downloader
65535 704154 329312864 allow ip from any to any
1) первым дело сделали трубы по 1024 и очередь к ним по 50Kb
2) а вот что делать с gred 0.002/10/30/0.1 и очередью... пробывал менять на queue 90 и гред 0.002/30/90/0.1 - реально работает медленнее чем 320... downloader перетягивает канал на себя...

вопросы:
1) почему в правиле 1500 ноль по счетчику? неужели оно не обрабатывается?
2) какие параметры лучше выставит для 1024/1024
3) как можно ограничить количество исходящиз tcp ссесий от конкретного ip пробывал пере shaper out прописывать правило
Код: Выделить всё
allow ip from 192.168.200.1/32 to any limit src-addr 10
кроме того когда его вводишь вообще не работает инет у 200.1