1、 西安电子科技大学硕士学位论文基于喷泉码的P2P文件共享系统研究姓名:潘雍申请学位级别:硕士专业:计算机系统结构指导教师:慕建君20100101摘 要P2P技术由于其非中心化、易 扩展、稳定性高、负载 均衡等优点,越来越多地被应用于文件共享、即时通信、分布式计算、协同工作等各个领域,并促使这些领域出现了新的发展和应用。文件共享一直是网络技术发展的重要推动力,也是P2P技术最典型的应用。但是,常 见的文件共享系 统存在诸如对种子结点的依赖性太强、网络带宽利用率不高等问题,这些问题很难通过 P2P技术自身解决。数字喷泉码技术作为通信领域的一项实用技术,已经得到了普遍的关注和研究。其无码率(rate
2、less)的特点使其在卫星通信、多媒体广播、无线通信等领域有着很好的应用前景。如何提高数字喷泉码的编码译码性能并将数字喷泉码技术应用于 P2P文件共享系统以解决其 现存问题是本文的研究重点。本文的主要工作内容如下:1.深入研究了 BitTorrent 协议及其工作原理,分析了开源客户端 EnhancedCTorrent的源代码,指出 BitTorrent 系统中存在的缺陷与不足,并详细分析其原因;2.深入研究了了数字喷泉码技术,探讨了 LT码的各种度分布函数及译码算法,对 LT码的编码译码进行了大量的仿真实验,选出了最适合于 P2P文件共享系统的编码译码方案;3.在深入研究数字喷泉码技术及 E
3、nhanced CTorrent客户端的基础上,设计并实现了一种基于数字喷泉码的改进型 P2P 文件共享系 统,解决了现有系统中对种子结点过分依赖等问题,改善了现有系统下载性能;4.测试了改进 P2P文件共享系 统性能,分析了其下 载性能提高的原因,实验表明:加入数字喷泉码的改进 P2P 文件共享系统 下载效率较高,系统健壮性有一定程度的提高。关键词: P2P 文件共享系统 BitTorrent 数字喷泉码 度分布函数AbstractNowadays, because P2P technology has many advantages such as decentralization,bet
4、ter extendability, high stability and balanced load, it is used in more and more fieldsincluding file sharing, instant messaging, distributed computing and cooperative work,and it prompts the emergence of new development and application in these fields. Filesharing is always an important momentum fo
5、r the development of network technologyand it is the most typical application of P2P technology. On the other hand, there aresome problems existing in file sharing system in general and it is difficult to solvethrough P2P technology itself, for example, the system is sensitive to the torrent nodesan
6、d the network bandwidth utilization is not high.As a practical technology in the field of communications, digital fountaintechnology has attracted universal attention and research. The rateless characteristicmakes it have a good utilization prospect in satellite communications, multimediabroadcastin
7、g, wireless communications, and so on. This thesis focuses on the followingresearch: how to improve the encoding and decoding performance and how to applydigital fountain technology to P2P file sharing system.The main tasks of this thesis are listed as follows:1. BitTorrent protocol and its working
8、principle are intensively studied, the opensource code of client Enhanced CTorrent is analyzed. The deficiencies andshortcomings of BitTorrent system are pointed out and a detailed analysis of its causesis put forward.2. Digital fountain technology is studied on deep levels, the degree distributionf
9、unction and decoding algorithm are studied and a large number of simulationexperiments of LT codes are carried out, at last, a best encoding and decoding solutionfor P2P file sharing system is selected.3. On the basis of intensive understanding of digital fountain technology andEnhanced CTorrent cli
10、ent, an improved P2P file sharing system based on digitalfountain codes is designed and implemented. The new system solves the existingproblems and improves file downloading performance.4. The performance of improved P2P file sharing system is tested, and the reasonsfor the download performance impr
11、ovement are analyzed. Experimental results showthat the improved P2P file sharing system with digital fountain codes has a gooddownload performance and the system is more robust.Keywords: P2P File Sharing System BitTorrent Digital Fountain CodesDeegree Distribution Function创新性声明本人声明所呈交的论文是我个人在导师指导下进
12、行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名: 日期关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业离校后,发表论文和使用论文工作成果时署名单位仍然为西安电子科技大学。学校有权保留送交论
13、文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复印手段保存论文。(保密的论文在解密后遵循此规定)本人签名:导师签名:日期日期第一章 绪论 1第一章绪论本章首先介绍了本文的研究背景;然后,阐述了当前网络环境发展趋势和国内外 P2P文件共享系统的 发展及研究现状;最后, 对本文的主要工作内容以及组织结构做了简要的说明。1.1 研究背景BitTorrent12是一个开源的文件共享协议,它采用点对点技术共享文件(如一部电影或电视节目),并使每个用户提供上传服务。一般的下载服务器为每一个发出下载请求的用户提供下载服务,而 BitTorrent提供的下载方式
14、与之不同,文件的持有者将文件发送给其中一名用户,再由这名用户转发给其他用户,用户之间相互转发自己所拥有的文件部分,直到所有用户的下载都全部完成。这种方法可以使下载服务器同时处理多个文件的下载请求,而无需占用大量带宽。因此,BitTorrent被人们称之为“ 群集、散布、集中”的文件传输协议。目前,各种支持BitTorrent 下载的客户端软 件层出不穷,BitTorrent 协议已经被广泛地应用于文件共享中。在 BitTorrent系统中,一个文件被分 为很多小的文件块,一个结点可以同时并行地下载多个文件块,并且只要下载好一个文件块就可以给其它结点提供上传服务,而不需要等到下载完整个文件。另外
15、,在 BitTorrent系统中,结点之间的文件块交换是通过 tit-for-tat 3策略的激励机制进行的。与传统文件共享系统相比,P2P 文件共享系统有以下两个主要 优势4:1. 负载平衡的提高:比起传统 C/S 模式,P2P 文件共享系统能达到一个较好的负载平衡。仅仅最初的文件可能需要通过源文件服务器下载,而进一步的下载可以自动地转向那些已经接收和复制文件的结点。P2P文件共享系统有效地减轻了源文件服务器的负载,提高了系统的稳定性。2. 服务资源的共享:比起传统 C/S 模式,P2P 文件共享系统本身具有很强的可扩展性,系统的服务能力将随其结点的增加而不断提高,这是因为当一个用户加入系统
16、请求服务后,它也会贡献自己的资源(尤其是网络带宽)给系统。因此,系统的服务能力会随着需求的增加而增加,网络可以本能地适应需求,理论上可以实现系统的无限可扩展性。尽管 BitTorrent具有良好的下 载性能及适当的激励机制,但是,该系统的下载性能与种子结点个数、种子结点在线时间长短、网络带宽的高低等有着密切联系,其中最突出的一个问题就是种子结点的离开有可能会导致其余结点无法下载完整2 基于喷泉码的P2P文件共享系统研究的文件,另外,BitTorrent 系统采用“最少优先”的文件块选择策略只能达到局部最优,其优越性会随着网络规模的增大而降低。基于上述几点原因,研究如何将最新的技术应用于 Bit
17、Torrent 系统以解决其现存问题具有很大的现实意义。1.2 网络环境发展目前互联网中 P2P 流量的增 长迅速5 ,占到了网络流量带宽的 40%到 60%,中国互联网流量中各类应用和业务的分布情况如下:通用数据报协议(UDP)类应用占 12% ;通用传输控制协议(TCP)类应用占 12%;Internet 流量占 18%(其中 HTTP占 13% ,FTP 占 3% ,Mail 占 2%);实时流式媒体 协议(RTSP)类应用占 1%;会话初始协议 (SIP)类应用占 1%;P2P 类应用占 46%(其中 BitTorrent 占 8%,eMule/eDonkey6占 8%,PPLive占
18、 10%,Thunder占 3.8%,POCO占 4%,SKYPE占 1% ,未知 P2P占 11%,IM占 0.2%);其它类应用占 10% 。1.3 P2P研究现状P2P技术的诞生,彻底打破了 传统的文件下载方式。目前 P2P下载已经成为一种非常流行的下载方式,并且以其高速、方便等特点,不断吸引更多的用户加入下载的阵营。现在,较大软件的下载和发布都主要由 P2P平台来完成,而在 P2P平台上可供下载的资源也日趋丰富和多样化,P2P已经逐渐成为网络上资源共享的主流平台。由于 P2P 技术所具有的特点,很多 计算机公司、研究部 门都从不同的角度研究和应用该技术。目前主要的研究角度有:文件共享、
19、对等计算7、协同工作8、即时通信9、搜索引擎、网络游戏、基于 Internet的操作系统等。另外,还有对开发平台的研究和安全框架的构建等。除了上述的应用研究,P2P 技术也是学术界研究的 热点。2004 年,Yang 和Veciana在 INFOCOM上、Qiu和 Srikant在 SIGCOMM上、Pouwelse和 Garbacki在 International Workshop on Peer-to-Peer Systems上分别发表了针对 BitTorrent系统的研究成果10 11 12,迅速将 BitTorrent系统的推向一个高潮,其中 Yang和 Veciana通过跟踪检测一个
20、共享文件在 BitTorrent 系统中的分布过程,得到系统中结点的平均吞吐量和服务结点的数量,Qiu 和 Srikant 简要讨论了尝试性疏通对阻止搭便车行为的影响,并且发现尝试性疏通方法可以诱发搭便车行为。另外,Bharambe、Herley 、Padmanabhan等人在真实环境或模拟环境下研究了BitTorrent网络的性能13 14 15,这些研究发现 BitTorrent系统有非常好的性能支持大规模的下载结点同时下载共享文件。第一章 绪论 3除此之外,关于 BitTorrent 协议的各种研究也从未在停止。张杰在微计算机信息中提出了一种改进的片段选择控制策略16,Cheng、Lv
21、和 Yu研究了文件块的选取算法,对文件块的选取加以控制,降低文件块选取的重复性,测试结果说明改进的算法提高了系统的性能17。综合目前相关研究,许多文献已经用实验的方式说明了系统的服务能力、机制和策略能很好的保证系统的整体性能,在大规模结点同时下载文件的时候也能保证系统的负载均衡性、公平性和稳定性。但是相应的理论依据较少,有些文献从理论上说明了带宽、结点数量等因素对系统的整体服务能力的影响,但是它只是从系统整体的角度去研究,没有从更精确的角度上去研究带宽、结点数量等因素对各种算法和策略的影响。1.4 论文主要研究内容本文深入探讨和研究了 BitTorrent 文件传输协议,对 P2P 文件共享系
22、统的运行机制、核心算法作了详细分析,并且将 P2P 文件共享系 统与数字喷泉码很好的结合起来,在 P2P 文件共享系 统中应用数字喷泉 码技术,发挥了数字喷泉码的众多优点,提高了系统的整体性能。论文的研究内容包括以下几个方面:第一,深入研究和详细分析了 P2P 文件共享系统,主要包括 BitTorrent协议及其核心算法(文件块选择算法、邻居结点选择算法),并对 P2P 文件共享系统存在的缺陷进行了分析;第二,详细分析了开源 BitTorrent 客户端软件 Enhanced CTorrent的源代码,重点研究和分析了关键的功能类及核心函数;第三,深入研究了数字喷泉码中 LT码的基本原理和算法
23、,并对其优势进行了分析,探讨了 LT码的度分布函数以及影响 LT码译码性能的各种可能因素,实现了 LT码的编译码器并进行了大量的仿真实验;第四,借鉴 BitTorrent 系 统的协议和算法分析,在客户端 Enhanced CTorrent的基础上将 LT码应用于 BitTorrent系统,设计并实现了一种基于 LT码的改进 P2P文件共享系统;第五,搭建实验环境对编码器、译码器和改进文件共享系统进行了测试,并对测试数据进行分析,实验结果表明,LT 码的快速编译码能力使得 BitTorrent 系统在付出很小代价的情况下提高了系统的健壮性,并且由于 BitTorrent系统中各结点的文件块选择
24、余地增大,整个 BitTorrent 系统的整体下载性能得到了一定程度的提高。4 基于喷泉码的P2P文件共享系统研究1.5 论文组织结构本文共分为五章,文章结构及各章主要内容如下:第一章为绪论,介绍了研究背景、BitTorrent 系统的发展及研究现状、论文的主要研究内容以及论文的组织结构;第二章为 P2P文件共享系 统,首先重点介绍 BitTorrent系统的相关原理,包括结点与中央服务器以及结点之间的通信协议,其次介绍了 P2P 技术的应用以及存在的问题;第三章为数字喷泉码,介绍了数字喷泉码技术的发展和现状,重点介绍了 LT码,说明了数字喷泉码的应用领域及其前景;第四章为 LT码性能测试与
25、分析,研究了 LT码的几种度分布函数以及译码算法,并重点研究了度分布函数中参数的选取以及随机数生成算法,通过仿真实验选取了最合适的 LT码编译码方案;第五章为改进系统的设计与实现,首先分析了 Enhanced CTorrent 系统的结构并从总体上提出了加入 LT码之后的改进系统的设计思路和整体框架,接着分别对编码器和译码器进行了设计和实现,最后对改进系统进行了测试及性能分析;最后对全文的主要内容和成果进行了总结,并指出了进一步研究的问题。第二章 P2P文件共享系统 5第二章 P2P文件共享系统本章首先对 BitTorrent系统 中的 P2P 技术与传统的 C/S技术进行了对比;然后,从结点
26、与中央服务器的通信协议、结点之间的通信协议、文件块选择策略、结点选择策略四个方面对 BT系统原理进行了详细探讨 ;最后,从应用的角度分析了P2P技术并指出了现有 P2P技术存在的问题。2.1 P2P技术与C/S技术比较BitTorrent系统的核心技术 就是 P2P 技术,P2P是英文“Peer-to-Peer”的缩写,称为对等网络。P2P是一种网 络模型,在这种网络 中所有的结点是对等的,各结点具有相同的责任与能力并协同完成任务。对等结点之间通过直接互连共享信息资源、处理器资源、存储资源甚至高速缓存资源等,这些都无需依赖集中式服务器就可完成。P2P 是一种分布式网络,网 络中的参与者即是资
27、源(服务和内容)提供者(Server),又是 资源(服务和内容)的获取者(Client)。系统不再依赖于任何的中央服务器,而是依存于每个边缘结点的主动协作,每个结点直接从其它结点而不是服务器的参与中受益,结点能够意识到彼此的存在,构成一个虚拟的或实际的群体。一个结点加入系统后主动发布自己的内容,当某个结点响应其它结点的请求为他们提供服务时,该结点扮演服务器的角色;而当该结点依据自己的需求要求系统给予服务时,他又充当客户端的角色;另外每个结点还与其它的结点协作充当路由器把请求转发至目的地。图 2.1给出了传统的 C/S模式与 P2P模式一个基本拓扑图。通过图 2.1可以看出,在 C/S模式下,C
28、lient只能与 Server进行交互而不能与其它 Client进行交互。在 P2P模式下,Client可以和其他任何一个 Client进行交互。Server Client ClientClientClientClient Client Client ClientC/S模式 P2P模式图 2.1 C/S 模式、 P2P模式比较6 基于喷泉码的P2P文件共享系统研究P2P 网络的最大特点在于非中心化,即网 络中的 资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。非中心化的特点带来了其在可扩充性、健壮性等方面的优势。同时,也
29、正是由于非中心化,P2P 网 络的安全性和资源可维护性必将付出一定的代价。下面将 P2P 网络与传统的 C/S 网络从下面四个方面进行一个具体的比较18。1. 可扩充性(1) C/S网络:随着系统中 Client数量的增多,服务器所需要的资源消耗也随之增加,从而导致服务器性能的不断下降,当 Client 的数量达到一定数量,服务器很有可能无法正常工作。(2) P2P网络:每个 Client都有很强的处理功能,极少或者完全不依赖中央服务器,因此随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要,理论上其可扩充性几乎可以认为是无限的。2. 健
30、壮性(1) C/S网络:由于所有的运算都由服务器承担,当服务器发生故障时,所有的 Client都无法进行正常工作,整个系统将陷于瘫痪之中。(2) P2P网络:P2P 网络天生具有耐攻击、高容错的优点。由于服务是分散在备个结点之间进行的,部分结点或网络遭到破坏对其它结点的影响很小。网络一般在部分结点失效时能够自动调整拓扑结构,保持其它结点的正常运行。P2P网络通常都是以自组织的方式建立起来的,并允许结点自由地加入和离开。P2P网络还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整。3. 安全性(1) C/S网络:服务器是整个系统的资源存储、用户管理以及数据运算中心,只需设立专职的系统管
31、理员,管理服务器的安全,制定对系统中所有用户都适合的策略,就能有效地保护整个系统的安全。(2) P2P网络:每个客户机都可以作为服务器,系统不像 C/S网络那样要受到服务器的约束,系统的安全管理实现起来比较困难,目前尚未有十分行之有效的安全解决方案。4. 资源可维护性(1) C/S网络:共享资源的管理模式为集中式,所有共享资源通常都集中存在服务器上,资源的查找更新较为简单,数据的备份和恢复较易实现。(2) P2P网络:系统中的任何一台客户机上均可存在共享资源,资源的查找更新比较复杂,数据备份工作也比较困难。第二章 P2P文件共享系统 72.2 BitTorrent系统原理2.2.1 BitTo
32、rrent术语对于 BitTorrent 系统,并没有 统一的术语。但为了更为清晰的研究 BitTorrent系统并且让读者更好的理解本文,这节定义了一些被用于整篇论文的专门术语。1. 中央服务器(Tracker)中央服务器是一个中央目录服务器。其主要作用是跟踪系统中所有的种子结点、下载结点,并收集和统计这些结点的状态,以便结点间能互相发现并交换文件块。2. 文件块/文件片 (Piece/Slice)用于 BitTorrent系统传输 的文件被分割为很多大小相等的文件块。文件块是结点之间相互交换的基本单元,当一个结点下载了一个完整的文件块就可以给其它结点提供上传服务。文件块再次被划分为固定大小
33、的文件片,文件以文件片为基本传输单位在结点间进行传输。3. 最初的种子结点/种子结点(Initial Seed/Seed)当结点拥有完整的文件时,便称之为种子结点。最初的种子结点和种子结点的区别在于:前者是为其它所有结点提供文件片段的最初来源,后者是从下载结点转变过来的。4. 下载结点当结点没有拥有完整文件时,便称之为下载结点,它需要从最初的种子结点、种子结点、其它下载结点处获得文件块,并同时为其它下载结点提供文件块的上传服务。5. 疏通与阻塞(Unchoked and Choked)当结点 A决定不送数据给结点 B,我们称结点 A阻塞结点 B。相反,当结点A决定发送数据给结点 B,我们称结点
34、 A不阻塞(即疏通)结点 B。6. 种子文件(Metainfo File/.torrent file)种子文件包含待下载文件的中央服务器地址、文件大小、文件块大小、各个文件块的 hash 校验值等等,作用是描述待下载文件信息以及保证文件内容的正确性。7. 邻居结点集合(Neighbors Set)每个结点会保留和维护系统中其它一些结点列表,结点会和其列表中的结点进行数据交换。列表中的所有结点被称为此结点的邻居(Neighbors)结点,而这些结点的集合被称为邻居结点集合。8. 连接结点集合(Active Peers Set)8 基于喷泉码的P2P文件共享系统研究在 BitTorrent系统中,
35、一个 结点仅仅能同时发送和接收数据给其邻居结点中的部分结点(默认为 5个)19,BitTorrent系统将通过阻塞算法(Choke Algorithm)去选择其上传的结点,被此结点选择的结点集合被称为此结点的连接结点集合。9. 最少文件块优先算法(Rarest First Algorithm)最少文件块优先算法是 BitTorrent 系统的一个文件块选择策略,又分为全局最少文件块优先(Global Rarest First)和局部最少文件 块优先(Local Rarest First)。前者是针对系统中所有的结点,而后者仅仅针对结点的邻居结点集合。2.2.2 与中央服务器通信协议在 BitT
36、orrent 系统系统中, 结点通过种子文件得到中央服务器 IP 地址,连接到中央服务器后, 中央服务器就会返回正在下载同一目标文件的其它结点的信息,这些返回的结点称为该请求结点的邻居结点。请求结点进而与这些邻居结点进行连接,进行文件下载。结点在下载的同时,要不断的和中央服务器进行通信,以便报告自己的状态信息,并更新自己的邻居结点(因为网络中结点的加入和退出是很频繁的,所以要不断的更新)。结点与中央服务器之间的通信是基于 HTTP 协议的,结点发给中央服务器的URL由种子文件中记录的中央服务器地址和后面加上的一些 CGI 格式的参数(也就是用 “?” 分割开 URL 和参数,参数之间用“& ”
37、分隔)构成。其中 URL中的可用参数如表 2.1所示:表 2.1 与中央服务器协议参数参数info_hashpeer_idport必须项是描述20字节 SHA-1哈希值,是一个 bencoding 编码的字典唯一标识结点的 20字节字符串结点的通信端口,常用端口为 6881-6889结点已经上传的字节数是是uploadeddownloadedleft否否 结点已经下载的字节数否 结点还需要下载的字节数ip 否 结点主机的 IP地址,以点分十进制形式发送结点希望从返回的结点的个数见下段内容numwantevent否否event字段是一个自定义字段,如果包括这一字段,取值只能为三种:started
38、、stoped和 completed。started 表示加入网络,stoped表示退出网络,completed 表示完成下载,变成种子结点。event字段都是为中央服务器做统计用途的,每收到一第二章 P2P文件共享系统 9个 started,中央服务器器就认为总的结点多一个,每收到一个 stoped ,中央服务器就认为总结点少一个,每收到一个 completed,中央服 务器就认为一个结点变成种子,中央服务器可以很方便的累计结点数和种子数。在收到结点发来的请求之后,中央服务器首先通过匹配字段,找出正在下载同一目标文件的结点信息列表,然后查看该列表,若列表中没有该请求结点的信息,就先把该结点的
39、信息(结点标识、地址、端口、上传字节数、下载字节数等)加入此列表,然后返回邻居结点。若列表中己经有该请求结点的信息,就先更新该结点的信息,然后返回邻居结点。返回的邻居结点信息是一个文本,内容是一个按照 bencoding编码规则编码的字典,如果服务器处理出错,返回的信息很简单,只有一个字段 failturereason,字段内容是可读的出错描述。如果中央服务器处理正常,返回信息的结构如表 2.2所示:表 2.2 与中央服务器协议字段字段 类型 描述peers 列表 结点信息complete 整型 种子结点数量incomplete 整型 正在下载的结点数量interval 整型 客户端发送两次请
40、求之间需要等待的时间,以秒计算Peers 字段是一个列表,其中的每一个元素又是一个字典,记录当前处于BitTorrent系统的一个结点信息,包括了 3方面信息:peer_id(结点标识)、ip 地址和 port(结点使用的端口号)。以上就是结点与中央服务器之间的通信协议,可以看出中央服务器在BitTorrent系统中的主要作用就是 记录当前网络中结点的各种信息,并在需要时将其发送给当前网络中的结点,以便结点能够成功加入网络。2.2.3 结点间通信协议结点从中央服务器得到其邻居结点的信息后,结点之间就可以相互通信了,结点之间的通信才是真正意义的 P2P 的通信,文件的共享与 传输都是在这一阶段完
41、成的,结点之间的通信协议是一套基于 TCP协议之上的协议。1. 结点状态每两个建立连接的结点之间,一个结点中对另一个结点设置两个状态:阻塞和感兴趣,这两个状态仅存在于两个连接的结点之间。阻塞表示是否愿意给对方传送数据,如果结点阻塞对方,则该结点就不会给对方传送数据,对方即使向该结点请求下载,该结点也不会回应。只有当该结点通知对方取消阻塞,对方才能10 基于喷泉码的P2P文件共享系统研究开始向该结点请求下载。感兴趣则表示对方是否有该结点需要的数据,如果有,那么该结点对对方感兴趣,否则不感兴趣。实际上,结点还需要保存对方对该结点的两个状态,也就是说,结点对每个连接保存了四个布尔值,每个结点中保存的
42、不同状态字段及其含义如表 2.3所示:表 2.3 结点间协议字段字段 设置方式 描述am_chocking 结点自己设置 阻塞对方,即不给对方发送数据am_intersting 结 点自己设置 对对方感兴趣,即对方有该结点需要的数据am_chocked 对方通知设置 被对方阻塞,即对方不给该结点发送数据am_intersted 对方通知设置 被对方感兴趣,即该结点有对方需要的数据只有当结点不阻塞对方,且对方对该结点感兴趣时,结点才有可能向对方传输数据。在 P2P 网络中每个 结点通常与很多结 点互相连接,对每个连接都保存有这四个状态,这使得结点有很强的自主性:可以根据一定策略动态调整阻塞对象,
43、从而使整个网络更稳定与灵活。2. 结点间消息在 BitTorrent 系统中, 结点之间的通信都是通过发送各种不同的消息来实现的,在两个结点发送消息之前要有一个握手过程,该握手过程通过双方互相发送一个 TCP包 实现。经过握手之后,两个结点之间就可以开始互相发送消息了。消息可按照长度分为三类。第一类是空消息,也称为 keep-alive消息,空消息没有消息号和负载。结点发送空消息的目的是保证对方依然在线,如果对方在线,会返回一个数据包头上带 ACK标志的空消息。第二类是通知消息,只有消息号,没有负载,消息长度固定为 1,通知消息包括消息号为 0-3 的四种消息(choke、unchoke、in
44、terested 、not interested),结点通过这几个消息通知对方设置阻塞和感兴趣两个值。第三类是数据消息,下面的五种消息都是属于这一类,这些消息负责结点之间的数据传输。具体内容如表 2.4所示:2.2.4 文件块选择策略在 BiTorrent系统中,文件块的选择至关重要,这直接影响和决定着整个系统的性能20。好的文件块选择策略可以将不同的文件块高效的分配到整个网络中各个结点,能为系统所有结点提供所需的文件块,延长系统的生命周期,保证个别的结点离开不会影响整个系统。相反,不好的文件块选择策略可能导致某个文件块被很多结点去下载,或者某个文件块不被任何结点去下载。当个别结点离开网络后,
45、会使某些结点的下载速度很低甚至完全不能下载。第二章 P2P文件共享系统 11BitTorrent系统主要采用了以下文件 块选择策略。1. 严格优先级策略(Strict Priority)结点一旦请求了某个文件块的文件片,那么该文件块剩下的文件片优先被请求,这样,可以尽可能快的获得一个完整的文件块,然后该结点就可以尽快的把该文件块上传给其它的结点。表 2.4 结点间数据消息消息名称 消息描述结点在下载完一个文件块并校验对应的 Hash 值无误后,会向所有 连接结点发送 have消息,通知这些结点自己已经拥有一个文件 块并且可以为他们提供此文件块的上传服务。have当结点有部分数据时,可以向对方结
46、点发送 bitfield消息来描述已有的文件块。bitfield消息只能 发生在握手交互之后且所有其它信息交互之前。bitfield 消息的中每一位代表着文件中的相应的文件块,0 表示此结点没有对应的文件块,1表示此结点拥有对应的文件块。bitfield当结点需要从对方下载数据时,向对方结点发送此消息。request 消息包含三个信息:文件块编号、文件片在文件块内偏移和文件片长度。当结点收到对方结点发来的 request消息后,向对方结点 发送此消息以提供相应的文件块给对方。piece消息包含三个信息:文件块编号、文件片在文件块内偏移和文件片内容。requestpiece当系统处于结束模式时,
47、结点会向邻居结点发送 request 消息请求某个文件片,当文件片被下载完成后,结点会向所有其它结点发送该消息。cancel消息的负载与 request消息相同。cancel2. 最少片段优先策略(Rarest First Policy)每个结点都优先选择整个系统中最少的那些文件块去下载,而那些在系统中较多的文件块,放在后面下载。这样,整个系统就趋向于一种更优的状态。如果不用这种算法,大多数结点都去下载较多的那些文件块,那么这些文件块就会在系统中分布的越来越多,而那些在系统中相对较少的文件块会相对越来越少,最后,某些结点就不再拥有其它结点感兴趣的文件块了,整个系统的性能就会下降。最差的情况是在
48、一些拥有少数文件块的结点退出后整个系统无法正常运行。3. 随机的第一个片断策略(Random First Piece)在下载刚开始的时候,结点没有任何文件块可供上传,它需要尽快的获取一个完整的文件块,第一个文件块是随机选择的,第一个文件块下载完成后切换到最少片段优先策略。4. 最后阶段模式(Endgame Mode)12 基于喷泉码的P2P文件共享系统研究如果最后一个文件块是从一个速率很慢的结点请求的话,那么下载完成就会很慢。为了防止这种情况,在最后阶段,下载结点向它的所有邻居结点都发送对某文件块的文件片请求,一旦得到了某些文件片,就会向其它邻居结点发送 cancle消息,取消对这些文件片的请
49、求,以避免带宽的浪费。用这种方法并不会浪费多少带宽,而文件的最后部分会被快速下载。在 BiTorrent系统中,严格优先级策略、最少片段优先策略、随机的第一个片断策略和最后阶段模式共同保证了整个系统的高效、正常运转。并且这四个文件块选择策略不是孤立存在的,彼此之间存在一定的关联,如在严格优先级策略中就用到最少片段优先策略。总之,这四个策略虽然各有侧重点,但只有全部使用这四个策略,整个 P2P网 络性能才能达到最好。2.2.5 结点选择策略下载结点从中央服务器获得邻居结点信息后,与之建立连接,然后进行 P2P文件传输。而某一结点应该从哪几个结点下载文件、应该为哪几个结点提供上传服务是由结点选择策略控制的,该算法采用 tit-for-tat 策略企图使整个系统达到帕累托最优(Pareto Optimum)状态21。BiTorrent 系统提倡结点之间尽可能多的相互共享。对于合作者,提供上传服务,对于不合作者,阻塞对方(虽然停止了上传,但是下载仍然继续)。在阻塞停止的时候,连接并不需要重新建立,而一个好的结点选择策略应该利用所有可用的资源为所有下载结点提供一致可靠的下载速率