Мне нужен способ расставить приоритеты для пакетов без ограничения полосы пропускания. Например, у меня есть клиент, использующий всю полосу пропускания. Как только другим клиентам потребуется полоса пропускания, уменьшите пропускную способность первого, чтобы не ухудшать навигацию, но как только закончите загрузку, восстановите первоначального клиента до его полной пропускной способности.
Я пытаюсь контролировать использование полосы пропускания торрента, чтобы не влиять на навигацию, но в то же время использую всю полосу пропускания, когда нет навигации. Торрент-трафик имеет TOS 0x48.
Я пробовал сценарий с использованием HFSC, но не работал должным образом.
#!/bin/bash
TC=/usr/sbin/tc
DEV=ppp0
ID=1
# Cleanup
$TC qdisc del dev $DEV root 2>/dev/null
# Classes
## Dev class
$TC qdisc add dev $DEV root handle $ID: hfsc
## Root class
$TC class add dev $DEV parent $ID: classid $ID:1 hfsc \
sc rate 600kbit \
ul rate 600kbit
## HTTP and prioritized packets
$TC class add dev $DEV parent $ID:1 classid $ID:10 hfsc \
sc rate 400kbit \
ul rate 600kbit
## Trash traffic
$TC class add dev $DEV parent $ID:1 classid $ID:20 hfsc \
ul rate 400kbit \
ls rate 200kbit
# Filters
## Torrent
$TC filter add dev $DEV parent $ID:0 protocol ip prio 1 u32 \
match ip tos 0x48 0xff \
flowid 1:20
## Resto
$TC filter add dev $DEV parent $ID:0 prio 5 u32 \
match ip src any flowid 1:10