P2P系统原理(P2P技术的应用P2P的组织结构.ppt
《P2P系统原理(P2P技术的应用P2P的组织结构.ppt》由会员分享,可在线阅读,更多相关《P2P系统原理(P2P技术的应用P2P的组织结构.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、P2P系统原理第一页,编辑于星期六:十三点 十三分。n1 引言n2 P2P技术的主要应用n3 P2P的组织结构 (8个原理) P2P与Overlay网络 有结构的P2P网络 无结构的P2P网络4 P2P的应用(Bt Emule 迅雷) 第二页,编辑于星期六:十三点 十三分。引言n意义 Peer-to-Peer技术是一种基于对等网络的新兴技术。和传统客户端/服务器模式不同,P2P技术的最大意义在于其不依赖中心节点而依靠网络边缘结点自组织与对等协作的资源发现和共享形式。n 优点自组织、自管理、可扩展性好、鲁棒性强、负载均衡。 第三页,编辑于星期六:十三点 十三分。n应用领域目前,P2P技术广泛应用
2、于文件共享、网络视频及网络通话等领域,以其分布式资源共享和分布式并行传输的特点,为用户提供了更多的存储资源、更高的可用带宽和更好的服务质量。n缺点P2P应用已占运营商业务总量60%-80%,成为网络带宽最大的消费者,对底层网络产生的巨大影响。就实现原理来说,P2P并不是一种高效率的传输模式。传输过程中有很多重复的数据分组,占用大量的网络带宽,甚至造成网络拥塞,从而降低了其他业务的性能。第四页,编辑于星期六:十三点 十三分。n需解决的问题 由于目前P2P没有统一的网络协议标准,种类多、形式多样,使用传统的流量管理手段难以对P2P流量进行有效管理。 所以,如何管理P2P软件的使用,控制P2P流量对
3、网络其它正常流量的负面影响是运营商需要解决的重要问题。第五页,编辑于星期六:十三点 十三分。P2P技术的主要应用n分类文件分发语音服务流媒体n非实时流媒体应用:视频点播(VOD)等流媒体应用n实时流媒体应用:基于组播树(Tree-based)和网状结构Mesh-based流媒体应用第六页,编辑于星期六:十三点 十三分。国内外比较流行的P2P的应用n比特精灵完全免费、高速稳定、功能强大、不包含广告的BitTorrent客户端。只需一个监听端口即可满足所有的下载需要。n迅雷新型的基于多资源、多线程技术的下载软件。nMaze北大开发的一款功能强大的PIC(个人信息中心)文件系统。相比于其他软件,Ma
4、ze在机制方面提供了积分原则和排队策略。目前在中国教育网上使用十分广泛。nSkype目前最流行的网络语音工具,可以实现与其他用户的高清晰语音对话,亦可以拨打国内国际电话,还具备IM所需的其他功能。第七页,编辑于星期六:十三点 十三分。P2P与OverLay网络nP2P应用的组织结构的发展可以简单的分成三代:第一代 特点:集中控制缺点:鲁棒性 可扩展性相对较差应用代表:Napster第二代特点:无中心的分布式网络,所有的查询和响应都在节点间完成。以广播的方式散发查询消息,容错性好缺点:查询请求在网络中广泛传播,带宽消耗较大代表:Gnutella KaZaA Freenet等第三代特点:混合式的体
5、系结构,具有合理的查询时间和良好的可扩展性,对现有网络有很好的适应性。应用:PPLive PPStream 等提供商业服务的网站均采用这种体系结构第八页,编辑于星期六:十三点 十三分。P2P与覆盖网络的联系n应用层网络又称为覆盖网络,它的基本含义是在现有的Internet传输网络之上构建一个完全位于应用层的网络系统。无论是OSI模型还是Internet模型,网络具有层次结构。应用层位于层次结构的最高层,它利用传输层提供的服务完成相应的应用功能,如 Web浏览,FTP服务,电子邮件服务等。但是随着应用的模式越来越复杂,这种只依赖于传输层的应用层已经不能满足需要了。第九页,编辑于星期六:十三点 十
6、三分。nP2P系统中每台计算机及时服务器又是客户机,在这种情况下,P2P系统本身就是一个覆盖网络。Peer自己进行服务器发现,选择到其它Peer的路由等,这些功能都是由P2P系统提供的服务模式相关,所以不能利用传输层完成。第十页,编辑于星期六:十三点 十三分。nP2P系统在本质上是一个没有层次结构也没有集中控制的分布式系统。节点通过自组织的Overlay网络来实现文件分发文件分发、流媒体以及语音等服务。nOverlay网络的组织方式可以分成有结构的和无结构的两种。n有结构的P2POverlay 网络指的是Overlay 的网络有确定的拓扑特征,目的是使其内容的存放也相对有序。 通常使用分布式哈
7、希表来实现对文件资源的标识。n无结构的P2POverlay 网络通过一些松散的规则组织自在一起,文件的存放也表现出很大的随机性和不确定性。不能保证查询的正确性。第十一页,编辑于星期六:十三点 十三分。有结构的P2P网络n有结构的P2P网络也有很多种不同的实现方法,比较著名的有Chord、CAN、Pastry和Taperstry等。第十二页,编辑于星期六:十三点 十三分。Chord 原理n实现了这样一种操作:给定一个关键字(key),将key映射到某个节点。如果给对等网络应用的每个数据都分配一个key,那么对等网络中的数据查询问题可以用Chord解决。第十三页,编辑于星期六:十三点 十三分。nC
8、hord采用了相容哈希的一种变体为节点分配关键字。n相容哈希特点:哈希函数可以做到负载平衡(所有的节点可以接收到基本相同数量的关键字)当第N个节点加入或者离开网络时,只有1/N 的关键字需要移动到另外的位置。第十四页,编辑于星期六:十三点 十三分。nChord 对相容哈希进行改善:每个节点值需要知道关于其他节点的少量路由信息。在由N个节点组成的网络中,每个节点只需要维护其它O(logN)个节点的信息,同样每次查找只需要O(logN)条消息。当节点加入或离开网络时,Chord需要更新路由信息,每次加入或离开需要传递O(log2N)条消息。第十五页,编辑于星期六:十三点 十三分。n具体实现:利用相
9、容哈希函数,为每个节点和关键字分配m位的标识符。此标识符可用SHA-1(安全哈希算法)等哈希函数产生。节点的标识符通过哈希节点的IP地址产生,关键字的标识符通过哈希此关键字产生。例如:IP:198.10.10.1 通过SHA-1哈希后的标识符为123,关键字LetItBe哈希后的关键字为60。标识符长度m必须足够长,这样才能保证两个节点或者关键字哈希到同一个标识符上的概率小到可以忽略不计。第十六页,编辑于星期六:十三点 十三分。相容哈希中,每个关键字都保存到他的后继节点(节点标识符大于等于关键字k标识符的第一个节点)中。我们将其记为successor(k)。第十七页,编辑于星期六:十三点 十三
10、分。n当节点n加入网络时,为了保持相容哈希映射,某些原来分配给n的后继结点的关键字将分配给n。当节点n离开网络时,所有分配给他的关键字重新分配给n的后继节点。第十八页,编辑于星期六:十三点 十三分。n结点维护一个有m(ID位数)项的路由表,也称“指向表”(finger table),其中第i项指向结点s,s=successor(n+2i-1),1im,即s是在顺时针方向到n的距离至少为2i-1的第一个结点,记做n.fingeri.nodenChord路由表的特点:n每个结点只保存很少的其它结点信息,并且对离它越远的结点所知越少nChord结点不能从自己的路由表中看出对象k的后继第十九页,编辑于
11、星期六:十三点 十三分。n为确定对象k的后继(k所在的结点),结点n在自己的路由表中查找在k之前且离k最近的结点j,让j去找离k最近的结点,递归查找,最终可以找到对象k的前驱(在k之前离k最近的结点,记做predecessor(k),类似,结点n的前驱记做n.predecessor)n前驱中必然有后继的路由表项,定位成功第二十页,编辑于星期六:十三点 十三分。nChord结点n的路由各项属性及其定义属性定义fingerk.start(n+2k-1)mod2m, 1km.intervalfingerk.start, fingerk+1.start).noden.fingerk.start的第一个
12、结点successor后继结点,即finger1.nodepredecessor前驱结点第二十一页,编辑于星期六:十三点 十三分。假设结点3要找到对象1的后继n在结点3的路由表中,1属于3.finger3.interval即7,3)n结点3让3.finger3.node即结点0去找1n结点0在路由表中发现自己的后继1恰好是对象1的后继,因此将1返回给结点3n结点3由此知道对象1放在结点1中第二十二页,编辑于星期六:十三点 十三分。Chord结点加入算法nChord的自适应需要保持两个不变的属性n每个结点的后继始终正确n对每个对象k,结点successor(k)始终负责k的索引n为此,新结点n的
13、加入需要完成三个任务n初始化n的前驱和路由表项n更新网络其他结点的前驱和路由表项n告诉其后继将应该由n负责的数据对象索引传递给nn新结点n连接到某个众所周知结点n,通过调用join(n)初始化自己的状态信息,并将自己加入到Chord网络第二十三页,编辑于星期六:十三点 十三分。节点失效n当节点n失效时,所有在指针表中包括n的节点都把n替换成n的后继结点。为了便于维护正确的后继指针,每个节点都维护一张包括r个最近后继的后继列表,如果节点n的后继节点失效了,就从后继列表中第一个正常节点替换失效节点。第二十四页,编辑于星期六:十三点 十三分。Content-Addressable NetworkCA
14、N内容寻址网络n可以在Internet规模的大型对等网络上提供类似哈希表的功能,CAN 的设计是完全分布式的,不需要任何形式的中央控制点。nCAN 具有很好的可扩展性,结点只需要维护少量的控制状态而且状态数量与系统中的结点数量无关;CAN 支持容错特性,结点可以绕过错误结点进行路由。CAN 基于虚拟的d 维笛卡儿坐标空间实现其数据的组织和查找功能,它将整个坐标空间动态地分配给系统中的所有结点,每个结点都拥有独立的互不相交的一块区域。第二十五页,编辑于星期六:十三点 十三分。n可以把整个CAN 系统看成一张保存( key,value)对的大哈希表。CAN 的基本操作包括插入、查找和删除( key
15、,value)对。其中key 是对被搜索资源的关键字(如文件名)哈希后的值,而value 则是资源的存储位置( 如IP 地址和目录)。n整个CAN 系统由许多独立的结点组成,每个结点保存哈希表的一部分,称之为一个区。此外,每个结点在邻接表中还保存了少量邻接区的信息。对指定关键字的插入( 或者查找、删除)请求被中间的CAN 结点路由到区里含有该关键字的CAN 结点。第二十六页,编辑于星期六:十三点 十三分。n下图给出了一个2 维的0,10,1的笛卡儿坐标空间划分成五个结点区域的情况。从图1 中可以看到,虚拟坐标空间中的每个区被动态地分配给CAN 中的某个结点,如坐标空间(0. 5 - 1,0.
16、0 - 0. 5)被分配给结点B。CAN 中的路由实际上就是穿过笛卡儿空间从源坐标到目的坐标的一条直线段路径。在CAN 中,每个结点都维护一张坐标路由表,此表用来存放该结点所有邻居的IP 地址和虚拟坐标区。在d 维坐标空间中,如果两个结点的坐标在d - 1维上重叠而在另一维上相邻接,则称这两个结点是邻居关系。第二十七页,编辑于星期六:十三点 十三分。CAN 的路由机制 由此,不难看出,对于d 维的坐标空间,每个结点有2d 个邻居结点,因此每个结点的坐标路由表会维护2d 个邻居的IP 地址和坐标信息。如2 维的坐标空间,每个结点有4个邻居结点,因此每个结点将维护4 个邻居结点的IP 地址和坐标空
17、间。因为每条CAN 消息都包含目的坐标,结点在路由时会将该消息转发给坐标路由表中距目的坐标最近的结点,直到目的坐标。第二十八页,编辑于星期六:十三点 十三分。n虚拟坐标空间采用下面的方法来保存(key,value)对:n当要保存(K1,V1)时,首先通过统一的哈希函数把关键字K1映射成坐标空间中的某个点P 的坐标,相应的(key,value)对即存放在点P 所在区的结点内。当需要查询关键字K1 对应的值时,任何结点都可以使用同样的哈希函数找到K1 对应的点P,并从点P 所在区的结点取出相应的值。n如果点P 所在区的结点不是发起查询请求的结点或其邻居,则CAN 负责将此查询请求路由到点P 所在区
18、的结点。因此,在CAN 中,有效的路由机制是一个关键问题。第二十九页,编辑于星期六:十三点 十三分。n。图2 给出了一个路由例子,虚线是点1 到点(x,y)的路由,图2 中还标明了在结点7 加入系统前结点1 的邻居结点集为2,3,4,5。n图2 路由例子对于划分成n 个同等大小的d 维坐标空间,平均路由长度为(d / 4)(n1 / d)跳,每个结点维护2d 个邻居的信息,这就意味着可以在不增加每个结点状态的同时增加网络结点数,而平均路由长度只以O(n1 / d)的数量级增长。而且,坐标空间中两个结点之间有多条不同路径,如果结点的一个或更多个邻居失效,结点可以自动沿着其它可用的路径路由第三十页
19、,编辑于星期六:十三点 十三分。新结点的加入n整个CAN 空间是由当前系统里所有的结点来动态划分的。每当新的结点加入时,系统必须为它分配相应的坐标空间。一般的做法是:n系统中某个现有的结点将自己的区域一分为二,自己保留一半,将另一半分配给新的结点。整个过程包括:n1)新的结点必须找到一个在CAN 中已经存在的结点;n2)通过CAN 的路由机制,新结点必须找到一个区域将要被分割的结点;n3)进行区域划分操作,并通知被分割区域的邻居有新的结点加入以便在邻居的坐标路由表中包含新的结点。第三十一页,编辑于星期六:十三点 十三分。在结点7 加入系统前结点1的邻居结点集为2,3,4,5。首先结点7 找到要
20、划分区域的结点,即结点1;然后,结点1 将自己的区域一分为二,自己保留一半,并将另一半区域分配给结点7;区域重新分割后,结点1 的邻居集变为2,3,4,7,结点7 的邻居集为1,2,4,5。第三十二页,编辑于星期六:十三点 十三分。结点离开,恢复n当结点离开CAN 系统时,要保证空出的区能移交给剩下的结点。正常的过程是结点明确地将它的区和相关的( key,value)数据库移交给其中的一个邻居。如果某个邻居的区可以合并该区并产生单个有效的区,那么任务就完成了;如果不行,那么就将该区移交给区最小的邻居结点,该结点将暂时负责两个区。第三十三页,编辑于星期六:十三点 十三分。n正常情况下,结点周期性
21、地发布更新消息给它的每个邻居,更新消息中包含自己和邻居的区坐标列表。如果某个结点在给定时间内未收到邻居结点的更新消息,则说明该邻居结点失效。一旦某个结点失效,则它的每个邻居结点会分别初始化接管算法并启动接管定时器,定时器的大小和该结点拥有的区大小成比例。当定时器超时,每个邻居结点向其他所有邻居结点发送TAKEOVER 消息,消息中含有自己的区信息。每当收到一条TAKEOVER 消息时,每个邻居结点都会做同样的操作:比较自己的区和消息中的区,当消息中的区小于自己的区时,结点会取消自己的定时器,反之则回应自己的TAKEOVER 消息。用这种方法,可以有效地选择区小的存活邻居结点,由这个邻居结点接管
22、失效结点的区。第三十四页,编辑于星期六:十三点 十三分。Pastry 原理n功能:Pastry网络中每个节点都有一个唯一的节点号(nodeId)。当给定一条消息和一个关键字时,Pastry节点将会把这条信息路由到当前所有的Pastry节点中nodeId和关键字最接近的那个节点。路由过程的复杂度是O(logN),这里N是网络中Pastry节点的总数。n目标:Pastry考虑了网络的位置信息,使消息传递的距离最短。距离采用类似于IP路由的hop数的标量距离度量。 采用了启发式的算法,可以使关键字首先路由到在节点空间中与消息产生的节点距离最近的包括查找关键字的节点。第三十五页,编辑于星期六:十三点
23、十三分。Pastry原理节点分配制度nPastry系统中的每个节点都被分配一个128位的节点号。节点号用于在节点空间中标识节点的位置。节点号是在节点加入系统时随机分配的。分配策略是在节点空间中均匀分布。n节点号的获取:通过计算节点公钥或者IP地址的哈希函数值来获得。第三十六页,编辑于星期六:十三点 十三分。n为了进行路,我们把节点号和关键字表示为一串以2b 为基德数。Pastry吧消息路由到节点号从数值上最接近关键字的节点。具体过程如下:n在每个路由步骤中,但前节点将把消息路由给节点号和消息关键字的共同前缀长度至少比当前值长一个数位(b个二进制位)的节点。n如果不存在这样的节点,消息将传递给前
24、缀长度相同但是节点号更接近的关键字的节点。为了支持这样的路由过程,每个节点必须维护一定的路由状态。第三十七页,编辑于星期六:十三点 十三分。n每个Pastry节点都需要维护一张路由表,一个邻居节点集合和一个叶子节点集合。n路由表由log2 bN 的上取整行组成,每行包括2b -1个表项。第n行的2b -1个表项分别指向前n个数位和当前节点的前n个数位相同,而第n+1个数位取遍2b -1的可能的值(除掉当前节点第n+1位)。n这里b的大小的选择反应了在路由表大小和任意两点间路由需要的最大步数之间的折衷。n例如:b=4,网络中有106 个节点,每个节点的路由平均包括75个表项,预期的路由步数为5。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- P2P 系统 原理 技术 应用 组织 结构
限制150内