ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝牙mesh的网络拓扑

2022-02-23 15:00:00  阅读:301  来源: 互联网

标签:蓝牙 网络拓扑 mesh 消息 转发 节点


蓝牙mesh的网络拓扑

拓扑

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

网络拓扑

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

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


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


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

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

节点和设备

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

配网器和配网过程

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

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

广播和洪泛

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

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

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

蓝牙mesh网络拓扑

img

网络拓扑示意图

这张图说明了很多东西

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

标签:蓝牙,网络拓扑,mesh,消息,转发,节点
来源: https://blog.csdn.net/m0_46585749/article/details/123090188

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有