Использую роутер с OpenWRT. Задача сделать так, чтобы входящий P2P/eDonkey трафик имел более низкий приоритет, чем весь остальной, и занимал только свободную часть канала.
Делаю следующее:
tc qdisc add dev br-lan root handle 1: htb default 20
tc class add dev br-lan parent 1: classid 1:1 htb rate 100Mbps
# класс под P2P трафик
tc class add dev br-lan parent 1:1 classid 1:10 htb rate 1kbps ceil 100Mbps prio 10
# класс под остальной трафик
tc class add dev br-lan parent 1:1 classid 1:20 htb rate 1kbps ceil 100Mbps prio 0
iptables -t mangle -A POSTROUTING -m ndpi --bittorrent -j CLASSIFY --set-class 1:10
iptables -t mangle -A POSTROUTING -m ndpi --edonkey -j CLASSIFY --set-class 1:10
Проверка статистики tc показывает, что трафик классифицируется верно и попадает в правильные корзины htb.
Далее выполняю проверку следующим образом:
1. Захожу на speedtest.net и смотрю результат теста не загруженного канала.
2. Запускаю торрент, который полностью загружает канал.
3. Снова запускаю speedtest, ожидая тех же результатов, что и при свободном канале, так как шейпер должен передать полосу пропускания классу с приоритетом 0.
В итоге скорость speedtest при запущенном торренте практически равна нулю. Что я делаю не так?