适用于光电传感器无线MESH网络的可靠多径路由算法的制作方法

文档序号:15626299发布日期:2018-10-09 23:03阅读:163来源:国知局
本发明涉及通信领域中的光电传感器无线传感器网络技术,具体地说是一种适用于光电传感器无线mesh网络的可靠多径路由算法。
背景技术
::随着无线通信技术的发展,光电传感器无线传感器网络技术逐渐被应用到工业现场。光电传感器无线传感器网络技术的引入解决了工业现场布线困难、安装维护成本高等问题。凭借低功耗和低成本的特点,光电传感器无线传感器网络在工业自动化领域具有广阔的应用前景。路由协议负责将数据分组从源节点通过网络转发到目的节点,它主要包括两个方面的功能:寻找源节点和目的节点的优化路径,然后将数据分组沿着优化路径逐跳转发。传统的网络路由协议主要以跳数或通信延迟为路由的标准,同时考虑流量均衡等网络因素。工业应用对于监测网络的数据端到端传输提出了苛刻的可靠性指标,所以除了要考虑传统网络的应用需求外,光电传感器无线mesh网络的路由还要尽可能地保证数据传输的高可靠性。为此,在光电传感器无线mesh网络中,路由表通常由网络管理者集中计算然后分发给网络的各节点。传统的无线传感器网络路由算法,大多属于单径路由,一旦中间节点的失效,便无法保证恶劣工业环境下可靠通信;还有一部分虽然采用多径路由,但在选择路由中没有考虑通信链路的质量,将所有可用的连接都加入路由中,低质量连接使得通信失败概率增大,路由表过于臃肿,增加了网络开销,造成通信资源的浪费。因此,需要设计一种适合于光电传感器无线mesh网络的多径路由算法,在以保证数据传输高可靠性的同时,还能够使得网络的开销合理。技术实现要素:针对光电传感器无线传感器网络中数据高可靠传输的要求,本发明提出一种适用于光电传感器无线mesh网络的可靠多径路由算法。该算法包括网络拓扑建立、路由节点分层树建立、通信链路质量选择、路由生成共四个方面。为解决上述技术问题,本发明采用的技术方案是:适用于光电传感器无线mesh网络的可靠多径路由算法包括以下步骤:建立无线路由网络拓扑;建立该网络的路由节点分层树;在无线路由网络拓扑上进行通信链路质量检测;根据路由节点分层树以及通信链路质量生成路由。所述建立无线路由网络拓扑包括以下步骤:待加入网络的路由设备侦听由网关或己经加入网络的路由设备的信标;如果收到网关的信标,则向网关发送加入清求,通过身份验证之后,加入网络;如果收到已经加入网络的路由设备发出的信标,发送加入清求,通过身份验证后加入网络。所述建立该网络的路由节点分层树包括以下步骤:步骤1:取网关节点,记为r,设r的层级为0,创建队列,把r加入到队列中,标记r为已经访问过;层级加1;设置指针指向r;步骤2:移出队列的队首元素,记为n;若指针指向队列元素的层级不等于队首元素层级,则层级加1,指针指向n;步骤3:遍历n的邻居列表,对任意节点m,若链路存在,且m没有被访问过,则m的层级值设为当前层级值;将m加入队列,将m标记为已经访问过;若n的邻居节点全部访问完毕,执行步骤4;否则,返回步骤3;步骤4:若队列不为空,返回步骤2;当队列为空时得到的树即为节点分层树。所述通信链路质量检测具体为:路由节点检测自身与各个邻居节点之间的rssi。所述根据路由节点分层树以及通信链路质量生成路由包括以下步骤:步骤1:记源节点/网关节点为s,创建队列,将s加入队列;步骤2:移出队列的队首元素,记为n,当前层级设为n的层级减1;步骤3:遍历层数为当前层级值的节点,记为m,若链路存在,则将m加入用于记录下一跳的临时表,标记节点个数为0;步骤4:若节点个数小于设定的邻居数上限,则遍历临时表,记其中rssi最大的节点为e,将e加入队列并且将链路加入路由;在临时表中删除e,标记节点个数加1;如果节点个数大于等于设定的邻居数上限,执行步骤5;否则,返回步骤4。步骤5:若队列不为空,返回步骤2;当队列为空时,即得到源节点/网关节点的上/下行路由。本发明提出的一种适用于光电传感器无线mesh网络的可靠多径路由算法,具有如下优点:1.本发明提出的路由算法是以bfs遍历树为基础的,因此通过该算法得到的任意一条路由都具有路径最短的特点。2.本发明提出的路由算法具有跳间冗余特性,每个节点在发送过程中都有至少两个可用的邻居节点,任意一个中间节点失去连接都不会导致路由中断,从而增加了路由的健壮性。3.本发明提出的路由算法采用rssi进行跳间的通信链路质量评判,避免将质量不好的链路引入路由表,降低通信失败的可能,同时保持路由表的精简。附图说明图1为光电传感器无线mesh网络的网络拓扑图;图2为光电传感器无线mesh网络的结构模型图;图3为bfs遍历后树形分层结构图;图4为i到a的上行路由示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。本发明提出一种适用于光电传感器无线mesh网络的可靠多径路由算法。该算法包括网络拓扑建立、路由节点分层树建立、通信链路质量选择、路由生成共四个方面。1.网络拓扑建立。光电传感器无线mesh网络拓扑建立过程如下,待加入网络的路由设备侦听由网关或己经加入网络的路由设备的信标,如果待加入网络的路由设备收到网关的信标,则向网关发送加入清求,通过身份验证之后,加入网络;如果待加入网络的路由设备收到的是已经加入网络的其他路由设备发出的信标,发送加入清求,通过身份验证后加入网络。然后,由路由设备向网络管理者提交更新之后的邻居信息表,网络管理者根据邻居信息表可以得到整个网络的拓扑图。2.路由节点分层树建立。步骤1:取网关节点,记为r,设r的层级为0,创建队列,把r加入到队列中,标记r为已经访问过;层级加1;设置指针指向r。步骤2:移出队列的第一个元素(简称队首元素),记为n;若指针指向元素的层级不等于队首元素层级,则层级加1,指针指向n。步骤3:遍历n的邻居列表,对任意节点m,若链路存在,且m没有被访问过,则m的层级值设为当前层级值;将m加入队列,将m标记为已经访问过。若n的邻居节点全部访问完毕,执行步骤4;否则,返回步骤3。步骤4:若队列不为空,返回步骤2。算法运行完毕得到分层遍历树。3.通信链路质量选择。rssi是无线网络中信道质量的重要指标,在光电传感器无线mesh网络中,节点检测自身与各个邻居节点之间的rssi,并附在邻居列表中上传至网络管理器。以rssi作为单跳连接通信质量的衡量标准,保证路径上的每跳通信质量。4.路由生成。步骤1:记源节点为s,创建队列,将s加入队列。步骤2:移出队列的第一个元素(简称队首元素),记为n,当前层级设为n的层级减1。步骤3:遍历层数为当前层级值的节点,记为m,若链路存在,则将m加入临时表(用于记录下一跳),标记节点个数为0。步骤4:若节点个数小于设定的邻居数上限,则遍历临时表,记其中rssi最大的节点为e,将e加入队列并且将链路加入路由;在临时表中删除e,标记节点个数加1。如果节点个数大于等于设定的邻居数上限,执行步骤5;否则,返回步骤4。步骤5:若队列不为空,返回步骤2。本发明实施例如下:1.网络拓扑建立。现场设备mesh网络拓扑建立过程如图1所示:待加入网络的路由设备c侦听由网关a或己经加入网络的路由设备b的信标,如果待加入网络的路由设备c收到的网关a的信标,则向网关a发送加入清求,通过身份验证之后,加入网络;如果待加入网络的路由设备c收到的是已经加入网络的其他路由设备b发出的信标,发送加入请求,通过身份验证后加入网络。然后,由路由设备b向网络管理者提交更新之后的邻居信息表。路由设备依次加入网络后,网络管理者根据邻居信息表可以得到整个网络的拓扑图如图1所示。拓扑图可以用图g=(v,e)来表示,其中v表示节点,e表示节点之间的连接;而与普通图的不同之处在于mesh网络的拓扑模型具有根节点。图2为一个mesh网络的结构模型,其中a表示网关,也是网络的根节点,b-j表示网络中的路由节点。2.路由节点分层树建立广度优先搜索(breadth-firstsearch,bfs)是一种简便的图搜索算法,bfs算法得到的遍历树,具有其中任意节点到根节点的路径最短(跳数最少)的特点。采用bfs算法对网络进行遍历,记录其扫描顺序,得到分层的树状拓扑结构。符号说明:queue:fifo(先进先出)队列;level:表示节点的层数,初始值为0;visited:标记已被访问过的节点;p:始终指向上一次出队的节点。步骤1:取根节点,记为r,令根节点r的层数r_level=level,创建queue,r加入queue,标记r为visited;level++;p=r。步骤2:移出队列的第一个元素(简称队首元素),记为n;若节点p的层数p_level!=节点n的层数n_level,则level++,p=n。步骤3:遍历n的邻居列表,对任意节点m,若链路存在,且m没有被visited标记,则节点m的层数m_level=level;将m加入queue,将m标记为visited。若n的邻居节点全部访问完毕,执行步骤4;否则,返回步骤3。步骤4:若queue不为空,返回步骤2。若queue为空,则得到节点的分层树。以图2所示的网络结构为例,说明算法执行过程。执行步骤1,则a节点加入队列,level为1。执行步骤2,将a弹出队列,因为p的指向也为a,故level仍为1,p指向a。执行步骤3,查找a的邻居表,首先找到b,b没有被访问过,则将b的层数设为level并入队,然后将b标记为已遍历过;同样的方法遍历a的其他邻居,则c、d依次加入队列,并且其层数均为1。此时队列不为空,返回步骤2,队首元素为b,由于p此时指向a,p与b的level并不相同,故level加1,其值为2。然后再执行步骤3,e、f等节点依次加入队列,其层数为2。将以上算法执行完,就得到结构如图3所示的分层遍历树。后续算法都是以此分层树结构为基础实现的。3.链路通信质量用于选择rssi是无线网络中信道质量的重要指标,在光电传感器无线mesh网络中,节点检测自身与各个邻居节点之间的rssi值,并附在邻居表中上传至网络管理器。如图2所示,以rssi值作为单跳通信质量的衡量标准。4.路由生成符号说明:tmptable:临时存放节点的可用下一跳邻居,以备进一步筛选;index:标记节点个数,初始值为0;sum:常数,代表单跳间邻居数上限。步骤1:记源节点为s,创建queue,将s加入queue。步骤2:移出队列的第一个元素(简称队首元素),记为n,level=n_level-1。步骤3:遍历层数为level的节点,记为m,若链路存在,则将m加入tmptable,index=0。步骤4:若index<sum,则遍历tmptable,记其中rssi最大的节点为e,将e加入queue并且将链路加入路由;在tmptable中删除e,index++。如果index<sum,执行步骤5;否则,返回步骤4。步骤5:若queue不为空,返回步骤2。若queue为空,则得到的源节点/网关节点的上/下行路由。以图2所示网络结构为例,说明算法的执行过程。图2中每条链路旁边的数字表示该条连接的rssi,暂定邻居数上限sum为2,设源节点为i,生成以i为源节点到根节点a的上行路由。其执行过程如下:执行步骤1,将i加入队列queue;执行步骤2,n_level=3,故level为2;步骤3找到所有level为2且与i有邻居关系的节点e、f、g,并将其加入tmptable中;执行步骤4,三条链路的rssi分别为:con(i,g)=9,con(i,f)=8,con(i,e)=6,所以链路的rssi大小顺序为g、f、e。而邻居数上限sum为2,故只加入前两个节点g、f,将通信链路质量较差的e节点剔除,同时将g、f加入队列。然后返回执行步骤2,队首元素为g,n_level=2,故level为1;与g有邻居关系的元素为c、d,其个数没有超过sum,所以两个节点都可以加入队列,顺序为d、c。依次执行直到队列为空,算法结束,得到图4所示以i为源节点的上行路由。对节点i,其下行路由需在上行路由的基础上将路由顺序和通信方向做相反调整即可。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1