本文下载链接

网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。

一、iperf简介

1、什么是iperf?

Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测试工具。可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括带宽、抖动以及丢包率,其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。

Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,可以用来测量网络带宽和网络质量,提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。

Iperf 是一款基于命令行模式的网络性能测试工具,是跨平台的,提供横跨Windows、Linux、Mac的全平台支持。iperf 全程使用内存作为发送/接收缓冲区,不受磁盘性能的影响,对于机器配置要求很低。不过由于是命令行工具, iperf 不支持输出测试图形。

Iperf可以测试TCP和UDP带宽质量,具有多种参数和UDP特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

2、iperf的功能
(1)TCP方面

① 测量网络带宽

② 报告MSS/MTU值的大小和观测值

③ 支持TCP窗口值通过套接字缓冲

④ 当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接

(2)UDP方面

① 客户端可以创建指定带宽的UDP流

② 测量丢包

③ 测量延迟

④ 支持多播

⑤ 当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows)

(3)其他方面

① 在适当的地方,选项中可以使用K(kilo-)和M(mega-)。例如131072字节可以用128K代替。

② 可以指定运行的总时间,甚至可以设置传输的数据总量。

③ 在报告中,为数据选用最合适的单位。

④ 服务器支持多重连接,而不是等待一个单线程测试。

⑤ 在指定时间间隔重复显示网络带宽,波动和丢包情况。

⑥ 服务器端可作为后台程序运行。

⑦ 服务器端可作为Windows 服务运行。

⑧ 使用典型数据流来测试链接层压缩对于可用带宽的影响。

二、iperf的安装

1、iperf的版本

Iperf有两种版本,windows版和linux版本。

(1)Unix/Linux版

Unix/Linux版更新比较快,版本最新,目前最新的版本是iperf3.0。

Linux版本下载地址:http://code.google.com/p/iperf/downloads/list

为了测试的准确性,尽量使用linux环境测试。

(2)Windows版

Windows版iperf叫jperf,或者xjperf,更新慢,目前最新版本为1.7(打包在jperf中)。

Windows版本下载地址:http://sourceforge.net/projects/iperf/files/jperf/jperf 2.0.0/

jperf是在iperf基础上开发的图形界面程序,简化了复杂命令行参数的构造,而且还能保存测试结果,同时实时图形化显示结果。

2、Windows版iperf安装

对于windows版的iperf,下载安装包后直接解压,然后将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可。

3、Linux版iperf安装
(1)在线安装:

CentOS安装:yum install -y iperf3

Debian和Ubuntu安装:apt-get install iperf3

(2)离线安装:下载相应版本的安装包

gunzip -c iperf-.tar.gz | tar -xvf - cd iperf- ./configure make make install

三、iperf的使用

1、Iperf的工作模式

Iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起测试连接会话,因此要使用iperf至少需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。

在完成iperf安装后,执行“iperf3 –h”即可显示iperf的详细用法。iperf的命令行选项共分为三类,分别是客户端与服务器端公用选项、服务器端专用选项和客户端专用选项。

2、Iperf常用参数(测试够用)

(1)-s,--server:iperf服务器模式,默认启动的监听端口为5201,eg:iperf -s

(2)-c,--client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23

(3)-i,--interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-p,--port:指定服务器端监听的端口或客户端所连接的端口,默认是5001端口。

(5)-u,--udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。

(6)-l,--len:设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。

(7)-b,--bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。

(8)-t,--time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。

(9)-A:CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。

3、通用参数(Server端和Client端共用)

(1)-f,--farmat [k|m|g|K|M|G]:指定带宽输出单位,“[k|m|g|K|M|G]”分别表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes显示输出结果,默认Mbits,eg:iperf3 -c 192.168.12.168 -f M

(2)-p,--port:指定服务器端监听的端口或客户端所连接的端口,默认是5001端口。

(3)-i,--interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-F:指定文件作为数据流进行带宽测试。例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz

4、Server端专用参数

(1)-s,--server:iperf服务器模式,默认启动的监听端口为5201,eg:iperf -s

(2)-c,--client host:如果iperf运行在服务器模式,并且用-c参数指定一个主机,那么iperf将只接受指定主机的连接。此参数不能工作于UDP模式。

(3)-D:Unix平台下将Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行。

(4)-R:卸载Iperf服务(仅用于Windows)。

(5)-o:重定向输出到指定文件(仅用于Windows)。

(6)-P,--parallel:服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。

5、Client端专用参数

(1)-c,--client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23

(2)-u,--udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。

(3)-b,--bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。

(4)-t,--time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。

(5)-l,--len:设置读写缓冲区的长度,单位为 Byte。TCP默认为8KB,UDP默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。

(6)-n,--num [K|M|G]:指定传输数据包的字节数,例如:iperf3 -c 192.168.12.168 –n 100M

(7)-P,--parallel:指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数。

(8)-w,--window:指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值

(9)-B,--bind:用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组。

(10)-M,--mss:设置TCP最大信息段的值

(11)-N,--nodelay:设置TCP无延时

(12)-V:绑定一个IPv6地址。

(13)-d,--dualtest:运行双测试模式。将使服务器端反向连接到客户端,使用-L参数中指定的端口(或默认使用客户端连接到服务器端的端口)。使用参数-r以运行交互模式。

(14)-L,--listenport:指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。

(15)-r,--tradeoff:往复测试模式。当客户端到服务器端的测试结束时,服务器端反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。

6、其他参数

(1)-h,--help:显示命令行参考并退出。

[root]# iperf3 -h
Usage: iperf3 [-s|-c host] [options]
iperf3 [-h|--help] [-v|--version]

(2)-v,--version:显示版本信息和编译信息并退出。

四、iperf使用实例

1、环境准备:

(1)Server端IP地址:192.168.0.120

(2)Server端IP地址:192.168.0.121

2、测试TCP吞吐量
(1)Server端开启iperf的服务器模式,指定TCP端口:
[root@iperf-server  ~]# iperf3 -s -i 1 -p  520
------------------------------------------------------------
Server listening on TCP port 520
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
(2)Client端启动iperf的客户端模式,连接服务端
[root@iperf-client  ~]# iperf -c 192.168.0.120  -i 1 -t 60 -p 520
------------------------------------------------------------
Client connecting to 192.168.0.120, TCP port 520
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.121 port 50616 connected with 192.168.0.120 port 520
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
(3)Server端监听结果
------------------------------------------------------------
Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.0.120 port 520 connected with 192.168.0.121 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

① Interval表示时间间隔。

② Transfer表示时间间隔里面转输的数据量。

③ Bandwidth是时间间隔里的传输速率。

(4)测试多线程TCP吞吐量

如果没有指定发送方式,iPerf客户端只会使用单线程。

iperf3 -c 192.168.0.120 -P 30 -t 60
(5)进行上下行带宽测试(双向传输)
iperf3 -c 192.168.0.120 -d -t 60
(6)停止iperf3服务进程

要停止iperf3服务进程,请按CTRL+z或CTRL+c

建议在Server端执行sar命令来统计实际收到的包并作为实际结果:sar -n DEV 1 320

3、测试UDP吞吐量

带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

(1)Server端开启iperf的服务器模式,指定UDP端口:
[root@iperf-server  ~]# iperf3 -s -i 1 -p  521
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------
(2)Client端启动iperf的客户端模式,连接服务端
[root@iperf-client  ~]# iperf3 -u -c 192.168.0.120  -b 100m -t 60 -p 521
------------------------------------------------------------
Client connecting to 192.168.0.120, port 521
------------------------------------------------------------
[ 3] local 192.168.0.121 port 50616 connected with 192.168.0.120 port 521
[ ID] Interval Transfer Bandwidth TotalDatagrams
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 82
(3)Server端监听结果
------------------------------------------------------------
Server listening on port 521
------------------------------------------------------------
[ 4] local 192.168.0.120 port 520 connected with 192.168.0.121 port 50616
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec 0.007 ms 0/82 (0%)

① Jitter为抖动,在连续传输中的平滑平均值差。

② Lost为丢包数量。

③ Total Datagrams为包数量。

(4)测试多线程UDP吞吐量

如果没有指定发送方式,iPerf客户端只会使用单线程。

iperf3 -u -c  192.168.1.1 -b 5M -P 30 -t 60
(5)进行上下行带宽测试(双向传输)
iperf3 -u -c  192.168.1.1 -b 100M -d -t 60

五、Jperf介绍

1、Jperf简介

jperf是基于iperf开发的图形界面程序,简化了复杂命令行参数的构造,而且还能够保存测试结果,同时实时图形化显示结果。JPerf可以测试TCP和UDP带宽质量。JPerf可以测量最大TCP带宽,具有多种参数和UDP特性。JPerf可以报告带宽,延迟抖动和数据包丢失。

2、JPerf2.0运行环境

(1)操作系统:Java运行环境

(2)网络要求:Jperf可以在任何IP网络上运行,包括本地以太网,因特网接入连接和Wi-Fi网络。

(3)其他要求:JPerf必须安装两个组件:JPerf 服务器和JPerf客户端。

3、JPerf2.0页面介绍

(1)Iperf命令行(无法直接输入)

① 服务端设置

❶ 监听端口:5001

❷ client limit:客户端限制,仅允许指定客户端连接

❸ Num Connections:最大允许连接的数量,为0不限制

② 客户端设置

服务器地址:10.0.115.82 ,端口:5001 ,并发流:1个

(2)应用层设置

① 兼容旧版本(当server端和client端版本不一样时使用)

② 设置测试模式:传输字节总量大小15Bytes或者按传输时间总长度15秒

③ 同时进行双向传输测试

④ 单独进行双向传输测试,先测c到s的带宽

⑤ 指定需要传输的文件

⑥ 显示tcp最大mtu值

(3)传输层设置

① TCP协议

❶ 设置缓冲区大小

❷ 指定TCP窗口大小

❸ 设定TCP数据包的最大mtu值

❹ 设定TCP不延时

② UDP协议

❶ 设置UDP最大带宽

❷ 设置UDP缓冲区

❸ UDP包封装大小:默认1470 byte

③ IP层设置

❶ 指定ttl值

❷ 服务类型(Type of Service, ToS),大小范围从0x10 (最小延迟) 到0x2 (最少费用)

本文下载链接

附录:参考资料

1.《网络性能测试方法》

作者:阿里云帮助文档

地址:https://help.aliyun.com/knowledge_detail/55757.html#HFXbx

2.《iperf-百度百科》(文章)

作者:百度百科网友

地址:https://baike.baidu.com/item/iperf/11067694?fr=aladdin

3.《Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量》(文章)

作者:Konglingbin

地址:https://www.cnblogs.com/klb561/p/9215952.html

4.《Linux命令大全-iperf命令》

作者:不确定

地址:https://man.linuxde.net/iperf

5.《网络性能测试工具iPerf功能与使用教程》

作者:不确定

地址:http://www.veryhuo.com/a/view/159685.html

6.《iPerf图形化工具Jperf图文使用教程》

作者:不确定

地址:http://www.veryhuo.com/a/view/159704.html

7.《使用iPerf进行网络吞吐量测试》

作者:放开那个电扇

地址:https://www.jianshu.com/p/15f888309c72

【学习笔记】Iperf3网络性能测试工具的更多相关文章

  1. 【山外笔记-工具框架】iperf3网络性能测试工具详解教程

    [山外笔记-工具框架]iperf3网络性能测试工具详解教程   本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ...

  2. Iperf3网络性能测试工具详解教程

    Iperf3网络性能测试工具详解教程 小M 2020年4月17日 运维 本文下载链接 [学习笔记]Iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保 ...

  3. Netperf网络性能测试工具详解教程

    本文下载链接: [学习笔记]Netperf网络性能测试工具.pdf 一.Netperf工具简介 1.什么是Netperf ? (1)Netperf是由惠普公司开发的一种网络性能测量工具,主要针对基于T ...

  4. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  5. 网络性能测试工具-Iperf

    一.简单介绍 Iperf是一个网络性能测试工具,Iperf可以测试TCP和UDP带宽质量,Iperf可以测量最大TCP带宽,具有多种参数和UDP特性.Iperf可以报告带宽,延迟抖动和数据包丢失.利用 ...

  6. iperf——网络性能测试工具

    一.前言 工作中遇到需要测试Linux服务器网卡占用率的场景,查阅资料后,发现iperf是一款合适的网络测速工具. 下面讲解一下如何使用iperf做网络性能测试. 二.基础知识 先补充一些基础知识: ...

  7. TCP/UDP网络性能测试工具 - Netperf (zz) ..网络测试工具

    在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多. 除了netperf以外.       还有很多其它的网络性能测试工具.       如db, ...

  8. 网络性能测试工具iperf详细使用图文教程

      Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iper ...

  9. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

随机推荐

  1. vue 组件通讯方式到底有多少种 ?

    前置 做大小 vue 项目都离不开组件通讯, 自己也收藏了很多关于 vue 组件通讯的文章. 今天自己全部试了试, 并查了文档, 在这里总结一下并全部列出, 都是简单的例子. 如有错误欢迎指正. 温馨 ...

  2. JS事件冒泡及阻止

    事件冒泡及阻止 当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表 ...

  3. python-模块的发布和安装

    当我们 import python 模块时,默认先在当前路径搜索,如果当前路径找不到目标模块,python会到安装目录找,还找不到则抛出异常. 如果我们想让自己写的模块,能跟系统自带模块一样,在任何地 ...

  4. Django配置站点

    一 修改hosts文件 """ hosts文件涉及的dns解析 1.找到hosts文件 windows: C:\Windows\System32\drivers\etc\ ...

  5. 洛谷1363 幻象迷宫dfs

    题目网址:https://www.luogu.com.cn/problem/P1363 迷宫是无限多块地图拼接而成的,问是否可以在迷宫中走无限远.解决方案是dfs,走出初始地图之后的位置映射到原位置( ...

  6. 《大空头》与A股内幕消息

    目录 <大空头>简介 投行人士透露内幕消息不划算 <大空头>里合规性的一些解释 相信A股内幕消息的一些惨痛教训. 风险提示. <大空头>简介 <大空头> ...

  7. 【科创人独家】PingCAP黄东旭:想告诉图灵这个世界现在的样子

    创业是投己所好 科创人:作为技术圈内著名艺术青年,哪个瞬间会让您更开心,完成一段优美的代码或者乐谱?还是得到来自外界的欢呼与掌声? 黄东旭:在创业之前的很长一段时间里,完成一段代码.写完一首好曲子那一 ...

  8. 五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet / AlexNet / GoogLeNet / VGG ...

  9. 维护你的请求队列,处理token异常

    前言 网络请求是开发中最基础也是最核心的需求,封装一个稳定且可用性高的请求也显得尤为重要.通常封装的内容除了入参之外,更多的是请求中的异常处理.本文分享下我在处理 token 异常方面的做法,通过维护 ...

  10. Ribbon负载均衡实现

    1,在之前的博文中,我通过eureka,consul,zookeeper 实现了注册中心,在实现的服务发现过程中,都是通过RstTemplate 来实现RPC 远程调用 RestTemplate 封装 ...