шейпинг пайпами

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 15:01:31

Всем привет.
Просвятите пожалуйста!
Если пользователей шейпить пайпами (ipfw+dunnybet)
И, скажем, сумма канала по пайпам раза так в 4 больше реальной ширины канала, то как будет делится трафик между пользователями? Равномерно? Или те, кто пришел раньше, заберут на себя весь трафик, а остальным фигушки?

В общем например есть канал 2 мбит, и есть 8 пользователей у каждого по 1Мбиту, какой канал получит каждый пользователь при условии их одновременной сетевой активности и полной загрузки внешнего канала?

Заранее Огромное Спасибо!
Делай, что дожен - и будь, что будет!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 15:05:00

кто больше откусит тот и будет но не больше 1 мбита если так резать :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 15:08:15

Т.е. Будет неравноправный шейпинг, я правильно понял?
Тогда как можно шейпить, чтоб каждый получал равномерно трафика.
Например если есть канал 1 Мбит
Шейпы 256, 512 и 1Мбит, то чтоб они получили соответственно 145, 291 и 583 Кбита (в общей сумме 1 Мбит)

З.Ы. Таки на этом форуме прикольно, мне еще никогда так быстро не отвечали :drinks:
Делай, что дожен - и будь, что будет!

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 15:15:10

выкатываю свой рабочий концепт

основные моменты
1. учтены что могут быть пользователи без ограничения канала
2. тем кто ширина канала гарантируется имеют в общем пайпе больший приоритет
3. входящйи и исходящий канал православно шейпацо раздельно
4. смайлики относятся к территории россии за МКАДом и КАДом ;)

Код: Выделить всё

#
### queue config
#

## global shaper
$fw pipe 1 config bw 4Mbit/s queue 100
$fw pipe 2 config bw 4Mbit/s queue 100
# queues for not piped users (:)
$fw queue 10 config pipe 1 queue 100 weight 40 mask dst-ip 0xffffffff
$fw queue 11 config pipe 2 queue 100 weight 40 mask src-ip 0xffffffff
# queue for piped users %)
$fw queue 12 config pipe 1 queue 100 weight 70 mask dst-ip 0xffffffff
$fw queue 13 config pipe 2 queue 100 weight 70 mask src-ip 0xffffffff

##  shpe ahdkashkdas =)
# 32 kbits >8O
$fw pipe 32 config bw 40Kbit/s queue 10 mask dst-ip 0xffffffff
$fw pipe 33 config bw 40Kbit/s queue 10 mask src-ip 0xffffffff
# 64 kbits :/
$fw pipe 64 config bw 70Kbit/s queue 15 mask dst-ip 0xffffffff
$fw pipe 65 config bw 70Kbit/s queue 15 mask src-ip 0xffffffff
# 128 kbits :|
$fw pipe 128 config bw 130Kbit/s queue 20 mask dst-ip 0xffffffff
$fw pipe 129 config bw 130Kbit/s queue 20 mask src-ip 0xffffffff
# 256 kbits :)
$fw pipe 256 config bw 260Kbit/s queue 30 mask dst-ip 0xffffffff
$fw pipe 257 config bw 260Kbit/s queue 30 mask src-ip 0xffffffff
# 512 kbits =)
$fw pipe 512 config bw 520Kbit/s queue 45 mask dst-ip 0xffffffff
$fw pipe 513 config bw 520Kbit/s queue 45 mask src-ip 0xffffffff
# 1024 kbits ~8)
$fw pipe 1024 config bw 1Mbit/s queue 64 mask dst-ip 0xffffffff
$fw pipe 1025 config bw 1Mbit/s queue 64 mask src-ip 0xffffffff
# 2048 kbits ~8( )~~~
$fw pipe 2048 config bw 2Mbit/s queue 80 mask dst-ip 0xffffffff
$fw pipe 2049 config bw 2Mbit/s queue 80 mask src-ip 0xffffffff

#
## clients shape ahtung :)
#

# shape address
clfull_table=50
cl32_table=51
cl64_table=52
cl128_table=53
cl256_table=54
cl515_table=55
cl1024_table=56
cl2048_table=57
## 

