16 对3网终:体构、应用5设计 810 8111 90 101 B 010 011 000 001 ()超立方体钻构一Tapestry、Pastry (6)多维空问结构一CAV (际上.是变形的树格知构) i图片米'11 Lua et al.,20040 100 00 000 Level I 010 101 001 110 011 11 (T)de Brujin一Koorde (8)蝴蝾钻构一Viceroy (片来☐[Lua ct al.2003]) (2.000 2001 (1,0002∠60,0000 00.001) 1.0019 (10)桃表构 SkipNet(网片米'IIIlarvey et al,2003I9 (9)CCC结构—Cycloid 图1.4.1(续) 2.结点和数据对象位置确定 分布式散列表(DHT)是P2P网络的核心设施。如图1.4.2所示,它通常基于 一致性散列函数,提供对于任何一个结点、数据对象在覆盖网中的位置映射。这一 点在结构化P2P网络中尤其重要,因为它保证了能够准确地定位到某个结点或者 数据对象。具体地说,如果分布式散列表采用一致性散列函数H(),对于某个网 络结点(IP,Port,…),该结点在覆盖网上将有唯一对应的“结点标识”nodelD= H(IP,Port,…),IP为结点IP地址,Port为端口号,…表示其他属性;对于某个数 据对象(Key,…),它在覆盖网上也有唯一的“对象标识”objectID=H(Key,…), Key为对象关键码,…表示其他属性。对于结点而言,nodelD确定了它的覆盖网
)% !"#$)%&#’()*+ !!"&"! %G& $"fg{|}~ °±EÏÆ@%M;<&$ =!=PQ,#Âáá$/ABOB!âA"1_ºz 0§öÏÆ¼"Yñ;z0m´µ#¼Á;=y%&P,Å&«$¡0 µy´Ù =!=PQZ«"p1rG6hÚèÞHXÅkÂm´µþØ ¼Á;=$ÌZH¤"/Ò°±EÏÆ@ü]0§öÏÆ¼ +%&";zÂmP Q´µ%.="=$*("/&"6´µy%&P¥â0;,,+´µùq,+$3).M^ +%.="=$*("/&".=p´µ.=Hã"=$*(pÿõ»"/@A«ÆÇö(;zÂm¼ Á;=%I)5"/&"1y%&PFâ0,+;=ùq,$7_)#(.M^+%I)5"/&" I)5p;=©zä"/@A«ÆÇö$;z´µ!4"+$3).M ÞX61,%&P
17 第1章P2p网终简尔 位置,对于数据对象而言,objectID确定了它的索引信息在覆盖网上的存放位置。 P2P覆盖网 对等结点 对象 nodelD objectID 分布式散列表(DHT) 底层物理网 结点 对象 IP,Port Key,... 图1.4.2 DHT在P2P系统中的位置 3.高效路由 基于P2P覆盖网与分布式散列表,P2P网络通常有适合自己的路由算法,以 保证高效路由。任意两个结点间定位所需的覆盖网路由跳数典型地为TTL(无结 构网络)或logN(结构化网络),TTL(time to live)为跳数限制,N为网络结点总 数。因为覆盖网与物理网的不一致性,实际P路由跳数会高于覆盖网路由跳数, 但仍可以控制在1ogV的常数倍范围之内。具体地说,P2P系统的路由方法大 致有: (1)服务器路由—客户直接发送消息给服务器,服务器返回所需信息。 典型的系统有Napster、BitTorrent;路由跳数为O(I)。O()为渐进增长率符 号,若函数f∈O(g),表示函数f渐进增长的速率不超过函数g。数学上更严格地 表述为:刻果/E0g),郑么一=c为某个有限宿数。 (2)无结构路由一结点以洪泛法或者类似的方法发送消息给自己的每个邻 居,邻居收到消息后也这样做下去,直到定位成功,通常会有跳数限制TTL以控 制路由范围。典型的系统有Gnutella、Freenet;路由跳数为O(TTL)。 (3)双层路由一通常为双层结构的P2P网络所使用,“普通结点”直接发消 息给“超结点”,“超结点”之间使用无结构路由。典型的系统有KaZaA、eDonkey/ eMule;路由跳数为O(1)+O(TTL)。 (4)数值邻近路由一这里的“数值”通常指结点D值,路由过程中每一步, 当前结点都在自己的路由表中选择与目的D最邻近的结点作为下一跳。典型的 系统有Chord、Kademlia、SkipNet(NameID路由);路由跳数为O(logN)
, ! - " # " #$./ )& Å&";z¼Á;=!4"$7_)#(.MÞX61,¤À<=y%&P,>aÅ&$ !!"&"$ 563H#$#*+I-JK %"TZ z =!=%&PM°±EÏÆ@"=!=PQ_ºLY¨Ú,<á"ß"ª rG<á$¢¯m´µXÅâM,%&P<ᬼ´ôHp <<R%æ´ PQ&þ0$D>%´ÙPQ&"<<R%(1%)($016)&p¬¼ç®"> pPQ´µ· ¼$p%&PMCP,w0§ö"÷ø.=<ᬼ¸z%&P<ᬼ" ÝYʪ®y0$D> ,º¼¯/q$ÌZH¤"=!= ²³,<áDß+ §) %A&½¾¿<á’’’ÈÉ&U-¤~=7½¾¿"½¾¿89âM<=$ ´ô,²³ H/&4()*#L1(<$**)+((<ᬼp?%A&$?%&påÜfbéæ »"ç¼3"?%0&"@A¼3åÜfb,{éwÓ‘¼0$¼¢éH @üp)/Ò3"?%0&"òÖ01%>#@ 3%>& 0%>&A8"8pÂm纼$ %!&æ´<á’’’´µª|ßþØ(Á,Dß-¤~=7¨Ú,mÔ Õ"ÔÕúk~=¨F¡ó+0Ò"&kXÅÐg"_º¸¬¼ç® <<R ª ®<á$´ô,²³ C+’()00/#>*))+)((<ᬼp?%<<R&$ %N&èï<á’’’_ºpèï´, =!=PQâ\]"+é_´µ,&U-~ =7+Ó´µ,"+Ó´µ,/\]æ´<á$´ô,²³ I/J/K#)M$+-)5* )?’0)(<ᬼp?%A&B?%<<R&$ %O&¼!Ô<á’’’¡¸,+¼!,_ºþ´µ.M !"<á‘0¿" VÒ´µãy¨Ú,<á@M_,.M )Ô,´µop00¬$´ô, ²³ 98$*3#I/3)%01/#:-1&H)(%H/%).M <á&(<ᬼp?%0$D>&$
18 对3网终:练构、应周5设计 (5)逐位匹配路由一逐位匹配路由基于层次化的路由表,每一步通常都能 与目的ID多匹配至少一位。典型的系统有Tapestry(后缀匹配)、Pastry(前缀匹 配)、Koorde(de Bruijn路由)、SkipNet(NumericID路由);路由跳数为O(loggN), B为nodeID的基数(或称进制)。 (6)位置邻近路由一每个结点的路由表记录自己在多维空间中的邻居,每 次选择离目的结点最近的邻居作为下一跳。典型的系统有CAN;路由跳数为 O(dN),d为空间维数。 (7)层次路由一不少P2P网络将结点组织到多个层次上,路由过程常常是 先从底层爬到高层,再从高层爬到底层。典型的系统有Viceroy、SkipNet (NumericID路由);路由跳数为O(logN)。 (8)混合式路由一大多数结构化P2P网络的路由方式都不是单一的,如 Chord、Pastry、SkipNet、.Viceroy、Koorde、Cycloid中都使用了环形路由作为基础, 但又结合了各自独特的路由方式。 4.负载均衡 P2P网络使用分布式散列表将结点、数据对象分布到覆盖网上,由于它通常使 用一致性散列函数,所以这种分布是均衡的:所有结点大致均匀地分布在整个覆 盖网中,所有数据对象的索引大致均匀地分布在所有结点中,即使有新结点加入、 旧结点离开、新对象发布、旧对象删除,一致性散列函数都能保证高效的动态调整 和调整后网络仍然保持很好的负载均衡。但上面所说的“均衡”只是一种“平均”, 它不考虑结点之间能力上的不同,所以往往出现高能力结点空闲、低能力结点过于 忙碌的情形;真正好的“负载均衡”(load balance),应该是结点根据自己的能力“各 尽所能”,实际上这体现了对结点“异构性”的开发。负载均衡是分布式系统努力追 求的系统属性,它对于P2P系统的高效率、可扩展性、动态自适应具有重要意义。 5.容错与动态自适应 在P2P网络产生之初,容错性一直是一个难题。虽然严格的拓扑结构和分布 式散列表映射提高了系统的效率和可扩展性,却使得系统对其成员不正常行为的 容错性下降了。随后,研究者提出各种增强容错性的机制,最典型的如冗余方法和 周期性检测。到目前为止,大多数P2P模型和应用在不同程度上采用了这些方 法,实现了良好的系统容错性。 P2P网络是动态变化的,不断地有新结点加入、旧结点离开、新对象发布、旧对 象删除,当这些发生以后,P2P网络必须有很好的自适应性,做高效的调整,以保持 网络的拓扑结构、位置映射、负载均衡和路由信息的更新。如上节所述,自适应最 重要的是更新结点状态,自适应的方法有周期性探测、按需检测、捎带确认等
)’ !"#$)%&#’()*+ %F&êÅëì<á’’’êÅëì<ázïðÙ,<á@"0¿_ºãh M_,.M VëìW»0Å$´ô,²³ </&)4(*5%¨íëì&#=/4(*5%Òíë ì&#I$$*3)%3)L*’1_+<á&#:-1&H)(%H’%)*1#.M <á&(<ᬼp?%0$DC>&" C p+$3).M,¼%þ#Ü®&$ %G&Å&Ô<á’’’m´µ,<á@ÒÓ¨ÚyV³ø,ÔÕ" ðÖ_,´µ),ÔÕop00¬$´ô,²³ 9KH(<ᬠ¼p ?%== !>&"=pø³¼$ %T&ïð<á’’’w» =!=PQ¥´µkVmïð"<ᑺº$ À ÿ ï î k ï"K ï î k ÿ ï$ ´ ô , ² ³ [1#)*$5#:-1&H)( %H’%)*1#.M<á&(<ᬼp?%0$D>&$ %U&$YE<á’’’+V¼´Ù =!= PQ,<áDEãw$¦0,"/ 98$*3#=/4(*5#:-1&H)(#[1#)*$5#I$$*3)#95#0$13ã\]6P×<áop" ÝÄ´Y6l¨7 ,<áDE$ &" =!=PQ\]°±EÏÆ@¥´µ#¼Á;=°±k%&P"áz1_º\ ]0§öÏÆ¼"⪡q°±$în,)â´µ+§îªH°±yÛm% &P"â¼Á;=,¤À+§îªH°±yâ´µ" \r´µéj# á´µÖ#r;=-±#á;=ïÊ"0§öÏÆ¼ãhrG,3OÛ }Û¨PQY?r"ûï,Dmîn$Ýnâ¤,+în,$0q+î," 1wOã´µ/ht,wc"âªÅÅ23ht´µøÆ#Ght´µ‘z ¥ð,ù×(PÞï,+Dmîn,%0$/37/0/+#)&",6$´µ¸Á¨Ú,ht+l 1âh,"÷ø¡Z36;´µ+½ö,,-$Dmîn$°±E²³dtJ 6,²³Çö"1;z =!=²³,é#Êefö#3O¨L,Ì¢£$ *"tuB y =!=PQ©K/:"~Rö0&$0mH8$Ê?é,op´}°± EÏÆ@«Y6²³,é}Êefö"³\=²³;«ÐÑwÞºÌp, ~Rö0U6$@¨"hiØY2lqfô~Rö,#®")´ô,/ÐDß} ]^ö_‘$k_ÒpÛ"+V¼ =!= ëô},]ywc|ü]6¡¹D ß"÷36ñï,²³~Rö$ =!=PQ$3O5Ù,"wAHr´µéj#á´µÖ#r;=-±#á; =ïÊ"V¡¹-Kª¨"=!=PQ)òûï,¨L,ö"+,Û"ªr" PQ,op´#Å&«#Dmîn}<á<=,r$/9âü"¨L,) ,$r´µhO"¨L,,Dß]^öב#óM_‘#ÙÞÕ¶$
19 第1幸P2p网终简尔 6.行为的自由性与匿名性 在C/S模式下,客户能做的事情,完全是服务器所提供的,客户不可能采取服 务器不允许的行为,也不可能与服务器交换它不支持的信息。相反,P2P网络是一 个自由、平等的网络,两个对等结点之间做什么事情、采取什么样的行为、交换哪些 信息,完全由双方自由决定。比如现在最流行的BT网络,用户提供哪些文件给别 人下载、发出对哪些文件的请求,甚至是上传文件给别人的速度、想与谁通信不想 与谁通信,都是自由决定的。 另一方面,P2P网络中的用户是匿名的,因为分布式散列表采用安全散列函数 将用户信息、数据对象信息映射到了一个表面上看起来没有任何意义的数值标识 (identifier,ID),这个ID唯一地代表用户和数据对象。由于安全散列函数的单向 性与抗冲突性,不可能从此ID破解出它所代表的信息,匿名性(anonimity)正是基 于这个原理实现的。 对于网络通信的自由性、匿名性,计算机领域乃至整个人类社会都存在着长期 的争论,从来就没有得出过确定的结果。自由给人最大的活动空间,但是也给心存 恶意的人提供了破坏系统秩序的基础:匿名使人可以做任何想做的事而不必关心 后果,同时保护了发布者的重要信息和隐私,但是也会带来太多不负责任的行为。 对于这种争论,在哲学上我们没有确定的态度;但是在技术上倾向于认为:尽管 自由性和匿名性目前带来了很多困扰,然而,自由性、匿名性仍然是计算机网络和 分布式系统发展的趋势,其中一个关键点是对“自由”、“匿名”本身含义的理解。 1.5P2P网络的各种应用 在大多数传统的分布式系统和计算机网络的应用领域,都能采用P2P作为替 代或者改进。此外,P2P也有很多独特的、不可替代的应用方式。P2P让每个互联 网用户以更深刻、更广泛的方式参与进来,正如Internet2之父Doug Van Houweling所说:“下一代互联网用户将真正参与到网络中来,每个人都能为网络 的资源和功能扩展作出自己的贡献。”我们相信这里的“下一代互联网”将会是P2P 的。本书在第5章中还将按照下面的分类来详细讲述P2P网络的各种应用: 1.文件共享 可以说文件共享的需求直接引发了P2P技术的产生与开发热潮。在传统的 C/S模式下,两个网络用户要实现文件交换需要服务器的大力参与,通过将文件上 传到某个特定的网站,用户再到那个网站搜索需要的文件然后下载,最典型的如 FTP,这种方式的不便之处不言而喻。电子邮件方便了个人间的文件传递,却无法
, ! - " # " #$./ )( )"JB qq y 9*:ëE0"ÈÉh+,sù"-.$½¾¿âYñ,"ÈÉwÊhü¸½ ¾¿wô+,Ìp"FwÊhM½¾¿aÎ1w!",<=$Rð"=!=PQ$0 m¨á#¶,PQ"¯m;¶´µ/+ÕÖsù#ü¸ÕÖó,Ìp#aÎܹ <="-.áèD¨á\X$Õ/3y)bÌ, L< PQ"]ÉYñܹm|7ë ’0m#-2;ܹm|,56"%W$)m|7ë’,{|#ZMÔ_<wZ MÔ_<"ã$¨á\X,$ I0Dn"=!=PQ,]É$vø,"p°±EÏÆ@ü]z.ÏÆ¼ ¥]É<=#¼Á;=<=«k60m@n0:Ó¢£,¼!ùq %13)+(1V1)*".M&"¡m.M â0HO@]É}¼Á;=$ázz.ÏÆ¼,¦¼ öMõ±öö"wÊh .Mv[21âO@,<="vøö%/+$+1%1(5&Þ$ z¡m-C÷3,$ ;zPQ_<,¨áö#vøö"!"#Ã÷WÛm’(ø¸ã>y’b^ ,ù¬" :Ó=2‘ÞX,´Ò$¨á7’)+,L3ø"Ý$F7Â> ú¢,’Yñ6vû²³ü/,(vø\’ʪ+Z+,s!w)©Â ¨Ò"cdrs6-±Ø,<=}tu"Ý$F¸::VwDý,Ìp$ ;z¡qù¬"yþ¢¡[ÓÞX,O|(Ý$yRSÿ¼zÕp)1¬ ¨áö}vøö_Ò:6ûVN!"?!"¨áö#vøöY?$!"#PQ} °±E²³-f,Ø"«0m©zµ$;+¨á,#+vø,åæÛ£,C[$ !"* #$#$%&0123 y+V¼)³,°±E²³}!"#PQ,,]Ã"ãhü] =!=opÎ OþØ4Ü$×"=!=FûV7 ,#wÊÎO,,]DE$=!=wmSz P]É ª i # , D E M Ü :"Þ / .+()*+)(! / " M$’D [/+ ;$’,)01+Dâ¤)+00OSzP]É¥PÞ MkPQ:"m’ãhpPQ ,Ô}ghefo2¨Ú,ç$,¡[R<¡¸,+00OSzP,¥¸$ =!= ,$åày´Fª,¥ó#0n,°(:Èûêü =!=PQ,lq,]) !"* ʪ¤m|{y,M6&UÀ-6 =!=RS,©KM-j$$y)³, 9*:ëE0"¯mPQ]É÷3m|aÎM½¾¿,+t M"_‘¥m| )kÂm X,P¦"]ÉKkòmP¦£¤M,m|?¨0m")´ô,/ ><="¡qDE,wò/Bw4!%$Â8&|Dò6m’,m|)}"³æß