网络编码Bittorrent库

时间:2012-02-15 18:52:14

标签: bittorrent

我想编写一个bittorrent库(或者扩展一些像YAIRCC这样的现有库),以便能够使用网络编码发送和接收文件。要做到这一点,我需要向同行发送一条关于我的线性组合的消息。我怎样才能做到这一点?我是否必须使用像LTEP这样的扩展程序,还是有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我建议使用LTEP来宣传对新消息的支持,当两个对等体都支持时,将使用它来代替标准的REQUEST和PIECE消息。这将是向后兼容的。使用网络编码,您的请求消息可以更简单。例如,您不必指定所需的块。指定一些您特别感兴趣的向量的信息可能仍然有用,以最小化线性相关的块。

如果您正在寻找扩展的bittorrent实现,您可能需要查看libtorrent。它有一个插件接口,用于添加这些扩展消息。

现在,我认为无论您希望提高性能,都会因磁盘性能降低而完全消耗掉。请记住,在下载结束时求解结果方程式系统需要您多次重新读取(并可能写入)每个块以解开它们的依赖关系。这可能会花费您大量的时间。

在我看来,更合理的方法是限制任何给定块可以组合的实际块的数量。这样,您可以权衡网络编码的一些冗余优势,但最终可以获得解决它们的性能。事实上,可以说最稀有的算法运行良好,网络编码带来的任何好处都是微不足道的。

无论哪种方式,我都会推荐一种更简单的方法,你只需要将XOR块与其他两个块组合在一起。这样,请求者可能必须明确要下载哪个XOR块。