2010-08-05 02:06:57 Kenny

iperf

iperf 是一個 OpenSource 而且在 Linux/FreeBSD/Solaris/Win32/Mac 等平台都
可以執行的軟體工具,可以量測可用頻寬。

網站:
http://dast.nlanr.net/Projects/Iperf/

分別安裝在 Server Side 和 Client Side 。不要遮蔽 5001 Port 。

Server Side:
在有 iperf 的目錄下執行 iperf -s -f m -w 48K -i 1

Clinet Side:
在有 iperf 的目錄下執行 iperf -f m -c 192.168.1.254 -i1 -t 60 -w 48K

192.168.1.254 為 Server Side 的 IP ,可更換成實際量測時的 IP






Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。
参数说明
-s 以server模式启动,eg:iperf -s
-c host以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23
通用参数
-f [k|m|K|M] 分别表示以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 c:\iperflog.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出手轻轻松松测量内网带宽:

  Iperf是一个TCP/IP和UDP/IP的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。我们可以通过访问http://www.noc.ucf.edu/tools/iperf/获得此工具,直接选择windows版本的iperf.exe下载即可。(如图3)

   


    
    用iperf.exe来测量网络两个结点的网络带宽非常简单,不过需要我们针对服务端与客户端进行设置。

第一步:例如我们要测试内网结点A与B两台计算机之间的传输带宽,那么我们需要复制iperf.exe到这两台计算机硬盘中。

第二步:随意选择结点A作为服务端,而B作为客户端,在A上进入命令提示窗口运行iperf -s命令,这样iperf将以服务端方式启动,并且通过TCP的5001端口监听数据。(如图4)

   


    
    第三步:接下来我们返回到B结点进入命令提示窗口,然后运行iperf -c 192.168.0.199 -t 60,这个命令是将B结点以客户端的方式运行,并且连接IP地址为192.168.0.199的服务端,监视测量数据时间是60秒。(如图5)
    
   


    
    第四步:运行完毕客户端将自动开启1903端口连接服务端的5001端口,通过发送与接收数据包来实现测量带宽的目的。

  第五步:与此同时我们在服务端上也可以看到有客户端连接5001端口的提示,这表明两个结点已经建立了相应的连接,数据通讯正常。(如图6)

   


    
    第六步:由于我们之前是设置了测量时间间隔为60秒,所以在60秒过后客户端结点上就会显示出测量的具体数据,从A到B发送接收数据的速度为 177Mbits/sec,由于以太网数据传输是双向双工的,所以百M网线理想状态传输速度应该是200Mbits/sec。(如图7)
    
   

第七步:当然我们还可以通过在客户端上执行iperf -c 192.168.0.199 -t 60 -i 2,这样将每隔两秒自动将测量结果显示出来,在最后再计算其平均值。(如图8)

   


    
    通过简单的设置和简单的指令我们轻松实现了针对内网两个结点之间带宽传输速度的测量,当然iperf程序还支持很多参数,具体设置我们可以参考其帮助信 息,比较常用的有-l 缓冲区大小,-m 显示tcp最大mtu值,-p 指定服务器端使用的端口或客户端所连接的端口,-u 使用udp协议,-w 指定TCP窗口大小,默认是8KB,-M 设定TCP数据包的最大mtu值等。另外在客户端上可以通过-n 指定传输的字节数,-r 单独进行双向传输测试,在服务端则可以通过-D参数以服务方式运行ipserf,以-R来停止iperf服务。






測試傳輸效能及穩定度其實很容易,我們將教會你如何透過免費工具來做到這件事。

 
 
在 企業評估網路設備的流程中,實際測試佔了非常重要的一環(愈大型的產品更是如此),目的是為了找出符合需求的設備,避免IT投資的浪費。一般來說,網路設 備的測試有兩種常見的做法,一種是將設備直接部署上線,觀察它在真實流量下的運作情況,至於另外一種方式則是利用工具取得數據。
 
........
使用Iperf測試網路效能
文/楊啟倫 (記者) 2009-05-15

 
測試傳輸效能及穩定度其實很容易,我們將教會你如何透過免費工具來做到這件事。

 
 
在 企業評估網路設備的流程中,實際測試佔了非常重要的一環(愈大型的產品更是如此),目的是為了找出符合需求的設備,避免IT投資的浪費。一般來說,網路設 備的測試有兩種常見的做法,一種是將設備直接部署上線,觀察它在真實流量下的運作情況,至於另外一種方式則是利用工具取得數據。

雖然透過工具測試網路設備,經常會與實際環境下的結果有所落差,不過對於測試時間有限的企業來說,仍然是可行的做法,而我們所要介紹的Iperf,正是一套常用的免費流量產生工具,可以幫助企業測試網路設備的傳輸效能,或者找出實際環境當中的效能瓶頸。

能在Windows等多種平臺環境下運作
我 們此次使用的Windows版本Iperf主程式執行檔,可以在http://www.noc.ucf.edu/Tools/Iperf /iperf.exe下載,它支援Windows、Linux等多種平臺環境。除了該工具之外,網路上常見的類似測試工具還包括了Netperf。

