2012-02-15 4 views
2

ネットワークコーディングを使用してファイルを送受信できるようにするために、ビットトレントライブラリー(またはYAIRCCのような一部のエクステンション)を作成したいと考えています。これを行うには、作品の線形結合についてピアにメッセージを送る必要があります。これどうやってするの? LTEPのような拡張機能を使用する必要がありますか、それとも他の方法がありますか?ネットワークコーディングBittorrentライブラリ

+0

「ネットワークコーディングを使用して」と正確には何を言いますか?簡単な解決策はxmlrpc経由のrTorrentなどのAPIを使用して既存のクライアントをリモートコントロールすることです。 – pyroscope

+0

これは、ネットワークコーディングでファイルをコーディングし、線形結合を他のユーザーに送信することを意味します。受信と同じです。 – hottea

答えて

1

LTEPを使用して、標準のREQUESTおよびPIECEメッセージの代わりに両方のピアでサポートされている新しいメッセージのサポートを宣伝することをお勧めします。それは下位互換性があります。ネットワークコーディングを使用すると、リクエストメッセージがより簡単になります。たとえば、どのブロックを希望するかを指定する必要はありません。線形依存ブロックを最小限に抑えるために、特に関心のあるベクタに関するいくつかの情報を指定することは、依然として有用な場合があります。

ビットトレントの実装を拡張する場合は、libtorrentをご覧ください。このような拡張メッセージを追加するためのプラグインインタフェースを持っています。

ここで、パフォーマンスの改善がディスクのパフォーマンスの低下によって完全に犠牲になると思います。ダウンロードの最後に結果として得られる方程式システムを解くには、依存関係を解くために、すべてのブロックを何度か読み直し(おそらく書き込む)必要があることに留意してください。これにより、かなりの時間がかかります。

もっと合理的なアプローチは、私の考えでは、実際のブロックの数を制限することです。そうすれば、ネットワークコーディングの冗長性の利点のいくつかをトレードオフすることができますが、最終的にはそれを解決する際のパフォーマンスが向上します。実際には、最初のアルゴリズムがあまりにもうまく機能しているため、ネットワークコーディングによって利益が得られるとは考えにくいと主張できます。

どちらの方法でも、2つのブロックを組み合わせるだけのXORブロックを使用するより簡単な方法をお勧めします。そうすれば、リクエスタはダウンロードするXORブロックを明示的に指定する必要があります。

+0

ありがとうございます。私はネットワークコードを使用しています。なぜなら、それは私の仕事なので、そこから利益が得られるかどうかは考えていません。 LTEPで新しいタイプのメッセージやコンテンツを作成するにはどうすればよいですか?新しい辞書? – hottea

+0

例については、http://www.rasterbar.com/products/libtorrent/libtorrent_plugins.htmlこちらをご覧ください。ut_metadata.cppまたはsmart_ban.cpp – Arvid

関連する問題