目录

2.5.1 简介... 1

2.5.2 实践中的难点... 1

2.5.3 生产环境中的实际情况... 2

2.5.3 技术框架... 3

2.5.3.1 发布内容... 3

2.5.3.2 对等点分发... 3

2.5.3.3 流水线... 3

2.5.3.4 分片选择... 4

2.5.3.5 稀有优先原则... 4

2.5.3.6 随机选取第一个分片... 4

2.5.3.7 残局模式(endgame mode)... 5

2.5.4 限流算法(choke algorithm)... 5

2.5.4.1 BitTorrent的限流算法... 5

2.5.4.2 优化限流解除(Optimistic Unchoking)... 6

2.5.4.3 反冷落(anti-snubbing)... 6

2.5.5 仅仅上载(upload-only)... 6

2.5.6 参考论文... 6

2.5.1 简介

BitTorrent文件分发系统使用以牙还牙(tit-fortat)的方式来达到帕累托最优(pareto efficiency)的效率,具有前所未有的稳定性和资源利用效率。

当一个文件可用HTTP协议进行访问时,所有的上载成本是把它放到主机上。使用BitTorrent时,当许多人同时下载同一个文件,他们会把自己拥有的文件的一部分传给每一个人。这种机制将上载成本平摊到了每一个下载者身上,因此使一个文件被不限人数的进行下载变得可行。

2.5.2 实践中的难点

实践中大规模部署BitTorrent的难点主要在于运筹(logistical)和稳定性。具体来说有以下几点:

一、如何以较低的代价获取每个对等点(peer)拥有的文件部分的信息以及发送去哪里。

二、高对等点流失率(churn rates),对等点平均保持连接时间仅为数分钟。

三、公平性问题,理想情况下系统应当保证对等点的上传速率与下载速率成正比,但事实上,因为下载速度经常会因为某些原因掉到0,所以让上传和下载速率相关联是困难的。

2.5.3 生产环境中的实际情况

一、使用BitTorrent的决定一般由文件的发行者做出,下载者使用BitTorrent是因为这是唯一可以获取文件的方法。

二、下载者往往会在下载完成后立刻停止上传。

三、系统的实现中会使下载者持续上传(尽管下载完成了)直到进程被结束,这一设计利用了用户在等待下载完成的期间往往不会及时回到计算机前的特点,

四、一个文件上传后,未完成下载的下载者数量会以指数级别的速度急剧上升随后下降。

五、完成下载的下载者数量上升缓慢,在未完成者数量达到顶峰后不久,完成下载的下载者数量也达到顶峰,随后数量以指数级别下降,未完成下载的下载者数量顶峰随着下载完成而下降。

六、上述两种指数级别的下降反映了初始高峰过后的新下载者的加入率。

图一、一个400MB文件上传后的一段时间内下载完成和未完成对等点数量统计

2.5.3 技术框架

2.5.3.1 发布内容

将扩展名为.torrent的文件发布到web服务器上就成功的部署了一个BitTorrent。扩展名为.torrent 的文件包含了文件、文件长度、名字、哈希和追踪器(tracker)的URL信息。追踪器负责帮助下载者找到彼此,它们通过简单的基于HTTP的协议沟通,沟通内容为下载者正在下载什么文件,正在监听哪个端口等,随后追踪器为下载相同文件的对等点回复一系列沟通信息,下载者利用这些信息来互相沟通,沟通所使用的带宽是很小的。

2.5.3.2 对等点分发

所有有关文件下载的运筹问题都由对等点的交互来解决。尽管追踪器是唯一用于寻找对等点和协调的方式,但标准的追踪器算法会返回一个随机的对等点列表。随机图(Random graph)具有很好的稳定性。许多对等点选择算法会生成幂律图(power law graph),使得仅仅在流失一小部分对等点的情况下完成分割(segment)。由于所有的对等点连接都能进行双向传输,为了追踪每个对等点所拥有的部分,BitTorrent将文件切割成固定大小(一般为256KB)的分片(piece),每个下载者告知所有的对等点它所拥有的的部分。为了检验数据完整性,所有分片的SHA1哈希被包含在.torrent文件里面,如果分片没有经过哈希完整性检验,就不会告知对等点拥有这一分片。对等点持续地从所有可得的对等点下载分片。对等点无法从未连接的对等点处下载分片,又是对等点没有它们想要的分片或暂时不允许别的对等点下载,一种禁止别的对等点下载的算法被称为choke,将会在之后讨论。

2.5.3.3 流水线

当BitTorrent在TCP协议上传输数据时,让数个请求一起等待是很重要的,因为这可以避免因不同分片发送间隔的延迟而导致的传输速率下降问题。BitTorrent通过把分片在传输中切割成更小的子分片(sub-piece),子分片大小一般为16KB,数量为5个,通过流水线发送的方式一次性发送。每当一个子分片到达就发送一个新的请求。通过流水线发送的数据数量值一般按充分利用连接的原则进行确定。

