局域网测速环境搭建——iPerf3篇
这篇文章主要来简单写写局域网里怎么测速,比如日常换了个新路由想要测试一下无线性能和覆盖之类的情况,又或者组了一台NAS想测试网络传输是否达标等等。
外网测速这一块,市面上的各类软件已经是数不清了,最有名的应该就是 Ookla 出的 Speedtest 了,各种平台都有对应客户端,使用起来极其方便,结果输出简单直接。
但局域网这一块就相对来说麻烦一点了,尤其是服务器端的搭建,本文说说测速工具之一的 iperf 的配置。
实际对于有线连接,Windows 系统自带的 SMB 共享就是最简单的测速工具,也是最可靠的,能直接反应实际应用中的传输速度。找两台 pc,一台开共享,另一台直接拷贝个文件过去就能测出来有线传输的速度,一般来说内网千兆能实际跑到 980Mbps 左右,如下图:
有群晖这类 NAS 的话,也是一样的,直接拷文件,看速度就行。
注意此方法仅限于收发双方都是有线连接的情况,如果是无线连接的情况,那要考虑各种损耗因素。
特别提示:安卓和 iOS 系统,不要和 windows 之间用 SMB 传文件来当做测速!
SMB 在非 windows 平台上有很大的效率问题,不同的 app 里能跑出来的速度都不一样,毫无参考性。比如说 nPlayer 这款很有名的播放器,不管是 iOS 还是安卓,我测试下来都只能最高跑到 60M/s 出头的速度,但 iperf 测试会发现实际带宽远不止这点。
当然了,有人可能会觉得这种测试方法太 low 了,想用高级一点的软件,这就是本文要说的内容了,主要来说一下 iperf3 这个软件的使用。
iperf 是一个有很多年历史的网络测试工具了,目前最新版本是 iperf3。
官网:https://iperf.fr/iperf-download.php 国内访问速度不好,可能需要科学上网。
各种系统平台全都支持,包括几大主流的 Linux 发行版。
一、在群晖NAS配置服务端的教程
1、在群辉docker注册表中直接搜索iperf3;
2、找个星星最多的下载即可,如第一个;
3、下载后打开映像,启动刚刚下载的docker容器,点击高级设置;
4、将本地端口配置为5201;
5、设置环境,填写命令-s(设置为服务端);
6、之后不需要设置任何参数,一直下一步即可。
二、在Linux系统配置iperf3的教程
1、Linux 这边,一般情况下系统默认源里就会带有 iperf3,这里以 Debian 系统作为例子,要安装的话只需要一句:
apt install iperf3
2、然后 iperf3 就装好了,安装之后,可以任意选择要作为服务器端还是客户端,一般作为服务器端的话,则运行:
iperf3 -s
程序会自动监听默认的 5201 端口,防火墙注意也要放行此端口,这样服务器端就准备好了。
-s 表示运行在服务器模式下,还可以用-p 指定监听其他端口,-D 参数则可以后台运行。比如想自定义监听 8888 端口,并且后台运行,则命令如下:
iperf3 -s -p 8888 -D
3、iperf 还有很多可以额外指定的参数,以下是具体的参数,具体请参考网上资料,就不过多解释了。
用法: iperf [-s|-c host] [options]
iperf [-h|--help] [-v|--version]
iPerf 工作模式和参数
- 通用参数:
- -p, --port #,Server 端监听、Client 端连接的端口号;
- -f, --format [kmgKMG],报告中所用的数据单位,Kbits, Mbits, KBytes, Mbytes;
- -i, --interval #,每次报告的间隔,单位为秒;
- -F, --file name,测试所用文件的文件名。如果使用在 Client 端,发送该文件用作测试;如果使用在 Server 端,则是将数据写入该文件,而不是丢弃;
- -A, --affinity n/n,m,设置 CPU 亲和力;
- -B, --bind ,绑定指定的网卡接口;
- -V, --verbose,运行时输出更多细节;
- -J, --json,运行时以 JSON 格式输出结果;
- --logfile f,输出到文件;
- -d, --debug,以 debug 模式输出结果;
- -v, --version,显示版本信息并退出;
- -h, --help,显示帮助信息并退出。
- Server 端参数:
- -s, --server,以 Server 模式运行;
- -D, --daemon,在后台以守护进程运行;
- -I, --pidfile file,指定 pid 文件;
- -1, --one-off,只接受 1 次来自 Client 端的测试,然后退出。
- Client 端参数
- -c, --client ,以 Client 模式运行,并指定 Server 端的地址;
- -u, --udp,以 UDP 协议进行测试;
- -b, --bandwidth #[KMG][/#],限制测试带宽。UDP 默认为 1Mbit/秒,TCP 默认无限制;
- -t, --time #,以时间为测试结束条件进行测试,默认为 10 秒;
- -n, --bytes #[KMG],以数据传输大小为测试结束条件进行测试;
- -k, --blockcount #[KMG],以传输数据包数量为测试结束条件进行测试;
- -l, --len #[KMG],读写缓冲区的长度,TCP 默认为 128K,UDP 默认为 8K;
- --cport ,指定 Client 端运行所使用的 TCP 或 UDP 端口,默认为临时端口;
- -P, --parallel #,测试数据流并发数量;
- -R, --reverse,反向模式运行(Server 端发送,Client 端接收);
- -w, --window #[KMG],设置套接字缓冲区大小,TCP 模式下为窗口大小;
- -C, --congestion ,设置 TCP 拥塞控制算法(仅支持 Linux 和 FreeBSD );
- -M, --set-mss #,设置 TCP/SCTP 最大分段长度(MSS,MTU 减 40 字节);
- -N, --no-delay,设置 TCP/SCTP no delay,屏蔽 Nagle 算法;
- -4, --version4,仅使用 IPv4;
- -6, --version6,仅使用 IPv6;
- -S, --tos N,设置 IP 服务类型(TOS,Type Of Service);
- -L, --flowlabel N,设置 IPv6 流标签(仅支持 Linux);
- -Z, --zerocopy,使用 “zero copy”(零拷贝)方法发送数据;
- -O, --omit N,忽略前 n 秒的测试;
- -T, --title str,设置每行测试结果的前缀;
- --get-server-output,从 Server 端获取测试结果;
- --udp-counters-64bit,在 UDP 测试包中使用 64 位计数器(防止计数器溢出)。
4、如果有 Docker 的,还能用 Docker 运行,只需要一句命令,即可自动拉取镜像并运行,傻瓜式完成服务器端搭建:
docker run --restart=unless-stopped --name=iperf3 -d -p 5201:5201/tcp -p 5201:5201/udp mlabbe/iperf3
三、在Windows系统配置iperf3的教程
1、Windows 系统这边的服务器搭建是一样的的办法,先去下载对应的版本,这年头一般也就是直接选 64 位最新版的 3.1.3 了。
2、下载后解压,进入文件夹后会发现只有这俩文件:
3、不要点 exe 运行(实际点了也不会有任何效果),而是在程序文件所在的文件夹空白处,按住键盘的 shift 键,同时单击鼠标右键,选择在此处打开 PowerShell 窗口,也就是命令行窗口,要注意的是由于 PowerShell 的安全限制,命令前面要加上.\
,也就是变成:
.\iperf3 -s
后面跟的附加参数之类都是一样的用法,不再赘述。不过个人感觉是 windows 主机作为服务端效率似乎不高,更推荐 linux 作为服务端。
四、配置iperf3客户端
1、搭完了服务端,最后就是用客户端来测速了,先到iperf3的官网下载宽带测速软件:https://iperf.fr/iperf-download.php
2、然后运行客户端输入测速指令:
iperf3 -c 192.168.2.165
IP 地址换成自己服务器端的,PowerShell 里运行的话记得前面加.\
,然后就可以看到测速结果了,如下图:
默认是客户端发送,服务器端接收。也可以反过来,让服务器端发送,客户端接收,那就是后面跟随-R
参数,注意 R 要大写:
iperf3 -c 192.168.2.165 -R
默认单线程压力可能会不够,可以加-P
参数指定多线程,注意是大写的 P,一般可以设定 5-10 线程:
iperf3 -c 192.168.2.165 -P 5
客户端默认只会显示发送的成绩,接收的成绩在服务器端那边显示,显然看起来不方便,于是还可以跟随--get-server-output
参数,让客户端显示服务器端的信息:
iperf3 -c 192.168.2.165 --get-server-output
效果如下图,第二段的 Server output 部分就是服务器端的接收信息:
最后再来说一下无线速率测试,也就是移动端 app 的使用,支持 iperf 的 app 有很多,我个人一般使用的是 he.net - Network Tools
这一款软件,安卓和 IOS 平台都支持,官网为 http://networktools.he.net/。
实际这是一个测试网络的综合型工具,里头各种功能都有,iperf 只不过是其中一项。软件的用法也很简单,菜单列表里直接选择 iperf3。
秒表图表是设定数据汇报时间,也就是每隔 N 秒显示一次速率数据。
第二个芯片图标是设定测试数据包大小,单位可以是 K 或者 M,10G 数据包就可以直接填 10240M。
最后输入服务器端的 ip 即可进行测试:
特别要注意的是无线网络的速率是会有损耗的,不是握手显示多少速率就能跑多少。比如上图是两个手机不同的握手速率,分别为 433Mbps 和 1733Mbps,并不代表就能跑到这么高的速率。
实际能跑到的峰值速度一般是 WiFi 握手速率的 70% 左右,也就是手机单天线 433Mbps 实际能跑到 300Mbps 就算是到顶了,双天线 866Mbps 一般是 600Mbps 就封顶了。
最后还要说的是测速一概仅供参考,不要盲目迷信测速结果,认为测速成绩没跑满就是设备或路由有问题。
本文转自:https://wp.gxnas.com/10127.html
本文标题:局域网测速环境搭建——iPerf3篇
本文链接:https://www.wifilu.com/1779.html
版权声明:本站除标记为转载外,均为原创。转载请标注来源和原始链接。