[ 
https://issues.apache.org/jira/browse/DISPATCH-781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16035052#comment-16035052
 ] 

Ted Ross commented on DISPATCH-781:
-----------------------------------

Notes on how this feature works:

The routing protocol has been enhanced such that the routers each track the 
following data for each mobile address:
  - Number of incoming links
  - Aggregate capacity for outgoing links

You can see the result of this synchronization from each router's point of view 
by using "qdstat -f".  This will show, for each address, the local in-links and 
out-capacity as well as the remote in-links and out-capacity.
This data is used to compute a target-credit value for each address.  The rules 
for computing target-credit are as follows:
  - if total-out-capacity == 0, target-credit = 0
  - if total-out-capacity <= total-in-links, target-credit = 1
  - else target-credit = total-out-capacity / total-in-links

The target-credit is also shown by "qdstat -f"

When an incoming link (from a sender) is established, it's credit-window is 
set.  The credit-window is the minimum of the address's target-credit and the 
link's capacity.  The capacity on incoming links is now used as a maximum for 
the number of credits that may be simultaneously issued on that link.

Each time the target-credit is adjusted (because total-in-links and/or 
total-out-capacity changed), each of the incoming links is revisited and the 
links' credit-window values are adjusted.

If a link's credit-window is increased, the additional credit is issued to the 
peer immediately.

If a link's credit-window is decreased, the link is annotated with a 
credit-deficit.  This deficit value is decremented in lieu of issuing 
replacement credits and serves to allow the in-effect credit-window to drift 
down to the target as deliveries are settled.  Credit is never revoked nor 
drained.  It is simply not replenished in the correct quantity to effect the 
credit decrease.

> Experimental - Tie end-to-end flow control of message-routed deliveries to 
> outgoing capacity
> --------------------------------------------------------------------------------------------
>
>                 Key: DISPATCH-781
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-781
>             Project: Qpid Dispatch
>          Issue Type: Improvement
>          Components: Router Node, Routing Engine
>            Reporter: Ted Ross
>            Assignee: Ted Ross
>
> This feature reverses the management of incoming credit for message-routed 
> deliveries.
> The current mechanism is based on the the capacity of the incoming 
> (sender-client) links.  Each attached sender is given credit equal to the 
> configured link capacity regardless of the capacity of outgoing 
> (receiver-client) links for the same address.  This means that even under 
> congestion, a newly attached sender will get full capacity credit to send.
> The proposed mechanism is based not on incoming capacity but on outgoing 
> capacity.  In this case, the senders are provided a share of the total 
> outgoing capacity for an address.  As the number of incoming links (senders) 
> for an address changes and the total capacity for outgoing links changes, the 
> credit window of the senders shall be adjusted.
> The proposal is a heuristic approach.  It does not revoke credit from senders 
> (but will limit the number of credits that are replenished).  It will also 
> not deny credit if there are more incoming links than outgoing capacity.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to