]> git.meshlink.io Git - utcp/commit
Add a receive buffer.
authorGuus Sliepen <guus@meshlink.io>
Sun, 18 Oct 2015 11:53:20 +0000 (13:53 +0200)
committerGuus Sliepen <guus@sliepen.org>
Sun, 2 Jul 2017 10:03:10 +0000 (12:03 +0200)
commitfb2d3fbb1fe0538ef0f137ed88322f5b3de4707f
treea1e669c5b3f11fb5680f14a989f945cbaa1f859a
parent3c10b4a62f71cdc92e7dea3ace931ec1f497a660
Add a receive buffer.

The receive buffer kicks in the moment we get a packet which is out of order.
We store the packet in the buffer, and keep track of up to 4 ranges of bytes
of received data. When retransmission fills the first gap, we send all the
buffered data (up to the second gap if applicable) to the application.

4 byte ranges seems to be a good value for up to moderate (20%) packet loss.
This algorithm greatly reduces the amount of useless packets being sent.
A future improvement is sending the SACK information in the ACK packets,
so the congestion window can be kept large while avoiding packets being
resent unnecessarily.
utcp.c
utcp.h
utcp_priv.h