$fw set disable 20 
# 32kbit\s
$fadd 2000 set 20 pipe 32 tag 20 ip from any to table\($cl32_table\) out via vlan*
$fadd 2001 set 20 pipe 33 tag 20 ip from table\($cl32_table\) to any in via vlan*
# 64kbit\s
$fadd 2002 set 20 pipe 64 tag 20 ip from any to table\($cl64_table\) out via vlan*
$fadd 2003 set 20 pipe 65 tag 20 ip from table\($cl64_table\) to any in via vlan*
# 128kbit\s
$fadd 2004 set 20 pipe 128 tag 20 ip from any to table\($cl128_table\) out via vlan*
$fadd 2005 set 20 pipe 129 tag 20 ip from table\($cl128_table\) to any in via vlan*
# 256kbit\s
$fadd 2006 set 20 pipe 256 tag 20 ip from any to table\($cl256_table\) out via vlan*
$fadd 2007 set 20 pipe 257 tag 20 ip from table\($cl256_table\) to any in via vlan*
# 512kbit\s
$fadd 2008 set 20 pipe 512 tag 20 ip from any to table\($cl512_table\) out via vlan*
$fadd 2009 set 20 pipe 513 tag 20 ip from table\($cl512_table\) to any in via vlan*
# 1024kbit\s
$fadd 2010 set 20 pipe 1024 tag 20 ip from any to table\($cl1024_table\) out via vlan*
$fadd 2011 set 20 pipe 1025 tag 20 ip from table\($cl1024_table\) to any in via vlan*
# 2048kbit\s
$fadd 2012 set 20 pipe 2048 tag 20 ip from any to table\($cl2048_table\) out via vlan*
$fadd 2013 set 20 pipe 2049 tag 20 ip from table\($cl2048_table\) to any in via vlan*
## shape all 
$fadd 2100 set 20 queue 12 ip from any to any out via vlan* tagged 20
$fadd 2101 set 20 queue 13 ip from any to any in via vlan* tagged 20
## shape any
$fadd 2105 set 20 queue 10 ip from any to not table\($service_table\) out via vlan*  not tagged 20
$fadd 2106 set 20 queue 11 ip from not table\($service_table\) to any in via vlan* not tagged 20
$fadd 2110 count ip from any to any via vlan* 
$fw set enable 20
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 15:24:42

У мну скажем, шейпится так:

Код: Выделить всё

####################################################################    #
#NAT SETUP
####################################################################    #
${fwcmd} add divert natd ip from ${intnet} to any out via ${extint}     #NAT setup
${fwcmd} add divert natd ip from any to ${extip}                        #
                                                                        #
####################################################################    #
#GENERAL SHAPING
####################################################################    #
${fwcmd} add pipe 1 ip from table\(1\) to ${intnet} in via ${extint}    #UA-IX ext channel shaping
${fwcmd} pipe 1 config bw 20Mbit/s                                      #
${fwcmd} add pipe 2 ip from ${intnet} to table\(1\) out via ${extint}   #
${fwcmd} pipe 2 config bw 20Mbit/s                                      #
${fwcmd} add pipe 3 ip from any to ${intnet} in via ${extint}           #world ext channel shaping
${fwcmd} pipe 3 config bw 10Mbit/s                                      #
${fwcmd} add pipe 4 ip from ${intnet} to any out via ${extint}          #
${fwcmd} pipe 4 config bw 10Mbit/s                                      #
${fwcmd} add pipe 5 ip from ${intip} to ${intnet} out via ${intint}     #internal networks shaping
${fwcmd} pipe 5 config bw 100Mbit/s                                     #
${fwcmd} add pipe 6 ip from ${intnet} to ${intip} in via ${intint}      #
${fwcmd} pipe 6 config bw 100Mbit/s                                     #
${fwcmd} add pipe 7 ip from any to any tcpflags ack iplen 0-128         #very little packets shaping
${fwcmd} pipe 7 config bw 100Mbit/s                                     #
                                                                        #
####################################################################    #
#USER SHAPING
####################################################################

