程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> iperf移植和使用

iperf移植和使用

編輯:關於C語言

iperf移植和使用

[摘要]:本文主要講解了iperf相關概念和主要參數的使用,以及如何移植到嵌入式開發環境,並分別介紹了在Linux和Windows下iperf的安裝和使用。最後通過相關實例介紹如何通過iperf測試時延等網絡性能參數。

. iperf概念

1. what is iperf ?

iperf是一個網絡性能測試工具。iperf可以測試TCP和UDP帶寬質量,能夠提供網絡吞吐率信息,以及震動、丟包率,最大段和最大傳輸單元大小等統計信息,從而能夠幫助我們測試網絡性能,定位網絡瓶頸。並且iperf是一個開源軟件。其開源地址為http://code.google.com/p/iperf/,最新版本為3.0.b5。

其中抖動和丟包率適應於UDP測試,二帶寬測試適應於TCP和UDP。iper不能用來測試時延。

2.網絡性能參數

上面提到了網絡的主要性能參數包括帶寬,時延,抖動和丟包率,這些可以用QOS(服務質量)來代替。

134024762.png

對於時延,iperf無能無力。但是iperf能夠計算抖動。在iperf測試中需要發送大量的包,因此計算出來的抖動值就是連續發送時延差值的平均值。

.iperf相關參數

1.參數說明:

1)-s:以server模式啟動

#iperf -s

2)-c host:以client模式啟動,host是server端地址。

#iperf -c 192.168.22.66

3)通用參數

1>-f [k|m|K|M]分別表示以Kbits,Mbits,Kbytes,Mbytes顯示報告,默認以Mbits以單位

# iperf –c192.168.22.66 –f K

2>-isec 以秒為單位顯示報告間隔

# iperf –c192.168.22.66 -i 2

3>-o:將報告和錯誤信息輸出到文件

# iperf –c192.168.22.66 -o iperf.log

4>-p:指定服務器端使用的端口或客戶端的端口。

#iperf –c 192.168.22.66 –p 1234

# iperf –s –p 1234

5>-u:指定使用udp協議

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

7>-M:指定TCP數據包的最大mtu值。

8>-N:設定TCP不延遲

4)server專用參數

1>-D以服務方式運行iperf

# iperf -s –D

2>-R:停止iperf服務,針對-D

(5)client端專用參數

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

2>-n:指定傳輸的字節數。

# iperf -c 192.168.21.66 -n 100000

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

4>-t:測試時間,默認10秒

#iperf -c 192.168.21.66 -t 5

5>-F:指定需要傳輸的文件

6>-T:指定ttl值

iperf移植version iperf-2.0.1

1.執行configure命令,生成config.h

./configure --host=arm-none-linux-gnueabi cc =~/toolchain/arm-mx53-eabi /gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc CXX=~/toolchain/arm-mx53-eabi /gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi-g++

注:

1)此處嵌入式環境平台使用的時arm-none-linux-gnueabi交叉鏈,如果你使用的是其他的交叉編譯鏈則改為自己的即可。

2)可以將以上命令寫入atuto_embeed.sh中,通過執行該腳本即可自動生成config.h文件

2.修改config.h,注釋掉#definemalloc rpl_malloc

/*#define malloc rpl_malloc */

3.執行make命令,進行編譯

#make

4.執行makeinstall,生成iperf可執行程序

#make install

5使用以下命令減少iperf的大小

#arm-none-linux-gnueabi-strip iperf

6.將iperf,從/usr/local/bin/iperf拷貝到<board>/bin目錄下

#cp /usr/local/bin/iperf <board>/bin

NOTE:iperf-3.0.b5移植

1)同上

2)生成的config和Makefile在src目錄下

3)修改RANLIB和STRIP為自己正確的交叉編譯鏈

RANLIB = arm-none-linux-gnueabi-ranlib

STRIP= arm-none-linux-gnueabi-strip

4)執行make進行編譯

#make

5)執行make install命令生成可執行程序iperf3

#make install

執行成功後,會在/usr/local/bin/下生成可執行程序iperf3。

6)使用以下命令減少iperf3的大小

#arm-none-linux-gnueabi-strip iperf3

