Bluetooth MESH探究

Bluetooth MESH目前采用的是基于flooding协议的MESH网络技术。在发布的协议版本中,有提到在未来的修订版本中可能会加入基于路由协议的MESH网络。

的确,flooding协议是相对比较初级的MESH网络技术。由于在网络层中的数据包都是以广播的形式发送并且转发,会在网络中产生大量重复发送的数据包,从而对网络的整体功耗有很大程度的负面影响。目前的flooding MESH协议,只适合于规模比较小的网络,而且不适合于网络数据量比较大的应用场景。

在介绍网络层协议之前,首先对BLE MESH的网络架构做个了解(图片来源于协议规范)。
在这里插入图片描述

上图中一共有四种连接,五种节点,下面分别做介绍:

四种连接:

(1) ADV(Not Relayed):两个节点之间可以互相收发广播消息,但是由于不是中继节点,不能中继转发数据包;

(2) ADV(Low power):用于low powernode与friend node之间收发数据包,如上图中的J与P之间的连接、L与O之间的连接。在这个连接上,low power node会主动发起请求建立friendship连接,以及从friend node查询是否有自己的数据。

(3) ADV Bearer:两个节点之间可以基于advertisingbearer收发广播消息,并且可以作为中继转发;

(4) GATT Bearer:用于没有ADVbearer能力的节点也能参与MESH网络。比如,节点T可以通过代理协议与其它节点在GATT连接上收发代理PDU。

五种节点:

(1) Node: 网络边缘的节点,没有relay功能。

(2) Low power node: 低功耗节点,由于有friendnode的存在,low power node不需要一直在广播信道发送或者监听数据包,可以更节省功耗。Low power node只需要定期的从它的friend node查询是否有数据到达就可以。

(3) Relay node: 是网络层扩展网络覆盖范围的核心节点,在接收到其它节点发送的数据包之后,根据网络的设定条件判断是否需要转发。

(4) Friend node: 作为low powernode的代理节点功能,当有low power node节点的数据下达时,可以在friend node缓存,等待low power node查询并且获取。

(5) Friend feature(not used): 在上图中,节点N具有friendfeature,但是它没有相应的low power node,所以friend feature没有使用。

在Provisioning节点为网络中的节点设定好相应的role之后。节点在网络层发送、中继以及接收数据包主要依赖于网络PDU的格式,其中,最主要的决定网络层行为的几个关键参数是NID、TTL、SRC以及DST。网络层PDU的组成以及描述如下表所示(图片来源于协议规范):
在这里插入图片描述

当一个节点收到网络数据包时,它需要根据下图所示的流程进行处理(图片来源于协议规范):

在这里插入图片描述

(1) 如果节点接收到数据包,首先判断NID是否匹配,如果不匹配,则直接丢弃该数据包;

(2) 判断NID满足之后,需要对网络数据包进行完整性验证,如果验证不通过,则丢弃该数据包;

(3) 对源地址和目的地址进行有效性判断,如果地址无效,丢弃该数据包;

(4) 在cache中查找是否之前已经收到过该数据包,如果收到,则丢弃该数据包;

(5) 如果没有收到,则将该数据包放入cache,并根据节点类型、TTL值以及DST值进行判断是否需要转发,只有在如下三个条件都满足的情况下才relay该数据包。

Ø 节点类型为relay node;

Ø TTL值大于等于2;

Ø DST地址不为本节点;

(6) 如果不满足relay条件,则丢弃该数据包。

(7) 如果满足条件,在relay数据包时,需要将数据包报文中的TTL值减1,然后继续广播。

下面以前文所列的拓扑图为例,介绍一个数据包的转发的完整过程:

场景:节点J需要发送数据包给节点E,TTL值设定为3.

(1) 首先,节点J发送数据包给节点P;

(2) 节点P收到收据包,由于转发条件都满足,节点P将TTL修改为2,广播该数据包。此时,节点A、Q以及H都会收到该数据包;

(3) 由于节点A以及节点H不是relay节点,将不会转发该数据包。

(4) 节点Q收到数据包后,判断转发条件都满足,节点Q将TTL修改为1,广播该数据包。此时,节点A、B、C、D、E以及R都会收到该数据包;

(5) 由于节点A、B、C、D不是relay节点,将不会转发该数据包。节点E收到数据包之后,判断DST地址是自己,则会处理并且将该数据包发给上层。节点R收到数据包时,虽然它是relay节点,但是由于TTL为1,节点R会丢弃该数据包。

小结:
BLEMESH的flooding协议虽然比较简单,但是它有比较明显的缺点,比如,大量的广播包转发消耗更多的网络能量,所以目前BLE MESH的应用范围还是比较受限。正如协议中所描述,在后续的修订版本中可能会引入基于路由协议的MESH网络,到那时BLE MESH的应用范围能够更广泛。
————————————————
版权声明:本文为CSDN博主「yangfei1328」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangfei1328/article/details/76737664

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值