ipfw queue in FreeBSD 8.1

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-22 1:34:41

вопрос скорее всего к terminus так он больше всего экспеременировал
Только я разобрался более менее с очередями в 7.3, вроде все заработало, даже начал делать заметку с примерами,как на домашнем серваке решил обновится до 8.1 и о горе

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

 FreeBSD 8.1-RELEASE-p1 #3:
- полюбившееся мне команда ipfw pipe show перестала выводить в удобном виде вложенные очереди внутри трубы
- появился какой то там планировщик распределения пакетов что ли
http://www.linux.org.ru/news/kernel/1186942
вместо стандартого WF2Q+
- задание типа планировщика по ману не пашет (!!! - и это в релизе????)
и тут тоже
http://www.freebsd.org/cgi/man.cgi?quer ... ormat=html
вместо

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

 sched 10 type fifo( wf2qp,rr  ,qfq) 
методом тыка выяснил что пашет 
sched 10 type FIFO (WF2Q+,RR,QFQ)
- и самое главное о горе, что мой старый стандартный конфиг
${fwcmd} pipe 10 config bw 6000Kbit/s queue 60 gred 0.002/10/30/0.1
${fwcmd} queue 1 config pipe 10 weight 90 mask all
${fwcmd} queue 2 config pipe 10 weight 50 mask dst-ip 0xffffffff
${fwcmd} queue 3 config pipe 10 weight 50 mask dst-ip 0xffffffff
начал вызывать огромные задержки , тоесть буквально сайты начинали открыватся через нат, спустя 10сек
по дефолту вроде как врубается WF2Q+
методом научного тыка в течении часа удалось хоть куда то вписать планировщик и улучшить ситуцию
${fwcmd} pipe 10 config bw 6000Kbit/s queue 60 gred 0.002/10/30/0.1 sched 11 type QFQ.
${fwcmd} queue 1 config pipe 10 weight 90 mask all
${fwcmd} queue 2 config pipe 10 weight 50 mask dst-ip 0xffffffff
${fwcmd} queue 3 config pipe 10 weight 50 mask dst-ip 0xffffffff
хотя я честно не понял что оно теперь делает в итоге
тк

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

# ipfw sched list
00010:   6.000 Mbit/s    0 ms burst 0
 sched 10 type QFQ flags 0x0 0 buckets 1 active
   Children flowsets: 3 2 1
  0 ip           0.0.0.0/0             0.0.0.0/0       72     4453  0    0   0

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

#ipfw pipe list
00010:  6.000 Mbit/s    0 ms burst 0
q131082  60 sl. 0 flows (1 buckets) sched 11 weight 0 lmax 0 pri 0
         GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
 sched 65546 type FIFO flags 0x0 0 buckets 0 active
:cz2:
есть рабочие примеры и руский ман? :smile:
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение terminus » 2010-09-22 9:36:11

Не игрался еще, не знаю. Читайте Луиджи - у него в pdf-ках примеры с презинтаций были:
http://info.iet.unipi.it/~luigi/qfq/
info.iet.unipi.it/~luigi/papers/20100127-qfq-full.pdf
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-22 10:20:32

читал ,хренушки там примеры левые
он пишет
${fwcmd} sched 11 bw 6000Kbit/s type QFQ
bw 6000Kbit/s оно вообще не умеет это может быть в карренте

я в шоке что примеров нету нормальных и это релизз 8)

зы и вообще луиджи свой планировщик QFQ рекламирует
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-22 10:27:57

