SaBo Posted April 29, 2007 Posted April 29, 2007 (edited) Есть локалка, сервак под FreeBSD 6.2 В сервак в один порт воткнута локалка, в другой АДСЛ модем. Задача динамически поровну делить скорость между всеми юзерами, которые сейчас "в сети". В сетке используются коммутаторы 2-го уровня с VLAN'ом. Неужели никто так и не решил эту задачу? Можно, конечно, фиксировано порезать всем, например, по 100 кбит/сек, но зачем давать меньшую скорость, если половина канала простаивает?.. Edited April 29, 2007 by SaBo Вставить ник Quote
denzz Posted April 29, 2007 Posted April 29, 2007 http://www.opennet.ru/base/net/ipfw_pipe.txt.html и таки gred получше. но и так как описано все работает. Вставить ник Quote
SaBo Posted May 9, 2007 Author Posted May 9, 2007 http://www.opennet.ru/base/net/ipfw_pipe.txt.htmlи таки gred получше. но и так как описано все работает. хм... сделал всё так, как там написано... но... чего-то не работает... и, я так понимаю, ipfw pipe show должен выводить пакеты, находящиеся в очереди... а выводит только 00001: 300.000 KBit/s 0 ms 20 sl 0 queues (1 buckets) droptail Вставить ник Quote
Deac Posted May 9, 2007 Posted May 9, 2007 http://www.opennet.ru/base/net/ipfw_pipe.txt.html и таки gred получше. но и так как описано все работает. хм... сделал всё так, как там написано... но... чего-то не работает... и, я так понимаю, ipfw pipe show должен выводить пакеты, находящиеся в очереди... а выводит только 00001: 300.000 KBit/s 0 ms 20 sl 0 queues (1 buckets) droptail ipfw pipe show - выводит созданные pipes ipfw queue show - выводит пакеты в очереди Вставить ник Quote
SaBo Posted May 10, 2007 Author Posted May 10, 2007 (edited) ipfw pipe show - выводит созданные pipesipfw queue show - выводит пакеты в очереди ок, спасибо :) Edited May 10, 2007 by SaBo Вставить ник Quote
SaBo Posted May 10, 2007 Author Posted May 10, 2007 Ещё раз перечитал комменты к статье. И понял, что надо было сделать так: ${ipfw} pipe 1 config bw 300Kbit/s queue 20 ${ipfw} queue 1 config pipe 1 weight 50 queue 20 mask dst-ip 0xffffffff ${ipfw} queue 11 config pipe 1 weight 50 queue 20 mask src-ip 0xffffffff ${ipfw} add queue 1 ip from any to 192.168.2.0/30 ${ipfw} add queue 11 ip from 192.168.2.0/30 to any Теперь даже ipfw queue show начал что-то показывать :) Вставить ник Quote
SaBo Posted May 10, 2007 Author Posted May 10, 2007 И ещё такой вопросик :) У меня есть 3 vlan'а: vlan0 | 192.168.2.1 | 255.255.255.252 vlan1 | 192.168.2.5 | 255.255.255.252 vlan2 | 192.168.2.6 | 255.255.255.252 Как сделать так, что бы они все в это правило добавлялись автоматически. Ну, например, я задаю массив с IPшниками и подставляю его. ${ipfw} add queue 1 ip from any to 192.168.2.0/30 ${ipfw} add queue 11 ip from 192.168.2.0/30 to any ключевое слово to any т.е. это получается ограничение скорости на всё, в т.ч. и на сетевые мосты. А как сделать так, что бы ограничение было только на Интернет?.. Вставить ник Quote
denzz Posted May 10, 2007 Posted May 10, 2007 (edited) т.е. это получается ограничение скорости на всё, в т.ч. и на сетевые мосты. А как сделать так, что бы ограничение было только на Интернет?.. например так /sbin/ipfw add 8400 queue 1 tcp from any to "192.168.99.0/24{2-254}" via fxp0 /sbin/ipfw add 8500 queue 11 tcp from "192.168.99.0/24{2-254}" to any via fxp0 кстати, по греду я нашел гдето такие параметры /sbin/ipfw queue 1 config pipe 1 weight 50 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff /sbin/ipfw queue 11 config pipe 2 weight 50 gred 0.002/10/30/0.1 mask src-ip 0xffffffff вроде нормально получается. Edited May 10, 2007 by denzz Вставить ник Quote
SaBo Posted May 15, 2007 Author Posted May 15, 2007 Чего-то не получается... Вроде как эта фича должна динамически делить канал. Т.е. если канал полностью свободен, то он весь отдаётся отдному юзеру. Когда включаю всю эту фигню в настройки, то скорость скачки на компьютере падает (была 40, стала 8), если ведётся две закачки одновременно, то скорость каждой ~ по 8 8х2=16 16х8=128КБит/сек зы. при канале >300 КБит/сек Вставить ник Quote
SaBo Posted May 15, 2007 Author Posted May 15, 2007 Самое что интересное, когда на серваке ставлю канал=1000, то скорость закачки на компьютере опять становится максимальной (чуть больше 40Кб/сек) Вставить ник Quote
SaBo Posted May 15, 2007 Author Posted May 15, 2007 Начал по-нормальному динамически распределять скорость только тогда, котгда я поставил ${ipfw} pipe 1 config bw 600Kbit/s queue 20 т.е. 300(скорость входящего трафика)+300(скорсоть исходящего трафика) = 600 (скорость, которую я выставил) Теперь когда качаю на одном компьютере, то он занимает весь канал, когда на двух, они делят по полам, когда на трёх - они делят на троих :) Вставить ник Quote
denzz Posted May 16, 2007 Posted May 16, 2007 ты запихал в один pipe и вход и выход. немудрено, что получилось 600 при дуплексном канале. разбей на два пайпа ${ipfw} pipe 1 config bw 300Kbit/s queue 20 ${ipfw} pipe 2 config bw 300Kbit/s queue 20 ${ipfw} queue 1 config pipe 1 weight 50 queue 20 mask dst-ip 0xffffffff ${ipfw} queue 11 config pipe 2 weight 50 queue 20 mask src-ip 0xffffffff ${ipfw} add queue 1 ip from any to 192.168.2.0/30 ${ipfw} add queue 11 ip from 192.168.2.0/30 to any Вставить ник Quote
SaBo Posted May 16, 2007 Author Posted May 16, 2007 Ага, я так и решил сделать :) Тем блее, что в том месте, где будет стоять сервак (вернее уже установлен) у канала скорость входщая/исходящая разная. Вставить ник Quote
Angel_ Posted May 17, 2007 Posted May 17, 2007 А Какого решание данной задачи на Linux? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.