一种适用于窄带条件的自组网路由方法及系统与流程

文档序号:18510118发布日期:2019-08-24 09:02阅读:1122来源:国知局
一种适用于窄带条件的自组网路由方法及系统与流程

本发明涉及自组网路由领域,尤其是一种适用于窄带条件的自组网路由方法及系统。



背景技术:

无线自组网(wirelessadhocnetwork)是一组以无线链路进行通信,由移动节点动态形成的网络,它是一个多跳的临时性自治系统。最早由美国dod的prnet项目进行研究,主要用于军事领域。但是由于无线自组网构造时不需要预先存在的网络基础设施,如基站等,因此在民用领域中也具有广阔的应用,如发生地震、水灾后的营救等。随着无线通信技术和移动终端技术的发展,adhoc网络在军用和民用等领域的应用日益受到重视,各方面的研究不断展开。

与单跳的无线网络不同,自组网节点之间是通过多跳数据转发机制进行数据交换的,需要路由协议进行分组转发决策。无线信道变化的不规则性、节点的移动、加入退出等也会引起网络拓扑结构的动态变化。路由协议的作用就是在这种环境下监控网络拓扑结构变化,交换路由信息,定位目的节点位置,产生、维护和选择路由并根据选择的路由转发数据,提供网络的连通性。路由选择技术是无线自组网的关键技术之一。

无线分组网路由协议根据所采用的路由策略可分为主动路由和按需路由两种,其中主动路由采用预先获取(proactive)策略,要求每个节点维护一张或几张路由表,所有节点周期性地更新这些路由表,当网络拓扑结构改变时,节点向整个网络传播路由变更消息。常见的主动路由协议有dsdv、olsr等,按需路由采用按需获取(reactive)策略,不去维护最新的路由信息,而是在某个路由信息需要时才去动态的获取路由信息,常见的按需路由协议有dsr、aodv等。

现有的路由协议适用于中高带宽、大量节点、双向链路的场景下,本发明所研究的半双工窄带条件下要求路由协议的开销尽可能小、合理的利用半双工方式下的信道以避免冲突、并且在路由建立中更新各节点的态势信息。所以现有路由协议在窄带条件下有以下不足:

1)控制分组数据量大,开销较高;

2)现有路由协议在半双工方式下信道竞争、冲突严重;

3)缺少对网络内节点的态势信息感知(如地理位置信息),这在某些对态势信息依赖的情景(如战场环境、紧急搜救等)造成了使用局限。



技术实现要素:

发明目的:本发明针对半双工窄带条件下的带宽受限、信道冲突严重等问题,从自组网对节点态势信息的需求出发,提出一种适用于窄带条件的自组网路由方法与系统,通过合理设计数据包帧结构,将各节点的地理位置信息融合进拓扑控制消息中,在邻居检测的同时有效的更新全网的态势信息,并在每一次转发时进行数据聚合,有效的节省了带宽资源,同时地理位置信息可用于路由计算。本系统能够在窄带条件下快速的部署无线adhoc网络,实现多终端的路由查找与信息交互。

技术方案:为实现上述技术效果,本发明提出以下技术方案:

一种适用于窄带条件的自组网路由方法,包括步骤:

(1)当组网开始时,所述自组网中的所有节点获取配置信息,包括节点的id和带宽情况;所有节点根据预先设置好的节点id按从大到小的顺序生成一个节点状态表,各节点的节点状态表均相同,各节点根据节点状态表确定自身可占用的发送时隙在帧中的相应位置;当一个节点处于发送状态时,所述自组网中的其他节点均处于接收状态;

(2)各个节点完成时间同步;

(3)每个节点判断当前时隙是否为自己的发送时隙,若是,则执行步骤(4),若否,则执行步骤(5);

(4)节点进入发送状态,并执行以下程序:

(4-1)节点获取自身的地理位置信息、时间信息、存储的其他信息,其他信息包括:邻居表、邻居链路状态、其他节点的地理位置信息、需要发送的消息;

(4-2)节点对自身的地理位置信息及存储的其他节点的地理位置信息进行编码;节点生成拓扑控制信息,并将编码后的地理位置信息写入拓扑控制信息;

拓扑控制消息包括以下信息:

