网络性能评估工具Iperf详解

news/2024/11/18 9:58:59/文章来源:https://www.cnblogs.com/LiuYanYGZ/p/18551775

 摘自:https://www.cnblogs.com/machangwei-8/p/16922788.html

参考:https://www.51cto.com/article/454889.html

发端:iperf -u -c <收端IP> -i 1 -b 800m -t 999 -l 1400
收端:iperf -u -s -i 1

 

 

目录

  • 一、网络性能评估工具Iperf
    • 1、Iperf能做什么
  • 二、Iperf的安装与使用
    • 1.安装iperf
    • 2.iperf参数介绍
  • 2.3.3 Iperf应用实例
    • 1.测试TCP吞吐量
    • 2 . 测试UDP丢包和延迟
  •  三. 出错处理
  • 测试案例

 


 

回到顶部

一、网络性能评估工具Iperf

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

1、Iperf能做什么

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

下面介绍Iperf的主要功能。

(1)TCP方面

q 测试网络带宽。

q 支持多线程,在客户端与服务端支持多重连接。

q 报告MSS/MTU值的大小。

q 支持TCP窗口值自定义并可通过套接字缓冲。

(2)UDP方面

q 可以设置指定带宽的UDP数据流

q 可以测试网络抖动值、丢包数

q 支持多播测试

q 支持多线程,在客户端与服务端支持多重连接。

回到顶部

二、Iperf的安装与使用

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

1.安装iperf

iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多种操作系统平台。读者可以从iperf官方主页http://iperf.fr/ 下载各种版本,目前最新的版本是iperf3.0,这里下载的软件包为iperf-3.0.tar.gz,安装过程如下:

复制代码
复制代码
# wget https://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz
# tar zxvf iperf-3.0.6.tar.gz# cd iperf-3.0.6
# ./configure
# make
# make install
复制代码
复制代码

2.iperf参数介绍

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

服务器端专用选项的含义如表1所示。

表1 服务器端专用选项的含义

命令行参数

含义描述

-s

将iperf以server模式启动,例如:iperf3 –s,iperf3默认启动的监听端口为5201,可以通过“-p”选项修改默认监听端口

-D

将iperf作为后台守护进程运行,例如:iperf3 -s -D

 

客户端专用选项的含义如表2.5所示。

表2 客户端专用选项的含义

命令行参数

含义描述

-c

将iperf以client模式启动

例如:iperf3 -c 192.168.12.168,其中192.168.12.168是server端的IP地址

-u

指定使用UDP协议

-b [K|M|G]

指定UDP模式使用的带宽,单位bits/sec。此选项与“-u”选项相关。默认值是1 Mbit/sec

-t

指定传输数据包的总时间。iperf将在指定的时间内,重复发送指定长度的数据包。默认是10秒钟

-n [K|M|G]

指定传输数据包的字节数,例如:iperf3 -c 192.168.12.168 –n 100M

-l

指定读写缓冲区的长度。TCP方式默认大小为8KB,UDP方式默认大小为1470字节

-P

指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数

-R

切换数据发送接收模式,例如默认客户端发送,服务器端接收,设置此参数后,数据流向变为客户端接收,服务器端发送

-w

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

-B

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

-M

设置TCP最大信息段的值

-N

设置TCP无延时

 

客户端与服务器端公用选项的含义如表3所示。

表3 客户端与服务器端公用选项的含义

命令行参数

含义描述

-f [k|m|g|K|M|G]

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

-p

指定服务器端使用的端口或客户端所连接的端口,例如:

iperf3 -s -p 9527;

iperf3 -c 192.168.12.168 -p 9527

-i

指定每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为1。

例如:iperf3 -c 192.168.12.168 -i 2

-F

指定文件作为数据流进行带宽测试。

例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz

 

回到顶部

2.3.3 Iperf应用实例

要使用iperf,首先要启用一个服务端,这里假定服务端的IP地址为192.168.12.168,在此服务器上运行“iperf3 -s”即可开启iperf的服务器模式。在默认情况下,iperf3将在服务端打开一个5201监听端口,此时就可以将另一台服务器作为客户端执行iperf功能测试了。

1.测试TCP吞吐量

为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能快地向服务端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。图1是一个最简单的带宽测试命令。

clip_image002

图1通过iperf测试网络带宽利用率

