ZYNQ 7020 网口测试 iperf3移植

在接触到ZYNQ7020开发板后,需要对网口的速率进行测试。上网查了下资料,发现iperf是个好工具,于是就想着用它来测试。然后就开始查资料、进行各种尝试。我在尝试的过程中遇到了各种各样的问题,比如交叉编译的时候出错、移植后无法运行等。由于本人是个小白,对这种问题束手无策······只想能简简单单跟着步骤、输入命令就解决问题,所以放弃了其他博客里的修改文档等办法。幸好最后在两篇博客的指导下,终于实现了iperf3的移植,实现了预期的目的,感谢两位博主!

参考博客:

https://blog.csdn.net/u013625961/article/details/53892821
http://blog.51cto.com/dingtongxue1990/1854124

实现最初的想法后就感觉很满足哈哈哈,于是就写下这第一篇博客,纪念这次探索,也希望能够对有同样问题的开发者提供帮助~

注:通过本文的方法有可能在开发板断电重启后,输入iperf的相关命令就无效了,这是因为开发板植入的根文件系统目录无法配置与保存。本人也在想办法解决这个问题,实践成功后再与大家分享!

测试工具:iperf3

iperf是一个基于Client/Server的网络性能测试工具,可以测试TCP、UDP和SCTP带宽质量,能够提供网络吞吐率信息,以及震动、丢包率,最大段和最大传输单元大小等统计信息,帮助我们测试网络性能,定位网络瓶颈。其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
iperf的好处是纯粹发包和接收,防止硬盘拖后腿,影响测试结果。对于时延,iperf无能无力。但是iperf能够计算抖动。在iperf测试中需要发送大量的包,因此计算出来的抖动值,就是连续发送时延差值的平均值。

一、开发板安装iperf3

1 下载 iperf-3.0.3.tar.gz(开发板)与iperf-3-current.tar.gz(Ubuntu)

下载最新版本源码包,下载地址:http://downloads.es.net/pub/iperf/

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主机上面工作的用户是:alinx,那么命令中的“~”就代表路径:/home/alinx/目录。

3 配置交叉编译

# mkdir ../install
# source /opt/Xilinx/SDK/2017.4/settings64.sh    #设置交叉编译器的系统环境变量
# ./configure --host=arm-linux-gnueabihf --prefix=/home/alinx/iperf/install

本机使用的交叉编译器是arm-linux-gnueabihf,读者可以根据自己具体使用的交叉编译器进行修改,相应的环境变量也请自行修改

4 交叉编译

# make                   
# sudo make install          # 安装完成后,文件会自动安装到上面指定的 install 目录。

5 去除调试信息并压缩

使用交叉编译工具 strip 去除镜像的调试信息,在不影响使程序使用的情况下,程序大小一般可以减小50%左右。本程序我们仅用到其中2个文件,bin下的iperf3 和 lib下的libiperf.so.0.0.0。

# cd ../install                                     # 进入安装目录
# arm-linux-gnueabihf-strip bin/iperf3              # 去除iperf3镜像调试信息
# arm-linux-gnueabihf-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 开发板挂载到虚拟机的NFS上

# mount -t nfs -o nolock 192.168.0.3:/home/alinx/linux_sdk_work  /mnt   //开发板端挂载nfs服务
# cp /mnt # 进入到nfs目录

7 解压到开发板的linux目录下

# 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

二、Ubuntu安装iperf3

使用的是iperf-3-current.tar.gz
因为iperf-3.0.3在编译的时候会出错,而这个版本不会
提示:iperf的2版本只能跟2版本的对测,iperf3版本的只能跟3版本的对测

# tar xzf iperf-3-current.tar.gz
# cd iperf-3.4
# ./configure# make
# sudo make install

如果运行 iperf3 命令时提示错误:

“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/libiperf.so.0

三、测试命令参考:

1、TCP的情况:

默认情况客户端使用TCP协议
服务器端:

# iperf3 -s              -s:指明是服务器端

客户端:

# iperf3 -c <目标地址>    -c: 指明是客户端 
1)测试TCP通信的最大速率。
# iperf3 -c <目标地址> 
2)使用TCP发送100兆字节的数据
# iperf3 -c <目标地址> -l 100M

2、UDP的情况

服务端:

# iperf3 -s

客户端:

# iperf3 -c 192.168.1.100 -u -b <传输带宽> -t <测量时间[秒]> -i <输出报告时间间隔>  

-u:指定是udp报文
-b:指定发送带宽

1)以UDP方式向192.168.1.100传送60秒的10M的数据流,每间隔两秒钟输出报告结果
# iperf3 -c 192.168.1.100 -u -b 10M -t 60 -i 2
2)以UDP方式向192.168.1.100传送60秒的10M的双向数据流
# iperf3 -c 192.168.1.100 -u -b 10M -t 60 -i 2 -d  
3)以UDP方式向192.168.1.100传送60秒的10M的3路双向数据流
 # iperf3 -c 192.168.1.100 -u -b 10M -t 60 -i 2 -P 3

3、IPv6模式

服务器端:

# iperf3 -s -V 

客户端:

 # iperf3 -c <服务器的IPv6地址> -V 

4、其他命令-p:指定端口

服务器端:

# iperf3 -s -p 2480

客户端:

# iperf3 -u -c 192.168.0.222 -b 100M -p 2480

你可能感兴趣的:(iperf,arm,工具使用)