####################################################################
#godlike
####################################################################
${fwcmd} add pipe 8 ip from table\(1\) to 192.168.25.6 out via ${intint}
${fwcmd} pipe 8 config bw 2Mbit/s
${fwcmd} add pipe 9 ip from 192.168.25.6 to table\(1\) in via ${intint}
${fwcmd} pipe 9 config bw 2Mbit/s
${fwcmd} add pipe 10 ip from any to 192.168.25.6 out via ${intint}
${fwcmd} pipe 10 config bw 1Mbit/s
${fwcmd} add pipe 11 ip from 192.168.25.6 to any in via ${intint}
${fwcmd} pipe 11 config bw 1Mbit/s

Т.е. для равномерного шейпинга нужно для каждого профиля создать свою табличку юзверей.
А для каждой таблички свой параметр queue?
просто не понимаю, ведь вроде параметром дележа трафика есть параметр weight, а не количество пакетов, как у Вас?
Делай, что дожен - и будь, что будет!

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 15:46:17

попробуем расшифровать
1. работает при выключенном one_pass
2. делается pipe для аплинка в моем случае 1 и 2
3. в нем делаются очереди queue для каждого пайпа по две штуки одна штука для клиентов которые режутся по скорости и им больший приоритет и втарая для тех кто не режется по скороси, в моем случае они создают отдельные queue для каждого ip адреса который попал под правило и все их вместе уравнивает в зависимости от веса(приоритета, weight)
4. дальше создаются пайпы для отрезки скорости 32,64,128,256,512,1024,2048
5. следующие действия после подготовки pipe\queue засунуть что куда
в результате те кто проходят с отрезкой
проходят через нужный pipe и жестоко отрезаются по скорости и к пакету прилепляется специальный тэг(tag)
далее оно суется в общий пайп где оно равномерно уравнивается с другими, если нехвататет место урезаются соседи
в результате получается более менее
теже кто не попадает под правила жосткой отрезки канала тэга не имеет и попадает в туже общую трубу
но с меньшим приоритетом

как то так...
устал, надо наверно картинку нарисовать :(
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 16:07:50

Понял почти все, СПАСИБО!.
1 нюанс хочу уточнить:
У меня нет незарезанных пользователей=), каждый имеет ограничение по ширине канала.
Общую очередь похоже, им можно не делать,
просто для каждого пользователя указать типа

Код: Выделить всё

####################################################################
#godlike
####################################################################
${fwcmd} add pipe 8 ip from table\(1\) to 192.168.25.6 out via ${intint}
${fwcmd} pipe 8 config bw 2Mbit/s queue 64
${fwcmd} add pipe 9 ip from 192.168.25.6 to table\(1\) in via ${intint}
${fwcmd} pipe 9 config bw 2Mbit/s queue 64
${fwcmd} add pipe 10 ip from any to 192.168.25.6 out via ${intint}
${fwcmd} pipe 10 config bw 1Mbit/s queue 64
${fwcmd} add pipe 11 ip from 192.168.25.6 to any in via ${intint}
${fwcmd} pipe 11 config bw 1Mbit/s queue 64
типа так?

Для 2-х мегабит размер очереди соответственно больше
И так рассчитать примерные коэффициенты?

З.Ы.
Увы one_pass у меня должен быть включен, т.к. у меня шейпится отдельно трафик с точкой обмена трафиком UA-IX, а потом уже собственно интернет.
Так вот, чтоб у меня трафик не пробегал сначала по 1 пайпу, а затем по другому я и включил onepass
Делай, что дожен - и будь, что будет!

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 16:30:08

