稳定延迟。 Wireshark捕获的许多TCP Bad CheckSum数据包

时间:2011-12-05 18:05:07

标签: linux networking tcp driver

我正在编写一些网络软件并尝试最小化并稳定延迟。 我想出了这样的事情,在大多数情况下,远程主机的延迟(发送消息并通过某些协议接收ACK)大约是2毫秒,但有时会有一些波动(立即变为40毫秒然后又变回2毫秒),我无法解释(代码非常简单明了),所以我开始责怪网卡。我通过WireShark发现的第一件事是有很多TCP Bad Checksum数据包?情况有可能吗?这是第一件事,毕竟我发现操作系统(Linux SLED 11)检测到我的英特尔网卡不正确。 lspci命令输出错误的NIC信息。我该如何解决?我应该重新安装驱动程序吗?如果是这样我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:4)

请参阅here有关校验和错误的信息。校验和有时由您的NIC在硬件中计算,因此即使线路上的数据正确,wireshark也会错误地看到它。

除非您有直接的点对点网络连接,否则中间没有任何路由器或交换机,否则您将无法消除所有延迟变化。即使是直接连接,除非您在两端运行实时操作系统,否则无法进行直接连接。队列变满,内存进入和退出,更高优先级的任务运行以及许多其他因素会影响您的延迟。如果要最小化抖动的有害影响,则需要查看抖动缓冲区和滑动窗口协议。

此外,lspci命令显示pci总线上实际检测到的芯片组,并且与它正在使用的驱动程序无关。制造商偶尔更换芯片组,并且它们并不总是与盒子上的品牌相匹配。根据驾驶员的历史记录,名称不一定符合您的期望。如果流量通过,你几乎肯定会使用正确的驱动程序。