就我們這次使用的Windows版本來說,程式不需要安裝就能直接使用。只要將Iperf.exe的主程式放置到適當路徑(例如C:\),之後就可以在命令提示字元的環境下,以指令方式運行Iperf的各項功能模式。

既然是以流量方式測試效能,因此執行Iperf的電腦需有兩臺,分別以伺服器及用戶端的模式開啟,其中前者負責接收用戶端電腦傳送而來的流量,並產生效能數據。

就一般最常見的應用來說,只需要在Iperf主程式所在的目錄下,執行「iperf.exe -s」指令,就能讓電腦進入Iperf的伺服器模式。

用戶端的操作指令就相對複雜一些,除了輸入「-c」參數啟用Iperf的用戶端模式之外,至少需要指定Iperf伺服器所在的IP位址,才能傳送流量到伺服器做測試。

為了免去使用者理解參數功能的不便,因此後來也出現所謂的Jperf,也就是在原有的Iperf主程式之上,加上一個以Java編寫而成的圖形化介面,只要電腦本身有安裝JVM軟體,直接點選Jperf.bat這個批次檔,就能開啟圖形介面,操作Iperf的各項測試。

功能以流量測試為主
Iperf 最常見的應用之一,是用來測試網路設備的NAT效能,以居易的Vigor2110路由器為例,我們將兩臺電腦分別接在這臺設備的WAN及LAN埠,做為伺 服器及用戶端電腦,經由傳輸流量所得的NAT效能為76.9Mbps,意味該款設備能夠介接的總頻寬(上傳+下載)大小約在76~77Mbps左右。

不 過隨著設備啟用的功能愈來愈多,對於NAT轉送流量的能力也會有所影響(以企業端的UTM為例,影響最大的是閘道防毒、IPS及VPN等三項功能,個人端 設備的瓶頸則多半在於QoS),而以網路設備本身的設計來說,一般影響NAT效能表現的因素,由大至小,分別是處理器/記憶體、韌體及網路介面等三項。

當流量透過網路介面送入設備之後,會經由處理器的運算,根據封包表頭所提供的資訊而決定流向,而在開啟多項功能使得硬體資源消耗過多時,用來解析封包的硬體資源就會相對減少,使得效能下降。

至於網路設備的韌體,就如同電腦的作業系統,當韌體撰寫得太過肥大,占用太多的系統資源時,也同樣會影響效能表現。

網路介面對於NAT效能的影響比較不明顯,多數網路設備內建的交換器晶片在等級上並沒有明顯的差異,不過也有少數設定不良的晶片會在網路封包密集傳送的情況下,出現比較明顯的效能波動。

傳送流量之餘,也能測試設備運作是否穩定
Iperf預設的測試時間是10秒,也就是說需以每10秒為一個段落進行傳輸測試。不過我們一般都會將測試時間拉長,同時增加傳輸次數,藉此了解流量傳輸的起伏,判斷穩定與否,這時可利用「-t」參數,設定用戶端傳輸流量的秒數。

在 傳送流量的同時,也能透過Iperf對於網路設備實施壓力測試,利用「-P」參數,同時模擬多臺電腦傳輸流量的行為,測試設備在開啟大量連線數的情況下, 能否持續正常運作,不過我們建議,如果要開啟大量的連線數,最好是使用Linux、FreeBSD版本的Iperf執行這項測試。

也能用於無線網路的效能測試
不只是有線網路的環境,Iperf也很適合用來測試無線網路,尤其是支援802.11n草案的無線網路設備。

相 較之下,Ixia的IxChariot及Qcheck是經常用來測試無線網路的兩套代表性軟體,但使用上都有一些限制,IxChariot的功能雖然強 大,然而使用上必須付費,同時使用者也必須了解如何設定測試的範本,形成一定的使用門檻;至於免費版本的Qcheck最多僅能傳送1MB大小的測試檔案, 在802.11n的環境下,往往未達效能傳輸的頂點,測試即告結束,因此僅能在802.11a/b/g的環境下測試無線網路的效能。

由 於可以長時間傳送大量流量,因此很多人也以Iperf測試無線網路,這裡我們使用了SMC的SMCWBR14S-N2無線路由器,搭配同廠牌USB介面的 SMCWUSBS-N網卡,在40GHz頻寬的802.11n模式下,透過Iperf測得的速度最快為79.4Mbps,與透過IxChariot 5.4試用版測試所得的數據相差不多。文⊙楊啟倫

使用Iperf測試網路設備效能

我們將示範4個步驟,透過Iperf測試網路設備效能,使用居易的Vigor2110及支援802.11n無線網路標準的SMC SMCWBR14S-N2兩款消費端的路由器設備做為Iperf的測試平臺,在設備還原為出廠預設值的情況下,執行效能的傳輸測試。


我們在連接居易Vigor 2110路由器WAN埠的電腦上輸入了iperf.exe–s指令,將該臺電腦設定為Iperf的伺服器。


