Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1044

UNICAST: use actual retransmission values for timeouts

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Duplicate
    • Icon: Major Major
    • 2.9
    • None
    • None
    • 0
    • 0% 0%

      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

            rhn-engineering-bban Bela Ban
            rhn-engineering-bban Bela Ban
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: