最近升级到Debian 11 bullseye
,我们的Docker swarm node
彼此交谈时遇到困难,并开始断开一些连接。
经过多次谷歌搜索后,我们偶然发现了这些线索:
特别是这个命令解决了这个问题:
ethtool -K <interface> tx-checksum-ip-generic off
虽然我很高兴这解决了这个问题...但我有点担心,因为我无法弄清楚该设置的实际作用。
我发现它禁用了某种校验和(看起来可能是通过网络传入的数据包的 UDP 或 TCP 校验和),并且可能禁用将该校验和卸载到硬件(也在软件中进行校验和?还是在 CPU 上? ),但我很难找出除此之外的任何细节/如果这个解释是正确的。
同样,我是否应该担心将其关闭?会影响性能吗?会导致其他网络问题吗?
如果任何人都可以提供有关其具体用途的任何详细信息,以及它是否有我应该关注/度量/测量的任何其他影响,我将非常感激!
谢谢!
ethtool 中的 tx-checksum-ip-generic 卸载功能与传出 IP 数据包的校验和计算相关。启用后,它将 IP 校验和的计算卸载到网络接口卡的硬件,这可以通过减少 CPU 开销来提高性能。但是,在某些情况下,在某些网卡或特定网络环境中启用此卸载功能可能会导致问题,包括连接断开和网络问题。
IP 校验和的计算是用于验证 IP 数据包在网络传输过程中的完整性的过程。它涉及对数据包的标头和有效负载数据执行数学计算以生成校验和值。该校验和值包含在数据包的标头中。
当网络设备收到IP数据包时,它会使用相同的算法重新计算校验和,并将其与数据包标头中的校验和值进行比较。如果计算出的校验和与标头中的校验和匹配,则表明数据包在传输过程中没有损坏。
通过使用 ethtool 命令禁用 tx-checksum-ip-generic 卸载,您将指示网络接口在软件中计算 IP 校验和,而不是将其卸载到硬件。禁用此卸载已解决 Docker 群节点中的连接问题。
关于禁用此功能的影响,可能会因您的特定网络环境和硬件而异。在大多数情况下,禁用卸载不会显着影响性能。但是,建议在禁用卸载后监视网络性能并观察是否有任何不利影响。如果您没有注意到对网络性能有任何负面影响或遇到任何其他网络问题,则将其禁用应该是安全的。
请务必注意,影响和行为可能会因网卡、驱动程序和网络环境而异。因此,始终建议在特定设置中测试和评估效果,以确保稳定性和最佳性能。
“ethtool 中的 tx-checksum-ip-generic 卸载功能与传出 IP 数据包的校验和计算相关。启用后,它将 IP 校验和的计算卸载到网络接口卡的硬件,这可以通过减少 CPU 开销来提高性能”。刚刚在我的linux机器上检查了这个声明,卸载的校验和计算实际上是传输层校验和计算而不是“ip校验和”。您可以通过 tcpdump 捕获来确认这一点。
关闭此开关确实会对网络性能造成一些影响。因为一些以前由网卡处理的工作现在由内核使用宝贵的CPU来处理。但据我所知,性能损失并不严重。也许 20% 到 40% 取决于您的系统。