Шейпер не отрабатывает исключения по fwmark

Shaper related questions
Post Reply
phsm
Posts: 5
Joined: 18 Dec 2014, 20:33

Шейпер не отрабатывает исключения по fwmark

Post by phsm »

Добрый день.
Поднял accel-ppp стабильной версии 1.9.0, ipoe vlan per client, установил fwmark для ipset-a с сетями UA-IX:
$ipt -t raw -A PREROUTING -m set --match-set uaix src -j MARK --set-mark 38
$ipt -t raw -A PREROUTING -m set --match-set uaix dst -j MARK --set-mark 38
Установил первым правилом в PREROUTING

Iptables-каунтеры этих правил растут, следовательно, пакеты марчатся.
В конфиге accel-ppp указал:
[shaper]
r2q=1300
quantum=1500
attr-down=PPPD-Downstream-Speed-Limit
attr-up=PPPD-Upstream-Speed-Limit
ifb=ifb0
up-limiter=police
down-limiter=htb
leaf-qdisc=sfq perturb 10
fwmark=38
verbose=10

Шейпер работает отлично: при проверке скорости спидтестом, скачиванием файла - скорость почти полностью соответствует пакету. Однако, трафик на хост, который имеется в ipset uaix, также попадает под это ограничение.

# tc qdisc show dev eth1.53.65
qdisc htb 1: root refcnt 2 r2q 1300 default 1 direct_packets_stat 7416
qdisc sfq 2: parent 1:1 limit 127p quantum 1532b depth 127 divisor 1024 perturb 10sec
qdisc ingress ffff: parent ffff:fff1 ----------------

# tc filter show dev eth1.53.65 root
filter parent ffff: protocol ip pref 100 u32
filter parent ffff: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent ffff: protocol ip pref 100 u32 fh 800::1 order 1 key ht 800 bkt 0 flowid :1
match 00000000/00000000 at 12
action order 1: police 0x2ed rate 50000Kbit burst 6250000b mtu 2Kb action drop overhead 0b
ref 1 bind 1

# tc filter show dev eth1.53.65
filter parent 1: protocol ip pref 90 fw
filter parent 1: protocol ip pref 90 fw handle 0x26 classid 1:



Куда копать? В tc слабо разбираюсь, хотя имею представление о том как устроена иерархия классов в htb,
Самостоятельно ifb-интерфейс не подымал, на него ничего с помощью tc не заворачивал. Это нужно делать, либо accel-ppp сам?
Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: Шейпер не отрабатывает исключения по fwmark

Post by Dmitry »

fwmark работает только для трафика в сторону клиента
phsm wrote:$ipt -t raw -A PREROUTING -m set --match-set uaix src -j MARK --set-mark 38
$ipt -t raw -A PREROUTING -m set --match-set uaix dst -j MARK --set-mark 38
в таблице mangle вообще-то обычно ставят марки
phsm
Posts: 5
Joined: 18 Dec 2014, 20:33

Re: Шейпер не отрабатывает исключения по fwmark

Post by phsm »

Да, Вы правы.. Поменял таблицу на mangle - заработало. Спасибо
IVB
Posts: 15
Joined: 22 Nov 2017, 12:31

Re: Шейпер не отрабатывает исключения по fwmark

Post by IVB »

Что-то я запутался...

Вот раздел shaper конфига

Code: Select all

mpu=0
r2q=10
quantum=1500
ifb=ifb0
up-limiter=police
down-limiter=htb
leaf-qdisc=sfq perturb 10
fwmark=48
verbose=1
Т.е. трафик, который "покрашен" при помощи fwmark, не должен шейпиться.

Вот правило файрвола, коорым трафик "красится":

Code: Select all

iptables -t mangle -A PREROUTING -p tcp -m dscp ! --dscp 48 -j MARK --set-mark 48
На другом моём сервере весь "мировой" трафик помечается значением 48 в поле DSCP, а на сервере с Accel на весь трафик с DSCP, отличным от 48, навешивается fwmark 48. Т.е. весь "не мировой" трафик должен идти мимо шейпера.

То, что на правило MARK трафик попадает - видно по счётчику пакетов.

Но, очевидно, что-то я делаю не так, потому что у меня шейпится весь трафик - и "украинский", и "мировой".

Подскажите, пожалуйста, на что нужно обратить внимание, и что я мог сделать "не так".

Топик старый, но случай похожий, поэтому извините за некропостинг - считаю, что он оправдан.
IVB
Posts: 15
Joined: 22 Nov 2017, 12:31

Re: Шейпер не отрабатывает исключения по fwmark

Post by IVB »

Dmitry wrote: 18 Dec 2014, 22:07 fwmark работает только для трафика в сторону клиента
Изменилось ли что-либо за почти 4 года?
Есть ли возможность задавать исключения по fwmark и для трафика, исходящего от клиента?
Post Reply