New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reduce default UDP Package size to physically MTU - use WSA Registered IO on windows to receive UDP packages #1107
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. |
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. |
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 #1049 (comment)
The text was updated successfully, but these errors were encountered: