P2P网络架构调查

翻译 2006年05月18日 11:42:00

P2P网络架构调查

王重刚 李波

香港科学与技术大学 计算机科学部,香港

{cgwang,bli}@cs.ust.hk

2003-4-20

摘要:P2P网络实际上是一个分布式对象存储、查询及共享的网络架构。本文将展示其现状的一个调查。首先,我们将引入一个简单的P2P的定义,并定义了一些P2P常用操作流程。其次,为了理解和比较实际的P2P架构和协议,我们讨论了P2P运行效率。第三,对现有的P2P架构进行了分类和详细比较。第四,对相应的P2P架构中对象查询协议进行了仔细的讨论。我们也回顾了现有P2P模型的输出并列举了总体的模型解决方案。最后,简要研究了几个基于P2P技术的新应用和P2P网络架构将来的研究方向。这篇文章目的是根据P2P的发展和演变过程,给出一个清晰完整的P2P网络架构的调查研究。

1 简介

Oram[1]给出了一个P2P简单的定义:“P2P是一类应用,它利用了网络中闲置的存储、周期、内容、人力的资源。因为使用这些分散资源就意味着要在一个不持续连接、未知IP地址的环境中操作。端对端节点一定是在DNS外操作,而且也在相对集中或完全自治的集中服务器之外”。简而言之,P2P是在应用层上的一个专有分布系统。在此,每对节点都可以通过路由协议在P2P层上直接通信。总体的P2P 网络结构如图1示。每个结点(节点)拥有一个对象(如文件,音乐,MP3MPEG等)数据库。每个节点都可以通过P2P层逻辑连接查询其它节点上它想要的对象。

为了清晰地理解P2P,我们用C/S模型与P2P模型进行比较(表1)。在C/S模型中,每个节点扮演的角色或是客户端或是服务器。诸如存储或计算能力等资源可以在客户端和服务器之间共享。在C/S模型中,服务器事实上是一个集中控制点。在P2P模型中,每个节点都同时是客户端和服务器。作为客户端,它从其它节点查询或下载它想要的对象。同时作为服务器,它也为其它节点提供服务。

根据生命周期,对于P2P节点来说有大致四个术语:连接,查询,下载和分离。首先,一个即将进入的节点必须活跃地连接到P2P系统。在这个过程中,它需要获取一些基本信息(如它的邻点)来启动,同时也要发布它拥有资源的信息。然后,这个节点可以为它需要的资源提交查询。这时,P2P定位协议会帮助这个节点来确定目标节点,同时P2P路由协议会传送查询消息到目标节点上。第三,如果查询成功(通常返回目标节点IP地址),节点可以直接从目标节点下载资源。最后,节点会在理想状态宣布分离。因此,P2P三个重要组成是:邻居发现,定位协议和路由协议。这些组成将会利用P2P拓扑结构,即使结构化或非结构化和P2P节点自治,而不会在开始下载资源时使用。

本文目标是给出一个P2P当前优劣的调查。尽管已经有了一些P2P网络的概述文章[2-4],但我们强调的是P2P架构,资源查询算法和P2P执行评价与模板化。我们尽量给出一个完整清晰的介绍与分析,设计到当今P2P网络及其执行比较、未解决问题和一些今后发展方向。文章后续部分是按如下组织的。第二部分列举了一些P2P执行公式。第三部分中,我们讨论比较了三代P2P架构。然后是资源查找算法,也是P2P网络中最重要组成之一,它在第四部分被认真描述了。第五部分将讨论P2P执行模型的一些发展。最后,在第六部分,我们综述了P2P重要应用和今后发展方向。第八部分给出了一些总结。

 

2. P2P执行模板

为了评价比较现有P2P网络,我们首先定义一些执行模板。通常的P2P网络的特性一般包括:安全性,匿名性,可扩展性,弹性和查询效率。本文重点在后三者。弹性由查询字比率来确定。我们可以称提交查询的节点为获取者,称拥有被查询资源的节点为提供者(图3)。有两种情况将导致失败:1)提供者关闭。2)在到提供者的线路上有故障(如连接失败或节点超时失败)。但是,查询效率是依赖于平均查询消息数和平均查询路径长度。总的来说,资源查询算法涉及查询消息数,如果使用基于洪泛的转发,查询消息数一定会比使用单点路由转发多。但基于洪泛的转发会产生较短的查询路径长度。其它的一些公式:1)一个节点上通过的控制消息,2)一个节点上处理查询的平均数。

3. P2P架构

3.1 P2P分类