гм а без оне пасс моя схемка не сработает а даже слабо представляю как можно без него решить эту проблему
дело в том что люди должны отрезатся два раза
первый для ограничения скорости
второй раз чтобы внешний канал равномерно распределялся на всех :(

Код: Выделить всё

$fw pipe 1 config bw 4Mbit/s queue 100
$fw queue 10 config pipe 1 queue 100 weight 40 mask dst-ip 0xffffffff
$fw add queue 10 ip from any to 192.168.0.1 in via $client_int
$fw add queue 10 ip from any to 192.168.0.2 in via $client_int
эта конструкция
создет трубу(pipe) а в нем для каждого из двух айпишников по очереди(queue) с одинаковым весом
в результате они равномерно занимают полосу
если первый работает один он может занять всю полосу если появляется второй то первого полоса постепенно ужимается
разделяются клиенты в данном случае по (ip куда идут пакеты)dst-ip 0xffffffff

Код: Выделить всё

$fw pipe 1 config bw 4Mbit/s queue 100
$fw queue 10 config pipe 1 queue 100 weight 40 mask dst-ip 0xffffffff
$fw queue 11 config pipe 1 queue 100 weight 60 mask dst-ip 0xffffffff
$fw add queue 10 ip from any to 192.168.0.1 in via $client_int
$fw add queue 11 ip from any to 192.168.0.2 in via $client_int
эта конструкция делает в трубе две очереди за разным весом
соттветственно у кого вес больше тот более приоритетен
и если два клиента работаю во всю ширину канала то
при такой настройке один будет занимать 40% канала, а второй 60%

тоесть в вашем случае пакеты сначала шейпируются на ширину их отрезки скорости
а потом хорошо бы их засунуть в подобную конструкцию чтобы они равномерно занимали канал
однако без one_pass я не вижу как это сделать
:)
Последний раз редактировалось hizel 2008-09-04 16:41:10, всего редактировалось 1 раз.
Причина: ва ва! очепятко! вместо allow queue 10 делается :( поменял в первой конструкции
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 16:37:33

Ага, теперь понял, будем думать.
Кстати, тут еще 1 вопросик назрел: а если шейпить по общей конструкции, то не получится ли такой проблемы:

Есть юзверь с 256 Кбитом и есть юзверь с 512Кбит мбитами и есть канал 512Кбит
Если им дать одинаковый приоритет в общем пайпе, то они получат по 256 кбит каждый, или согласно их потолкам - т.е. тот, что 512 кбит получит больше?
Делай, что дожен - и будь, что будет!

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 16:47:15

в предыдущем почсте очепятко небольшое :)

что касается вашего вопроса, тут дело вкуса

тогда сделать
настройка

Код: Выделить всё

$fw pipe 1 config bw 4Mbit/s queue 100
# 1Mbit clients
$fw queue 10 config pipe 1 queue 100 weight 20 mask dst-ip 0xffffffff
# 2Mbit clients
$fw queue 11 config pipe 1 queue 100 weight 30 mask dst-ip 0xffffffff
# 3Mbit clients
$fw queue 12 config pipe 1 queue 100 weight 40 mask dst-ip 0xffffffff

а тут обратите внимание на номера очередей
в результате 192.168.0.1 - вес наименее приоритетен
192.168.0.2,192.168.0.5,192.168.0.6 - средний приоритет
192.168.0.3,192.168.0.4 - высший приоритет

Код: Выделить всё

$fw add queue 10 ip from any to 192.168.0.1 out via $client_int
$fw add queue 11 ip from any to 192.168.0.2 out via $client_int
$fw add queue 12 ip from any to 192.168.0.3 out via $client_int
$fw add queue 12 ip from any to 192.168.0.4 out via $client_int
$fw add queue 11 ip from any to 192.168.0.5 out via $client_int
$fw add queue 11 ip from any to 192.168.0.6 out via $client_int
кстатти по поводу процентов в прошлом посте я похоже прогнал
но смысл правильные те у кого больший вес получают больший кус канала при прочих равных
да и не in а out шейпируем то входящий к клиенту каналец
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 17:12:25

ООО. Спасибо большое за идею!!!

Я сделал так:
Создал 6 очередей для главного пайпа
2Mbit - weight 50
1Mbit - weight 25
512Kbit - weight 13
256Kbit - weight 7
128Kbit - weight 3
64Kbit - weight 2

А потом для каждого клиента добавить по паре очередей=), ему соответствующих(аплоад и даунлоад)

Как будете в киеве, пишите в личку, пиво надеюсь пьете:)
Делай, что дожен - и будь, что будет!

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2008-09-04 17:38:08

хм надеюсь, что помог
кстати вы уже второй кто заманивает именно в Киев на пиво ;)
киевляне все такие пивосольные? =)

вот поднимем wiki нармально, соберем все знания в пучок
и будем тыкать форумчан туда :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2008-09-04 17:49:21

