前言
iPerf3是一个网络性能测试工具,可以点对点测试网络速率,包括网卡上行、下行,可以单线程、多线程测试。iPerf3适用范围很广,本文仅演示与NAS相关范围,比如NAS和电脑(或其他终端)进行点对点测试,用来判断NAS网卡与其他终端在网络方面传输速度是否达标。
很多新手玩家传统的测速方法,大部分都是直接让电脑和NAS拷贝数据,看电脑的传输速度。但这种方式有个弊端,那就是硬盘性能大概率会成为整个测速环节的瓶颈(机械硬盘最高速度才200MB/S左右,某些SSD缓外速度甚至不如机械盘),而达不到测试网络理论最高速度的准确结果,特别是使用2.5G或者万兆这类高于硬盘速度的网卡时。iPerf3是运行在内存,不经过硬盘读写,也就不会出现存储的读写性能瓶颈。
各系统使用方法
iPerf3是个多平台程序,任意平台的iPerf3既可以作为服务端,也可以作为客户端,让多平台进行互联测试。
站内提供了威联通系统专用包,和其他品牌NAS|Linux通用版(如:群晖、铁威马、爱速特|华硕、UNraid、TrueNAS、FreeNAS等),以及Windows、macOS版程序包,可以自行选择下载。
Windows
Windows的运行方式,打开iPerf3所在文件夹,按住键盘Shift
,同时在文件夹窗口空白处点击鼠标右键
,右键菜单里会出现“在终端中打开
”、“在此处打开PowerShell窗口
”、“在此处打开命令窗口
”等(Windows系统版本不同而不同),此时命令窗口将会直接切换到iPerf3所在路径。
如果是打算将Windows作为服务端,则输入.\iperf3.exe -s
;
如果是打算作为客户端,连接另一台服务端,则输入.\iperf3.exe -c 加上服务端的IP地址,完整命令如上图所示:.\iperf3.exe -c 192.168.50.5
NAS|Linux
将对应架构的二进制包上传到NAS解压待用,通过SSH链接NAS后台,使用cd
命令切换至iperf3二进制文件所在路径,执行chmod +x iperf3
命令,给予执行权限。如果作为服务端,则执行./iperf3 -s
启动,如果作为客户端,则输入./iperf3 -c 192.168.50.5
,其中192.168.50.5是另一台服务端的IP地址。
macOS
macOS有两种方式:一种是通过homebrew命令行安装,需要先安装homebrew 环境,然后执行命令行homebrew install iperf3
;另一种则是用封装好的二进制文件,本文开头站内有提供。
在macOS系统访达中,找到应用程序
→实用工具
,打开终端
,使用cd
命令切换至iperf3程序文件所在路径,执行./iperf3 -s
,启动为服务端,如果是作为客户端,则输入./iperf3 -c 192.168.50.5
,其中192.168.50.5是另一台服务端的IP地址。
实操演示
为了让小白更熟悉操作方式,和理解常用参数的含义,本次演示都是用的站内自营的千兆、2.5G、万兆网卡进行实测,有需要的玩家可以点击下方卡片购买。
Windows、macOS、Ubuntu、NAS等多平台系统,作为服务端或者客户端进行测试。
上图以macOS系统作为演示,使用-s
参数,将macOS系统作为服务端(任意平台系统都可以作为服务端);
iPerf3默认使用5201端口,如果该端口已被占用,可以用-p
来指定端口,例如图示的指定5211作为运行端口。
如果服务端使用-p
参数指定端口时,其他客户端连接服务端时,也需要-p
参数使用相同端口。
当电脑有多个网卡时,需要测试指定网卡,作为服务端时,可以添加-B
参数,来指定网卡IP,iPerf3将使用指定网卡进行测试。
使用Windows端的iPerf3来连接macOS的服务端,图示演示的是千兆网卡的速率,Transfer列都是110MB每秒,已经跑满千兆理论带宽速度,说明两端的网卡带宽都达标。
将macOS的iPerf3作为客户端,使用-c
参数指定作为iPerf3服务端NAS上的2.5G网卡IP,-B
绑定macOS本机的2.5G网卡进行测试,-t
是测试时间,默认是10秒,如果需要更长时间测试,可以自定义数值。
图示演示的2.5G网卡速率测试,Transfer列均为295MB每秒,常见2.5G网卡常规速度一般在280MB每秒左右,已经完全跑满2.5G理论带宽速度。
使用Ubuntu系统iPerf3作为客户端,使用-c
参数指定作为iPerf3服务端NAS上的10G万兆网卡IP;-B
参数绑定万兆网卡IP;iPerf3客户端默认是测试上行(服务端下行),如果需要反过来测试下行(服务端上行),那么就添加-R
参数进行翻转测试。
-P 10
,或者-u
参数使用UDP协议测试,或者使用其他工具测试。常用命令行参数
iPerf3支持更多丰富的命令行参数,提供更个性化的测试功能,版本不同参数可能略有不同,具体可以使用iperf3 -h
,来查看当前版本支持的参数。(本文参数来自威联通3.13.0版本)
服务端和客户端通用:
参数 | 说明 |
---|---|
-p, –port | 服务器侦听和客户端连接服务器的端口,客户端和服务端必须相同,默认值为 5201。 |
-f, –format [kmgtKMGT] | 报告格式:Kbits、Mbits、Gbits、Tbits |
-i, –interval # | 周期性吞吐量报告之间的秒数 |
-I, –pidfile file | 写入 PID 文件 |
-F, –file name | 发送/接收指定文件 |
-A, –affinity n/n,m | 设置 CPU 关联性 |
-B, –bind <host> [<dev>] | 绑定到与地址关联的接口(<dev>可选的,相当于 “–bind-dev <dev>”) |
–bind-dev <dev> | 绑定到具有 SO_BINDTODEVICE 的网络接口 |
-V, –verbose | 更详细的输出 |
-J, –json | 以 JSON 格式输出 |
–logfile f | 将输出发送到日志文件 |
–forceflush | 强制在每个间隔处刷新输出 |
–timestamps<=format> | 在每个输出行的开头发出时间戳(可选的 “=” 和格式字符串,格式类似于 strftime(3)) |
–rcv-timeout # | 接收数据的空闲超时(默认 120000 毫秒) |
–snd-timeout # | 未确认的 TCP 数据的超时(以毫秒为单位, 默认为系统设置) |
-d, –debug[=#] | 发出调试输出(可选的可选的 “=” 和调试级别:1-4。默认为 4 – 所有消息) |
-v, –version | 显示版本信息并退出 |
-h, –help | 显示此消息并退出 |
服务端专用:
参数 | 说明 |
---|---|
-s, –server | 在服务器模式下运行 |
-D, –daemon | 将服务器作为守护进程运行 |
-1, –one-off | 处理一个客户端连接,然后退出 |
–server-bitrate-limit #[KMG][/#] | 服务器的总比特率限制(默认为 0 = 无限制) (可选的斜杠和用于平均总数据速率的秒数间隔的数字。默认为 5 秒) |
–idle-timeout # | 在服务器闲置 # 秒后重新启动以防止阻塞(默认 – 无超时) |
–rsa-private-key-path | 用于解密身份验证凭证的 RSA 私钥的路径 |
–authorized-users-path | 包含用户凭证的配置文件的路径 |
–time-skew-threshold | 身份验证过程中服务器和客户端之间的时间偏移阈值(以秒为单位) |
客户端专用:
参数 | 说明 |
---|---|
-c, –client <host>[<dev>] | 以客户端模式运行,连接到<host>(可选,相当于 “–bind-dev <dev>”) |
-u, –udp | 使用 UDP 而不是 TCP |
–connect-timeout # | 控制连接设置的超时时间(毫秒) |
-b, –bitrate #[KMG][/#] | 目标比特率,以每秒位数为单位(0 表示无限制) (默认为 UDP 的 1 Mbit/sec,TCP 为无限制)(可选的斜杠和用于突发模式的数据包计数) |
–pacing-timer #[KMG] | 设置调节的时间,以微秒为单位(默认为 1000) |
–fq-rate #[KMG] | 启用基于公平排队的套接字调节,以位/秒为单位(仅限 Linux) |
-t, –time # | 传输时间,以秒为单位(默认为 10 秒) |
-n, –bytes #[KMG] | 要传输的字节数(代替 -t) |
-k, –blockcount #[KMG] | 要传输的块(数据包)数量(代替 -t 或 -n) |
-l, –length #[KMG] | 缓冲区的长度读取或写入(TCP 默认为 128 KB,UDP 为动态或 1460) |
–cport <port> | 绑定到特定的客户端端口(TCP 和 UDP,默认:临时端口) |
-P, –parallel # | 要运行的并行客户端流的数量 |
-R, –reverse | 以反向模式运行(服务器发送,客户端接收) |
–bidir | 以双向模式运行。客户端和服务器都发送和接收数据。 |
-w, –window #[KMG] | 设置发送/接收套接字缓冲区大小(间接设置 TCP 窗口大小) |
-C, –congestion <algo> | 设置 TCP 拥塞控制算法(仅限 Linux 和 FreeBSD) |
-M, –set-mss # | 设置 TCP/SCTP 最大分段大小(MTU – 40 字节) |
-N, –no-delay | 设置 TCP/SCTP 无延迟,禁用 Nagle 算法 |
-4, –version4 | 仅使用 IPv4 |
-6, –version6 | 仅使用 IPv6 |
-S, –tos N | 设置 IP 服务类型,范围 0-255。可以使用八进制和十六进制的常见前缀, 即 52、064 和 0x34 都表示相同的值。 |
–dscp N 或 –dscp val | 设置 IP dscp 值,范围 0-63 或符号值。数值可以以十进制、 八进制和十六进制指定(参见上面的 –tos)。 |
-L, –flowlabel N | 设置 IPv6 流标签(仅限 Linux 支持) |
-Z, –zerocopy | 使用“零拷贝”方法发送数据 |
-O, –omit N | 在 N 秒内执行预测试并省略预测试统计 |
-T, –title str | 在每个输出行的开头添加此字符串 |
–extra-data str | 在客户端和服务器的 JSON 中包含的数据字符串 |
–get-server-output | 从服务器获取结果 |
–udp-counters-64bit | 在 UDP 测试数据包中使用 64 位计数器 |
–repeating-payload | 在负载中使用重复模式,而不是随机负载(类似于 iperf2) |
–dont-fragment | 设置 IPv4 不分段标志 |
–username | 身份验证的用户名 |
–rsa-public-key-path | 用于加密身份验证凭证的 RSA 公钥的路径 |
原文链接:https://www.naslab.club/696.html
温馨提示:本文最后更新于
2024-04-30 17:41
,因系统或软件版本更新,可能会导致文章内容或资源失效,如有发现请在下方留言或联系社长Mojelly,我们将及时进行更新修复!
请登录后查看评论内容