Iperf3移植到ARM Linux及使用教程

應用移植 11029瀏覽 2評論

iperf是一個基于Client/Server的網絡性能測試工具,可以測試TCP、UDP和SCTP帶寬質量,能夠提供網絡吞吐率信息,以及震動、丟包率,最大段和最大傳輸單元大小等統計信息,幫助我們測試網絡性能,定位網絡瓶頸。其中抖動和丟包率適應于UDP測試,二帶寬測試適應于TCP和UDP。

iperf的好處是純粹發包和接收,防止硬盤拖后腿,影響測試結果。對于時延,iperf無能無力。但是iperf能夠計算抖動。在iperf測試中需要發送大量的包,因此計算出來的抖動值,就是連續發送時延差值的平均值。

iperf是一個開源軟件,其源碼在GitHub上,地址:https://github.com/esnet/iperf

1 下載

下載最新版本源碼包,下載地址:http://downloads.es.net/pub/iperf/。本文以?iperf-3.0.3.tar.gz 版本為例。

2 解壓

$ mkdir ~/iperf
$ cp?iperf-3.0.3.tar.gz ~/iperf
$ cd ~/iperf
$ tar xzf iperf-3.0.3.tar.gz
$ cd iperf-3.0.3/

命令中的“~”表示當前用戶目錄,比如在Linux主機上面工作的用戶是:veryarm,那么命令中的“~”就代表路徑:/home/veryarm/目錄。

3 配置

$ mkdir ../install
$ export PATH=$PATH:/usr/local/arm-2010q1/bin #交叉編譯工具路徑加入系統環境變量!
$ ./configure --host=arm-none-linux-gnueabi --prefix=/home/veryarm/iperf/install

其中,

  • --host: 指定交叉編譯工具,一般為arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具體要和目標板用的交叉編譯工具對應。
  • --prefix: 指定安裝目錄,編譯后的文件會全部放在安裝目錄中。必須是絕對路徑!

4 編譯

$ make                  # 編譯,如果是多核CPU,如四核,使用make -j4可提高編譯速度
$ make install          # 安裝

完成后,文件會自動安裝到上面指定的 install?目錄。

?5 去除調試信息并壓縮

使用交叉編譯工具 strip 去除鏡像的調試信息,在不影響使程序使用的情況下,程序大小一般可以減小50%左右。本程序我們僅用到其中2個文件,bin下的iperf3?和 lib下的libiperf.so.0.0.0。

$ cd ../install                                        # 進入安裝目錄
$?arm-none-linux-gnueabi-strip bin/iperf3              # 去除iperf3鏡像調試信息
$?arm-none-linux-gnueabi-strip lib/libiperf.so.0.0.0   # 去除共享庫的調試信息
$ rm lib/libiperf.a lib/libiperf.la                    # 刪除兩個不用的庫文件
$ tar jcf iperf-3.0.3.tar.bz2 bin lib                  # 壓縮bin和lib目錄

 

6 復制

將打包后的 iperf-3.0.3.tar.bz2?壓縮包通過U盤、FTP或者NFS等方式拷貝到目標板,并分別解壓到/bin和/sbin目錄。

$ cp iperf-3.0.3.tar.bz2 ~                  # 將復制壓縮包到目標板用戶目錄
$ tar jxf iperf-3.0.3.tar.bz2 bin -C /usr   # 解壓鏡像到/usr/bin
$ tar jxf iperf-3.0.3.tar.bz2 lib -C /usr   # 解壓庫文件到/usr/lib

 

7 使用

iperf有iperf2版本(命令iperf)和iperf3版本(命令iperf3),現在很多Linux系統和目標板系統默認有iperf2,而這兩個版本又不能混著用,也就是說,如果服務器運行iperf2,而目標板上運行 iperf3 是無法測試的,會提示“connect failed: Connection refused”錯誤。

有鑒于此,本文重點以新版的 iperf3 為例進行測試。

(1)電腦安裝iperf

復制第1步下載的源碼到電腦上,在Ubuntu(或其他機器)上,使用以下命令安裝 iperf3 到電腦上:

$ cd iperf-3.0.3/
$ ./configure
$ make
$ sudo make install

iperf3程序會自動安裝到/usr/local/bin目錄下,其共享庫則安裝到/usr/local/lib/目錄下。

如果運行 iperf 命令時提示“iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory”錯誤,制作一個軟連接可解決,命令如下:

sudo ln -s /usr/local/lib/libiperf.so.0.0.0 /usr/lib/iperf.so.0

(2)啟動服務器iperf

在Ubuntu上,以服務端方式啟動:

$ iperf3 -s -i 1

參數說明:

  • -s:以服務器方式啟動
  • -i:以秒為單位顯示報告間隔
  • -w:指定TCP窗口大小,默認是8KB

(3)啟動客戶端

在目標板上,以客戶端方式連接到服務端,測試10秒鐘。