Не знаю, как насчет остальных, а мне пивом угостить умного человека всегда приятно.
По поводу вики - было бы круто)
Делай, что дожен - и будь, что будет!

CrazyAdmin
рядовой
Сообщения: 15
Зарегистрирован: 2008-02-26 12:25:45

Re: шейпинг пайпами

Непрочитанное сообщение CrazyAdmin » 2008-09-05 21:18:22

2 пользователя. канал 256/256.
если сидят все пользователи надо чтоб резался канал, каждому столько сколько указано в трубе.
свободная часть канала чтоб добавлялась равномерно на всех.

ниже привожу конфиг который пробую. результат: сидят все - 15.2KB/s.....сидит 1 - 14-15.5 KB/s

sysctl net.inet.ip.fw.one_pass=0

Код: Выделить всё

#Clearing...
${cmd} -q flush
${cmd} zero

#NAT
${cmd} nat 100 config ip ${meip_adsl}

#tables

${cmd} table 1 flush
${cmd} table 1 add 192.168.0.100
${cmd} table 1 add 192.168.0.150

#RULES
${cmd} add 100 nat 100 all from any to any via ${iface_adsl}

#Pipes
${cmd} pipe 1 config bw 256Kbit/s
${cmd} pipe 2 config bw 256Kbit/s
${cmd} pipe 1000 config bw 128Kbit/s
${cmd} pipe 1001 config bw 128Kbit/s
${cmd} pipe 1500 config bw 128Kbit/s
${cmd} pipe 1501 config bw 128Kbit/s


${cmd} queue 10 config pipe 1 queue 100 weight 90 mask src-ip 0xffffffff
${cmd} queue 11 config pipe 2 queue 100 weight 90 mask dst-ip 0xffffffff

${cmd} set disable 20

${cmd} add 1000 set 20 pipe 1000 tag 20 ip from 192.168.0.100 to any in via vr0
${cmd} add 1001 set 20 pipe 1001 tag 20 ip from any to 192.168.0.100 out via vr0
${cmd} add 1003 set 20 pipe 1500 tag 20 ip from 192.168.0.150 to any in via vr0
${cmd} add 1004 set 20 pipe 1501 tag 20 ip from any to 192.168.0.150 out via vr0

${cmd} add 1005 set 20 queue 10 all from table\(1\) to any in via vr0 tagged 20
${cmd} add 1006 set 20 queue 11 all from any to table\(1\) out via vr0 tagged 20

${cmd} set enable 20

Аватара пользователя
godlike
рядовой
Сообщения: 43
Зарегистрирован: 2007-09-05 10:13:17
Откуда: Киев
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение godlike » 2009-01-03 18:30:58

И снова я вас замучаю=)

Настроил я кавайный шейпинг динамическими пайпами:

Код: Выделить всё

####################################################################
#tarif plans
####################################################################
${fwcmd} pipe 8 config bw 4Mbit/s mask dst-ip 0xffffffff     #incoming user
${fwcmd} pipe 9 config bw 2Mbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 10 config bw 1Mbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 11 config bw 512Kbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 12 config bw 256Kbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 13 config bw 128Kbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 14 config bw 64Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 15 config bw 4Mbit/s mask src-ip 0xffffffff       #outcoming user
${fwcmd} pipe 16 config bw 2Mbit/s mask src-ip 0xffffffff
${fwcmd} pipe 17 config bw 1Mbit/s mask src-ip 0xffffffff
${fwcmd} pipe 18 config bw 512Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 19 config bw 256Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 20 config bw 128Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 21 config bw 64Kbit/s mask src-ip 0xffffffff

####################################################################
#adding users to their tarifs
####################################################################
${fwcmd} table 10 flush         #256/512 table
${fwcmd} table 10 add 192.168.25.6

####################################################################
#shaping
####################################################################
${fwcmd} add pipe 11 ip from table\(1\) to table\(10\) via ${intint}#UAIX
${fwcmd} add pipe 18 ip from table\(10\) to table\(1\) via ${intint}#
${fwcmd} add pipe 12 ip from any to table\(10\) via ${intint}#world
${fwcmd} add pipe 19 ip from table\(10\) to any via ${intint}#
где ${intint} - интерфейс, смотрящий на юзверей
table(1) - таблица UA-IX подсетей

