BitTorrent乐观的Unchoke / Bandwith探测

时间:2014-03-10 06:55:20

标签: p2p bittorrent

在考虑BitTorrent的工作原理时,我想到了一些问题。如果有人可以分享一些可能的回复,我们将不胜感激。

  1. 假设BitTorrent从跟踪器获得50个对等体,然后与其中的20个建立连接以形成对等体。这个对等集是随机选择的还是基于它们的带宽? (我知道将根据其提供的带宽选择未被禁用的对等体)随后,如何为每个连接确定此带宽(ping可以给我们延迟但不是我假设的带宽)

  2. 乐观的unchoke会导致系统中的搭便车问题。考虑到unchoke可能并不总能带来更好的同行,为什么根本不可能放弃这个策略呢? (我假设这个策略可以帮助缓慢带宽的对等端来满足请求,为什么BitTorrent不能采用策略来探测乐观对等体的带宽而不发送数据包;并且为低带宽对等体提供另一个(可能是第5个连接)以便它们不要挨饿。这个第五频道只会传输一小部分带宽而不是其他4个频道。这至少可以阻止搭便车吗?

1 个答案:

答案 0 :(得分:5)

  1. 传统上,对等体是随机选择的。一些客户可能基于先前与同伴的交互或CIDR距离而具有弱偏差。然而,最近有proposal(uTorrent和libtorrent实现)建议一致但均匀分布的对等选择/优先级算法。有关更多信息,请参阅this blog post。每15秒触发一次unchoke算法。然后,对等体按其在过去15秒内发送的字节数进行排序。那些发送最多的人然后被解雇,其余的人被窒息。因此,下载速率是15秒的平均值。

  2. 如果你不乐观地取消同伴,那么你无法向他们证明你比他们的unchoke套装中的其他同伴更好,并且他们永远不会让你退缩。没有乐观的unchokes(也假设你没有允许快速扩展),没有办法开始下载。当你第一次加入时,你没有任何作品,你不能交易第一件,你必须依靠乐观的未加工。在不发送批量数据的情况下估算某人的带宽很难并且可能不可靠。即使你对某人的容量有一个很好的估计,这也不一定意味着你可以获得容量。目前的机制非常强大,因为它不需要对对等体之间的网络设备做出假设(如数据包列车带宽估计需要做的),并且它会查看实际数据。