1. 网络性能测试工具的选择与对比在评估单板计算机和迷你PC的网络性能时iperf3一直是我们的首选工具。但最近微软的一篇博客文章引起了我的注意他们明确指出iperf3不应该在Windows 11上使用并推荐了自家的ntttcp工具。这促使我进行了一次深入的对比测试。1.1 为什么微软不推荐iperf3微软给出了三个主要原因官方支持问题iperf3的维护者ESnet明确表示不正式支持Windows平台他们推荐使用iperf2。虽然有人通过Cygwin在Windows上运行iperf3但并非所有功能都能正常工作。性能问题iperf3在Windows上是模拟运行的它不会调用Windows原生API而是使用Linux/POSIX调用这可能会影响性能表现。版本滞后Windows平台上可用的iperf3版本3.1.3发布于2016年即使ESnet提供的3.16版本也落后了15个版本。1.2 微软推荐的替代方案微软维护了两个开源网络测试工具ntttcpWindows NT Test TCP支持Windows和Linux平台命令行界面与iperf3类似专注于网络栈吞吐量测试。ctsTraffic仅支持Windows-to-Windows测试专注于端到端的好吞吐量场景。由于我们的测试通常涉及Linux和Windows混合环境ctsTraffic不适用因此我们重点测试ntttcp。2. 测试环境搭建与配置2.1 硬件配置我的测试平台包含四个主要组件Khadas Mind Premium迷你PC配备2.5GbE网卡和WiFi 6运行Windows 11 ProUP Xtreme i11 Edge迷你PC配备2.5GbE网卡运行Ubuntu 20.04作为服务器TP-Link 2.5GbE交换机小米AX6000 WiFi 6路由器2.2 软件安装2.2.1 Linux端安装ntttcp在Ubuntu 20.04上安装ntttcp非常简单git clone https://github.com/microsoft/ntttcp-for-linux cd ntttcp-for-linux/src make sudo make install2.2.2 Windows端准备Windows用户可以直接下载ntttcp.exe二进制文件无需安装即可运行。3. 基础测试与参数解析3.1 基本命令结构ntttcp的基本命令结构与iperf3类似但有一些关键差异接收端命令Linuxntttcp -r -m 1,*,192.168.31.12 -t 60 -V发送端命令Windowsntttcp.exe -s -m 1,*,192.168.31.12 -l 128K -t 60 -V3.2 关键参数说明-r作为接收端运行-s作为发送端运行-m线程映射格式为发送线程,接收线程,IP地址-t测试持续时间秒-l/-b缓冲区大小Windows用-lLinux用-b-V详细输出模式-ns无同步模式Windows-Linux互测必需3.3 Windows-Linux互测的特殊配置在Windows和Linux之间测试时必须使用-ns无同步参数否则连接会失败。这是ntttcp的一个已知限制。对于Windows接收端还需要开放防火墙netsh advfirewall firewall add rule programC:\path\to\ntttcp.exe namentttcp protocolany dirin actionallow enableyes profileANY4. 性能测试结果对比4.1 测试方案设计我们进行了四组测试WiFi 6上传Windows→LinuxWiFi 6下载Linux→Windows2.5GbE上传Windows→Linux2.5GbE下载Linux→Windows每组测试都使用iperf3和ntttcp分别进行参数尽可能保持一致。4.2 测试结果汇总测试类型iperf3结果ntttcp结果WiFi 6上传(Tx)712 Mbps785 MbpsWiFi 6下载(Rx)590 Mbps604 Mbps2.5GbE上传(Tx)700 Mbps704 Mbps2.5GbE下载(Rx)2.30 Gbps2.28 Gbps4.3 结果分析WiFi性能上传场景下ntttcp比iperf3快约10%下载场景差异不明显两种工具都显示Linux的WiFi性能优于Windows有线网络性能2.5GbE环境下两者性能接近都达到了接近线速的性能CPU占用ntttcp提供了更详细的CPU使用数据测试期间CPU占用都很低1%5. 高级测试与多线程优化5.1 微软推荐的多线程测试微软建议使用多线程和大缓冲区来测试真实带宽能力。我们尝试了8线程、1MB缓冲区的配置Linux发送端命令ntttcp -s -m 8,*,192.168.31.69 -b 1024K -N -t 60测试结果吞吐量564.55Mbps比单线程配置略低CPU占用略有上升约3%5.2 多线程测试的注意事项线程数量选择不应超过CPU核心数缓冲区大小大缓冲区可以减少系统调用开销结果波动WiFi测试结果本身波动较大需要多次测试取平均值6. 工具优缺点分析6.1 ntttcp的优势官方支持微软维护针对Windows优化额外指标提供CPU占用、数据包重传等详细数据高带宽支持微软文档显示在10GbE环境中表现更好6.2 ntttcp的不足跨平台限制Windows-Linux测试需要特殊参数参数差异Windows和Linux版本参数不完全一致更新滞后Linux版本三年未更新缺少反向测试没有类似iperf3的-R参数6.3 iperf3的现状虽然微软不推荐但iperf3仍有其优势更广泛的社区支持跨平台一致性更好更简单的命令行界面7. 实际应用建议基于测试结果我给出以下建议Windows环境优先考虑ntttcp特别是高带宽测试场景需要Windows-Linux互测时记得使用-ns参数Linux环境iperf3仍是可靠选择如果需要更详细的系统指标可以尝试ntttcp性能分析关注CPU占用、重传率等额外指标多次测试取平均值特别是WiFi测试测试报告明确标注使用的工具和版本记录完整的命令行参数注明测试环境和网络配置8. 常见问题排查指南8.1 连接失败问题症状Windows客户端报错目标机器积极拒绝解决方案确保使用-ns参数检查防火墙设置确认IP地址和端口正确8.2 性能异常低可能原因缓冲区大小设置不合理线程数过多或过少网络设备限制排查步骤尝试不同的缓冲区大小64K-1M调整线程数量1-CPU核心数检查网络设备状态和配置8.3 结果波动大处理方法延长测试时间至少60秒进行多次测试取平均值确保测试环境稳定减少其他网络活动9. 测试技巧与经验分享缓冲区大小选择千兆以下网络64K-128K千兆以上网络256K-1M实际测试中128K在大多数场景表现良好测试持续时间至少30秒推荐60秒长时间测试可以平滑短期波动系统准备关闭不必要的网络应用更新网卡驱动检查系统电源管理设置避免节能模式结果记录保存原始输出日志记录测试时间、环境温度等可能影响结果的因素10. 结论与个人体会经过详细的对比测试我发现ntttcp和iperf3在2.5GbE及以下网络环境中的性能差异不大。ntttcp的主要优势在于提供了更丰富的系统指标在Windows平台有官方支持高带宽场景可能表现更好然而ntttcp的跨平台测试略显复杂且Linux版本更新不及时。在实际测试工作中我仍然会优先使用iperf3特别是在需要快速获取基本吞吐量数据时。对于需要深入分析网络性能的场景特别是Windows平台的高带宽测试ntttcp是一个值得考虑的替代方案。我建议网络测试人员同时掌握这两种工具根据具体需求灵活选择。