When the CRC and TCP checksum disagree

When the CRC and TCP checksum disagree
复制标题

当 CRC 和 TCP 校验和不一致时

DOI:
--
复制
发表时间:
2000
期刊:
Conference on Applications, Technologies, Architectures, and Protocols for Computer Communication
影响因子:
--
通讯作者:
C. Partridge
C. Partridge
中科院分区:
--
文献类型:
--
作者:
Jonathan Stone;C. Partridge

文献摘要

被引文献

相似文献

过去两年的互联网数据包跟踪显示,1,100到32,000个数据包中有1个数据包失败,即使在链路级CRC应该捕获40亿分之一错误的链路上也是如此。在某些情况下,校验和失败的比率可能更高:在一个小时的测试中,我们观察到400个数据包中有1个校验和失败。我们调查为什么这么多的错误被观察到,当链路级CRC应该捕捉几乎所有的。 我们已经收集了近500,000个未通过TCP或UDP或IP校验和的数据包。该数据集表明,互联网有各种各样的错误源,这些错误源无法通过链路级检查来检测。我们描述的分析工具,已经确定了近100种不同的错误模式。对数据包错误进行分类,我们可以推断出可能的原因,这些原因可以解释大约一半的观察到的错误。原因涵盖了网络堆栈的整个范围,从内存错误到TCP中的错误。 经过分析,我们得出结论,校验和将无法检测到大约1600万到100亿个数据包中的1个错误。从我们的错误的原因分析,我们提出了简单的变化,几个协议,这将降低未检测到的错误率。即便如此,错误的高度非随机分布强烈建议某些应用程序应该使用应用程序级校验和或等效项。
Traces of Internet packets from the past two years show that between 1 packet in 1,100 and 1 packet in 32,000 fails the TCP checksum, even on links where link-level CRCs should catch all but 1 in 4 billion errors. For certain situations, the rate of checksum failures can be even higher: in one hour-long test we observed a checksum failure of 1 packet in 400. We investigate why so many errors are observed, when link-level CRCs should catch nearly all of them. We have collected nearly 500,000 packets which failed the TCP or UDP or IP checksum. This dataset shows the Internet has a wide variety of error sources which can not be detected by link-level checks. We describe analysis tools that have identified nearly 100 different error patterns. Categorizing packet errors, we can infer likely causes which explain roughly half the observed errors. The causes span the entire spectrum of a network stack, from memory errors to bugs in TCP. After an analysis we conclude that the checksum will fail to detect errors for roughly 1 in 16 million to 10 billion packets. From our analysis of the cause of errors, we propose simple changes to several protocols which will decrease the rate of undetected error. Even so, the highly non-random distribution of errors strongly suggests some applications should employ application-level checksums or equivalents.