Все оно отлично работает, но возникла проблема:

понадобилось выделять фиксированную скорость на несколько адресов:
например на 192.168.25.10 и 192.168.25.14 нужно выделить 512 Кбит.

Но вот незадача, мои динамические шейпы используют маску 0xffffffff,
что подразумевает собой выделение по "трубе" на _каждый_ ip-адрес.

А мне нужно 1 трубу выделить на 2 айпи-адреса.

Можно как-то решить проблему, кроме возврата к статически-прописанным пайпам?

Заранее спасибо за ответ!
Делай, что дожен - и будь, что будет!

Snake
проходил мимо

Re: шейпинг пайпами

Непрочитанное сообщение Snake » 2009-05-12 10:34:03

Имеется - пять клиентов, подключающихся по впн, и два непосредственно по сети. Нужно разделить между ними по справедливости канал в инет. Понятие "справедливо" подразумевает, что _активные_ в данный момент пользователи делят между собой канал. Сидят двое - делится пополам. Один ушел - второму остался весь. C приведенным ниже конфигом трафик режется крайне хренова.

Конфиг (фрагмент):

Код: Выделить всё

#!/bin/sh

#-------------------------------------
upi=650Kbit/s #Исходящий в инет
downi=1900Kbit/s #Входящий инет
#------------------------------------

#-----------------------------------
#Создаем пайпы
$fw pipe 100 config bw $downi queue 50
$fw pipe 200 config bw $upi queue 50
#-----------------------------------
#Создаем очереди
#inet --> LAN
$fw queue 101 config weight $tcp2w queue 50 pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 102 config weight $ip1w queue 50 pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

#LAN --> inet
$fw queue 201 config weight $tcp2w queue 50 pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 202 config weight $ip1w queue 50 pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

#Диверты
##Incoming

$fwa 10300 divert 8448 ip from any to me in via $inet

##Outcoming
$fwa 11500 divert 8448 ip from $vpn to any out via $inet
$fwa 11600 divert 8448 ip from $users to any out via $inet

#----------------------------------
#Загоняем трафик в пайпы

##Входящий инет трафик
$fwa 14000 queue 101 tcp from any to me in via $inet
$fwa 14100 queue 102 udp from any to me in via $inet
$fwa 14300 queue 101 tcp from any to $users in via $inet
$fwa 14400 queue 102 udp from any to $users in via $inet

##Исходящий инет трафик
$fwa 16000 queue 201 tcp from me to any
$fwa 16200 queue 202 udp from me to any
Буду благодарен за любые подсказки :).
net.inet.ip.fw.one_pass=0

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2009-05-12 10:37:54

Код: Выделить всё

ipfw pipe show 
посмотреть бы :pardon:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Snake
проходил мимо

Re: шейпинг пайпами

Непрочитанное сообщение Snake » 2009-05-12 11:16:02

Код: Выделить всё

#ipfw pipe show
00100:   1.900 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
00200: 650.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail

q00102: weight 4 pipe 100   50 sl. 3 queues (64 buckets)
          GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
    mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  9 ip           0.0.0.0/0         123.123.123.123/0     220728 23525317  0    0   0
 45 ip           0.0.0.0/0          10.12.5.53/0     2538479 342245227  0    0   0
 47 ip           0.0.0.0/0          10.12.5.55/0       22     1076  0    0   0

q00201: weight 2 pipe 200   50 sl. 4 queues (64 buckets)
          GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 26 ip       10.12.51.11/0             0.0.0.0/0     31568  1917439  0    0   0
 33 ip        123.123.123.123/0             0.0.0.0/0     37970652 13892753139  0    0 3419106
 34 ip    192.168.106.37/0             0.0.0.0/0     1089    43955  0    0   0
 48 ip       10.12.5.254/0             0.0.0.0/0       90     4403  0    0   0
q00202: weight 4 pipe 200   50 sl. 3 queues (64 buckets)
          GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 26 ip       10.12.51.11/0             0.0.0.0/0      269    54857  0    0   0
 33 ip        123.123.123.123/0             0.0.0.0/0     4087365 981585310  0    0 5586
 34 ip    192.168.106.37/0             0.0.0.0/0       25     1900  0    0   0
