NTTTCP.exe(Network TCP Test Tool) 是一个微软提供的网络性能测试工具,通常用于测试和诊断 TCP/IP 网络连接的性能。它可以用来测量网络带宽、延迟、吞吐量等指标,适用于数据中心、网络管理员、开发人员等场景中,用于验证网络性能和调优。NTttcp + Perfmon 组合使用
使用 NTTTCP 测试 VM 网络吞吐量 | Microsoft Learn
ntttcp 的标准官方英文全称为 Network TCP Test Tool,部分场景下也会扩展为 Network Throughput TCP Test Tool,突出其核心的网络吞吐量测试能力。
是微软官方开发的网络性能基准测试工具,v5.40 是其正式稳定版本,主要用于测试 TCP/UDP 网络的吞吐量、延迟、丢包率等核心性能指标,支持 Windows 全系列桌面及服务器系统,目前已在 GitHub 上开源。
ntttcp(Network TCP Test Tool) v5.40 帮助文档完整翻译 + 报错解析
一、基础信息
ntttcp /? 输出帮助参数,底部出现报错:main failed: error in parameters二、全部参数中文翻译(收发端区分标注)
基础角色与端口
| 参数 | 作用 | 默认值 | 补充说明 |
|---|---|---|---|
-s |
作为发送端(客户端) | - | 主动发起流量 |
-r |
作为接收端(服务端) | - | 被动接收流量 |
-l |
单缓冲区长度 | TCP:64K / UDP:128 | 单位字节 |
-n |
缓冲区总数量 | 20K | 并发缓冲块 |
-p <端口号> |
指定监听 / 连接端口 | 5001 | 多实例可同端口配合-ns |
-ns |
无同步握手 | - | 发送端立刻发包,无需等待 TCP 握手完成 |
超时、并发、时长控制
| 参数 | 作用 | 默认值 | 补充说明 |
|---|---|---|---|
-to <毫秒> |
IO / 线程阻塞超时 | 600000(10 分钟) | 设 0 = 无限等待,程序可能卡死 |
-a <并发连接数> |
异步 IO 并发数量 | 16 | Windows IOCP 异步连接 |
-rb <字节> |
接收端缓冲区大小 | -1 | 负数 = 系统默认;0 = 关闭系统缓冲 |
-sb <字节> |
发送端缓冲区大小 | -1 | 负数 = 系统默认;0 = 关闭系统缓冲 |
-nd |
关闭 TCP_NODELAY | 开启 Nagle 算法 | 关闭后合并小包,降低 CPU |
-u |
使用 UDP 协议 | 仅 TCP 默认 | ntttcp UDP 功能有限,生产优先 TCP |
-w |
WSARecv/WSASend 异步发送模式 | - | 高性能异步 IO |
-V |
打印版本信息 | - | |
-t <秒> |
测试持续时长 | 3h(搭配-n则失效) |
最大测试时长 |
-cd <秒> |
测试结束后冷却等待时长 | - | |
-wu <秒> |
预热时长 | - | 预热后再统计正式带宽 |
-6 |
启用 IPv6 | 默认 IPv4 | |
-nic <IP> |
绑定指定网卡 IP(仅发送端) | - | 多网卡服务器指定出口网卡 |
输出、日志、结构化文件
| 参数 | 作用 | |
|---|---|---|
-xml <文件路径> |
输出 XML 结构化报告,默认xml.txt |
|
-ma <NUMA节点号> |
NUMA 亲和绑定,进程绑定至指定 CPU 节点;填*不做亲和绑定 |
|
-hpt |
高优先级线程调度 | 提升进程 CPU 调度优先级 |
-uso <字节> |
UDP 分段卸载 GSO 最大报文长度(仅 UDP 发送端) | |
-uro |
启用 UDP 接收合并 GRO | |
-x <包数组大小> |
批量发包数组尺寸,默认 1 | |
-hv |
适配 Hyper-V 虚拟机 GUID 网卡 | |
-nsb |
无缓冲输出,日志实时刷新不缓存 | |
-thr <Mbps> |
单线程限速,单位 Mbps | |
-brn <CPU> |
绑定线程至指定 CPU 核心 | |
-lm |
开启延迟测量,调用 QueryPerformanceCounter 高精度计时 | |
-icp <并发线程数> |
IO 完成端口最大并发线程;0 = 系统自动 | |
-cfi |
采集 CPU 占用率,需管理员权限运行 | |
-esm <秒> |
统计端到端延迟采样间隔 | |
-qos <0~5> |
QoS 流量优先级标记:
|
|
-jm <文件> |
输出抖动测量日志,发送端不可指定文件,仅接收端生效 | |
-ps <毫秒> |
同步发包间隔;仅单线程同步模式可用,范围 5~10000ms | |
-m <映射三元组> |
线程映射配置,格式(线程数,CPU核心,目标IP),多组用空格分隔 |
三、底部报错解析:ERROR: main failed: error in parameters
报错含义
高频触发原因(ntttcp(Network TCP Test Tool) 最常见)
-m映射参数格式错误-m要求严格三元组格式(线程数,CPU编号,服务端IP),括号、逗号、空格写错直接报错;示例合法写法:
# 4线程,绑定CPU0,连接192.168.1.100:5001
ntttcp -s -m "(4,0,192.168.1.100)" -t 60
- 参数互斥冲突
-ps同步发包间隔 仅单线程模式可用,搭配多线程-m会冲突报错;-jm抖动日志仅接收端-r可用,发送端-s携带-jm 文件直接参数非法。
- 数值越界 / 非法值
-qos仅允许 0~5,输入 6 / 负数报错;-ps毫秒必须 5~10000,超出范围报错;-brn、-maCPU 编号超出服务器实际核心数。
- 参数缺少配套主体
如仅写
-nic 192.168.1.5不加-s发送端标识;-thr限速无测试时长-t。
排查解决步骤
- 先简化最简测试命令,确认基础可用:
# 接收端(服务端)
ntttcp -r -t 30
# 发送端(客户端,本机测试)
ntttcp -s 127.0.0.1 -t 30
- 逐个追加参数,每加一个执行一次,定位出错参数;
- 核对
-m三元组括号、逗号格式,不要遗漏括号; - 区分收发端专属参数:
-nic/-uso/-jm分收发端限制。
四、ntttcp(Network TCP Test Tool) 关键参数实操示例
示例 1:基础 TCP 带宽测试(本机 30 秒)
ntttcp -r -t 30
ntttcp -s 127.0.0.1 -t 30
示例 2:多线程 NUMA 绑定、输出 XML 报告
ntttcp -s 10.0.0.100 -m "(8,2,10.0.0.100)" -t 60 -xml report.xml -ma 0
示例 3:限制单线程带宽 1000Mbps,预热 5 秒
ntttcp -s 10.0.0.100 -t 60 -wu 5 -thr 1000
示例 4:IPv6、绑定指定网卡接收测试
ntttcp -r -6 -nic 2409:xxxx::xxxx -t 60
五、与 iperf3 核心参数差异补充
- ntttcp 独有:NUMA 亲和
-ma、CPU 线程绑定-brn、Hyper-V 适配-hv、Windows IOCP 异步优化; - iperf3 独有:完整 UDP 抖动 / 丢包统计、GSO/GRO 硬件卸载观测、跨 macOS/Linux 原生支持;
- ntttcp 短板:无原生 UDP 抖动统计、无内置 JSON 输出,仅 XML / 文本日志。

