CRC 中未检测到的错误概率以及与 link 错误率的关系

undetected error probabilities in CRC and relation to link error rate

未检测到错误的概率 如何随 link 类型 变化?他们有关系吗? 我的意思是,如果 link 有损或具有更高的误码率 这将如何影响 未检测到的错误概率? 有任何公式可以计算吗?

“link类型”真正的意思是通道的误差特征。在具有高误码率的信道上,例如CRC 中的位数 (n) 在每条消息的某处出错(每条消息都获得 CRC),通常的未检测率为 2-n 每条消息适用。它总是至少这么好。这就是你的公式。

当然假设错误是随机的。可以故意应用计算出的错误以使 CRC 保持不变,因此 CRC 无法防止那些有恶意的人。

然而,对于较低的误码率,未检测到的错误概率可以比该公式更好。

然后它变得更复杂。如果您 从不 期望在消息中得到超过 one-bit 的错误,那么 CRC 将 总是 检测错误,无论消息的长度。 (CRC 始终提供奇偶校验。)如果 CRC 多项式的因数为 x+1,则它将始终检测到 奇数位错误。 CRC 还具有我不会涉及的特殊“突发”错误属性。假设您有一个误码率,其中消息中的任何位都可以以该概率翻转。 (Abinary symmetric channel.)

对于消息中给定数量的错误位,您会发现消息长度有限,总是会检测到那么多(或更少)的错误。

This page 显示了许多 32 位 CRC 多项式的这些属性。例如,可以查看带有多项式 0x04c11db7 的常用 32 位 CRC 的条目。它有这个神秘的数字列表:

{4294967263,91607,2974,268,171,91,57,34,21,12,10,10,10}

这些数字分别对应消息中的2、3、4等错误位。每个数字都是最长消息(不包括 CRC)的长度,使用该多项式的 CRC 保证检测到那么多错误。

因此,CRC 将始终在长度高达 91,607 位的消息中检测到三个或更少的位错误。它始终会检测到长度不超过 2,974 位的消息中的四个或更少位错误。

在这种情况下没有简单的公式,因为这些数字是对“代码字”进行详尽搜索的结果,“代码字”是 CRC 为零的模式。这些可以被视为错误模式,可以应用于任何不会导致 CRC 更改的消息。

有公式可以计算 n 位的消息有 k 或更少错误的概率,给定误码率为p。请参阅 binomial distribution 及其近似值。