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
   318   319   320   321   322   323   324   325   326   327   328