Миграция шейпера с ESFQ на SFQ flow has keys dst
Добрый день.
В более-менее последних ядрах появилась альтернатива ESFQ в виде
внешнего классификатора для SFQ, что позволяет организовать
псевдосправедливую (per-host) раздачу трафика на основе стандартного
ядра без сторонних патчей и т.п.
Вот кусочек шейпера с ESFQ:
/opt/sbin/tc qdisc del dev eth2 root
/opt/sbin/tc qdisc add dev eth2 root handle 1 htb default 50 r2q 10
/opt/sbin/tc class add dev eth2 parent 1: classid 1:2 htb rate 100Mbit
# Это кусочек полосы для ssh
/opt/sbin/tc class add dev eth2 parent 1:2 classid 1:20 htb rate
200Kbit ceil 100Mbit prio 10
/opt/sbin/tc qdisc add dev eth2 parent 1:20 handle 20 esfq perturb 10 hash dst
/opt/sbin/tc filter add dev eth2 parent 1:0 protocol ip prio 100 u32
match ip sport 22 0xffff classid 1:20
~skip~
#А это дефолтный класс
/opt/sbin/tc class add dev eth2 parent 1:2 classid 1:50 htb rate
85Mbit ceil 100Mbit prio 50
/opt/sbin/tc qdisc add dev eth2 parent 1:50 handle 50 esfq perturb 10 hash dst
Вот аналог придуманный мною для SFQ/flow:
[code]
/sbin/tc qdisc del dev eth2 root
/sbin/tc qdisc add dev eth2 root handle 1 htb default 50 r2q 10
/sbin/tc class add dev eth2 parent 1: classid 1:2 htb rate 100Mbit
/sbin/tc class add dev eth2 parent 1:2 classid 1:20 htb rate 200Kbit
ceil 100Mbit prio 10
/sbin/tc qdisc add dev eth2 parent 1:20 handle 20 sfq
/sbin/tc filter add dev eth2 parent 1:0 protocol ip prio 100 u32 match
ip sport 22 0xffff classid 1:20
/sbin/tc filter add dev eth2 parent 20: protocol ip handle 20 flow
hash keys nfct-dst divisor 1024
~skip~
/sbin/tc class add dev eth2 parent 1:2 classid 1:50 htb rate 85Mbit
ceil 100Mbit prio 50
/sbin/tc qdisc add dev eth2 parent 1:50 handle 50: sfq
/sbin/tc filter add dev eth2 parent 50: protocol ip handle 50 flow
hash keys nfct-dst divisor 1024
[/code]
Синтаксис верный, но - не работает. Через какое-то время пакеты
теряются до полной непроходимости.
Документации по flow я не обнаружил и слабо понимаю как действует
фильтр на дисциплину...
--
WBR, Bogdan B. Rudas
Reply to: