iperf是另外一款用於流量測試的軟件,主要運行於Windows系統和安卓系統的手機/PAD(IOS系統下載須要收費)。php
一個工做在Server模式,另外一個工做在Client模式,輸入Server的測試ip地址就能夠測試從Client到Server方向的流量,測試時經過改變設備的工做模式,來完成上下行的流量測試。html
1.1下載地址:https://iperf.fr/iperf-download.phplinux
1.2 linux環境安裝,使用命令安裝windows
#gunzip –c iperf-<version>.tar.gz | tar –xvf -服務器
#cd iperf-<version>網絡
#./configure多線程
#maketcp
#make install函數
1.3 windows環境使用,直接將解壓出來的iperf.exe和cygwin1.dll複製到%systemroot%目錄(根目錄)便可,還要進入iperf當前文件夾敲命令。 性能
測量網絡帶寬
報告MSS/MTU值的大小和觀測值
支持TCP窗口值經過套接字緩衝
當P線程或Win32線程可用時,支持多線程。客戶端與服務端支持同時多重鏈接
客戶端能夠建立指定帶寬的UDP流
測量丟包
測量延遲
支持多播
當P線程可用時,支持多線程。客戶端與服務端支持同時多重鏈接(不支持Windows)
在適當的地方,選項中可使用K(kilo-)和M(mega-)。例如131072字節能夠用128K代替。
能夠指定運行的總時間,甚至能夠設置傳輸的數據總量。
在報告中,爲數據選用最合適的單位。
服務器支持多重鏈接,而不是等待一個單線程測試。
在指定時間間隔重複顯示網絡帶寬,波動和丟包狀況。
服務器端可做爲後臺程序運行。
服務器端可做爲Windows 服務運行。
使用典型數據流來測試連接層壓縮對於可用帶寬的影響。
支持傳送指定文件,能夠定性和定量測試。
備註:參數區分大小寫
使用iperf3測試時,要同時在server端與client端都各執行一個程序,讓它們互相傳送報文進行測試。發包測試須要分爲UDP測試與TCP測試,其中服務端須要用-u命令去區分監聽協議。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)
啓動客戶端輸入: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,從這個結果能夠看出,多線程對網絡傳輸性能有提升。
服務器啓動: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爲包數量。
啓動客戶端輸入:iperf3 -c 10.101.70.247 –p 54321 -i 1 -t 4 -u -P 3 –b 30M
iperf也能夠用於UDP數據包吞吐量、丟包率和延遲指標,可是因爲UDP協議是一個非面向鏈接的輕量級傳輸協議,而且不提供可靠的數據傳輸服務,所以對UDP應用的關注點不是傳輸數據有多快,而是它的丟包率和延時指標。經過-u參數便可測試UDP應用的傳輸性能。
l Iperf測試UDP性能時,客戶端能夠指定UDP數據流的速率。客戶端發送數據時,將根據客戶端提供的速率計算數據報發送之間的時延。
l 客戶端還能夠指定發送數據報的大小。每一個發送的數據報包含一個ID號,用來惟一標識報文,服務器端根據該ID號來肯定數據報丟失和亂序。
l 當把UDP報文大小設置能夠將整個報文放入IP層的包(packet)內時,那麼UDP所測得的報文丟失數據即爲IP層包的丟失數據,這提供了一個有效的測試包丟失狀況的方法。
l 數據報傳輸延遲抖動 (Jitter)的測試由服務器端完成,客戶發送的報文數據包含有發送時間戳,服務器端根據該時間信息和接收到報文的時間戳來計算傳輸延遲抖動。傳輸延遲抖動反映傳輸過程當中是否平滑。因爲它是一個相對值,因此並不須要客戶端和服務器端時間同步
啓動客戶端輸入:iperf3 -c 10.101.70.247 -u -b 100M –n 2G
Jitter列表示抖動時間,或者稱爲傳輸延遲,Lost/Total列表示丟失的數據報和總的數據報數量,後面的80%是平均丟包的比率,Datagrams列顯示的是總共傳輸數據報的數量。
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秒報告一次帶寬等信息。