On 19 October 2015 at 20:31, Aleksandar Kuktin wrote: > I seem to remember IL being more complex than just a UDP with counters > and ACK, which is what I'm - sort of - looking for. > I think you might find Plan 9's rudp is essentially that. Conversations are determined by a generation number; packets are labelled (gen, seq) for seq within a given generation gen; and acks are piggybacked as (agen, aseq) in every packet. The header is just uchar relseq[4]; /* id of this packet (or 0) */ uchar relsgen[4]; /* generation/time stamp */ uchar relack[4]; /* packet being acked (or 0) */ uchar relagen[4]; /* generation/time stamp */ I can't say much about how well it works, because it has been years since I last poked at it, and for my purposes I thought I needed something more elaborate (but I might have been wrong about that). In your case, allowing for implementation bugs, it sounds as though it might work for you, or at least be easily adaptable.