在思考BitTorrent的工作原理时,我想到了一些问题.如果有人可以分享一些可能的回复,我将不胜感激.
假设BitTorrent从跟踪器获得50个对等体,然后它与其中的20个建立连接以形成对等体.这个对等集是随机选择的还是基于它们的带宽?(我知道将根据提供的带宽选择未被禁用的对等体)随后,如何确定每个连接的带宽(ping可以给我们延迟但不是我假设的带宽)
乐观的unchoke会导致系统中的搭便车问题.考虑到unchoke可能并不总能带来更好的同行,为什么根本不可能放弃这个策略呢?(我假设这个策略可以帮助缓慢带宽的对等端来满足请求,为什么BitTorrent不能采用策略来探测乐观对等体的带宽而不发送数据包;并且为低带宽对等体提供另一个(可能是第5个连接)以便它们不要挨饿.这个第五频道只会传输一小部分频带而不是其他4个频道.这至少可以阻止搭便车吗?
传统上,对等体是随机选择的.一些客户可能基于先前与同伴的交互或CIDR距离而具有弱偏差.然而,最近的一个提议(uTorrent和libtorrent实现)建议一致但均匀分布的对等选择/优先级算法.有关更多信息,请参阅此博客文章.每15秒触发一次unchoke算法.然后,对等体按其在过去15秒内发送的字节数进行排序.那些发送最多的人然后被解雇,其余的人被窒息.因此,下载速率是15秒的平均值.
如果你没有乐观地取消同伴,那么你无法向他们证明你比他们的unchoke集中的其他同伴更好,并且他们永远不会解开你.没有乐观的unchokes(也假设你没有允许 - 快速扩展),没有办法开始下载.当你第一次加入时,你将不会有任何碎片,你不能交易第一件,你必须依靠乐观的未加工.在不发送批量数据的情况下估算某人的带宽很难并且可能不可靠.即使你对某人的容量有一个很好的估计,这也不一定意味着你可以获得容量.当前的机制非常强大,因为它不需要对对等体之间的网络设备做出假设(如分组列车带宽估计需要做的),而是查看实际数据.
| 归档时间: |
|
| 查看次数: |
4225 次 |
| 最近记录: |