2.5.3.4 分片选择

按照好的顺序去下载分片对于性能至关重要,而一个坏的分片选择算法会导致选择下载的分片不是被需要的,上传的分片也不是别的对等点所需要的。BitTorrent关于分片选择的原则是一旦一个子分片被请求,该分片的其他分片应先于其他分片的子分片被请求,这一原则有利于使分片尽可能快的完成下载。

2.5.3.5 稀有优先原则

当要选择下载哪一个分片时,对等点一般选择优先下载它的对等点中所拥有的最少的分片,这原则被称为稀有优先原则。这一原则保证了对等点拥有其他对等点想拥有的分片,当分片被需要的时候就可以随时进行上载,同时也意味着那些普通常见的分片将会留到之后进行下载,所以一个正在上载分片的对等点不久后没有需要的分片的概率下降了。信息论表面没有下载者可以在文件的所有部分被上载者上载之前完成下载,当单独的上载者上载文件而有许多下载者下载时,上载速度不及下载速度,如果下载者分别下载上载文件的不同部分,那么系统的整体性能将会好很多,因为冗余的下载会浪费上载发送更多信息的机会。在实际情况中,文件的原始上载者如果将文件下架,只留下下载者进行上载的话,会导致文件的某些部分永远无法被获取。稀有优先原则很好的通过复制稀有的分片降低了上述问题的风险。

2.5.3.6 随机选取第一个分片

在刚开始下载的时候不适用稀有优先原则,此时对等点没有任何可以上载的,所以要尽快获取第一个分片,稀有的分片常常只在少数对等点中存在,所以下载速度很缓慢,因此,此时最好先下载常见的分片,所以稀有优先原则在第一个被随机选择下载的分片被下载完之前不会启动。

2.5.3.7 残局模式(endgame mode)

有时一个分片会被以缓慢的速度传输给请求它的对等点,这在下载过程中不是问题,但会导致下载完成被延迟。为了防止这一问题,一旦一个对等点没有的所有子分片被请求了,该对等点就发送请求给所有拥有这些子分片的对等点,当拥有子分片后,就对响应的对等点取消请求以避免网络资源浪费,实际情况中,因为残局模式并不会浪费许多网络资源,因为残局模式的维持时间很短,文件的末尾下载的很快。

2.5.4 限流算法(choke algorithm)

BitTorrent不进行中心化的资源分配,每一个对等点自行负责将自己的下载速率最大化,对等点从任意它们可以下载的地方去下载分片并通过以牙还牙的方式决定将自己所有的分片上载给哪个对等点。当对等点愿意合作时就上载分片,反之就限制其他对等点。限流是一种短暂拒绝上载分片的操作,它暂停上载,但是下载仍然可以进行,与其他对等点建立的连接不需要再限流结束后重新建立。尽管限流算法不是BitTorrent传输协议的一部分,但却对提升系统整体性能起很大作用。一个好的限流算法应当利用一切可以利用的资源,持续地为每一个对等点提供合适的速率,并拒绝那些只下载不上载的对等点。

2.5.4.1 BitTorrent的限流算法

从技术层面来说,每一个BitTorrent的对等点都限流固定数量(默认4个)的对等点,所以问题在于限流哪些对等点。这一方法使得TCP协议内置的拥塞控制机制可以可靠的充分利用上载能力。哪一个对等点被限流是基于下载速率决定的,但有意义地计算当前的下载速率是一个难题。早先的限流算法是基于网络长期传输量的,但表现并不好,因为网络带宽经常因为资源的来来去去而不断随着时间变化。为了避免在频繁的限流与取消限流中切换而浪费资源,BitTorrent对等点每过10秒重新计算它们要限流的对等点,然后直到10秒过后再进行计算,10秒足以使TCP协议的传输速率充分提升到传输速率上限。

2.5.4.2 优化限流解除(Optimistic Unchoking)

如果只是简单地上载分片给那些提供较好下载速率的对等点,那么提供更快下载速率的对等点就无法被发现了。为了解决这一问题,BitTorrent使用优化限流解除,也就是无论当前对等点提供的下载速度是多少都要进行限流解除。每3次限流周期决定哪一个对等点将倍进行优化限流解除,因为30秒足以使上载速率和对等点响应的下载速率达到最大,

2.5.4.3 反冷落(anti-snubbing)

对等点偶然的会被所有正在上载的对等点限流,在这种情况下它会持续以一个较差的下载速率下载直到优化限流解除操作启动。为了减轻这一问题,当超过一分钟的时间后没有从一个特定的对等点获取一个分片时,BitTorrent认为该对等点被冷落了,被冷落的对等点不再上载分片直到优化限流解除操作启动,这将频繁的造成多个优化限流操作并发执行,从而使得下载速率在降到最低点后快速回复。

2.5.5 仅仅上载(upload-only)

一旦一个对等点结束下载就没有有效的下载速率用以决定上载分片给哪个对等点,目前的是实现中,完成下载的对等点将上载给拥有较高上载速率的对等点,这一举措很好的使用了所有的上载能力。

2.5.6 参考论文

Cohen, Bram. "Incentives build robustness in BitTorrent." Workshop on Economics of Peer-to-Peer systems. Vol. 6. 2003.

论文阅读翻译笔记之Incentives build robustness in BitTorrent相关推荐

  1. 【论文阅读/翻译笔记】Deep Snake for Real-Time Instance Segmentation

    原论文标题:Deep Snake for Real-Time Instance Segmentation 原论文链接:https://arxiv.org/abs/2001.01629 翻译:张欢荣 用 ...

  2. 论文阅读翻译笔记——雅虎S4

    目录 2.6.1 简介... 1 2.6.2 设计目标... 1 2.6.3 设计... 2 2.6.3.1 处理单元(PE)... 2 2.6.3.2 处理节点(processing nodes). ...

  3. 【语义分割系列:七】Attention Unet 论文阅读翻译笔记 医学图像 python实现

    Attention U-Net 2018 CVPR Ozan Oktay, Jo Schlemper, Loic Le Folgoc, Matthew Lee Attention U-Net: Lea ...

  4. Feature Selective Anchor-Free Module for Single-Shot Object Detection论文阅读翻译 - 2019CVPR

    Feature Selective Anchor-Free Module for Single-Shot Object Detection论文阅读翻译 文章目录 Feature Selective A ...

  5. 【论文阅读翻译】A STRUCTURED SELF - ATTENTIVE SENTENCE EMBEDDING

    [论文阅读翻译]A STRUCTURED SELF - ATTENTIVE SENTENCE EMBEDDING Abstruct 1. Introducion 2. Approach 2.1 Mod ...

  6. Context Prior for Scene Segmentation论文阅读/翻译

    Context Prior for Scene Segmentation论文阅读/翻译 论文地址 Abstract Introduction Context Prior Affinity Loss C ...

  7. Sparse R-CNN: End-to-End Object Detection with Learnable Proposals - 论文阅读翻译

    Sparse R-CNN: End-to-End Object Detection with Learnable Proposals - 论文阅读翻译 文章目录 Sparse R-CNN: End-t ...

  8. LightGBM原论文阅读翻译

    我在学习lightGBM的时候苦于找不到质量高的学习资料,后来突然想起最好的资料难道不就是作者的原论文吗?所以本文主要是对LightGBM原论文的阅读翻译,一方面督促自己把论文精度一遍,一方面分享给有 ...

  9. 论文阅读翻译(全)【一直更新】

    学习内容 这里面包含了阅读中翻译的概述! CNN is not invariant to scaling and rotation: invariant: 不变的: not invariant: 不是 ...

  10. XGBoost原论文阅读翻译

    虽然之前转过一篇XGBoost的不错的文章,但那篇在很多细节部分做了省略,所以还是翻出原论文来精读一遍,顺带翻译一波.其中斜体字为我的观点,不是原文中的内容. 愿论文:XGBoost: A Scala ...

最新文章

  1. mysql用外键链接两个表_可能做一个MySQL外键的两个可能的表之一?
  2. 权限基本操作:实体类和dao
  3. Spring MVC 基于URL的拦截和映射规则
  4. [js] 请使用 js 实现一个双向链表
  5. python及pycharm2018软件安装教程
  6. 为什么一放假家里的wifi就变卡?都9102年了,还有人蹭网?
  7. 每个做DBA的孩纸都是上辈子被drop的db
  8. python color属性_Python turtle.color方法代码示例
  9. Python 神经网络是这样识别手写字符哒?
  10. 中秋逢国庆 | 盛世华诞 阖家团圆
  11. 【PostgreSQL-9.6.8】序列
  12. JavaScript 获取当前URL信息
  13. 检定证书、校准证书与测试证书的区别
  14. 【Halcon轮廓提取】
  15. UPC6605: 所罗门王的宝藏
  16. ipynb文件转py文件
  17. html怎么修改表格行列间距,html表格如何设置间距
  18. Linux 下录屏制作 GIF 图片
  19. 【CCAI 2016】人工智能青年论坛:论青年正确拥抱AI的姿势
  20. 使用X-NUCLEO-GFX01M1 开发板快速进行 GUI 开发

热门文章

  1. 5G NR SSB概述
  2. 提示fxp不是一个目标文件
  3. [ZZ] 为什么中国目前仍然没有一流的三维动画电影
  4. Google SketchUp Cookbook: (Chapter 4) Advanced Intersect and Follow Me Techniques
  5. html项目符号怎么设成大圆点,Word里面的项目符号的圆点怎么变小个点?
  6. 整理了18个可以免费学习编程的网站
  7. leetcode LCP 02. 分式化简
  8. 小程序之校园交流平台
  9. Chinese Whisper 人脸聚类算法实现
  10. 用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?