我需要一种不设置带宽限制的情况下对数据包进行优先级排序的方法。例如,我有一个客户端使用了整个带宽。一旦其他客户端需要带宽,就减少前者的带宽,以免影响导航,但一旦完成下载,就将初始客户端恢复到其全部带宽。
我正在尝试控制 torrent 带宽使用情况,以免影响导航,但同时在没有导航时使用所有带宽。torrent 流量的 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