iperf-3.21 vs ntttcp v5.40 完整区别对比
一、基础信息总览
| 项目 | iperf3 3.21(esnet/iperf) | ntttcp v5.40(microsoft/ntttcp) |
|---|---|---|
| 开发主体 | 美国能源部 ESnet 开源项目 | 微软 Azure 云团队自研工具 |
| 发布时间 | 2026-04-09 | 2024-05-14 |
| 核心定位 | 通用跨平台 TCP/UDP 带宽、抖动、丢包基准测试 | Windows 原生高性能 TCP 吞吐量压测工具(云服务器专用) |
| 授权协议 | BSD 三条款开源 | MIT 开源 |
| 官方主力平台 | Linux、macOS(官方正式支持) | Windows(原生优先,附带独立 Linux 分支) |
| Windows 运行方式 | 依赖 Cygwin 兼容层,非原生 Win32 API | 纯原生 Win32 二进制,直接调用 Windows 网络栈 |
| 互通性 | iperf3 客户端 ↔ iperf3 服务端(不兼容 ntttcp) | ntttcp Windows ↔ ntttcp Linux;无法和 iperf3 互通 |
二、两大工具核心能力差异
1. iperf3 3.21 核心能力(通用全协议测试)
- 同时支持 TCP + UDP 双协议
- TCP:测最大带宽、滑动窗口、RTT;
- UDP:自定义发包速率、统计抖动 (jitter)、真实丢包率;
- 完整协议调参:MSS、拥塞控制、多并行流 (-P)、零拷贝、Nagle 开关;
- 输出格式:标准文本 + JSON 结构化输出,便于自动化采集;
- 3.21 新版关键增强(Linux/macOS 专属)
- Linux:网卡 GSO/GRO 硬件卸载识别,精准评估网卡 offload 性能;
- macOS:支持
--bind-dev绑定指定网卡、读取原生tcp_info完整 TCP 链路指标; - 线程安全修复、UDP 丢包统计 BUG、除零崩溃、服务端详细错误上报;
- Linux 编译自动执行
ldconfig,systemd 服务加固;
- 适用场景:机房跨系统混合测试(Linux↔macOS、异构服务器)、音视频 UDP 抖动测试、通用网络基线巡检。
2. ntttcp(Network TCP Test Tool) v5.40 核心能力(Windows 原生 TCP 压测)
- 仅聚焦 TCP 协议,无 UDP 测试能力;
- 深度适配 Windows 内核网络栈(IOCP、RIO、网卡 RSS、SMB 直通),Azure 云虚拟机官方测速标准工具;
- v5.40 版本仅 2 项更新:
- 更换全新编译流水线;
- 新增 arm64 Windows 原生二进制(适配 ARM 服务器、Surface);
- 优势:多并发长连接、百万连接压测、精准统计 Windows CPU 占用、网卡吞吐量;
- 短板:不支持 UDP、无抖动 / 丢包指标、无 JSON 标准化输出;
- 适用场景:Windows Server/Windows 云主机内部吞吐压测、Azure 虚拟机带宽验收、Windows 网卡硬件性能调优。
三、平台兼容性深度区别
iperf3 3.21
- 官方一等公民:Linux、macOS
完整支持网卡卸载、TCP 内核参数读取、多线程稳定,所有新功能优先在 Linux/macOS 落地;
- Windows 为兼容层移植(Cygwin)
- 不调用 Windows 原生 IOCP;
- 微软官方明确不推荐 Windows 生产环境使用,存在缓冲区限制、性能失真、版本滞后问题;
- 3.21 新特性(GSO、mac 绑定网卡)Windows 完全无法使用;
- 额外支持:FreeBSD、Android 源码编译。
ntttcp v5.40 (Network TCP Test Tool)
- Windows x86/x64/ARM64 全原生
无兼容层,直接调用 Win32、Winsock、IOCP,测试结果贴合真实 Windows 业务性能;
- Linux 为独立分支代码,与 Windows 端可互通,但功能裁剪;
- 不支持 macOS、BSD、移动端系统。
四、关键底层技术差异
- 网络 API 调用
- iperf3:POSIX Socket 跨平台标准接口,Windows 靠 Cygwin 模拟;
- ntttcp:Windows 专用 IOCP 异步 IO,最大化利用 Windows 异步网络模型;
- 网卡硬件卸载支持
- iperf3 3.21:Linux 完整识别 GSO/GRO,可观测卸载对 CPU 的降低效果;Windows 无此功能;
- ntttcp:原生识别 Windows RSS、TOE、RSC 网卡卸载,但无 GSO/GRO 精细化统计;
- 线程模型
- iperf3:POSIX 线程,3.21 修复异步取消导致的卡死、竞态崩溃;
- ntttcp:Windows 原生线程池,专为高并发长连接优化;
- 输出标准化
- iperf3:内置 JSON,自动化监控脚本友好;
- ntttcp:仅纯文本日志,无结构化输出,自动化采集难度更高。
五、生产选型场景区分
选 iperf3 3.21 的场景
- 机房混合服务器:Linux、macOS、少量 Windows;
- 需要 UDP 业务测试(直播、语音、实时传输);
- 需要 JSON 自动化监控、长期基线对比;
- 需要测试网卡 GSO/GRO 分段卸载性能;
- 开发环境、异构设备网络调优。
选 ntttcp(Network TCP Test Tool) v5.40 的场景
- 纯 Windows Server / Azure Windows 云服务器集群;
- 仅做 TCP 大吞吐量、高并发连接压测;
- 需要贴合 Windows 真实业务性能(Cygwin 会造成性能损耗);
- ARM64 Windows 服务器测速;
- 微软云官方带宽验收、Windows 网卡 RSS/TOE 硬件调优。
六、版本迭代侧重点对比
- iperf3 3.21 迭代方向
跨平台功能补齐、TCP 内核指标读取、UDP 统计修复、线程稳定性、Linux 系统服务适配,兼顾运维与开发调试需求;
- ntttcp v5.40 (Network TCP Test Tool) 迭代极简
仅完善编译流水线、补齐 ARM64 二进制,核心测速逻辑长期无大更新,定位稳定轻量化 Windows 专用工具,功能迭代节奏很慢。
七、核心短板总结
- iperf3 短板:Windows 平台兼容性差、性能不准、新功能 Windows 无法使用;
- ntttcp(Network TCP Test Tool) 短板:无 UDP 测试、不支持 macOS / 类 Unix、无结构化 JSON 输出、跨 Linux/macOS 异构测试不可用。
NTTTCP.exe(Network TCP Test Tool) 是一个微软提供的网络性能测试工具,通常用于测试和诊断 TCP/IP 网络连接的性能。它可以用来测量网络带宽、延迟、吞吐量等指标,适用于数据中心、网络管理员、开发人员等场景中,用于验证网络性能和调优。
NTTTCP.exe 的基本信息
- 功能:
NTTTCP.exe用于在两台计算机之间执行 TCP 和 UDP 的负载测试,帮助测试计算机之间的网络带宽和吞吐量。它可以在局域网(LAN)或者广域网(WAN)中测试网络性能。 - 协议支持:支持 TCP 和 UDP 两种协议,可以用来模拟不同类型的网络流量。
- 用途:通常用于检查网络的实际吞吐量和性能,评估网络连接的健壮性,发现潜在的瓶颈问题,进行压力测试和性能优化等。
如何使用 NTTTCP
-
下载和安装:
NTTTCP.exe并不包含在 Windows 默认安装中,但它可以从微软的官网下载或者通过其他渠道获得。它通常作为一个命令行工具运行。 -
启动命令:运行
NTTTCP需要在命令行中输入特定的命令和参数。常见的用法包括:bashCopy Codentttcp -s # 作为服务器端启动 ntttcp -c # 作为客户端启动-s:作为服务器端启动,等待客户端连接。-c:作为客户端启动,连接到服务器端并开始测试。-t:指定测试时间长度,例如-t 30表示进行 30 秒的测试。-l:设置测试时使用的 TCP 窗口大小。-p:设置要使用的端口。
示例:
- 在一台计算机上运行
NTTTCP.exe作为服务器:bashCopy Codentttcp -s -p 5001 - 在另一台计算机上运行
NTTTCP.exe作为客户端,连接到服务器并执行测试:bashCopy Codentttcp -c <服务器 IP 地址> -p 5001
-
性能测试:客户端启动后,会连接到服务器,测试期间会传输大量数据。通过测量这些数据的传输速率,您可以看到网络的带宽使用情况、吞吐量、延迟等指标。
NTTTCP 的常见用途
-
带宽测试:它可以帮助你测试局域网或广域网的实际带宽,检测网络性能,查看是否满足预期的网络速度。
-
压力测试:它可以用来模拟高负载网络流量,查看网络在高负载情况下的表现。通过调节流量大小和测试时长,网络管理员可以检测网络的最大吞吐量和压力极限。
-
诊断网络瓶颈:通过不同的配置和场景,
NTTTCP可以帮助定位网络传输中的瓶颈,如 CPU 限制、硬件性能、路由配置等。 -
调优网络设置:通过连续的测试,您可以发现网络中的配置问题,如 MTU、窗口大小、TCP 协议栈配置等。
为什么使用 NTTTCP
- 高精度:
NTTTCP.exe是微软为网络性能测试专门设计的工具,因此它提供了较为准确的测试结果,可以精确地衡量网络的带宽、吞吐量等参数。 - 多种配置选项:它支持多种配置和测试参数,包括不同的协议(TCP 和 UDP)、测试持续时间、数据包大小、TCP 窗口大小等,可以满足不同的测试需求。
- 跨平台兼容性:虽然 NTTTCP 主要用于 Windows,但也可以通过一些适配器和方法在其他平台(如 Linux)上运行。
NTTTCP.exe 是一个强大的网络性能测试工具,特别适用于 IT 管理员和网络工程师,帮助他们评估和优化网络性能。通过提供详细的带宽、吞吐量和延迟等指标,它能帮助诊断和定位网络问题,确保网络的最佳运行状态。
NTTTCP.exe 是一个用于网络性能测试的命令行工具,它通过 TCP 和 UDP 协议进行数据传输的测试,以测量网络带宽、吞吐量、延迟等关键性能指标。NTTTCP.exe 提供了多种命令选项和参数来进行不同类型的测试。以下是 NTTTCP.exe 命令的功能分类及常见选项。
1. 基础功能
- 服务器模式 (-s)
启动NTTTCP作为服务器端,等待客户端的连接并开始传输测试数据。bashCopy Codentttcp -s - 客户端模式 (-c)
启动NTTTCP作为客户端,连接到指定的服务器并进行数据传输测试。bashCopy Codentttcp -c <Server IP Address>
2. 性能测试相关功能
- 指定协议 (-p)
用于指定所使用的协议。可以选择 TCP 或 UDP(默认是 TCP)。- TCP:
-p tcp - UDP:
-p udp
bashCopy Codentttcp -c <Server IP Address> -p udp - TCP:
- 设置测试时长 (-t)
指定测试的时长,单位是秒。默认是 10 秒。bashCopy Codentttcp -c <Server IP Address> -t 30 # 进行 30 秒的测试
3. 性能调优相关功能
- 设置 TCP 窗口大小 (-l)
设置 TCP 窗口大小。通过调整窗口大小,可以模拟不同的网络条件,优化性能。bashCopy Codentttcp -c <Server IP Address> -l 128K # 设置 TCP 窗口大小为 128KB - 指定连接的端口 (-p)
通过该参数指定 TCP/UDP 使用的端口。可以指定多个端口进行测试。bashCopy Codentttcp -s -p 5001 ntttcp -c <Server IP Address> -p 5001
4. 数据传输控制相关功能
- 指定每个连接的发送数据量 (-b)
用于设置每个连接发送的数据量,通常用于测试不同数据量下的性能。bashCopy Codentttcp -c <Server IP Address> -b 64K # 每个连接发送 64KB 的数据 - 指定并发连接数 (-n)
指定客户端的并发连接数,用于模拟高并发负载。bashCopy Codentttcp -c <Server IP Address> -n 10 # 启动 10 个并发连接进行测试
5. 多线程与多进程相关功能
- 使用多个线程 (-T)
设置测试时的线程数,通常用于在多核 CPU 上进行测试,以模拟更高的负载。bashCopy Codentttcp -c <Server IP Address> -T 4 # 启动 4 个线程进行并行测试 - 多进程测试 (-a)
启用多进程来执行测试。这对于高性能测试尤为重要,可以增加测试的并行度。bashCopy Codentttcp -c <Server IP Address> -a
6. 输出与结果格式化功能
- 输出详细测试信息 (-v)
输出详细的测试信息,包括每个连接的传输速率、延迟等。bashCopy Codentttcp -c <Server IP Address> -v - 保存结果到文件 (-o)
将测试结果保存到指定的文件中,以便后续分析。bashCopy Codentttcp -c <Server IP Address> -o result.txt
7. 其他功能
- 指定测试协议的端口范围 (-P)
可以指定端口范围,进行端口扫描或多端口的性能测试。bashCopy Codentttcp -s -P 5001-5050 - 测试 UDP 的负载情况 (-u)
-u参数用于测试 UDP 协议的性能,它可以测试 UDP 连接的吞吐量。bashCopy Codentttcp -c <Server IP Address> -u - 指定发送数据的速率 (-r)
通过-r参数,用户可以设置每秒发送的数据量(速率)。这对测量网络带宽非常有用。bashCopy Codentttcp -c <Server IP Address> -r 100M # 每秒发送 100MB 数据
NTTTCP.exe 提供了许多功能选项,帮助用户对网络进行全面的性能测试。它支持协议选择、测试时长控制、并发连接数设置、TCP 窗口大小调节、线程/进程控制等功能,以满足不同的网络测试需求。通过这些功能,用户可以有效评估网络的带宽、吞吐量、延迟等重要指标,从而帮助定位网络瓶颈或优化网络配置。
NTTTCP.exe 是一个广泛应用于网络性能测试的工具,尤其适用于高性能网络评估、带宽测量、吞吐量测试以及负载测试等场景。以下是一些典型的应用场景:
1. 带宽和吞吐量测试
NTTTCP.exe 被广泛应用于测量网络连接的带宽和吞吐量,尤其是在数据中心、企业网络和互联网连接的优化过程中。通过模拟不同的数据流量,测试网络链路是否能承载所需的带宽。
- 应用场景:
- 数据中心与云服务之间的带宽评估。
- 互联网服务提供商(ISP)为客户提供带宽服务时进行的吞吐量测试。
- 确保远程办公室、分支机构之间的网络链路具有足够的带宽。
2. 网络设备性能评估
在网络硬件部署或升级时,NTTTCP.exe 可以用于测试各种网络设备(如路由器、交换机、防火墙等)的性能。它帮助确认设备能在高负载下稳定运行,保证设备在多用户连接的情况下提供最佳的网络性能。
- 应用场景:
- 测试新部署的网络设备(如交换机、路由器)是否能够承受预期的负载。
- 测试防火墙或其他网络安全设备对数据流量的处理能力。
- 在网络设备升级后,验证设备在高流量环境中的表现。
3. 服务器性能与负载测试
在服务器部署后,可以使用 NTTTCP.exe 来测试服务器的网络连接性能,模拟多个并发用户进行数据传输,测试服务器的负载能力、响应速度和稳定性。
- 应用场景:
- 测试 Web 服务器、文件服务器和数据库服务器的网络吞吐量。
- 测试大型应用程序、云计算平台或虚拟化环境的网络性能。
- 对于高并发的服务(如流媒体、游戏服务器、电子商务网站),确保网络连接能够支撑高访问量。
4. 网络优化与故障排查
在网络出现瓶颈或性能问题时,NTTTCP.exe 可用于快速诊断和定位问题所在。通过测试网络不同部分的带宽和延迟,用户可以找出网络中的瓶颈,优化网络性能。
- 应用场景:
- 进行网络故障排查,确认问题是由网络带宽不足、设备性能问题还是配置错误引起的。
- 优化网络拓扑结构,确保高流量路径不会成为瓶颈。
- 在大规模应用程序上线前,进行负载测试,确保能够在生产环境中承受预期流量。
5. 多协议性能测试
NTTTCP.exe 支持 TCP 和 UDP 协议的测试,因此它适用于那些需要对不同协议进行性能评估的场景。例如,UDP 协议常用于实时应用(如视频流、语音通话),而 TCP 协议常用于可靠数据传输。
- 应用场景:
- 测试实时流媒体服务的网络性能,尤其是在 UDP 协议下的吞吐量和丢包率。
- 对比 TCP 和 UDP 协议在不同网络条件下的表现,帮助网络管理员选择最佳的协议。
- 测试不同协议在不同网络环境下的表现,如局域网(LAN)和广域网(WAN)中的差异。
6. 数据中心和云环境性能验证
在数据中心和云环境中,NTTTCP.exe 可以用来测试多个虚拟机、服务器和存储系统之间的网络性能。随着云计算和虚拟化技术的普及,测试这些环境中的网络传输能力变得尤为重要。
- 应用场景:
- 测试云服务提供商提供的网络带宽和吞吐量。
- 在数据中心内验证虚拟化平台中的网络性能,确保虚拟机之间的高效通信。
- 对于容器化应用(如 Kubernetes 环境),验证容器之间的网络通信是否符合预期。
7. 网络安全测试
在进行网络安全性评估时,NTTTCP.exe 可以用来模拟不同类型的网络流量,帮助测试和分析防火墙、入侵检测系统(IDS)和入侵防御系统(IPS)在高负载下的表现。
- 应用场景:
- 测试防火墙和网络安全设备在高流量条件下的响应能力。
- 评估网络攻击(如 DDoS 攻击)对网络性能的影响。
- 验证网络安全策略对正常流量的影响,确保安全措施不对正常流量产生过多干扰。
8. 优化互联网链路
对于企业或组织来说,使用 NTTTCP.exe 进行互联网链路性能测试是确保外部网络连接质量的关键步骤。通过模拟实际的网络流量,帮助识别和解决外部连接中的性能瓶颈。
- 应用场景:
- 测试与外部互联网连接的带宽、延迟和丢包率。
- 评估跨地域网络链路(如总部与分支机构之间的连接)性能,确保全球网络的稳定性。
- 确认互联网服务提供商提供的带宽和延迟是否符合合同约定。
NTTTCP.exe 在许多领域都有广泛的应用,尤其是在高负载、高带宽需求的网络环境中。它不仅能够帮助网络管理员评估和优化现有网络,还能提供有效的工具来诊断网络问题,确保网络设备和服务能够满足实际需求。通过合理配置和使用 NTTTCP.exe,可以显著提高网络的可靠性、稳定性和性能。
版权版本 5.40
版本 5.40
NTttcp: [-s|-r|-l|-n|-p|-sp|-ns|-to|-a|-rb|-sb|-u|-w|-d|-t|-cd|-wu|-v|-6|-wa|-nic|-xml|-ndl|-na|-hpt|-uso|-uro|-x|-hv|-nsb|-thr|-brn|-lm|-icp|-cfi|-es|-sam|-qos|-jm|-ps] -m <映射>
-s 作为发送方工作
-r 作为接收方工作
-l <缓冲区大小> [默认 TCP: 64K, UDP: 128]
-n <缓冲区数量> [默认: 20K]
-p <端口基数> [默认: 5001]
-sp 同步数据端口,若使用 -p,必须在每个实例中保持相同。
-ns 不同步。发送方将尽快开始发送数据。
默认情况下,发送方会在与接收方完成握手后,验证接收方是否准备好,使用额外的 TCP 连接。
该选项对于多线程测试非常有用,可以减少测试开始的时间,并增加最大连接数。
所有或没有 NTttcp 实例必须使用此选项。
-to <超时>,单位毫秒。 [默认: 600000]
如果 I/O 或线程等待超时,则会失败。
设置为 0 表示无限超时。 (NTttcp 可能会无限期挂起。)
-a <未完成 I/O> [默认: 2]
-rb <接收缓冲区大小> [默认: -1]
仅在非负值时,SO_RCVBUF 将设置为此值。
如果 SO_RCVBUF 为 0,将禁用 Winsock 接收缓冲区。
如果为负值,则使用操作系统默认行为(例如,动态缓冲)。
-sb <发送缓冲区大小> [默认: 0 使用 -a;-1 其他情况]
仅在非负值时,SO_SNDBUF 将设置为此值。
如果 SO_SNDBUF 为 0,将禁用 Winsock 发送缓冲区。
如果为负值,则使用操作系统默认行为(例如,动态缓冲)。
-ndl 设置 TCP_NODELAY 套接字选项
-u 使用 UDP 发送/接收
-w 使用 WSARecv/WSASend
-rt 启用往返模式
-d 验证标志
-t <运行时间>,单位秒。与 -n 一起使用时表示最大测试时间,并禁用 -wu 和 -cd 标志。 [默认(与 -n 一起使用时):3小时]
-cd <冷却时间>,单位秒
-wu <预热时间>,单位秒
-v 启用详细模式
-6 启用 IPv6 模式
-wa 使用 recv 或 WSARecv 函数时设置 WAIT_ALL 标志
-nic <NIC IP>
使用 <NIC IP> 的网络接口卡(仅发送方)。
-xml [文件名] 保存 XML 输出到文件,默认保存到 xml.txt
-na <NUMA 节点编号> 将进程绑定到特定 NUMA 节点。
如果 -m 映射指定了处理器编号,则此选项无效。
-hpt 隐藏每个线程的统计信息
-uso <消息大小> 启用 UDP 分段卸载,最大消息大小为此值。
-uro 启用 UDP 接收合并。
-uc 使用无连接的 UDP 套接字和 sendto/recvfrom。
-x <数据包数组大小> [默认: 1]
使用 TransmitPackets,并使用给定的数据包数组大小调用它。
-hv 使用 AF_HYPERV。主机名必须是 VM GUID。
-nsb 无标准 I/O 缓冲区,所有输出将立即刷新。
-thr <吞吐量[KB/s]>
以每个线程指定的吞吐量发送数据(仅发送方)。
-brn <烧CPU量>
在完成 I/O 后执行的 CPU 操作量。
-lm 执行延迟测量。NTttcp 使用 QueryPerformanceCounter 来测量延迟。启用后可能会影响性能。
-icp <最大活动线程数> [默认: -1]
I/O 完成端口最大活动线程数,<0 表示应使用 WaitForMultipleObjects。0 表示使用与 CPU 数量相同的线程数的 I/O 完成端口。
大于 0 时设置线程数为指定值。
-cfi 使用空闲 CPU 周期计算 CPU 使用率(Vista 或更高版本)
-es 收集 EStats(仅显示在 XML 中,必须以管理员身份运行)。
-sam <采样时间周期>,单位秒。
-qos <QOS 优先级> 从 0 到 5 的整数,映射到流量类型:
0 : QOSTrafficTypeBestEffort : 与非 QOS 流量优先级相同
1 : QOSTrafficTypeBackground : 低于正常优先级
2 : QOSTrafficTypeExcellentEffort : 高于正常优先级
3 : QOSTrafficTypeAudioVideo : 音视频流
4 : QOSTrafficTypeVoice : 实时语音流
5 : QOSTrafficTypeControl : 最高优先级
默认情况下禁用 QOS。
-jm [文件名] 抖动测量:
测量并输出数据包到达时间。发送方不应指定文件名,但接收方必须指定输出文件。
缓冲区长度必须大于或等于 20 字节。
输出格式为 CSV,包含以下标题:
packet_num , send_count, send_freq, recv_count, recv_freq
-ps <持续时间(毫秒)> 等待缓冲区发送之间的时间(仅发送方)。
数据包间隔仅支持 1 线程同步发送。
间隔必须在 5 到 1000 毫秒之间。
使用 -ps 时不支持 -thr 和 -brn 选项。
-m <映射>
一个或多个映射 3 元组,用空格分隔:
(线程数量,处理器编号,接收方地址或名称)
处理器编号必须在进程的 kgroup 中。如果处理器编号为 "*",则线程不绑定。
例如:“-m 4,0,1.2.3.4 2,*,contoso” 设置:
- 在处理器 0 上运行 4 个线程,连接到 1.2.3.4
- 2 个未绑定的线程连接到 contoso
Copyright Version 5.40
Version 5.40
NTttcp: [-s|-r|-l|-n|-p|-sp|-ns|-to|-a|-rb|-sb|-u|-w|-d|-t|-cd|-wu|-v|-6|-wa|-nic|-xml|-ndl|-na|-hpt|-uso|-uro|-x|-hv|-nsb|-thr|-brn|-lm|-icp|-cfi|-es|-sam|-qos|-jm|-ps] -m <mappings>
-s work as a sender
-r work as a receiver
-l <Length of buffer> [default TCP: 64K, UDP: 128]
-n <Number of buffers> [default: 20K]
-p <port base> [default: 5001]
-sp Synchronize data ports, if used -p must be same on every instance.
-ns No sync. Senders will start sending as soon as possible.
By default, senders will only start after they perform a handshake
with receivers verifying readiness, using extra TCP connections.
The option is helpful for many-thread tests, reducing time for
the test to start and increasing the max allowed connections.
Either all or none of the NTttcp instances must have this option.
-to <timeout> in milliseconds. [default: 600000]
I/O and thread waits will fail if hung for this duration.
Set to 0 for infinite timeouts. (NTttcp may hang indefinitely.)
-a <outstanding I/O> [default: 2]
-rb <Receive buffer size> [default: -1]
If and only if non-negative, SO_RCVBUF will be set to this value.
SO_RCVBUF of 0 will disable winsock receive buffering.
If negative, use OS default behavior. (e.g. dynamic buffering)
-sb <Send buffer size> [default: 0 with -a; -1 otherwise]
If and only if non-negative, SO_SNDBUF will be set to this value.
SO_SNDBUF of 0 will disable winsock send buffering.
If negative, use OS default behavior. (e.g. dynamic buffering)
-ndl set TCP_NODELAY socket option
-u UDP send/recv
-w WSARecv/WSASend
-rt enable roundtrip mode
-d Verify Flag
-t <Runtime> in seconds. When with -n mans max test time and disables
-wu and -cd flags. [default (with -n): 3h]
-cd <Cool-down> in seconds
-wu <Warm-up> in seconds
-v enable verbose mode
-6 enable IPv6 mode
-wa Sets the WAIT_ALL flag when using recv or WSARecv functions
-nic <NIC IP>
Use NIC with <NIC IP> for sending data (sender only).
-xml [filename] save XML output to a file, by default saves to xml.txt
-na <NUMA node number> Affinitize process to a particular NUMA node.
If -m mapping specifies a processor number, this option
has no effect.
-hpt hide per thread stats
-uso <Message size> Enable UDP segmentation offload with this maximum
message size.
-uro Enable UDP receive coalescing.
-uc Use unconnected UDP sockets and sendto/recvfrom.
-x <PacketArray size> [default: 1]
Use TransmitPackets, calling it with the given packet array size.
-hv Use AF_HYPERV. Host names must be VM GUIDs
-nsb no stdio buffer, all output will be flushed immediately.
-thr <throughput[KB/s]>
Send data with throughput specified for each thread (sender only).
-brn <burn cpu amount>
Amount of CPU operations performed after completing an IO.
-lm Do latency measurement. NTttcp uses QueryPerformanceCounter to
measure latency. May impact performance if you enable it.
-icp <max active threads> [default: -1]
I/O Completion Ports max active threads value < 0 indicates that
WaitForMultipleObjects should be used instead. 0 means using I/O
completion ports with same number of threads as number of cpu-s.
Anything > 0 sets number of threads to that value.
-cfi Uses idle CPU cycles to compute CPU utilization (Vista or higher)
-es Collect EStats (only displayed in XML, must run as admin).
-sam <sample time period> in seconds.
-qos <QOS priority> integer from 0 to 5 which maps to traffic types:
0 : QOSTrafficTypeBestEffort : same priority as non-QOS
1 : QOSTrafficTypeBackground : lower priority than normal
2 : QOSTrafficTypeExcellentEffort : more important than normal
3 : QOSTrafficTypeAudioVideo : A/V streaming
4 : QOSTrafficTypeVoice : realtime voice streams
5 : QOSTrafficTypeControl : highest priority
QOS is disabled by default.
-jm [filename] Jitter measurement:
measure and output packet arrival time. Sender should not include
a filename but the receiver must specify the output file.
Buffer length must be greater than or equal to 20 bytes.
The output format is a CSV with the following headers:
packet_num , send_count, send_freq, recv_count, recv_freq
-ps <duration (ms)> Wait between buffer sends in ms (sender only).
Packet spacing is only supported for 1 thread synchronous sending.
The spacing must be between 5 and 1000 ms.
-thr and -brn are not supported options when -ps is used.
-m <mappings>
One or more mapping 3-tuples separated by spaces:
(number of threads, processor number, receiver address or name)
Processor number must be in the process kgroup. If processor number
is "*", the threads are not affinitized.
e.g. "-m 4,0,1.2.3.4 2,*,contoso" sets up:
-4 threads on processor 0 to connect to 1.2.3.4
-2 unaffinitized threads to connect to contoso
| 选项 | 描述 |
|---|---|
ntttcp -s |
作为发送方工作 |
ntttcp -r |
作为接收方工作 |
ntttcp -l |
<缓冲区大小> [默认 TCP: 64K, UDP: 128] |
ntttcp -n |
<缓冲区数量> [默认: 20K] |
ntttcp -p |
<端口基数> [默认: 5001] |
ntttcp -sp |
同步数据端口,若使用 -p,必须在每个实例中保持相同 |
ntttcp -ns |
不同步。发送方将尽快开始发送数据。 |
ntttcp -to |
<超时>,单位毫秒 [默认: 600000] |
ntttcp -a |
<未完成 I/O> [默认: 2] |
ntttcp -rb |
<接收缓冲区大小> [默认: -1] |
ntttcp -sb |
<发送缓冲区大小> [默认: 0 使用 -a;-1 其他情况] |
ntttcp -ndl |
设置 TCP_NODELAY 套接字选项 |
ntttcp -u |
使用 UDP 发送/接收 |
ntttcp -w |
使用 WSARecv/WSASend |
ntttcp -rt |
启用往返模式 |
ntttcp -d |
验证标志 |
ntttcp -t |
<运行时间>,单位秒 [默认: 3小时] |
ntttcp -cd |
<冷却时间>,单位秒 |
ntttcp -wu |
<预热时间>,单位秒 |
ntttcp -v |
启用详细模式 |
ntttcp -6 |
启用 IPv6 模式 |
ntttcp -wa |
使用 recv 或 WSARecv 函数时设置 WAIT_ALL 标志 |
ntttcp -nic |
<NIC IP> 使用指定的网络接口卡(仅发送方) |
ntttcp -xml |
[文件名] 保存 XML 输出到文件,默认保存到 xml.txt |
ntttcp -na |
<NUMA 节点编号> 将进程绑定到特定 NUMA 节点。 |
ntttcp -hpt |
隐藏每个线程的统计信息 |
ntttcp -uso |
<消息大小> 启用 UDP 分段卸载,最大消息大小为此值 |
ntttcp -uro |
启用 UDP 接收合并 |
ntttcp -uc |
使用无连接的 UDP 套接字和 sendto/recvfrom |
ntttcp -x |
<数据包数组大小> [默认: 1] 使用 TransmitPackets |
ntttcp -hv |
使用 AF_HYPERV。主机名必须是 VM GUID |
ntttcp -nsb |
无标准 I/O 缓冲区,所有输出将立即刷新 |
ntttcp -thr |
<吞吐量[KB/s]> 以每个线程指定的吞吐量发送数据(仅发送方) |
ntttcp -brn |
<烧CPU量> 在完成 I/O 后执行的 CPU 操作量 |
ntttcp -lm |
执行延迟测量。NTttcp 使用 QueryPerformanceCounter 来测量延迟。启用后可能会影响性能。 |
ntttcp -icp |
<最大活动线程数> [默认: -1] I/O 完成端口最大活动线程数 |
ntttcp -cfi |
使用空闲 CPU 周期计算 CPU 使用率(Vista 或更高版本) |
ntttcp -es |
收集 EStats(仅显示在 XML 中,必须以管理员身份运行) |
ntttcp -sam |
<采样时间周期>,单位秒 |
ntttcp -qos |
<QOS 优先级> 从 0 到 5 的整数,映射到流量类型 |
ntttcp -jm |
[文件名] 抖动测量:测量并输出数据包到达时间。发送方不应指定文件名,但接收方必须指定文件名 |
ntttcp -ps |
<持续时间(毫秒)> 等待缓冲区发送之间的时间(仅发送方)。间隔必须在 5 到 1000 毫秒之间 |
ntttcp -m |
<映射> 一个或多个映射 3 元组,用空格分隔(线程数量,处理器编号,接收方地址或名称) |
NTttcp + Perfmon 组合使用:底层逻辑、必备业务场景、适用边界
一、底层核心原理(为什么二者必须搭配)
- NTttcp 作用
Windows 原生 TCP/UDP 网络压测工具,专门生成可控流量,精准输出端到端往返时延、吞吐量、丢包、缓冲区阻塞、TCP 重传等网络层指标;仅能输出单次测试统计汇总,无法全程连续观测系统底层资源动态波动。
- Perfmon(性能监视器)作用
实时持续采集整机全维度性能计数器:网卡硬件队列、CPU、内存、磁盘、TCP/IP 协议栈、网卡中断、NDIS 驱动、系统缓存、进程占用,生成带精确时间戳的连续时序曲线。
- 组合互补核心逻辑
NTttcp 制造标准化网络压力,Perfmon 同步记录压力下系统底层资源变化;依托统一系统时钟(NTP 同步后精度更高),将网络吞吐 / 时延波动与CPU、网卡中断、磁盘 IO、TCP 协议栈异常做时序绑定,区分瓶颈是网络链路、网卡硬件、系统内核、CPU 算力、磁盘读写哪一层。
二、必须组合 NTttcp + Perfmon 的典型场景
场景 1:网卡 / 交换机 / 路由器硬件转发性能基准评测(匹配你的路由 BE7200/BE88U 时延、时间缩微测试)
- 业务需求
测试家用 / 工业路由器 2.5G / 万兆网口、Wi-Fi7 无线、交换机转发极限吞吐、小包延迟、并发抖动;需要区分:路由硬件转发损耗、PC 端网卡 / Windows 系统协议栈损耗。
- 操作方案
- 两台 Windows 终端分别跑 NTttcp 服务端 / 客户端,中间串联被测路由器;
- Perfmon 持续采集:
网卡总字节/数据包、NDIS 数据包丢弃、TCP 重传段、处理器中断时间、网卡接收队列长度;
- 核心价值
当 NTttcp 测出吞吐量上不去、时延突增时,通过 Perfmon 曲线同步定位根因:
- 网卡中断 CPU 打满 → PC 端硬件瓶颈;
- NDIS 丢包暴涨 → 网卡驱动 / 缓冲不足;
- TCP 重传持续走高 → 路由转发拥堵、无线干扰;
完全分离终端系统损耗与网络设备本身性能缺陷。
场景 2:Windows 服务器 TCP/IP 协议栈参数调优(云主机、数据库、中间件)
- 业务痛点
服务器大流量业务吞吐不达标、小包业务延迟高、高并发下 TCP 重传频发;单纯 NTttcp 只能看到最终吞吐结果,不知道是 TCP 窗口、缓冲、定时器、网卡中断调度哪个参数受限。
- 配套计数器(Perfmon 重点采集)
TCPv4:重传段、延迟 ACK、连接重置、拥塞窗口变化;网络接口:接收 / 发送队列溢出、硬件校验错误;处理器:DPC 延迟、硬件中断占用;
- 落地流程
修改注册表 TCP 缓冲 / 自动调优参数,每次修改后用 NTttcp 固定流量压测,对比 Perfmon 时序曲线,量化参数优化带来的中断、重传、时延改善幅度。
场景 3:分布式业务跨节点网络瓶颈定位(微服务、数据库集群、存储服务器)
- 场景特征
请求链路跨多台 Windows 服务器(网关→应用→数据库→共享存储),业务卡顿无法区分是节点间网络、本机 CPU、磁盘 IO、TCP 阻塞导致。
- 组合方案
所有服务器统一 NTP 授时,每台机器同时开启 Perfmon 长期采集;在业务高峰时段同步执行 NTttcp 模拟业务流量压测;故障复盘时,统一时间轴对齐:NTttcp 的时延突增点 ↔ Perfmon 的 CPU/DPC 峰值 / TCP 重传尖峰 / 磁盘 IO 瓶颈;精准定位瓶颈节点与层级。
场景 4:虚拟化 / 云主机网络性能排查(Hyper-V、VMware、公有云 ECS)
- 典型问题
虚拟机网络达不到标称带宽、小包延迟远高于物理机、云主机存在隐形流量限速;虚拟化层虚拟网卡、宿主机 CPU 调度、QoS 限流均会造成损耗。
- 监测重点
Perfmon 采集虚拟网卡收发队列、宿主机 CPU 中断、VMQ 队列占用、虚拟交换机丢包;NTttcp 做固定长度小包 / 大包压测,对比物理机基线,量化虚拟化层带来的网络损耗,定位宿主机调度、虚拟网卡驱动瓶颈。
场景 5:等保 / 合规基线性能验收、设备入网测试(政企、智慧水务 DBJ50/T-5526 管网监测服务器)
- 合规要求
政务、水务、工控服务器入网前,需出具标准化网络负载下的系统资源性能基线报告;仅靠 NTttcp 流量数据无法证明系统无资源溢出隐患,必须配套连续性能时序日志。
- 交付要求
NTttcp 生成标准化吞吐、时延测试报告,Perfmon 导出全程性能日志曲线,二者时序一一对应,作为设备入网、系统验收的合规佐证材料。
场景 6:小包高频低延迟业务压力测试(金融交易、计费、工业时序采集、NTP 授时服务)
- 业务特征
大量 64/128 字节小包持续交互,对 DPC 延迟、网卡中断、TCP 拥塞控制极度敏感,微小系统延迟会直接造成业务超时、时序错乱。
- 组合价值
NTttcp 模拟高频小包流量,Perfmon 监控
DPC 延迟、处理器中断占用、TCP 快速重传;一旦出现时延抖动,立刻判断是 Windows 内核调度瓶颈,而非外部网络链路问题。
场景 7:网卡驱动、防火墙、安全软件网络损耗评估
- 常见痛点
第三方杀毒、终端防火墙、流量加密软件、老旧网卡驱动会拦截 / 缓冲数据包,带来额外时延与吞吐损耗,肉眼无法区分损耗来源。
- 测试流程
- 基准组:关闭安全软件,NTttcp+Perfmon 采集基线吞吐、中断、DPC;
- 实验组:开启防火墙 / 安全软件,相同 NTttcp 流量复现;
对比 Perfmon 曲线中 DPC 时长、数据包处理耗时增量,量化安全组件带来的网络性能损耗。
场景 8:存储 NAS、SMB 文件共享网络性能评测
- 需求
Windows 客户端访问 SMB 存储服务器,大文件拷贝慢、小文件并发卡顿;网络与磁盘 IO 互相耦合,难以分离瓶颈。
- 组合监测
NTttcp 模拟 SMB 等量 TCP 读写流量,Perfmon 同时采集网卡计数器 + 磁盘物理读写延迟;区分:
- 吞吐低是网卡 TCP 阻塞;
- 吞吐低是存储磁盘 IO 瓶颈。
三、不需要二者组合的场景(单独使用其一即可)
- 仅粗略测极限带宽、单次吞吐量,不需要分析底层资源波动:单独运行 NTttcp 看最终汇总数据;
- 仅日常观测本机 CPU / 内存占用,无标准化网络压力:单独打开 Perfmon;
- 离线单机、无跨设备时序对比、短期临时观测,无需绑定网络流量与系统资源时序;
- 仅定性排查断网、丢包,不需要量化系统内核、中断、DPC 延迟根源。
四、组合使用核心优势总结
- 分层定位瓶颈:NTttcp 提供标准化可控网络负载,Perfmon 同步抓取内核、硬件、协议栈全层指标,区分瓶颈在「外部网络」还是「Windows 本机系统 / 硬件」;
- 时序精准绑定:同一台机器共享系统时间戳,网络时延突变与 CPU、中断、磁盘尖峰一一对应,消除分析盲区;
- 量化对比优化:调优网卡驱动、TCP 参数、虚拟化配置前后,可通过两组 NTttcp+Perfmon 数据直观量化性能提升幅度;
- 标准化可追溯:测试数据 + 连续性能曲线完整留存,满足设备入网、等保、项目验收的书面材料要求。

浙公网安备 33010602011771号