Jak nahradit LINUX IMQ ve FBSD

Ivan Cícha cichas at seznam.cz
Sun Mar 11 22:44:09 CET 2007


DD,
vas dotaz je ponekud moc obecny. Predpokladam, ze chcete QUEUE. Nasledujici priklad rozdeli obousmerne celkove pasmo na 3 dily. Pokud nektera sitovka sve pasmo nepouziva, tak ostatni dostanou garantovane svych 33% a o zbytek pasma se mezi sebou poperou.

# Kolik muzeme rozdelovat
ipfw pipe 1 config bw 256Kbit/s queue 64KBytes
ipfw pipe 2 config bw 256Kbit/s queue 64KBytes

#eth1
ipfw queue 64001 config pipe 1 weight 33 queue 32Kbytes
ipfw queue 64002 config pipe 2 weight 33 queue 32Kbytes
ipfw add 00901 queue 64001 ip from any to 192.168.1.0/24 out
ipfw add 00902 queue 64002 ip from 192.168.1.0/24 to any in

#eth2
ipfw queue 64003 config pipe 1 weight 33 queue 32Kbytes
ipfw queue 64004 config pipe 2 weight 33 queue 32Kbytes
ipfw add 00903 queue 64003 ip from any to 192.168.2.0/24 out
ipfw add 00904 queue 64004 ip from 192.168.2.0/24 to any in

#eth3
ipfw queue 64005 config pipe 1 weight 33 queue 32Kbytes
ipfw queue 64006 config pipe 2 weight 33 queue 32Kbytes
ipfw add 00905 queue 64005 ip from any to 192.168.3.0/24 out
ipfw add 00906 queue 64006 ip from 192.168.3.0/24 to any in


Poznamky:
1)
weight: muzete si tam dat jake cislo chcete. Dana queue pak dostane garantovane z dane pipe "soucet vsech"/"jeji cislo"
Doporucuji aby soucet vsech weight v jednom smeru byl 100 - pak weight znamena procenta z dane pipe. Takze pak nepremyslite kolik je treba deset setnactin z megabitu...

2)
muzete delat i hierarchicke shapovani/garantovani (pipe pro cely provoz, za ni pipe/queue pro jednotlive IP etc). Staci sysctl net.inet.ip.fw.one_pass=0
Dummynet potom pakety neakceptuje. Jen si dela svuj shaping. Je tedy potreba za kazde koncove queue/pipe pravidlo pridat ipfw add allow xy
V ipfw2/dummynet (FreeBSD>4) je bohuzel bug zahazujici pakety ve vsech dummynet frontach pri reloadu FW s mracnem hlasek do messages...

3)
Nezapomente na options HZ=1000 do jadra. Jinak pridavate ke kazdemu paketu v jednom smeru cca 10ms zpozdeni.

4)
Nepouzivejte queues/pipes tam kde zalezi na zpozdeni. Pokud udelate treba 64kbit/s diru, tak pro 1500B pakety automaticky pridavate v jednom smeru zpozdeni cca 187ms ( 1000ms / (64000dira / (1500B*8) )


-- 
  Ivan Cicha



More information about the Users-l mailing list