A simple reliability layer for UDP-based protocols