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

Исходное сообщение
"проблема с pipe в FreeBSD"

Отправлено netop , 30-Янв-07 12:48 
У меня есть канал 1024Кбит/с, нужно разделить его между пользователями, так чтобы у одних была скорость 80Кбит/с, у других 64Кбит/с а у третих - 32Кбит/с.
Почитал статьи насчет использования pipe - мало что понял :( Мне для каждого пользователя создавать свой пайп, или очередями это делать? Можно примерчик?

Вот как я это думаю:
#user1
ipfw pipe 1 config bw 80Kbit/s queue 20
ipfw queue  1 config pipe 1 weight 50 queue 20
ipfw add queue  1 ip from 192.168.1.1 to any
....
#user55
ipfw pipe 55 config bw 64Kbit/s queue 20
ipfw queue  55 config pipe 55 weight 50 queue 20
ipfw add queue  55 ip from 192.168.1.97 to any

Мне кажется - так работать не будет, особенно если юзеров больше, чем пропускная способность канала, как еще можно?
Подскажите пожалуйста!!!


Содержание

Сообщения в этом обсуждении
"проблема с pipe в FreeBSD"
Отправлено Kos , 30-Янв-07 13:55 
>У меня есть канал 1024Кбит/с, нужно разделить его между пользователями, так чтобы
>у одних была скорость 80Кбит/с, у других 64Кбит/с а у третих
>- 32Кбит/с.
>Почитал статьи насчет использования pipe - мало что понял :( Мне для
>каждого пользователя создавать свой пайп, или очередями это делать? Можно примерчик?
>
>
>Вот как я это думаю:
>#user1
>ipfw pipe 1 config bw 80Kbit/s queue 20
>ipfw queue  1 config pipe 1 weight 50 queue 20
>ipfw add queue  1 ip from 192.168.1.1 to any
>....
>#user55
>ipfw pipe 55 config bw 64Kbit/s queue 20
>ipfw queue  55 config pipe 55 weight 50 queue 20
>ipfw add queue  55 ip from 192.168.1.97 to any
>
ipfw add pipe 1 tcp from IP_serv to IP_cli1,IP_cli2,IP_cli3
ipfw add pipe 2 tcp from IP_serv to IP_cli4,IP_cli5,IP_cli6

ipfw pipe 1 config bw 80Kb/s
ipfw pipe 2 config bw 64Kb/s

>Мне кажется - так работать не будет, особенно если юзеров больше, чем
>пропускная способность канала, как еще можно?
>Подскажите пожалуйста!!!

А причем тут пропускная способность? Она что, меньше чем 80Kb/s :)


"проблема с pipe в FreeBSD"
Отправлено netop , 30-Янв-07 15:44 
>ipfw add pipe 1 tcp from IP_serv to IP_cli1,IP_cli2,IP_cli3
>ipfw add pipe 2 tcp from IP_serv to IP_cli4,IP_cli5,IP_cli6
>
>ipfw pipe 1 config bw 80Kb/s
>ipfw pipe 2 config bw 64Kb/s

А разве так получится на каждого юзера по 80Кбит/с? Я думал что если так сделать, то 80Кбит будут делится на IP_cli1,IP_cli2 и IP_cli3 ! Или я ошибаюсь?


"проблема с pipe в FreeBSD"
Отправлено mummy , 30-Янв-07 15:39 
#Allows to use more than 1 pipe for packet
/sbin/sysctl net.inet.ip.fw.one_pass=0

#External interface, please change this value!
ipfw add allow ip from any to any via rl0

#users 80Kbit
ipfw pipe 3 config mask dst-ip 0xffffffff bw 80Kbit/s
ipfw pipe 4 config mask src-ip 0xffffffff bw 80Kbit/s
ipfw add pipe 3 ip from any to 192.168.1.1,192.168.1.2,192.168.1.3 out #To client
ipfw add pipe 4 ip from 192.168.1.1,192.168.1.2,192.168.1.3 to any in  #From client

#users 64Kbit
ipfw pipe 5 config mask dst-ip 0xffffffff bw 64Kbit/s
ipfw pipe 6 config mask src-ip 0xffffffff bw 64Kbit/s
ipfw add pipe 5 ip from any to 192.168.1.4,192.168.1.5,192.168.1.6 out #To client
ipfw add pipe 6 ip from 192.168.1.4,192.168.1.5,192.168.1.6 to any in  #From client

#users 32Kbit
ipfw pipe 7 config mask dst-ip 0xffffffff bw 64Kbit/s
ipfw pipe 8 config mask src-ip 0xffffffff bw 64Kbit/s
ipfw add pipe 7 ip from any to 192.168.1.7,192.168.1.7,192.168.1.7 out #To client
ipfw add pipe 8 ip from 192.168.1.7,192.168.1.7,192.168.1.7 to any in  #From client

#Queue for max 1024Kbit/s download and max 1024Kbit/s upload
ipfw queue 1 config pipe 1 mask dst-ip 0xffffffff
ipfw pipe 1 config bw 1024Kbit/s
ipfw queue 2 config pipe 2 mask src-ip 0xffffffff
ipfw pipe 2 config bw 1024Kbit/s
ipfw add queue 1 ip from any to 192.168.1.0/24 out #To client
ipfw add queue 2 ip from 192.168.1.0/24 to any in  #From client

Если списки адресов (192.168.1.1,192.168.1.2,192.168.1.3) будут слишком длинными, рекомендую использовать table:
ipfw add pipe 3 ip from any to "table(1)" out #To client
ipfw add pipe 4 ip from "table(1)" to any in  #From client
ipfw table 1 add 192.168.1.1
ipfw table 1 add 192.168.1.2
ipfw table 1 add 192.168.1.3
...


"проблема с pipe в FreeBSD"
Отправлено netop , 30-Янв-07 15:50 
>#users 80Kbit
>ipfw pipe 3 config mask dst-ip 0xffffffff bw 80Kbit/s
>ipfw pipe 4 config mask src-ip 0xffffffff bw 80Kbit/s
>ipfw add pipe 3 ip from any to 192.168.1.1,192.168.1.2,192.168.1.3 out #To client
>
>ipfw add pipe 4 ip from 192.168.1.1,192.168.1.2,192.168.1.3 to any in  #From
>client

Вот это уже похоже на правду!!!! Огромаднейшее спасибо mummy !!!!!
Сейчас буду делать :)


"проблема с pipe в FreeBSD"
Отправлено netop , 30-Янв-07 20:42 
А если я хочу разделить канал! Т.е одной сети дать 512К и другой столько-же, мне тогда делать:
#Queue for max 512Kbit/s download and max 512Kbit/s upload
ipfw queue 1 config pipe 1 mask dst-ip 0xffffffff
ipfw pipe 1 config bw 512Kbit/s
ipfw queue 2 config pipe 2 mask src-ip 0xffffffff
ipfw pipe 2 config bw 512Kbit/s
ipfw add queue 1 ip from any to 192.168.1.0/24 out #To client
ipfw add queue 2 ip from 192.168.1.0/24 to any in  #From client

И тоже самое для другой сети?
#Queue for max 512Kbit/s download and max 512Kbit/s upload
ipfw queue 3 config pipe 1 mask dst-ip 0xffffffff
ipfw pipe 3 config bw 512Kbit/s
ipfw queue 4 config pipe 2 mask src-ip 0xffffffff
ipfw pipe 4 config bw 512Kbit/s
ipfw add queue 3 ip from any to 192.168.2.0/24 out #To client
ipfw add queue 4 ip from 192.168.2.0/24 to any in  #From client

А верхнюю часть оставить также?


"проблема с pipe в FreeBSD"
Отправлено masters , 10-Дек-08 00:31 
>>#Allows to use more than 1 pipe for packet
>>/sbin/sysctl net.inet.ip.fw.one_pass=0

подскажите, как для этой схемы задать, через какие пайпы пакету проходить, а через какие нет ?

например 1й пайп - общая скорость,
2й пайп - скорость для конкретных IP (на каждого)
3й пайп - скорость для всей сети (на каждого)

Если я в 3м пайпе задам всю сеть, то по идее все пакеты 2го пайпа попадут и в 3й? И им выставится меньшая скорость ???