-
Feature Request
-
Resolution: Duplicate
-
Major
-
None
-
None
In NAKACK, we already have use_stats_for_retransmission. Implement the same in UNICAST:
Every AckSenderWindow maintains AVG_XMIT_TIME (a double) which is a rolling average of the retransmission times (diff between sending a message and receiving its ACK). Once we have AVG_XMIT_TIME, we schedule retransmission tasks to be AVG_XMIT_TIME + CONST. CONST should be a few millisconds, but could also be 0.
The rolling average should start with an initial value (say 30ms), and then add the diff between sending of a message and reception of its ACK, for each ACK received, divided by the number of values. More recent values should be weighted higher, so we have a decay of values over time. We could make this simple by having a bounded number of values, e.g. the last 1000 values.
So, assuming a CONST of 10, if we have a rolling average of 350ms to member B, then we would schedule retransmission of our messages to B to 360ms. If the avg drops down to 30, we'd retransmit in 40. If it increases to 2300, we'd go to 2310 etc
- duplicates
-
JGRP-1053 UNICAST: set retransmission timeout based on actual retransmission times
- Open