一种基于BLEmesh的无线传感器网络洪泛方法与流程

文档序号:15235835发布日期:2018-08-24 04:06阅读:516来源:国知局

本发明属于无线传感器网络技术领域,尤其涉及一种基于blemesh的无线传感器网络洪泛方法。



背景技术:

目前,业内常用的现有技术是这样的:无线传感器网络(wirelesssensornetworks,wsns)作为物联网底层网络的主要技术形式之一,是由传感器设备在监控区域大规模部署并相互通信形成的多跳自组织网络系统,传感器设备可以采集人们所需信息并通过多跳路由传输到汇聚节点或智能网关,为物联网的实现奠定了基础,使智能家居、可穿戴设备、楼宇自动化等物联网应用持续深入。蓝牙低功耗(bluetoothlowenergy,ble)技术作为应用于无线传感器网络中的短距离通信技术之一,具有低功耗、低成本、低复杂度和高灵活性等特点,提供了wsns所需要的特性,尤其是其低功耗特性保证了传感器更长的生命周期。相比其他技术,广泛部署在手机等智能设备中是ble最大的优势,这使其成为物联网中最具潜力的关键技术,被人们给予了厚望。然而ble最初被设计为基于主从模式连接,即点对点的通信方式,只支持星型网络拓扑,不能大面积组网,缺少端到端的路径多样性,限制了它的传输覆盖范围,对于具有大量设备的物联网应用来说,ble不能很好的适应市场发展需求。相比之下,像thread和zigbee等技术已经具有标准化的mesh支持,能够通过形成mesh网拓扑结构来克服以上缺点。blemesh网拓扑的提出可以解决ble只支持星型拓扑的问题,增加了网络覆盖范围,同时提高网络的鲁棒性。在构建blemesh网络拓扑架构时,可以利用蓝牙核心规范允许ble设备同时在多个微微网中分别扮演主从角色这一特性,将多个微微网互联组成散射网从而支持多跳路由。这种方法需要相邻ble设备建立主从连接,通过数据信道按指定的路由协议传输数据。散射网拓扑可能看起来是一个很好的选择。两个连接的设备通过链路层连接状态的ble数据信道通信,由于跳频机制,每个链路将使用不同的的信道,避免了设备间的干扰,可靠性高,然而这却阻碍了消息的组播,并且使用散射网增加了设备甚至是网络的复杂度,散射网的建立、维护以及路由消耗更多的电量和资源,主设备的故障会使所有连接到它的从设备断开,存在单点故障等问题。而通过使用ble的广告信道来传输消息,不需要相邻节点建立连接,一个ble节点可以向所有邻居节点广播数据包,作为中继的邻居节点扫描到数据包后同样使用广告信道将其转播出去,这样,消息在网络中不断洪泛直到最终到达目的节点或该数据包生存时间结束,从而建立起真正的mesh网络拓扑结构。因此,这种方法使用的是洪泛机制的算法,与需要建立连接的ble散射网络拓扑相比,其无需维护拓扑结构,占用内存资源较少、部署灵活且不存在单点故障。虽然传统的洪泛式路由实现简单,但也存在一些不足,因为网络中每个接收到消息的中间节点都会将消息盲目的转发到其邻居节点,每一个邻居节点又将消息转发给各自的邻居,直到消息到达目标节点为止,这会导致相同的消息通过不同的路径到达,过多的转发甚至重复的转发都是无意义,不仅使网络中数据高度冗余,且导致节点能量消耗过快。

综上所述,现有技术存在的问题是:传统的洪泛式路相同的消息通过不同的路径到达同一节点,会导致消息被重复转发,甚至无效的转发,造成广播风暴使网络中数据高度冗余,且导致能量消耗过快;不能直接移用于blemesh网中。

解决上述技术问题的难度和意义:现有的研究大多是针对zigbee等技术进行的,并不适用于ble技术,因此如何在基于ble的无线传感器网络上进行改进,保证传统的洪泛式路由优点的前体下解决上述存在的问题成为了关键。

