打印
[蓝牙芯片]

582蓝牙mesh自配网的跳转的算法是怎样的呢

[复制链接]
974|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kt98741|  楼主 | 2022-5-19 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CH582有2种组网方式,配网器配网和自配网,配网器配网可以支持100多个节点,自配网可以支持1万以上节点,节点之间只要知道对方的地址就可以传输数据,请问一下以自配网方式配网时,这1万个节点中,任意一个节点发送数据给另外一个节点时,经过中间节点跳转的路径是以什么方式确定的,版主能讲解一下吗

使用特权

评论回复
沙发
JayWell| | 2022-5-20 15:09 | 只看该作者
本帖最后由 JayWell 于 2022-5-20 15:42 编辑

蓝牙mesh网络中所有消息最终都在广播承载层传输,也就是说节点和节点之间收发数据,消息中只有源目地址,没有具体的路由路径或是点对点连接,直接广播出去。收发两节点之间距离远,不能直连时,需要中间有若干开启转发功能的节点来帮助中继消息。有两个手段帮助限制广播泛洪,一个是节点的消息缓存机制,收到消息时会比对一下缓存中有没有这则消息,有就丢弃;另一个是消息中的TTL字段,最大值为255,每转发一次自减1,当TTL自减为1时就不再转发,接收或丢弃消息。如果只用蓝牙mesh协议自带的转发机制,只在一个网络中去转发消息,收发节点之间以正好直连的距离一条直线排布了9998个节点,是无法中继到的。提供一个思路,可以利用子网络和自定义指令,根据自定义的UUID将节点划分到不同的子网中,比如说用UUID[15]字节存放子网标号,用一些节点跨多个子网,跨子网节点可以再组一个子网(就叫它子网0)。当可能需要远距离传播时,将携带有自身UUID[15]和目标节点网络地址、UUID[15]的消息发送给跨子网节点,跨子网节点根据UUID[15],将消息重新打包,在子网0内组播至所有节点。其他跨子网节点拆包,分析自定义指令中的目标子网是不是自身跨的多个子网中的一个,若是则重新打包,发送给目标节点。

使用特权

评论回复
板凳
kt98741|  楼主 | 2022-5-22 13:54 | 只看该作者
JayWell 发表于 2022-5-20 15:09
蓝牙mesh网络中所有消息最终都在广播承载层传输,也就是说节点和节点之间收发数据,消息中只有源目地址,没 ...

如果没有具体的路径,那么每个节点都会收到数据并且转发一次,节点数量少还好,数千个节点转发同一个数据时,对无线资源的占用会导致传输效率非常低,怎么解决这个问题呢。

使用特权

评论回复
地板
JayWell| | 2022-5-24 11:12 | 只看该作者
如果每个节点都转发,确实是很浪费资源的。所以蓝牙mesh协议有我上面说的两个机制来做一定限制。当消息缓存机制检测到重复信息时,就不再转发了;当TTL值从初始值每转发一次自减1直到值为1就不再转发。也可以由用户进行优化。节点的转发功能是有选择打开的,并不是每个设备都必须转发。对于节点密度比较大的地方,在保证转发功能正常且有一定抗风险能力的情况下,可以关闭部分节点的转发功能以减轻广播承载层压力。TTL值也可以进行一定优化。对于节点间发包频率较高,距离较近的情况下,可以在发包时将TTL设为最大值255,由收包节点返回收包时的TT值,来确定这两个节点间的最优TTL值。对于广播距离内直连的,无需转发的两个节点,直接将TTL值设为0,就不会转发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

51

帖子

1

粉丝