设置:客户端笔记本电脑 (mac) 无线连接到 Wi-Fi 路由器(带有 dd-wrt 固件的 atheros NIC)。服务器(Linux)通过以太网接口直接连接到路由器。现在我正在使用 iperf3 测试吞吐量;
在服务器上
iperf3 -s
在客户处
iperf3 -R -c 192.168.1.121 -t 60 -b 50M
也就是说,客户端正在从服务器下载(使用-R选项)。这是 TCP 流量(具有 Reno 拥塞控制)。这样我就获得了预期的约 50 Mbps 的连续吞吐量。拥塞确实在随机时间存在,这使得那些时刻的吞吐量下降。这很好。现在我试图控制从 Wi-Fi 路由器到客户端(即 Wi-Fi 出口端口)的流量。为此,我使用 Linux 的 tc 实用程序。
在 Wi-Fi 路由器上:
tc qdisc add dev ath0 root tbf rate 5mbit burst 32kbit latency 400ms
一旦执行,吞吐量就如预期降至 5Mbps。
问题:如果我使用 UDP 而不是 TCP:
iperf3 -R -c 192.168.1.121 -t 60 -b 50M -u
生成 UDP 流量的选项-u
也可以正常工作。但是,当生成相同的 tc 命令来控制流量时,UDP 吞吐量会下降至 0 Mbps。当 tc qdisc 控制被删除时,它只能恢复到 50Mbps。
可能的原因是什么?