FreeBSD 8.2+ipfw+pipe+static channel bw

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
harmless
лейтенант
Сообщения: 715
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение harmless » 2011-07-14 1:32:47

Всем доброе время суток!
Задался таким вопросом:
-Как организовать в связке, указанной в теме, канал с ограниченной пропускной полосой?
Объясню подробнее:
есть канал в интернет 100мб
есть сеть 10.0.0.0/24 которая ходит в интернет через нат(ipfw nat)
есть разные тарифные планы(1мб, 2мб, 4мб и т.д.)
В данное время все работает на таких условиях(нат, блокировки и все прочее упущено)

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

############### USERS 1Mbit/s ###############
${FwCMD} pipe 15 config bw 1Mbit/s queue 20 mask dst-ip 0xffffffff gred 0.05/20/100/0.7
${FwCMD} pipe 16 config bw 1Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7

${FwCMD} add 515 pipe 15 ip from not me to table\(100\),1024 out
${FwCMD} add 516 pipe 16 ip from table\(100\),1024 to not me in


${FwCMD} add 1008 allow tcp from table\(100\),1024 to not me in via ${LanIn} setup


############### USERS 2Mbit/s ###############
${FwCMD} pipe 17 config bw 2Mbit/s queue 20 mask dst-ip 0xffffffff gred 0.05/20/100/0.7
${FwCMD} pipe 18 config bw 2Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7

${FwCMD} add 517 pipe 17 ip from not me to table\(100\),2048 out
${FwCMD} add 518 pipe 18 ip from table\(100\),2048 to not me in


${FwCMD} add 1009 allow tcp from table\(100\),2048 to not me in via ${LanIn} setup


############### USERS 4Mbit/s ###############
${FwCMD} pipe 19 config bw 4Mbit/s queue 20 mask dst-ip 0xffffffff gred 0.05/20/100/0.7
${FwCMD} pipe 20 config bw 4Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7

${FwCMD} add 519 pipe 19 ip from not me to table\(100\),4096 out
${FwCMD} add 520 pipe 20 ip from table\(100\),4096 to not me in


${FwCMD} add 1010 allow tcp from table\(100\),4096 to not me in via ${LanIn} setup


С данной конфигурацией не устраивает то что клиенты получают двойную скорость, поясню на клиенте 10.0.0.145 bw 4Mb
при скачивании данный клиент получает скорость 4мб(все правильно все хорошо), но он может и раздавать на скорости в 4мб в это же время так как трубы то две!!!

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

${FwCMD} pipe 19 config bw 4Mbit/s queue 20 mask dst-ip 0xffffffff gred 0.05/20/100/0.7
${FwCMD} pipe 20 config bw 4Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7
Вот я и озадачился таким вопросом:
-Как сделать так чтоб канал все же был 4мб суммарно(чтоб отдача вычиталась с приема)?
Есть идея создать трубу с определенной скоростью(4мб), а в ней создать две очереди на вход. и выходящий трафик равных приоритетов

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

ipfw pipe 4 config bw 4Mbit/s
ipfw queue 1 config pipe 4 weight 50 mask src-ip 0xffffffff
ipfw queue 2 config pipe 4 weight 50 mask dst-ip 0xffffffff
${FwCMD} add 650 queue 1 ip from not ${NetIn} to table\(100\) out
${FwCMD} add 651 queue 2 ip from table\(100\) to not ${IpIn} in
Но хочу посоветоваться с публикой, может кто-то уже данное решение осилил!
Жду интересных сообщений :smile:
Последний раз редактировалось f_andrey 2011-07-14 4:40:17, всего редактировалось 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: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение hizel » 2011-07-14 8:36:46

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

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение rmn » 2011-07-14 8:53:31

harmless писал(а): -Как сделать так чтоб канал все же был 4мб суммарно(чтоб отдача вычиталась с приема)?
так сделать нельзя. Задержка пакетов в канале (и скорость, соответственно) определяется конфигурацией одного пайпа. Т.е. нельзя настроить так, чтобы скорость в пайпе N зависила от скорости в пайпе M.

На счет pipe и queue с mask xxx-ip 0xffffffff:

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

pipe N mask xxx-ip 0xffffffff
динамически создает каналы с указанной конфигурацией для каждого пользователя.

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

queue N mask xxx-ip 0xffffffff
распределяет один канал на всех.

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

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение hizel » 2011-07-14 9:23:46

можно кстати так

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

############### USERS 4Mbit/s ###############
${FwCMD} pipe 20 config bw 4Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7

${FwCMD} add 519 pipe 20 ip from table\(100\),4096 to not me out via $uplink // upload
${FwCMD} add 520 pipe 20 ip from table\(100\),4096 to not me in via $localnet //download
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение rmn » 2011-07-14 9:31:04

hizel писал(а):можно кстати так

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

${FwCMD} pipe 20 config bw 4Mbit/s queue 20 mask src-ip 0xffffffff gred 0.05/20/100/0.7
не-не.
src-ip подходит только для пайпа исходящего трафика. Для входящего нужно dst-ip.
Иначе, если, к примеру, два пользователя качают с одного адреса, второй канал динамически не создастся (на обоих пользователей поделится 4м).

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

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение hizel » 2011-07-14 9:41:47

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

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение rmn » 2011-07-14 9:51:43

флаг xxx-ip указывает, на основании какого адреса в пакете (источника или приемника) будет приниматься решение о создании динамического канала.

Для src-ip:
на адрес источника накладывается маска 0xffffffff, затем проверяется, есть ли уже динамический канал для этого адреса. Если нет (новый пользователь) - создается новый.

Например, исходящие пакеты:

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

192.168.0.1 -> 12.34.56.78
192.168.0.1 -> 23.45.67.89
попадут в один канал, а для

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

192.168.0.2 -> 12.34.56.78
будет создан новый, т.к. 192.168.0.1 & 0xffffffff != 192.168.0.2 & 0xffffffff

Тогда как для входящих:

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

12.34.56.78 -> 192.168.0.1
12.34.56.78 -> 192.168.0.2
будет использован один канал (4м на двоих), т.к. 12.34.56.78 & 0xffffffff == 12.34.56.78 & 0xffffffff

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

Re: FreeBSD 8.2+ipfw+pipe+static channel bw

Непрочитанное сообщение hizel » 2011-07-14 10:21:30

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