首页 > 其他分享 >网络收发性能测试-iperf工具

网络收发性能测试-iperf工具

时间:2023-05-29 11:13:06浏览次数:44  
标签:运维 带宽 收发 测试 iperf 服务端 客户端

快速上手:iperf网络性能测试工具(运维必会)

Cloud研习社 运维网工 2023-05-25 09:00 发表于重庆 收录于合集 #运维工具87个 #运维工程师145个 #运维管理84个 #网络运维94个 #性能测试1个 运维网工 分享网络运维、运维规划、运维开发、Python运维、Linux运维、devops工具链、k8s容器化技术、自动化监控、日志收集等知识,推广围绕DevOps理念的自动化运维、高效运维、智能运维等优秀实践,让运维工程师更加专注于自动化。 16篇原创内容 公众号

图片

iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具。

图片

目录

 

iperf安装带宽测试(TCP、UDP分开测试)网络收发包性能测试图片
图片

iperf安装



 

可以直接通过官网下载对应系统版本进行安装(https://iperf.fr/iperf-download.php)

1.对于windows版的iPerf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可

2.对于linux版的iPerf,请使用如下命令安装

yum -y install iperf
图片

带宽测试



 

1、针对TCP进行带宽性能测试

服务端命令:iperf -s -i 1 -p 3389

客户端命令:iperf -c 172.19.16.97 -p 3389 -i 1

当然也可以不指定端口号和报告间隔:

服务端:iperf -s

客户端:iperf -c 172.19.16.97

我们看个例子:

启动服务端:

[root@m01 ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

客户端发起测试:

# 仅进行客户端到服务端的单项测试
iperf -c 10.0.0.12 -t 30 -i 5

# 同时进行上传、下载测试(双向测试)
iperf -c 10.0.0.12 -t 30 -i 5 -d -L 8083
 
# 自动的先进行上传测试;再进行下载测试
iperf -c 10.0.0.12 -t 30 -i 5 -r -L 8083

 

上面的命令含义:

服务端是10.0.0.12,测试持续30s,每5秒报告一次测试结果。

-d    参数是同时指定上下行带宽测试,

-r     是往返测试模式。当完成客户端到服务端的带宽测试时,服务器使用-L指定的端口,反向连接到客户端,进行服务端到客户端的带宽测试。

-L   客户端同时作为服务端的时候,为对端提供的测试端口。

参数小结:

-s        以服务端的模式启动iperf

-c        以客户端的的形式启动iperf

-t        指定测试时长,后面的数字代表秒数,上面的例子是持续测试30s

-i        指定报告的间隔时间,上例是每5秒输出一次测试结果

-d        同时进行上下行带宽测试。

-L        用来指定服务端反向连接客户端的端口(即客户端同时作为服务端,提供的可连接端口)

-w        指定窗口大小进行测试

输出结果如下:

图片我们10.0.0.14是服务端,10.0.0.3是作为客户端。上面截图我们做的是同时进行上下行测试,所以红色框里的[ 3]代表是客户端到服务端的带宽,[ 5]代表的是服务端到客户端的下行带宽。

2、针对UDP进行带宽性能测试

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

服务端命令:

iperf -u -s

客户端命令:

iperf -u -c 10.0.0.14 -b 1000M -i 3

输出结果:

图片

 

上面测试用服务器是千兆网卡,我们发现,当以2000M的速率去发包的时候,会有丢包的现象。

参数小结:

-b:设置UDP的发送带宽,单位bit/s

图片

网络收发包性能测试



 

通过UDP发包测试不仅可以通过-b xxxM的形式测试带宽性能情况,还可以通过-b xxxpps测试收发包性能。

网络收发包量的测试同时还会受到缓冲区大小的影响,默认的缓冲区比较小的话,会造成服务器到达高pps丢包的现象,这里建议在测试前调整下缓冲区大小;同时由于UDP默认发包大小为1470字节,在发包量很高的情况会超出服务器的带宽限制,所以这里需-l 指定发包大小,本次测试采用-l 100bit

1、调整UDP缓冲区大小

vi /etc/sysctl.conf

添加

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216 

然后执行sysctl -p 使得参数生效

sysctl -p

2、进行测试

服务端命令

iperf -u -s -i 1 -p 3389

客户端命令

iperf -u -c 172.19.16.97 -b 300000pps -l 100bit  -i 1 -p 3389

图片

图片

通过测试可以发现,30Wpps进行收发包测试的时候是没有丢包现象的,当测试收发包到达32Wpps的时候已经开始出现丢包现象了,可以断定当前网络的pps就是30W。参数汇总:

-s        以服务端的模式启动iperf

-c        以客户端的的形式启动iperf

-t        指定测试时长,后面的数字代表秒数,上面的例子是持续测试30s

-i        指定报告的间隔时间,上例是每5秒输出一次测试结果

-d        同时进行上下行带宽测试。

-L        用来指定服务端反向连接客户端的端口(即客户端同时作为服务端,提供的可连接端口)

-w        指定窗口大小进行测试

-b        设置UDP的发送带宽,单位bit/s

-l         指定包大小,TCP默认8k,UDP默认1470字节

 

运维网工 分享网络运维、运维规划、运维开发、Python运维、Linux运维、devops工具链、k8s容器化技术、自动化监控、日志收集等知识,推广围绕DevOps理念的自动化运维、高效运维、智能运维等优秀实践,让运维工程师更加专注于自动化。 16篇原创内容 公众号 收录于合集 #运维工具  87个 上一篇自动化添加iptables白名单工具 阅读 890   收藏此内容的人还喜欢   Mac是最好的Linux,Win也是最好的Linux,只有Linux做不好Linux     阅读2万+ 量化风云 不看的原因   再见Jenkins!一款更适合国人的自动化部署工具,贼带劲!!     阅读1万+ 测试开发技术 不看的原因   一分钟教你在nginx服务器上添加ssl安全证书     IT仔的笔记本 不看的原因    

标签:运维,带宽,收发,测试,iperf,服务端,客户端
From: https://www.cnblogs.com/cherishthepresent/p/17439884.html

相关文章

  • pip源测试
    有s,无trusted无s,无trusted无s,有trusted有s,有trusted正常情况......
  • 渗透测试
    信息收集dnsenum+域名挖掘子域名whois拿注册信息dig+noall+answer-xdnsip亚数信息-SSL/TLS安全评估报告(myssl.com)也可以起到子域名挖掘作用钟馗之眼目录信息收集队友给的php反序列化的基础记录收藏一下反序列化基础知识:魔术方法:<1>.__construct()<2>.__destr......
  • 从功能测试转到自动化测试,我的测试之路“狂飙”~20k...
    前言手动功能测试人员应该权衡测试自动化相对于功能测试的好处,并且即可开始行动。现在随着测试行业的发展,自动化测试已经成为每个测试人的标配技能了。如何从功能测试到自动化测试转换。1、查找合适的自动化测试用例自动化测试在重复测试中发挥着极其重要的作用。可以在下表中......
  • 一年web网站测试的总结
    1.页面链接检查每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTMLLinkValidater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTMLLinkValidater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do......
  • Python+Requests零基础系统掌握接口自动化测试
    Python+Requests零基础系统掌握接口自动化测试download:3wzxit666com设计高性能的售票系统在当今数字化时代,一个高性能的售票系统对于任何企业或机构来说都是至关重要的。无论该系统服务于电影院、剧院、运输公司还是其他类型的场所,它必须始终可靠、快速和易于使用。以下是几个要......
  • Web自动化测试流程
    需求分析-测试计划(自动化选择,选择技术栈,selenium,cypress.io)-测试用例编写-审核-写代码-生成测试报告其中主要是用例设计、框架结构,自动化用例实现,异常用例,正常用例,用例筛选;web自动化测试框架搭建selenium操作浏览器操作常用操作:定位元素:1、xpath 2、css选择器  3、el.cli......
  • 更换主题后的一篇测试文章
    SSM零、Maven1:构建项目clean:清除上一次构建生成的内容compile:编译compile:编译主程序test-compile:编译单元测试程序test:执行测试(单元测试用例)package:打包install:安装2:依赖的范围compile:默认范围【编译前后都能用】,表示main、test里面都能使用,并且该依......
  • postman与jmeter的API测试流程
    1.postman工具使用流程:\1.先熟悉接口文档以及各个接口的业务关系。包括关联、接口地址,请求方式,鉴权方式,入参和出参等。\2.然后编写好测试用例。\3.在postman先建好url不同的环境变量。\4.根据接口用例所属的模块新建集合管理。\5.在集合中不同模块下录入测试用例......
  • 我用ChatGPT写了一个简单的Python自动化测试脚本
    0前言有时候因为要跑很多rtl的仿真,而现有的资源比较有限,每次都需要等一批rtl仿真结束后,才可以执行下一批,尤其是碰到最末的时候,一批rtl仿真结束,要是在打开电脑去run下一批,确实挺不方便的一度想着要是有个脚本就好了,奈何自己Python确实不行,刚好最近有大火的ChatGPT,就用ChatGPT辅......
  • Vulnhub靶机DevRandom CTF1.1详细测试过程
    DevRandomCTF:1.1靶机信息名称:DevRandomCTF:1.1地址:https://www.vulnhub.com/entry/devrandom-ctf-11,450/识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/DevRandom]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:192.168.56.0/24|S......