通常“禁用 TCP 校验和卸载”是否有意义?

网络工程 硬件 校验和
2021-07-11 04:06:17

在我们交付给客户的 PC 工作表中,我找到了始终在 NIC 上“禁用 TCP 校验和卸载”的说明。通过这些 NIC,PC 连接到客户的 LAN,并且它们必须正常工作。

一位经验丰富的同事对为什么需要这条指令的解释是“NIC 总是有问题,因此会导致很多问题。”

现在,我可以想象他们几年前就遇到过这样的问题,并且从那时起就一直这样做。

但是由于卸载通常默认开启,我也可以想象我们这些天获得的 NIC 有所改善。此外,我们只选择由知名制造商生产的坚固且制作精良的 PC。

在我今天可以购买的 PC 的 NIC 上始终“禁用 TCP 校验和卸载”是否有意义?或者我是否可以从工作表中删除上述工作指令而不必担心客户现场的中断?

2个回答

硬件卸载功能可能有错误,但它们通常是有益的。我只在某些确实有问题的 NIC 或供应商上停用它们。

然而,在工作站/PC 上,网络负载通常从低到非常低 - 从卸载中获得的好处很少,但仍然存在硬件/驱动程序出错的风险。这可能促使工作表的作者在任何情况下都将其停用。

在服务器中,有更多的网络流量和其他负载,因此卸载的潜在收益更大。此外,服务器 (NIC) 驱动程序通常经过更好的测试并且可能更稳定。

选择权仍然在你。;-)

我刚刚花了大约 2 天的时间调试并弄清楚如何解决一个问题,该问题似乎归结为在英特尔 NUC 中使用 linux 和英特尔以太网驱动程序/芯片组卸载有问题的 TCP。简单的谷歌搜索显示,仅在这个驱动程序 (e1000e) 中有 1000 多个报告可以追溯到 10 多年前,其中许多似乎未修复,但可以通过禁用将一个或另一个功能卸载到 NIC 来解决。(当然,其中一些是硬件问题,例如损坏的电缆或损坏的开关,但许多人已经排除了这一点,那里肯定存在大量实际问题-并且无法通过禁用卸载来修复损坏的电缆/损坏的开关.)

问题的表现很简单,大约一天一次,网卡会暂停 30 秒左右,并且一些(但不是全部)正在进行的 TCP 会话将因损坏的数据包而中止。在我经历过的许多大公司中,这属于“真的很烦人,但几乎不值得用户打电话给帮助台,而且任何人调查和找出原因的可能性都非常低”类别。

所以答案是现代网卡仍然很糟糕,我以前认为英特尔是“众所周知的好”以太网网卡供应商......

老实说,这让我非常困惑 - 为什么英特尔不解决这些问题,为什么即使是最前沿的 linux(我尝试过但没有解决问题)默认启用这个驱动程序/芯片组上的校验和卸载,当它已知是很多问题的根源?

在千兆以太网连接上的现代处理器上卸载校验和的好处微乎其微。

所以总的来说,我肯定会默认禁用卸载。在大多数非服务器情况下,好处充其量是最小的,缺点非常糟糕(想象一下 1,000 名桌面用户每天都损失 30 秒 - 即使采用最低工资工人的低端数字,忽略机会成本并假设他们可以立即恢复到 30 秒结束时的位置,您正在查看浪费的生产力 每天 100 美元或每年损失约 25,000 美元 - 实际上要高得多,因为这是一个最乐观的数字。