123.123.123.123 - внейшний ип серва
10.12.5.254,10.12.51.11 - внутренние ип
192.168.106.37 - ип серва в сети прова

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2009-05-12 11:36:08

шейпите на интерфейсе в сторону клиента или до НАТа
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Snake
проходил мимо

Re: шейпинг пайпами

Непрочитанное сообщение Snake » 2009-05-12 12:25:15

Т.е. очередь для исходящих нужно ставить на входящий трафик на внутренних интерфейсах? А как быть с входящим?

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2009-05-12 12:31:44

надо чтобы в трубы\очерди попадал траик только тех кто шейпить
естественно до ната, так как естественно после ната все клиенты торчат из под одного ip, какой уж тут шейпинг
где конкртено и как в какую сторону регулируйте на свое усмотерние %-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение InventoR » 2009-05-12 13:49:24

Перечитал всю тему, и тут не кто так и не сказал, что для более равномерной нарезки канала ядро надо компилировать с опцией:

Код: Выделить всё

options HZ=1000         # strongly recommended
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: шейпинг пайпами

Непрочитанное сообщение hizel » 2009-05-12 13:59:10

некоторым бородатым дядькам это кажется очевидным :-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: шейпинг пайпами

Непрочитанное сообщение InventoR » 2009-05-12 14:32:31

Согласен, но как мне кажется, человек который создал данную тему мало представляет об очевидном.
ну вот и сказочке конец, кто слушал, тот молодец.

Snake
проходил мимо

Re: шейпинг пайпами

Непрочитанное сообщение Snake » 2009-06-17 13:40:55

