NTTTCP.exe(Network TCP Test Tool) 是一个微软提供的网络性能测试工具,通常用于测试和诊断 TCP/IP 网络连接的性能。它可以用来测量网络带宽、延迟、吞吐量等指标,适用于数据中心、网络管理员、开发人员等场景中,用于验证网络性能和调优。NTttcp + Perfmon 组合使用

GitHub - microsoft/ntttcp

使用 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(Network TCP Test Tool) v5.40(微软 Windows 原生 TCP 网络压测工具)
 
运行环境:Windows Server 2022/2025
 
启动命令: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 流量优先级标记:
 
0 = 默认普通流量
 
1 = 后台低优先级
 
2 = 高吞吐批量传输
 
3 = 音视频流媒体
 
4 = 交互式语音
 
5 = 最高优先级实时业务
 
-jm <文件> 输出抖动测量日志,发送端不可指定文件,仅接收端生效  
-ps <毫秒> 同步发包间隔;仅单线程同步模式可用,范围 5~10000ms  
-m <映射三元组> 线程映射配置,格式(线程数,CPU核心,目标IP),多组用空格分隔  

三、底部报错解析:ERROR: main failed: error in parameters

报错含义

启动命令传入了非法、冲突、格式错误的参数,程序无法解析参数直接退出。

高频触发原因(ntttcp(Network TCP Test Tool) 最常见)

  1. -m 映射参数格式错误
     
    -m 要求严格三元组格式 (线程数,CPU编号,服务端IP),括号、逗号、空格写错直接报错;
     
    示例合法写法:
cmd
# 4线程,绑定CPU0,连接192.168.1.100:5001
ntttcp -s -m "(4,0,192.168.1.100)" -t 60
错误示例:缺少括号、逗号、数字、多余空格。
  1. 参数互斥冲突
  • -ps 同步发包间隔 仅单线程模式可用,搭配多线程-m会冲突报错;
  • -jm 抖动日志仅接收端-r可用,发送端-s携带-jm 文件直接参数非法。
  1. 数值越界 / 非法值
  • -qos 仅允许 0~5,输入 6 / 负数报错;
  • -ps 毫秒必须 5~10000,超出范围报错;
  • -brn、-ma CPU 编号超出服务器实际核心数。
  1. 参数缺少配套主体
     
    如仅写-nic 192.168.1.5不加-s发送端标识;-thr限速无测试时长-t。

排查解决步骤

  1. 先简化最简测试命令,确认基础可用:
cmd
# 接收端(服务端)
ntttcp -r -t 30
# 发送端(客户端,本机测试)
ntttcp -s 127.0.0.1 -t 30
  1. 逐个追加参数,每加一个执行一次,定位出错参数;
  2. 核对-m三元组括号、逗号格式,不要遗漏括号;
  3. 区分收发端专属参数:-nic/-uso/-jm分收发端限制。

四、ntttcp(Network TCP Test Tool) 关键参数实操示例

示例 1:基础 TCP 带宽测试(本机 30 秒)

接收端:
cmd
ntttcp -r -t 30
发送端新开窗口:
cmd
ntttcp -s 127.0.0.1 -t 30

示例 2:多线程 NUMA 绑定、输出 XML 报告

cmd
ntttcp -s 10.0.0.100 -m "(8,2,10.0.0.100)" -t 60 -xml report.xml -ma 0

示例 3:限制单线程带宽 1000Mbps,预热 5 秒

cmd
ntttcp -s 10.0.0.100 -t 60 -wu 5 -thr 1000

示例 4:IPv6、绑定指定网卡接收测试

cmd
ntttcp -r -6 -nic 2409:xxxx::xxxx -t 60

五、与 iperf3 核心参数差异补充

  1. ntttcp 独有:NUMA 亲和-ma、CPU 线程绑定-brn、Hyper-V 适配-hv、Windows IOCP 异步优化;
  2. iperf3 独有:完整 UDP 抖动 / 丢包统计、GSO/GRO 硬件卸载观测、跨 macOS/Linux 原生支持;
  3. ntttcp 短板:无原生 UDP 抖动统计、无内置 JSON 输出,仅 XML / 文本日志。