从图1可以看出,iperf默认的运行时间是10秒钟,每隔一秒钟输出一次传输状态,同时还可以看到每秒钟传输的数据量在112MB左右,刚好与“Bandwidth”列的值对应起来,网卡的带宽速率维持在941Mbits/sec左右,而测试的服务器是千兆网卡,这个测试值也基本合理。在输出的最后,iperf还给出了总的数据发送、接收量,并给出了带宽速率平均值,通过这些值,基本可以判断网络带宽是否正常,网络传输状态是否稳定。

iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变iperf运行的时间和输出频率,可以通过“-t”和“-i”参数来实现,如图2所示。

clip_image004

图2 添加“-t”和“-i”参数后的iperf输出

从图2 可以看出,输出状态的间隔变为每5秒钟一次,总共执行测试时间为20秒,测试的带宽速率仍然保持在941Mbits/sec左右,唯一变化的是失败重传次数增加了。

为了模拟大量的数据传输,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,iperf在传输完毕指定大小的数据包后,自动结束,如图3所示。

clip_image006

图3 iperf客户端通过“-n”参数指定要传输的数据量

图3的例子是指定发送一个5GB左右的数据包,并且每隔10秒钟输出一次传输状态,从这个输出可以看出,当失败重传次数较多时,传输速率急速下降。

有时候,为了模拟更真实的TCP应用,iperf客户端允许从一个特定的文件发送数据,这可以通过“-F”参数实现,如图4所示。

clip_image008

图4 iperf客户端通过“-F”参数指定文件来发送数据

在图4的例子中,通过“-F”参数指定了一个webdata.tar.gz文件作为iperf要传输的数据,在使用此参数时,需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10秒内,这个文件可能还没有传完。

在使用iperf进行网络带宽测试时,如果没有指定发送方式,iperf客户端只会使用一个单一的线程,而iperf是支持多线程的,可以使用iperf提供的“-P”参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量。

下面通过两个例子进行简单对比,图5是iperf使用单线程传输1.86GBytes数据所消耗的时间和带宽使用情况。为了速率单位统一,这里使用“-f”参数将输出结果都通过MBytes来显示。

clip_image010

图5 iperf在单线程模式下的传输时间和传输速率

从图5中可以看出,传输1.86GBytes的数据消耗了17秒的时间,平均带宽速率为112MBytes/sec(注意单位).下面再看看使用多线程后,iperf传输同样大小数据量所消耗的时间和平均带宽速率,如图6所示。

clip_image012

图6 iperf使用多线程后的数据传输状态

这里通过“-P”参数开启了2个多线程,从传输时间上看,传输1.86GBytes的数据,消耗时间为10.79秒,比之前单线程的传输时间少了近7秒钟,在平均带宽速率上,从之前单线程的112MBytes/sec提高到177MBytes/sec,从这个结果可以看出,多线程对网络传输性能的提高不小。

2 . 测试UDP丢包和延迟

iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能,图7测试的是在iperf客户端传输100MB的UDP数据包的输出结果.:

clip_image014

图7 iperf传输100MB的UDP数据包的输出结果

在图7中,重点关注虚线下的一段内容,在这段输出中,“Jitter”列表示抖动时间,或者称为传输延迟,“Lost/Total”列表示丢失的数据报和总的数据报数量,后面的0.33%是平均丢包的比率,“Datagrams”列显示的是总共传输数据报的数量。

这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端执行传输测试的同时,服务端也会同时显示传输状态,如图8所示。

clip_image016

图8 iperf服务端显示的UDP传输状态

在这个输出中,详细记录了在传输过程中,每个阶段的传输延时和丢包率,在UDP应用中随着传输数据的增大,丢包率和延时也随之增加。对于延时和丢包可以通过改变应用程序来缓解或修复,例如视频流应用,可以通过缓存数据的方式而可以容忍更大的延时。

回到顶部

 三. 出错处理

错误:

iperf3: error - unable to read from stream socket: No route to host

是防火墙默认关闭了 icmp

需要将客户端和服务端的防火墙 将

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

删掉或注释掉即可。

 

回到顶部

测试案例

华为云服务器 服务端开启进程

 

 自己VMware虚拟机客户端执行命令

运行十秒,一秒输出一次传输状态,每秒传输数据量transfer,在1M以下。网卡的的带宽速率bandwidth,总的数据发送,接收量,带宽速率平均值

 

 查看云服务器带宽1M

 

 测试udp的没有动静

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836032.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升开发效率的秘密:IT团队都在用哪些项目管理工具?

