NB-IoT packet loss

I'm testing a simple application based on the UDP/CoAP example.  It samples some peripherals and ADC channels, these values are then packed into a CoAP message. This CoAP message is sent trough the socket api (UDP), and the application waits for a response. I've run some tests using different power saving settings. The current version uses PSM in between samples and uses RAI to prevent long time spent in the 'active timer'.

A observation we made after analyzing the logs is the high rate of timeouts/packet loss. We declare a packet lost if the uplink CoAP packet, or the downlink CoAP ACK message is lost. We got a packet loss of around 3% over around 1000 messages (multiple devices, connected to the same cell). Questions:

  • I known UDP is a unreliable protocol by design, but I'm wondering what packet loss numbers I should expect? What numbers are other users experiencing?
  • Is there some way to identify the cause of these lost packets, using the PCAP/modem log files for example?

The devices all have a Taoglas MFX3 antenna connected, the RSSI is around -85dBm (%CESQ: 54,2,21,3).

Parents
  • If you write "timeouts/packet loss.", do you use CON requests? Or NON? (And of course, which client implementation?)

    In my experience with NB-IoT 3% seems to be quite large. So may be there are some other reasons for that.

    One common cause would be some "timing details" using RAI and/or PSM. If the CoAP layer send a message, the modem just start the sending. it takes sometimes a couple of seconds until that message is really send. I use therefore LTE_LC_EVT_RRC_UPDATE - LTE_LC_RRC_MODE_CONNECTED to start the timer for retransmission or response timeout. Also, if the timeout get larger and your device gets in LTE_LC_RRC_MODE_IDLE, you may need some extra time (I use 3s), in order to really receive the response.

    With that, using CON, my retransmission rate is less than 1% and the failure rate is close to 0.

Reply
  • If you write "timeouts/packet loss.", do you use CON requests? Or NON? (And of course, which client implementation?)

    In my experience with NB-IoT 3% seems to be quite large. So may be there are some other reasons for that.

    One common cause would be some "timing details" using RAI and/or PSM. If the CoAP layer send a message, the modem just start the sending. it takes sometimes a couple of seconds until that message is really send. I use therefore LTE_LC_EVT_RRC_UPDATE - LTE_LC_RRC_MODE_CONNECTED to start the timer for retransmission or response timeout. Also, if the timeout get larger and your device gets in LTE_LC_RRC_MODE_IDLE, you may need some extra time (I use 3s), in order to really receive the response.

    With that, using CON, my retransmission rate is less than 1% and the failure rate is close to 0.

Children
No Data
Related