${fwcmd} sched 1 type QFQ
${fwcmd} sched 1 type qfq
тоже не работает пишет ошибку
я методом тыка искал куда этот шедулер пихать и как его правильно назвать :(

знал бы с++ то можно было бы исходники курить :cz2:
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

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

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hizel » 2010-09-22 10:32:22

чукча писатель

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

[11:31] root@o ~ #ipfw sched 1 config type QFQ
[11:31] root@o ~ #ipfw sched show
00001: unlimited         0 ms burst 0 
 sched 1 type QFQ flags 0x0 0 buckets 0 active
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-22 11:09:12

вспомнил

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

ipfw sched 1 config type QFQ
писал было такое
только дальше что с этим планировщиком делать , мне нужно было его привязать к трубе...

что значит
#ipfw pipe list
00010: 6.000 Mbit/s 0 ms burst 0
q131082 60 sl. 0 flows (1 buckets) sched 11 weight 0 lmax 0 pri 0
GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
sched 65546 type FIFO flags 0x0 0 buckets 0 active
q131082 ??? sched 65546 ???
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

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

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hizel » 2010-09-22 15:24:46

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

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-23 11:10:14

ну вроде, все как я в топике написал пашет без проблем
еще где бы теорию на русском почитать про шедулер WF2Q+ и QFQ какие у них достоинства и недостатки и когда какой выбирать
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

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

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hizel » 2010-09-23 12:10:02

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

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение gonzo111 » 2010-09-23 13:09:16

пиши по делу не флуди )))
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

mr.yaky
рядовой
Сообщения: 12
Зарегистрирован: 2010-07-25 19:12:16

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mr.yaky » 2010-10-18 18:39:05

вопрос к аудитории кто уже опробовал Dummynet на FreeBSD 8.1 :

Раньше делал динамический шейпер с приоритетами (IPFW - Dummynet - weight) на FreeBSD 8.0 все работает по сей день без нареканий
(kernel: dummynet: OUCH! pipe should have been idle! - не в счет , пока не дошли руки пропатчить )

Но есть другой сервер с уже установленной FreeBSD 8.1 , нужно на нем настраивать такой же шейпер как выше (IPFW - Dummynet - weight)

Так вот, как там обстоят дела с переменной net.inet.ip.fw.one_pass - в моем положении она будет вести себя ноормально - то есть я не смогу выставить нужное мне значение?
Видел просто похожий баг касательно netgraph -- http://www.mail-archive.com/freebsd-bug ... 02125.html
так там уже есть патч для решения.
И с kernel nat'ом с этой переменной так же проблемы есть.
Если есть та же проблема с Dummynet , то есть ли уже лекарство от этого?
Как там дела в ветке 8.1-STABLE против RELEASE?

mr.yaky
рядовой
Сообщения: 12
Зарегистрирован: 2010-07-25 19:12:16

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mr.yaky » 2010-10-20 12:50:32

Товарищи присоединяемся рассматривать новые вкусности 8.1
Вот что я наковырял по поводу нового планировщика QFQ (рабочий вариант) :

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

ipfw -q table 112 add 192.168.0.2
ipfw -q table 113 add 192.168.0.10

ipfw pipe 50 config bw 2000Kbit/s mask dst-ip 0xffffffff

########pipe 50 
#ipfw sched 50 config type QFQ mask dst-ip 0xffffff00 

ipfw sched 50 config type QFQ
ipfw queue 501 config sched 50 weight  9
ipfw queue 502 config sched 50 weight  1

$cmd queue 501 ip from not 192.168.0.0/24 to "table(112)" out 
$cmd queue 502 ip from not 192.168.0.0/24 to "table(113)" out 
При таком конфиге отлично работает шейпинг с приоритетом 1 и 9 (10 и 90 по старому)
Скорость ровняется до заданного коэффициента за 6-7 секунд

net.inet.ip.fw.one_pass: 0 --- на всякий случай поставил! но и с значением "1" вроде разницы и не замечал

Инфу брал здесь:
http://info.iet.unipi.it/~luigi/doc/201 ... an10dn.pdf ---- 32 страница и т.д.
Еще подсматривал реализацию тут:
http://www.mail-archive.com/freebsd-ipf ... 02480.html

Вообщем имея свой старый конфиг получил приведенный выше пример

Сильно не топчите если что не так в Unix не так уж давно,а так
критика только кстати, а еще был бы благодарен если бы кто-то сведущий поделился мыслями и покрутил на практике также!

