iPefr 是 ESnet 推出和维护的一款知名网络测试工具,Windows 网络和调试工程师詹姆斯凯尔今天在 Microsoft TechNet 社区发文,建议用户不要使用 iPefr3,而是应该使用微软开发和维护的 ntttcp 或 ctsTraffic。
为什么不推荐用户使用 iPerf3 呢?微软工程师给出了三个原因,简单来说就是 iPerf3 并不直接兼容 Windows 系统,因此实际表现并不好。
原因一:不支持 Windows
ESnet 不建议用户在 Windows 上使用 iPerf3,因为该工具本身就不支持 Windows,ESnet 建议如果用户确实有需要应该使用 iPerf2。
iPerf3 主要基于 CentOS Linux、FreeBSD 和 macOS 开发,这也是 ESnet 官方支持的主要平台。
出于同样的不支持原因,微软不建议用户在 Windows 系统上使用 iPerf3。
原因二:不支持 Windows API
iPerf3 不调用 Windows 本机 API,因为它主要通过 Linux/POSIX 调用,iPerf3 社区使用 Cygwin 作为模拟层让 iPerf3 在 Windows 上运行。
当调用被发送到 Cygwin 时,后者将其转换为 Windows API,只有这样才能实现在 Windows 上检测网络堆栈,尽管这样做能用,但有些高级功能表现并不好,例如降低性能、操作延迟等。
最重要的是 iPerf3 使用不常见的 winsock (Windows Socket) 选项,对于通用吞吐量测试还行,但测试应用程序的话,winsock 无法模拟现实世界中 Windows 软件的运行情况。
原因三:用户使用的还是旧版 iPerf3
ESnet 提供的 iPerf3 最新版本为 3.16 版,但如果用户在搜索引擎 (包括必应上) 检索 iPerf3 for Windows 时,排在前面的是 iPerf.fr 网站,这个网站提供的版本是 3.1.3 版,而此版本还是 8 年前发布的,与 3.16 版之间相差 15 个版本。
这 15 个版本包含大量的错误修复和功能改进,但由于用户使用的是旧版本,而且 iPerf.fr 提供的版本中包含 cygwin1.dll,这会导致 winsock 缓冲区被限制在 1MB,在高速、高延迟和高带宽网络上性能不佳,因为无法传输足够多的数据导致测试不准确。
因此如果用户确实需要使用 iPerf3,请通过 ESnet 官网下载。
推荐用户使用微软维护的测试工具:
詹姆斯凯尔向开发者和网络工程师推荐 ntttcp 和 ctsTraffic,这两个都是微软维护的综合网络基准测试工具,其中最新版 ntttcp 在 GitHub 上开源,兼容 Windows 和 Linux 系统,也就是说可以测试不同的系统组合,例如 Windows – Windows、Windows -Linux、Linux – Windows 以及 Linux – Linux。
ctsTraffic 仅限于 Windows – Windows 测试,专注于端到端的良好吞吐量场景,开发者可以根据需要进行选择。
原文地址:https://techcommunity.microsoft.com/t5/networking-blog/three-reasons-why-you-should-not-use-iperf3-on-windows/ba-p/4117876+
.