嵌入式开发之工具移植--iperf移植和使用
2019-07-12 17:22 发布
生成海报
[摘要] :本文主要讲解了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(服务质量)来代替。 对于时延,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拷贝到/bin目录下 #cp /usr/local/bin/iperf /bin NOTE:iperf-3.0.b5移植 (1)同上 (2)生成的config和Makefile在src目录下 (3)修改RANLIB和STRIP为自己正确的交叉编译链 "Tim�e XvX�$o:p> # 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 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拷贝到/bin目录下 #cp /usr/local/bin/iperf /bin 四 Linux下iperf安装和使用 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放在你个人文件夹下。 3. 进入cmd,并进入文件夹目录下: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 ,当然,这仅仅是理论值,在实际测试中可能需要作出调整。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