我是 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 流量的限制。