一种用于p2p文件传输的空闲节点协助方法

文档序号:7749213阅读:176来源:国知局
专利名称:一种用于p2p文件传输的空闲节点协助方法
技术领域
本发明属于网络文件传输技术领域,具体涉及一种用于P2P文件传输的空闲节点协助方法。
背景技术
P2P (Peer-to-Peer,对等)技术,又称为对等网络技术,是一种在终端设备用户之间、不经过中间设备直接交换信息的技术。这些终端设备用户作为节点,它们之间的关系是平等、直接联系的,每个节点都具有信息处理和提供的功能。需要相同文件的节点通过加入同一个P2P网络组成一个P2P文件传输网络。P2P文件传输技术解决了传统客户/服务器(C/幻模式难以突破的服务器和带宽瓶颈。传统的文件分发方是大多采用客户/服务器(c/幻模式,在这种模式下,当用户需要得到某个完整的文件时,服务器以点对点推送的方式直接把文件发送给用户。当需要某个文件的用户数量大幅增加,这种C/S模式服务器需要同时把文件内容推送给多个用户,其缺陷便会明显地显现出来,如服务器带宽不足、处理能力没有办法跟上等,从而形成服务器瓶颈,系统的可扩展性差。而另一方面,普通用户只利用了自身的下载带宽得到文件数据, 而并没有充分利用到他们的上传带宽,浪费了这些带宽资源。而P2P文件传输技术可以充分利用所有参与文件交换的用户的带宽、处理能力和存储资源,将数据分散存储和处理,从而使得文件传输的速度得到大幅提高,使得大规模的文件交换成为可能。在普通的P2P文件传输网络中,每个节点都是独立、平等的,它们之间相互连接, 构成一个P2P网络,称为P2P网络拓扑。目前P2P网络拓扑结构包括三类链状结构、树状结构和网状结构。而应用最为广泛的P2P网络拓扑是网状结构。网状结构是指构成重叠网的网络逻辑拓扑为随机拓扑,每个节点均和多个节点相连并建成邻居关系,对等邻居节点之间也不存在严格的父子关系。网状结构不需专用设备, 也无固定拓扑维护,每个节点根据邻居节点网络状况、数据信息决定数据转发方向。因此, 此机制适合于异构模式的互连网环境,每个节点可与多个节点交换数据,无预先指定的父子关系,因此维护负载低。其代价就是服务质量无法预期,传输时延大,可管理性差。网状结构最大有优势是对带宽的利用,可以相对更为充分地利用每个节点的上传带宽。从全局看,如果不考虑服务器的作用,那么全部节点可以得到的下载带宽之和应该等于全部节点的上传带宽之和。因此,提高每个节点的下载速度一定程度上就等同于提高每个节点上传带宽和效率。但在真实网络中,一般的用户大多使用非对称的网络接入方式,例如ADSL。通过这种非对称方式,一般用户可以得到比较高的下载带宽以及相对小的上传带宽。在C/S模式中这种方式比较高效,但在P2P文件交换网络中,这种非对称的网络接入用户只能提供相对小的上传带宽,从而使得整个网络面临上传带宽的瓶颈。而同时,网络中存在很多没有被利用的上传带宽。一方面,一些用户在下载完成自己所需要的文件数据后,并不会急于退出P2P客户端下载器,这些用户可以看作依然存在于P2P网络中,但上传带宽和下载带宽都是空闲的。另一方面,网络中存在一些设备,它们拥有上传和下载带宽以及存储容量,但并不主动需求数据,例如家庭服务网关、数字机顶盒等。这些空闲的用户和设备都可以看作网络中的空闲节点。本发明的创作目的就是针对这些空闲节点,让这些空闲节点下载少量的数据,并充分地利用他们的上传带宽,从而提高整个网络的上传带宽,减少普通用户的下载时间。

发明内容
本发明所要解决的技术问题是如何充分利用空闲节点的上传带宽,缓解P2P文件传输网络中上传带宽和下载带宽不对称的问题。为解决上述技术问题,本发明采用的技术方案如下一种用于P2P文件传输的空闲节点协助方法,包括以下步骤(1)空闲节点随机加入一个P2P文件传输网络;(2)所述空闲节点与普通节点建立连接;(3)所述空闲节点每隔预设时间选择部分数据进行下载,并为没有该部分数据且与该空闲节点连接的所有普通节点提供上传。本发明所述方法,通过将空闲节点加入到P2P文件传输网络,并选择性地下载少量数据,为普通节点提供较多的数据上传,从而扩大了整体网络的上传带宽,降低了普通节点下载文件所需要的时间。


图1是具体实施方式
中P2P网络结构示意图;图2是具体实施方式
中空闲节点协助方法的流程图;图3是具体实施方式
中空闲节点与一个普通节点连接方式1的流程图;图4是具体实施方式
中空闲节点与一个普通节点连接方式2的流程图;图5是实施例1中空闲节点选择数据块下载和上传的流程图;图6是实施例2中空闲节点选择数据片段下载和上传的流程图;图7是实施例3中空闲节点选择数据片段下载和上传的流程图。
具体实施例方式下面结合具体实施方式
和附图对本发明进行详细描述。图1是本实施方式中P2P网络结构示意图。索引服务器与多个P2P文件传输网络连接(图1中只示出了与一个P2P文件传输网络的连接),每个P2P文件传输网络包括若干节点,节点之间的拓扑关系为网状结构,即每个节点均和多个节点连接并建成邻居关系。节点可以是网络中的主机,也可以是网络设备,如家庭服务网关、数字机顶盒等。每个节点都安装有P2P客户端下载器。本实施方式中,P2P文件传输网络中的节点分为普通节点和空闲节点。普通节点是指需要当前网络中的文件数据,且没有空闲带宽的节点;空闲节点是指不需要当前网络中的文件数据,且存在空闲带宽的节点。索引服务器是一个公开地址的服务器,用于记录不同的P2P文件传输网络以及这些网络中节点的节点信息,包括节点的IP地址、节点号等,从而协助节点加入P2P文件传输网络。
图2是本实施方式中空闲节点协助方法的流程图,主要包括以下步骤(1)空闲节点随机加入一个P2P文件传输网络。在由普通节点构成的一个P2P文件传输网络中,索引服务器保存了该网络中全部节点的节点信息,包括节点的IP地址,用于帮助新加入的空闲节点找到已经在网络中的其他节点。索引服务器自身的地址是公开的,任何节点都可以与之交互,获取其他节点的信肩、ο当P2P客户端下载器探测到其所在的节点出现空闲时,空闲节点需要首先与索引服务器进行交互。空闲节点首先与索引服务器建立连接,然后给索引服务器发送空闲节点进入消息,用于标记自身是空闲节点。索引服务器在收到空闲节点进入消息后,不记录空闲节点的节点信息,从而不会主动选择空闲节点返回给普通节点,而是从自身记录下的P2P 文件传输网络中随机选择一个,将空闲节点加入该网络。索引服务器不主动将空闲节点返回给普通节点,能够减少对普通节点请求相邻的其他普通节点的干扰。否则如果索引服务器返回过多的空闲节点给普通节点,而空闲节点自身只拥有少量的数据,则普通节点难以从相邻的普通节点获得需要的数据,反而降低了下载效率。(2)空闲节点与普通节点建立连接。空闲节点加入一个P2P文件传输网络后,从该网络的所有节点中,随机选择m个普通节点,(m的取值一般在[10,30]之间,最佳值为20个),把它们的节点信息返回给空闲节点,空闲节点分别与m个普通节点建立连接。当P2P文件传输网络中出现超过一个空闲节点时,可能会有多个空闲节点请求与一个普通节点建立连接。但普通节点并不需要与过多的空闲节点建立连接,因为空闲节点的下载存在重复性。为了减少碰撞的概率,普通节点需要对空闲节点进行选择,选择的依据是空闲节点与普通节点之间的传输延迟时间。这样,可以使得空闲节点与普通节点之间的数据传输更为有效。空闲节点在得到索引服务器随机选出的m个普通节点信息后,依次请求跟这m个普通节点建立连接。首先分别向m个普通节点发送handshake (握手)消息,在handshake 消息中标记自己是空闲节点。每个普通节点在接到handshake消息之后,需要对空闲节点进行选择,选择的过程可以采用如下两种方式之一(a)如图3所示,普通节点接到空闲节点发送的handshake消息后,先与空闲节点
建立连接。假设普通节点为普通节点p,空闲节点为空闲节点a。空闲节点a与普通节点ρ建立连接后,普通节点P统计与其连接的所有空闲节点数量M。如果M彡n(n为正整数,其范围优选在[1,5]之间),则保持与空闲节点a的连接, 结束连接过程。如果M = n+1,则普通节点A向与其连接的所有空闲节点发送探测消息,其内容可以是固定大小(例如256KB)的任意数据,记录下探测消息的发送时间并等待自动回复。当空闲节点接收到探测消息后,把探测消息再返回给普通节点P,普通节点P记录下回复时间,减去其发送时间后作为普通节点ρ与该空闲节点的传输延迟时间。如果普通节点 P没有收到空闲节点返回的探测消息,则认为普通节点P与该空闲节点的传输延迟时间为无穷大。当普通节点发出探测消息后,经过一段时间(该段时间一般可以设在1至5秒之间,优选设为3秒)后没有收到空闲节点返回的探测消息,便认为普通节点与空闲节点的传输延迟时间为无穷大。从与普通节点P连接的全部空闲节点中选择传输延迟时间最大的一个,发送取消连接消息,并与之断开连接。(b)如图4所示,普通节点ρ接到空闲节点发送的handshake消息后,先统计与其连接的所有空闲节点数量M。如果M <n(n为正整数,其范围优选在[1,5]之间),则直接与空闲节点a建立连接。否则,普通节点P获得其与空闲节点a的传输延迟时间,以及与当前和其连接的所有空闲节点的传输延时时间。由于此时普通节点P与空闲节点a尚未建立连接,因此普通节点P与空闲节点a的传输延迟时间可采用如下方式获得普通节点P向空闲节点a发送UDP^ser Datagram Protocol,用户数据包协议)探测包,例如ping (Packet Internet Grope,因特网包探索器)包,记录下发送时间后,等待空闲节点自动返回UDP响应包;当普通节点P收到UDP响应包后,记录下收到时间,将响应包的收到时间与探测包的发送时间之差作为传输延迟时间。如果普通节点P没有收到UDP响应包,则认为普通节点 P与空闲节点a的传输延迟时间为无穷大。如果采用已有的UDP探测包(如ping包),那么超时时间是被设置好的,大概为1秒。当然,该值也可以另外设置。由于UDP探测包数据较少,所以超时时间应该设置小一些,一般在1至3秒之间,优选为2秒。普通节点ρ与其他空闲节点的传输延迟时间通过与空闲节点a同样的方式获得。如果空闲节点a的传输延迟时间最大,则普通节点P不与其进行连接;否则从当前与其连接的所有空闲节点中选出传输延迟时间最大的空闲节点,与其断开连接,并与空闲节点a建立连接。(3)空闲节点选择部分数据进行下载以及上传。普通节点在与空闲节点建立连接后,并不直接向空闲节点请求数据,空闲节点也并非时时刻刻都进行数据传输,而是每隔t (5 20,优选为10)秒启动一次数据选择过程, 选择部分数据下载并上传给没有该部分数据且与该空闲节点连接的所有普通节点。在每个P2P文件传输网络中,被传输的文件通常被分成若干个等大小的chunk (数据块),最后一个chunk大小可能小于前面chunk的大小。每个chunk又可以分成若干个等大小的piece (数据片段),最后一个piece的大小可能小于前面piece的大小。节点之间每一次的数据传输都以Piece为单位。由于空闲节点并不需要完整的文件,因此空闲节点只需选择部分数据进行下载和上传即可。但该部分数据的数据量不宜过多,否则会影响到普通节点的数据下载。本实施方式中,空闲节点选择部分数据的方式有如下三种实施例1如图5所示,本实施例中,空闲节点选择一个chunk进行下载和上传。空闲节点与普通节点建立连接后,用一个节点列表记录与该空闲节点连接的所有普通节点的信息,将与空闲节点连接的所有普通节点称为该空闲节点的邻居节点。并用 bitmap (位图)记录该空闲节点的所有邻居节点拥有chunk的情况,每一个邻居节点对应一个位图。当空闲节点与普通节点的连接关系变更时,更新节点列表。例如,当空闲节点接收到普通节点发送的取消连接消息时,将普通节点从其节点列表中删除,如图3和图4所示。 当空闲节点的邻居节点拥有chunk的情况发生变化时,将变更信息发送给空闲节点,空闲节点以此变更邻居节点拥有chunk的情况。
8
每隔5秒的时间段,每个空闲节点进行一次chunk选择。从尚未下载完的全部 chunk中,选择一个可以使得空闲节点的上传带宽更充分利用的chunk。一个空闲节点选择 chunk的过程如下对于P2P文件传输网络中当前传输文件的每一个尚未下载完的chunk, 空闲节点首先遍历一次节点列表和位图,记录下拥有该chunk的节点个数Iiheve,以及没有该 chunk的节点个数nmiss,然后按照如下公式计算出该chunk对应的放大比β
权利要求
1.一种用于P2P文件传输的空闲节点协助方法,包括以下步骤(1)空闲节点随机加入一个P2P文件传输网络;(2)所述空闲节点与普通节点建立连接;(3)所述空闲节点每隔预设时间选择部分数据进行下载,并为没有该部分数据且与该空闲节点连接的所有普通节点提供上传。
2.如权利要求1所述的方法,其特征在于步骤(1)中所述空闲节点随机加入一个P2P 文件传输网络的方法如下空闲节点与索引服务器建立连接,将空闲节点消息发送给索引服务器,并在消息中标识自身是空闲节点;索引服务器接到空闲节点消息后,随机选择一个与该索引服务器连接的P2P文件传输网络,将空闲节点加入该网络。
3.如权利要求2所述的方法,其特征在于步骤O)中所述空闲节点与普通节点建立连接的过程如下当空闲节点加入一个P2P文件传输网络后,索引服务器从该网络中随机选择m个普通节点,将该m个普通节点信息返回给空闲节点;空闲节点分别与m个普通节点建立连接;其中,m < 30。
4.如权利要求3所述的方法,其特征在于所述m= 20。
5.如权利要求3或4所述的方法,其特征在于空闲节点与m个普通节点建立连接的过程如下首先空闲节点分别向m个普通节点发送握手消息,在握手消息中标记自己是空闲节点;每个普通节点在接到握手消息之后,与该空闲节点建立连接;然后每个普通节点判断与该普通节点连接的所有空闲节点数量M ;如果M不大于阈值n,则结束;否则,获得该普通节点和与其连接的所有空闲节点之间的传输延迟时间,选择传输延迟时间最大的空闲节点,发送取消连接信息,并与其断开连接。
6.如权利要求5所述的方法,其特征在于获得普通节点和与其连接的所有空闲节点之间的传输延迟时间的方式如下设普通节点为普通节点P,普通节点P向与其连接的所有空闲节点发送探测消息,所述探测消息为固定大小的任意数据,记录下探测消息的发送时间并等待自动回复;当空闲节点接收到探测消息后,把探测消息再返回给普通节点P,普通节点P记录下回复时间,减去其发送时间后作为普通节点P与该空闲节点的传输延迟时间;如果普通节点 P没有收到空闲节点返回的探测消息,则普通节点P与该空闲节点的传输延迟时间为无穷大。
7.如权利要求3或4所述的方法,其特征在于空闲节点与m个普通节点建立连接的过程如下设空闲节点为空闲节点a,首先空闲节点a分别向m个普通节点发送握手消息,在握手消息中标记自己是空闲节点;每个普通节点在接到握手消息之后,进行如下操作设普通节点为普通节点P,普通节点P判断与其连接的所有空闲节点数量M ;如果M小于阈值n,则与空闲节点a直接建立连接;否则,获得空闲节点a和普通节点P之间的传输延迟时间,以及当前与普通节点P连接的所有空闲节点的传输延时时间;如果空闲节点a的传输延迟时间最大,则普通节点P不与其进行连接;否则从当前与其连接的所有空闲节点中选出传输延迟时间最大的空闲节点, 发送取消连接信息,与其断开连接,并与空闲节点a建立连接。
8.如权利要求7所述的方法,其特征在于所述获得空闲节点a和普通节点P之间的传输延迟时间,以及当前与普通节点P连接的所有空闲节点的传输延时时间的方式如下普通节点P向空闲节点发送UDP探测包,记录下发送时间后,等待空闲节点自动返回 UDP响应包;当普通节点ρ收到UDP响应包后,记录下收到时间,将UDP响应包的收到时间与UDP探测包的发送时间之差作为普通节点与该空闲节点的传输延迟时间;如果普通节点 P没有收到空闲节点返回的UDP响应包,则普通节点ρ与该空闲节点的传输延迟时间为无穷大。
9.如权利要求1所述的方法,其特征在于步骤(2)中,空闲节点与普通节点建立连接后,用一个节点列表记录与该空闲节点连接的所有普通节点的信息;当空闲节点与普通节点的连接关系变更时,更新空闲节点中的节点列表。
10.如权利要求9所述的方法,其特征在于步骤(3)中,空闲节点用位图记录与其连接的所有普通节点拥有所述部分数据的情况;当普通节点拥有所述部分数据的情况发生变化时,空闲节点变更位图中与其连接的普通节点拥有所述部分数据的情况。
11.如权利要求10所述的方法,其特征在于步骤(3)中所述预设时间为t秒, 5彡t彡20。
12.如权利要求11所述的方法,其特征在于所述t= 10。
13.如权利要求10所述的方法,其特征在于步骤(3)中所述部分数据为P2P文件传输网络中当前正在传输文件的一个数据块。
14.如权利要求13所述的方法,其特征在于步骤(3)中一个空闲节点选择一次数据块进行下载的过程如下首先按照如下公式计算出P2P文件传输网络中当前传输文件尚未下载完的每一个数据块对应的放大比β
15.如权利要求10所述的方法,其特征在于步骤(3)中所述部分数据为P2P文件传输网络中当前正在传输文件的一个数据块的一个数据片段。
16.如权利要求15所述的方法,其特征在于步骤(3)中一个空闲节点选择一次数据片段进行下载的过程如下首先按照如下公式计算出P2P文件传输网络中当前传输文件尚未下载完的每一个数据块中的每个数据片段对应的放大比β,
17.如权利要求10所述的方法,其特征在于步骤(3)中所述部分数据为P2P文件传输网络中当前正在传输文件的一个数据块的最后一个数据片段。
18.如权利要求17所述的方法,其特征在于步骤(3)中一个空闲节点选择一次数据块进行下载的过程如下首先按照如下公式计算出P2P文件传输网络中当前传输文件尚未下载完的每一个数据块对应的放大比β
19.如权利要求11至18之一所述的方法,其特征在于步骤(3)中所述上传的方式如下空闲节点以“推”的方式将下载的部分数据发送给没有该部分数据且与该空闲节点连接的所有普通节点。
全文摘要
本发明公开了一种用于P2P文件传输的空闲节点协助方法,属于网络文件传输技术领域。由于互联网的上传带宽和下载带宽的非对称性,传统的P2P文件传输网络会受到上传带宽较小的限制。本发明所述方法首先将空闲节点随机加入一个P2P文件传输网络;然后空闲节点与普通节点建立连接;空闲节点每隔预设时间选择部分数据进行下载,并为没有该部分数据且与该空闲节点连接的所有普通节点提供上传。本发明所述方法扩大了整体网络的上传带宽,降低了普通节点下载文件所需要的时间。
文档编号H04L29/06GK102244670SQ201010176409
公开日2011年11月16日 申请日期2010年5月13日 优先权日2010年5月13日
发明者劳丰, 张行功, 蓝善祯, 郭宗明 申请人:北京北大方正电子有限公司, 北京大学, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1