CRC 错误检测和未检测到的错误概率

Posted

技术标签:

【中文标题】CRC 错误检测和未检测到的错误概率【英文标题】:CRC error detection and undetected error probabilities 【发布时间】:2020-10-25 04:04:03 【问题描述】:

如果我们有一个大文件,比如说 1 PB,可以检测所有错误的最佳 CRC​​ 是什么? 32 位足够吗?

我还听说undetected error rate (packet or chunk) is= BitR* BER * 0.5^k 其中K 是CRC 的FSC。在 CRC 中 32 k 是 31

我想知道我们是否有更大的数据包或更小的数据包这将如何影响 CRC...从这个等式来看,它根本没有影响。

【问题讨论】:

32 位 CRC 可以检测最多 2^31-1 位的消息中的单个 32 位突发。但是,只有少数特定的 32 位 CRC 可以检测多达 7 个随机位错误,并且这仅限于最多 1024 位的消息,包括 CRC,或 992 个数据位 + 32 个 CRC 位。查看32 bit CRC Zoo 并查看注释以获取解释。检测 9 位错误仅限于消息长度 100 数据 + 32 CRC 位。 链接到analysis of crc undetected error的例子 通常在该链接中,失败的几率包括错误的概率:1 - (1-BER)^n,其中 BER 是误码率,n 是位数(即计算 1 减去零位错误的概率)。 【参考方案1】:

“足够”取决于您对误报的容忍度。给定一个 CRC 或任何其他好的散列,您可以接受没有在任何一条消息中检测到错误的概率是多少?

如果你称它为 p,那么你需要的 CRC 或散列的长度,nn = ceiling(–log 2(p)).

请注意,这不取决于消息的长度。千字节,艾字节,等等。除非创建、发送或存储消息的费用会影响您认为可以接受的p

对于特别昂贵的数据或通过不可信渠道发送的数据,您可能需要考虑错误纠正码,例如 Reed-Solomon 或 BCH 码。

【讨论】:

我想知道,如果我在不同的网络层执行多个 CRC,那么整个未检测到的错误可能是什么? 如果它们在相同数据上是相同的 CRC,那么它的概率与一个相同。如果 CRC 不同(使用不同的多项式),则误报概率会成倍增加。 没有。不同的 CRC 会导致独立的误报概率。因此,这些概率可以相乘。 你提到```如果CRC不同(使用不同的多项式),那么误报概率会成倍增加```这是有道理的,这意味着未检测到的错误概率会降低,我想知道是有什么参考资料或论文吗? 您能帮我解决我的新问题吗? ***.com/questions/67783861/…

以上是关于CRC 错误检测和未检测到的错误概率的主要内容,如果未能解决你的问题,请参考以下文章

错误检测 CRC

是否可以使用 CRC 进行基本的纠错?

常用校验码及示例

交换机的这些难题天博告诉你怎么解决

#include 在 vscode 中检测到的错误

软件安全之CRC检测