UDPROS Protocol and Lost Packet/Sequencing Algorithms
Dear ROS Community,
My recent adventure into development of a Java based UDPROS protocol left me with some unanswered questions that will be beneficial for the ROS Community to discuss, and create a specification of some sort.
Single Packet Message issues:
- Issue 1: Out of Order message handling.
- Issue 2: Dropped message handling.
Multi-Packet Message issues:
- Issue 1: Dropped Datagram Packets in a single message.
- Issue 2: Out of sequence datagram packet handling.
Issue 3: Timeout before dropping message entirely, or passing on received data with missing packets.
Option 1: Drop entire message immediately if a received datagram contains a new message id, and the preceding multi-packet message is incomplete.
- Option 2: Wait for messages to complete in any/every order until a timeout is reached regardless of order until the entire message is received, and pass message into a topic queue. Drop message if message times out.
Both options have advantages depending on the topic type, and robot requirements. Option 2 requires more processing power and energy usage to maintain timeouts, and Option 2 handles out of sequence/out of order messages/packets. Option 1 performs more quicker/efficiently, at the cost of more lost messages. Both options seem like they could be valuable if they are implemented in the UDPROS API.