[jboss-jira] [JBoss JIRA] Commented: (JGRP-1105) UNICAST: don't send retransmission messages individually

Bela Ban (JIRA) jira-events at lists.jboss.org
Wed Dec 2 02:34:29 EST 2009


    [ https://jira.jboss.org/jira/browse/JGRP-1105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12497635#action_12497635 ] 

Bela Ban commented on JGRP-1105:
--------------------------------

OK, here's what we can do:

We create new SeqnoRanges every N milliseconds, e.g. all seqnos added in T=0-30ms go into range 1, 31-60ms go into range 2 and so on.

When a seqno is received and the current time - last_time is > MAX_TIME, we create a new range and add the seqno to the range. Ditto when the current range's size is exceeded.

Algorithm:

add(seqno):
- if current range has all received and size not exceeded:
    - add to current range (reuse that range)
    - start the retransmission task (with a new TIMEOUTS copy)
else if not all received and time - last_time > MAX_TIME or size exceeded:
    - create new SeqnoRange (current range)
    - set last_time = time
- If retransmission task is not running: start retransmission task
- add seqno to current range

Task run:
- retransmit all missing messages
- If all received: cancel the task

TODO:
- when do we remove a range and retransmission task ?


> UNICAST: don't send retransmission messages individually
> --------------------------------------------------------
>
>                 Key: JGRP-1105
>                 URL: https://jira.jboss.org/jira/browse/JGRP-1105
>             Project: JGroups
>          Issue Type: Feature Request
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 2.9
>
>
> Essentially the same as for NAKACK: instead of adding every message to the retransmitter and creating 1 timer task for it, we create SeqnoRanges in increments of (say) 1000 messages. SeqnoRange #1 is 1-1000, #2 is 1001-2000 and so on.
> Every SeqnoRange has a low and a high, e.g. lo=1 and high=1000. However, we only retransmit messages with their bit set to 0 from low to bits.length: if we added messages 1-100 to the first range, then low=1, length=100 and high=1000. We only retransmit from 1-100.
> This creates 1 task in the timer for 1000 messages, instead of 1000 tasks ! When adding a new message (e.g. 101), length() gets automatically adjusted, so retransmission will include 1-101 (only the 0 bits of course).

-- 
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

        



More information about the jboss-jira mailing list