mr.yaky
рядовой
Сообщения: 12
Зарегистрирован: 2010-07-25 19:12:16

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mr.yaky » 2010-10-20 14:31:14

Ради интереса до приведенного выше конфига(shape dowload) добавил еще и шейпинг для upload:

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

########pipe 60 
ipfw sched 60 config type QFQ
ipfw queue 601 config sched 60 weight  9
ipfw queue 602 config sched 60 weight  1

$cmd queue 601 ip from "table(112)" to not me in 
$cmd queue 602 ip from "table(113)" to not me in 
И к моему удивлению все работает также отлично!
Заметил две хороших особенностей работы шейпинга против 8.0 по рассмотренным выше примерам:

1 . Есть машина с FreeBSD 8.0 и настроенным шейпингом - суть правил та же, только другой планировщик и синтаксис,
так вот на ней у меня никак не получалось шейпить upload - скорость падала в два раза. То бишь нужно было писать в два раза больше скорость для пайпа на upload(так работало норм) или просто отключать шейпинг по upload, последнее я и сделал(пока устраивает).

2 . Когда я на 8.0 прописывал weight 10 и 90 , то скорость dowload (наверно и upload- просто, уже не помню) на клиенте шейпинга с приоритетом 10 не поднималась до максимальной для пайпа - все работало вроде по такой формуле "2 Mbit/s - 0.1 * 2 Mbit/s" (где 2Mbit/s - pipe для dowaload) , как будто ему не хватало 10% до полной мощности, естественно это все проверялось при свободном канале не загруженным другими пользователями. А вот на клиенте с приоритетом 90 максимальная скорость dowload была на максимуме заданного для пайпа!
Так вот на FreeBSD 8.1 такого не наблюдается совсем, то есть если свободный канал то пользователь с приоритетом в шейпинге 10 может пользоваться максимальной скоростью на ширину всего пайпа, а не урезанной на 10% и именно только для него.

Может приведенные выше плюсы 8.1 - минусы 8.0 и решаемы, не буду спорить или это была кривизна моих рук, но в FreeBSD 8.1 я получил это, так сказать, прямо из коробки :)

Polkz
проходил мимо
Сообщения: 3
Зарегистрирован: 2010-10-22 16:01:30

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение Polkz » 2010-10-22 16:09:08

${fwcmd} pipe 50 config bw 4Mbit/s mask dst-ip 0xffffffff
${fwcmd} sched 50 config type QFQ
${fwcmd} queue 501 config sched 50 weight 70
${fwcmd} queue 502 config sched 50 weight 20
${fwcmd} queue 503 config sched 50 weight 10

${fwcmd} add queue 501 ip from not 192.168.111.0/24 to "table(1)"
${fwcmd} add queue 502 ip from not 192.168.111.0/24 to "table(3)"
${fwcmd} add queue 503 ip from not 192.168.111.0/24 to "table(2)"

Попробовал сделать пишет ошибки

Bump sched buckets to 64 (was 0)
Bump qfq weight to 1 (was 0)
Bump qfq maxlen to 1500 (was 0)

mr.yaky
рядовой
Сообщения: 12
Зарегистрирован: 2010-07-25 19:12:16

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mr.yaky » 2010-10-22 16:44:36

во первых приоритеты(weight) ставь как у меня 1-10 ,а не 10-100. По крайней мере у меня так работает нормально.
во вторых у меня в логах также есть такой вывод, но все работает:
об Bump sched buckets to 64 (was 0) написано тут:
http://community.livejournal.com/ru_root/2043784.html
http://forum.pfsense.org/index.php?topi ... _next=next

сейчас пользуюсь таким конфигом:

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

ipfw -q table 101 add 192.168.9.2
ipfw -q table 102 add 192.168.9.10
ipfw -q table 103 add 192.168.9.11

ipfw pipe 50 config bw 2000Kbit/s mask dst-ip 0xffffffff
ipfw pipe 60 config bw 2000Kbit/s mask src-ip 0xffffffff