拓扑控制消息序列号:每次生成新的拓扑控制消息,该序列号自动加1,如果在一个周期内,本节点的邻居信息没有变化,则序列号不变,其他节点在收到相同序列号的拓扑控制消息时,则直接丢弃新来的拓扑控制消息;如果检测到该序列号发生跳跃,则表明发生了丢包或该节点超出过通信范围;

邻居数目:表示本条拓扑控制消息中共有多少条邻居信息;

邻居信息:包含邻居地址、链路状态、定位时间以及邻居的地理位置信息编码;其中,链路状态分为两种,分别是非对称链路和对称链路,非对称链路表示该节点发现了邻居,但还不确认邻居节点也发现了它,对称链路表示该链路已经被证实是双向的;

额外地理位置信息记录其他非邻居节点的信息,非邻居节点即为定位节点,非邻居节点的信息包括:定位信息数目、定位节点id、定位时间、定位节点的地理位置信息;其中,定位信息数目表示携带的地理位置信息的数目;定位节点id表示地理位置信息所属的节点的id;

(4-3)若节点有需要转发的数据包,则节点根据要传输的数据包进行路由计算以确定下一步的中继节点;若节点有需要传输的普通消息,则根据普通消息的目的节点进行路由计算以确定下一跳转发的中继节点,将中继节点列表写入到普通消息中,再将普通消息编入数据包中等待发送;

(4-4)节点将生成的拓扑控制消息和普通消息编码后加入数据包中;数据包的头部结构包括:

数据包长度:表示整个数据包的长度;

源节点id:表示发出这条数据包的源节点的id;

保留位:用于日后扩展;

数据包绝对时间:表示生成这条消息时的系统时间;

而拓扑控制消息和普通消息的头部结构包括:

消息类型:包括拓扑控制消息、location消息、短消息、语音消息、视频消息以及其他自定义消息;

消息长度:代表所携带的消息主体的长度;

每有一个新的消息需要发送,就会生成一个新的消息头部加入到数据包中;

(6)节点进入接收状态,并执行以下步骤:

(5-1)节点侦听来自其他节点的数据包,提取数据包头部的源节点id和数据包绝对时间,提取出的源节点id即为数据包的发送节点和包内普通消息的中转节点,提取出的数据包绝对时间即为整个数据包的基准时间,后续包内的所有时间信息都是以此时间为基础的相对时间;

(5-2)节点利用侦听到的数据包中的拓扑控制消息检测与它有单向链路和对称链路的邻居节点并广播交换各节点的地理位置信息;

(5-3)节点对侦听到的数据包中的普通消息根据路由进行转发;

(5-4)存储数据,包括邻居信息、各节点的地理位置信息以及短消息、语音消息、视频消息以及其他自定义消息的备份;

(5-5)节点判断下一时隙是否为自己的发送时隙,若是,则返回步骤(4),若不是,则返回步骤(5)。

具体的,所述普通消息包含以下信息:

消息序列号:每生成一条新消息,会分配一个唯一的标识符给这条消息;

消息源节点id:消息的生成节点的id;

目的节点id:消息的目的节点的id;

跳数:消息的跳数;

保留位:系统保留位;

优先级:消息的优先级,在带宽资源受限的情况下,优先级高的消息会优先转发;

消息相对时间:此处时间为与报文头部的数据包绝对时间相比的相对时间;

中继节点列表大小:中继节点列表的长度;

中继节点列表:代表转发这条消息的中继节点的列表;

消息主体:消息的主体部分。

具体的,所述步骤(4-3)中,当要发送数据包时,节点进行路由计算以确定下一步的中继节点,具体步骤包括:

广播消息的中继节点选择方法:选择满足条件1至3的节点作为中继节点:

条件1:所选的中继节点必须覆盖所有的二跳节点;

条件2:对于一个未覆盖的二跳节点,选择其中继节点时使中继节点的邻居节点不包括已覆盖的二跳节点;

条件3:选择的中继节点尽可能少;

点对点传输的中继节点选择方法:

s1:读取待传输的数据包中普通消息的目的节点id;

s2:在本地查找相应目的节点id的位置坐标;

s3:查找本节点的二跳邻居的位置坐标,找出与目的节点最近的二跳邻居;

s4:选择相应的中继节点。

具体的,所述节点利用侦听到的数据包中的拓扑控制消息检测与它有单向链路和对称链路的邻居节点并广播交换各节点的地理位置信息的具体步骤包括:

