iperf

介绍

iperf是一种命令行工具,用于通过测量服务器可以处理的最大网络吞吐量来诊断网络速度问题。它在遇到网络速度问题时特别有用,通过该工具可以确定哪个服务器无法达到最大吞吐量。

安装iperf

被测Linux板子

板子是Linux环境,一般情况都会有iperf3,在目录 usr/bin 下,可以查找到iperf3
在这里插入图片描述

PC主机

因为电脑是windows环境,考虑到使用Ubuntu是虚拟机的状态下运行,会影响到网络的测试,因此直接使用iperf 的windows版本

首先先去iperf官网下载 https://iperf.fr/iperf-download.php

在这里插入图片描述
在这里插入图片描述

对于windows版的Iperf,直接将解压出来的iperf3.execygwin1.dll复制到C:\Windows\System32,这样cmd可以直接打开

iperf使用

Windows打开cmd进入后,测试一下iperf如何使用,以及正常运行是什么状态

基本的使用方法,如果Windows环境就是 iperf3 替换成 iperf3.exe

iperf3 -c 服务端ip -p 监听的端口号 -b 带宽 -i 时间间隔(单位秒) -t 持续时间(单位秒) -R(反向传输) -u(采用udp模式)
选项描述
-F更改运行测试的格式。例如,您可以使用-f k以每秒Kbits而不是每秒Mbits的速度获得结果。有效选项包括m(Mbits,默认),k(Kbits),K(KBytes)和M(MBytes)。
-V强制iPerf使用IPv6而不是IPv4。
-i更改带宽测试之间的间隔。例如,-i 60将每60秒生成一个新的带宽报告。默认值为零,执行一次带宽测试。
-p更改端口。未指定时,默认端口为5001.您必须在客户端和服务器上都使用此标志。
-B将iPerf绑定到特定的接口或地址。如果通过server命令传递,则将设置传入接口。如果通过client命令传递,则将设置传出接口。

然后就是测试一下

单个网口连接(保证两个连接的网卡在同一网段!)测试

服务端(接收,这里接收端是windows环境,所以需要用iperf3.exe)启动:

iperf3.exe -s

客户端(发送)启动;

iperf3 -u -c 192.168.0.2 -i 1 -t 60 -b 100M

以udp模式向服务端 192.168.0.2 发送100M带宽的数据,持续60秒,每秒发送一次报告。

Linux网口初始化配置

在这里插入图片描述

板子上存在4个网口,需要配置IP,为了避免一些不必要的麻烦,分别在四个网段

ifconfig eth1 192.168.1.232
ifconfig eth2 192.168.2.232
ifconfig eth3 192.168.3.232

在这里插入图片描述
初始化完成之后,就是接下来的测试工作,PC段的四个网卡ip也分别为

192.168.0.2
192.168.1.2
192.168.2.2
192.168.3.2

同时测试4个网口吞吐量

Linux板子

Linux板子根据实际的信息流向,三个网口使用udp发送,也就是需要开三个客户端通过UDP发送

对板子的控制因为只能通过串口或者网口,因此没有办法像电脑操作打开多个窗口

使用 后台运行 + 隐藏打印

iperf3 -c 192.168.1.2 -u -p 6001 -t 9999 -b 1000m >/dev/null &
iperf3 -c 192.168.2.2 -u -p 6002 -t 9999 -b 1000m >/dev/null &
iperf3 -c 192.168.3.2 -u -p 6003 -t 9999 -b 1000m >/dev/null &

注意:

  • 因为使用的是UDP,所以要配置数据带宽,-b 1000m,不然速度会很低
  • 将打印信息输出到 >/dev/null,可以不在调试界面打印
  • & 隐藏到后台运行

通过

top

查看cpu占用率以及后台使用情况
在这里插入图片描述

jobs -l		

在这里插入图片描述
接着就是设置第四个网口,作为服务端,接受数据,使用TCP协议

iperf3 -s -p 6000 >/dev/null &

在这里插入图片描述

linux后台运行和关闭、查看后台任务

插播一段linux后台运行和关闭、查看后台任务的命令

fg

将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用

fg %jobnumber(是命令编号,不是进程号)

将选中的命令调出。

在这里插入图片描述

ctrl + z

可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

kill

法子1:通过jobs命令查看job号(假设为num),然后执行

kill %num

法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:Ctrl+c

bg

将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用

bg %jobnumber

将选中的命令调出。

windows 电脑

因为Linux端已经配置完成,所以windows这边对应接受和发送就可以了

首先是三个接收

iperf3.exe -s -p 6001
iperf3.exe -s -p 6002
iperf3.exe -s -p 6003

然后是一个发送

iperf3.exe -c 192.168.0.232 -p 6000 -t 9999

在这里插入图片描述

结果

按照设定时间测试完成后,会输出测试结果

(拿了一个测试千兆网口的图片,意思一下)
在这里插入图片描述

iperf测试UDP丢包率

因为TCP是有链接,错误也会重发,所以不存在丢包率的指标。但是对于UDP iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。

通过iperf的“-u”参数即可测试UDP应用的传输性能,下测试的是在iperf客户端传输1000MB的UDP数据包的输出结果.:

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