########pipe 50 
ipfw sched 50 config type QFQ mask dst-ip 0xffffff00 
ipfw queue 501 config sched 50 weight  7
ipfw queue 502 config sched 50 weight  5
ipfw queue 503 config sched 50 weight  3

ipfw add queue 501 ip from not 192.168.9.0/24 to "table(101)" out 
ipfw add queue 502 ip from not 192.168.9.0/24 to "table(102)" out 
ipfw add queue 503 ip from not 192.168.9.0/24 to "table(103)" out 

########pipe 60 
ipfw sched 60 config type QFQ mask dst-ip 0xffffff00 
ipfw queue 601 config sched 60 weight  7
ipfw queue 602 config sched 60 weight  5
ipfw queue 603 config sched 60 weight  3

ipfw add queue 601 ip from "table(101)" to not me in 
ipfw add queue 602 ip from "table(102)" to not me in 
ipfw add queue 603 ip from "table(103)" to not me in 

Polkz
проходил мимо
Сообщения: 3
Зарегистрирован: 2010-10-22 16:01:30

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение Polkz » 2010-10-26 10:31:46

Bump sched buckets to 64 (was 0) с этим сообщение понятно поставил

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

net.inet.ip.dummynet.hash_size=1024   
net.inet.ip.fw.dyn_buckets=1024
а что это

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

Bump qfq weight to 1 (was 0)
Bump qfq maxlen to 1500 (was 0)
weight поставил 1-10 как у тебя. теже сообщения

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mediamag » 2011-01-04 19:02:25

Доброго времени суток уважаемые камрады. Так же являюсь любителем очередей пайпов и тд (не раз создавал темы для решения похожих проблем). Решил помоч и себе и вам. Собираюсь ставить на шлюз фрю 8,1 вместо 7,3, так как есть такое чувство, что dummynet там доработан и работает лучше. Я смотрю, что в 8,1 появились всякие шедулеры и тому подобные нововведения. Перед установкой сервера есть пару вопросов. Несколько изминились конфиги...что это за строчки и что они делают?
########pipe 60
ipfw sched 60 config type QFQ mask dst-ip 0xffffff00
ipfw queue 601 config sched 60 weight 7
ipfw queue 602 config sched 60 weight 5
ipfw queue 603 config sched 60 weight 3
weight - это понятно, а вот остальное что это за нововведение?

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hranitel_y2k » 2011-01-05 0:16:38

Грубо говоря, все осталось прежним,но появился шедайлер (планировщик). Функция его в том, что он определяет каким образом queue попадают и обслуживаются в pipe. Хороший рисунок есть в мане ipfw.
Разберем на примере:

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

ipfw sched 60 config type QFQ mask dst-ip 0xffffff00
Здесь указывается,что sched используется для pipe 60 (параметр pipe bw задается заранее), дальше алгоритм обслуживания потоков-queue, в данном случае QFQ (есть и другие, см. ман). А дальше - маска 0xffffff00 (равносильна - 24). Что означает, что для КАЖДОЙ ПОДСЕТИ (если у вас их несколько) будет свой планировщик. Отмечу еще,что у pipe алгоритм обслуживания ВСЕГДА FIFO, поэтому если у Вас несколько планировщиков на один pipe,то конкурировать (обслуживаться) между собой они будут только по этому алгоритму.

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

ipfw queue 601 config sched 60 weight 7
ipfw queue 602 config sched 60 weight 5
ipfw queue 603 config sched 60 weight 3
А тут уже указаны потоки, которые попадают в планировшик и будут им обслуживаться по алгоритму QFQ.

Сие уже реализовал на практике в своей сетке,заработало очень не плохо, особенно, после того как перешел с NATD на IPFW NAT.
Все гениальное - просто!

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mediamag » 2011-01-05 9:38:55

Спасибо за разьеснение. Через недельку подниму домашнего провайдера (компов пока на 30-50) и отпишусь что да как

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mediamag » 2011-01-19 16:24:38

