Opened 15 months ago
Last modified 14 months ago
#2650 new enhancement
PeerState.java: rework ACK resend logic
Reported by: | jogger | Owned by: | zzz |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | router/transport | Version: | 0.9.43 |
Keywords: | Cc: | ||
Parent Tickets: | Sensitive: | no |
Description
The current ACK resend logic is a leftover from freenet. Randomised resends over 5 minutes help nothing if we want the resend to prevent a 1000 ms timeout on the other end. Any reasonable assumptions about failure rates lead to the choice between 0 and 1 resends. A single resend costs 4 bytes and possibly prevents a retransmit so this seems to be a good choice for typical error rates around 1%.
So I propose to do a single resend with a gap of ACK_FRQUENCY, which will in almost all cases be fast enough to prevent a possible retransmission and avoid being hit by two consecutive packets failing.
Subtickets
Change History (2)
comment:1 Changed 14 months ago by
Status: | new → infoneeded_new |
---|
comment:2 Changed 14 months ago by
Status: | infoneeded_new → new |
---|
This aims at reducing the duplicates received to near zero, as a double ACK should get through at any reasonable rate of packet loss. A quick hack revealed this is in fact possible.
Needs a single unified data structure for all full ACKs noting a send time.
Thus needs to rework nearly all ACK methods in PeerState? as well as modifications to packet builder and ACKsender.
Please point us to the file and line number or method in question