使用 TC QDISC 设置吞吐量会影响 TCP,但不会影响 UDP

使用 TC QDISC 设置吞吐量会影响 TCP,但不会影响 UDP

我是 tc qdisc 的新手,我一直在创建一个脚本来更改吞吐量、延迟和损失。然而,当我尝试更改吞吐量级别时,我只看到对 TCP 流量的影响,而不是对 UDP 流量的影响(使用 iperf 时)。不知道是配置问题还是理解问题...

Python脚本:

Mbps_init="5"
Ms_init="10"
Loss_init="10"


os.system("tc class add dev h2-eth0 parent 1: classid 1:1 htb rate "+Mbps_init+"mbit")
os.system("tc qdisc add dev h2-eth0 parent 1:1 handle 10: netem delay "+Ms_init+"ms loss "+Loss_init+"%")
os.system("tc filter add dev h2-eth0 protocol ip parent 1:0 prio 1 u32 match ip src 10.0.0.2/24 match ip dst 10.0.0.1/24 flowid 1:1")

TCP(我没有达到 5Mbps,但我们可以认为它“足够接近”):

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  6] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 38442
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-11.1 sec  3.62 MBytes  2.75 Mbits/sec

UDP(我看到对数据包丢失的影响,但对带宽没有影响):

Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  5] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 59510
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  5]  0.0- 9.2 sec  1.14 MBytes  1.04 Mbits/sec  15.697 ms   78/  893 (8.7%)

答案1

回答我自己的问题,如果我没记错的话,只是UDP iperf默认发送1Mb的数据。

您可以在 iperf UDP 模式下使用选项 -b 来增加发送的数据量。然后,您也可以开始看到 UDP 流量的限制。

相关内容