在当今的数字化时代,IT团队的角色已经从传统的技术支持转变为企业发展的战略推动力。随着企业业务的快速扩展,IT项目的复杂性也在增加。如何高效地管理项目、协调团队协作、以及快速响应变化,成为每个IT团队都必须面对的问题。而一个优秀的项目管理工具,不仅能帮助团队提升…

【PCIE716-0】基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台

板卡概述 PCIE716-0是一款基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台。该平台采用Xilinx的ZYNQ SOC系列产品XC7Z100作为主处理器。 该平台的PL端具有1个FMC(HPC)接口,1路PCIe x8主机接口,支持1路UART串口、支持1组64位DDR3 SDRAM大容量缓存、支持1路1000BASE-T…

给网站免费升级https协议

给网站免费升级HTTPS协议,可以通过申请并部署免费的SSL证书来实现。以下是一个详细的步骤指南:一、申请免费SSL证书 选择证书颁发机构: 可以选择像JoySSL这样的公益项目,它提供免费、自动化的SSL/TLS证书颁发服务,适用于各种规模的网站。 免费SSL证书申请入口 提交申请: …

在阿里云快速启动Appsmith搭建前端页面

什么是Appsmith Appsmith是一个开源的低代码开发平台,它使得开发者能够快速地构建内部工具、业务管理系统、CRM系统等。Appsmith通过提供一系列预建的UI组件(如表格、图表、表单等),以及对数据库、API调用的直接支持,简化了开发过程。开发者可以使用这些组件和服务来构建复…

【Anaconda3 2023.03软件下载与安装教程】

1、安装包 Anaconda3py 2023(64bit): 链接:https://pan.quark.cn/s/f77de1704504 提取码:z7k2 2、安装教程 1) 下载解压软件安装包,双击Setup.exe安装,弹窗安装对话框2) 点击Next3) 点击I Agree4) 默认,点击Next5) 选择安装目录,建议…

MoD:轻量化、高效、强大的新型卷积结构 | ACCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: CNN Mixture-of-Depths论文地址:https://arxiv.org/abs/2409.17016创新点提出新的卷积轻量化结构MoD,在卷积块(Conv-Blocks)内通过动态选择特征图中的关键通道进行集中处理,提高效率。 CNN MoD保留了静态计算图,这…

【Android Studio 2022软件下载与安装教程】

1、安装包 Android Studio 2022: 链接:https://pan.quark.cn/s/9821141ab2c7 提取码:aTaw 2、安装教程 1) 解压下载安装包,双击Setup.exe安装,弹窗安装对话框2) 点击下一步3) 默认,点击下一步4) 选择安装目录,建议选择C盘之外,点击下一步5)…

当然不是草台班子-冲刺日志6

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第三次( Alpha冲刺)作业目标 alpha冲刺完成项目核心功能团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242…

教你对接电商拍图识款接口

在网上购物时候,不止可以通过名称搜索商品,也可以拍照上传图片搜索商品。比如某宝上拍个图片就能搜索到对应的商品。腾讯、阿里都提供了类似的图像搜索服务,这类服务原理都差不多:在一个具体的图库上,新增或者删除图片。 通过图片搜索相似的图片。本文对接的是腾讯云的图像…

【Unity】ScriptableObject的应用和3D物体跟随鼠标移动:鼠标放置物体在场景中

使用ScriptableObject类实现资源的配置;实现3D物体跟随鼠标移动;实现物体放置在鼠标点击的世界坐标位置。需求说明 结合前篇,仓库管理 和 获取鼠标点击的世界坐标位置 两篇内容,已经实现了:鼠标或键盘控制玩家移动;玩家触碰物体后,将物体放入仓库;鼠标点击仓库栏中的物…

Kubernetes v1.16.3版本开启 Job ttlSecondsAfterFinished 自动清理机制

前言 Kubernetes v1.23 之前,Job 在处于 Completed 后,默认是不会被清理的。 完成的 Job 通常不需要留存在系统中。在系统中一直保留它们会给 API 服务器带来额外的压力。 Kubernetes v1.23 之后, TTL 控制器所提供的 TTL 机制。 通过设置 Job 的 .spec.ttlSecondsAfterFini…

当然不是草台班子-冲刺日志2

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第三次( Alpha冲刺)作业目标 alpha冲刺完成项目核心功能团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242…