我正面临着一种我现在无法解释的行为。
以下是我要做的事情:通过接口限制发送速率(enp0s8)并应用PRIO qdisc。数据包将根据其DSCP字段发送到PRIO qdisc的相应频段。
为此,我应用了HTB(塑造交通)和PRIO qdisc。
出于测试目的,我正在使用iperf发送流量。
这是HTB和PRIO配置:
#HTB qdisc
tc qdisc add dev enp0s8 root handle 1: htb default 1
tc class add dev enp0s8 parent 1: classid 1:1 htb rate 2000kbit ceil
2000kbit burst 2000kbit
# PRIO qdisc
tc qdisc add dev enp0s8 parent 1:1 handle 2: prio bands 4
tc qdisc add dev enp0s8 parent 2:1 pfifo
tc qdisc add dev enp0s8 parent 2:2 pfifo
tc qdisc add dev enp0s8 parent 2:3 pfifo
tc qdisc add dev enp0s8 parent 2:4 pfifo
# PRIO filters
tc filter add dev enp0s8 parent 2:0 prio 1 protocol ip u32 match ip tos 0x28 0xff flowid 2:1
tc filter add dev enp0s8 parent 2:0 prio 2 protocol ip u32 match ip tos 0x38 0xff flowid 2:2
tc filter add dev enp0s8 parent 2:0 prio 3 protocol ip u32 match ip tos 0x48 0xff flowid 2:3
tc filter add dev enp0s8 parent 2:0 prio 4 protocol ip u32 match ip tos 0x58 0xff flowid 2:4
这是我的iperf脚本用于测试目的:
killall iperf
iperf -c 192.168.56.1 -u -b 2.4m -l 1458B -S 0x58 -t 1024 &
sleep 20
iperf -c 192.168.56.1 -u -b 2.4m -l 1458B -S 0x38 -t 1024 &
sleep 20
iperf -c 192.168.56.1 -u -b 2.4m -l 1458B -S 0x28 -t 1024 &
通过此测试,预计会出现以下行为:
它似乎在大多数情况下工作正常,但我不时会看到具有第二高优先级的流量重新出现几秒钟,而我不应该(请参阅wireshark屏幕截图)。
我检查了稳定的iperf流量。
您是否有想法解释此行为或解决问题的方法?
提前谢谢你。 亚历山大
P.S