“sudo ethtool -Ktx-checksum-ip-generic off” 到底起什么作用?我是否应该担心将其关闭?

“sudo ethtool -Ktx-checksum-ip-generic off” 到底起什么作用?我是否应该担心将其关闭?

最近升级到Debian 11 bullseye,我们的Docker swarm nodes 无法互相通信,并且开始丢失一些连接。

经过多次 Google 搜索后,我们偶然发现了这些线索:

具体来说,这个命令可以解决这个问题:

ethtool -K <interface> tx-checksum-ip-generic off

虽然我很高兴这个解决了这个问题......但我有点担心,因为我无法弄清楚这个设置到底是什么确实如此

我知道它会禁用某种校验和(看起来可能是通过网络传入的数据包的 UDP 或 TCP 校验和),并且可能禁用将该校验和卸载到硬件(也在软件中执行校验和?或者在 CPU 上?),但我无法找出除此之外的任何具体细节/如果这个解释是正确的。

同样地,我应该担心是否关闭此功能?这会影响性能吗?这会导致其他网络问题吗?

如果有人能提供关于这到底做什么的详细信息以及它是否有任何其他影响我应该注意/衡量/测量,我将非常感激!

谢谢!

答案1

ethtool 中的 tx-checksum-ip-generic 卸载功能与传出 IP 数据包的校验和计算有关。启用后,它会将 IP 校验和的计算卸载到网络接口卡的硬件上,从而通过减少 CPU 开销来提高性能。但是,在某些情况下,在某些网卡或特定网络环境中启用此卸载功能可能会导致问题,包括连接中断和网络问题。

IP 校验和的计算是用于验证 IP 数据包在网络上传输时的完整性的过程。它涉及对数据包的报头和有效载荷数据进行数学计算以产生校验和值。此校验和值包含在数据包的报头中。

当网络设备收到 IP 数据包时,它会使用相同算法重新计算校验和,并将其与数据包报头中的校验和值进行比较。如果计算出的校验和与报头中的校验和相匹配,则表明数据包在传输过程中没有损坏。

通过使用 ethtool 命令禁用 tx-checksum-ip-generic 卸载,您可以指示网络接口在软件中计算 IP 校验和,而不是将其卸载到硬件。禁用此卸载已解决 Docker 群集节点中的连接问题。

至于禁用此功能的影响,它可能因您的特定网络环境和硬件而异。在大多数情况下,禁用卸载不会显著影响性能。但是,建议监控网络性能并观察禁用卸载后是否有任何不利影响。如果您没有注意到对网络性能的任何负面影响或遇到任何其他网络问题,则保持禁用状态应该是安全的。

需要注意的是,影响和行为可能因网卡、驱动程序和网络环境而异。因此,始终建议在特定设置中测试和评估效果,以确保稳定性和最佳性能。

答案2

“ethtool 中的 tx-checksum-ip-generic 卸载功能与传出 IP 数据包的校验和计算有关。启用后,它会将 IP 校验和的计算卸载到网络接口卡的硬件上,从而通过减少 CPU 开销来提高性能。” 刚刚在我的 Linux 机器上检查了这个说法,卸载的校验和计算实际上是传输层校验和计算,而不是“ip 校验和”。您可以通过 tcpdump 捕获来确认这一点。

关闭此开关确实会对网络性能造成一些影响。因为一些过去由网卡处理的工作现在由内核使用宝贵的 CPU 来处理。但据我所知,性能损失并不严重。可能从 20% 到 40% 不等,具体取决于您的系统。

相关内容