PixPin_2026-06-22_05-46-30

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 核心能力(通用全协议测试)

  1. 同时支持 TCP + UDP 双协议
    • TCP:测最大带宽、滑动窗口、RTT;
    • UDP:自定义发包速率、统计抖动 (jitter)、真实丢包率;
  2. 完整协议调参:MSS、拥塞控制、多并行流 (-P)、零拷贝、Nagle 开关;
  3. 输出格式:标准文本 + JSON 结构化输出,便于自动化采集;
  4. 3.21 新版关键增强(Linux/macOS 专属)
    • Linux:网卡 GSO/GRO 硬件卸载识别,精准评估网卡 offload 性能;
    • macOS:支持--bind-dev绑定指定网卡、读取原生tcp_info完整 TCP 链路指标;
    • 线程安全修复、UDP 丢包统计 BUG、除零崩溃、服务端详细错误上报;
    • Linux 编译自动执行ldconfig,systemd 服务加固;
  5. 适用场景:机房跨系统混合测试(Linux↔macOS、异构服务器)、音视频 UDP 抖动测试、通用网络基线巡检。

2. ntttcp(Network TCP Test Tool) v5.40 核心能力(Windows 原生 TCP 压测)

  1. 仅聚焦 TCP 协议,无 UDP 测试能力;
  2. 深度适配 Windows 内核网络栈(IOCP、RIO、网卡 RSS、SMB 直通),Azure 云虚拟机官方测速标准工具;
  3. v5.40 版本仅 2 项更新:
    • 更换全新编译流水线;
    • 新增 arm64 Windows 原生二进制(适配 ARM 服务器、Surface);
  4. 优势:多并发长连接、百万连接压测、精准统计 Windows CPU 占用、网卡吞吐量;
  5. 短板:不支持 UDP、无抖动 / 丢包指标、无 JSON 标准化输出;
  6. 适用场景:Windows Server/Windows 云主机内部吞吐压测、Azure 虚拟机带宽验收、Windows 网卡硬件性能调优。

三、平台兼容性深度区别

iperf3 3.21

  1. 官方一等公民:Linux、macOS
     
    完整支持网卡卸载、TCP 内核参数读取、多线程稳定,所有新功能优先在 Linux/macOS 落地;
  2. Windows 为兼容层移植(Cygwin)
    • 不调用 Windows 原生 IOCP;
    • 微软官方明确不推荐 Windows 生产环境使用,存在缓冲区限制、性能失真、版本滞后问题;
    • 3.21 新特性(GSO、mac 绑定网卡)Windows 完全无法使用;
  3. 额外支持:FreeBSD、Android 源码编译。

ntttcp v5.40 (Network TCP Test Tool)

  1. Windows x86/x64/ARM64 全原生
     
    无兼容层,直接调用 Win32、Winsock、IOCP,测试结果贴合真实 Windows 业务性能;
  2. Linux 为独立分支代码,与 Windows 端可互通,但功能裁剪;
  3. 不支持 macOS、BSD、移动端系统。

四、关键底层技术差异

  1. 网络 API 调用
    • iperf3:POSIX Socket 跨平台标准接口,Windows 靠 Cygwin 模拟;
    • ntttcp:Windows 专用 IOCP 异步 IO,最大化利用 Windows 异步网络模型;
  2. 网卡硬件卸载支持
    • iperf3 3.21:Linux 完整识别 GSO/GRO,可观测卸载对 CPU 的降低效果;Windows 无此功能;
    • ntttcp:原生识别 Windows RSS、TOE、RSC 网卡卸载,但无 GSO/GRO 精细化统计;
  3. 线程模型
    • iperf3:POSIX 线程,3.21 修复异步取消导致的卡死、竞态崩溃;
    • ntttcp:Windows 原生线程池,专为高并发长连接优化;
  4. 输出标准化
    • iperf3:内置 JSON,自动化监控脚本友好;
    • ntttcp:仅纯文本日志,无结构化输出,自动化采集难度更高。

五、生产选型场景区分

选 iperf3 3.21 的场景

  1. 机房混合服务器:Linux、macOS、少量 Windows;
  2. 需要 UDP 业务测试(直播、语音、实时传输);
  3. 需要 JSON 自动化监控、长期基线对比;
  4. 需要测试网卡 GSO/GRO 分段卸载性能;
  5. 开发环境、异构设备网络调优。

选 ntttcp(Network TCP Test Tool) v5.40 的场景

  1. 纯 Windows Server / Azure Windows 云服务器集群;
  2. 仅做 TCP 大吞吐量、高并发连接压测;
  3. 需要贴合 Windows 真实业务性能(Cygwin 会造成性能损耗);
  4. ARM64 Windows 服务器测速;
  5. 微软云官方带宽验收、Windows 网卡 RSS/TOE 硬件调优。

六、版本迭代侧重点对比

  1. iperf3 3.21 迭代方向
     
    跨平台功能补齐、TCP 内核指标读取、UDP 统计修复、线程稳定性、Linux 系统服务适配,兼顾运维与开发调试需求;
  2. ntttcp v5.40 (Network TCP Test Tool) 迭代极简
     
    仅完善编译流水线、补齐 ARM64 二进制,核心测速逻辑长期无大更新,定位稳定轻量化 Windows 专用工具,功能迭代节奏很慢。

七、核心短板总结

  1. iperf3 短板:Windows 平台兼容性差、性能不准、新功能 Windows 无法使用;
  2. 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

  1. 下载和安装:NTTTCP.exe 并不包含在 Windows 默认安装中,但它可以从微软的官网下载或者通过其他渠道获得。它通常作为一个命令行工具运行。

  2. 启动命令:运行 NTTTCP 需要在命令行中输入特定的命令和参数。常见的用法包括:

    bashCopy Code
    ntttcp -s    # 作为服务器端启动
    ntttcp -c    # 作为客户端启动
    • -s:作为服务器端启动,等待客户端连接。
    • -c:作为客户端启动,连接到服务器端并开始测试。
    • -t:指定测试时间长度,例如 -t 30 表示进行 30 秒的测试。
    • -l:设置测试时使用的 TCP 窗口大小。
    • -p:设置要使用的端口。

    示例:

    • 在一台计算机上运行 NTTTCP.exe 作为服务器:
      bashCopy Code
      ntttcp -s -p 5001
    • 在另一台计算机上运行 NTTTCP.exe 作为客户端,连接到服务器并执行测试:
      bashCopy Code
      ntttcp -c <服务器 IP 地址> -p 5001
  3. 性能测试:客户端启动后,会连接到服务器,测试期间会传输大量数据。通过测量这些数据的传输速率,您可以看到网络的带宽使用情况、吞吐量、延迟等指标。

NTTTCP 的常见用途

  1. 带宽测试:它可以帮助你测试局域网或广域网的实际带宽,检测网络性能,查看是否满足预期的网络速度。

  2. 压力测试:它可以用来模拟高负载网络流量,查看网络在高负载情况下的表现。通过调节流量大小和测试时长,网络管理员可以检测网络的最大吞吐量和压力极限。

  3. 诊断网络瓶颈:通过不同的配置和场景,NTTTCP 可以帮助定位网络传输中的瓶颈,如 CPU 限制、硬件性能、路由配置等。

  4. 调优网络设置:通过连续的测试,您可以发现网络中的配置问题,如 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 Code
    ntttcp -s
  • 客户端模式 (-c)
    启动 NTTTCP 作为客户端,连接到指定的服务器并进行数据传输测试。
    bashCopy Code
    ntttcp -c <Server IP Address>

2. 性能测试相关功能

  • 指定协议 (-p)
    用于指定所使用的协议。可以选择 TCP 或 UDP(默认是 TCP)。
    • TCP:-p tcp
    • UDP:-p udp
    bashCopy Code
    ntttcp -c <Server IP Address> -p udp
  • 设置测试时长 (-t)
    指定测试的时长,单位是秒。默认是 10 秒。
    bashCopy Code
    ntttcp -c <Server IP Address> -t 30  # 进行 30 秒的测试

3. 性能调优相关功能

  • 设置 TCP 窗口大小 (-l)
    设置 TCP 窗口大小。通过调整窗口大小,可以模拟不同的网络条件,优化性能。
    bashCopy Code
    ntttcp -c <Server IP Address> -l 128K  # 设置 TCP 窗口大小为 128KB
  • 指定连接的端口 (-p)
    通过该参数指定 TCP/UDP 使用的端口。可以指定多个端口进行测试。
    bashCopy Code
    ntttcp -s -p 5001
    ntttcp -c <Server IP Address> -p 5001

4. 数据传输控制相关功能

  • 指定每个连接的发送数据量 (-b)
    用于设置每个连接发送的数据量,通常用于测试不同数据量下的性能。
    bashCopy Code
    ntttcp -c <Server IP Address> -b 64K  # 每个连接发送 64KB 的数据
  • 指定并发连接数 (-n)
    指定客户端的并发连接数,用于模拟高并发负载。
    bashCopy Code
    ntttcp -c <Server IP Address> -n 10  # 启动 10 个并发连接进行测试

5. 多线程与多进程相关功能

  • 使用多个线程 (-T)
    设置测试时的线程数,通常用于在多核 CPU 上进行测试,以模拟更高的负载。
    bashCopy Code
    ntttcp -c <Server IP Address> -T 4  # 启动 4 个线程进行并行测试
  • 多进程测试 (-a)
    启用多进程来执行测试。这对于高性能测试尤为重要,可以增加测试的并行度。
    bashCopy Code
    ntttcp -c <Server IP Address> -a

6. 输出与结果格式化功能

  • 输出详细测试信息 (-v)
    输出详细的测试信息,包括每个连接的传输速率、延迟等。
    bashCopy Code
    ntttcp -c <Server IP Address> -v
  • 保存结果到文件 (-o)
    将测试结果保存到指定的文件中,以便后续分析。
    bashCopy Code
    ntttcp -c <Server IP Address> -o result.txt

7. 其他功能

  • 指定测试协议的端口范围 (-P)
    可以指定端口范围,进行端口扫描或多端口的性能测试。
    bashCopy Code
    ntttcp -s -P 5001-5050
  • 测试 UDP 的负载情况 (-u)
    -u 参数用于测试 UDP 协议的性能,它可以测试 UDP 连接的吞吐量。
    bashCopy Code
    ntttcp -c <Server IP Address> -u
  • 指定发送数据的速率 (-r)
    通过 -r 参数,用户可以设置每秒发送的数据量(速率)。这对测量网络带宽非常有用。
    bashCopy Code
    ntttcp -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 组合使用:底层逻辑、必备业务场景、适用边界

一、底层核心原理(为什么二者必须搭配)

  1. NTttcp 作用
     
    Windows 原生 TCP/UDP 网络压测工具,专门生成可控流量,精准输出端到端往返时延、吞吐量、丢包、缓冲区阻塞、TCP 重传等网络层指标;仅能输出单次测试统计汇总,无法全程连续观测系统底层资源动态波动。
  2. Perfmon(性能监视器)作用
     
    实时持续采集整机全维度性能计数器:网卡硬件队列、CPU、内存、磁盘、TCP/IP 协议栈、网卡中断、NDIS 驱动、系统缓存、进程占用,生成带精确时间戳的连续时序曲线。
  3. 组合互补核心逻辑
     
    NTttcp 制造标准化网络压力,Perfmon 同步记录压力下系统底层资源变化;依托统一系统时钟(NTP 同步后精度更高),将网络吞吐 / 时延波动与CPU、网卡中断、磁盘 IO、TCP 协议栈异常做时序绑定,区分瓶颈是网络链路、网卡硬件、系统内核、CPU 算力、磁盘读写哪一层。

二、必须组合 NTttcp + Perfmon 的典型场景

场景 1:网卡 / 交换机 / 路由器硬件转发性能基准评测(匹配你的路由 BE7200/BE88U 时延、时间缩微测试)

  1. 业务需求
     
    测试家用 / 工业路由器 2.5G / 万兆网口、Wi-Fi7 无线、交换机转发极限吞吐、小包延迟、并发抖动;需要区分:路由硬件转发损耗、PC 端网卡 / Windows 系统协议栈损耗。
  2. 操作方案
  • 两台 Windows 终端分别跑 NTttcp 服务端 / 客户端,中间串联被测路由器;
  • Perfmon 持续采集:网卡总字节/数据包、NDIS 数据包丢弃、TCP 重传段、处理器中断时间、网卡接收队列长度;
  1. 核心价值
     
    当 NTttcp 测出吞吐量上不去、时延突增时,通过 Perfmon 曲线同步定位根因:
  • 网卡中断 CPU 打满 → PC 端硬件瓶颈;
  • NDIS 丢包暴涨 → 网卡驱动 / 缓冲不足;
  • TCP 重传持续走高 → 路由转发拥堵、无线干扰;
     
    完全分离终端系统损耗与网络设备本身性能缺陷。

场景 2:Windows 服务器 TCP/IP 协议栈参数调优(云主机、数据库、中间件)

  1. 业务痛点
     
    服务器大流量业务吞吐不达标、小包业务延迟高、高并发下 TCP 重传频发;单纯 NTttcp 只能看到最终吞吐结果,不知道是 TCP 窗口、缓冲、定时器、网卡中断调度哪个参数受限。
  2. 配套计数器(Perfmon 重点采集)
     
    TCPv4:重传段、延迟 ACK、连接重置、拥塞窗口变化;
     
    网络接口:接收 / 发送队列溢出、硬件校验错误;
     
    处理器:DPC 延迟、硬件中断占用;
  3. 落地流程
     
    修改注册表 TCP 缓冲 / 自动调优参数,每次修改后用 NTttcp 固定流量压测,对比 Perfmon 时序曲线,量化参数优化带来的中断、重传、时延改善幅度。

场景 3:分布式业务跨节点网络瓶颈定位(微服务、数据库集群、存储服务器)

  1. 场景特征
     
    请求链路跨多台 Windows 服务器(网关→应用→数据库→共享存储),业务卡顿无法区分是节点间网络、本机 CPU、磁盘 IO、TCP 阻塞导致。
  2. 组合方案
     
    所有服务器统一 NTP 授时,每台机器同时开启 Perfmon 长期采集;在业务高峰时段同步执行 NTttcp 模拟业务流量压测;
     
    故障复盘时,统一时间轴对齐:
     
    NTttcp 的时延突增点 ↔ Perfmon 的 CPU/DPC 峰值 / TCP 重传尖峰 / 磁盘 IO 瓶颈;
     
    精准定位瓶颈节点与层级。

场景 4:虚拟化 / 云主机网络性能排查(Hyper-V、VMware、公有云 ECS)

  1. 典型问题
     
    虚拟机网络达不到标称带宽、小包延迟远高于物理机、云主机存在隐形流量限速;虚拟化层虚拟网卡、宿主机 CPU 调度、QoS 限流均会造成损耗。
  2. 监测重点
     
    Perfmon 采集虚拟网卡收发队列、宿主机 CPU 中断、VMQ 队列占用、虚拟交换机丢包;
     
    NTttcp 做固定长度小包 / 大包压测,对比物理机基线,量化虚拟化层带来的网络损耗,定位宿主机调度、虚拟网卡驱动瓶颈。

场景 5:等保 / 合规基线性能验收、设备入网测试(政企、智慧水务 DBJ50/T-5526 管网监测服务器)

  1. 合规要求
     
    政务、水务、工控服务器入网前,需出具标准化网络负载下的系统资源性能基线报告;仅靠 NTttcp 流量数据无法证明系统无资源溢出隐患,必须配套连续性能时序日志。
  2. 交付要求
     
    NTttcp 生成标准化吞吐、时延测试报告,Perfmon 导出全程性能日志曲线,二者时序一一对应,作为设备入网、系统验收的合规佐证材料。

场景 6:小包高频低延迟业务压力测试(金融交易、计费、工业时序采集、NTP 授时服务)

  1. 业务特征
     
    大量 64/128 字节小包持续交互,对 DPC 延迟、网卡中断、TCP 拥塞控制极度敏感,微小系统延迟会直接造成业务超时、时序错乱。
  2. 组合价值
     
    NTttcp 模拟高频小包流量,Perfmon 监控DPC 延迟、处理器中断占用、TCP 快速重传;一旦出现时延抖动,立刻判断是 Windows 内核调度瓶颈,而非外部网络链路问题。

场景 7:网卡驱动、防火墙、安全软件网络损耗评估

  1. 常见痛点
     
    第三方杀毒、终端防火墙、流量加密软件、老旧网卡驱动会拦截 / 缓冲数据包,带来额外时延与吞吐损耗,肉眼无法区分损耗来源。
  2. 测试流程
  • 基准组:关闭安全软件,NTttcp+Perfmon 采集基线吞吐、中断、DPC;
  • 实验组:开启防火墙 / 安全软件,相同 NTttcp 流量复现;
     
    对比 Perfmon 曲线中 DPC 时长、数据包处理耗时增量,量化安全组件带来的网络性能损耗。

场景 8:存储 NAS、SMB 文件共享网络性能评测

  1. 需求
     
    Windows 客户端访问 SMB 存储服务器,大文件拷贝慢、小文件并发卡顿;网络与磁盘 IO 互相耦合,难以分离瓶颈。
  2. 组合监测
     
    NTttcp 模拟 SMB 等量 TCP 读写流量,Perfmon 同时采集网卡计数器 + 磁盘物理读写延迟;区分:
  • 吞吐低是网卡 TCP 阻塞;
  • 吞吐低是存储磁盘 IO 瓶颈。

三、不需要二者组合的场景(单独使用其一即可)

  1. 仅粗略测极限带宽、单次吞吐量,不需要分析底层资源波动:单独运行 NTttcp 看最终汇总数据;
  2. 仅日常观测本机 CPU / 内存占用,无标准化网络压力:单独打开 Perfmon;
  3. 离线单机、无跨设备时序对比、短期临时观测,无需绑定网络流量与系统资源时序;
  4. 仅定性排查断网、丢包,不需要量化系统内核、中断、DPC 延迟根源。

四、组合使用核心优势总结

  1. 分层定位瓶颈:NTttcp 提供标准化可控网络负载,Perfmon 同步抓取内核、硬件、协议栈全层指标,区分瓶颈在「外部网络」还是「Windows 本机系统 / 硬件」;
  2. 时序精准绑定:同一台机器共享系统时间戳,网络时延突变与 CPU、中断、磁盘尖峰一一对应,消除分析盲区;
  3. 量化对比优化:调优网卡驱动、TCP 参数、虚拟化配置前后,可通过两组 NTttcp+Perfmon 数据直观量化性能提升幅度;
  4. 标准化可追溯:测试数据 + 连续性能曲线完整留存,满足设备入网、等保、项目验收的书面材料要求。

 

posted @ 2025-04-08 04:53  suv789  阅读(1162)  评论(0)    收藏  举报