当今的P2P网络有很多,每种P2P网络有着很多不同特性,而它们又没有统一分类标准。我们将思考几种方法来为它们分类,从而更好地理解它们。

根据资源查询机制不同和P2P逻辑拓扑结构,现今P2P架构可以分为这样三类[5]1)集中方式-所有资源索引项目被按照<资源键值,节点地址>形式保存在一个集中服务器上。每个进入的节点需要上传它拥有资源的信息到服务器,然后节点只需要在服务器上查询它所需要资源节点地址。这种类型的P2P架构是很简单的,易于开发。但是它有单点故障的问题,尽管我们可以使用多个并行服务器。这种架构P2P的典型例子是Napster[6]2)非结构化分布方式-资源查询是分布的,而且逻辑P2P拓扑多是随机的非结构化网络。查询在网络中一跳一跳地执行直至成功、失败或是超时。这种类型,如Gnutella[7],没有单点故障问题,但是查询效率是非常低的。3)结构化分布方式-资源查询是分布的,但是逻辑P2P拓扑是一定程度结构化的,如mesh[8]~[10]ring[11]d-dimension torus[12],及butterfly[13]~[15]。这些结构化拓扑一般通过分布的哈希表-DHT技术来组织,如[9]~[12]。资源查询也是在结构化网络中一跳一跳地执行的,在理想情况下通过若干确定的跳转就可以确定成功。

根据产生的时间和目的,我们可以将现有P2P网络分成三代:11G-第一代是最早的P2P网络,如NapsterGnutella,旨在开发简单快捷。它们过于简单,以致没有好的可测量性和好的查询效率。22G-第二代:第二代P2P网络通常使用DHT技术来实现更好的可测量性和查询效率,提供负栽均衡,支持精确查询。但是可扩展性和容错能力不好,尤其是在恶意攻击下更差。33G-第三代[13]~[15]:近来提出的P2P网络想要在假定节点会在某些失败的情况下关闭后提供高的弹性。通常在提供高容错性使用的技术包括资源复制,节点间增加连接数,还有一些特殊的结构化拓扑。2G3GP2P网络通常是分布式的结构化网络。在后面,我们将按照上述的两种分类方法分别详细讨论它们。

3.2 第一代P2P

MapsterCPP[6]

Napster[6] ,一个音乐交互系统,和其它简单系统一样有一个不断更新的资源列表保存在集中的Napster服务器上。节点登录这个服务器并发送它能提供的文件列表,然后向服务器提交查询来查找其它的哪个节点持有它们需要的文件,最后直接从资源所在节点下载需要的文件。尽管Napster集中数据库先天地避免了查询路由和其它的P2P系统上存在的问题,但是很明显这样的集中式解决方案有着单点故障的问题而且有较差的可扩展性。这种架构的另一个特点是它支持模糊查询(例如,查询所有的标题包含两个或多个特殊词的资源)。

Gnutella-DUPP[7]

在这种典型的如Gnutella[7]架构中,它在拓扑上或资源配置上既没有一个集中的方向也没有精确的控制。Gnutella实际上是一个分布式的文件共享系统,它的参与着自我组织成一个虚拟的网络来运行P2P方式的分布式的文件查询。为了进入Gnutella,一个节点必须连接到一个已知的Gnutella节点来获取一些Gnutella节点列表来启动。当要查询一个文件,节点要向它的邻点提交查询。典型的查询方式是洪泛,即查询在一个确定的半径内向所有邻点传播或由P2PTTL机制控制。这种非结构化的架构对于节点进入和离开系统有很好的弹性。但是,现在的基于洪泛的查询机制是不可升级的,因为它给网络的参与者产生了很大的负栽。近来,[5]尽最大的努力去克服这个缺陷,提出了两个机制:“动态TTL设置或扩展环”和“K步的随机漫步”。但是“K步的随机漫步”可能导致大的查询时间(延时)。因此,资源复制机制[16][17](如统一复制,部分复制,平方根复制和Log形式的复制)同时被提出来减少查找时间。我们考虑使用cache机制可以使查询消息和长度可以同时减少,如:在查询路由逆向缓存资源。而且,Gnutella也可以支持模糊匹配。

3.3 第二代P2P

这种类型的架构没有集中服务器,但是有着显著的结构。“结构”意味着P2P网络拓扑是严格控制的(如Mesh[9][10][18]Ring[11][20-22]D-dimension Torus[12]K-ary tree[19]SkipList[23]),而且文件也不是随机的而是特定的放置的,这样使得后续的查询很容易成功。这种结构的P2P系统经常支持一个类似Hash表的接口,这在当前文献中是很普遍的。它使用精确的配置算法和特殊的路由协议是查询高效。但是还不是很清楚在有相当多暂时性节点和多处节点失效情况下,这种结构效率如何(除了Butterfly)。这种拓扑结构不支持模糊查询,只支持精确查询。

