iperf—流量測試


iperf是另外一款用於流量測試的軟件,主要運行於Windows系統和安卓系統的手/PADIOS系統下載需要收費)

一個工作Server模式,另外一個工作Client模式,輸入Server測試ip地址就可以測試ClientServer方向的流量測試時通過改變設備的工作模式,完成上下行的流量測試。

1.iperf安裝

1.1下載地址:https://iperf.fr/iperf-download.php

1.2  linux環境安裝使用命令安裝

#gunzip –c iperf-<version>.tar.gz | tar –xvf -

#cd iperf-<version>

#./configure

#make

#make install

1.3 windows環境使用直接將解壓出來的iperf.execygwin1.dll復制到%systemroot%目錄(根目錄)即可,還要進入iperf當前文件夾敲命令。 

2. Iperf主要功能

2.1.TCP

測量網絡帶寬

報告MSS/MTU值的大小和觀測值

支持TCP窗口值通過套接字緩沖

P線程或Win32線程可用時,支持多線程。客戶端與服務端支持同時多重連接

2.2.UDP

客戶端可以創建指定帶寬的UDP流

測量丟包

測量延遲

支持多播

P線程可用時,支持多線程。客戶端與服務端支持同時多重連接(不支持Windows)

2.3.其他

在適當的地方,選項中可以使用K(kilo-)和M(mega-)。例如131072字節可以用128K代替。

可以指定運行的總時間,甚至可以設置傳輸的數據總量。

在報告中,為數據選用最合適的單位。

服務器支持多重連接,而不是等待一個單線程測試。

在指定時間間隔重復顯示網絡帶寬,波動和丟包情況。

服務器端可作為后台程序運行。

服務器端可作為Windows 服務運行。

使用典型數據流來測試鏈接層壓縮對於可用帶寬的影響。

支持傳送指定文件,可以定性和定量測試。

2.4參數介紹

 

備注:參數區分大小寫

3.網絡帶寬測試

使用iperf3測試時,要同時在server端與client端都各執行一個程序,讓它們互相傳送報文進行測試。發包測試需要分為UDP測試與TCP測試,其中服務端需要用-u命令去區分監聽協議。TCP協議測試不能計算出時延與丟包率,而且還不能指定發送帶寬。

3.1測試單線程TCP傳輸速度

服務器啟動:iperf3 –s –p 54321 -i 1

啟動客戶端輸入:iperf3–c 10.101.70.247 –p 54321–i 1 –t 10 –w 10K

-c:客戶端模式,后接服務器ip

-p:后接服務端監聽的端口

-i:設置帶寬報告的時間間隔,單位為秒

-t:設置測試的時長,單位為秒

-w:設置tcp窗口大小,一般可以不用設置,默認即可

Interval表示時間間隔。Transfer表示時間間隔里面轉輸的數據量。Bandwidth是時間間隔里的傳輸速率。最后一行是本次測試的統計。測試可知帶寬平均為74.0Mbit/sec。

參數說明-t改變運行的時間-i改變輸出頻率 

