我正在尝试使用tc
限制一系列端口的最大带宽(统称)。以下是剧本:
tc qdisc add dev eth0 root handle 1: htb default 10;
tc class add dev eth0 parent 1: classid 1:1 htb rate 75kbit;
tc qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10
tc filter add dev eth0 parent 1: protocol ip u32 match ip sport 5000 0xffff flowid 1:1;
tc filter add dev eth0 parent 1: protocol ip u32 match ip sport 5001 0xffff flowid 1:1;
上面的脚本运行正常,但这些端口的带宽不受限制。
当我检查状态时,我找不到这些端口的任何过滤器:
$ tc class show dev eth0
class htb 1:1 root leaf 2: prio 0 rate 75000bit ceil 75000bit burst 1599b cburst 1599b
$ tc qdisc show dev eth0
qdisc htb 1: root refcnt 9 r2q 10 default 10 direct_packets_stat 49 direct_qlen 1000
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
$ tc filter show dev eth0
filter parent 1: protocol ip pref 49152 u32
filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1
match 13880000/ffff0000 at 20
从上面的输出中,我可以识别出正在应用的class
和qdisc
,但我看不到filter
和5000
中的5001
以上输出。
这是filter
的预期输出吗?如何解决此问题以便强制执行带宽限制?