Skip to content
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

Open
Febbe opened this issue Jan 25, 2021 · 4 comments

Comments

@Febbe
Copy link

Febbe commented Jan 25, 2021

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)

@bmah888
Copy link
Contributor

bmah888 commented Jan 25, 2021

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).

@Febbe
Copy link
Author

Febbe commented Jan 27, 2021

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.

davidBar-On added a commit to davidBar-On/iperf that referenced this issue Jan 31, 2021
@bmah888
Copy link
Contributor

bmah888 commented Feb 1, 2021

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.

davidBar-On pushed a commit to davidBar-On/iperf that referenced this issue Feb 2, 2021
@davidBar-On
Copy link
Contributor

davidBar-On commented Feb 2, 2021

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants