我想写一个bittorrent库(或扩展一些已有的库,如YAIRCC),使其能够使用网络编码发送和接收文件。要做到这一点,我需要向同龄人发送关于我的线性组合的消息。我该怎么做呢?我必须使用像LTEP这样的扩展吗,或者有其他方法可以做到这一点?
发布于 2012-02-17 08:28:17
我建议使用LTEP来宣传对新消息的支持,当两个对等体都支持时,将使用LTEP来代替标准请求和片段消息。这将是向后兼容的。使用网络编码,您的请求消息可能会简单得多。例如,你不必指定你想要的块。指定一些您特别感兴趣的向量的信息可能仍然有用,以最小化线性相关的块。
如果你正在寻找一个要扩展的bittorrent实现,你可能想看看libtorrent。它有一个插件接口,可以添加像这样的扩展消息。
现在,我认为您希望的任何性能改进都将完全被磁盘性能的降低所吞噬。请记住,在下载结束时求解得到的方程系统需要您重新读取(可能还会多次写入)每个块,以解开它们之间的依赖关系。这可能会花费你大量的时间。
在我看来,一种更合理的方法是限制任何给定块可以组合的实际块的数量。这样,您可以权衡网络编码的一些冗余优势,但最终可以在解决这些问题时获得性能。事实上,可以说稀有优先算法工作得非常好,以至于网络编码给你带来的任何好处都是微不足道的。
无论哪种方式,我都推荐一种更简单的方法,简单地让XOR块只组合其他两个块。这样,请求者可能必须明确说明要下载哪个XOR块。
https://stackoverflow.com/questions/9299410
复制相似问题