P2P中资源下载方法及其系统 【技术领域】
本发明涉及网络通信领域,尤其涉及P2P中资源下载方法及其系统。
背景技术
近十年来互联网络及其接入技术发展十分迅速,网络的数据处理与传输能力有了长足的发展,这使得几年前还因底层原因无法大规模部署的互联网上海量数据交互应用系统获得了极大的发展空间,成为当前最受关注的互联网应用领域。此类的应用程序包括文件共享系统、视频直播/点播系统、多媒体视像会议系统等。由于数据量过大,传统的客户端/服务器模式并不能满足这些应用程序,其服务器端有限的资源会被轻易占满,使得系统难于大面积部署。因此当前这些程序通常转而选择对等互助的模式,在服务器少干预、甚至不干预的条件下交换、传输数据,使得整个应用系统能够快速、高效、廉价的大范围部署到互联网络中。这种网络应用层上基于对等互助模式的网络,被称为对等网络(Peer-to-Peer Network,以下简称P2P)。
相较于客户端/服务器模式,P2P技术拥有网络负载均衡、易于快速大规模部署的优点。以P2P视频直播系统为例,系统中各个客户端不但可以从视频的直接发布者请求数据,同时还可以从其他客户端中分享数据。这种分享策略虽然会在一定程度上造成视频播放的延迟,但却可以极大减轻该流媒体发布者的负担。实际上,对于普通的网络视频直播服务来说,用户只要能够流畅收看到所希望看到的直播节目就会有很高的用户满意度,而并不会在意数秒甚至数分钟的延迟。
但是,现有技术中,应用层用户节点的拓扑结构与物理层网络拓扑结构的脱节所造成的低效组织与传输问题。由于现有技术中,P2P用户节点间的组织与拓扑结构并不考虑两个节点所在主机间的地域距离,因此可能会出现在应用层中直接相邻的节点其实际连接质量并不高,或者数据包在两个或多个大网之间反复传播的现象,称为ZigZag现象。
在图1所示的互联网络中包含四个网络,每个网络中包含多个主机,例如,节点A属于网络01。网络内部主机之间的通信时延较小,丢包率较低,连接带宽较大;而处于不同网络之间的主机通信时延较大,丢包率较高,连接带宽较小。
现有技术中P2P系统运行于图1所示的网络中,P2P网络的客户端节点运行在图1所示的主机中。各个节点之间的关联关系如图2所示。其中,节点A代表运行在主机A上的P2P系统客户端。假设节点B、节点F、节点M、节点N拥有数据Data,当节点A发起一个资源查找进程,请求获得数据Data时,如果没有来自物理层网络拓扑结构的信息,由于在应用层拓扑图中节点F距离节点A只有一跳距离,节点A因此认定节点F的距离最近,进而向节点F请求建立连接并传输数据Data。但由图1所示,节点A从节点B获取数据Data才是最好的选择,因为节点A和节点B同处于网络01内,可以得到更好的数据传输效率。
【发明内容】
为克服上述问题,本发明提供了P2P中资源下载方法及其系统,通过对节点进行分组,能够在选择节点进行下载时应用物理层网络拓扑结构。
本发明公开了一种P2P中资源下载方法,包括:
步骤1,节点根据物理网络信息和预设的节点组划分标准选择加入的节点组;
步骤2,发生数据请求的节点为用户节点,用户节点获得拥有请求数据的备选节点,备选节点组成备选节点集合;
步骤3,用户节点依据用户节点所属的节点组,以及备选节点同所述用户节点间的连接质量,从备选节点集合中选择备选节点,被选择的备选节点作为资源节点;
步骤4,用户节点从所述资源节点下载请求的数据。
所述步骤1进一步为,
步骤21,根据所述P2P的性质设置节点组划分标准;
步骤22,节点获得由物理网络信息组成的网络信息向量,从所述网络信息向量中选择所述节点组划分标准对应的物理网络信息;
步骤23,节点根据所述物理网络信息选择加入的节点组。
所述步骤2进一步为,
步骤31,用户节点从服务器中获取备选节点列表,备选节点列表中的备选节点组成所述备选节点集合。
所述步骤2进一步为,
步骤41,用户节点通过同网络中节点交互信息确定拥有请求数据的节点,被确定的节点为备选节点,备选节点组成备选节点集合。
所述步骤3进一步为,
步骤51,用户节点从备选节点集合中选择同所述用户节点在同一节点组的备选节点作为资源节点,如果备选节点集合中不存在同所述用户节点在同一节点组的备选节点,则执行步骤52;
步骤52,用户节点确定所述用户节点同各个备选节点间的连接质量;
步骤53,用户节点选择连接质量最好的一个或多个备选节点作为资源节点。
所述步骤52进一步为,
步骤61,用户节点在所在的节点组中查询所述节点组同每个备选节点所在节点组的连接质量,以查询到的节点组间的连接质量作为所述用户节点同备选节点间的连接质量;
步骤62,对于未查询到节点组间连接质量的备选节点,所述用户节点启动连接质量测定作业,获取所述备选节点与所述用户节点之间的连接质量;并将所述连接质量作为所述用户节点所在节点组同所述备选节点所在节点组间的连接质量进行保存。
所述步骤1还包括,
步骤71,节点在所在的节点组内随机选择节点作为邻居节点,建立邻居节点表;
所述步骤2还包括,
步骤72,节点应用所述邻居节点表在节点组内查找拥有请求数据的备选节点,将所述备选节点补充到所述备选节点集合中。
本发明还公开了一种P2P中资源下载系统,包括节点,所述节点包括:
节点组划分模块,用于根据物理网络信息和预设地节点组划分标准选择所属节点加入的节点组;
备选节点查询模块,用于在所属节点发生数据请求时,获得拥有请求数据的备选节点,将备选节点组成备选节点集合;
资源节点选择模块,用于依据节点所属的节点组,以及备选节点同所述用户节点间的连接质量,从备选节点集合中选择备选节点,以被选择的备选节点作为资源节点;
下载模块,用于从所述资源节点下载请求的数据。
所述节点组划分模块进一步用于根据所述P2P的性质设置节点组划分标准;获得由物理网络信息组成的网络信息向量,从所述网络信息向量中选择所述节点组划分标准对应的物理网络信息;根据所述物理网络信息选择加入的节点组。
所述备选节点查询模块进一步用于在所属节点发生数据请求时,从服务器中获取备选节点列表,备选节点列表中的备选节点组成所述备选节点集合。
所述备选节点查询模块进一步用于在所属节点发生数据请求时,通过同网络中节点交互信息确定拥有请求数据的节点,被确定的节点为备选节点,备选节点组成备选节点集合。
所述资源节点选择模块进一步用于从备选节点集合中选择同所述用户节点在同一节点组的备选节点作为资源节点,如果备选节点集合中不存在同所述用户节点在同一节点组的备选节点,则确定所属节点同各个备选节点间的连接质量;选择连接质量最好的一个或多个备选节点作为资源节点。
所述资源节点选择模块在确定所属节点同各个备选节点间的连接质量时进一步用于在所属节点所在的节点组中查询所述节点组同每个备选节点所在节点组的连接质量,以查询到的节点组间的连接质量作为所述用户节点同备选节点间的连接质量;对于未查询到节点组间连接质量的备选节点,启动连接质量测定作业,获取所述备选节点与所属节点之间的连接质量;并将所述连接质量作为所属节点所在节点组同所述备选节点所在节点组间的连接质量进行保存。
所述节点组划分模块还用于在所属节点所在的节点组内随机选择节点作为邻居节点,建立邻居节点表;
所述备选节点查询模块还用于应用所述邻居节点表在节点组内查找拥有请求数据的备选节点,将所述备选节点补充到所述备选节点集合中。
本发明的有益效果在于,通过对节点进行分组,能够在选择节点进行下载时应用物理层网络拓扑结构;通过优选节点组内的备选节点,能够减小跨网流量,提升P2P系统的整体效率和稳定性;通过将节点组间连接质量等效为节点的连接质量,能够减少不同节点组间节点的连接质量测定作业,降低连接质量测定作业对网络和系统资源的消耗。
【附图说明】
图1为物理层网络结构的示例图;
图2为未考虑网络层拓扑的应用层拓扑结构示例图;
图3为本发明的P2P中资源下载方法的流程图;
图4为本发明的进行逻辑分组后的拓扑结构示例图;
图5为本发明的P2P中资源下载系统的结构图。
【具体实施方式】
下面结合附图,对本发明做进一步的详细描述。
本发明中,将用户发起资源查找时所在的客户端节点称为用户节点;将与用户节点位于同一节点组内的逻辑相邻节点称为邻居节点;将获得的拥有所需请求下载资源的节点称为备选节点;将选择的提供实际资源下载的备选节点称为资源节点。
本发明的P2P中资源下载方法的流程如图3所示。
步骤S100,节点根据物理网络信息和预设的节点组划分标准选择加入的节点组。
所述步骤S100的具体实施方式如下所述。
步骤S110,根据所述P2P的性质设置节点组划分标准。
不同性质的P2P对应不同的节点组划分标准。例如,文件共享系统中热门资源的数据源节点较多,因而以区域网络边界为节点组划分标准,以提高资源查找的精确度。对于较冷门的数据、或对连接建立时延要求较高的P2P直播应用,则以省域网或运营商网络边界作为节点组划分标准,从而提高查找的效率。
步骤S120,节点获得由物理网络信息组成的网络信息向量,从所述网络信息向量中选择所述节点组划分标准对应的物理网络信息。
当一个节点登录P2P系统时,首先启动节点初始化进程。该节点首先根据系统配置信息获取网络信息向量,该网络信息向量由物理网络信息组成。例如,网络信息向量包括国家标识、运营商标识、省域网络标识和地区网络标识,以及其他各种与物理层网络拓扑信息相关的地址标识。
节点根据步骤S110中设置的节点组划分标准,选择对应的物理网络信息。例如,以区域网络边界为节点组划分标准时,则选择地区网络标识为对应的物理网络信息;以省域网或运营商网络边界作为节点组划分标准时,则分别选择省域网络标识或运营商标识为对应的物理网络信息。
步骤S130,节点根据物理网络信息选择加入的节点组。
节点加入到同所选的物理网络信息相同的节点组成的节点组中。
如图1所示,节点A、节点B、节点C和节点D同时位于网络01内,将网络01的网关IP地址作为对应的物理网络信息,则将P2P系统中节点A、节点B、节点C和节点D编入一个节点组01。如图4所示。同样方法,将节点E、节点F、节点G编入节点组02;将节点H、节点J、节点K和节点L编入节点组03;将节点M、节点N、节点P和节点Q编入节点组04.。
根据前述物理层网络的特性,由于同一物理网络中的所有节点都位于同一个网络内,各个节点间的地理距离较近、连接质量较高,这保证组内节点间的传输代价较低、通信效率较好。
在进一步优选的实施方式中,所述步骤S100中,节点还在所在的节点组内随机选择节点作为邻居节点,建立邻居节点表。
节点应用所述邻居节点表在节点组内查找拥有请求数据的备选节点,将所述备选节点补充到步骤S200的备选节点集合中。
步骤S200,用户节点获得拥有请求数据的备选节点,备选节点组成备选节点集合。
所述步骤S200的具体实施方式一
用户节点从服务器中获取备选节点列表,备选节点列表中的备选节点组成备选节点集合。
例如,BitTorrent的P2P系统中通过Tracker服务器获取种子文件,以获取备选节点集合。
所述步骤S200的具体实施方式二
用户节点通过同网络中节点交互信息确定拥有请求数据的节点,被确定的节点为备选节点,备选节点组成备选节点集合。
步骤S300,用户节点依据用户节点所属的节点组,以及备选节点同用户节点间的连接质量,从备选节点集合中选择备选节点,被选择的备选节点作为资源节点。
所述步骤S300的具体实施方式如下所述。
步骤S310,用户节点从备选节点集合中选择同所述用户节点在同一节点组的备选节点作为资源节点,如果备选节点集合中不存在同所述用户节点在同一节点组的备选节点,则执行步骤S320。
由于一个节点组内的节点都来自于物理层网络的同一个子网络中,同一节点组内节点之间的通信相对于不同节点组间的通信时延较小,丢包率较低,连接带宽较大。因而在选择资源节点时,同一节点组中的备选节点被优先选择。
步骤S320,用户节点确定所述用户节点同各个备选节点间的连接质量。
步骤S320具体实施方式如下所述。
步骤S321,用户节点在所在的节点组中查询所述节点组同每个备选节点所在节点组的连接质量,以查询到的节点组间的连接质量作为所述用户节点同备选节点间的连接质量。
由于一个节点组内的节点都来自于物理层网络的同一个子网络中,因此其网络连接质量与特性具有相似性,两个不同节点组中节点间的连接质量可以等价于两个节点组之间的连接质量,被称为连接质量等价原则。
如图4中,节点A和节点F的连接质量等价于节点组01到节点组02的连接质量。若节点B要考查与节点G的连接质量,则节点B使用前述节点A和节点F的连接质量信息,而不需重新要发起一个连接质量测定作业。
通过上述连接质量等价原则,能够大量减少组间连接质量测定作业,降低跨网流量,减小数据下载时延,提高P2P系统用户使用满意度。
用户节点的在节点组内查询的三种具体实施方式如下所述。
具体实施方式一为Gossip方法。
Gossip是互联网中的随机节点选择方法。所述用户节点作为一个组内查询的发起节点首先随机选择一个邻居节点,将查询请求发送给该节点。若得到了相关连接质量,则终止查询进程,并将结果返回给发起查询的用户节点;否则,所有收到过该查询请求的节点随机选择它的一个邻居节点,将所述查询请求转发给该邻居节点。
为减少查询时间,可以设定转发的轮次,如可以设定进行最多5轮Gossip查找,若未得到结果,则结束查询进程,并告知所述用户节点,该连接质量不存在。
下面结合图4,对节点组内Gossip查询方法举例说明。
节点B查找某一资源,确定节点P拥有该资源,因此将节点P加入备选节点列表中。节点B的组内Gossip查找过程如下。
节点B从其邻居节点列表中,图4中节点B的邻居节点列表包括节点A和节点D,任选一节点,如节点A。节点B向节点A发送查询请求,请求节点组01同节点组04间的连接质量。
节点A没有节点组01同节点组04间的连接质量,因此节点A转发该查询请求给其邻居节点C。
节点C拥有与节点N的连接质量,同时,节点C知道节点P属于节点组04,将节点C同节点N的连接质量作为节点组01同节点组04的连接质量,节点C返回该连接质量信息给节点B,节点B针对备选节点P的组内查询过程结束。
Gossip方法进行查询,优势在于只需要保证节点的组内邻居节点列表大小与节点组中节点的总数成对数关系,就可以保证参与节点能以较高的概率接收到查询消息,查询代价较小,而且不受节点动态变化的影响;缺点是随机算法不能保证存在的信息一定能够找到。
具体实施方式二为洪泛方法。
洪泛方法指所述用户节点向其所有节点组内邻居节点发送查询请求;邻居节点如果没有相关连接质量信息,则转发该查询请求给所有自己的节点组内所有邻居节点;上述过程持续发生,直到获得相关节点的连接质量信息,或确定所述连接质量信息不存在。
下面结合图4,对节点组内洪泛查询方法举例说明。
节点B查找某一资源,确定节点P拥有该资源,因此将节点P加入备选节点列表中。节点B的节点组内洪泛查找过程如下所述。
节点B向其邻居节点列表中,图4中节点B的邻居节点列表包括节点A和节点D,的所有节点发送查询请求,请求节点组01同节点组04间的连接质量。
节点A没有节点组01同节点组04间的连接质量,因此节点A转发该查询请求给除节点B以外的所有邻居节点,这里只有邻居节点C;节点D也没有节点组01同节点组04间的连接质量,节点D转发该查询请求给除节点B以外的所有邻居节点,这里也只有邻居节点C)。
节点C拥有与节点N的连接质量,同时,节点C知道节点N属于节点组04,将节点C同节点N的连接质量作为节点组01同节点组04的连接质量,节点C返回该连接质量信息给节点B,节点B针对备选节点P的组内查询过程结束。
洪泛方法的优势在于只要组内有该目标节点的连接质量信息存在,就一定能够找到;缺点是查询代价大。
具体实施方式三为分布式散列表方法
分布式散列表(Distributed Hash Table或DHT)可以将节点间连接质量信息分布存储于一个散列空间中,其组织结构较为严密,同时只要目标节点的连接质量信息存在,就一定能够在最大O(log n)跳的范围内找到,查询代价小;但是,缺点在于用分布式散列表组织节点的方式较为复杂,维护代价较大。
步骤S322,对于未查询到节点组间连接质量的备选节点,所述用户节点启动连接质量测定作业,获取所述备选节点与所述用户节点之间的连接质量;并将所述连接质量作为所述用户节点所在节点组同所述备选节点所在节点组间的连接质量进行保存。
备选节点到用户节点的连接质量是用来衡量上述两个节点间网络连接条件的定量度量标准。一种所述连接质量的计算方法为通过所述用户节点和备选节点之间网络连接的传输时延、带宽、丢包率等重要因素,估计前述连接的综合评分。
例如,采用如下公式计算连接质量。
d=(rtt/2+Spacket/bwavailable)1-rpacket_loss]]>
其中,rtt为所述备选节点到用户节点的往返时延,Spacket为数据包的大小,bwavailable为本连接可获得的带宽资源,rpacket_loss为丢包率。定义评分d越大的节点到所述用户节点的网络连接质量越差;而评分d越小的节点到所述用户节点的网络连接质量越高。
也可以,采用网络连接的传输时延、带宽、丢包率中的任意组合作为衡量标准。
步骤S330,用户节点选择连接质量最好的一个或多个备选节点作为资源节点。
步骤S400,用户节点从资源节点下载请求的数据。
在确定提供数据的资源节点之后,所述用户节点向所有资源节点请求建立连接,并完成数据下载。
一种P2P中资源下载系统包括节点,节点为P2P节点,节点的结构如图5所示。所述节点包括:节点组划分模块100、备选节点查询模块200、资源节点选择模块300和下载模块400。
节点组划分模块100,用于根据物理网络信息和预设的节点组划分标准选择所属节点加入的节点组。
较佳的实施方式中,节点组划分模块100进一步用于根据所述P2P的性质设置节点组划分标准;获得由物理网络信息组成的网络信息向量,从所述网络信息向量中选择所述节点组划分标准对应的物理网络信息;根据所述物理网络信息选择加入的节点组。
备选节点查询模块200,用于在所属节点发生数据请求时,获得拥有请求数据的备选节点,将备选节点组成备选节点集合。
一较佳的实施方式中,备选节点查询模块200进一步用于在所属节点发生数据请求时,从服务器中获取备选节点列表,备选节点列表中的备选节点组成所述备选节点集合。
另一较佳的实施方式中,备选节点查询模块200进一步用于在所属节点发生数据请求时,通过同网络中节点交互信息确定拥有请求数据的节点,被确定的节点为备选节点,备选节点组成备选节点集合。
资源节点选择模块300,用于依据节点所属的节点组,以及备选节点同所述用户节点间的连接质量,从备选节点集合中选择备选节点,以被选择的备选节点作为资源节点。
较佳的实施方式中,资源节点选择模块300进一步用于从备选节点集合中选择同所述用户节点在同一节点组的备选节点作为资源节点,如果备选节点集合中不存在同所述用户节点在同一节点组的备选节点,则确定所属节点同各个备选节点间的连接质量;选择连接质量最好的一个或多个备选节点作为资源节点。
进一步具体的实施方式中,资源节点选择模块300在确定所属节点同各个备选节点间的连接质量时进一步用于在所属节点所在的节点组中查询所述节点组同每个备选节点所在节点组的连接质量,以查询到的节点组间的连接质量作为所述用户节点同备选节点间的连接质量;对于未查询到节点组间连接质量的备选节点,启动连接质量测定作业,获取所述备选节点与资源节点选择模块300所属节点之间的连接质量;并将所述连接质量作为资源节点选择模块300所属节点所在节点组同所述备选节点所在节点组间的连接质量进行保存。
下载模块400,用于从所述资源节点下载请求的数据。
在一个较佳的实施方式中,节点组划分模块100还用于在所属节点所在的节点组内随机选择节点作为邻居节点,建立邻居节点表。
备选节点查询模块200还用于应用所述邻居节点表在节点组内查找拥有请求数据的备选节点,将所述备选节点补充到所述备选节点集合中。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。