Iperf: Reduce default UDP Package size to physically MTU - use WSA Registered IO on windows to receive UDP packages

Created on 25 Jan 2021  ·  4Comments  ·  Source: esnet/iperf

I found out, what's the reason, that the UDP RSS Queues aren't working: The Intel(R) Ethernet Converged Network Adapter X550-T2 does not send Jumbo Packages even if configured (other NIC does), so all UDP packages larger than the default 1500MTU are split into IP packages. IP packages do not have ports and the UDP-RSS-Hashing algorithm can't work. Even if it would know that the IP package is part of an UDP package.

The only way is to reduce the MTU size on the sending side of iperf to the physically MTU.
Also windows does not receive more than one UDP package from the kernel, when using the default WINSOCK API. Which will result in very high CPU load. To solve this iperf should use the WSA Registered I/O API.

_Originally posted by @Febbe in https://github.com/esnet/iperf/issues/1049#issuecomment-766829448_

Most helpful comment

Submitted PR #1119 to add option for setting the don't fragment flag.

All 4 comments

I'd glad you were able to find out what's causing this problem! Unfortunately ESnet doesn't support iperf3 on Windows, so if there's a solution it's going to have to come from the community (as well as not break iperf3 for supported platforms).

Does "ESnet doesn't support iperf3 on Windows" mean, that you as ESnet won't fix that, but you'll accept PR's from the community?

As I know RSS-Queues are also utilized on Linux platforms, so even there it would make sense to, at least, add a flag to forbid package fragmentation for udp, instead of using the default -l 8K flag.

Does "ESnet doesn't support iperf3 on Windows" mean, that you as ESnet won't fix that, but you'll accept PR's from the community?

We'll take PRs from the community if they don't break functionality (use conditional compilation if possible, there are several examples in-tree) or cause major changes to the design of the iperf3 design. We don't have the ability to actually test PRs specific to Windows in our environment, so the best chance for getting a PR accepted is if it's small and easily-understood by non-Windows developers.

Submitted PR #1119 to add option for setting the don't fragment flag.

Was this page helpful?
0 / 5 - 0 ratings