步骤a.节点对邻居信息的处理:

步骤a1:判断本节点邻居表中是否含有id为该源节点id的邻居,如果没有,则进行步骤a2,如果有则跳至步骤a3;

步骤a2:新建一个一跳邻居节点,存入源节点id和拓扑控制消息序列号,跳至步骤a4;

步骤a3:读取拓扑控制消息序列号,连同源节点id判断拓扑控制消息序列号是否有更新,如果没有更新则不作处理;如果更新则进入步骤a2;

步骤a4:依次读取每个邻居id以及邻居链路状态信息,更新二跳邻居表;

步骤a5:如果在该邻居的邻居表中存在本节点,则将该邻居的链路状态置为对称链路,如果没有,则将该邻居的链路状态置为非对称链路,步骤a结束;

步骤b.节点对地理位置信息的处理:

步骤b1:读取数据包内的节点id信息和时间信息;

步骤b2:根据节点id在本节点设备内的数据库检索是否有该id的时空信息;

步骤b3:若没有,则在数据库内新增一条记录并写入该id的时空信息;

步骤b4:若已经存在该id的时空信息,则比较数据包内的定位时间与数据库内相同id的定位时间哪一条较新,若数据库内的时间较新,则丢弃这一条新到来的时空信息;如果新到来的时空信息较新,则更新数据库内该id的时空信息;

步骤b5:对下一条时空信息重复上述步骤,直至处理完所有的时空信息。

具体的,所述节点对于待发送的数据包中的普通消息的处理步骤为:

步骤c1:读取普通消息内的消息源节点id和消息序列号,如果已经收到过该条消息,则不进行处理;如果没有收到过,更新消息序列号并继续下一步;

步骤c2:读取跳数,如果跳数大于最大跳数限值,则不进行处理,继续下一步;

步骤c3:读取中继节点列表,并判断本节点是否被选为中继节点,如果不是则不进行处理,如果被选为中继节点,继续下一步;

步骤c4:读取优先级,加入相应优先级的转发队列,处理结束。

具体的,所述地理位置信息包括节点纬度、节点经度、节点海拔高度。

本发明还提出一种适用于窄带条件的自组网路由系统,该系统用于实现上述方法,包括:用户输入模块、gps/北斗模块、数据处理模块、收发模块、路由模块、初始化模块、射频模块以及公共数据库;其中:

用户输入模块:接收用户的设置信息、需要发送的数据;

gps/北斗模块:接收节点的地理位置信息;

数据处理模块:分为数据编码单元和数据解析单元;数据编码单元完成消息优先级的处理、拓扑控制消息的编码、普通消息的编码、数据包头部的编码;数据解析单元完成数据聚合、邻居更新、地理位置信息的更新以及转发消息的处理功能;数据聚合包括冗余消息的剔除、过时态势信息的更新、转发消息的中继选择;

收发模块:主要有广播发送与数据侦听功能以及负责切换收发状态的定时器管理,在射频模块为半双工的条件下,节点以时分的方式工作,周期性的切换为发送状态和接收状态;

路由模块:负责邻居表的维护以及路由的计算;

初始化模块:负责开机时的配置信息加载以及系统各节点的时间同步工作;

射频模块:负责数据的无线收发,以半双工广播的方式工作。

有益效果:与现有技术相比,本发明具有以下优势:

本发明通过合理设计数据包帧结构,将各节点的地理位置信息融合进拓扑控制消息中,在邻居检测的同时更新全网的地理位置信息,并在每一次转发时进行数据聚合,有效的节省了带宽资源,同时地理位置信息可用于路由计算。

在本路由协议中,所有数据包采用统一的格式传输,既保证了兼容性,也保证了不同消息类型的携带,同时适应宽带和窄带条件。

本发明设计的路由机制能够很好的应用于广播路由中,每次转发时合理的选择下一中继节点,降低了开销,同时不会造成一条信息被同一设备多次发送而造成广播风暴。

附图说明

图1为本发明提供的系统功能结构图;

图2为本发明提供的节点状态示意图;

图3为本发明提供的时隙分配示意图;

图4为本发明提供的节点工作流程图;

图5为本发明提供的拓扑控制消息帧结构示意图;

图6为本发明提供的拓扑控制消息邻居处理流程图;

图7为本发明提供的拓扑控制消息地理位置信息处理流程图;

图8为本发明提供的普通消息处理流程图;

图9为本发明提供的广播消息的中继节点选择示意图;

图10为本发明提供的基于地理位置信息的路由选择方法示意图;

图11为本发明提供的优先级处理示意图。

具体实施方式

下面结合附图对本发明作更进一步的说明。

本发明基于现有路由协议在本发明研究的半双工窄带条件下开销过高、信道冲突严重等问题,以及无线自组网实际应用中需要系统内各节点的态势信息的需求出发提出了一种适用于窄带条件的自组网路由方法与系统,通过时分广播技术、多点中继技术、增量消息技术以及将态势信息融合进拓扑控制消息的方法,降低了路由开销,解决了半双工方式下的信道冲突问题,并且在路由建立和维护过程中完成了系统各节点的态势感知,实现了窄带条件下的无线adhoc网络部署与应用。

图1为本发明给出的系统功能结构图。系统由用户输入模块、gps/北斗模块、数据处理模块、收发模块、路由模块、初始化模块、射频模块以及公共数据库等组成。具体来说:

(1)用户输入模块:接收用户的设置信息、需要发送的数据;

(2)gps/北斗模块:接收节点的地理位置信息,包括经纬度、海拔高度等;

(3)数据处理模块:分为数据编码单元和数据解析单元;数据编码单元主要完成消息优先级的处理、拓扑控制消息的编码、普通消息的编码、数据包头部的编码等工作;数据解析单元主要完成数据聚合(包括冗余消息的剔除、过时态势信息的更新、转发消息的中继选择)、邻居更新、地理位置信息的更新以及转发消息的处理(普通消息的转发采用多点中继的方式进行,每次收到一条消息,如果在消息中指明了本节点为中继节点,则进行路由计算选出下一中继节点并转发)等功能;

(4)收发模块:主要有广播发送与数据侦听功能以及负责切换收发状态的定时器管理,在射频模块为半双工的条件下,节点以时分的方式工作,周期性的切换为发送状态和接收状态;

(5)路由模块:负责邻居表的维护以及路由的计算(通过邻居信息和节点的地理位置信息选择需要转发消息的中继节点);

(6)初始化模块:负责开机时的配置信息加载(包括系统时间、节点标识符、系统最大节点数量、带宽情况等)以及系统各节点的时间同步工作;

(7)射频模块:负责数据的无线收发,以半双工广播的方式工作在窄带条件下,但本发明提出的方法也可适用于宽带条件下,在宽带条件下,路由的建立更迅速并且可支持的消息量也更大。

节点时分工作方式

在本发明中由于节点采用半双工的工作方式,为了防止发送和接收间的冲突,系统采用时分的方式工作。每个节点以广播的方式发送信息,在某一时间段内,只允许有1个节点发送信息,其他节点都处于接收状态。

当组网开始时,所有节点根据预先设置好的节点id按从大到小的顺序生成一个节点状态表,因而各节点的状态表均相同并确定了节点可占用的时隙在帧中的相对位置。节点状态表如图2所示。

系统的时隙分配如图3所示,在一个节点数为n的网络内,设一个节点处于发送状态的数据时隙长度为ts,保护时隙长度为tp,那么系统工作一个周期(所有节点都完成一次发送)的总时间为:

t=tp+n×t3

在t时间内,节点处于接收的时间tr为:

tr=tp+(n-1)×t3

节点工作流程

对于本发明所设计的系统内每一个节点来说,其工作状态大体可分为开机一配置初始化-时间同步-稳定工作四个状态,稳定工作又分为发送状态和接收状态,如图4,具体步骤如下:

步骤1:系统节点开机;

步骤2:获取配置信息,包括节点的id、带宽情况等;

步骤3:各个节点完成时间同步;

步骤4:根据时隙分配进入发送状态(步骤5.1)或接收状态(步骤6.1);

步骤5.1:获取自身的地理位置信息、时间信息、存储的其他信息(包括邻居表、邻居链路状态、其他节点的地理位置信息、需要发送的消息等);

步骤5.2:计算路由表(详细流程将在后文给出);

步骤5.3:生成拓扑控制消息、加入地理位置信息(在带宽受限的情况下,不会将所有的地理位置信息全部发送,优先发送更新过的地理位置信息和前几次发送为包含的地理位置信息)、生成普通消息;

