-
Notifications
You must be signed in to change notification settings - Fork 385
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
netkvm: For tunnel protocols like GRE, support the inner layer IP and port as elements of the RSS five-tuple algorithm #978
Comments
@zjmletang Is your work based on the virtio-net spec changes on the matter? If yes, please share the code. |
|
@zjmletang The existing spec defines RSS hash calculation the same way as WDK defines it, i.e. for outer IP:port. Latest addition might include additional hash types, I remember some discussion at least. But if we discuss the feature (GRE/inner hash calculation) let's start from a) GRE support under Windows, b) use case, c) test setup |
@ybendito Could you please guide me on where to find information regarding the use of outer IP and port for GRE (Generic Routing Encapsulation)? I have been searching but haven't found any documentation on this matter. Even though I've reviewed the hash types on https://learn.microsoft.com/en-us/windows-hardware/drivers/network/rss-hashing-types, it doesn't seem to specify whether GRE utilizes the outer or inner IP/port. |
@zjmletang AFAIR, with limited responsibility: |
@ybendito ,The following is for discussion purposes only, as I have limited knowledge of the Linux kernel and there may be inaccuracies. I've noticed that Linux kernel's RPS seems to support parsing the inner protocols of GRE. To my understanding, in Linux, the RSS function is handled within the kernel. In contrast, for Windows, RSS is implemented within drivers. Correspondingly, if RPS in Linux supports GRE, then for our Windows drivers, there might be a necessity to support parsing the inner protocols of GRE as well. Perhaps we don't need to support all inner GRE protocols, but just focus on supporting scenarios where the inner protocols are UDP, TCP, and the like. |
@zjmletang Let's focus on Windows. |
@ybendito Okay, thank you. I've understood your point, and indeed, I also think the roadmap you mentioned is the more reasonable one. |
Is your feature request related to a problem? Please describe.
In tunnel protocols like GRE, the outer layer protocol's IP and port are always the same, resulting in network packet reception being consistently scheduled on the same CPU.This can lead to a decrease in network reception efficiency
Describe the solution you'd like
For tunnel protocols like GRE, is it possible for the RSS five-tuple algorithm to support the inner layer IP and port as elements of the five-tuple?
Additional context
Currently, I have modified the code in the driver to support the inner layer IP and port for the GRE protocol. The effect is quite significant as our QPS has increased from 30000 to 140000. Therefore, I am considering whether we can consider this as our baseline solution.
The text was updated successfully, but these errors were encountered: