This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Prioritizing MLE traffic on nRF52840 board

I'm writing an application that transmits data over a mesh network of nRF52840 microcontrollers using OpenThread.  I'd like the microcontrollers to prioritize sending MLE traffic over user/application data.  Is there a way to set priorities for different types of network traffic?  I'm using the nRF Connect SDK.  Thanks!

Parents
  • Hello,

    I don't think there is any option to prioritize messages like this in openthread. These networks aren't really written for a lot of throughput. Are you seeing that the throughput of your network is strangulating the MLE packages?

    BR,

    Edvin

  • Yeah, I've seen that problem - I think I'm pushing the limits of throughput on my network, but I'd like to stick with OpenThread if possible.  After some more research, I ran across this otMessagePriority in the OpenThread docs: https://openthread.io/reference/group/api-message.  Has this been excluded from Nordic's implementation?

  • It doesn't look like it is excluded. I wasn't aware. Have you tested it? I am not sure how this is used. Whether it is used to prioritize what messages to send from one device or whether it is used to prioritize messages in the network in total. I don't imagine it is the last one, since another device can't know whether or not to hold on it's packet, because it doesn't know whether other nodes have any more important messages.

    All nodes in a thread network will listen in to check that there are no ongoing messages before they transmit themselves. So if another node is spamming the network at all times, it will not find a slot to send the message, regardless of that message's priority. At least as far as my understanding goes.

  • Thanks for your reply; I haven't had the chance to properly test the otMessagePriority enumeration, but I wanted to update this ticket to add that I found that in mle.cpp, NewMleMessage creates messages with a priority level of kPriorityNet, which is a level higher than OT_MESSAGE_PRIORITY_HIGH.  So I believe the answer to my original question is that MLE messages are already prioritized over other messages, unless otherwise specified.

Reply
  • Thanks for your reply; I haven't had the chance to properly test the otMessagePriority enumeration, but I wanted to update this ticket to add that I found that in mle.cpp, NewMleMessage creates messages with a priority level of kPriorityNet, which is a level higher than OT_MESSAGE_PRIORITY_HIGH.  So I believe the answer to my original question is that MLE messages are already prioritized over other messages, unless otherwise specified.

Children
No Data
Related