Page 323 - 《软件学报》2021年第8期
P. 323
张棋飞 等:基于节点运动的机会网络路由算法 2605
2.3 算法设计与实现
随着 GPS 等设备的广泛应用,节点的位置已经成为网络中的一个重要信息.系统配备节点位置服务器统一
对节点的位置信息进行管理.节点采取预发布形式将自己的行程安排提前公布,供需要的节点查询.预发布行程
的消息格式如图 4 所示.
Fig.4 Itinerary pre-release message
图 4 行程预发布消息
其中,结束时间属于可选项.如果节点位置发生较大变化,即当前位置与预发布行程位置的距离偏差超过偏
航阈值时,需要主动向服务器推送实时位置更新消息,格式如图 5 所示.
Fig.5 Real time location update message
图 5 实时位置更新消息
位置服务器按照接收消息的序列号更新位置信息列表,供节点查询.当收到节点的位置查询请求时,位置服
务器返回目标的当前位置信息.
节点相遇后,交换扩散向量列表 DiffusionVector 和转发消息队列 MessageQueue,然后针对扩散向量集合 DV
中的每个数据包 pkt∈DV,根据其消息类型进行如下处理.
FOR ∀pkt∈DV DO
IF pkt.target 是自己 THEN
接收 pkt 并从 DiffusionVector 移除
ELSE IF pkt.type 为 DataPkt THEN
IF 运动模式不为 ActiveMove THEN
插入 MessageQueue
运动目标←pkt.target,运动模式←ActiveMove,pkt.type←DiffusionPkt
endIF
endIF
endFOR
对接收消息集合 MQ 中的每个消息 msg∈MQ,根据其转发优先级及目标位置进行处理,按如下策略转发:
FOR ∀msg∈MQ DO
IF msg.target 是自己 THEN
接收 msg 并从 MessageQueue 移除
Else
IF msg.dfp 为 EmergencyData THEN
IF 运动模式为 ActiveMove THEN
IF msg.target 与运动目标一致 THEN
插入 MessageQueue
ELSE
msg.type←DataPkt 并加入 DiffusionVector
endIF
ELSE IF msg.target 位于 IAA THEN