Q-Block: Better timing / recovering when rate limiting#1976
Conversation
Make use of an outstanding list of blocks to transmit to remove duplicates and only send one at a time if rate-limiting.
|
Thanks a lot for putting this together. The queue-based approach looks much cleaner than mine — handling duplicates at the data structure level instead of the call flow makes a lot of sense, and it should resolve the timer interaction concerns you mentioned earlier as well. I'll test #1976 against my Contiki-NG / 6TiSCH setup with rate limiting under various packet loss scenarios and report back as soon as I have results. |
|
Hi Jon, here are my test results against my Contiki-NG / 6TiSCH setup with -I 60 rate limiting and %0-20 induced packet loss on a 43-block payload. Quick disclaimer: during testing I also have a couple of local changes on top of your branch (NON_TIMEOUT increased from 2s to 8s, NON_RECEIVE_TIMEOUT from 4s to 16s, and STATE_MAX_BLK_CNT_BITS set to a larger value for shorter tokens in my constrained setup). I tried to identify behaviors that don't seem to depend on those values, but please factor in this context. I observed three behaviors that may indicate bugs, and one possible off-by-one I'd like to flag for verification:
Happy to share full logs for any of these or run additional scenarios you'd like to see. Thanks again for the queue-based redesign — the overall recovery behavior in this PR is significantly cleaner than before. |
|
Thanks for doing this testing and coming back with the information. I have started to look at how to address them - I had missed them due to the shorter default timeouts. |
Make use of an outstanding list of blocks to transmit to remove duplicates and only send one at a time if rate-limiting.