Mackey's Lab

博士を取るまでの備忘録

AL-FEC の利用

FEC (Forward Error Correction): 前方誤り訂正は非常に多くの分野で利用されている。FEC は伝送データにあらかじめ冗長データを付加することで、各種ノイズによりビット誤りが発生した場合、受信側でその誤り検出と訂正を可能とする技術である。

この FEC をアプリケーション層で利用し、パケットロスなので失われたデータの一部を回復させる目的で作られたものが AL-FEC (Application Layer FEC) である。ネットワークにおけるデータ伝送を伴うアプリケーションの場合、IP 層 (Layer 3) より上の層は二元消失通信路 (BEC) である。つまり 0 と送信されたデータが誤って 1 と受け取られることはあり得ず、その代わり送信されたデータが途中でロスしてしまう可能性がある。つまり消失場所さえアプリケーション側で分かれば AL-FEC には誤り検出機能は不要であり、誤り訂正(消失回復)機能だけ必要となる。そのため、 FEC を Erasure Coding (消失訂正符号)と呼ぶ場合もある。

この AL-FEC を利用したアプリケーション開発をしたいのだが、オープンソースが蔓延するこの世の中で 1 からフルスクラッチで書くには腰が重い。そこでオープンソース実装を探したところ OpenFEC を発見。

OpenFEC.org – home

よっしゃ、アプリケーション開発に簡単に利用できる!と思うのはまだ早い。当然オープンソースにはライセンスの問題が存在する。

OpenFEC のほとんどは CeCCIL-C という GNU/LGPL と似たライセンス形態をとっているためライブラリとしてリンクして利用する分には問題ない。しかし OpenFEC のうち LDPC Staircase に関する部分は CeCCIL という GNU/GPL に似たライセンス形態をとっているため、それを利用したプログラムを作成し・配布するとソースコードの開示が求められる。

つまり、LDPC Staricase をプロプライエタリなソフトウェアから利用するためには自分でコードを書く必要があるのか・・・

LDPC Staircase 自体は RFC5170 に記述されている。

RFC 5170 - Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes

この RFC に関して日本語で簡単に解説しているブログがこちら。

LDPC Staircase の勘どころメモ: 日記

頑張ってプログラム書くか・・・と思ってたところ、このブログの下の方に別のライブラリ情報を発見。

Planète-BCAST home

どうやら OpenFEC の前身のよう。てかこの人たちが RFC5170 書いたんだ・・・なんかいろいろ繋がってくる。このページで配布している LDPC FEC Codes のライセンスは GNU/LGPL なのでかなり自由に利用可能だ。当然今後 LDPC のアルゴリズムを変更したり機能追加する可能性もあるが、その部分のコードを公開さえすれば問題ないので OK!

とりあえずこれをベースに実装をしてみようかな。もしダメだったら・・・あきらめて1から実装するか・・・