私は最初にtc qdiscを使用し、スループット、レイテンシ、および損失を変更するスクリプトを書いてきました。ただし、スループットレベルを変更しようとすると、UDPトラフィック(iperfを使用している場合)ではなくTCPトラフィックにのみ影響します。設定問題か理解問題なのかわかりませんが…
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トラフィックの制限も確認できます。