解决上述问题可以减少消息被盲目转发,从而节约能耗,增加节点的使用寿命。针对现有技术存在的问题,本发明提供了一种基于blemesh的无线传感器网络洪泛方法,解决了ble设备无法进行大面积部署进行多跳传输的问题,利用sink节点为每个节点分配的跳数值,限制传感器数据因盲目洪泛在网络中被过多的转发,使其朝向sink节点的方向传输,提高节点使用寿命。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于blemesh的无线传感器网络洪泛方法。

本发明是这样实现的,一种基于blemesh的无线传感器网络洪泛方法,所述基于blemesh的无线传感器网络洪泛方法通过定义新的ble广告包,在跳数配置阶段sink节点为网络中的传感器节点配置距离sink节点的跳数值,在数据传输阶段可利用跳数值限制广告包洪泛方向,朝向sink节点传输。

进一步,所述基于blemesh的无线传感器网络洪泛方法包括以下步骤:

步骤一,跳数配置阶段,sink节点产生配置消息广告包,广告包中包含初始值为0的hop字段,每当该广告包要被广播之前,需把hop值加1;sink节点广播该广告包,对网络中的传感器节点进行跳数配置,接收到广告包的邻居节点将hop字段的值保存到本地作为自身距离sink节点的跳数值,再转发给它的邻居节点,重复以上操作,直到网络中所有节点都获得距离sink节点的跳数值;

步骤二,数据传输阶段,当某个传感器节点有数据需要向sink节点传输时,首先生成数据消息广告包,其中hop字段设置为在跳数配置阶段获得的距离sink节点的跳数值;节点广播数据消息广告包,接收到该广告包的邻居节点将自身跳数值与广告包中的hop字段的值进行比较,前者不大于后者,则hop字段替换为该节点的跳数值,并继续转发给它的邻居节点;自身跳数值大于hop字段的值,则丢弃该广告包;重复以上过程,直到数据消息广告包到达sink节点。

进一步,所述基于blemesh的无线传感器网络洪泛方法采用新的广告数据包有效载荷的格式,广告包遵循蓝牙核心规范4.1标准,其有效载荷部分包含以下字段:

mc:消息控制字段,2bits,表示该广告包是配置消息(01b)广告包还是数据消息(10b)广告包;

id:数据包id字段,每个节点用1个字节标识每个新发起的广告包;

sourceaddress:是一个2字节的值,用于标识发起该数据包的节点,原节点地址;

destinationaddress:是一个2字节的值,用于标识该数据包要发送到的目的节点的地址;

ttl:生存时间计数器,每个广告包都包含一个7bits的ttl值,用于限制数据包被中继的次数;

hop:7bits的跳数值字段,在由sink节点产生的配置消息广告包中,初始值为0,每次广播之前应被加1,用来记录广告包被广播了几次;

data:数据字段,包含传感器设备采集的信息或设备本身的数据。

进一步,所述基于blemesh的无线传感器网络洪泛方法在网络建立过程中,为每个节点分配内存,节点会维护一个缓存列表,通过将接收到的消息添加到缓存列表中来防止设备中继之前已接收到的消息;收到消息时,节点将根据缓存列表进行检查,已经存在于缓存列表则忽略该消息;尚未收到则将其添加到缓存列表中;缓存列表包含三个字段:sourceaddress、destinationaddress和id,分别对应广告包中的三个相同的字段。

进一步,所述基于blemesh的无线传感器网络洪泛方法每个节点会将sink节点的地址保存在本地,维护一个跳数值,指示节点距离sink节点的跳数,初始值为无穷,sink节点的跳数值则设置为0。

进一步,所述步骤一具体包括:

(1)sink节点产生的配置消息广告包中mc字段为01b,sourceaddress字段是sink节点的地址,destinationaddress字段设置为0xffff,表示该消息会在全网洪泛,没有指定目标节点,ttl字段设置为0x7f,hop字段为0x00。对于sink节点发起的每个配置消息广告包,应使用唯一且单调递增的id字段;