7)將iperf3拷貝到<board>/bin目錄下

#cp /usr/local/bin/iperf <board>/bin

Linuxiperf安裝和使用

1.在linux操作系統下,安裝iperf可以使用以下命令:

1)在unbuntu下可以使用如下命令:

#sudo apt-get install iperf

2)在fedora下可以使用rmp命令。

2.安裝完成後可以通過以下命令進行使用:

1)使用iperf –s以服務端運行,-s表示以server模式啟動

#iperf –s

默認使用TCP進行測試,如果想要測試UDP使用–u指定使用UDP協議

#iperf –s -u

2)以客戶端模式運行

#iperf -c ipaddress //ipaddrss為服務器端IP地址

在默認的情況下,iPerf客戶端與指定的監聽5001端口的iperf服務器建立一個TCP會話。

.widows iperf安裝和使用

1.在windows下安裝,需要先下載安裝包,下載地址為

http://download.csdn.net/detail/tigerjb/6232197

2.首先將iperf.exe放在你個人文件夾下。

134132130.png


3.進入cmd,並進入文件夾目錄下:

134158853.png

4.可以使用iperf–s 以服務器模式啟動或使用iperf –c以客戶端模式啟動。方法同上。

六.使用實例

1.測試速率時延和丟包率

iperf要同時測試以上三個參數,只能通過UDP獲得。使用-u參數進行UDP測試。

[root@localhost ~]# iperf -c192.168.1.100 -u -i 1 -t 10 -b 2M #指定2M帶寬向對端發送數據

------------------------------------------------------------

Client connecting to 192.168.1.100,UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 108 KByte (default)

------------------------------------------------------------

[ 3] local 192.200.40.112 port 32784connected with 218.60.1.20 port 5001 #與對端連接上的信息

[ ID] Interval Transfer Bandwidth #輸出行的解釋

[ 3] 0.0- 1.0 sec 12.0 GBytes 103Gbits/sec

[ 3] 1.0- 2.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 2.0- 3.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 3.0- 4.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 4.0- 5.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 5.0- 6.0 sec 245 KBytes 2.01Mbits/sec

[ 3] 6.0- 7.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 7.0- 8.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 8.0- 9.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 9.0-10.0 sec 244 KBytes 2.00Mbits/sec

[ 3] 0.0-10.0 sec 12.0 GBytes 10.3Gbits/sec

[ 3] Sent 1702 datagrams

[ 3] Server Report: #輸出報告

[ 3] 0.0-10.6 sec 263 KBytes 204Kbits/sec 36.313 ms 1518/ 1701 (89%) #間距,傳輸總字節,速率,時延,丟包率。

[ 3] 0.0-10.6 sec 1 datagramsreceived out-of-order #亂序

服務端:

[root@localhost ~]# iperf -s -u #設定此端為服務端

------------------------------------------------------------#本段設置信息

Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 108 KByte (default)
------------------------------------------------------------

[ 3] local 218.60.1.20 port 5001connected with 218.241.145.36 port 32784 #如果對端連接上了本端才會出現該信息

[ ID] Interval Transfer BandwidthJitter Lost/Total Datagrams

[ 3] 0.0-10.6 sec 263 KBytes 204Kbits/sec 36.314 ms 1518/ 1701 (89%)

[ 3] 0.0-10.6 sec 1 datagramsreceived out-of-order

2.iperf測試帶寬時應該注意的問題

有時候需要使用TCP來測試網絡帶寬。在測試時候,需要注意一個參數,那就是TCP窗口大小,可以使用-w參數指定。

網絡通道的容量:

capacity=bandwidth*round –trip time

而理論TCP窗口的大小就是網絡通道的容量。比如網絡帶寬為40Mbit/s,回環路徑消耗時間是2ms,那麼TCP的窗口大小不小於40Mbit/s×2ms = 80kbit = 10Kbytes,此時我們可以查詢iperf默認的TCP窗口大小來決定是否需要設置此參數,在此例中,窗口大小應設計大於10Kbytes,當然,這僅僅是理論值,在實際測試中可能需要作出調整。

本文出自 “嵌入式開發樂園” 博客,請務必保留此出處http://tigerjibo.blog.51cto.com/7718010/1297332

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved