Шейпер не отрабатывает исключения по fwmark
Posted: 18 Dec 2014, 20:52
Добрый день.
Поднял 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 сам?
Поднял 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 сам?