Page 1 of 2
"Правильный" shaper?
Posted: 28 Dec 2017, 06:37
by KovAl
CentOS 6.9, ядро - 4.4.103-1.el6.elrepo.x86_64.
accel-ppp последний релиз с git-a.
IPoE + vlan-mon, QinQ.
Пытаюсь "отполировать" шейпер.
Конфиг:
Code: Select all
[shaper]
verbose=1
time-range=1,0:00-9:59
vendor=Cisco
attr=Cisco-AVPair
latency=50
mpu=29
quantum=1500
leaf-qdisc=sfq perturb 10
ifb=ifb1
up-limiter=police
down-limiter=htb
Скорости отдаются радиусом, Cisco like
Code: Select all
Acct-Interim-Interval = 60, Service-Type = Framed-User, DHCP-Router-IP-Address = 172.16.0.1,Cisco-AVPair +="lcp:interface-config#1=rate-limit input 15728640 5898240 5898240 conform-action transmit exceed-action drop",Cisco-AVPair +="lcp:interface-config#1=rate-limit output 15728640 5898240 5898240 conform-action transmit exceed-action drop", Cisco-AVPair +="lcp:interface-config#1=rate-limit input access-group 1 47185920 17694720 17694720 conform-action transmit exceed-action drop",Cisco-AVPair +="lcp:interface-config#1=rate-limit output access-group 1 47185920 17694720 17694720 conform-action transmit exceed-action drop"
С download проблем нет, при любых параметрах down-limiter (tbf/htb), а вот с upload не получается вписать в "норму".
Если up-limiter=police, то имеем "плюс" ~25% к "тарифу", если up-limiter=htb - наоборот - "минус" ~25%.
Соответственно вопрос - как получить "золотую середину"?
P.S. Вообще, очень хотелось бы увидеть в документации "отполированные" в продакшен конфиги шейпера.
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 08:37
by dimka88
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 09:05
by KovAl
Выключены
Code: Select all
[root@ipoe etc]# ethtool -k eth1 | grep offload
tcp-segmentation-offload: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off [fixed]
rx-vlan-offload: off
tx-vlan-offload: off
l2-fwd-offload: off [fixed]
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 10:26
by dimka88
Покажите тогда
Code: Select all
tc qdisc show dev ifaceX
tc filter show dev ifaceX parent ffff:
ifaceX - интерфейс с клиентом, например (ipoe0, ppp0, eth0.100.100).
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 11:58
by KovAl
В шейпере up-limiter=police
Установлено 25Mbit download/upload:
Code: Select all
Cisco-AVPair = "lcp:interface-config#1=rate-limit input 26214400 9830400 9830400 conform-action transmit exceed-action drop"
Cisco-AVPair = "lcp:interface-config#1=rate-limit output 26214400 9830400 9830400 conform-action transmit exceed-action drop"
Результат теста скорости: download - 25,5 Mbps, upload - 32,5 Mbps
Code: Select all
[root@ipoe etc]# tc qdisc show dev eth1.2532.1205
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc sfq 2: parent 1:1 limit 127p quantum 1522b perturb 10sec
qdisc ingress ffff: parent ffff:fff1 ----------------
[root@ipoe etc]# tc filter show dev eth1.2532.1205 parent ffff:
filter protocol all pref 100 u32
filter protocol all pref 100 u32 fh 800: ht divisor 1
filter protocol all pref 100 u32 fh 800::1 order 1 key ht 800 bkt 0 flowid :1
match 00000000/00000000 at 0
action order 1: police 0x23 rate 26214Kbit burst 9600Kb mtu 2Kb action drop overhead 0b
ref 1 bind 1
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 12:12
by dimka88
burst великоват, нужно уменьшать. Я не совсем дружу с cisco AVPair, вы уверены что нужно передавать 9830400 9830400?
Еще посмотрел mtu 2Kb, в доке по tc указано, чем больше значение походит на правду, то есть 1500, тем точнее.
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 12:34
by KovAl
dimka88 wrote: ↑28 Dec 2017, 12:12
burst великоват, нужно уменьшать. Я не совсем дружу с cisco AVPair, вы уверены что нужно передавать 9830400 9830400?
Насчёт "дружбы с циской" я тоже не ахти, в данный момент у меня всё шейпит mpd5..
Такое значение burst - это как бы стандартная цисковская рекомендация: burst = cir/8*3. И как бы для download он работает правильно.
Кстати, мысль насчёт burst мне тоже приходила, пробовал изменять для upload несколько вариантов (только для upload):
1. cir/16 - результат - 31,8 Mbps
2. cir/32 - результат - 32,4 Mbps
3. cir/64 - результат - 32,2 Mbps
4. cir/128 - результат - 32,0 Mbps
Т.о. получается одно и тоже. Такое ощущение, что burst вообще не влияет..
P.S. Похоже, что шейпер просто игнорирует параметр burst.
Загрузил так:
Cisco-AVPair = "lcp:interface-config#1=rate-limit input 26214400 0 0 conform-action transmit exceed-action drop"
Cisco-AVPair = "lcp:interface-config#1=rate-limit output 26214400 9830400 9830400 conform-action transmit exceed-action drop"
Результат тот же!
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 13:11
by KovAl
P.P.S. Вспомнилось вот ещё что - встречал на просторах Интернета, где значение параметра conform-action не transmit, а continue.
Т.е. "...conform-action continue exceed-action drop". Или для accel это не принципиально?
dimka88 wrote: ↑28 Dec 2017, 12:12
Еще посмотрел mtu 2Kb, в доке по tc указано, чем больше значение походит на правду, то есть 1500, тем точнее.
А это чей mtu? Если интерфейса, то он 1500 и есть
Code: Select all
[root@ipoe etc]# ifconfig eth1.2532.1205
eth1.2532.1205 Link encap:Ethernet HWaddr 00:XX:XX:XX:XX:C7
inet addr:172.16.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: fe80::230:48ff:fe90:e6c7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:415022 errors:0 dropped:0 overruns:0 frame:0
TX packets:383156 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:431902427 (411.8 MiB) TX bytes:357428271 (340.8 MiB)
Откуда могло взятся 2Кб ?? Это вообще тогда получится 2048.. Нигде такого MTU на сервере нет.
На "голом" eth1 он 1536(т.к. QinQ), на клиентских интерфейсах - 1500 (устанавливаю в accel параметром interface=re:eth1\.\d{4}\.\d{4},mtu=1500)
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 13:34
by dimka88
2k вроде как по дефолту, пока можно опустить.
Можно попробовать в качестве эксперимента ручками задать.
Code: Select all
#Удаляем старое правило
/sbin/tc qdisc del dev eth1.2532.1205 ingress
#Навешиваем по новому
/sbin/tc qdisc add dev eth1.2532.1205 handle ffff:
/sbin/tc filter add dev eth1.2532.1205 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 26214Kbit burst 12k action drop flowid :1
Re: "Правильный" shaper?
Posted: 28 Dec 2017, 13:40
by KovAl
Упс..
Code: Select all
[root@ipoe etc]# tc qdisc del dev eth1.2532.1205 ingress
[root@ipoe etc]# tc qdisc add dev eth1.2532.1205 handle ffff:
RTNETLINK answers: No such file or directory
[root@ipoe etc]# tc filter add dev eth1.2532.1205 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 26214Kbit burst 12k action drop flo
wid :1
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
А вот так скушало
Code: Select all
[root@ipoe etc]# tc qdisc del dev eth1.2532.1205 ingress
[root@ipoe etc]# tc qdisc add dev eth1.2532.1205 ingress handle ffff:
[root@ipoe etc]# tc filter add dev eth1.2532.1205 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 26214Kbit burst 12k action drop flo
wid :1
Результат - 11,2 Mbps вместо 25 требуемых, или 32 ранее имевшихся..
Очень похоже на 50% от "заказа".