蓝牙mesh的网络拓扑

蓝牙mesh的网络拓扑

拓扑

拓扑是一种不考虑物体的大小、形状等物理属性,而仅仅使用点或者线描述多个物体实际位置与关系的抽象表示方法。拓扑不关心事物的细节,也不在乎相互的比例关系,而只是以图的形式表示一定范围内多个物体之间的相互关系。

网络拓扑

计算机连接的方式叫做“网络拓扑结构”(Network Topology)。网络拓扑是指用传输媒体互连各种设备的物理布局,特别是计算机分布的位置以及电缆如何通过它们。设计一个网络的时候,应根据自己的实际情况选择正确的拓扑方式。–百度百科

通俗地说,“拓扑结构”就是指这些计算机与通讯设备是如何连接在一起的。


因此,蓝牙mesh的网络拓扑指的就是蓝牙mesh设备的位置分布以及他们之间是如何连接在一起的。


在了解蓝牙mesh网络拓扑之前

首先我们应该先知道在蓝牙mesh网络中存在什么角色?

节点和设备

  • 未配网设备:还没加入蓝牙mesh网络的设备(Unprovisioned Device)
  • 节点: 加入到一个蓝牙mesh网络的设备

配网器和配网过程

  • 配网过程一般由产品制造商提供的应用程序完成
  • 运行这个应用程序的设备被称为配网器

节点与节点之间传递信息的方式

广播和洪泛

广播报文实现信息传播,洪泛是信息传递机制

洪泛的优化机制
消息缓存队列和消息寿命

消息缓存队列和TTL是如何解决问题?在节点收到后,会在消息缓存队列中查找是否存在这个消息,如果存在,则直接过滤掉这条消息,什么都不做。如果不存在,则判断TTL的值是否需要处理。如果消息缓存队列和TTL的值都通过了,则进入真正的处理流程,然后再判断是否需要转发。如果一个消息处理后,就会把处理的消息放到消息缓存队列,以便下次收到消息的时候做比对,消息缓存队列也不是无限大,是一个环形队列,如果超过我们设置的大小,则会把最久的那边消息覆盖。TTL是一个0~127的整数,这个值代表这一个消息能转发的次数,如果一个消息处理后,在转发的时候,TTL的值会减一,减小到0后,这个消息就不会被节点处理。

蓝牙mesh网络拓扑

蓝牙mesh的网络拓扑

网络拓扑示意图

这张图说明了很多东西

mesh网络拓扑中目前的4大角色(未来还会增添)

转发节点(Relay Node)

转发节点具备转发功能:收到一条消息后将其转发出去,这样可以扩大mesh网络的覆盖范围。

代理节点(Proxy Node)

代理节点具备代理功能:可以兼容不支持蓝牙mesh广播包传播的设备,代理节点与这类设备建立GATT连接,自身在mesh广播数据与GATT传输数据之间切换,使得所有设备之间都能mesh通信。

低功耗节点(Low Power Node)和 朋友节点(Friend Node)

低功耗功能:能够有效降低设备工作时间占空比,需要与朋友功能配合使用。
朋友功能:帮助其他支持低功耗功能的节点缓存信息,让支持低功耗功能的节点能在低功耗状态下工作。

有了这些基本概念,再看那张图,图中中继节点有Q、R、S,低功耗节点有I、J、K、L、M和朋友节点N、O、P。N节点没有连接低功耗节点,S节点通过GATT连接了T节点。S节点必须将蓝牙mesh网络中收到的所有广播包转换成GATT数据包转发给T节点,所以S节点也是代理节点。有箭头代表节点之间的信息可达。这里要说明一下,配网器也是一个节点。

当节点A想要发数据给节点T的时候,数据流是这样的:A广播一条消息a出来,目标地址是T的地址,节点B、P、Q收到了消息a,检查发现目标地址是T,则B、P节点丢弃了这条消息(因为不具备转发功能),而节点Q转发了这条消息a,转发的消息a被节点A、B、C、D、E、R、P收到后,除了R之外其他节点都丢弃了消息a,节点R转发了消息a,节点E、N、S、H收到消息a后,E、N、H节点都丢弃了消息a,S节点消息将消息a发给T节点。

这个图说它是经典,作为教学把蓝牙mesh的优势和处理逻辑讲的淋漓尽致,但是如果要是这样去布置mesh网络,那就存在风险了,如果图中R节点设备没电停机了,那整个网络裂开成两个网络了。

  • 复习、熟悉网络拓扑相关概念和信息传递流程

参考文章:
[简书:蓝牙mesh的网络拓扑]:https://www.jianshu.com/p/88c895dcf5d9

上一篇:Service Mesh 在中国工商银行的探索与实践


下一篇:Cesium之3dtiles模型选择问题