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

 

本文下载链接

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

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

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

  3. Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)

    1.简介 在本节中,您将学习如何创建基本的 测试计划来测试网站.您将创建五个用户,这些用户将请求发送到JMeter网站上的两个页面.另外,您将告诉用户两次运行测试.因此,请求总数为(5个用户)x(2个 ...

  4. 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)

    1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...

  5. 《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)

    1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.Test ...

  6. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  7. 【山外笔记-工具框架】SVN版本控制系统

    [山外笔记-框架工具]SVN版本控制系统 学习资料: 1.本文打印版下载地址:[山外笔记-框架工具笔记]SVN版本控制工具-打印版.pdf 2.SVN和TortoiseSVN在线中文文档:http:/ ...

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

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

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

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

随机推荐

  1. [图论]最短网络:kruskal

    最短网络 目录 最短网络 Description Input Output Sample Input Sample Output 解析 代码 Description 农民约翰被选为他们镇的镇长!他其中 ...

  2. 附031.Kubernetes_v1.20.4高可用部署架构二

    kubeadm介绍 kubeadm概述 参考附003.Kubeadm部署Kubernetes. kubeadm功能 参考附003.Kubeadm部署Kubernetes. 本方案描述 本方案采用kub ...

  3. Java8中的Optional操作

    作者:汤圆 个人博客:javalover.cc 前言 官人们好啊,我是汤圆,今天给大家带来的是<Java8中的Optional操作>,希望有所帮助,谢谢 文章纯属原创,个人总结难免有差错, ...

  4. HashMap、ConcurrentHashMap 1.7和1.8对比

    本篇内容是学习的记录,可能会有所不足. 一:JDK1.7中的HashMap JDK1.7的hashMap是由数组 + 链表组成 /** 1 << 4,表示1,左移4位,变成10000,即1 ...

  5. IDEA中Maven的配置

    Maven安装 下载Maven 官网:https://maven.apache.org/ 下载完成后,解压即可: 配置环境变量 在本机电脑的系统环境变量中 配置如下配置: 路径:此电脑-->高级 ...

  6. 请求转发(forward)和请求包含(include)的区别?

    请求包含的例子 第一个Servlet (DispatcherServlet) @Override protected void doGet(HttpServletRequest req, HttpSe ...

  7. Java 高精度浮点数计算工具

    说起编程中的高精度数值,我第一反应就是double类型了.的确,double阶码11位,尾数52位,几乎能应对任何苛刻的要求......然而,当我天真地尝试用double来算泰勒展开式的函数值,离散代 ...

  8. HTTP 基础(特性、请求方法、状态码、字段)

    1. HTTP 简介(含义.特性.缺点) 2. HTTP 报文 3. GET 和 POST 4. 状态码 5. HTTP 头字段 1. HTTP 简介 HTTP 的含义 HTTP (HyperText ...

  9. Git 简介与仓库使用

    1. Git 简介 2. 远程仓库的使用 3. 本地仓库的使用 1. Git 简介 Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上. 其原理是首先找一台电脑充当服务器的角色 ...

  10. 如何以最简单的方式安装 KALI 渗透测试框架系统

    0x01 第一步下载 KALI 百度搜索 KALI 官网,找到下载区,我选的是 64 位标准版,但是推荐下载 32 位(功能貌似更全) 这个为下载后的 iso 镜像文件 0x02 第二步打开虚拟机,配 ...