前言
大家好,我是大路,今天给大家分享一款本地测速平台“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”关键字,第一个就是:
上图以极空间私有云为例,iperf3属于偏小众的应用。
如上默认安装,需要注意两个地方:
一个是默认端口,建议使用5201默认端口,通常NAS自身不使用该端口,所以也不会冲突,另外建议网络使用桥接模式,即使用NAS自身IP地址,调用5201端口。
另一个是启动命令,需要正确赋予参数,才能正常使用:
如上图参数,相当于容器中启动后运行“iperf3-s”命令,即作为服务端启动。
在Windows中基于命令行使用也是如此。
我们在Docker分配的内存不用很大,256M绰绰有余,CPU最多给两个线程即可,如下图:
日常有线或者WiFi6的无线打包测试分分钟跑110MB/s以上,如下图:
我在威联通中Docker部署效果如下:
本地PC创建服务端
本地PC更简单,下载的程序包就两个文件:
如果是Windows 11更方便,在该目录空白处右键选择“在Windows 终端 中打开”:
然后会自动打开命令行,并切换到该程序目录,你就直接输入“iperf3”并空格加上参数即可。
服务端嘛,比较简单就是:
iperf3 -s
上面这个命令就是默认基于服务端启动,默认为TCP协议,默认端口5201,使用默认IP地址。
如果测试UDP协议,需要“-u”,如下:
iperf3 -s -u
但是使用UDP协议启动后,就无法使用TCP协议测速了,需要重新开,算一个小缺点。
但是你也别指望人家会更新或者升级该功能,虽然它支持IP v6,但是最近的更新是2015年的。
我们输入:
iperf3 /?
可以获得帮助信息,获得更多使用参数的介绍和示例。
如果需要退出,直接关闭命令行窗口即可。
当我们运行命令后会开启监听模式,如果有客户端此时测速,会回显数据,如下图:
关于服务端其实就这么多,没什么好讲的,客户端比较好玩一些。
如果你是Mac的系统,下载相应的程序包,在终端中调用并带参数运行即可,和Windows一样。
Iperf3的客户端使用
客户端如果在Windows或者linux中都比较简单,只需要把服务端的-s换成-c即可并空格,在后面输入服务端的IP地址后敲回车即可,如下图:
上图可以看到一共发包10次:
- 每次发包112MB,单次发包的速率在940Mbps左右;
- 每隔一秒发一次包,一共测试了10次;
- 综合10的平均速率,折合为945Mbps,共计发包1.1GB 。
linux我就不讲了,如果你都用linux还问我,就是装x失败了,前面的信息已经足够你可以用起来了。
参数的使用
客户端中有不少参数可以玩出花样来,举几个示例:
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,可以注意网口左右均有一个金属贴片,通过带屏蔽的水晶头就可以实现接地;而屏蔽水晶头也要使用带屏蔽功能的网线才能保证两端均屏蔽接地。
如上图,大路手上的水晶头外壳是金属包裹的,这就是屏蔽水晶头。
日常家里布线需要准备30~50个水晶头,做布线两端和跳线使用。
屏蔽水晶头大路建议是不要选择燕尾的,会伤手,我也不知道设计燕尾水晶头的人是咋想的。
其次你的交换机需要支持屏蔽接地,大路推荐的网件GS105或GS105E均支持哦;同样推荐的Linksys的LGS105或LGS108也是支持的,当然网件的GS105E或者GS308E也是支持的。
日常上面这款也就139元,普联百元的也支持,但是低于百元的交换机通常就不支持了。
通常入门级路由器也不支持,比如华硕的AX57就不支持,如上图。
当然我们的PC网口也需要支持屏蔽接地,这个笔记本就很难做到了,而USB转RJ45通常也不支持。
好了,我们继续回到iperf3的关于手机端的用法。
手机APP客户端测速
首先测速APP要内嵌iperf3客户端才能支持基于iperf3服务端的测速。
目前支持的APP不多,仅有一个he.net的APP支持,而且国内的应用商店通常没有这个应用。
如果这里并非5201默认端口,就需要在IP地址后面输入英文的冒号并加上自定义端口号,但是麻烦啊。
Views: 132