UNICAST: use actual retransmission values for timeouts
------------------------------------------------------
Key: JGRP-1044
URL:
https://jira.jboss.org/jira/browse/JGRP-1044
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.9
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
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira