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

Severe packet drop on Border Router with certain CoAP packet sizes

Hello,

I asked about this on openthread-users (https://groups.google.com/forum/#!topic/openthread-users/F8_NmMRDOFE) and got redirected here. Generally, I observed a severe packet drop on certain CoAP packet sizes, when using Border Router. I.e. when I was sending packet with about 90 bytes of payload, it was working fine (~99% packet delivery). But with about 100 bytes of payload, not even half of the packets were delivered successfully. If I increased the payload size by another 10 bytes, it started to be reliable again. In my particular case the window was between 94 and 102 bytes (might be dependent on stuff like url length) - any payload of that size was dropped a lot. This was repeated every 127 bytes, so, ~220 bytes payload had the same window of few bytes which big drops were observed.

The scenario was: regular nRF52840 ot-ftd-cli (0.11 Thread SDK) was sending CoAP over radio to NCP (ot-ftd-ncp), which was in turn handled on the linux side of the border router. Node-node communication had not triggerred this problem.

For more details please refer to the openthread-users.

Any suggestions / insights?

Parents
  • Hello Nopik,

    Thanks for detailed analysis. We will try to reproduce this issue on our side. I have couple questions though:

    1) What do you mean by e.g. 90 bytes of payload - CoAP Payload, CoAP Payload + CoAP Header (including URIs) or size of 15.4 frame?

    2) Did you try to reproduce this issue on posix simulator?

    3) You mentioned on openthread-users forum that you use NCP over USB. Is it native USB or J-Link emulated UART over USB? If the first one, could you try reproduce the problem using UART? Although, i don't think that problem is located there.

    4) Can you reproduce this issue using regular ICMP Echo Req/Rsp? If you see it only using CoAP, it would suggest that root cause may be located in CoAP implementation.

    Regards,
    Łukasz

Reply
  • Hello Nopik,

    Thanks for detailed analysis. We will try to reproduce this issue on our side. I have couple questions though:

    1) What do you mean by e.g. 90 bytes of payload - CoAP Payload, CoAP Payload + CoAP Header (including URIs) or size of 15.4 frame?

    2) Did you try to reproduce this issue on posix simulator?

    3) You mentioned on openthread-users forum that you use NCP over USB. Is it native USB or J-Link emulated UART over USB? If the first one, could you try reproduce the problem using UART? Although, i don't think that problem is located there.

    4) Can you reproduce this issue using regular ICMP Echo Req/Rsp? If you see it only using CoAP, it would suggest that root cause may be located in CoAP implementation.

    Regards,
    Łukasz

Children
  • 1) I was talking about CoAP payload, using code like this, values I referred to were `aDataLength`:

    ```

    messagePtr = otCoapNewMessage(...);
    otMessageAppend(messagePtr, aData, aDataLength); // aDataLength was variable here
    otCoapSendRequest(...)

    ```

    2) No, I didn't tried. The codebase I was using originally started from cli app, but had some deps added later on and it wasn't easy for me to try that code on a posix build.

    3) I was using USB CDC-ACM mode. At the moment I don't have the setup for this on my desk, but later I will try to use UART as well.

    4) Well, my understanding is that the root cause *is* in CoAP implementation (or border router/ncp), not related at all to nRF.  Though until proved, that is only a hunch.

Related