使用 tc 和 netem 为本地主机上的特定端口添加一些延迟

使用 tc 和 netem 为本地主机上的特定端口添加一些延迟

我将使用 tc(Linux 的流量控制)命令模拟本地主机三个不同端口上的网络延迟。我运行以下代码:

!/bin/bash
tc qdisc add dev lo root handle 1: htb 
tc class add dev lo parent 1: classid 1:1 htb rate 1000Mbps
#1:
tc class add dev lo parent 1:1 classid 1:2 htb rate 1000Mbps
tc qdisc add dev lo handle 2: parent 1:2 netem delay 500ms
tc filter add dev lo pref 2 protocol ip u32 match ip dport 7011 0xffff flowid 1:2
#2:
tc class add dev lo parent 1:1 classid 1:3 htb rate 1000Mbps
tc qdisc add dev lo handle 3: parent 1:3 netem delay 1000ms
tc filter add dev lo pref 3 protocol ip u32 match ip dport 7011 0xffff flowid 1:3
#3:
tc class add dev lo parent 1:1 classid 1:4 htb rate 1000Mbps
tc qdisc add dev lo handle 4: parent 1:4 netem delay 100ms
tc filter add dev lo pref 4 protocol ip u32 match ip dport 7012 0xffff flowid 1:4

但是,这些过滤器似乎没有造成任何延迟。我甚至尝试使用 sport,但也没有发生任何事情。顺便说一句,我可以在没有过滤器的情况下向本地主机 (127.0.0.1) 添加延迟。但是当我为端口添加过滤器时,它不起作用。

我不明白我错在哪里。

相关内容