Страница 1 из 1

ipfw queue приоритеты неработает

Добавлено: 2012-02-16 13:05:08
Роккман
собственно такая проблема, торренты душат канал, если веб страницы ещё коекак грузятся, то в вове пинг красный и дисконектит
резать скорость посчитал не самой светлой идеей, решил всё раскидать по очередям
чтоб допустим игровой трафик всегда первым обрабатывался, во вторую очередь хттп, а уж торенты всегда в конце очереди стояли и их пакеты обрабатывались по возможности
погуглив получилось примерно так

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

!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

...

wow="9081,9100,9090,8086,3724,9091,8087,6112,6881-6999"

ipfw add check-state

ipfw add allow ip from ${ssh} to me 22 keep-state
ipfw add allow ip from ${sql} to me 3306 keep-state

ipfw pipe 1 config bw 10Mbit/s
ipfw queue 1 config pipe 1 weight 100
ipfw queue 2 config pipe 1 weight 50
ipfw queue 3 config pipe 1 weight 33
ipfw queue 4 config pipe 1 weight 1

ipfw add queue 1 ip from any ${wow} to any in via vr0

ipfw add queue 2 ip from any 80,443,3128,8080 to any in via vr0
ipfw add queue 3 ip from any 20,21 to any in via vr0
ipfw add queue 4 ip from any not 80,443,3128,8080,${wow},20,21 to any in via vr0

...
vr0 это входящий канал от провайдера на 10мегабит (аплоада там 20+ так что суть не важен)
net.inet.ip.fw.one_pass=0 прописан

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

по клиентам 5+ через впн подключатся, они имеют возможность качать с торрента, но некоторые из них какраз играют в вов
и ~10+ через хттп прокси, для них собственно нужно чтоб веб трафик опережал торренты, но не мешал вов

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 13:57:30
gardener
Чтобы труба нормально работала нужно в нее запихивать ВЕСЬ трафик с этого интерфейса.
Кроме того пропускная способность канала ВСЕГДА ниже заявленной. То есть не 10Mbit/s, а скажем 9000Kbit/s.
Ну и "трубить" трафик нужно в обоих направлениях. Тем более что торрент в основном работает как раз отдавая, а не получая (направление out а не in)

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 14:21:29
Роккман
у меня и идёт весь трафик в трубу, кроме ssh с мускулем (который почти не используется)
канал приёма на самом деле чуть чуть выше 10мегабит, так что не в этом проблема
отдача идёт 20-30 мегабит в среднем, судя по спидтестам инетовским, канал отдачи всегда свободен, трубить отдачу не вижу абсолютно никакого смысла
да и пакеты должны сортироватся вне зависимости от ширины трубы, это ж не шейпер

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 14:34:46
hizel
изучайте ipfw pipe show

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 15:02:48
Роккман
нечего там изучать, как будто ничего не вливается в трубу
хотя должно

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

[14:07]# ipfw pipe show
00001:  10.000 Mbit/s    0 ms burst 0
q131073  50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
 sched 65537 type FIFO flags 0x0 0 buckets 0 active
[14:07]# ipfw queue show
q00001  50 sl. 0 flows (1 buckets) sched 1 weight 100 lmax 0 pri 0 droptail
q00002  50 sl. 0 flows (1 buckets) sched 1 weight 50 lmax 0 pri 0 droptail
q00003  50 sl. 0 flows (1 buckets) sched 1 weight 33 lmax 0 pri 0 droptail
q00004  50 sl. 0 flows (1 buckets) sched 1 weight 1 lmax 0 pri 0 droptail
[14:07]# ipfw show
...
00500    33    43445 queue 1 ip from any 9081,9100,9090,8086,3724,9091,8087,6112,6881-6999 to any in via vr0
00600   142   176548 queue 2 ip from any 80,443,3128,8080 to any in via vr0
00700     0        0 queue 3 ip from any 20,21 to any in via vr0
00800  1343   911143 queue 4 ip from any not 80,443,3128,8080,9081,9100,9090,8086,3724,9091,8087,6112,6881-6999,20,21 to any in via vr0
...

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 16:29:47
gardener
ipfw pipe show показывает что в трубе, а там активные очереди.
А вот ipfw queue show НЕ показывает активных соединений .... потому что их там нет?
Счетчик срабатывания правил не нулевой, значит правила работают. Но в данный момент!?

Может имеет смысл немного конкретизировать правила, в смысле не in via vr0, а именно in via recv vr0. Потому как входить в интерфейс можно с любого из концов.

Собственно Ваш случай http://www.lissyara.su/articles/freebsd ... ueue_pipe/

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 16:40:38
hizel
где там активные очереди? везде 0 flows

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 16:56:28
Роккман
в том то и дело что фаервол прохождение трафика по правилам регистрирует, но в сами очередя вроде как ничего не становится
in via vr0 это трафик который получает фаервол с vr0 интерфейса (то что мне и нужно), уточнение recv имеет смысл если вместо any написать me
вроде судя по статье, у меня всё написано правильно, не считая "mask dst-ip 0xffffffff" такой мути
но как я понял если ВЕСЬ трафик пускать в ОДНУ трубу, то маску дописывать не нужно

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 17:37:18
gardener
hizel писал(а):где там активные очереди? везде 0 flows
Вот я и говорю, что их там нет. :)
Роккман писал(а):уточнение recv имеет смысл если вместо any написать me
Не настаиваю, но именно когда any и нужно конкретизировать.
From any как читать, "от любого изнутри" или "от любого снаружи" in vr0? У интерфейса ДВА конца, внутренний и наружный.
но как я понял если ВЕСЬ трафик пускать в ОДНУ трубу, то маску дописывать не нужно
Не нужно.
Почему не работает не понятно. ДОЛЖНО.

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 18:30:25
ADRE
просто пишешь например не от майлан: from not майлан to any out - От любого кроме, и лепи что хочешь

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 18:53:43
Роккман
ADRE писал(а):просто пишешь например не от майлан: from not майлан to any out - От любого кроме, и лепи что хочешь
мне то входящий трафик, который на меня с провайдера идёт :)
суть в том, что даже если лишник трафик по правилу попадает, то в очередя ничего не становится вообще
пытался через altq завернуть по статье с сайта, но оно почемуто весь входящий траффик тупо блокирует

уже незнаю что делать, думал из-за того что у меня натилка через ipnat работает, но практика показала что в ipnat трафик попадает уже после ipfw

может както можно завернуть входящий трафик в netgraph_queue до фаервола?

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 19:27:29
gardener
Роккман писал(а):суть в том, что даже если лишник трафик по правилу попадает, то в очередя ничего не становится вообще
а в ядро поддержка очередей включена?
options DUMMYNET есть?
rc.conf
dummynet_enable="YES" есть?

Что еще может быть? У всех работает должно и у Вас!

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 20:12:02
Роккман
gardener писал(а):
Роккман писал(а):суть в том, что даже если лишник трафик по правилу попадает, то в очередя ничего не становится вообще
а в ядро поддержка очередей включена?
options DUMMYNET есть?
rc.conf
dummynet_enable="YES" есть?

Что еще может быть? У всех работает должно и у Вас!
в ядре есть, в рц прописал, ничего не изменилось, судя во sysctl он работает

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

[19:16]# sysctl net.inet.ip | grep dummy
net.inet.ip.dummynet.io_pkt_drop: 0
net.inet.ip.dummynet.io_pkt_fast: 2744
net.inet.ip.dummynet.io_pkt: 265921
net.inet.ip.dummynet.queue_count: 0
net.inet.ip.dummynet.fsk_count: 5
net.inet.ip.dummynet.si_count: 1
net.inet.ip.dummynet.schk_count: 2
net.inet.ip.dummynet.expire_cycle: 0
net.inet.ip.dummynet.expire: 1
net.inet.ip.dummynet.tick_lost: 0
net.inet.ip.dummynet.tick_diff: 396481
net.inet.ip.dummynet.tick_adjustment: 391429
net.inet.ip.dummynet.tick_delta_sum: -6
net.inet.ip.dummynet.tick_delta: -500
net.inet.ip.dummynet.red_max_pkt_size: 1500
net.inet.ip.dummynet.red_avg_pkt_size: 512
net.inet.ip.dummynet.red_lookup_depth: 256
net.inet.ip.dummynet.debug: 0
net.inet.ip.dummynet.io_fast: 0
net.inet.ip.dummynet.pipe_byte_limit: 1048576
net.inet.ip.dummynet.pipe_slot_limit: 100
net.inet.ip.dummynet.hash_size: 64

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-16 23:19:37
gardener
Ннда. Я когда с "ядреным" НАТом разбирался, (не мог входящие настроить) делал коротенькие правила только по интересующей меня теме, и пробовал. Может стоит аналогичным образом попробовать и Вам и понять, а работают ли вообще и если да, то как и почему.
То есть сделать минимум правил:

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

wow="9081,9100,9090,8086,3724,9091,8087,6112,6881-6999"
ipfw pipe 1 config bw 10Mbit/s
ipfw queue 1 config pipe 1 weight 100
ipfw queue 2 config pipe 1 weight 50
ipfw queue 3 config pipe 1 weight 33
ipfw queue 4 config pipe 1 weight 1

ipfw add check-state
ipfw add allow proto all out xmit vr0 keep-state
ipfw add queue 1 ip from any ${wow} to any in via vr0
ipfw add queue 2 ip from any 80,443,3128,8080 to any in via vr0
ipfw add queue 3 ip from any 20,21 to any in via vr0
ipfw add queue 4 ip from any not 80,443,3128,8080,${wow},20,21 to any in via vr0

ipfw add allow proto ip in recv vr0 keep-state
и пробовать, отслеживая движение пакетов и пытаясь понять что и почему. Вообщем как-то так. Ничего умнее на ум не приходит :unknown:

Re: ipfw queue приоритеты неработает

Добавлено: 2012-02-18 18:42:43
Роккман
пытался раздать впн клиентам по 1мегабиту чтоб друг друга торентами не глушили, однако тоже бестолку, не в очередя не в трубы ничего не попадает

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

ipfw pipe 2 config bw 1Mbit/s
ipfw queue 5 config pipe 2 mask dst-ip 0xfffffff0
ipfw add queue 5 gre from 192.168.7.13 to 192.168.7.0/24
где 192.168.7.13 ип сервера

з.ы. пытался переписать фаер под pf, всё получилось кроме того что впн клиенты могут внешку только пинговать, другой трафик не проходит, гугл говорит что это косяк pf