发明内容
针对现有技术中的缺陷,本发明提供一种文件协同下载方法和系统,能够有效降低文件下载时延。
本发明提供了一种文件协同下载方法,包括:
第一节点向多个邻居节点发送协同发现请求报文,以及接收一个以上的邻居节点根据所述协同发现请求报文发送的响应报文;
所述第一节点根据所述响应报文,获取发送所述响应报文的邻居节点的标识,向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文;
在至少一个邻居节点根据所述测试文件下载请求报文下载测试文件后,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文;
所述第一节点从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点,并与所述协同节点交互完成文件下载。
其中,所述第一节点向多个邻居节点发送协同发现请求报文包括:
第一节点向多个邻居节点发送协同发现请求报文PDREQ,所述PDREQ包括源节点地址SR、请求标识REQID以及请求广播范围RBR;
相应地,接收一个以上的邻居节点根据所述协同发现请求发送的响应报文,包括:
在邻居节点接收到第一节点发送的PDREQ之后,邻居节点比较该PDREQ中的REQID值与本地保存的REQID值的大小,在确定本地保存的REQID值小于该PDREQ中的REQID值,且节点当前剩余电量大于第一阈值、节点当前网络负载小于第二阈值时,向第一节点发送响应报文PDREP,第一节点接收该邻居节点发送的响应报文PDREP,所述PDREP包括节点地址PR、响应标识REPID和源节点地址SR。
其中,所述方法还包括:
当某个邻居节点接收到第一节点发送的PDREQ时,该邻居节点判断RBR值是否大于0,若大于0,则该邻居节点将该PDREQ中的RBR值减1,并将该PDREQ发生给该邻居节点的多个邻居节点。
其中,所述第一节点根据所述响应报文,获取发送所述响应报文的邻居节点的标识,向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文包括:
第一节点根据所述响应报文,获取发送所述响应报文的邻居节点的标识,向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文FDREQ;所述FDREQ包括文件位置FL、下载字节范围DBR、源节点地址SR、请求标识FDREQID以及标志位Flag;其中,测试文件下载请求报文的Flag为0。
其中,所述在至少一个邻居节点根据所述测试文件下载请求报文下载测试文件后,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文包括:
在至少一个邻居节点根据所述测试文件下载请求报文下载测试文件之后,至少一个邻居节点向第一节点发送测试文件下载响应报文FDREP,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文FDREP,所述FDREP包括下载测试文件所用时间t、节点当前剩余电量r以及节点地址PR。
其中,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文还包括:
第一节点在接收所述一个以上的邻居节点发送的FDREP时,第一节点记录每个节点到第一节点的传输延时td。
其中,所述第一节点从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点包括:
第一节点根据发送所述测试文件下载响应报文的邻居节点中的每个节点下载测试文件所用时间t、节点当前剩余电量r以及节点到第一节点的传输延时td,采用遗传算法从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点。
其中,第一节点与所述协同节点交互完成文件下载包括:
在每个协同节点接收到第一节点发送的标志位为非0的FDREQ之后,每个协同节点使用各自的蜂窝数据网向外部服务器请求要下载的文件片段,其中每个协同节点需要下载的文件片段范围由下式确定,其中Lf为第一节点需要协同下载的文件长度,Lj为每个协同节点应该下载的文件长度,uj为每个协同节点的效用值,m为协同节点的个数;
当协同节点下载完毕后将文件片段通过无线连接传输至第一节点。
其中,所述第一节点根据发送所述测试文件下载响应报文的邻居节点中的每个节点下载测试文件所用时间t、节点当前剩余电量r以及节点到第一节点的传输延时td,采用遗传算法从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点包括:
S11.种群初始化:将发送所述测试文件下载响应报文的邻居节点添加到集合J中,初始化染色体种群个数为N1,其值集合J中节点的个数,每条染色体含有的基因个数n∈[1,N1]且n均不相同,每条染色体内所含节点不重复,以每条染色体中所包含的基因序列作为要选择的协同节点集合;
S12.评价:适应度值为染色体内所含节点从下载到传输测试文件分片到第一节点所需的最大时间,此步骤分为以下三个子过程:
S121.计算J内的每个节点的效用值ui,效用值ui的计算如下:
ui=ws·si+wr·ri
si表示节点i当前的下载速度,根据节点i下载测试文件所需时间ti以及所下载测试文件长度l计算得出,ws表示节点下载速度所占的权重,ri为节点当前剩余电量,wr为节点剩余电量权重,ws+wr=1,ws、wr>0;
S122.在效用值ui的基础上计算每个节点应该下载的文件长度Li,如下:
这里L表示第一节点需要下载的文件的长度,n是当前染色体内所含节点的个数;
S123.根据si,Li,td估算出每个节点各自的Ti,Ti表示节点i从下载到传输文件分片到第一节点所需要的时间,取max{T1,T2....Tn}作为当前染色体的适应度值;
S13.交叉,使用单点交叉来产生两条新的染色体;
S14.变异;
S15.精英保留策略:引入精英保留策略来保存当前最优的个体到下一代中;
S16.终止条件:给定预设迭代次数作为算法结束的条件。
本发明还提供了一种文件协同下载系统,包括第一节点和若干个邻居节点;所述第一节点包括:
请求发送模块,用于向多个邻居节点发送协同发现请求报文;
请求响应接收模块,用于接收一个以上的邻居节点根据所述协同发现请求报文发送的响应报文,并根据所述响应报文,获取发送所述响应报文的邻居节点的标识;
所述请求发送模块,还用于向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文;
所述请求响应接收模块,还用于接收一个以上的邻居节点发送的测试文件下载响应报文;
协同节点选择模块,用于从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点;
协同下载模块,用于与所述协同节点交互完成文件下载。
所述邻居节点包括:
请求回复模块,用于根据第一节点发送的协同发现请求报文向第一节点发送响应报文;
所述请求回复模块,还用于根据第一节点发送的测试文件下载请求报文向第一节点发送测试文件下载响应报文;
协同下载模块,用于与第一节点交互完成文件下载由上述技术方案可知,本发明的文件协同下载方法,通过对同一MANETs中愿意参与协同下载的相邻节点进行发现,然后采集相邻节点的有效信息并进行协同节点的选优,进行下载任务的分配,从而减少文件下载所需的时延。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例一提供的文件协同下载方法的流程图,如图1所示,本实施例的文件协同下载方法如下所述。
步骤101:第一节点向多个邻居节点发送协同发现请求报文,以及接收一个以上的邻居节点根据所述协同发现请求报文发送的响应报文。
在本步骤中,所述第一节点向多个邻居节点发送协同发现请求报文包括:第一节点向多个邻居节点发送协同发现请求报文PDREQ,所述PDREQ包括源节点地址SR、请求标识REQID以及请求广播范围RBR;所述REQID用于保持该次请求的及时性,该PDREQ每被广播一次,REQID值增加1;所述RBR用于限制该次请求的广播半径,该PDREQ每被广播一次,RBR值减1。
相应地,接收一个以上的邻居节点根据所述协同发现请求发送的响应报文,包括:
在邻居节点接收到第一节点发送的PDREQ之后,邻居节点比较该PDREQ中的REQID值与本地保存的REQID值的大小,在确定本地保存的REQID值小于该PDREQ中的REQID值,且节点当前剩余电量大于第一阈值、节点当前网络负载小于第二阈值时,向第一节点发送响应报文PDREP,第一节点接收该邻居节点发送的响应报文PDREP,所述PDREP包括节点地址PR、响应标识REPID和源节点地址SR。所述REPID用于标识此次响应的及时性,该节点每响应一次该第一节点的协同发现请求,REPID值增加1。
另外,当某个邻居节点接收到第一节点发送的PDREQ时,该邻居节点判断RBR值是否大于0,若大于0,则该邻居节点将该PDREQ中的RBR值减1,并将该PDREQ发生给该邻居节点的多个邻居节点。
步骤102:所述第一节点根据所述响应报文,获取发送所述响应报文的邻居节点的标识,向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文。
在本步骤中,第一节点根据所述响应报文,获取发送所述响应报文的邻居节点的标识,向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文FDREQ;所述FDREQ包括文件位置FL、下载字节范围DBR、源节点地址SR、请求标识FDREQID以及标志位Flag;其中,测试文件下载请求报文的Flag为0。
步骤103:在至少一个邻居节点根据所述测试文件下载请求报文下载测试文件后,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文。
在本步骤中,在至少一个邻居节点根据所述测试文件下载请求报文下载测试文件之后,至少一个邻居节点向第一节点发送测试文件下载响应报文FDREP,所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文FDREP,所述FDREP包括下载测试文件所用时间t、节点当前剩余电量r以及节点地址PR。
所述第一节点接收一个以上的邻居节点发送的测试文件下载响应报文还包括:
其中,第一节点在接收所述一个以上的邻居节点发送的FDREP时,第一节点还记录每个节点到第一节点的传输延时td。
步骤104:所述第一节点从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点,并与所述协同节点交互完成文件下载。
在本步骤中,其中,所述第一节点从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点包括:
第一节点根据发送所述测试文件下载响应报文的邻居节点中的每个节点下载测试文件所用时间t、节点当前剩余电量r以及节点到第一节点的传输延时td,采用遗传算法从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点。
其中,第一节点与所述协同节点交互完成文件下载包括:
在每个协同节点接收到第一节点发送的标志位为非0的FDREQ之后,每个协同节点使用各自的蜂窝数据网向外部服务器请求要下载的文件片段,其中每个协同节点需要下载的文件片段范围由下式确定,其中Lf为第一节点需要协同下载的文件长度,Lj为每个协同节点应该下载的文件长度,uj为每个协同节点的效用值,m为协同节点的个数;
当协同节点下载完毕后将文件片段通过无线连接传输至第一节点。
另外,为了避免没有文件分片被下载,也可以在第一节点本身进行下载的时候,同时进行协同节点的发现以及协同节点的选优。
具体地,所述第一节点根据发送所述测试文件下载响应报文的邻居节点中的每个节点下载测试文件所用时间t、节点当前剩余电量r以及节点到第一节点的传输延时td,采用遗传算法从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点包括:
S11.种群初始化:将发送所述测试文件下载响应报文的邻居节点添加到集合J中,初始化染色体种群个数为N1,其值集合J中节点的个数,每条染色体含有的基因个数n∈[1,N1]且n均不相同,每条染色体内所含节点不重复,以每条染色体中所包含的基因序列作为要选择的协同节点集合;
S12.评价:适应度值为染色体内所含节点从下载到传输测试文件分片到第一节点所需的最大时间,此步骤分为以下三个子过程:
S121.计算J内的每个节点的效用值ui,效用值ui的计算如下:
ui=ws·si+wr·ri
si表示节点i当前的下载速度,根据节点i下载测试文件所需时间ti以及所下载测试文件长度l计算得出,ws表示节点下载速度所占的权重,ri为节点当前剩余电量,wr为节点剩余电量权重,ws+wr=1,ws、wr>0;
S122.在效用值ui的基础上计算每个节点应该下载的文件长度Li,如下:
这里L表示第一节点需要下载的文件的长度,n是当前染色体内所含节点的个数;
S123.根据si,Li,td估算出每个节点各自的Ti,Ti表示节点i从下载到传输文件分片到第一节点所需要的时间,取max{T1,T2....Tn}作为当前染色体的适应度值;
S13.交叉,使用单点交叉来产生两条新的染色体;
S14.变异;
S15.精英保留策略:引入精英保留策略来保存当前最优的个体到下一代中;
S16.终止条件:给定预设迭代次数作为算法结束的条件。
本实施例所述的文件协同下载方法,通过对同一MANETs中愿意参与协同下载的相邻节点进行发现,然后采集相邻节点的有效信息并通过遗传算法来进行协同节点的选优,定义了节点的效用值,在效用值的基础上进行下载任务的分配,从而减少文件下载所需的时延。
下面以一个具体的实施例二来说明本发明所述的文件协同下载方法的技术方案。
本发明实施例所述的文件协同下载方法主要包含三个主要的阶段:Proxy节点(协同节点)的发现过程,Proxy的选优过程以及文件下载过程。在Proxy节点的发现过程中进行潜在的Proxy节点的获取。在Proxy节点的选优阶段,通过下载一段测试文件来获取各节点的相关信息(包括下载速度、到下载请求发起者Client节点(第一节点)的延迟等等),通过遗传算法选择出一组性能较优的节点集合用于之后的文件协同下载。在文件下载阶段,各Proxy节点的获取各自要下载的文件分片信息向服务器发起下载请求,下载完成后将分片通过无线连接传输至Client节点(第一节点)。下面详细介绍这三个主要过程。
Proxy节点(协同节点)发现阶段:Client节点(第一节点)通过向其邻居节点广播一个PDREQ(Proxy Discovery Request,PDREQ)报文,PDREQ中包含源节点地址(Source Address,SR)、请求标识(Request Identification,REQID)、以及请求广播范围(RequestBroadcast Range,RBR)。其中REQID和SR用于唯一的标识此次请求。REQID用于保持请求的及时性,每进行一次Proxy节点发现REQID就会增加1。RBR用于限制请求的广播半径,每被广播一次其值就会减1。当MANETs中的节点愿意参与协同下载时就会向Client节点发送一个PDREP报文(Proxy Discovery Reply,PDREP)包含REQID、节点自身地址(Proxy Address,PR)、响应标识(Reply-ID,REPID)、源节点(Source Address,SR)。REPID标识此次响应的及时性,每次发现过程REPID都会增加1。
从Client节点到Proxy节点的逐跳路由根据AODV协议进行创建,并且PDREQ和PDREP报文与AODV中的RREQ和RREP有着相同的使用方式。当MANETs中的节点接收到此PDREQ的时候,先会建立一个反向路由表项,并且比较REQID和本地保存的REQID值,当本地保存值较大的时候说明已经处理过此次请求,丢弃此请求;若本地保存值较小时,说明未处理过此次请求,首先更新REQID值,然后根据自身电量、当前网络负载来决定是否参加此次协同下载。在Proxy节点的发现过程中,当RBR值为正时,中间节点会重新广播请求给其邻居节点并将RBR值减1;当中间节点愿意参与协同时,节点向Client单播PDREP报文。当MANETs中的其他节点接收到此次PDREP时候,也会首先比较REPID值,然后建立路由表项。当Client接收到PDREP之后,就会将PR表示的节点加入到事先定义好的集合J中。中间节点处理PDREQ的请求流程如图2所示。
Proxy节点(协同节点)的选择阶段:Proxy节点下载并传输一定量的文件到Client节点(第一节点)所需要的时间很明显受到节点的下载速率以及节点在MANETs中位置的影响。所以本阶段的主要目的是获取用于之后进行的文件下载的Proxy节点集合,此集合中的节点要么具有较高的下载速度要么到Client节点具有较少的路由跳数。由于遗传算法在组合优化中的广泛应用,并且当集合中待选Proxy节点数目较多的时候,遗传算法的可扩展性和快速收敛于较优解的特性使得它适合于求解本阶段的选择问题。
当获取到集合J之后,Client向其中节点广播一个文件下载请求报文(File Portion Downloading Request,FDREQ)。FDREQ包含文件位置、下载字节范围、Client地址、请求标识以及一个标志位flag。在本阶段flag值为0,这意味着FDREQ报文是用来收集集合中节点的信息,当节点下载完指定长度的文件后,节点应该向Client节点发送一个FDREP(File Downloading Reply)报文。FDREP包含下载测试文件所需要的时间t,节点当前的电量水平r以及节点地址。当Client节点收到FDREP时候,Client节点也会记录Proxy到其所需要的时延rd。此后Client节点将会使用遗传算法进行Proxy节点的选优,关于遗传算法的步骤如图3所示。具体细节如下:
1)种群初始化:初始化染色体种群个数为N1,其值等于集合J内候选节点的个数,每条染色体含有的基因个数n∈[1,N1]且n均不相同,每条染色体内所含节点不重复,以每条染色体中所包含的基因序列作为要选择的协同节点集合;
2)评价:适应度值为染色体内所含节点从下载到传输文件分片到第一节点所需的最大时间,此步骤分为以下三个子过程:
a)计算J内的每个节点的效用值ui,效用值ui的计算如下:
ui=ws·si+wr·ri
si表示节点i当前的下载速度,根据节点i下载测试文件所需时间ti以及所下载测试文件长度l计算得出,ws表示节点下载速度所占的权重,ri为节点当前剩余电量,wr为节点剩余电量权重,ws+wr=1,ws、wr>0;
b)在效用值ui的基础上计算每个节点应该下载的文件长度Li,如下:
这里L表示第一节点需要下载的文件的长度,n是当前染色体内所含节点的个数;
c)根据si,Li,td估算出每个节点各自的Ti,Ti表示节点i从下载到传输文件分片到第一节点所需要的时间,取max{T1,T2....Tn}作为当前染色体的适应度值;
3)交叉,交叉因子pc选取值为0.8。在算法运行过程中,使用单点交叉来产生两条新的染色体;
4)变异;变异因子pm选取值为0.1。每条染色体中的每个基因都可能会被其它合理的取值所取代;
5)精英保留策略:为了改变算法的效率,引入精英保留策略来保存当前最优的个体到下一代中;
6)终止条件:给定预设迭代次数gn=200作为算法结束的条件。
至此使用遗传算法进行Proxy选择的过程已经结束。根据上述两个公式可知,每个Proxy节点要下载的文件分片的大小与其效用值成正比。当节点效用值较高时,下载的文件长度也较大。所以即使当最后选择的Proxy节点集合中包含下载速度较低的节点,但是根据其对应的下载文件分片长度也会比较小,这就保证了整体下载任务的完成不会受到影响。
文件协同下载阶段:当结束选择之后,Client节点通过发送标志位flag为非0的FDREQ到各Proxy节点。每个Proxy节点要下载的文件分片范围由确定。当接收到FDREQ之后每个节点都会使用各自的蜂窝数据连接向外部服务器请求要下载的文件片段。当下载结束后通过无线连接传输至Client节点。为了避免没有文件分片被下载,也可以在Client节点本身进行下载的时候,同时进行Proxy节点的发现以及Proxy节点的选优。
下面以一个实际的例子来进行说明。例如4所示,移动终端用户A、B、C、D、E等移动终端均处于同一MANETs(移动自组网络工作组,Mobile Ad hoc NETwork)中,并且均能通过蜂窝数据网络接入外部网络。当用户A想要下载外部服务器上的一个文件时,通过广播PDREQ之后,A获取到用户B、C、D、E均由意愿参与此次协同。通过一段测试文件的下载之后,A执行遗传算法最后选择B、C、D作为最后参与下载的节点。此后A向B、C、D发送FDREQ报文,其中包含每个节点要下载的文件分片大小。其中Proxy节点的发现过程如图5所示。其中,链路S1、链路S2和链路S3对应的PDREQ如表1~3所示,链路S4、链路S5和链路S6对应的PDREP如表4~表6所示。
表1PDREQ
表2PDREQ
表3PDREQ
表4PDREP
PR |
D |
SR |
A |
REQID |
1 |
REPID |
1 |
表5PDREP
PR |
D |
SR |
A |
REQID |
1 |
REPID |
1 |
表6PDREP
PR |
B |
SR |
A |
REQID |
1 |
REPID |
1 |
通过在NS3的仿真实验,选取75个移动节点随机分布在500m*500m的区域内。节点的移动性选取为随机游走模式。每个节点均能同时接入蜂窝数据网络和基于IEEE802.11b的无线网络,无线网络速率为11Mbps,覆盖距离为100m。
RBR选择为3即每个PDREQ只能被广播三次。J中包含的节点数目从3,6,9,12到15不等。节点的蜂窝网络速率从128Kbps,256Kbps,512Kbps到1MKbps不等。
考虑到遗传算法对实例性能的影响,本实例首先确定遗传算法的参数(参见图6),选取交叉因子pc=0.8,变异因子pm=0.1,迭代次数gn=300。接着对每次要下载的文件分片大小进行确定(参见图7),通过图示,当文件分片大小为150K时,通过协同下载取得的性能收益最高。紧接着为了证实遗传算法的对Proxy节点的选优性(参见图8、图9),得出当网络中节点速率均较低的时候遗传算法通常选择全部的节点作为参与下载,更多的利用较快的无线连接。这是因为当参与下载的节点较多且速率较低(图8中128Kbps,256Kbps)时,根据公式(2)每个节点下载的文件分片大小也就随之减少,从而减少每个Proxy下载文件的时延,进而降低Client获取整个文件的时延。当Proxy节点速率较高(图8中512Kbps或者1Mbps)的时候,相对于下载时延使用无线连接传输文件分片会更多的影响到Client获取完整文件的时间。当节点速率混合时(参见图9),通过遗传算法往往会选择具有较高下载速率的节点而避免较低下载速率的节点作为最后参与协同下载的Proxy节点。最后我们将使用遗传算法的协同文件下载机制与使用Pipe-Line的协同文件下载机制进行了比较(参见图10),通过比较得出使用遗传算法的协同文件下载机制往往能获得更小的延迟。
图11示出了本发明实施例三提供的文件协同下载系统的结构示意图,如图11所示,所述系统包括第一节点11和若干个邻居节点12;所述第一节点11包括:
请求发送模块111,用于向多个邻居节点发送协同发现请求报文;
响应接收模块112,用于接收一个以上的邻居节点根据所述协同发现请求报文发送的响应报文,并根据所述响应报文,获取发送所述响应报文的邻居节点的标识;
所述请求发送模块111,还用于向与所述邻居节点的标识对应的邻居节点发送测试文件下载请求报文;
所述响应接收模块112,还用于接收一个以上的邻居节点发送的测试文件下载响应报文;
协同节点选择模块113,用于从发送所述测试文件下载响应报文的邻居节点中选择预设N个邻居节点作为协同节点;
协同下载模块114,用于与所述协同节点交互完成文件下载。
所述邻居节点12包括:
请求回复模块121,用于根据第一节点发送的协同发现请求报文向第一节点发送响应报文;
所述请求回复模块121,还用于根据第一节点发送的测试文件下载请求报文向第一节点发送测试文件下载响应报文;
协同下载模块122,用于与第一节点交互完成文件下载。
本实施例所述的系统,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。