저는 tc qdisc를 처음 사용하고 처리량, 대기 시간 및 손실을 변경하는 스크립트를 작성해 왔습니다. 그러나 처리량 수준을 변경하려고 하면 UDP 트래픽(iperf 사용 시)이 아닌 TCP 트래픽에만 영향을 미칩니다. 설정 문제인지 이해 문제인지는 모르겠지만..
파이썬 스크립트:
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 트래픽에 대한 제한도 확인할 수 있습니다.