步骤5.4:编码、加上报文头部等其他信息;

步骤5.5:发送数据包;

步骤5.6:发送结束,转为接收状态,进入步骤6.1;

步骤6.1:侦听数据;

步骤6.2:处理数据(详细流程将在后文给出);

步骤6.3:存储数据;

步骤6.4:判断下一时刻是否为发送时刻,若是进入步骤5.1,若不是,继续接收回到步骤6.1。

数据包帧结构

在本发明的路由协议中,所有数据包采用统一的格式传输,既保证了兼容性,也保证了不同消息类型的携带。下面给出数据包头、拓扑控制消息、普通消息的帧结构。

1.数据包头帧结构:

整个数据包头部格式如表1所示。包含以下信息:

数据包长度(packetlength):长度为16位,表示整个数据包的长度;

源节点id(sourceid):长度为8位,表示发出这条数据包的源节点的id;

保留位(reserved):长度为8位,保留位,以便日后扩展;

数据包绝对时间(packetabsolutetime):长度为32位,表示生成这条消息时的系统时间,为绝对时间,这也是整个数据包内唯一的绝对时间,在这条数据包内的其他message所携带的时间都是以此为基础得到的相对时间,通过这种方式,我们可以有效减少数据包的大小,充分利用带宽;

消息类型(messagetype):长度为8位,代表消息类型,包括拓扑控制消息、location消息、短消息、语音消息、视频消息以及其他自定义消息;

消息长度(messagelength):长度为16位,代表所携带的message主体的长度;

消息(message):长度为messagelength中的大小,为消息的主体部分,具体各个消息的结构会在下文详细介绍。

在整个头部结构中,packetlength、sourceid、packetabsolutetime为整个数据包的头部,每一个数据包只会出现一次。而messagetype、messagelength为每个message的头部,每有一个新的message需要发送,就会生成一个新的message头部,加入到数据包中。

表1数据包头部格式表

2.拓扑控制消息帧结构:

每个节点利用拓扑控制消息检测与它有单向链路和对称链路的邻居节点并广播交换各节点的地理位置信息,单向链路主要是由于无线通信的不确定性造成的,所以所有的链接必须在两个方向上进行了检查才认为是有效的。拓扑控制消息的结构如图5,包含以下信息:

拓扑控制消息序列号(sequencenumber):长度为16位,拓扑控制消息序列号,每次生成新的拓扑控制消息,该序列号自动加1,如果在一个周期内,本机的邻居信息没有变化,则序列号不变,其他设备在收到相同序列号的拓扑控制消息时,则直接丢弃该拓扑控制消息。如果检测到该序列号发生跳跃,则表明发生了丢包或该节点超出过通信范围;

邻居数目(neighbornumber):长度为8位,表示本条拓扑控制消息中共有多少条邻居信息;

邻居信息(neighborinformation):包含邻居节点的id、邻居状态以及邻居的地理位置信息;

额外地理位置信息(otherlocation):其他非邻居节点的地理位置信息;

邻居地址(neighboraddress):长度为8位,表示邻居节点的地址;

链路状态(linkstatus):长度为1位,表示邻居节点的链路状态,链路状态分为两种,分别是“非对称链路”和“对称链路”,“非对称链路”表示该节点发现了邻居,但还不确认邻居节点也发现了它,“对称链路”表示该链路已经被证实是双向的;

locationmessagenumber:长度为16位,表示携带的地理位置信息的数目;

定位节点id(locationnodeid):长度为8位,表示地理位置信息所属的节点的id;

定位时间(locationtime):长度为16位,表示定位时的时间,此处时间为与报文头部的packetabsolutetime相比的相对时间,通过比较locationtime,节点可以选择性(保留较新的信息,去除过时的信息)的更新本机存储的各节点的地理位置信息;

节点纬度(node’slatitude):长度为24位,表示节点的纬度;

节点经度(node’slongitude):长度为24位,表示节点的经度;

节点海拔高度(node’saltitude):长度为12位,表示节点的高度;

3.普通消息帧结构:

普通消息用于进行数据的传输,需要进行转发,普通消息大致可分为:

窄带条件:

指令消息、短信息、短语音

宽带条件:

语音、视频、文件

普通消息的帧结构如表2所示,包含以下信息:

消息序列号(messagesequencenumber):消息的序列号,长度为16位,每生成一条新消息,会分配一个唯一的标识符给这条消息(在原来的基础上加1),因为普通消息一般会经过转发,而同时可能有多个中继节点存在,因此一个节点可能会收到同一条消息的多个副本,此时通过messagesequencenumber来去除冗余消息;

消息源节点id(sourceid):长度为8位,消息的生成节点的id;

目的节点id(destinationid):长度为8位,消息的目的节点的id;

跳数(hopcount):长度为8位,消息的跳数;

保留位(reserved):长度为5位,系统保留位;

优先级(priority):长度为3位,消息的优先级,在带宽资源受限的情况下,优先级高的消息会优先转发;

消息相对时间(messagerelativetime):长度为16位,此处时间为与报文头部的packetabsolutetime相比的相对时间;

中继节点列表大小(relaypointssize):长度为8位,中继节点列表的长度;

中继节点列表(relaypoinslist):长度为relaypointssize,代表转发这条消息的中继节点的列表;

消息主体(messagebody):消息的主体部分。

表2普通消息帧结构表

带宽及时延分析

为了对窄带信道带宽的合理有效利用,系统采用时分的方式工作。在某一时间段内,只允许有1个节点发送信息,其他节点都处于接收状态。记这一时间段的长度为t(单位秒),所有节点依次发送一次信息的总时长记为t(单位秒),设一个网络内设备数为nmax,则t=t×nmax。在带宽一定的情况下,t越大,每台设备可以工作在发送状态的时间越长,一次可以发送的消息也就越多。但同时在设备数量一定的情况下,t越大,t也会随之增大,整个网络完成一次信息交互的时间也就越长。对于本发明中的自组网系统来说,既要保证有足够的发送时间t来发出所有的时空信息,也要保证所有节点的位置信息刷新时间t不至于太长,因此需要找到一个合适的发送时隙t。

各部分资源占用情况:

头部:2+1+1+4=8(bytes);

拓扑控制消息:4+2+1+neighbornumber*(85/8)+2+locationmessagenumber*(1+2+3+3+1.5)

=9+10.625*nnei+10.5*nloc(bytes);

普通消息:4+2+1+1+2+2+1+relaypointssize*1+sizeofmessagebody=8+srelay+sm(bytes)

在带宽为b(bps)的情况下,保护时间为tp,整个系统完成一次循环所需的时间

设网络内设备数nmax=20,每个拓扑控制消息内的邻居数目为5,每次额外发送的地理位置信息数量nloc=nmax/4=5,srelay=3,则每次发送的数据包大小约为134+smbytes。表3给出不同情况下的系统总循环时间

表3不同情况下的系统总循环时间表

由表3可以看到,在节点数为20、不同带宽不同消息类型的情况下,系统循环一次所需的时间为1.9秒至17.8秒不等,在对时间要求不高的场景下,本发明的自组网路由方法可以满足组网与应用的要求。

数据处理流程

在对接收到的数据包处理方面,主要分为对数据包头部信息的提取,对拓扑控制消息的处理,对普通消息的处理。

1.提取数据包头部信息

读取头部的sourceid和packetabsolutetime,其中sourceid即为数据包的发送节点和包内普通消息的中转节点,packetabsolutetime即为整个数据包的基准时间,后续包内的所有时间信息都是以此时间为基础的相对时间。

2.对于拓扑控制消息的处理步骤:

拓扑控制消息起到邻居检测和更新态势信息的作用,对其的处理分为对邻居信息的处理和对地理位置信息的处理。

2-1对邻居信息的处理,流程如图6所示:

步骤1:判断本机邻居表中是否含有id为该sourceid的邻居,如果没有,则进行下一步,如果有则跳至步骤3;

步骤2:新建一个一跳邻居节点,存入sourceid和拓扑控制sequencenumber,跳至步骤4;

步骤3:读取拓扑控制消息序列号sequencenumber,连同sourceid判断sequencenumber是否有更新,如果没有更新则不作处理。如果更新则进入步骤2;

步骤4:依次读取每个邻居id以及邻居链路状态信息,更新二跳邻居表;

步骤5:如果在该邻居的邻居表中存在本节点,则将该邻居的链路状态置为“对称链路”,如果没有,则将该邻居的链路状态置为“非对称链路”,处理结束。

2-2对于地理位置信息的处理步骤,流程如图7所示:

步骤1:读取包内的节点id信息和时间信息;

步骤2:根据id在设备内数据库检索是否有该id的时空信息;

步骤3:若没有则在数据库内新增一条记录并写入该id的时空信息;

步骤4:若已经存在该id的时空信息,则比较包内的定位时间与数据库内相同id的定位时间哪一条较新,若数据库内的时间较新,则丢弃这一条新到来的时空信息;如果新到来的时空信息较新,则更新数据库内该id的时空信息;

步骤5:对下一条时空信息重复上述步骤,直至处理完所有的时空信息。

3.对于普通消息的处理步骤,具体流程如图8所示:

步骤1:读取message内的sourceid和messagesequencenumber,如果已经收到过该条消息,则不进行处理。如果没有收到过,更新messagesequencenumber并继续下一步;

步骤2:读取hopcount,如果hopcount大于maxhopcount(最大跳数限值),则不进行处理,继续下一步;

步骤3:读取relaypointslist,并判断本节点是否被选为relaypoints(中继节点),如果不是则不进行处理,如果被选为中继节点,继续下一步;

步骤4:读取priority,加入相应优先级的转发队列,处理结束。

路由计算

在本方法中,拓扑控制消息和location消息均为跳数为1的广播,不允许转发。而对于普通消息,通常目的节点和源节点在单跳链路上是不可达的,需要经过一次或多次转发才能实现消息的传输,进行转发的节点称为中继节点。节点在收到一条需要自己转发的数据包时,都会进行一次路由计算来确定下一步的中继节点。为了避免过多的占用带宽以及抑制广播风暴的产生,需要采用一种恰当有效的方法来选择中继节点。

1.广播消息的中继节点选择方法

如图9所示,源节点为p,p的一跳邻居节点为a-g,p的二跳邻居节点为1-7,各节点间的连接关系如图中实线所示。

在中继节点选择上,我们有以下原则:

原则1:所选的中继节点必须覆盖所有的二跳节点

原则2:对于一个未覆盖的二跳节点,选择其中继节点时尽量使中继节点的邻居节点不包括已覆盖的二跳节点

原则3:选择的中继节点尽可能少

因此,图9中的中继节点选择方式为:

图(0)初始状态;

图(1)为了覆盖1、2节点,选择a为中继节点;

图(2)为了覆盖3号节点,可选择b、e,根据原则2,选择e,同时覆盖了5号节点;

图(3)为了覆盖4号节点,选择c,同时覆盖了6号节点;

图(4)选择f节点,覆盖7号节点。

此时覆盖了所有二跳节点,中继节点为acef。

2.点对点传输的中继节点选择方法

由于系统在工作过程中不停的广播各节点的地理位置信息,所以节点存储有全网各个节点的地理位置信息(略有延迟),在此前提下,我们根据目的节点的地理位置信息来选择下一跳的中继节点,如图10所示,步骤如下;

步骤1:读取message中的目的节点地址destinationid;

步骤2:在本地查找相应destinationid的位置坐标;

步骤3:查找本节点的二跳邻居的位置坐标,找出与目的节点最近的二跳邻居;

步骤4:选择相应的中继节点。

优先级判断流程

本方法中,在普通消息帧结构中加入了优先级标识符p,p=p0/p1/p2,分别代表低优先级、普通和高优先级(如有需要可以扩展,最高支持8种不同的优先级)。优先级处理流程如图11所示,高优先级消息在整个网络内传输时拥有优先的发送权和转发权。为此,在程序中有三条存储队列分别为低优先队列p0、普通优先队列p1和高优先队列p2。当待发送的消息(包括需要转发的消息)到来时,将消息按照各自的优先级存入三条队列,同时对于存入的p0和p1队列的消息上附带上一个“计时器”,并设置一个等待时间tw,当一条消息的计时器时间等于tw时,自动将消息移入更高优先级的队列中(不改变优先级标识符),即p0->p1、p1->p2,同时去除移入p2的消息的计时器,重置移入p1的消息的计时器。最后当发送时隙到来时,从p2队列中按存放顺序取出消息进行编码并发送,如果p2队列中没有可发送消息,则依次到p1和p0队列中寻找,

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1