发明内容
为解决现有技术中存在的问题,本发明深入研究和分析了SAW算法,在分析该算法在Spray阶段和Wait阶段存在的弊端的基础上,从算法路由策略的高效性和可靠性角度出发,提出了一种利用Prophet投递预测函数和马尔可夫模型改进SprayandWait的PMSF算法。
本发明具体通过如下技术方案实现:
一种机会网络中的高效路由算法,所述算法为利用Prophet投递预测函数和马尔可夫模型改进SprayandWait的混合路由算法PMSF,所述算法包括:在散发spray阶段,根据Prophet投递预测函数得到的投递概率对相遇节点的质量和传递潜能进行评估,在计算Prophet投递概率时充分考虑链路传输的可靠性,根据所述投递概率散发分配不同数量的副本;在转发阶段,将被动路由的等待阶段修改为主动路由的多跳转发阶段,在该过程中引入马尔可夫模型预测相遇节点到目的节点的时间,并选取能在最短时间间隔内到达目的节点的节点作为中继节点;循环执行上述散发和转发阶段,直至消息到达目的节点。
进一步地,根据节点间相遇的历史信息,求解出节点相遇持续时间的平均值,用该值去衡量链路消息传输的可靠性。
进一步地,所述spray阶段的详细流程为:假设消息msg的目的节点是D,当持有msg副本个数为L的节点A与节点B建立临时通信链路时,A和B分别更新各自到目的节点的传输预测值,同时,双方交换彼此具有ACK确认信息的CMI消息列表,丢弃那些已被目的节点确认接收到的消息副本;接下来,判断节点A,B是否满足spray阶段消息转发的条件,当且仅当A中msg的副本的数量大于1且B中没有msg的副本才散发该消息,若任一条件得不到满足就不能散发该消息;同时,还需要判断B到目的节点D的传输预测值是否大于A到D的传输预测值,只有在大于A的情况下才进行消息转发;当B准备接收A散发的消息msg的副本时,B需要检查自身的缓存空间是不是足以容纳新的消息,如果不充足,需要按照FIFO的思想删除最早进入到缓存队列的消息,随后将消息副本放入腾出空间的节点缓存中,同时计算和修改B应该持有msg副本的数量,如果B是msg的目的节点,把msg放入CMI对应的ACK消息确认列表中;否则,msg会继续存储在A的缓存之中,等待良好的投递时机;然后,源节点和中继节点都将循环执行该步骤,直到自身所剩消息副本的数量减少为1时,转入消息投递过程的转发阶段。
进一步地,计算A要分配给B的消息副本数具体为:假设某个时刻,携带源消息的节点A与节点B相遇,该消息的副本数量为L且目的地为节点D,具体数值由下式计算所得:
其中,mD表示以节点D作为目的节点的消息,表示节点A当前持有的消息副本数量,是重新分配给节点A的消息副本数量,P(A,D),P(B,D)表示两节点间成功投递消息的传输预测值。
进一步地,所述转发阶段的详细流程:当携带消息msg(副本数为1)的节点A与节点B相遇时,首先利用节点间相遇的历史信息并结合马尔可夫模型预测自身到目的节点D的相遇时间间隔;此处用KP(A,D)和KP(B,D)分别表示A和B在未来一段时间内与D再次相遇的时间间隔,当KP(B,D)<KP(A,D)且B中不包含msg的任何副本时,A便把msg直接转发给B相反,A将继续携带msg;若A在某一时刻同时与多个节点相遇,求解出能在最短时间内到达D的节点,包括A自身,把msg直接投递给该节点,若A符合条件,便不进行msg的转发。
进一步地,计算相遇时间间隔具体为:当携带消息的源节点A遇到网络中任一节点X时,假设该消息的目的节点用D表示,记录并计算二者的历史相遇时间间隔序列;随后,根据节点X与D历史相遇时间间隔序列构建P,从X和D相遇的历史序列中找到并记录最后一次相遇持续时间所对应的状态,即矩阵最后一个元素对应的取值,并用它构建当前状态矩阵K,然后将K,P两个矩阵做乘积操作,即可得到预测矩阵KP:
KP=K×P
KP是1×N形式的矩阵,在该矩阵中所有列中找到取值最大的数值所在的列号,该列号的取值范围是[1,N],该列号就是节点间下一次相遇时间间隔的预测值。
本发明还提出了一种机会网络中的高效路由计算装置,所述装置利用Prophet投递预测函数和马尔可夫模型改进SprayandWait的混合路由算法得到,所述装置循环执行散发模块和转发模块,直至消息到达目的节点;所述装置包括:散发模块,用于根据Prophet投递预测函数得到的投递概率对相遇节点的质量和传递潜能进行评估,在计算Prophet投递概率时充分考虑链路传输的可靠性,根据所述投递概率散发分配不同数量的副本;转发模块,用于将被动路由的等待阶段修改为主动路由的多跳转发阶段,在该过程中引入马尔可夫模型预测相遇节点到目的节点的时间,并选取能在最短时间间隔内到达目的节点的节点作为中继节点。
本发明的有益效果是:本发明的PMSF算法综合了SAW和Prophet各自的优良特性,既能利用基于复制路由算法的冗余消息副本提高消息的投递率,又能利用基于概率路由算法传递消息较强的目的性和有效性,在一定程度上缓解网络拥塞。该算法同时兼顾了高效和可信两大设计路由算法的原则,使得副本快速扩散、有效传输,又能保证传输的稳定性和可靠性。
具体实施方式
下面结合附图说明及具体实施方式对本发明进一步说明。
本发明通过对SAW路由算法核心思想及所存在缺陷的分析,分别针对该算法散发阶段和等待阶段进行改进,对散发阶段的改进可以从下面的角度出发进行设计:
(1)对中继节点进行筛选,可根据自定义的合理的效用函数,如节点的传递潜能等,将综合性能表现较为出色的候选节点作为下一跳,有目的性的提高消息投递率。
(2)对消息副本进行合理数量的散发,根据节点的质量和表现的不同,分配不同数量的消息副本,使得消息副本能够更加快速地扩散、有效地传递。
(3)对消息副本数量进行动态控制,根据节点自身或网络拓扑结构的变化,动态地调整节点携带消息副本的数目,微量变化的副本数量并不会增大冗余度或增加网络负担,同时能够使得节点更加适应动态变化的网络环境。
对等待阶段的改进可以从下面的角度出发进行设计:
摒弃该过程一贯采用的DirectDelivery直接交付路由算法,而是由更加高效灵活的多跳转发机制代替。因为在该过程中,消息的携带者只是一味被动等待与目的节点的相遇机会,此方法过于被动且不灵活,期间如果遇到能更好地传递消息的节点,携带者应该将消息转发给具备类似优良特性的节点,这种方法既能增大消息成功投递的概率,也能使得节点在相对较短的时间内释放缓存空间,从而使得整个路由过程更加智能且高效。
基于上述分析的传统SAW路由算法的缺陷以及在散发阶段和等待阶段可以改进的地方,兼顾整个消息传输过程所要考虑的高效和可信问题,本发明提出了一种利用Prophet投递预测函数和马尔可夫模型改进SprayandWait的混合路由算法PMSF(ProphetandMarkovmodel-basedSprayandForward)。PMSF路由算法在散发阶段,不再盲目地分配给相遇节点固定数量的消息副本,而是根据Prophet路由算法中的投递概率对相遇节点的质量和传递潜能进行评估,此处的Prophet投递概率引入了可信路由的设计,充分考虑了链路传输的可靠性,根据改进后的投递概率散发分配不同数量的副本,使散发过程中的转发决策更为合理和明智,这种策略能够使得副本快速且有效的扩散和传递。同时,引入动态调节节点自身携带消息副本数量的机制,使得节点在自身的移动和动态变化的网络环境中能够动态控制并调整自身携带消息副本的数量,以适应不断变化的网络环境。与此同时,将被动路由的等待阶段修改为主动路由的多跳转发阶段,在该过程中引入马尔可夫模型预测相遇节点到目的节点的时间,并选取能在最短时间间隔内到达目的节点的节点作为中继节点,循环此流程,直至消息到达目的节点。
PMSF采取基于复制和基于概率结合的路由机制,分别对SAW路由算法的Spray阶段和Wait阶段进行改进。下面详细描述PMSF算法的具体实现:
(1)散发阶段
附图1描述了消息散发阶段的详细流程:假设消息msg的目的节点是D,当持有msg副本个数为L的节点A与节点B建立临时通信链路时,A和B分别更新各自到目的节点的传输预测值,同时,双方交换彼此具有ACK确认信息的CMI消息列表,丢弃那些已被目的节点确认接收到的消息副本;接下来,判断节点A,B是否满足spray阶段消息转发的条件,当且仅当A中msg的副本的数量大于1且B中没有msg的副本才散发该消息,若任一条件得不到满足就不能散发该消息;同时,还需要判断B到目的节点D的传输预测值是否大于A到D的传输预测值,只有在大于A的情况下才进行消息转发,A要分配给B的消息副本数按照下文描述的公式(7)、(8)进行计算。
当B准备接收A散发的消息msg的副本时,B需要检查自身的缓存空间是不是足以容纳新的消息,如果不充足,需要按照FIFO的思想删除最早进入到缓存队列的消息,随后将消息副本放入腾出空间的节点缓存中,同时计算和修改B应该持有msg副本的数量,如果B是msg的目的节点,把msg放入CMI对应的ACK消息确认列表中;不然的话,msg会继续存储在A的缓存之中,等待良好的投递时机。然后,源节点和中继节点都将循环执行该步骤,直到自身所剩消息副本的数量减少为1时,转入消息投递过程的转发阶段。上述消息散发的整个过程对应的伪代码如下:
(2)转发阶段
该阶段利用马尔可夫模型对节点间相遇的时间间隔进行预测,继而有目的性地筛选下一跳可供消息转发的节点,使得整个路由过程在保证传输成功率的同时,有效减小消息传输时延。
假设初始状态时,A携带消息msg,该消息的目的节点为D,在某个时刻,A与B相遇,若以下任何一个消息能够被转发的条件得到满足时,A就会将msg转发给B,否则,节点A将继续持有该消息。
a)B是msg的目的节点。
b)B不是msg的目的节点且缓存中没有该消息,但是B与A相比,能够在更短的时间间隔内与D相遇。
附图2描述了消息转发阶段的详细流程:当携带消息msg(副本数为1)的节点A与节点B相遇时,首先利用节点间相遇的历史信息并结合马尔可夫模型预测自身到目的节点D的相遇时间间隔,具体计算过程根据下文描述的公式(15)。此处用KP(A,D)和KP(B,D)分别表示A和B在未来一段时间内与D再次相遇的时间间隔。当KP(B,D)<KP(A,D)且B中不包含msg的任何副本时,A便把msg直接转发给B相反,A将继续携带msg。若A在某一时刻同时与多个节点相遇,求解出能在最短时间内到达D的节点(包括A自身),把msg直接投递给该节点,若A符合条件,便不进行msg的转发。
上述消息转发的整个过程对应的伪代码如下:
下面将对PSMF算法中的改进进行具体的说明。
1.对Spray阶段的改进中的传输可靠性
大多数算法均做了如下假设:两个节点在任何时刻或任何链路状态下相遇时,消息都可以被成功投递和接收,这种设想过于理想化,这种情况在现实中是无法保障的。例如:如果节点间需要交换的消息的数据量较大时,而此时节点间通信的链路带宽较小且相遇的持续时间又很短,即便是按照Prophet算法筛选传输概率更高的邻居节点作为消息的转发节点,同样不足以保证消息能够被投递到目的节点。原因总结如下:在消息的传输过程中,由于网络中节点具有移动性,刚刚建立通信关系的两个节点随时可以超出可供两者通信的范围,链路可能突然或间歇性中断,导致节点间能够通信的可持续时间较短,消息的传输过程无法正常结束,从而导致消息传输的失败。所以,需要对节点从相遇到断开链接的持续时间进行相应的统计和分析工作,尽可能把消息发送给与自身节点可保持持续通信时间较长的节点,以免消息传递失败,从而增强消息传输的稳定性。基于以上考虑,本章利用节点间通信链路的持续时间表征消息传输的可靠性,在PMSF路由算法设计中加入了路由可靠性这个重要的因素。
附图3简单描述节点间从相遇建立连接到连接断开整个链路的可持续通信时间的概念,整个过程描述了两个节点A、B从相遇,到交互再到链路断开的整个过程,其中,虚线表示两节点可实现彼此通信的范围,在t1时刻,节点A、B随着自身的移动到达对方的可通信区域,此时两节点可以建立连接进行数据交换操作,然而到了t2时刻,节点A、B随着自身的移动互相远离对方致使之前建立的连接被迫中断,消息的传递无法继续进行,(t2-t1)的结果就是两者相遇后的持续时间。
节点间相遇的可持续时间反映了消息传输链路的可靠性和稳定性,同时也表征了消息传输的可信程度,此值更能代表节点的通信能力的强弱水平。可以认为,节点间持续相遇的时间越长,表明节点间通信链路的稳定性越高,用于此通信链路的消息传输过程可信度越高,此链路可以用来传输更多的消息。因此,在算法的研究和设计过程中,可以利用节点相遇的持续时间这一指标去衡量和保证链路消息投递的可靠性和稳定性。所以,在散发消息的Spray阶段,应该尽可能给相遇时间相对较长的中继节点散发分配更多数量的副本,该方法能够有效提高消息成功传输的概率。
在考虑并量化节点间相遇持续时间的时候,PMSF路由算法并没有对节点的连接时间或链路的可持续时间进行估计和预测,而是根据节点间相遇的历史信息,求解出节点相遇持续时间的平均值,用该值去衡量链路消息传输的可靠性。两个节点多次历史相遇过程用附图4表示。附图4中,n表示在一个链路状态更新周期内,两节点相遇并建立通信链路的总次数,Ti表示两节点建立的通信链路能够保持持续连接状态的时间,那么两节点在前n次相遇过程中通信链路总的可持续时间(DurationTime,DT)为:
分析可知,如果计算出的DT(n)数值较大,表明两节点在之前一段时间内可通信的可持续时间越长,链路保持连接状态的能力更强,彼此能够传输更多的数据。按照统计规律判断,如果两节点在过去很长的一段时间内有着较长的相遇持续时间的平均值,若两者再次接触时,彼此间能够保持较长持续通信时间的可能性也就越大。PMSF路由算法在Prophet传输预测值的更新过程中引入了该指标,作为衡量消息传输可靠性的重要依据。
2.Prophet传输预测值的更新
假设存在这样的消息传递过程,携带消息的源节点A试图向目的节点D传递消息。用P(A,D)表示节点A向节点D投递消息的投递预测值,该值利用节点间相遇的上下文信息和传递性估计和计算。P(A,D)old表示A到D的历史投递预测值,T(A,D)old表示在A与D之前一段时间相遇的n次过程中,链路一直保持通信状态的总的持续时间,TU(A,D)old表示两节点在历史通信过程中链路处于中断状态的总的持续时间。为了实现节点间传输预测值的持续更新,节点需要在本地建立并维护一张二维表,该表记录了节点间历史的相遇信息,该表的内容需要随网络拓扑结构的变化保持更新,节点A所建立链路状态信息二维表的表结构如表1所示。
表1链路状态信息二维表
假如当前模拟时间恰好是两节点在第n次相遇所处的时间点,两节点历史的相遇持续时间和断开持续时间分别用公式(2)、(3)进行计算:
公式中的表示两节点第i次相遇时通信链路建立的开始时间,表示两节点第i次相遇后通信链路断开所对应的时间。
两节点相遇时,节点消息的投递预测值具体按照公式(4)进行更新。与传统的Prophet路由算法中传输预测值更新策略不同,在更新过程中引入了链路可靠性影响因子,即节点间的历史相遇持续时间。
其中,Pinit是预先设定的初始概率常量,P(A,D)∈[0,1]是节点A把消息成功传输到节点D的概率。表示的是节点间持续相遇的平均时间,α表示的是节点间持续相遇平均时间对两节点间传递概率的影响程度,是大于1的常量。若两节点短时间内相遇比较频繁,则它们彼此的传输预测值会随之增加。
P(A,D)=P(A,D)old×γk(5)
其中,γ∈(0,1)称为衰减或老化因子,它决定着传输预测值减小的速度,k是对两个节点从最后一次相遇到当前时间整个过程的量化。从该公式可以看出,假如在较长的时间里两节点没有任何与彼此相遇的机会,表明它们传输消息给对方的可能性很小,它们之间的传输预测值越低。
P(A,C)=P(A,C)old+(1-P(A,C)old)×P(A,D)×P(D,C)×β(6)
其中,β∈(0,1)是比重参数,它反映了传递性作用于投递预测值影响的比重。
根据历史两节点的相遇情况,无论是短时间内的频繁相遇,还是长时间内的偶尔相遇,两者间的传输预测值都要有相应的更新和计算方式,下面将结合具体场景进行分析:从公式(4)和公式(5)的计算过程可以看出:如果某个节点在之前多次与某个特定节点发生联系,那么两个节点在之后的一段时间内很有可能再次发生联系,其传输预测值随着相遇机会的增加随之变大;相反,如果某个节点长时间范围内都不曾与某个特定节点发生过任何联系,则两个节点在之后的一段时间内再次发生联系的可能性也会越来越小。从公式(6)可以看出,传输预测值的更新和计算表现出传递性规律。由于节点D的作用,使得节点A、C之间的传输预测值随之增加。
3.消息副本分配及控制策略
在大多数机会网络的应用场景中,节点的运动和通信习惯不是完全随机的,会表现出相应的规律性和依赖性。之前一段时间内两个相遇频繁的节点在未来再次进行通信的概率很大。因此,在这种情况下,为了使消息副本的分配更为明智合理,利用改进的Prophet路由算法中定义的三个公式预测并更新节点的投递概率,根据传输预测值来分配消息副本。若某中继节点具有较大的到目的节点的传输预测值,这表明中继节点有着较高的传递消息的成功率,此类中继节点具有更好的传递潜能,应该分配给该节点更多数量的消息副本。
当两节点相遇时,更新并比较两者到目的节点的传输预测值,并根据自身占总体的比重获取分配新的消息副本数量,使得相遇节点获得源节点或中继节点。假设某个时刻,携带源消息的节点A与节点B相遇,该消息的副本数量为L且目的地为节点D。具体数值由下式计算所得:
其中,mD表示以节点D作为目的节点的消息,表示节点A当前持有的消息副本数量,表示节点B当前持有的消息副本数量,是重新分配给节点A的消息副本数量,是重新分配给节点B的消息副本数量,P(A,D),P(B,D)表示两节点间成功投递消息的传输预测值。
将上述情况进行推广,多数情况下节点A在某一时刻与多个节点位于同一可通信范围之内,如附图5所示,图中虚线所围成的圆圈代表节点A的可通信范围,A位于圆心位置,在其可通信范围内,有B,C等n个节点。A此时携带某个消息的副本,其数量是L,且相邻n个节点本身没有该消息的任何副本。此处,用随机变量X表示在某一时刻与节点A相遇的任意节点,P(X,D)表示节点X与节点D的传输预测值,P(A,D)表示节点A与节点D的传输预测值,用N(X)表示节点X转发得到消息副本的数量。那么,N(I)具体的计算方式如公式(9)所示:
散发阶段结束后,节点A携带的消息副本的数量有所减少,其所剩消息副本的数量按照公式(10)进行计算:
4.对Wait阶段的改进中的基于马尔可夫模型的主动路由
考虑到部分含有兴趣节点的网络场景,拿校园网络来说,将学生个体看作移动节点,该类节点的移动范围大多数时候都局限于教学楼,宿舍,图书馆和餐厅等区域,学生节点在此类网络环境中的相遇并非是随机的,换句话说,该过程具有一种较强的规律性。因此,可以利用马尔可夫模型,通过对节点以往相遇时间间隔序列进行统计和分析,来预测下一次节点相遇时间间隔的大致范围。、
具体方法:利用仿真环境,记录和统计节点之间的历史相遇信息,求解得到节点间相遇时间间隔的序列,然后用马尔可夫模型中进行估计和推测。应用该模型时,对于网络中任意两个节点,用序列Xi记录网络中两节点间相邻两次相遇的时间间隔,经分析Xi具有马尔可夫链的相关性质,根据Xi的取值范围将其分为N个区间,每个区间代表该模型中的一个离散的时间状态。
将该模型用三元组(S,P,K)进行描述,此处,S代表的是系统中节点间所有可能的相遇时间间隔状态形成的状态集合,此处所说的状态就是将节点间相遇时间间隔划分为的N中状态,换句话说,就是时间间隔Xi的在系统中的所有可能取值。P是状态转移矩阵,反应的是两个节点的相遇状态由i进入j的概率,其结构可以表示为:
矩阵中元素Pij代表的是当前两节点相遇的时间间隔状态是i,且下一次相遇时间间隔状态是j的概率,具体的计算方法Pij=numij/numi,其中numij表示的是前一次两个节点的相遇时间间隔为i,下一次相遇时间间隔为j的相遇情况出现的总的次数,numi为节点间相邻两次相遇的时间间隔是i的情况出现的总的次数,其中,两个参数是从之前统计的Xi中计算出来的。
状态转移矩阵中的矩阵元素Pij表示的是两节点前后两次相遇的时间间隔状态从i转变为j的概率。若此时两节点的相遇时间间隔为状态i,下一次两节点相遇的时间间隔状态要么继续保持状态i,要么随之转入其他一种状态,应有:
用K来表示两节点当前相遇状态构建的状态矩阵,其表达式类似于K=[00...1...000],可以看出,K是一个1×N的矩阵,若两节点当前的相遇时间间隔状态是j,那么K中对应第j列取值是1,其他列的数值都取值是0。
根据机会网络中某些兴趣节点的移动特性,对于网络中的任意两个节点来说,它们之前的相遇时间间隔序列并非是随机取值的。它们下一次相遇的时间间隔与当前它们的相遇时间间隔有着内在的联系,与之前较长一段时间内的历史相遇状态无关,按照马尔可夫链的特征应有下面的概率公式成立:
P(Xn=an|Xn-1=an-1,Xn-2=an-2,...,X1=a1)=P(Xn=an|Xn-1=an-1)(13)
Xi=Ti+1-Ti(i≥1)(14)
上式中的Ti表示两节点第i次相遇时所对应的时间;Xi表示的是两节点在第i+1次和第i次两次相遇过程之间所经历的时间间隔;ai表示的是两节点相遇时间间隔状态对应的取值,共有N种取值,范围是[1,N]。Xi是由网络中的各节点负责记录和计算的,然后用ai进行表示,最终将其保存在节点本地信息之中。具体的过程可以描述为:当携带消息的源节点A遇到网络中任一节点X时,假设该消息的目的节点用D表示,记录并计算二者的历史相遇时间间隔序列。随后,根据节点X与D历史相遇时间间隔序列构建P,从X和D相遇的历史序列中找到并记录最后一次相遇持续时间所对应的状态,即矩阵最后一个元素对应的取值,并用它构建当前状态矩阵K,然后将K,P两个矩阵做乘积操作,即可得到预测矩阵KP。
KP=K×P(15)
KP同样是1×N形式的矩阵,在该矩阵中所有列中找到取值最大的数值所在的列号,该列号的取值范围是[1,N],该列号就是节点间下一次相遇时间间隔的预测值。下述伪代码概括了马尔可夫模型预测节点间相遇时间间隔的相关操作:
假设模型中节点间的相遇时间间隔状态共有6个可能取值,即N=6。在过去一段时间内,当前节点和某特定节点的相遇时间间隔序列为2,1,3,2,4,5,1,3,1,2,1。
根据节点间的相遇时间间隔序列可知,当前状态为1,与之对应的当前矩阵K=[100000],通过式(3-15)得到预测矩阵Kp=[01/41/2000],故两节点下次相遇时间间隔的预测值是3。
5.基于ACK确认的缓存管理
当机会网络中由于通信量过大或节点缓存资源不足等问题发生拥塞时,然而节点可能需要长时间保存缓存中的消息,当节点缓存中的消息数目较多时,受限于节点有限的缓存资源,这使得缓存要丢弃某些消息。机会网络中采取的消息丢弃策略是只有当节点缓存空间被占满或者说是消息的生存期(TTL,TimeToLive)减小为0时方可将其丢掉。这种方式的弊端是:如果在未来很长一段时间内,某个节点都无法与网络中的其他节点相遇,即该节点是不会与任何节点建立通信链路的,致使缓存在该节点中的消息不能及时投递出去。所以,在整个路由过程中需要引入相应的缓存管理方法。在PMSF算法中采取的缓存管理方法包括:
(1)当源节点生成消息时,为消息附加一个字段TTL,用来标识消息的生存周期,随着消息被多次转发和时间的进行,TTL的值会不断较小。若TTL不断缩小为0,判定其过期失效,对应节点可直接丢弃该消息。
(2)当某个时刻,要接收新消息的节点缓存空间已满时,按照先进先出的策略优先删除最早投递至缓存中的消息。从统计学角度判断,若某个消息在很长一段时间内无法被投递出去,在之后一段时间内能被成功投递的可能性也较小。
仅仅采取以上节点缓存管理机制,还无法真正起到有效管理分配缓存空间的作用。存在这样的情况:若一条消息已经被目的节点接收,网络中存在部分节点也缓存了该消息的副本,但是无法获知该消息已经被成功接收,还会继续缓存这些消息副本并对它们进行转发和复制。过多的冗余消息副本的转发无疑会对网络负载产生冲击,浪费缓存网络资源,网络资源的竞争也会愈演愈烈,致使网络阻塞。
为了进一步提升算法的性能,避免不必要的路由开销,应该从节点缓存中将多余的消息副本(已被成功接收的)尽早删除,PMSF采用ACK确认机制来及时删除已被成功投递的冗余信息。这样,中继节点删就能及时删除冗余的消息副本,在很大程度上减少网络资源消耗。
当某条消息被传递至目的节点时,便生成一个ACK确认信息并将该信息保存在目的节点中。此处为网络里每个移动节点建立一张消息列表(ConfirmedMessagesIds,CMI),该表中记录了被当前节点确认过的消息对应的ID,需要要注意,对于同一消息的所有副本,其ID是完全一样的。建立临时通信关系的两个节点互换CMI,若缓存中的消息副本已存在于对方的CMI中,然后调用自定义的deleteAckedMsgs函数丢弃得到确认的消息副本。
综上所述,本发明的PMSF算法在散发阶段充分考虑中继节点的传递性能,使用了改进的Prophet投递预测函数作为效用值对消息副本进行分配,投递预测函数表示的传输预测值越大,中继节点传递消息的成功率越高,故应分配给该节点更多的消息副本,摒弃了经典SAW消息散发阶段盲目的均等散发机制。同时,将wait阶段的DirectDelivery被动路由方式改为主动路由,并将等待阶段命名为转发阶段,以更好的贴合主动路由阶段的消息多跳转发机制,利用马尔可夫时间间隔预测模型,尽量将消息转发给较快便能与目的节点相遇的中继节点。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。