(2)跳数配置阶段使用具有消息缓存限制和生存时间限制结合的洪泛方法进行;sink节点在广播配置消息广告包之前,先将ttl值减1,判断ttl仍大于0,再将hop值加1,然后广播广告包三次,以确保邻居节点能够接收到广告包;

(3)传感器节点无消息发送时的默认状态为连续扫描所有广告信道准备接收广告包;当某个传感器节点接收到广告包,判断mc字段是01b,为来自sink节点的配置消息广告包;

(4)根据节点的缓存列表检查是否收到过该广告包,如果没有,则将该广告包添加到缓存列表中:若此时节点还未获得距离sink节点的跳数值,则把广告包中hop字段的值作为自身跳数值保存到本地,同时保存sink节点的地址。之后将ttl值减1,等于0就不再转发该广播包,仍大于0则把hop值加1后,将广告包转发出去;若节点已经具有跳数值,则将跳数值更新。之后将ttl值减1,等于0就不再转发该广播包,仍大于0则把hop值加1后,将广告包转发出去;转发广告包,节点只需广播一次;

如果检查缓存列表存在该广告包,说明节点已经获得距离sink节点的跳数值,那么,直接与广告包中hop字段的值进行比较,如果自身跳数值不大于hop字段的值,直接丢弃该广告包;否则,将跳数值更新为hop字段的值,之后将ttl值减1,等于0就不再转发该广播包,仍大于0则把hop值加1后,将广告包转发出去;

(5)重复上述过程,直到配置消息广告包洪泛到全网完成跳数配置。

进一步,所述步骤二具体包括:

(1)传感器节点产生的数据消息广告包中mc字段为10b,sourceaddress字段该节点的地址,destinationaddress字段设置为sink节点的地址,hop字段为距离sink节点的跳数值,ttl字段可根据跳数值设置为适当大小的值,data字段为要传输的实际有用数据;对于节点发起的每个数据消息广告包,应使用唯一且单调递增的id字段;

(2)数据传输阶段使用与跳数配置阶段相同的洪泛方式的基础上,加入跳数限制;节点在广播数据消息广告包之前,先将ttl值减1,判断ttl仍大于0,然后广播该广告包三次,以确保邻居节点能够接收到广告包;

(3)当某个传感器节点接收到广告包时,判断mc字段是10b,即为来自传感器节点的数据消息广告包,要发送到sink节点;

(4)节点将自身跳数值与数据消息广告包中的hop字段的值进行比较,如果前者大于后者,则直接丢弃该广告包;否则,根据节点的缓存列表检查是否收到过该广告包,如果有,丢弃该广告包;如果没有,将该广告包添加到缓存列表中,并替换hop字段为自身跳数值。之后将ttl值减1,等于0就不再转发该广播包,仍大于0则继续转发广告包,同样只广播一次;

(5)重复上述过程,直到数据消息广告包到达sink节点。

本发明的另一目的在于提供一种应用所述基于blemesh的无线传感器网络洪泛方法的无线传感器网络系统。

综上所述,本发明的优点及积极效果为:通过定义新的ble广告包,在跳数配置阶段,sink节点为网络中的传感器节点配置距离sink节点的跳数值,在这个过程中,传感器节点将获得的跳数值保存在本地。在数据传输阶段,节点可利用跳数值限制广告包洪泛方向,使其朝向sink节点传输。相比传统的洪泛式路由,本方法可以有效减少消息被转发的次数,进而降低了节点的能耗,延长节点使用寿命,还同时保证了延迟以及消息到达率。

附图说明

图1是本发明实施例提供的基于blemesh的无线传感器网络洪泛方法流程图。

图2是本发明实施例提供的新定义的ble广告包有效载荷格式示意图。

图3是本发明实施例提供的节点所维护的广告包缓存列表。