(網絡速度單位換算https://wenku.baidu.com/view/bab6102dbd64783e09122b1d.html

3.2測試多線程TCP傳輸速度

啟動客戶端輸入:iperf3–c 10.101.70.247–i 1 –t 5 –P 3 

參數說明-P參數來設置多線程的數目,通過使用多線程,可以在一定程度上增加網絡的吞吐量-n指定要發送的數據量。使用-n參數后,-t參數失效,傳輸完指定大小的數據包后,自動結束。

 

通過-P參數開啟了3個線程,從傳輸時間上看,傳輸10M的數據,消耗時間為1.07秒,比之前單線程的傳輸時間少了一點點,在平均帶寬速率上,從之前單線程的73.4Mbits/sec提高到73.4Mbits/sec,從這個結果可以看出,多線程對網絡傳輸性能有提高。

 

3.3測試單線程UDP傳輸速度

服務器啟動:iperf3 -s -i 1 

啟動客戶端輸入:iperf3 –c 10.101.70.247 -i 1 -t 5 -u –b 50M

-c:客戶端模式,后接服務器ip
-p:后接服務端監聽的端口
-i:設置帶寬報告的時間間隔,單位為秒
-t:設置測試的時長,單位為秒
-b:設置udp的發送帶寬,單位bit/s
-u : 設置UDP

 

要獲得帶寬數據,需要通過-b不斷在client端增加帶寬值,直到server端出現輕微的丟包為止,此時server端顯示的帶寬就是被測系統的吞吐量。

Interval表示時間間隔。Transfer表示時間間隔里面轉輸的數據量。Bandwidth是時間間隔里的傳輸速率。Jitter為抖動,lost/total為丟包數量,Datagrams為包數量。

3.4測試多線程UDP傳輸速度

啟動客戶端輸入:iperf3 -c 10.101.70.247 –p 54321 -i 1 -t 4 -u -P 3 –b 30M

 

4. 測試UDP丟包和延遲

iperf也可以用於UDP數據包吞吐量、丟包率和延遲指標,但是由於UDP協議是一個非面向連接的輕量級傳輸協議,並且不提供可靠的數據傳輸服務,因此對UDP應用的關注點不是傳輸數據有多快,而是它的丟包率和延時指標。通過-u參數即可測試UDP應用的傳輸性能

l Iperf測試UDP性能時,客戶端可以指定UDP數據流的速率。客戶端發送數據時,將根據客戶端提供的速率計算數據報發送之間的時延。

客戶端還可以指定發送數據報的大小。每個發送的數據報包含一個ID號,用來唯一標識報文,服務器端根據該ID號來確定數據報丟失和亂序。

當把UDP報文大小設置可以將整個報文放入IP層的包(packet)內時,那么UDP所測得的報文丟失數據即為IP層包的丟失數據,這提供了一個有效的測試包丟失情況的方法。 

數據報傳輸延遲抖動 (Jitter)的測試由服務器端完成,客戶發送的報文數據包含有發送時間戳,服務器端根據該時間信息和接收到報文的時間戳來計算傳輸延遲抖動。傳輸延遲抖動反映傳輸過程中是否平滑。由於它是一個相對值,所以並不需要客戶端和服務器端時間同步

啟動客戶端輸入:iperf3 -c 10.101.70.247 -u -b 100M –n 2G

 

Jitter列表示抖動時間,或者稱為傳輸延遲,Lost/Total列表示丟失的數據報和總的數據報數量,后面的80%是平均丟包的比率,Datagrams列顯示的是總共傳輸數據報的數量。

5.Iperf工作原理

Iperf主要的功能是測試基於特定路徑的TCP連接的性能,我們知道TCP連接調整最基本的措施是調整TCP窗口的大小,窗口大小控制在任何節點網絡中可以存在的數據大小。如果該值太小,發送者將會在某段時間處於空閑狀態,從而影響發送的性能。TCP窗口大小的理論值為鏈路瓶頸帶寬與往返時延的乘積:

TCP_Window=Bottleneck_Bandwidth*Round_Trip_Time

例如鏈路瓶頸帶寬為45Mbps,往返時延為42ms(可以通過ping來測試),那么窗口的理論值為:

45Mbps*42ms=(45*e6)*(42*e-3)=1890000 bits=230KByte

調節窗口大小即可以理論值為基准,在該值上慢慢增大或減少,即可獲得最好的結果。

  Iperf測試TCP帶寬的原理較簡單,即在客戶端和服務器端建立連接(三次握手)后,客戶端發送一定大小的數據報,並記下發送的時間, 或者客戶端在一定的時間內發送數據,並記下發送的總數據。帶寬的大小等於發送的總數據除以發送的總時間。對服務器端來說,就是在連接建立時間內,接收的總數據除以所花時間即為服務器端所測得的帶寬。MSS的大小通過TCP內核接口函數直接獲得。

  Iperf測試UDP的性能時,客戶端可以指定UDP數據流的速率。客戶端發送數據時,將根據客戶提供的速率計算數據報發送之間的時延。另外客戶還可以指定發送數據報的大小。每個發送的數據報包含一個ID號,用來惟一地標識該報文。服務器端則根據該ID號來確定數據報丟失和亂序。當把UDP報文大小設置可以將整個報文放入IP層的包(packet)內時,那么UDP所測得的報文丟失數據即為IP層包的丟失數據。這提供了一個有效的測試包丟失情況的方法。數據報傳輸延遲抖動 (Jitter)的測試由服務器端完成,客戶發送的報文數據包含有發送時間戳,服務器端根據該時間信息和接收到報文的時間戳來計算傳輸延遲抖動。傳輸延遲抖動反映傳輸過程中是否平滑。由於它是一個相對值,所以並不需要客戶端和服務器端時間同步。

 


 

 

參數說明

-s 以server模式啟動,eg:iperf –s 。Server端為數據的接收端。

-c host以client模式啟動,host是server端地址,eg:iperf -c 222.35.11.23 。Client端為數據的發出端。

 

通用參數

-f [kmKM] 分別表示以Kbits, Mbits, KBytes, MBytes顯示報告,默認以Mbits為單位,eg:iperf -c 222.35.11.23 -f K

-i sec 以秒為單位顯示報告間隔,eg:iperf -c 222.35.11.23 -i 2

-l 緩沖區大小,默認是8KB,eg:iperf -c 222.35.11.23 -l 16

-m 顯示tcp最大mtu值

-o 將報告和錯誤信息輸出到文件eg:iperf -c 222.35.11.23 -o ciperflog.txt

-p 指定服務器端使用的端口或客戶端所連接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999

-u 使用udp協議

-w 指定TCP窗口大小,默認是8KB

-B 綁定一個主機地址或接口(當主機有多個地址或接口時使用該參數)

-C 兼容舊版本(當server端和client端版本不一樣時使用)

-M 設定TCP數據包的最大mtu值

-N 設定TCP不延時

-V 傳輸ipv6數據包

 

server專用參數

-D 以服務方式運行ipserf,eg:iperf -s -D

-R 停止iperf服務,針對-D,eg:iperf -s -R

 

client端專用參數

-d 同時進行雙向傳輸測試

-n 指定傳輸的字節數,eg:iperf -c 222.35.11.23 -n 100000

-r 單獨進行雙向傳輸測試

-t 測試時間,默認10秒,eg:iperf -c 222.35.11.23 -t 5

-F 指定需要傳輸的文件

-T 指定ttl值

實例:

使用 iperf -s 命令將 Iperf 啟動為 server 模式,在客戶機上使用 iperf -c啟動client模式。

iperf -c 59.125.103.56 -f K -i 2 -w 300K

設定報告間隔為2秒,服務器端和客戶端的TCP窗口都開到300KB

 

iperf -c 59.125.103.56 -f K -i 2 -w 300K –n 1000000

測試傳輸約1MB數據

 

iperf -c 59.125.103.56 -f K -i 2 -w 300K –t 36

測試持續36秒

 

iperf -c 59.125.103.56 -f K -i 2 -w 300K -n 10400000 –d

測試雙向的傳輸

 

iperf -c 59.125.103.56 -f K -i 2 -w 300K –u

UDP測試

 

其中 -i 參數的含義是周期性報告的時間間隔(interval),單位為秒;在上面的例子中,表示每隔2秒報告一次帶寬等信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM