【已解决】蓝牙MESH丢包率及吞吐量问题

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
Robertz
Posts: 119

您好,请问下蓝牙MESH的BT3L的模组,
1)丢包率是多少
2)1秒钟最多可以发送多少个字节的数据?
3)在不分包的情况下,一帧数据最大可以发多少个字节

User avatar
joey_nobug
Posts: 144

Re: 【求助】

应用数据一般在 access 层以上,如果数据长度较长会在 lower transport 层进行分包,分为多个包从 network 层发送出去。
分包的规则:
此处只介绍 Access message 数据,即普通的通信数据。另外还有 control message 一般为配置类数据。
Access message 分为 unseq acc / seq acc;
unseq acc 即 不分包 access 数据,最大长度为15,减去 MIC(4) 最大可以 11Byte。11Byte 里包括 opcode,即在用 vendor model 发送数据时,opcode 长度为3,即 data 最大为 8.
seq acc 即分包 access 数据,单包最大长度为12,即总长度为 12n,n为分包数。 12n 中包括 MIC(4Byte),即用户数据为 12n-4,再减掉 opcode 长度才为实际的用户数据长度 即: 12n - 4 - opcode_len。如果对于使用 vendor model 则分包数为 n = (data_len + 7)/12,对 n 取整。

丢包的概率,跟实际的使用场景有关,尽量减少数据并发,即不要多设备同时上报数据,单个设备上报数据时做个延时与间隔,不要连续报数据。对于洪泛式网络,并发情况丢包是较为严重的。 在没有并发的情况下,我们压测一万次以上,300ms 发送间隔,数据接收成功率在 99% 以上。

Talk is cheap, show me the code.
Robertz
Posts: 119

Re: 【求助】

joey_nobug 2023年 Apr 20日 10:20

应用数据一般在 access 层以上,如果数据长度较长会在 lower transport 层进行分包,分为多个包从 network 层发送出去。
分包的规则:
此处只介绍 Access message 数据,即普通的通信数据。另外还有 control message 一般为配置类数据。
Access message 分为 unseq acc / seq acc;
unseq acc 即 不分包 access 数据,最大长度为15,减去 MIC(4) 最大可以 11Byte。11Byte 里包括 opcode,即在用 vendor model 发送数据时,opcode 长度为3,即 data 最大为 8.
seq acc 即分包 access 数据,单包最大长度为12,即总长度为 12n,n为分包数。 12n 中包括 MIC(4Byte),即用户数据为 12n-4,再减掉 opcode 长度才为实际的用户数据长度 即: 12n - 4 - opcode_len。如果对于使用 vendor model 则分包数为 n = (data_len + 7)/12,对 n 取整。

丢包的概率,跟实际的使用场景有关,尽量减少数据并发,即不要多设备同时上报数据,单个设备上报数据时做个延时与间隔,不要连续报数据。对于洪泛式网络,并发情况丢包是较为严重的。 在没有并发的情况下,我们压测一万次以上,300ms 发送间隔,数据接收成功率在 99% 以上。

好的,非常感谢

Post Reply