Поставил сегодня шлюз на фре 8,1+ipfw+dummynet . Канал 14 мбит. Подсунул старый конфиг без shed и QFQ. Все вроде работает исправно...так в чем же смысл этого планировщика?

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hranitel_y2k » 2011-01-19 19:33:40

mediamag писал(а):Поставил сегодня шлюз на фре 8,1+ipfw+dummynet . Канал 14 мбит. Подсунул старый конфиг без shed и QFQ. Все вроде работает исправно...так в чем же смысл этого планировщика?
Смысл в том,что queue надо управлять.
Вот ссылка на исследования автора dummynet: http://info.iet.unipi.it/~luigi/papers/20100304-ccr.pdf
Все гениальное - просто!

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mediamag » 2011-01-20 10:26:12

Возник вопрос - если у меня конструкция трубы для таблицы ip, как я должен указывать шедулер - для всей сети или для каждого айпи?

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

# table 1 (5 Mbit/s)
$fwcmd pipe 1 config bw 5Mbit/s queue 595Kbytes
$fwcmd pipe 2 config bw 256Kbit/s queue 28Kbytes

# table 1 (5 Mbit/s)
$fwcmd queue 1 config pipe 1 queue 595Kbytes gred 0.002/99kbytes/297Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 2 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 1 (5 Mbit/s)
$fwcmd add 1 queue 1 ip from not $intnet to "table(1)" out
$fwcmd add 2 queue 2 ip from "table(1)" to not me in

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hranitel_y2k » 2011-01-20 14:32:12

mediamag писал(а):Возник вопрос - если у меня конструкция трубы для таблицы ip, как я должен указывать шедулер - для всей сети или для каждого айпи?

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

# table 1 (5 Mbit/s)
$fwcmd pipe 1 config bw 5Mbit/s queue 595Kbytes
$fwcmd pipe 2 config bw 256Kbit/s queue 28Kbytes

# table 1 (5 Mbit/s)
$fwcmd queue 1 config pipe 1 queue 595Kbytes gred 0.002/99kbytes/297Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 2 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 1 (5 Mbit/s)
$fwcmd add 1 queue 1 ip from not $intnet to "table(1)" out
$fwcmd add 2 queue 2 ip from "table(1)" to not me in
Для всей сети. Чтобы для каждого ip бы свой queue,а sched уже их обрабатывал.
Ваш пример надо добавить и подправить так:

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

# table 1 (5 Mbit/s)
$fwcmd pipe 1 config bw 5Mbit/s queue 595Kbytes
$fwcmd pipe 2 config bw 256Kbit/s queue 28Kbytes

# table 1 (5 Mbit/s) sched
$fwcmd sched 1 config type QFQ mask dst-ip 0xffffff00
$fwcmd sched 2 config type QFQ mask src-ip 0xffffff00

# table 1 (5 Mbit/s)
$fwcmd queue 1 config sched 1 queue 595Kbytes gred 0.002/99kbytes/297Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config sched 2 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 1 (5 Mbit/s)
$fwcmd add 1 queue 1 ip from not $intnet to "table(1)" out
$fwcmd add 2 queue 2 ip from "table(1)" to not me in
Все гениальное - просто!

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение mediamag » 2011-01-20 16:29:48

Странно, но с такой конструкцией не заработало - нат перестал натить...вижу вот такие странности:

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

00001    0      0 queue 1 ip from not 10.0.0.0/24 to table(1) out
00002  298  15804 queue 2 ip from table(1) to not me in
00003    0      0 queue 3 ip from not 10.0.0.0/24 to table(2) out
00004  173  11642 queue 4 ip from table(2) to not me in
00005    0      0 queue 5 ip from not 10.0.0.0/24 to table(3) out
00006 2723 140928 queue 6 ip from table(3) to not me in
00007    0      0 queue 7 ip from not 10.0.0.0/24 to table(4) out
00008   63   3385 queue 8 ip from table(4) to not me in
и в message

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

