简介
本文主要介绍内网(局域网)与外网(互联网)的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。
测速工具快速选择指南
测速工具下载地址
-
iperf
- 官网下载链接:iperf.fr/iperf-download.php
- 该链接提供了不同操作系统下的 iPerf 下载,包括 Windows、Linux 和 macOS3。
-
iperf3
- GitHub 仓库:ESnet/iperf
- iPerf3 是 iPerf 的改进版,可以从其 GitHub 仓库下载源代码,适用于多种操作系统2。
-
ntttcp
- GitHub 仓库:microsoft/ntttcp
- ntttcp 是一个网络性能测试工具,主要用于 Windows 平台,可以从其 GitHub 仓库下载源代码。
-
TCPburn
- GitHub 仓库:unixsurfer/tcpburn
- TCPburn 用于生成高负载的 TCP 流量,主要用于压力测试,可以从其 GitHub 仓库下载源代码。
-
Speedtest.net
- 官网:speedtest.net
- Speedtest.net 提供在线的网速测试服务,无需下载,直接在浏览器中使用。
-
Fast.com
- 官网:fast.com
- 由 Netflix 提供的快速互联网连接速度测试服务,同样是在线使用,无需下载。
-
JPerf
- SourceForge 下载:jperf.sourceforge.net
- JPerf 是 iPerf 的图形界面版本,适合不熟悉命令行的用户,可以从 SourceForge 下载。
注意:Github仓库或部分网址需要魔法网络进入下载
目录
简介
测速工具快速选择指南
测速工具下载地址
测速工具对比指南
iperf
iperf3 全平台推荐
JPerf
Ntttcp Windows平台推荐
Netperf
TCPburn
Speedtest.net 等在线测速工具
测速工具参数对比
iperf3
通用参数(服务端/客户端共用)
服务端专用参数
客户端专用参数
常见错误与注意事项
高级功能
使用帮助
JPerf
发送端
接收端
ntttcp
核心参数
映射参数 (-m)
使用帮助
Netperf
全局选项(Global options)
(1)全局命令行参数 [global options]
(2)局部可选参数 [test options]
使用帮助
TCPburn
1. 全局配置
2. 网络环境优化参数
3. 辅助工具配置
注意事项
使用帮助
iperf3使用实例参考
测速工具对比指南
以下是一些常见的网络测速工具,包括它们的应用场景、特点、支持的操作系统以及开发背景:
iperf
应用场景:用于测量网络带宽和网络质量,特别是在网络调试和性能评估时。
特点:支持TCP和UDP,可以测试单个数据流的上传和下载速度。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由NLANR/DAST开发,现在是开源项目,由社区维护。
iperf3
应用场景:与iperf类似,但iperf3是iperf的改进版,提供了更精确的测量。
特点:改进了性能和准确性,简化了命令行参数。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由ESnet开发,是iperf的后续版本。
JPerf
应用场景:作为iperf的图形界面版本,适合不熟悉命令行的用户。
特点:提供直观的图形界面,简化了iperf的使用。
操作系统:跨平台,支持Windows、Linux、macOS。
开发背景:由社区开发,基于iperf。
Ntttcp
应用场景:用于在Windows平台上进行网络性能测试,特别是在大型网络环境中。
特点:专为Windows设计,支持多线程,可以模拟高并发网络流量。
操作系统:Windows。
开发背景:由微软开发,用于内部网络性能测试。
Netperf
应用场景:用于评估网络服务的性能,如TCP、UDP、SCTP等。
特点:提供详细的网络性能数据,支持多种协议。
操作系统:跨平台,支持Linux、Unix、Windows(需要自行编译)。
开发背景:由HP实验室开发,现在是开源项目。
TCPburn
应用场景:用于生成高负载的TCP流量,用于压力测试。
特点:可以创建大量的TCP连接,用于测试网络设备的极限性能。
操作系统:主要支持Linux。
开发背景:由社区开发,用于网络性能测试。
Speedtest.net 等在线测速工具
应用场景:用于快速检测4G互联网连接速度,适合普通用户。
特点:用户界面友好,操作简单,提供全球服务器选择。
操作系统:跨平台,通过Web浏览器访问。
开发背景:由Ookla开发,是一个广泛使用的在线速度测试服务。
这类测速工具较多且衍生出各种不同的测速类型
测速工具参数对比
iperf3
通用参数(服务端/客户端共用)
参数 | 说明 |
---|---|
-p, --port | 指定服务端监听的端口号或客户端连接的端口号(默认:5201) |
-f, --format | 带宽报告单位:k (Kbits)、m (Mbits)、K (KBytes)、M (MBytes)等 |
-i, --interval | 定期带宽报告的间隔时间(秒) |
-B, --bind | 绑定到特定网络接口(IP或网卡名称) |
-V, --verbose | 输出详细日志 |
-J, --json | 以JSON格式输出结果 |
--logfile | 将输出保存到日志文件 |
-d, --debug | 输出调试信息 |
-v, --version | 显示版本信息 |
-h, --help | 显示帮助信息 |
服务端专用参数
参数 | 说明 |
---|---|
-s, --server | 以服务端模式运行 |
-D, --daemon | 以守护进程(后台)模式运行 |
-I, --pidfile | 将进程ID写入指定文件 |
-1, --one-off | 处理一个客户端连接后自动退出 |
客户端专用参数
参数 | 说明 |
---|---|
-c, --client | 以客户端模式运行,需指定服务端地址(如 -c 192.168.1.100 ) |
-u, --udp | 使用UDP协议(默认TCP) |
-b, --bandwidth | 目标带宽(支持K/M/G 后缀,如 1G ),UDP默认1Mbit,TCP无限制 |
-t, --time | 测试持续时间(秒,默认10秒) |
-n, --bytes | 传输的总字节数(替代 -t ,如 -n 100M ) |
-k, --blockcount | 传输的数据块(包)数量(替代 -t 或 -n ) |
-l, --len | 缓冲区长度(TCP默认128KB,UDP默认8KB) |
--cport | 绑定客户端端口(默认随机端口) |
-P, --parallel | 并行连接的客户端流数量(用于多线程测试) |
-R, --reverse | 反向模式(服务端发送,客户端接收) |
-w, --window | 设置TCP窗口大小/套接字缓冲区大小 |
-M, --set-mss | 设置TCP最大段大小(MSS = MTU - 40字节) |
-N, --no-delay | 禁用Nagle算法(降低延迟) |
-4, --version4 | 仅使用IPv4 |
-6, --version6 | 仅使用IPv6 |
-S, --tos | 设置IP服务类型(ToS) |
-Z, --zerocopy | 使用零拷贝技术发送数据(提升性能) |
-O, --omit | 忽略前N秒的数据(用于排除初始波动) |
-T, --title | 在每行输出前添加前缀字符串 |
--get-server-output | 从服务端获取测试结果 |
--udp-counters-64bit | UDP测试包中使用64位计数器 |
常见错误与注意事项
-
参数错误:
-
iperf3: parameter error - must either be a client (-c) or server (-s)
原因:未指定运行模式(服务端或客户端)。
解决:必须添加-s
(服务端)或-c <IP>
(客户端)。
-
-
带宽单位混淆:
-
-b 1G
表示1Gbit/s,若需1GByte/s需写-b 8G
(1 Byte = 8 bits)。
-
-
UDP丢包与带宽限制:
-
UDP默认带宽较低(1Mbit),需显式指定
-b
参数。
-
-
反向模式(-R):
-
用于测试上行/下行带宽时,服务端需支持反向模式。
-
-
零拷贝(-Z):
-
需内核支持,可能需root权限。
-
高级功能
-
JSON输出(-J):
便于脚本解析测试结果,示例:iperf3 -c 192.168.1.100 -J > result.json
-
多流测试(-P):
模拟多用户并发,测试网络并发处理能力。 -
绑定CPU/网卡(-B):
在多网卡服务器中指定测试使用的网卡,如-B eth1
。
使用帮助
JPerf
图形化中文操作翻译帮助
发送端
接收端
ntttcp
核心参数
-
模式选择
-
-s
:作为发送端(sender)运行 -
-r
:作为接收端(receiver)运行 -
-l <Length>
:设置缓冲区长度-
默认:TCP为64KB,UDP为128字节
-
-
-n <Number>
:设置缓冲区数量(默认20,000个) -
-p <port>
:设置基准端口号(默认5001) -
-sp
:同步数据端口(需所有实例的-p
参数相同) -
-ns
:禁用同步(发送端立即开始传输,无需与接收端握手)
-
-
超时与性能调优
-
-to <timeout>
:I/O超时时间(毫秒,默认600,000)-
设为
0
表示无限等待(可能导致工具挂起)
-
-
-a <outstanding I/O>
:未完成I/O操作数(默认2) -
-rb <size>
:接收缓冲区大小(默认-1,使用OS动态分配) -
-sb <size>
:发送缓冲区大小(默认0或-1,依赖-a
参数) -
-ndl
:启用TCP_NODELAY
(禁用Nagle算法)
-
-
协议与传输选项
-
-u
:使用UDP协议(默认TCP) -
-w
:使用WSARecv
/WSASend
(Windows异步I/O) -
-rt
:启用往返模式(Round-Trip) -
-d
:启用数据验证 -
-6
:使用IPv6地址 -
-wa
:设置WAIT_ALL
标志(接收数据时等待完整缓冲区)
-
-
高级功能
-
-nic <IP>
:指定发送端使用的网卡IP -
-xml [file]
:保存XML格式结果(默认xml.txt
) -
-na <NUMA node>
:绑定进程到指定NUMA节点 -
-hpt
:隐藏每线程统计信息 -
-uso <size>
:启用UDP分段卸载(指定最大消息大小) -
-uro
:启用UDP接收合并 -
-uc
:使用非连接型UDP套接字(sendto
/recvfrom
)
-
-
性能测量与限制
-
-t <Runtime>
:测试运行时间(秒) -
-cd <Cool-down>
:冷却时间(秒) -
-wu <Warm-up>
:预热时间(秒) -
-thr <KB/s>
:限制每个线程的发送吞吐量 -
-ps <ms>
:发送间隔(5-1000毫秒,仅单线程同步模式) -
-lm
:启用延迟测量(可能影响性能)
-
-
调试与输出
-
-v
:启用详细输出模式 -
-nsb
:禁用标准输出缓冲(实时刷新日志) -
-jm [file]
:抖动测量(接收端需指定输出文件)
-
-
其他选项
-
-hv
:使用Hyper-V虚拟网络(地址需为VM GUID) -
-qos <0-5>
:设置QoS优先级(0=尽力而为,5=最高) -
-icp <threads>
:设置I/O完成端口的最大活动线程数 -
-cfi
:使用空闲CPU周期计算CPU利用率(需Vista+系统)
-
映射参数 (-m
)
指定线程、CPU亲和性和目标地址的映射关系:
格式:<线程数>,<CPU编号>,<接收端地址>
示例:
-
-m 4,0,1.2.3.4
:在CPU 0上启动4个线程,连接至1.2.3.4
-
-m 2,*,contoso
:启动2个线程(无CPU亲和性),连接至contoso
使用帮助
Netperf
全局选项(Global options)
-a send,recv
:设置本地发送和接收缓冲区的对齐方式。-A send,recv
:设置远程发送和接收缓冲区的对齐方式。-B brandstr
:指定在简略输出中显示的字符串。-c [cpu_rate]
:报告本地 CPU 使用率。-C [cpu_rate]
:报告远程 CPU 使用率。-d
:增加调试输出。-D time,[units]
:至少每隔指定的时间间隔显示中间结果,使用指定的单位作为每秒单位的初始猜测。负值将大量使用系统的计时功能。-f G|M|K|g|m|k
:设置输出单位。-F lfill[,rfill]
:用指定文件的数据预填充缓冲区。-h
:显示帮助信息。-H name|ip,fam
:指定目标机器和/或本地 IP 及其地址族。-i max,min
:指定最大和最小迭代次数(默认为 15,1)。-I lvl[,intvl]
:指定置信水平(95 或 99)和置信区间百分比(默认为 10%)。-j
:保留额外的计时统计数据。-l testlen
:指定测试持续时间(秒)或传输的字节数。-L name|ip,fam
:指定本地 IP|名称及其地址族。-o send,recv
:设置本地发送和接收缓冲区的偏移量。-O send,recv
:设置远程发送和接收缓冲区的偏移量。-n numcpu
:设置用于计算 CPU 利用率的处理器数量。-N
:不建立控制连接,只执行“发送”端操作。-p port,lport
:指定 netserver 端口号和/或本地端口号。-P 0|1
:不显示/显示测试标题。-r
:允许在结果上达到置信度。-s seconds
:测试设置和开始之间的等待秒数。-S
:在数据连接上设置 SO_KEEPALIVE。-t testname
:指定要执行的测试。-T lcpu,rcpu
:请求 netperf/netserver 绑定到本地/远程 CPU。-v verbosity
:指定详细级别。-W send,recv
:设置发送和接收缓冲区的数量。-v level
:设置详细级别(默认为 1,最小为 0)。-V
:显示 netperf 版本并退出。-y local,remote
:设置套接字优先级。-Y local,remote
:设置 IP_TOS(使用十六进制值)。-Z passphrase
:设置并传递给 netserver 一个密码。
(1)全局命令行参数 [global options]
参数 | 说明 |
---|---|
-H host | 指定远端运行netserver的server IP地址 |
-l testlen | 指定测试的时间长度(秒) |
-t testname | 指定进行的测试类型(包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR)。 |
(2)局部可选参数 [test options]
参数 | 说明 |
---|---|
-s size | 设置本地系统的socket发送与接收缓冲大小 |
-S size | 设置远端系统的socket发送与接收缓冲大小 |
-m size | 设置本地系统发送测试分组的大小,测试PPS时值为1。测试BPS时为1400。 |
-M size | 设置远端系统接收测试分组的大小 |
-p port | 设置测试连接Server端的端口 |
-D | 对本地与远端系统的socket设置TCP_NODELAY选项 |
-r req,resp | 设置request和reponse分组的大小 |
使用帮助
TCPburn
1. 全局配置
参数/配置项 | 说明 |
---|---|
-m | 指定每个实例模拟的并发连接数,例如 -m 3000000 表示单个实例模拟 300 万连接。 |
IP 地址池分配 | 通过 IP 欺骗模拟多个客户端,需指定内网 IP 地址段(如 192.168.100.0/24 )。 |
端口范围 | 默认使用端口 32768~65535 ,每个 IP 地址可分配约 3.2 万端口资源。 |
内存分配 | 每连接约占用 4KB 内存,模拟 2000 万连接需至少 3GB 内存。 |
路由设置 | 服务端需配置静态路由,将响应流量导向测试主机(如 route add -net 192.168.100.0/24 gw 测试主机IP )。 |
2. 网络环境优化参数
配置项 | 说明 |
---|---|
禁用 IP conntrack | 避免内核连接跟踪消耗资源:iptables -t raw -A PREROUTING -p tcp --dport [端口] -j NOTRACK |
调整文件句柄限制 | 提升系统支持的最大连接数:ulimit -HSn 1000000 (需修改 /etc/security/limits.conf 永久生效) |
关闭 rp_filter | 防止反向路径过滤干扰 IP 欺骗:sysctl -w net.ipv4.conf.all.rp_filter=0 |
内核参数优化 | 调整 TCP 缓冲区、最大文件打开数等(如 net.core.somaxconn 、fs.file-max )。 |
3. 辅助工具配置
TCPBurn 依赖 intercept 组件处理响应,需在助手服务器配置:
-
黑洞模式:拦截响应但不处理,仅传递头信息给 TCPBurn。
-
专用通信信道:通过紫色箭头(特殊信道)传递响应头,支持动态调整请求属性1。
注意事项
-
IP 欺骗限制:需在内网环境中使用,避免公网路由问题。
-
多实例扩展:通过多台虚拟机运行 TCPBurn 实例,叠加并发量(如 7 台虚拟机各模拟 300 万连接)。
-
内核兼容性:确保内核版本支持高并发(如 Linux 3.10+)
使用帮助
-
服务端路由设置:
route add -net 192.168.100.0 netmask 255.255.255.0 gw 测试主机IP
-
启动 TCPBurn:
tcpburn -i [pcap文件] -H 目标服务器IP -p 目标端口 -m 3000000
-
-i
:指定抓包生成的 pcap 文件(包含请求记录)。 -
-H
:目标服务器 IP。 -
-p
:目标服务端口(如 Nginx 的 8080)。
-
Speedtest.net
基本使用方法:进入主页点击测速按钮,即可完成当前移动数据或有线/无线(互联网)外网网速的测速,最后查看结果。
https://www.speedtest.cn/
iperf3使用实例参考
其他工具使用方法可根据类推,这里不再赘述
文章地址:iperf3网络带宽性能测试工具 局域网网络最大带宽高阶教程-CSDN博客