FECの仕組みとノイズ耐性

なんと、一年ぶりの更新ですみません。
本日は、お客様から寄せられたご質問への回答についてみなさんにもご覧いただこうと思いました。

問:Modulation ProfileにあるFECの仕組みと、ノイズ耐性との関連は?

答:
 FECのパラメータの決め方は、DOCSIS RFI 第六章 PHYSICAL MEDIA DEPENDENT SYBLAYER SPECIFICATION
URL:http://www.cablelabs.com/specifications/CM-SP-RFIv2.0-C02-090422.pdf
に従って求めることができます。
 基本的には、以下2点との関連性から決定するすることになります。

1. 耐ノイズ性能
2. スループット

 FECはヘッダーであるTとデータペイロード部のKから成り立っており、合わせてCodewordという単位で送出されます。
 データペイロードであるFEC Kを小さくして、ヘッダーのFEC KおよびPreambleを長くすると耐ノイズ性能が上がりますが、CPEから送信されてくるEthernet Frameを小さくFragmentすることになるので、Fragment:De-fragmentによる遅延、さらには一度に送信できるトラフィック量が小さくなることによって、スループットも遅くなってしまいます。
 逆に言えば、スループットをどれくらいにするのかによって耐SNR値が決まり、また、耐SNR値をどれくらいにするのかによってスループットが決まることとなります。

 さて、FECのヘッダーである、FEC Tをどのサイズにするかによって誤り訂正の強さが決まり、どれくらいのエラーまで耐えられるかが決まりますが、なぜなのでしょうか。
 実は、それぞれのヘッダーFEC Tには自分の前にあるCodewordのデータが記録されており、万が一自分自身がノイズで破損してしまっても、その前後のCodewordのFEC Tから冗長化されたデータを取り出し、復元させることが可能になっているのです。
 この方法を、一般的は「前方誤り訂正=Forward Error Correction=FEC」
と呼んでおり、MPEGなどでも使われています。

 次に、ノイズ耐性との関連性ですが、Modulation Profileのパラメータの中には、ノイズ耐性に関連するもがいくつもあります。

・FEC T(設定値:0〜16、ただし、実際のModulation Profileへの設定は、T×2になります)
 前述の通り、値を大きくすればするほど耐ノイズ性能が高くなります。ただし、FEC T×2+FEC K=18〜255Byteと、Codeword全体のサイズが決められているため、大きくした分、データのペイロードであるFEC Kのサイズを小さくしなければなりません。
 ホワイトノイズやインパルスノイズ、CWノイズへの耐性を高めるのに有効ですが、FEC T=0とすると、前方誤り訂正は行われません。

・FEC K(設定値:16〜253)
 データペイロード部にあたるので、サイズを大きくするとスループットが高くなり、小さくするとスループットは低くなります。
 しかし、小さくすることでインパルスノイズへの耐性を高めることができます。

・Preamble Length
 各FECブロックの先頭に付けることで、FECのCodewordフレーム全体の前方誤り訂正を行うことができるようになります。
 サイズを大きくすればするほど耐ノイズ性能が高まりますが、その分、Codewordの前につくヘッダーが大きくなり、スループットが低下します。
 一般的には、この値を大きくするとインパルスノイズへの耐性が高まると言われていますが、わたしが試験した結果では、ホワイトノイズへの耐性も同じように高まることが確認
できました。

・Interleaving Depth
 FEC Tには自分のシーケンス番号の前の番号のCodewordのデータが載りますが、連続したシーケンス番号のまま流れていると、ちょっと長めのインパルスノイズが混入して複数のCodewordが破損した場合、自分のデータが冗長されているCodewordも一緒に破損してしまい、お互いを復元することができなくなってしまいます。
 このため通常は、シーケンス毎に番号を連続して並べるのではなく、ランダムに配置して連続するCodewordがいっぺんに壊れることが少なくなるようにする方法が取られており、この方法をInterleavingと呼んでいます。
 Interleavingの並べ替えを複雑にすればするほどインパルスノイズへの耐性が高まりますが、ランダム化する際と、復号化する際の遅延がより大きくなるため、その分スループットが低くなります。

Ingress Noise Cancellation
 これは、Broadcom社のBCM3140に搭載されている機能の一つで、上り信号に混入したノイズ成分に対して逆位相をかけ、ノイズを消去する機能です。
 ちょうど、ノイズキャンセリングヘッドホンで使われている仕組みと同じでチップの性能に依存しますが、100usec以上の長さのノイズが混入した場合に有効です。
 この機能をEnableにしてもDisableにしても、スループットへの影響はありませんが、チップ上でデジタルフィルターを生成するまでの間、パケットロスが発生する可能性があります。


以上、参考になれば幸いです。
なお、Modulation Profileの調整についてご質問などがあれば、ぜひご遠慮なくお知らせ下さい。