在另外一臺連接LAN埠的電腦上輸入指令,傳送流量到伺服器端測試效能,測試完畢後,在兩端的命令提示字元視窗皆會顯示測試結果。

 


為了方便示範,這裡我們僅開啟了5個Session測試Vigor 2110同時傳輸封包,對於有意實施壓力測試的人來說,可以加大同時傳輸的Session數量。 就無線網路的測試來說,在搭配同廠牌USB 介面的SMCWUSBS-N網卡,我們透過perf測得79.4Mbps的效能數據,大致符合802.11n的效能要求。



這是opensource 的小程式..可以拿來測windows跟linux的網路效能

source code在這邊
http://sourceforge.net/projects/iperf/

windows的可以在這邊下載
http://www.noc.ucf.edu/Tools/Iperf/

普通linux下只需要在iperf下 做configure 在make即可..

如果要在ARM平台執行的話需要configure以下參數
# ./ configure ac_cv_func_malloc_0_nonnull=yes ./configure --build=i686-linux --host=arm-linux CFLAGS=-static CXXFLAGS=-static

 

server 端的指令如下
# iperf.exe -s

#./iperf -c 192.168.0.83 -t 60 -i 30 -P 2

參數
-s : as server
-c : as client, parameter: server IP
-t : 測量時間間隔為60秒
-i : 每隔 30 秒將測量結果顯示出來
-P : client 端跑2個測試threads
其他的參數下-h就知道

測試結果
client端
# ./iperf -c 192.168.0.83 -t 60 -i 30 -P 2
------------------------------------------------------------
Client connecting to 192.168.0.83, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  6] local 192.168.1.156 port 3425 connected with 192.168.0.83 port 5001
[  5] local 192.168.1.156 port 3424 connected with 192.168.0.83 port 5001
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-30.0 sec   224 MBytes  62.7 Mbits/sec
[  5]  0.0-30.0 sec  93.5 MBytes  26.1 Mbits/sec
[SUM]  0.0-30.0 sec   318 MBytes  88.9 Mbits/sec
[  5] 30.0-60.0 sec   188 MBytes  52.6 Mbits/sec
[  6] 30.0-60.0 sec   134 MBytes  37.5 Mbits/sec
[SUM] 30.0-60.0 sec   322 MBytes  90.1 Mbits/sec
[  6]  0.0-60.0 sec   358 MBytes  50.1 Mbits/sec
[  5]  0.0-60.0 sec   282 MBytes  39.4 Mbits/sec
[SUM]  0.0-60.0 sec   640 MBytes  89.5 Mbits/sec
  Interval 對應之前的t參數, ID對應的是P參數  [SUM]是這兩個thread的平均
 最後一次的data 是0-60s 的總傳輸量


server端
D:\iperf.exe -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  125 KByte (default)
------------------------------------------------------------
[ ID] Interval       Transfer     Bandwidth
[1824]  0.0-60.0 sec   358 MBytes  50.1 Mbits/sec
[1860]  0.0-60.0 sec   282 MBytes  39.4 Mbits/sec
[SUM]  0.0-60.0 sec   640 MBytes  89.4 Mbits/sec

  Interval 對應之前的t參數, ID對應的是P參數  [SUM]是這兩個thread的平均



iperf 可以用來測試

。兩台主機之間的網路資料傳輸量

。測試網卡實際可以跑的極限,或是 swith

用法:

找一台主機當 server (192.168.1.1),執行下列指令

iperf -s

而 client 端則

iperf -c 192.168.1.1

結果顯示:

server

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.1 port 5001 connected with 192.168.1.2 port 2934
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec    345 MBytes    289 Mbits/sec

client

------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1912] local 192.168.1.2 port 2934 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[1912]  0.0-10.0 sec   345 MBytes   289 Mbits/sec

再來 client 端進一步的參數測試

持續300秒,而30秒顯示一次數據

iperf -c 192.168.1.1 -t 300 -i 30

------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1912] local 192.168.1.2 port 2300 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[1912]  0.0-30.0 sec  1.28 GBytes   366 Mbits/sec
[1912] 30.0-60.0 sec  1.30 GBytes   373 Mbits/sec
[1912] 60.0-90.0 sec  1.32 GBytes   379 Mbits/sec
[1912] 90.0-120.0 sec  1.25 GBytes   359 Mbits/sec
[1912] 120.0-150.0 sec  1.17 GBytes   336 Mbits/sec
[1912] 150.0-180.0 sec  1.29 GBytes   369 Mbits/sec
[1912] 180.0-210.0 sec  1.32 GBytes   377 Mbits/sec
[1912] 210.0-240.0 sec  1.31 GBytes   376 Mbits/sec
[1912] 240.0-270.0 sec  1.25 GBytes   359 Mbits/sec
[1912] 270.0-300.0 sec  1.27 GBytes   364 Mbits/sec
[1912]  0.0-300.0 sec  12.8 GBytes   366 Mbits/sec

如果要壓力測試的話 iperf 有 (client 端)

-P 5 同時模擬5個client端對server傳輸
-w 指定 TCP windows 大小,也可以把它想成是一個檔案的大小