TC QDISC를 사용하여 처리량을 설정하면 TCP에는 영향을 주지만 UDP에는 영향을 주지 않습니다.

TC QDISC를 사용하여 처리량을 설정하면 TCP에는 영향을 주지만 UDP에는 영향을 주지 않습니다.

저는 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 트래픽에 대한 제한도 확인할 수 있습니다.

관련 정보