Настроил очереди... трафик заходит и все вроде бы прекрасно. Но. Канал используется максимум наполовину :( Либо он делит скорость более или менее фиксировано, либо считает активными всех подключенных по впн юзверей... Вот конф:

Код: Выделить всё

#!/bin/sh
#Объявляем переменные
fwf="/sbin/ipfw -f flush"
fw="/sbin/ipfw -q"
fwa="/sbin/ipfw -q add"
fwfp="/sbin/ipfw -f flush pipe"
fwfq="/sbin/ipfw -f flush queue"
#-------------------------------------
upi=500Kbit/s        #Исходящий в инет
upv=250Kbit/s       #Исходящий во внутрисеть
downi=1900Kbit/s      #Входящий инет
downv=5000Kbit/s    #Входящий внутрисеть
#------------------------------------
lan="rl0"
wan="fxp0"
inet="ng0"
vlan="vlan1205"
#------------------------------------
#Вес для разных типов трафика
tcp1w=3 #Высокоприоритетный трафик
tcp2w=2 #Остальной трафик TCP
ip1w=4  #Остальной трафик
#-----------------------------------
#Очищаем правила
$fwf
#Очищаем очереди и пайпы
$fwfp
$fwfq
#-----------------------------------
#Создаем пайпы
$fw pipe 100 config bw $downi queue 50
$fw pipe 150 config bw $downv queue 50
$fw pipe 200 config bw $upi   queue 50
$fw pipe 250 config bw $upv   queue 50
#-----------------------------------
#Создаем очереди
#inet --> LAN
$fw queue 101 config weight $tcp2w queue 50 pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 102 config weight $ip1w  queue 50 pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

#VTK --> LAN
$fw queue 151 config weight $tcp2w queue 50 pipe 150 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 152 config weight $ip1w  queue 50 pipe 150 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

#LAN --> inet
$fw queue 201 config weight $tcp2w queue 50 pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 202 config weight $ip1w  queue 50 pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

#LAN --> VTK
$fw queue 251 config weight $tcp2w queue 50 pipe 250 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 252 config weight $ip1w  queue 50 pipe 250 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
#-----------------------------------

#Loopback
$fwa 02000 allow all from any to any via lo0
$fwa 02100 deny ip from any to 127.0.0.0/8
$fwa 02200 deny ip from 127.0.0.0/8 to any

#Запрещаем все и вся
##deny 445
$fwa 02500 deny ip from any to any dst-port 445

##SSH
$fwa 03000 allow tcp from $admins to me 22 in via $lan
$fwa 03050 allow tcp from me 22 to $admins out via $lan
$fwa 03100 allow tcp from $work to me 22 in via $inet
$fwa 03150 allow tcp from me 22 to $work out via $inet
$fwa 03666 deny log tcp from any to me 22

##Запрещаем локальный траффик на внешних интерфейсах
$fwa 04000 deny log ip from 10.0.0.0/8 to me in via $inet
$fwa 04100 deny log ip from 192.168.0.0/16 to me in via $inet
$fwa 04200 deny log ip from 172.16.0.0/12 to me in via $inet
$fwa 04300 deny log ip from me to 10.0.0.0/8 out via $inet
$fwa 04400 deny log ip from me to 192.168.0.0/16 out via $inet
$fwa 04500 deny log ip from me to 172.16.0.0/12 out via $inet

$fwa 04600 deny log ip from 10.0.0.0/8 to me in via $wan
$fwa 04750 deny log ip from 172.16.0.0/12 to me in via $wan
$fwa 04800 deny log ip from me to 10.0.0.0/8 out via $wan
$fwa 04900 deny log ip from me to 172.16.0.0/12 out via $wan

#-----------------------------------
#Исходящая очередь
##Исходящий ВТК трафик
$fwa 05000 queue 202 ip from any to $vth_serv in
$fwa 05100 queue 251 ip from any to $vth in via $vlan
##Исходящий инет трафик
$fwa 05200 queue 201 tcp from $users to any in via $vlan
$fwa 05300 queue 201 tcp from $vpn to any in
$fwa 05400 queue 202 udp from $users to any in via $vlan
$fwa 05500 queue 202 udp from $vpn to any in
$fwa 05600 queue 202 ip from me to any out via $inet

#Разрешаем исходящие
$fwa 06000 allow ip from $users to any in via $vlan
$fwa 06100 allow ip from $vpn to any in

#-----------------------------------
#Диверты
##Incoming

$fwa 10053 divert 8558 ip from $vth to me dst-port 12553 in via $wan
$fwa 10100 divert 8668 ip from $vth to me in via $wan
$fwa 10153 divert 8118 ip from any to me dst-port 12553 in via $inet
$fwa 10154 divert 8228 ip from any to me dst-port 12554 in via $inet
$fwa 10200 divert 8448 ip from $vth_serv to me in via $inet
$fwa 10300 divert 8448 ip from any to me in via $inet

##Outcoming
$fwa 11053 divert 8558 ip from 10.12.5.53 12553 to $vth out via $wan
#$fwa 11100 divert 8668 ip from $vpn to $vth out via $wan
$fwa 11200 divert 8668 ip from $users to $vth out via $wan
$fwa 11253 divert 8118 ip from 10.12.5.53 12553 to any out via $inet
$fwa 11254 divert 8228 ip from 10.12.5.53 12554 to any out via $inet
$fwa 11300 divert 8448 ip from $vpn to $vth_serv out via $inet
$fwa 11400 divert 8448 ip from $users to $vth_serv out via $inet
$fwa 11500 divert 8448 ip from $vpn to not $vth out via $inet
$fwa 11600 divert 8448 ip from $users to not $vth out via $inet

#----------------------------------
#Загоняем трафик в пайпы
##Входящий ВТК траффик
$fwa 13000 queue 102 ip from $vth_serv to any in via $inet
$fwa 13100 queue 151 tcp from $vth to $users in via $wan
$fwa 13100 queue 152 ip from $vth to $users in via $wan

##Входящий инет трафик
$fwa 15000 queue 102 ip  from any to me in via $inet
$fwa 15100 queue 101 tcp from any to $users in via $inet
$fwa 15200 queue 102 ip from any to $users in via $inet
$fwa 15100 queue 101 tcp from any to any in via $inet
$fwa 15200 queue 102 ip from any to any in via $inet

#----------------------------------
#Разрешаем входящие
$fwa 24500 allow ip from any to $users
$fwa 24600 allow ip from any to $vpn

##Разрешаем пинги
$fwa 30200 allow icmp from me to any
$fwa 30250 allow icmp from any to me

#Разрешаем все исходящие
$fwa 60000 allow ip from me to any