Today, during the NEC test, my colleague found that the two devices could not work normally. Through packet capture, the following error was found in the TCP layer of the package:
Checksum: 0xe719 [incorrect, shocould be 0xc2f8 (maybe caused by "TCP checksum offload"?)]
I have searched the internet for a long time, and I have various sayings. However, the common view is that the NIC helps the TCP protocol stack handle checksum errors. That is to say, the checksum itself is handled by the TCP protocol stack, but in order to improve efficiency and reduce the CPU burden, the checksum task is shared with the NIC to improve the throughput.
Therefore, to remove this error, disable the function of the NIC. In Windows, you can directly right-click the NIC attribute to modify it. Here we only record the modification method in Linux:
Ethtool-K eth1 RX off TX off SG off Tso off
You can use ethtool-K eth1 to view Nic attributes.
Offload parameters for eth1:
RX-checksumming: Off
TX-checksumming: Off
Scatter-gather: Off
TCP segmentation offload: Off
But in fact, after I modified it, I continued the test and the problem remained. In addition, in order to avoid the cause of multiple NICs, I still use the local method.
However, it is certain that this checksum does not seem to have any impact on the Application Layer Program.
However, I still want to clarify this issue and write it down for the time being. I will study it later.