word
イーサネットに使用されているCRCは、IEEE803.2CRCという32bitのCRCです。参考文献1※によると、メッセージの大きさ(m)を12,112bit(=1,514byte)とすると、IEEE803.2CRCのHamming距離(d)は、4となるようです。冗長ビット(r)は32bitですから、全体のビット列(n)は、12,144bitになります。
数学的に均等に分布しているとして、Brute Methodで(:強引に計算する手法、単に力技で数えるという意味)計算機を用いて計算すると、補足① に示したA
K
が(参考文献ではWiとあらわしている)、A2=0、A3=0、A4=223,059…..となることが例示されています。(すみません。筆者は検算していません。)
これは、このCRC計算に使用する生成多項式では、2ビット、3ビットエラーでは検知が確実にできるものの、4ビットエラーでは、223,059通りの「正しい符号」が存在することを示しています。
つまりイーサネットで、12,112bit(=1,514byte)のパケットを送った場合、経路上で4ビット化けると、CRCチェックでは検知できない組合せの化け方が、223,059種類有るということです。結構多い気がしますね。
符号(r)を含めた全体のビット数(n)は、12,144bitですから、4ビット化ける組合せは、
この組合せの総数の中で、特定の化け方が発生する確率は、
となります。小さいといえば小さいですが、「0」ではないことがわかるかと思います。
補足リンク① で、「r」ビットのCRCを付加することで、メッセージの空間を広げること、また、補足リンク② で、残存エラーの確率が 1/2
r
だけ薄まることをお話しました。
このときの薄まり方は、32ビットのCRCであれば、
です。いかがでしょうか。通常メッセージが4ビット化けてしまうとおそらく何らかの別な意味のメッセージに変わってしまいますが、32ビットのCRCの効果で、そのような別のメッセージになってしまう確率が、10
-10
すなわち、1/2
r
だけ薄まっているという考え方の実例でもあるといえるでしょう。
※ 参考文献1
Philip Koopman," 32-Bit Cyclic Redundancy Codes for Internet Applications", Preprint of a regular paper to appear in The International Conference on Dependable Systems and Networks (DSN) 2002