Bump sched buckets to 64 (was 0)
Bump qfq weight to 1 (was 0)
Bump qfq maxlen to 1500 (was 0)
Хотя я выставил в sysctl переменные, как сказано выше.
Вот весь мой шейпер:

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

#---pipes for tables------------------------------

# table 1 (5 Mbit/s)
$fwcmd pipe 1 config bw 5Mbit/s queue 595Kbytes
$fwcmd pipe 2 config bw 256Kbit/s queue 28Kbytes

# table 2 (2 Mbit/s)
$fwcmd pipe 3 config bw 2Mbit/s queue 238Kbytes
$fwcmd pipe 4 config bw 256Kbit/s queue 28kbytes

# table 3 (2 Mbit/s)
$fwcmd pipe 5 config bw 2Mbit/s queue 238kbytes
$fwcmd pipe 6 config bw 256Kbit/s queue 28kbytes

# table 4 (1 Mbit/s)
$fwcmd pipe 7 config bw 1Mbit/s queue 119kbytes
$fwcmd pipe 8 config bw 256Kbit/s queue 28kbytes

#----Shedulers for pipes----------------------------

# table 1 (5 Mbit/s) sched
$fwcmd sched 1 config type QFQ mask dst-ip 0xffffff00
$fwcmd sched 2 config type QFQ mask src-ip 0xffffff00

# table 2 (2 Mbit/s)
$fwcmd sched 3 config type QFQ mask dst-ip 0xffffff00
$fwcmd sched 4 config type QFQ mask src-ip 0xffffff00

# table 3 (2 Mbit/s)
$fwcmd sched 5 config type QFQ mask dst-ip 0xffffff00
$fwcmd sched 6 config type QFQ mask src-ip 0xffffff00

# table 4 (1 Mbit/s)
$fwcmd sched 7 config type QFQ mask dst-ip 0xffffff00
$fwcmd sched 8 config type QFQ mask src-ip 0xffffff00

#---queues for tables--------------------------------------------------------------------------------

# table 1 (5 Mbit/s)
$fwcmd queue 1 config shed 1 queue 595Kbytes gred 0.002/99kbytes/297Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config shed 2 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 2
$fwcmd queue 3 config shed 3 queue 238Kbytes gred 0.002/39Kbytes/119Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 4 config shed 4 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 3 (2 Mbit/s)
$fwcmd queue 5 config shed 5 queue 238Kbytes gred 0.002/39Kbytes/119Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 6 config shed 6 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

# table 4
$fwcmd queue 7 config shed 7 queue 119Kbytes gred 0.002/19kbytes/59Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 8 config shed 8 queue 28kbytes gred 0.002/3kbytes/14kbytes/0.1 mask src-ip 0xffffffff

#----allow pipe and queue traffic-------------------------

# table 1 (5 Mbit/s)
$fwcmd add 1 queue 1 ip from not $intnet to "table(1)" out
$fwcmd add 2 queue 2 ip from "table(1)" to not me in

# table 2 (2 Mbit/s)
$fwcmd add 3 queue 3 ip from not $intnet to "table(2)" out
$fwcmd add 4 queue 4 ip from "table(2)" to not me in

# table 3
$fwcmd add 5 queue 5 ip from not $intnet to "table(3)" out
$fwcmd add 6 queue 6 ip from "table(3)" to not me in

# table 4
$fwcmd add 7 queue 7 ip from not $intnet to "table(4)" out
$fwcmd add 8 queue 8 ip from "table(4)" to not me in

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: ipfw queue in FreeBSD 8.1

Непрочитанное сообщение hranitel_y2k » 2011-01-20 20:52:28

Странно, но с такой конструкцией не заработало - нат перестал натить...
У вас тоже? А я думал,это у меня где-то косяк в правилах. Исходящий нат работает только в случае "any to any" или добавления внешнего ip в правило nat.

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

Bump sched buckets to 64 (was 0)
Bump qfq weight to 1 (was 0)
Bump qfq maxlen to 1500 (was 0)
Гугл говорит,что это сообщение у всех (у меня тоже).
Все гениальное - просто!