图4是本发明实施例提供的具体实施步骤示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明旨在解决洪泛算法使网络中消息被过多中继而导致的数据冗余和能量消耗快的问题,从而适用于基于blemesh的无线传感器网络。改进的方法结合ble技术的特性,利用三个广告信道实现消息的广播与接收,定义了新的广告包格式,加入hop等字段,通过为传感器节点配置距离sink节点的跳数值,使消息朝sink节点的方向转发,限制消息的盲目洪泛。

如图1所示,本发明实施例提供的基于blemesh的无线传感器网络洪泛方法包括以下步骤:

s101:在跳数配置阶段,首先,sink节点产生配置消息广告包,该广告包中包含初始值为0的hop字段,每当该广告包要被广播之前,需把hop值加1。随后,sink节点广播该广告包,对网络中的传感器节点进行跳数配置,接收到广告包的邻居节点将hop字段的值保存到本地作为自身距离sink节点的跳数值,再转发给它的邻居节点,重复以上操作,直到网络中所有节点都获得距离sink节点的跳数值。因此可知,距离sink节点越远,其跳数值越大。sink节点会定期进行跳数配置;

s102:在数据传输阶段,当某个传感器节点有数据需要向sink节点传输时,首先生成数据消息广告包,其中hop字段设置为在跳数配置阶段获得的距离sink节点的跳数值。随后,节点广播数据消息广告包,接收到该广告包的邻居节点将自身跳数值与广告包中的hop字段的值进行比较,如果前者不大于后者,则hop字段替换为该节点的跳数值,并继续转发给它的邻居节点;如果自身跳数值大于hop字段的值,则丢弃该广告包。重复以上过程,直到数据消息广告包到达sink节点。

定义了一个新的广告数据包有效载荷的格式,如图2所示。广告包遵循蓝牙核心规范4.1标准,其有效载荷部分主要包含以下字段:

mc:消息控制(messagecontrol)字段,2bits,表示该广告包是配置消息(01b)还是数据消息(10b);

id:数据包id字段,每个节点用1个字节标识每个新发起的广告包,应单调递增,以确保在任何给定时间产生的广告包的唯一性。被中继节点使用从而防止广告包被重复发送,以减少传输次数,限制blemesh网中消息的无限中继;

sourceaddress:该字段是一个2字节的值,用于标识发起该数据包的节点,即原节点地址。由发起节点设置,不受中继节点操作的影响;

destinationaddress:该字段是一个2字节的值,用于标识该数据包要发送到的目的节点的地址。同样由发起节点设置,不受中继节点操作的影响;

ttl:生存时间(timetolive,ttl)计数器,每个广告包都包含一个7bits的ttl值,用于限制数据包被中继的次数。节点每次产生广告包在广播它之前或节点作为中继节点转发广告包之前要将ttl值减1,如果ttl值仍大于0则可以广播;

hop:7bits的跳数值字段,在由sink节点产生的配置消息广告包中,初始值为0,每次广播之前应被加1,用来记录广告包被广播了几次。在传感器节点产生的数据消息广告包中,被设置为自身距离sink节点的跳数值,被中继节点转发前,需替换为该中继节点自身距离sink节点的跳数值;

data:数据字段,包含传感器设备采集的信息或设备本身的数据。

在网络建立过程中,为每个节点分配内存,节点会维护一个缓存列表,如图3所示。通过将接收到的消息添加到缓存列表中来防止设备中继之前已接收到的消息。收到消息时,节点将根据缓存列表进行检查,如果已经存在于缓存列表则忽略该消息。如果尚未收到则将其添加到缓存列表中。缓存列表包含三个字段:sourceaddress、destinationaddress和id,分别对应广告包中的三个相同的字段。

每个节点会将sink节点的地址保存在本地,还维护一个跳数值,用来指示节点距离sink节点的跳数,初始值为无穷,sink节点的跳数值则设置为0。

如图4(a)所示,阶段一具体按照以下步骤执行:

