摘 要 当前主流P2P网络模型存在的可扩展性不高,效率低下等问题已经严重阻碍了P2P应用的发展。虽然结构化P2P网络模型在一定程度上解决了这些问题,但其本身存在的缺陷也使其很难转化成实用系统。本文在分析以上网络优缺点的基础上,提出一种基于混合模式的新型P2P网络模型,并对新模型实现方式和重要过程进行详细描述。在此基础上进一步引入管理机制和新型关键值匹配方案以增强网络的管理型和实用性。 关键词 P2P网络;结构化网络模型;混合模式;关键值匹配算法 1 引言 计算机对等网(Peer-to-peer network,P2P)技术是目前流行于国际计算机网络技术研究领域的一个热点。随着因特网的发展,分布在世界各地的计算机上的信息可以被连在因特网上的用户共享,各种信息在网上随时可被获取,大大方便了人们的生活。信息共享涉及很多方面,比如网络的架构,查询信息的路径等,对等网络(即Peer-to-Peer)就是一种用于信息共享的网络架构,在这种架构中,各站点既是网络服务提供者—服务器,又是网络服务申请者—工作站,即对等网络上各台计算机有相同的功能,无主从之分,网络上任一台计算机既可以作为网络服务器,其资源为其它计算机共享,也可以作为工作站,以分享其它服务器的资源。任一台计算机均可同时兼作服务器和工作站,也可只作其中之一。 在P2P技术的推动下,互联网的存储模式将由现在的“内容位于中心”模式转变为“内容位于边缘”模式[1]。从这个角度看P2P带来了几个改变:首先,客户不再需要将文件上载到服务器,而只需要使用P2P将共享信息提供出去;其次运行P2P的个人电脑不需要固定IP地址和永久的互联网连接,这使得那些拨号上网的用户也可以享受P2P带来的变革,这部分用户在互联网用户总数中占有极大的比重;最后,P2P完全改变过去控制互联网的客户机/服务器模式,消除客户机和服务器二者之间的差别。 本文在P2P网络主流模型基础上提出一种融合各个主流P2P网络模型优势,在现在网络下层切实可行的混合型网络模型。并对新模型实现方式和重要过程进行详细描述。最后得出结论。2 主流P2P网络模型 从P2P概念的出现至今出现了多种已被使用和正在研究的P2P网络体协议,从网络结构的特点来看P2P的发展主要经历了以下四个阶段。第一个阶段,P2P协议仍处于萌芽阶段,这时候的协议多是client-sever运行模式,以集中目录式对等网络模型Napster为代表。第二个阶段,树型P2P网络协议的出现,该协议的出现时间较短,FastTrack是该阶段比较典型的一种网络协议。第三个阶段,非结构化网络协议的出现,该阶段提出了很多新型的网络模型,其中Gnutella网络模型最具有代表性并且也得到了广泛的应用。第四个阶段,结构化网络模型的出现,以Chord为代表的结构化网络模型虽然存在一些问题但比前几个阶段的网络协议具有更多的优势,这种新型网络协议虽然处于研究阶段,却给未来的对等网络协议的研究指明了方向。 3 基于混合模式对等网络(Hybrid Model based P2P Network)模型设计3.1 设计思想与目的 HMPN的主要设计思想是,对结构化对等网络模型进行进一步的扩展,在其中引入分层的概念并融入多种的网络模型。新型网络模型中的关键值查询算法通过结合杂凑函数散列表查询算法和文字模糊匹配算法在提高查询效率的基础上为用户提供了更好的服务。以上所描述的设计思想,可以达到以下设计目的: ● 新型的网络体系结构融合了现存主流P2P网络,增强了Gnutella和Napster的可扩展性。 ●针对Chord所存在的绕路(Detouring)问题和Internet主干网超荷负载的问题提出了一套在Internet网络上切实可行的P2P网络方案 ● 在网络体系结构中加入相应的管理机制,增强了网络的可管理性,避免了P2P网络一直存在的管理混乱和商业价值不高的缺点。 ●在网络体系结构中加入的新型关键值匹配方案保证了网络的透明性,为用户提供了更好的服务。3.2 新型网络模型总体结构描述 正如图1所示,HMPN采取多级分层结构,其中N代表子网,p代表子网中的节点,e代表子网中的边缘节点。该网络模型通过边缘节点把各个子网连接起来,边缘节点组合成Chord环,形成一个以Chord为主干网各种子网共存的大型网络,每个子网络中的节点只能通过本子网的边缘节点与其它子网在主干网中的边缘节点交流,并不知道其它子网的具体属性。从理论上来说子网可以是任何一种网络,本文只讨论子网是Gnutella,Napster和Chord的情况。首先引进边缘节点和管理节点的概念: ◆边缘节点(Edge node):边缘节点是指子网与主干网交接的一个或者多个节点。其作用是在子网查询失败时,通过边缘节点把子网中查询失败的过程发送到更大的主干网上查询;并且子网中的节点通过边缘节点把自身的共享信息发布到主干网上。边缘节点具有子网中普通节点同等的所有功能。 ◆管理节点(Manager node):HMPN中的管理节点是由子网中专门的终端来担当。其作用是与其它子网管理节点交流并监视(Monitor)子网节点以及运行边缘节点选举算法。只存在于各个子网中管理节点的地位非常特殊,它们具有公开的身份(如网络运行商),却并不具备子网中普通节点所具备的功能。
图1 HMPN体系结构图3.3 边缘节点选举算法描述 边缘节点选举算法运行在管理节点上。同时,管理节点还必须实时监视边缘节点,当边缘节点出现崩溃时,可以利用选举出的备份边缘节点(Backup edge node)代替原边缘节点。具体的算法如下: 1) 在每个节点加入网络之后,根据自身的带宽能力和计算能力解析出一个优先级(Priority),并把这个优先级发送至管理节点,管理节点把所有节点的优先级记录在一个节点优先级列表(Node priority list)中。 2) 当子网中只存在一个节点的时候,这个节点被选为边缘节点,备份边缘节点为空。 3) 在子网中存在多个节点时,根据节点的优先级,管理节点选取优先级最高的点作为边缘节点,选取次高的点记录在管理节点的备份边缘节点值中。例如当网络中需要n(n>=1)个边缘节点时,则管理节点选取节点优先级列表中的最前面n个节点作为边缘节点,在从剩余节点中选取优先级最高的n个节点作为备份边缘节点记录在管理节点中。 4) 当有新的节点加入网络时,管理节点记录新节点的优先级。管理节点把优先级列表中除边缘节点外的所有节点重新按递减顺序排序,并把最前面n个节点值作为备份节点记录在管理节点中。 5) 当边缘节点崩溃或出现优先级降低的问题时,管理节点使用备份节点代替出现问题的边缘节点,成为新的边缘节点,并把崩溃边缘节点中的关键值等信息拷贝到新的边缘节点上。然后管理节点把剩余节点优先级列表重新排队选取新的备份边缘节点。3.4 节点查询过程描述 当节点需要查询一个关键值所存储的节点时,各个子网的查询方式由于子网的构造不同而有所差异,在描述具体的查询过程之前,下面详细描述节点查询的过程: 1)查询过程开始,首先该查询节点会根据所在的子网构造方式而利用不同的查询方法,如果一个节点在Gnutella子网中,当它需要查询关键值时利用广播的方式首先在本子网中进行查询,如果查询成功就直接返回进行连接下载。在Napster中则直接向服务器发送消息通过索引进行查询。而在Chord子网中节点则会通过本身路由表查询关键值所存储的节点。 2)在子网内部的查询过程会在两种情况下产生查询失败的结果。第一种是在调用查询过程的节点收到内部查询失败的消息时,第二种是在经过一个时间值t(这个时间阀值可以静态设置或者通过网络的大小动态的设定)后调用过程节点没有受到任何消息,则认为该查询在子网失败。 3)当节点得知内网查询失败,向子网的边缘节点发消息,通知边缘节点需要向外查询。 4)边缘节点在主干网络中利用Chord路由表小的优点进行向外的扩展查询,这里需要特别说明的是,在Chord主干网络中只有各个子网的边缘节点参与查询过程。查询成功返回关键值以及关键值代表资源所在地址给子网的边缘节点。查询失败则返回查询失败信息。 5)最后边缘节点把所收到的信息返回给查询调用节点。查询节点根据信息判断如果成功,根据信息中的资源地址进行连接下载,并且所在子网对所查到的关键值进行拷贝(Replication),使得子网的查询效率进一步提高。如果查询失败则返回失败信息。3.5 关键值匹配过程描述 1)问题的提出 HMPN是一个多网络共存的体系结构,在不同的网络模型中所使用的关键值匹配技术也不完全相同。例如Napster的集中目录式网络中,查询的要求都被直接送到中央服务器,通过服务器的索引功能查询很容易使用简单的文字模糊比对和存在信息返回技术。非结构化的网络也有同样的功能,只是把这些索引分布在各个独立的节点之上。虽然以Chord为代表的分布式P2P协议具有高性能的特性,但结构化的分布式协议中,查询过程却是通过定位关键值的存储节点的精确匹配算法。因此在Napster和Gnutella中可以容易完成的查询过程,在Chord中却无法完成。假设节点查找一个关键值“music”,在Gnutella和Napster网络中查询返回结果“tvmusic”,“radiomusic”,而在Chord网络中只会返回查找失败。为了在HMPN中使处于子网的用户得到所期望的结果,并且对用户屏蔽子网与主干网的差异,所以这种在查找结果上的差异是新型网络架构的一个关键问题,本文将会提出一个解决这种差异的方法。 2)解决方案设计: 这个问题的关键之处在于提高Chord协议的资源可搜索性,即是系统要把用户所提出的查询定位到具有相似性的结果集合上。在本系统中我们将使用一种组合的方法来达到这个目的。由于主流P2P网络里时常运用文件名和Metadata作为共享文件的描述方式,所以下面将对共享信息是文件名或Metadata的情况作分别讨论。 ◆共享信息为文件名 假设一个资源文件的文件名叫做“beijing radio music ”,系统把此文件名分成单个的词存储在网络中,每个词就当作这个文件的关键值,每个关键值还带有一串附属词汇(context)用来说明这个文件名的具体内容。最后资源文件将会分成如下的的几种关键值形式进行存储: a.Key:beijing context:radio ,music b.Key:radio context:beijing ,music c.Key:music context:beijing , radio 很显然在Chord这种根据关键值存储的系统中,以上每个关键值将会存储在不同的节点中,无论用户是利用文件的全名进行查询还是文件名的一部份进行查询,查询的过程将是一样的。例如:当用户查询“beijing music”的时候,系统将会查询下列关键值。 a.Key:beijing context:music b.Key:music context:beijing 存储关键值的节点将会返回以下结果: a.Key:beijing context:radio ,music b.Key:music context:beijing , radio 用户可以通过这些返回的关键值进行连接下载资源。其中的附属字段可以给用户用来计算查询结果与查询目标的相近值。比如上述示例里面查询返回的第一个结果,其中的关键值与附属字串就与用户的查询目标更为接近,用户就可以通过第一个结果进行连接下载。在不成功的情况下用户也可以用第二个结果进行下载。附属字串的另外一个好处就在于当用户查询的目标非常的简短时,附属字串可以给用户参考的空间决定是否进行连接。如果不使用这种方法的话,在Chord主干网中要查询上述文件只能用文件的全名进行查找,否则查询不能成功。为了增加结果发现的机会,所有的关键值都被转化为小写字母并且所有的停止词(stop-word)都被删掉。但限制词的删除有一点的限度否则关键值会导致为空值。 ◆共享信息为Metadata 同样的过程可以用于对Metadata(一种经常用于P2P系统中描述文件属性的文件)作为关键值进行查找。系统把Metadata中某些属性的描述符作为关键值,把其它的一些字段作为附属字串。由于Metadata文件中可能描述的文件属性比较多,系统把其中的一部份属性值作为文件的描述符并不作为查询中的关键值,这些描述符使得用户可以对资源进行更深入的了解,以确定这次查询返回的结果是否是用户所真正的需要。比如一个音乐文件的Metadata如下所示: Style:Popular Composer:Robert Lee medium:panic title:Going Downtown country:Vienna artist:Jenny F. L. 由于country,style和media属性非常的平常,查找返回结果将会过于巨大,用户将需要很多的时间去进行判断,因此这两个属性值作为文件的描述符。其他属性作为可进行查找的关键值,关键值将会调整成以下形式: a. Key:Composer:Robert Lee Context:title:Going Downtown,artist:Jenny F. L. b.Key:title:Going Downtown Context:Composer:Robert Lee,artist:Jenny F. L. c.Key:artist:Jenny F. L. Context:title:Going Downtown,Composer:Robert Lee在系统运行过程中,属于主干网和Chord子网中的文件名或Metadata关键值都会被解析成数字存储于网络节点中,但在Gnutella和Napster子网中只有要在主干网进行查询过程时才需要这个过程,也就是说边缘节点会完成这个过程。4 结论与下一步研究方向 综上所述,在分析集中目录式、非结构化和结构化对等网络模型弊端的基础上,本文提出了一种新型P2P网络模型-基于混合模式对等网络模型(HMPN)。通过引入网络分层的思想,在P2P网络中实现了多种网络结构并存的网络模型设计,提高了网络的可扩展性和透明性,并降低了主干网络通信流量。在此基础上提出的管理节点模式和关键值匹配方案进一步改善了P2P网络不可管理现状,并为该模型从理论到实用的转化奠定了基础。 目前,我们的研究正处于P2P网络建模阶段,下一步工作将在网络仿真实验基础上,进一步提出管理节点对网络的多方面管理和安全应用的实现,并着手建立应用系统参考文献1 Geoffrey Fox, “Peer-to-Peer Networks”[J], Web Computing, Vol. 3, No. 3, pp. 75–77,May/June 2001.2 The Napster Homepage. http://www.napster.com/. 2003-11-53 The Gnutella Homepage. http://gnutella.wego.com/.2003 11-54 Munindar P. Singh, “Peering at Peer-to-Peer Computing”[J], IEEE Internet Computing, Vol. 5, No. 1, pp. 4–5 January/February 20015 KARGER, D., LEHMAN, E., LEIGHTON, F., LEVINE, M., LEWIN,D., AND PANIGRAHY, R. Consistent hashing and random trees:Distributed caching protocols for relieving hot spots on the World Wide Web. In Proceedings of the 29th Annual ACM Symposium on Theory of Computing (El Paso, TX, May 1997), pp. 654–6636 Clint Heyer NAANOU:A scalable moderated P2P network [OB/OL].http://innovexpo.itee.uq.edu.au/2002/ projects /s359012/ 2004-10-137 I. Stoica, R. Morris, D. Karger, F. Kasshoek, and H. Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In Proceedings ACM SIGCOMM, 2001.