Plaxton[18]

Plaxton中,每个节点或机器都可以扮演服务器角色(即存储资源),路由器角色(即转发消息),和客户端(请求方)。在我们的讨论中,我们用这些术语来与节点互换。同时,资源和节点在它们的定位和语义部分在名字上是独立的,以基于普通基数的随机定长比特序列的形式来描述的(如,40个十六进制数描述160比特)。系统假定进入者大约是在节点数和资源命名空间都均匀分布的,它们可以使用hash算法的输出来完成,如SHA-1RFC3174)。Plaxton假定Plaxton网络是静态数据结构,没有节点或资源插入或删除。

Plaxton中,资源定位按照如下工作:1)服务器S1通过路由一个消息到O1的“根节点”来发布消息说明它拥有资源O1。根节点在网络中是唯一节点,这个节点被放置在O1的内嵌树的根部。发布的过程由向根节点发送一个消息组成,消息包含<资源标识,服务器标识>映射。这个映射将被自S1O1根节点的路径上的节点记录下来。2)在资源定位过程中,一个目标为O1的查询消息最初被路由向O1的根节点。3)在每一步中,如果消息遇到一个包含O1位置映射的节点,它立即转向到包含O1的服务器上。否则,这个消息被转发到离根节点更近的节点。如果消息到达根节点,只要O1的根节点没有失效它就要确保找到一个O1位置的映射。

Plaxton路由协议执行如下:1)节点N有一个多层的邻点图,其中每一个层描述了一个ID数字的匹配的后缀。例如,节点325AE在第四层的第九个入口在网络上离325AE近,到95AE终止。2Plaxton在每个节点上使用本地路由映射(邻点图),从而一个数字一个数字地逐步路由消息到目标ID上(例如,****8=>**98=>*598=>4598,其中*代表通配符)。这种方案类似于在CIDR IP地址配置结构中的最长前缀路由方式。

相关文章推荐

p2p网络中的NAT穿透技术----常见NAT穿越解决方案

常见NA丁穿越解决方案NAT技术在缓解IPv4地址紧缺问题、构建防火墙、保证网络安全等方面都发挥了重要 作用。然而,NAT设备的广一泛存在却给Internet上的主机,特别是处于不同内网中的主机进行P...

集中目录式P2P网络模型

集中目录式P2P网络模型采用中央目录服务器管理P2P网络各节点,仍然具有中心化的特点,被称为非纯粹的P2P结构。 一:区别于C/S模式(客户端只能被动从服务器上读取信息,并且客户端之间不具有交互能力...

P2P网络借贷系统简要解读

P2P网络借贷系统的核心功能其实很简单,就是若干投资者(借款人)集体把钱贷给贷款人,到期后,贷款人把利息和本金按时还给借款人。平台的主要作用是“撮合”,收取一定的服务费和管理费。通用功能     用户...

P2P网络Chord环的构造

画出m=4的带弦Chord环的示意图,图中实际存在的节点NodeID分别为0、3、11、14,试: (1) 给出每个节点的finger table; (2) 描述NodeID为5的新节点从...

C/S+P2P网络模型(二)--上传&下载文件

原文地址:http://blog.csdn.net/whoami021/article/details/21656875 上一篇文章我们实现聊天的功能,下面我们看文件传输怎么实现。我的做法是:增...

迪蒙股票配资系统开发:如若P2P网络软件设计不好招服务攻击

现有的P2P网络软件设计缺陷使得攻击者可以轻松的发起庞大的拒绝服务攻击,从而轻易使得互联网网站崩溃。   根据安全公司Prolexic Technologies的数据,在过去的三个月...

详解P2P网络技术与实现原理

穿越NAT的意义: NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公平”应用,“相互共享”的思想所不容,尤其是P2...

【P2P网络】磁力链接转换为种子文件 magnet to torrent .

原文地址:http://blog.csdn.net/xxxxxx91116/article/details/7971134

《Nodejs开发加密货币》之八:一个精巧的p2p网络实现

加密货币都是去中心化的应用,去中心化的基础就是P2P网络,其作用和地位不言而喻,无可替代。事实上,P2P网络不是什么新技术。但是,使用Nodejs开发的P2P网络,确实值得围观。这一篇,我们就来看看E...
  • imfly
  • imfly
  • 2016-05-04 10:25
  • 4013
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)