Шейпинг p2p трафика на linux + tc + ndpi?

Использую роутер с 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 при запущенном торренте практически равна нулю. Что я делаю не так?
  • Вопрос задан
  • 7181 просмотр
Пригласить эксперта
Ответы на вопрос 3
ValdikSS
@ValdikSS
Вы шейпите исходящий трафик, а не входящий. Входящий трафик «просто так» шейпить нельзя, нужно его как-то сделать исходящим. Например, через IMQ или IFB
Ответ написан
sht0rm13
@sht0rm13
Торрент клиент использует шифрование?
Ответ написан
@Infactum Автор вопроса
Столько времени уже прошло, но оказывается мне на другом форуме присылали ответ..
Напишу его здесь, надеюсь кому-то пригодится:
ошибка в том, что у тебя потолок указан как 100Мбайт/с (100Mbs), а должно быть 100Mbit, а точнее - меньше этого значения на 5-10%. Поэтому очередь пустая и приоритезация не работает совсем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы