我一直在使用 Ubuntu18.04,并尝试使用 linux tc 来调整流量。过去几个月一切进展顺利。以下是我的命令:
# init queue
sudo tc qdisc add dev enp2s0 root handle 1:0 tbf rate 20mbit limit 16k burst 10k
sudo tc qdisc add dev enp2s0 parent 1:0 handle 10: netem rate 20mbit
# continuously adjust the traffic using following command with python
sudo tc qdisc add dev enp2s0 parent 1:0 handle 10: netem rate <bandwidth>kbit delay <rtt>ms loss <loss>%
然而最近几天我注意到 TBF 似乎停止工作了。
我怎么知道
我使用iperf3来测试链接:
# receiver, a windows pc
iperf3 -s
# sender, a linux PC performing tc & iperf client
iperf3 -u -c <receiver's ip> -b 1.5M -t 1000
带宽设置为1兆位/秒。
- 我观察到巨大的滞后发送方设置的带宽波动与接收方观察到的吞吐量之间的差异。
- 发送者退出后,接收者几秒钟后仍可收到剩余的数据包. (总计约5~10 Mbit)
- 当我尝试使用 iperf 时,一切正常TCP:
iperf3 -c <receiver's ip> -b 1.5M -t 1000
。我认为这是因为 TCP 有一个方案来限制带宽,不会产生过多的数据包。这就是为什么我认为是 TBF 而不是其他组件失败了。
我试过了
- 更换网卡
- 更改 iperf 客户端
- 更换电缆
以上都无济于事。