嵌入式开发之工具移植--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(服务质量)来代替。


对于时延,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为自己正确的交叉编译链

"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拷贝到<board>/bin目录下
#cp /usr/local/bin/iperf  <board>/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,当然,这仅仅是理论值,在实际测试中可能需要作出调整。

  •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#csdnc-thumbsup"></use>
                        </svg><span class="name">点赞</span>
                        <span class="count">2</span>
                        </a></li>
                        <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-Collection-G"></use>
                        </svg><span class="name">收藏</span></a></li>
                        <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-fenxiang"></use>
                        </svg>分享</a></li>
                        <!--打赏开始-->
                                                <!--打赏结束-->
                                                <li class="tool-item tool-more">
                            <a>
                            <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                            </a>
                            <ul class="more-box">
                                <li class="item"><a class="article-report">文章举报</a></li>
                            </ul>
                        </li>
                                            </ul>
                </div>
                            </div>
            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.csdn.net/tigerjb">
                    <img src="https://profile.csdnimg.cn/B/F/0/3_tigerjb" class="avatar_pic" username="tigerjb">
                                            <img src="https://g.csdnimg.cn/static/user-reg-year/2x/13.png" class="user-years">
                                    </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit"><a href="https://blog.csdn.net/tigerjb" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">冀博</a></span>
                                            </div>
                    <div class="text"><span>发布了176 篇原创文章</span> · <span>获赞 126</span> · <span>访问量 212万+</span></div>
                </div>
                                <div class="right-message">
                                            <a href="https://bbs.csdn.net/topics/395533213" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留言板
                        </a>
                                                            <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">关注</a>
                                    </div>
                            </div>
                    </div>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值