← Back to context

Comment by kragen

8 days ago

Dropping 10% of packets sounds like a trivial problem to solve. That's not a range that requires fancy things like erasure coding or even SACK; it's easily handled by just retransmitting packets that don't get acknowledged.

You need to track individual subscribers at that point, which uses lots of ram and could use lots of airtime, heuristics like resending until you get 1 reply like Meshtastic don't work well.

If there's receive window timing issues you can't assume two nodes right next two each other will get the same subset of packets most of the time.

My solution is just to resend every message four times, and not bother with protocol layer reliability for BLE at all, the packet rate is low and all the acknowledgements use airtime anyway.

  • There are scalable reliable multicast protocol designs that don't require publishers to track subscriber lists, but you're right that the approach I suggested above would require that.