Iperf: 将默认 UDP 包大小减小到物理 MTU - 在 Windows 上使用 WSA 注册 IO 来接收 UDP 包

创建于 2021-01-25  ·  4评论  ·  资料来源: esnet/iperf

我发现,UDP RSS 队列不起作用的原因是什么:Intel(R) Ethernet Converged Network Adapter X550-T2 即使已配置也不会发送 Jumbo 包(其他 NIC 会发送),因此所有 UDP 包都大于默认的 1500MTU 被拆分成 IP 包。 IP 包没有端口,UDP-RSS-Hashing 算法不起作用。 即使它知道 IP 包是 UDP 包的一部分。

唯一的方法是将 iperf 发送端的 MTU 大小减小到物理 MTU。
此外,当使用默认的 WINSOCK API 时,Windows 不会从内核接收多个 UDP 包。 这将导致非常高的 CPU 负载。 要解决这个 iperf 应该使用 WSA Registered I/O API。

_最初由@Febbehttps://github.com/esnet/iperf/issues/1049#issuecomment -766829448_ 中发布

最有用的评论

提交 PR #1119 添加用于设置不分段标志的选项。

所有4条评论

我很高兴您能够找出导致此问题的原因! 不幸的是,ESnet 在 Windows 上不支持 iperf3,所以如果有解决方案,它必须来自社区(以及不破坏支持平台的 iperf3)。

“ESnet 在 Windows 上不支持 iperf3”是否意味着您作为 ESnet 不会解决这个问题,但您会接受来自社区的 PR?

据我所知,RSS-Queues 也用于 Linux 平台,所以即使在那里,至少添加一个标志来禁止 udp 的包碎片,而不是使用默认的 -l 8K 标志是有意义的。

“ESnet 在 Windows 上不支持 iperf3”是否意味着您作为 ESnet 不会解决这个问题,但您会接受来自社区的 PR?

如果 PR 不破坏功能(如果可能,使用条件编译,树中有几个示例)或导致 iperf3 设计的设计发生重大变化,我们将从社区中获取 PR。 我们没有能力在我们的环境中实际测试特定于 Windows 的 PR,因此让 PR 被接受的最佳机会是它是否小巧且易于非 Windows 开发人员理解。

提交 PR #1119 添加用于设置不分段标志的选项。

此页面是否有帮助?
0 / 5 - 0 等级