首先,sink节点产生的配置消息广告包中mc字段为01b,sourceaddress字段是sink节点的地址,destinationaddress字段设置为0xffff,表示该消息会在全网洪泛,没有指定目标节点,ttl字段设置为0x7f,hop字段为0x00。对于sink节点发起的每个配置消息广告包,应使用唯一且单调递增的id字段,假设是首次进行消息配置,id值为0x00;

跳数配置阶段使用具有消息缓存限制和生存时间限制结合的洪泛方法进行。sink节点在广播配置消息广告包之前,先将ttl值减1,变为0x7e仍大于0,再将hop值加1,变为0x01,然后广播该广告包三次,以确保邻居节点能够接收到广告包;

传感器节点无消息发送时的默认状态为连续扫描所有广告信道准备接收广告包。当传感器节点1和2首先接收到广告包,判断mc字段是01b,即为来自sink节点的配置消息广告包;

节点1根据其缓存列表检查是否收到过该广告包,因为是首次收到该广告包,将该广告包添加到缓存列表中。此时节点1还未获得距离sink节点的跳数值,所以把广告包中hop字段的值作为自身跳数值保存到本地,即节点1变为跳数值为1跳的节点,同时保存sink节点的地址。之后将广告包中的ttl值减1,变为0x7d仍然大于0,把hop字段的值加1后变为0x02,将广告包转发出去,只广播一次。节点2同理;

如果检查缓存列表存在该广告包,说明节点已经获得距离sink节点的跳数值,例如节点1和节点2都获得跳数值1之后,节点1转发的广告包被节点2收到,那么,节点2直接与广告包中hop字段的值进行比较,其自身跳数值为1,不大于hop字段的值0x02,所以直接丢弃该广告包;

重复上述过程,直到配置消息广告包洪泛到全网完成跳数配置。

如图4(b)所示,阶段二具体按照以下步骤执行:

首先,传感器节点5要发送数据消息广告包给sink节点,广告包中mc字段为10b,sourceaddress字段该节点的地址,destinationaddress字段设置为sink节点的地址,hop字段为距离sink节点的跳数值0x03,ttl字段可根据跳数值设置为0x05,data字段为要传输的实际有用数据。对于节点发起的每个数据消息广告包,应使用唯一且单调递增的id字段;

数据传输阶段使用与跳数配置阶段相同的洪泛方式的基础上,加入了跳数限制。节点5在广播数据消息广告包之前,先将ttl值减1变为0x04大于0,然后广播该广告包三次,以确保邻居节点能够接收到广告包;

传感器节点3、4、6和7都会接收到广告包,判断mc字段是10b,即为来自传感器节点5的数据消息广告包,要发送到sink节点;

这些节点将自身跳数值与该数据消息广告包中的hop字段的值进行比较,例如节点6自身跳数值为4,大于广告包中hop字段的值0x03,因此直接丢弃该广告包,不转发。而节点3自身的跳数值为2,小于广告包hop字段的值0x03,节点3再根据它的缓存列表检查是否收到过该广告包,因为是首次接收该广告包,则将该广告包添加到缓存列表中,并替换广告包hop字段为自身跳数值,变为0x02。之后将ttl值减1,变为0x03继续转发广告包,同样只广播一次。节点4操作与节点3相同;

当节点4接收到刚刚被节点3转发的的广告包,由于它已经从节点5接受过该广告包,虽然自身跳数值为2,不大于广告包中hop字段的值,但仍直接丢弃该广告包。

重复上述过程,直到数据消息广告包到达sink节点。

如图4(c)所示,所提的方法使节点5发送的消息最终按照图中黑色实线的路径传输到sink节点,保证了较低的延迟和路径多样性。与传统的洪泛式路由相比,所提出的方法可以减少相同数据广告包被转发的次数。如节点1会先后接收到来自节点3、节点2、节点4、节点8转发的广告数据包,但节点1只在第一次接收到数据包的时候转发,即转发节点3传来的数据包,其余数据包均丢弃不转发。而传统的洪泛式路由在节点1每次接收到数据包的时候都会进行转发,大大浪费了节点能量,增加了数据冗余度。因此,所提算法具有明显的优势。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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