?$?iperf3 -c 192.168.1.100?-i 1 -w 448k -t 10

參數說明:

  • -c:以client模式啟動,隨后跟著服務器的IP地址
  • -t:測試時間,默認10秒

執行后,服務器端顯示:

Accepted connection from 192.168.1.250, port 55010
[ 5] local 192.168.1.100 port 5201 connected to 192.168.1.250 port 55011
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.07 sec 2.12 MBytes 16.7 Mbits/sec 
[ 5] 1.07-2.06 sec 2.38 MBytes 20.2 Mbits/sec 
[ 5] 2.06-3.10 sec 2.38 MBytes 19.1 Mbits/sec 
[ 5] 3.10-4.08 sec 2.38 MBytes 20.4 Mbits/sec 
[ 5] 4.08-5.07 sec 2.62 MBytes 22.2 Mbits/sec 
[ 5] 5.07-6.00 sec 2.38 MBytes 21.4 Mbits/sec 
[ 5] 6.00-7.06 sec 2.75 MBytes 21.7 Mbits/sec 
[ 5] 7.06-8.10 sec 2.50 MBytes 20.2 Mbits/sec 
[ 5] 8.10-9.10 sec 2.50 MBytes 21.0 Mbits/sec 
[ 5] 9.10-10.06 sec 2.50 MBytes 21.9 Mbits/sec 
[ 5] 10.06-10.10 sec 128 KBytes 26.0 Mbits/sec 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 5] 0.00-10.10 sec 24.6 MBytes 20.5 Mbits/sec 7 sender
[ 5] 0.00-10.10 sec 24.6 MBytes 20.5 Mbits/sec receive

客戶端顯示:

Connecting to host 192.168.1.100, port 5201
[ 4] local 192.168.1.250 port 55011 connected to 192.168.1.100 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.03 sec 2.25 MBytes 18.4 Mbits/sec 4 96.2 KBytes 
[ 4] 1.03-2.02 sec 2.38 MBytes 20.0 Mbits/sec 0 112 KBytes 
[ 4] 2.02-3.06 sec 2.38 MBytes 19.2 Mbits/sec 1 90.5 KBytes 
[ 4] 3.06-4.02 sec 2.38 MBytes 20.7 Mbits/sec 0 96.2 KBytes 
[ 4] 4.02-5.02 sec 2.62 MBytes 22.1 Mbits/sec 0 106 KBytes 
[ 4] 5.02-6.03 sec 2.62 MBytes 21.9 Mbits/sec 1 76.4 KBytes 
[ 4] 6.03-7.02 sec 2.50 MBytes 21.0 Mbits/sec 0 100 KBytes 
[ 4] 7.02-8.00 sec 2.38 MBytes 20.4 Mbits/sec 0 112 KBytes 
[ 4] 8.00-9.06 sec 2.62 MBytes 20.8 Mbits/sec 1 89.1 KBytes 
[ 4] 9.06-10.03 sec 2.50 MBytes 21.7 Mbits/sec 0 105 KBytes 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.03 sec 24.6 MBytes 20.6 Mbits/sec 7 sender
[ 4] 0.00-10.03 sec 24.6 MBytes 20.6 Mbits/sec receiver

iperf Done.

以上信息顯示,當前網卡傳輸速度約為 20Mbit/s,下載速度?2.5 Mbit/s。

8 iperf參數

除了以上參數,我們還可以在iperf中使用下面的參數。

(1)通用參數

  • -f:后接[k|m|K|M],分別表示以Kbits,Mbits,Kbytes,Mbytes顯示報告,默認以Mbits以單位,例如,
$ iperf3 –c 192.168.22.100 –f K
  • -o:將報告和錯誤信息輸出到文件,例如,
iperf3 –c 192.168.1.100 -o iperf.log
  • -p:指定服務器端使用的端口或客戶端的端口。
$ iperf3 –c 192.168.22.66?–p 1234
$ iperf3 –s –p 1234
  • -u:指定使用udp協議
  • -M:指定TCP數據包的最大mtu值。
  • -N:設定TCP不延遲

(2)服務器端

  • -D:以服務方式運行iperf,例如,
$ iperf3 -s –D
  • -R:停止iperf服務,針對-D

(3)客戶端

  • -d:同時進行雙向傳輸測試
  • -n:指定傳輸的字節數。
$?iperf3 -c 192.168.21.66 -n 100000
  • -r:單獨進行雙向傳輸測試
  • -F:指定需要傳輸的文件
  • -T:指定ttl值
發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

網友最新評論 (2)

  1. 7.1中的快捷方式名稱應該是libiperf.so.0
    fpga_play 4年前 (2016-03-16) 回復 編輯
  2. sudo ln -s /usr/local/lib/libiperf.so.0.0.0 /usr/lib/libiperf.so.0
    叉腰魔頭 2年前 (2017-09-08) 回復 編輯
七星彩走势图2元网官网