ブロック誤り率
送信したブロック(電文、フレーム、パケットなど)のうち、1ビット以上の誤りを含むものの割合。
イマシルちゃんの解説
データを送るときは、ある程度の長さで区切ったまとまりごとに送って、
「このまとまりは壊れてないかな?」ってチェックするんだ。
1ビットでも化けてたら、そのまとまりは丸ごと送り直し!
だから「何ビット化けるか」より「何個のまとまりが壊れるか」のほうが大事なこともあるんだよ。
100バイトの電文なら800ビット。
1ビットが化ける確率が 10⁻⁵ なら、800ビットのどれかが化ける確率はだいたい 800 × 10⁻⁵ = 0.008。
これを2,000個送ったら、2,000 × 0.008 = 16個くらいが壊れちゃう計算だね!
より深い解説
定義
ブロック誤り率は、次の式で定義される。
ブロック誤り率 = 誤りを含むブロックの数 ÷ 送信したブロックの数
「ブロック」の部分には、文脈に応じて 電文、フレーム、パケットなどが入り、それぞれ電文誤り率、フレーム誤り率、パケット誤り率とも呼ばれる。
ビット誤り率からの求め方
1ブロックの長さを n ビット、ビット誤り率を p とする。各ビットの誤りが独立に起こるとすると、1ブロックのすべてのビットが正しく届く確率は (1 − p)ⁿ である。ブロックに1ビットでも誤りがあれば、そのブロックは誤りとなるので、
ブロック誤り率 = 1 − (1 − p)ⁿ
となる。
近似式「n × p」
p が十分に小さく、n × p も1よりずっと小さい場合は、次の近似が成り立つ。
1 − (1 − p)ⁿ ≒ n × p
これは、(1 − p)ⁿ を展開したときに p² 以降の項がほとんど0になるためで、意味としては「1ブロックに2ビット以上の誤りが同時に起こることはほぼない」と見なしていることになる。
例:n = 800ビット、p = 1×10⁻⁵ の場合
| 計算方法 | 値 |
|---|---|
| 厳密な式 1 − (1 − 10⁻⁵)⁸⁰⁰ | 約 0.007968 |
| 近似式 800 × 10⁻⁵ | 0.008 |
差はごくわずかで、試験の計算問題では近似式で十分である。
誤りブロック数の計算手順
「誤りが発生する電文は平均いくつか」と問われた場合は、次の手順で求める。
- 電文の数を求める:全データ量 ÷ 1電文の長さ
- 1電文のビット数を求める:バイトなら × 8
- 1電文が誤る確率を求める:1電文のビット数 × ビット誤り率
- 誤り電文の数を求める:電文の数 × 1電文が誤る確率
例:200,000バイトを100バイトずつの電文で送る、ビット誤り率1×10⁻⁵
- 200,000 ÷ 100 = 2,000電文
- 100 × 8 = 800ビット
- 800 × 10⁻⁵ = 0.008
- 2,000 × 0.008 = 16電文
結果は「全ビット数 × ビット誤り率」(1,600,000 × 10⁻⁵ = 16)と同じになる。近似が成り立つ範囲では、誤り1ビットがちょうど1つの電文を誤らせると見なせるためである。
ブロック長と伝送効率のトレードオフ
ブロック長は、伝送効率を左右する重要な設計要素である。
- ブロックを長くする:ヘッダなどの制御情報の割合が減って効率が上がる。一方で、ブロック誤り率が上がり、再送されるデータ量も大きくなる。
- ブロックを短くする:ブロック誤り率が下がり、再送の量も小さくなる。一方で、制御情報の割合が増えて効率が下がる。
そのため、ビット誤り率が高い回線(無線回線など)では短いブロックが、誤り率が低い回線(光ファイバなど)では長いブロックが有利になる。データセンター内でジャンボフレームが使われるのは、誤り率が極めて低く、長いフレームの利点を生かせるためである。
誤りの検出
ブロック内の誤りは、イーサネットであれば FCS(CRC)によって検出される。誤りを検出したブロックは破棄され、必要に応じて上位層で再送される。