kt98741 发表于 2022-5-19 20:10

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

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字节存放子网标号,用一些节点跨多个子网,跨子网节点可以再组一个子网(就叫它子网0)。当可能需要远距离传播时,将携带有自身UUID和目标节点网络地址、UUID的消息发送给跨子网节点,跨子网节点根据UUID,将消息重新打包,在子网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,就不会转发。
页: [1]
查看完整版本: 582蓝牙mesh自配网的跳转的算法是怎样的呢