Questions about data transmission in mesh networks, and measurement of packet loss rate and throughput in mesh .

Hi, all.

Q1:

      I have three nRF52840 boards and have been running the examples MESH and MESH-PROVISONER(nRF Connect SDK 2.1.2).One provisioner and two nodes.

In the mesh example, I'm attempting to modify the size of the buffer, as shown in the diagram below. When it's set to 32 bytes, the information can be transmitted successfully. However, when the length exceeds 32, it displays an error message in the serial information, saying "message too big." I'm wondering if there's a way to expand the size of the message.If I want to transmit a 256-byte data through the mesh network, how can I achieve that?

Q2:

Is there any way to test the throughput of the mesh network?

Q3:

When I use a button to control information transmission, such as pressing it once to send an "on/off" command to the target node along with a segment of data, I encounter the following err  when I quickly press the button twice (with an interval of less than 500ms), as shown in the diagram below. What could be the issue here? Is it possible to minimize this interval time as much as possible?

Q4:

I would like to test the packet loss rate of a mesh network at different speeds. How can I accomplish this?

Parents
  • Hi,

    First of all, I highly recommend nRF Connect SDK for new projects, and not the (older, now-in-maintenance-mode) nRF5 SDK. Please see our nRF Connect SDK and nRF5 SDK statement for details.

    If I want to transmit a 256-byte data through the mesh network, how can I achieve that?

    For that I recommend having a look at the custom Chat Client model used in the Bluetooth: Mesh chat sample, as that one is already made for sending longer messages. The generic on off model, which you build on, is a SIG defined model which is intended for messaging one bit of information (either "on" or "off"), so I would expect the implementation to have restrictions on message length.

    Is there any way to test the throughput of the mesh network?

    I suggest writing an application sending a lot of messages back-on-back, and track how much is sent and received. Please note that there is a restriction of 100 network packets per 10 second sliding window. Large messages (with more than 11 bytes payload) gets segmented into multiple network packets. This means for TX you have a theoretical max (over time) of 10 packets per second.

    When I use a button to control information transmission, such as pressing it once to send an "on/off" command to the target node along with a segment of data, I encounter the following err  when I quickly press the button twice (with an interval of less than 500ms), as shown in the diagram below. What could be the issue here? Is it possible to minimize this interval time as much as possible?

    There is a restriction that you can only send one segmented message at a time, to the same address. So if you already are in the process of sending one segmented message, you must wait for the message to have been sent before you send the next one. Accounting for 10 packets per second (on average) or 100 packets in one burst (then waiting for 10 seconds after the first packet sent before one can send another one), you will see that sending long messages may take some time. I am not 100 % sure if this is the reason for that exact message, though.

    I would like to test the packet loss rate of a mesh network at different speeds. How can I accomplish this?

    There is a concept of Heartbeat, for diagnosing Bluetooth mesh networks. This functionality is mandatory for all devices, and implemented in our Bluetooth mesh stacks. By setting up periodic publication of heartbeats on one node and subscribing to those messages on another node, you can then get statistics on the receiving node including number of packets received.

    Regards,
    Terje

  • Hi,

    Thank you Terje,and sorry for responding so late.

    for Q1 Q2 and Q3,Thank you for your response. It was really helpful.

    for Q4

    By setting up periodic publication of heartbeats on one node and subscribing to those messages on another node, you can then get statistics on the receiving node including number of packets received.

    I would like to know how to subscribe to these messages and obtain statistical information. (How should I modify the code in my project?)This may be a rather silly question, but I'm a beginner... :(

    Regards

  • Hi,

    The heartbeat functionality is mandatory for all Bluetooth mesh nodes, and part of the configuration server model. All nodes already has the functionality for it to work. No code change is needed for that.

    To configure heartbeats (both sending and reception), you use the configuration model (which you use for all node configuration.) You can do that from the nRF Mesh app.

    See Heartbeat for more information on Bluetooth mesh heartbeats in nRF Connect SDK.

    Regards,
    Terje

Reply
  • Hi,

    The heartbeat functionality is mandatory for all Bluetooth mesh nodes, and part of the configuration server model. All nodes already has the functionality for it to work. No code change is needed for that.

    To configure heartbeats (both sending and reception), you use the configuration model (which you use for all node configuration.) You can do that from the nRF Mesh app.

    See Heartbeat for more information on Bluetooth mesh heartbeats in nRF Connect SDK.

    Regards,
    Terje

Children
No Data
Related