Ситуация такая: есть сетка сервер на FreeBSD с выходом в инет. Выход в инет может иметь разную скорость в зависимости от загрузки прова.Задача правильно разделить всю имеющуюся скорость между юзерами.Собрана система для проверок - два компа 192.168.1.2 и 192.168.1.29 воткнуты в сервер 192.168.1.1 на сервере заданы правила :
ipfw pipe 1 config bw 128Kbit/s
ipfw queue 1 config pipe 1 weight 99 mask dst-ip 0x00000000
ipfw queue 2 config pipe 1 weight 1 mask dst-ip 0x00000000
ipfw add 3000 queue 1 ip from any to 192.168.1.2
ipfw add 3000 queue 2 ip from any to 192.168.1.29
Сервер вторым интерфейсом воткнут в еще один комп, изображающий из себя интернет.
На этом компе заданы правила:
ipfw add 1000 pipe 1000 ip from any to any via ed0 (ed0 карточка воткнутая во второй интерфейс сервера)
ipfw pipe config bw xxxKbit/s
меняя ххх изображаем изменение ширины канала в интернет.
Так вот эффект очень интересный : до тех пор пока ххх больше ширины пайпа на сервере ( в данном случае 128 ) все работает как надо 192.168.1.2 получает 99 пакетов , 192.168.1.29 получает 1 .
Если же ххх установить хотя бы 120 , то все сразу становится очень криво и 192.168.1.2 уже получает 1 пакет , а 192.168.1.29 - 99.
Если установить одинаковые веса ситуация не меняется - все достается одному.
Простейшее решение обрезать самому себе канал до минимума меня как-то не очень устраивает хочется юзать всё.
Может подскажете какое решение? Заранее благодарен.
|