前言

大家好,我是大路,今天给大家分享一款本地测速平台“iperf3”

分享这款本地测速平台主要有以下几个原因:

  • Speedtest各地测速不够稳定,体验不好;
  • Speedtest开源本地服务端搭建相对麻烦,基于http测速不够准确;
  • 大路推荐的iperf3搭建简单,老少皆宜;
  • 支持TCP/UDP测速稳定更有参考价值;
  • 本地测速服务器更能考验路由器性能。

所以本文分两个部分:服务端和客户端。

实际iperf3的服务端和客户端都是一样的,基于不同的参数调用不同的属性和身份使用。

对,iperf3本质就是个命令行工具,可以在Windows上运行,也可以在linux或Mac上运行,当然不同平台需要下对应平台压缩包。

同时客户端不限于Windows,可以支持iOS和安卓平台,这点很给力(•́⌄•́๑)૭✧。

也就是作为手机端,也可以方便的使用。

那么iperf3到底是什么?

Iperf3就一个功能,测速,支持:

  • 单线程,多线程,支持TCP或UDP协议测速;
  • 可以测试下行速率或上行速率或者双向测试;
  • 支持和可玩性非常高,也支持IP v6等。

Iperf3的官网在这里iperf.fr,可以下载各种版本,包含支持Docker的版本。

可以看到支持众多平台

上述是官方说明,从域名来看,这是个法国网站,所以也没中文的介绍。其实要了解和学习也不算吃力,不过有大路哥带路,当然会更简单。

我们先讲服务端

服务端对于大家来说,日常就临时用用,如果经常用,刚好你有PC或者NAS,就简单多了。

对于NAS而言直接Docker即可

打开Docker商店,输入“iperf”关键字,第一个就是:

到docker仓库直接下载安装配置即可

上图以极空间私有云为例,iperf3属于偏小众的应用。

建议使用默认端口,否则手机APP麻烦

如上默认安装,需要注意两个地方:

一个是默认端口,建议使用5201默认端口,通常NAS自身不使用该端口,所以也不会冲突,另外建议网络使用桥接模式,即使用NAS自身IP地址,调用5201端口。

另一个是启动命令,需要正确赋予参数,才能正常使用:

参数中直接输入 iperf3 -s 后面会自动加引号

如上图参数,相当于容器中启动后运行“iperf3-s”命令,即作为服务端启动。

在Windows中基于命令行使用也是如此。

我们在Docker分配的内存不用很大,256M绰绰有余,CPU最多给两个线程即可,如下图:

几乎不占用资源

日常有线或者WiFi6的无线打包测试分分钟跑110MB/s以上,如下图:

打包测试流量监控

我在威联通中Docker部署效果如下:

本地PC创建服务端

本地PC更简单,下载的程序包就两个文件:

解压后只有两个文件

如果是Windows 11更方便,在该目录空白处右键选择“在Windows 终端 中打开”:

省去cd到目录的流程

然后会自动打开命令行,并切换到该程序目录,你就直接输入“iperf3”并空格加上参数即可。

服务端嘛,比较简单就是:

iperf3 -s

上面这个命令就是默认基于服务端启动,默认为TCP协议,默认端口5201,使用默认IP地址。

如果测试UDP协议,需要“-u”,如下:

iperf3 -s -u

但是使用UDP协议启动后,就无法使用TCP协议测速了,需要重新开,算一个小缺点。

但是你也别指望人家会更新或者升级该功能,虽然它支持IP v6,但是最近的更新是2015年的。

我们输入:

iperf3 /?

可以获得帮助信息,获得更多使用参数的介绍和示例

帮助的参数要分客户端和服务端,略有不同

如果需要退出,直接关闭命令行窗口即可。

当我们运行命令后会开启监听模式,如果有客户端此时测速,会回显数据,如下图:

服务端数据,打包接近950Mbps

关于服务端其实就这么多,没什么好讲的,客户端比较好玩一些。

如果你是Mac的系统,下载相应的程序包,在终端中调用并带参数运行即可,和Windows一样。

Iperf3的客户端使用

客户端如果在Windows或者linux中都比较简单,只需要把服务端的-s换成-c即可并空格,在后面输入服务端的IP地址后敲回车即可,如下图:

客户端打包测试

上图可以看到一共发包10次:

  • 每次发包112MB,单次发包的速率在940Mbps左右;
  • 每隔一秒发一次包,一共测试了10次;
  • 综合10的平均速率,折合为945Mbps,共计发包1.1GB 。

linux我就不讲了,如果你都用linux还问我,就是装x失败了,前面的信息已经足够你可以用起来了。

参数的使用

客户端中有不少参数可以玩出花样来,举几个示例:

打2M的小包
iperf3.exe -c 192.168.8.8 -i 1 -t 10 -b 2M

我们参考下参数的释义就明白了:

  • -i 设定输出间隔时间,单位为秒,比如-i 1 就是每隔1秒打一次包;
  • -t 设定测试时间,空格后加数字,单位为秒,比如-t 10 就是打包10秒;
  • -b 设定一个传输速度,这里默认单位是Mbit/s
  • -P 指定进程数(或者说线程数),如果设置为5,相当于建立5个并发连接同时打包。
  • 注意:以上参数要区分大小写,比如-p就没法用,必须是-P。

像我上面的参数就是以2Mbps打包,因为这里的Mbit/s可以粗暴理解为Mbps,反正换算比例是8,即2Mbit=0.25MB/s,也就是256KB/s,打这种小包也是很有意义的。

因为一般的家用路由器并不怕你传大文件,就怕特么你发一堆小包,要排队啊,会堵死的。

这个跟我们在Windows中拷贝粘贴小文件传输一样,要排队,速度反而慢。

上面这个参数测试,基本刷一下就出来了,如果我们把-P赋值10线程,你会发现半天没反应。

多线程

如上图,直接模拟10个线程同时打包,甚至可以模拟100个线程,相当于模拟了100个PC,每个PC同时发1个包,这会给路由器或者交换机造成很大的负担。

你可以发现上面截图中,第一个都是1.38Mbytes,后面就降到了1.25Mbytes了。

如果默认参数,就是发大包,如下图,通常在有线测速时都还正常:

一般默认即可

而在无线中使用该参数打包测速,效率会相对低下,因为默认为单线程打包。

在无线终端测速,建议使用2个线程或者5~10个更好,才能体现速度。

甚至一些支持iperf3打包测试的APP默认最低就是10线程。

毕竟我们正常的下载通常都是基于多线程。

当然如果我们有NAS,默认使用该参数即可测试家里有线或者无线速率的传输基准速度。

这个完全不受制于外网测速服务器的带宽。

但是你家里的网线质量不好,往往就会在本地测速中体现出来。

通常我们家里的普通网线千兆能测速在900Mbps以上;通常要达到AWG24美规的网线可以跑到950Mbps左右,当然这个也要看路由器和中间的链路设备;如果排除这个,使用屏蔽线全链路也实现屏蔽接地,甚至可以打包达到980Mbps以上。

其次差异不算很大,但是往后几十Mbps的提速,建设成本将大大的增高。

比如你的路由器需要支持屏蔽接地,通常华硕的高端和旗舰路由器均支持:

此图基于华硕TUF-AX3000实拍

比如上面这款华硕的TUF-AX3000,可以注意网口左右均有一个金属贴片,通过带屏蔽的水晶头就可以实现接地;而屏蔽水晶头也要使用带屏蔽功能的网线才能保证两端均屏蔽接地。

点击图片进行购买 最性价比的AX5400
六类屏蔽水晶头

如上图,大路手上的水晶头外壳是金属包裹的,这就是屏蔽水晶头。

点击图片进行购买

日常家里布线需要准备30~50个水晶头,做布线两端和跳线使用

屏蔽水晶头大路建议是不要选择燕尾的,会伤手,我也不知道设计燕尾水晶头的人是咋想的。

其次你的交换机需要支持屏蔽接地,大路推荐的网件GS105或GS105E均支持哦;同样推荐的Linksys的LGS105或LGS108也是支持的,当然网件的GS105E或者GS308E也是支持的。

Linksys的千兆交换机,建议弱电箱使用,不要外用

日常上面这款也就139元,普联百元的也支持,但是低于百元的交换机通常就不支持了。

华硕AX56U V2实拍

通常入门级路由器也不支持,比如华硕的AX57就不支持,如上图。

点击图片进行购买 新MTK小钢炮

当然我们的PC网口也需要支持屏蔽接地,这个笔记本就很难做到了,而USB转RJ45通常也不支持。

好了,我们继续回到iperf3的关于手机端的用法。

手机APP客户端测速

首先测速APP要内嵌iperf3客户端才能支持基于iperf3服务端的测速。

目前支持的APP不多,仅有一个he.net的APP支持,而且国内的应用商店通常没有这个应用。

默认非多线程,测速显得很慢

如果这里并非5201默认端口,就需要在IP地址后面输入英文的冒号并加上自定义端口号,但是麻烦啊。

Views: 79

By 林大路

知乎大路哥,这人就是我

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注