-
Notifications
You must be signed in to change notification settings - Fork 364
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
Make tunnel csum option configurable and default to false #4250
Conversation
Codecov Report
@@ Coverage Diff @@
## main #4250 +/- ##
==========================================
- Coverage 62.26% 60.17% -2.09%
==========================================
Files 385 385
Lines 54501 55019 +518
==========================================
- Hits 33933 33110 -823
- Misses 18069 19433 +1364
+ Partials 2499 2476 -23
*This pull request uses carry forward flags. Click here to find out more.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making it default to false could avoid checksum issues caused by checksum offload in some virtual and physical network adapters.
Is that only observed when the Node network is itself an overlay? Otherwise, this checksum is the outermost transport checksum, so it's hard to imagine that there would be an issue there.
I remember some adapters didn't calculate UDP checksums correctly when tx-udp_tnl-segmentation and tx-udp_tnl-csum-segmentation were on, but I don't know if it's double encap or not, let me check with people who experienced that issue. |
Just found that was bad inner checksums in single encap scenario and you were the one who troubleshooted the issue. So yes, AFAIK, the issue only happened with double encap. |
ff3279f
For Linux kernel before Mar 2021, UDP checksum must be present to trigger GRO on the receiver for better performance of Geneve and VXLAN tunnels. The issue has been fixed in Linux kernel [1], thus computing UDP checksum is no longer necessary. This patch exposes a configuration parameter TunnelCsum which determines whether to compute UDP encapsulation header (Geneve or VXLAN) checksums on outgoing packets and makes it default to false. It should only be set to true when Nodes run an unpatched Linux kernel and poor transfer performance is observed. [1] torvalds/linux@89e5c58 Signed-off-by: Quan Tian <[email protected]>
Latest change fixed windows unit test |
/test-all |
/test-all |
@jianjuns @antoninbas @luolanzone may I get another approval? |
…4250) For Linux kernel before Mar 2021, UDP checksum must be present to trigger GRO on the receiver for better performance of Geneve and VXLAN tunnels. The issue has been fixed in Linux kernel [1], thus computing UDP checksum is no longer necessary. This patch exposes a configuration parameter TunnelCsum which determines whether to compute UDP encapsulation header (Geneve or VXLAN) checksums on outgoing packets and makes it default to false. It should only be set to true when Nodes run an unpatched Linux kernel and poor transfer performance is observed. [1] torvalds/linux@89e5c58 Signed-off-by: Quan Tian <[email protected]>
For Linux kernel before Mar 2021, UDP checksum must be present to trigger GRO on the receiver for better performance of Geneve and VXLAN tunnels. The issue has been fixed in Linux kernel [1], thus computing UDP checksum is no longer necessary.
This patch exposes a configuration parameter TunnelCsum which determines whether to compute UDP encapsulation header (Geneve or VXLAN) checksums on outgoing packets and makes it default to false. It should only be set to true when Nodes run an unpatched Linux kernel and poor transfer performance is observed.
[1] torvalds/linux@89e5c58
Signed-off-by: Quan Tian [email protected]
I have confirmed the following distributions have included the above patch:
Making it default to false could avoid UDP checksum issues caused by checksum offload in some virtual and physical network adapters.