Iperf網絡吞吐量/帶寬測試的考慮和總結
Iperf測試:使用udp設定帶寬2M,5M,10M,同時觀察對正進行的ping測試的影響。證明iperf使用udp測試/使用一定或最大帶寬時,同樣能影響tcp協議的流量。
任務
(1) (使用UDP,參數-u -b 2M)設定不同帶寬
- # iperf3 -c 192.168.199.18 -p54321 -i 1 -t 1800 -u -b 1M
(2) 雙向同時測試(在任一端多開一個iperf port/進程,然后在同一端使用參數-R進行測試)
服務端執行:
- # iperf3 -s -p54321
- # iperf3 -s -p54322
客戶端執行:
- # iperf3 -c 192.168.199.18 -p54321 -i 1 -t 1800 -u -b 1M
- # iperf3 -c 192.168.199.18 -p54322 -i 1 -t 1800 -u -b 1M -R
注意事項
TCP協議測試不能計算出時延與丟包率,而且還不能指定發送帶寬。
(1) Iperf主要功能:
Iperf可以用來測試網絡節點間(也包括回環)TCP或UDP連接的性能,包括測試帶寬、抖動以及丟包率,其中抖動和丟包率適應于UDP測試,而帶寬測試適應于TCP和UDP。
(2) 雙向同時測試方法:在任一端開多一個iperf port/進程(注意Port不同),然后在另一端使用參數-R進行測試
例如:
在測試機A(服務端) 執行:(windows需要打開多一個cmd窗口)
- # iperf3 -s -p23451
- # iperf3 -s -p50000
在測試機B(客戶端)執行:
- # iperf3 -c 192.168.0.11 -p23451 -i 1 -t 3600 -u -b 1M
- # iperf3 -c 192.168.0.11 -p50000 -i 1 -t 3600 -u -b 1M -R
(3) Jitter(抖動值)就是連續發送時延差值的平均值
(4) 回環測試iperf是否安裝成功
- # iperf3 -s
- -----------------------------------------------------------
- Server listening on 5201
- -----------------------------------------------------------
- # iperf3 -c 127.0.0.1
- Connecting to host 127.0.0.1, port 5201
- [ 4] local 127.0.0.1 port 58884 connected to 127.0.0.1 port 5201
- [ ID] Interval Transfer Bandwidth Retr Cwnd
- [ 4] 0.00-1.00 sec 705 MBytes 5.92 Gbits/sec 0 560 KBytes
- …..
(5) 測試吞吐量,抖動和丟包率
如果需要同時測試以上三個參數,那么只能通過UDP獲得。使用-u參數進行UDP測試(iperf默認為TCP)。
在測試的最后server端會給出一個報告。
要獲得帶寬數據,需要不斷在client端增加帶寬值,直到server端出現輕微的丟包為止,此時server端顯示的帶寬就是被測系統的吞吐量。
(6) 一般來說,我們在做性能測試的時候需要指定包長,不同的包長會得到不同的吞吐量,通過-l指定,而使用-b指定帶寬。
(7) 使用TCP測試帶寬應注意的問題
有時候,我們需要使用TCP來測試網絡帶寬。這里有一個參數需要特別注意,那就是TCP窗口大小,可以使用-w參數指定。
網絡通道的容量capacity = bandwidth * round-trip time
而理論TCP窗口的大小就是網絡通道的容量。
比如,網絡帶寬為40Mbit/s,回環路徑消耗時間是2ms,那么TCP的窗口大小不小于40Mbit/s×2ms = 80kbit = 10Kbytes
此時我們可以查詢iperf默認的TCP窗口大小來決定是否需要設置此參數,在此例中,窗口大小應設計大于10Kbytes,當然,這僅僅是理論值,在實際測試中可能需要作出調整。