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

Исходное сообщение
"Тематический каталог: Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"

Отправлено auto_topic , 21-Май-05 02:51 
Обсуждение статьи тематического каталога: Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)

Ссылка на текст статьи: http://www.opennet.ru/base/net/ipfw_pipe.txt.html


Содержание

Сообщения в этом обсуждении
"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено adsh , 21-Май-05 02:51 
Всё хорошо, только лучше ещё использовать GRED - будут меньше потери и скорость не будет прыгать туда / сюда. Ну и размеры очередей пакетов подобрать.

"а как?"
Отправлено dmitry , 23-Май-05 13:00 
как правильно GRED и размер очереди подобрать. каким алгоритмом руководствоваться



"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено waso , 24-Май-05 09:21 
>Всё хорошо, только лучше ещё использовать GRED - будут меньше потери и
>скорость не будет прыгать туда / сюда. Ну и размеры очередей
>пакетов подобрать.
А можно с этого места поподробнее? :)


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено TigraS , 10-Фев-10 19:15 
>>Всё хорошо, только лучше ещё использовать GRED - будут меньше потери и
>>скорость не будет прыгать туда / сюда. Ну и размеры очередей
>>пакетов подобрать.
>А можно с этого места поподробнее? :)

Может кому пригодится про red и Gred
http://freebsd-r16.narod.ru/freebsd/shaper.html


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено napTu , 24-Май-05 02:03 
From: Александр
Subject: Re: Подробнее об использовании pipe-s в IPFW
>  
> Я не согласен с этим:
>
> >Оба пользователя непрерывно качают примерно одинаковый поток данных.
> >Один из них начал качать раньше. Когда появился второй, то система
> >начала ограничивать поток для первого до 110/2=55 Кбит/с. Считая что
> >второму также будет отведено 55Кбит/с, однако из-за того что реальная
> >пропускная способность канала 80Кбит/с, то второму пользователю будет
> >предоставлено всего 80-55=25Кбит/с. Кроме того возможно система будет
> >считать, что второй пользователь не использует выделенный ему канал и
> >давать еще больший приоритет первому, чтобы довести общий поток до>
> >110Кбит/с.
>
> в примерах
> ipfw queue 1 config pipe 1 weight 50 queue 20
> weight 50 - не означает деления канала на части,
> а говорит о приоритете, то есть если у двух очередей одинаков приоритет
> то пакеты из этих очередей будут выходить по очереди и канал
> действительно будет делится поровну.
>
> поэтому если канал реально 80Кбит/с а pipe на 110Кбит/с
> вырисовывается другая картина.
> если первый пользователь начал раньше качать то его очередь
> единственная и он полностью подгребает канал под себя.
> если начинает качать второй юзер (подразумевается что приоритеты
> очередей у них одинаковы и не обьязательно 50) то пакеты из очередей
> выходят равномерно,
> а значит скорость делится поровну 80/2=40Кбит/с.
>
> скорость pipe больше чем реальная нужно ставить тогда когда нужно не
> ограничить
> скорость а распределить по приоритетам.
> Я например не зажимаю никого, а всем даю одинаковый приоритет чтоб никто
> не смог
> большим количеством сессий подгребать под себя канал
>

Возможно я не прав в своих рассуждениях и в этом ответе есть истина. Хотя я часто встречал в описаниях pipe примеры, где преднамеренно устанавливалась скорость pipe меньшая, чем скорость потока на 5%. И обуславливалось это запасом пропускной способности канала для тех, кто имеет бОльший приоритет.


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено napTu , 25-Май-05 14:52 
Всё хорошо и я согласен с твоими рассуждениями о разбивке по приоритетам очередей, а не по скорости канала. Но проведение эксперимента этого не подтверждает:
-два пользователя имеют разные приоритеты созданных для них очередей (причем разность велика - 5 и 50);
-качают с одного сайта с толстым каналом разные файлы;
-скорость pipe не ограничена и результирующий поток ограничивается только шириной канала.
В результате скорость закачки у обоих примерно одинакова. Иногда больше у одного, иногда у другого.
При изменении условия ограничения pipe до значения меньшего, чем пропускная способность канала, получаем совсем иную картину - начинают работать приоритеты очередей.

Как это иначе объяснить, чем я описал, не знаю.


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено napTu , 27-Май-05 20:45 
а еще я сделал вот так:

maska="0xffffffff"

${ipfw} pipe 1 config bw 80Kbit/s queue 20
${ipfw} queue 1 config pipe 1 weight 90 mask dst-ip $maska queue 20
${ipfw} queue 2 config pipe 1 weight 20 mask dst-ip $maska queue 20

${ipfw} queue 11 config pipe 1 weight 90 mask src-ip $maska queue 20
${ipfw} queue 21 config pipe 1 weight 20 mask src-ip $maska queue 20


ipfw add queue 11 tcp from $int_net to any in recv $int_if tcpflags fin
ipfw add queue 11 tcp from $int_net to any in recv $int_if tcpflags syn
ipfw add queue 11 tcp from $int_net to any in recv $int_if tcpflags rst
ipfw add queue 11 tcp from $int_net to any in recv $int_if tcpflags psh
ipfw add queue  1 tcp from any to $int_net out xmit $int_if tcpflags fin
ipfw add queue  1 tcp from any to $int_net out xmit $int_if tcpflags syn
ipfw add queue  1 tcp from any to $int_net out xmit $int_if tcpflags rst
ipfw add queue  1 tcp from any to $int_net out xmit $int_if tcpflags psh

это чтобы пакеты инициализации-завершения проходили как можно быстрее. Остальной трафик во второй очереди

ipfw add queue 21 tcp from $int_net to any in recv $int_if
ipfw add queue  2 tcp from any to $int_net out xmit $int_if


Может кто нибуть знает как еще можно ускорить загрузку HTML страниц, ограничив при этом в этот момент качальщиков?
Про прокси - понятно, а вот при помощи IPFW как?


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено gara , 17-Июн-05 15:53 
Кстати на основе этих правил очень хорошо организовывается "Анлим".
делаем 3 очереди в одном канале с приоритетами 60,30,10.
60 тем кто очень мало качает, 10 наглым выкачивальщикам всего инета а остальным 30. прекрастно работает.
Сумма цмфр дает 100 (%) :)

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено Grayich , 08-Авг-05 00:21 
почему pipe создается только один ?
ведь сириус-128 позволяет одновременно как отсылать 115кбит (теоритически, практически около 96кбит) так и принимать столько-же...


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено Михаил , 04-Сен-05 01:59 
а если нужно просто зделать приоретизацию трафика без ограничения по скорости то как быть?

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Banan , 17-Сен-05 01:14 
"Для себя я нашел следующее решение.
Создаем две очереди для входящего и исходящего трафика
         ipfw queue  1 config pipe 1 weight 50 queue 20 mask dst-addr 0xffffffff
         ipfw queue 11 config pipe 1 weight 50 queue 20 mask src-addr 0xffffffff"
у меня заработало только с dst-ip и src-ip
Действительно все делится поровну очень удачно. Часик потратил на вычисление длины очереди, но работает классно. Мне ндравится! :)

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Maks , 18-Фев-06 12:37 
У меня тоже заработало только с dst-ip и src-ip
Почему не работает с dst-addr и src-addr (ipfw ругается ошибками и вырубает начисто сеть) кто-нибудь сможет подсказать?

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Camb , 22-Июл-09 14:36 
Часик потратил на вычисление длины очереди,
но работает классно. Мне ндравится! :)

расскажи как вычислял?


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено snoop , 25-Окт-05 07:02 
Вот интересно...а как проверить работают-ли правила?
на ввод комманды ipfw pipe show ответ вот какой
00001: 128.000 Kbit/s    0 ms   25 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
...оно и понятно...а где очереди или еще что-то... не пойму....

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Grayich , 25-Окт-05 11:43 
>Вот интересно...а как проверить работают-ли правила?
>на ввод комманды ipfw pipe show ответ вот какой
>00001: 128.000 Kbit/s    0 ms   25 sl.
>0 queues (1 buckets) droptail
>mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
>...оно и понятно...а где очереди или еще что-то... не пойму....

пакеты непоподают в шейпер, или канал\очередь заданы неправильно, например неверная маска


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено snoop , 25-Окт-05 14:58 
ну конфиг у меня вот какой
у меня 2-е подсети
192.168.20.0/24  моя
192.168.2.0/24   арендаторы
хочу отдать им 30% а себе 70%
делаю вот что...
определяю общий pipe...
ipfw pipe 1 config bw 128Kbit/s queue 20
далее создаю 4-е очереди =
ipfw queue 3 config pipe 1 weight 70 queue 25 mask dst-addr 255.255.255.0                                                  
ipfw queue 31 config pipe 1 weight 70 queue 25 mask src-addr 255.255.255.0
ipfw queue 11 config pipe 1 weight 30 queue 25 mask src-addr 255.255.255.0                                                            
далее создаю очереди для каждой подсети....                                    
ipfw add queue 3 ip from 192.168.20.0/24 to any
ipfw add queue 31 ip from 192.168.20.0/24 to any #          
ipfw add queue 11 ip from any to 192.168.2.0/24

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Grayich , 25-Окт-05 15:13 
>далее создаю 4-е очереди =
>ipfw queue 3 config pipe 1 weight 70 queue 25 mask dst-addr
>255.255.255.0
>ipfw queue 31 config pipe 1 weight 70 queue 25 mask src-addr
>255.255.255.0
>ipfw queue 11 config pipe 1 weight 30 queue 25 mask src-addr
>255.255.255.0
>далее создаю очереди для каждой подсети....
>ipfw add queue 3 ip from 192.168.20.0/24 to any
>ipfw add queue 31 ip from 192.168.20.0/24 to any #
>ipfw add queue 11 ip from any to 192.168.2.0/24

ipfw queue 3 config pipe 1 weight 70 queue 25 mask src-ip 0xffffffff
ipfw queue 31 config pipe 1 weight 70 queue 25 mask dst-ip 0xffffffff
ipfw queue 11 config pipe 1 weight 30 queue 25 mask dst-ip 0xffffffff

ipfw add queue 3 ip from 192.168.20.0/24 to any
ipfw add queue 31 ip from any to 192.168.20.0/24
ipfw add queue 11 ip from any to 192.168.2.0/24

гдето так


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено snoop , 26-Окт-05 07:04 
когда так прописал, ipfw s возвращает
06200  141   11082 queue 3 ip from 192.168.20.0/24 to any
06300    0       0 queue 31 ip from any to 192.168.20.0/24
06400    0       0 queue 11 ip from any to 192.168.2.0/24

почему-то не считаетвходящие пакеты в мою подсеть и не считает пакеты в арендаторскую...
может я как-то не верно прописал арендаторскую подсеть...

in2="192.168.2.0"
inet="192.168.20.0"
inet="192.168.20.0"
inet="192.168.20.0"
#
ip2="xl1"
in2="192.168.2.0"
in2="192.168.2.0"

$fwcmd add allow all from $in2:$im2 to any via $ip2
$fwcmd add allow all from any to $in2:$im2
#create NAT
$fwcmd add divert natd all from $in2:$im2 to any out via $oif
$fwcmd add divert natd all from any to $oip in via $oif
#close my net
$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $iif
$fwcmd add deny all from 192.168.20.0/24 to 192.168.2.0/24 via $iif
$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $ip2$fwcmd add deny all from 192.168.20.0/24 to 192.168.2.0/24 via $ip2

шет какой-то


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено Grayich , 26-Окт-05 12:21 
>когда так прописал, ipfw s возвращает
>06200  141   11082 queue 3 ip from 192.168.20.0/24 to
>any
>06300    0       0
>queue 31 ip from any to 192.168.20.0/24
>06400    0       0
>queue 11 ip from any to 192.168.2.0/24
>
>почему-то не считаетвходящие пакеты в мою подсеть и не считает пакеты в
>арендаторскую...
>может я как-то не верно прописал арендаторскую подсеть...
>
>in2="192.168.2.0"
>inet="192.168.20.0"
>inet="192.168.20.0"
>inet="192.168.20.0"
>#
>ip2="xl1"
>in2="192.168.2.0"
>in2="192.168.2.0"
>
>$fwcmd add allow all from $in2:$im2 to any via $ip2
>$fwcmd add allow all from any to $in2:$im2
>#create NAT
>$fwcmd add divert natd all from $in2:$im2 to any out via $oif
>
>$fwcmd add divert natd all from any to $oip in via $oif
>
>#close my net
>$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $iif
>$fwcmd add deny all from 192.168.20.0/24 to 192.168.2.0/24 via $iif
>$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $ip2
>$fwcmd add deny all from 192.168.20.0/24 to 192.168.2.0/24 via $ip2
>
>шет какой-то

это что ? :)


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено cj , 27-Янв-06 11:08 
>когда так прописал, ipfw s возвращает
>06200  141   11082 queue 3 ip from 192.168.20.0/24 to
>any
>06300    0       0
>queue 31 ip from any to 192.168.20.0/24
>06400    0       0
>queue 11 ip from any to 192.168.2.0/24
>
>почему-то не считаетвходящие пакеты в мою подсеть и не считает пакеты в
>арендаторскую...
>может я как-то не верно прописал арендаторскую подсеть...
>
>in2="192.168.2.0"
>inet="192.168.20.0"
>inet="192.168.20.0"
>inet="192.168.20.0"
>#
>ip2="xl1"
>in2="192.168.2.0"
>in2="192.168.2.0"
>
>$fwcmd add allow all from $in2:$im2 to any via $ip2
>$fwcmd add allow all from any to $in2:$im2
>#create NAT
>$fwcmd add divert natd all from $in2:$im2 to any out via $oif
>
>$fwcmd add divert natd all from any to $oip in via $oif
>
>#close my net
>$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $iif
>$fwcmd add deny all from 192.168.20.0/24 to 192.168.2.0/24 via $iif
>$fwcmd add deny all from 192.168.2.0/24 to 192.168.20.0/24 via $ip2$fwcmd add deny
>all from 192.168.20.0/24 to 192.168.2.0/24 via $ip2
>
>шет какой-то

а ты попробуй пострадать и
06200  141   11082 queue 3 ip from 192.168.20.0/24 to any
06300    0       0 queue 31 ip from any to 192.168.20.0/24
06400    0       0 queue 11 ip from any to 192.168.2.0/24
засунуть перед натом
может быть поможет, хотя не уверен. ну а попытка не пытка :-)


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено steel , 28-Сен-07 12:14 
Почему в 6.1 , ipfw не понимает src-addr, dst-addr, они эквивалентны src-ip, dst-ip ?

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено grayich , 28-Сен-07 14:13 
>Почему в 6.1 , ipfw не понимает src-addr, dst-addr, они эквивалентны src-ip,
>dst-ip ?

да


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено steel , 28-Сен-07 14:53 
Еще вопрос, в каком месте должны находится правила PIPE ? До основных правил или после? Например я каким-то юзерам разрешаю доступ, каким-то запрещаю и  т.п. PIPE правило должно находится перед всем этим?

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено grayich , 28-Сен-07 14:59 
описания queue и pipe в любом месте, самиже добавления ipfw add queue или ipfw add pipe в зависимости от логики правил, обычно для исходящего трафика до NAT, а для входящего после NAT.
хотя резать входящий обычно неимеет смысла.

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено vadislaus , 25-Окт-07 17:57 
А как сделать шейп на каждый IP в сети. Например:
имеются сети 192.168.0.х, 192.168.1.x. Надо каждому IP из одной сети дать шейп на 128 Кбит, из другой - 256 Кбит. Или только прописав пайп на каждый IP?

С уважением Владислав


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено grayich , 26-Окт-07 01:11 
в статье об этом написано, перечитай

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено devchaos , 27-Мрт-08 18:24 
Разделение полосы 10 мегабит на всех

ipfw pipe 3 config bw 10Mbit/s
ipfw queue 3 config pipe 3 weight 50 mask dst-ip 0xffffffff
ipfw queue 4 config pipe 3 weight 50 mask src-ip 0xffffffff
ipfw add queue 3 ip from any to 192.168.0.0/24
ipfw add queue 4 ip from 192.168.0.0/24 to any
Это для асиметричного линка 10 мегабит. По крайней мере если исходить из этой статьи.
Ежели пример по каким либо причинам нерабочий, пожалуйста, подправьте.


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено shamil , 03-Мрт-09 10:15 
Правильно ли настроен firewall? Цель: дать 2Мбита для пользователей с IP из сети 172.16.200.0/24

ipfw pipe 1 config bw 2048Kbit/s
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
00041  queue 11 ip from 172.16.200.0/24 to any
00050 divert 8668 ip from any to 91.205.128.6 in via em1
00060 divert 8668 ip from 172.16.0.0/16 to any via em1
00061 queue 1 ip from any to 172.16.200.0/24


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено grayich , 03-Мрт-09 10:51 
sysctl net.inet.ip.fw.one_pass=0

# типа так
ipfw pipe 1 config bw 2048Kbit/s queue 1 # out
ipfw pipe 2 config bw 2048Kbit/s queue 20 # in
# если 2 мегабита на in и out общий то pipe 1 есесенно использовать

ipfw queue 1 config pipe 1 weight 50 queue 20 mask src-ip 0xffffffff # out
ipfw queue 2 config pipe 2 weight 50 queue 20 mask dst-ip 0xffffffff # in

ipfw add queue 1 ip from 172.16.200.0/24 to any out via em1

ipfw nat 1 config if em1 log same_ports
ipfw add nat 1 ip from 172.16.200.0/24 to any out via em1
ipfw add nat 1 ip from any to any in via em1

ipfw add queue 2 ip from any to 172.16.200.0/24 in via em1

ipfw add allow ip from any to any



"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено Ramin , 28-Авг-09 17:27 
ipfw queue  1 config pipe 1 weight 50 queue 20 mask dst-addr 0xffffffff

не работает.
ipfw: unrecognised option ``dst-addr''
ошибка


"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe qu..."
Отправлено grayich , 28-Авг-09 23:40 
ipfw queue 1 config pipe 1 weight 50 queue 20 mask dst-ip 0xffffffff

"Подробнее об использовании pipe-s в IPFW (ipfw limit pipe queue traffic shaper limit freebsd)"
Отправлено 0bJ0riK , 28-Сен-10 12:29 
Подскажите плиззз, мне надо просто выдать в своей подсети каждому айпи по 5Мб/s как это реализовать?