Chuck Rolke created DISPATCH-525:
------------------------------------

             Summary: What are proper names and units for protocol 
configuration settings?
                 Key: DISPATCH-525
                 URL: https://issues.apache.org/jira/browse/DISPATCH-525
             Project: Qpid Dispatch
          Issue Type: Improvement
          Components: Management Agent
    Affects Versions: 0.7.0
            Reporter: Chuck Rolke


Several settings are available in configuration objects that are used in AMQP 
negotiations with clients. Some of them are confusing as they exist now and 
could be redefined to make their understanding and usage easier for end users. 
The same settings are defined for Router Listener and Connector and for Policy 
Vhost objects.

||Setting||Units||Range||
|maxFrameSize|octets|uint|
|maxSessions|sessions|uint16|
|maxSessionWindow|octets|uint|
|maxMessageSize *not implemented*|octets|uint|
|linkCapacity|messages|integer|

These settings have to work in cooperation with the proton engine interface.

h2. maxFrameSize

This setting is straightforward. The range is 0..ULONG_MAX.

Using octets is fine. This value must be 512 or larger per AMQP spec.

h4. Proposal

Leave this setting unchanged.

h2. maxSessions

This setting is in units of 'sessions'. The acceptable values are in the range 
1..65536. 

The number given in the configuration is one larger than the value used by AMQP 
and proton. In AMQP the channel-max value of an Open is the largest channel 
number that can be used. So a channel-max of 0 allows one session, and a value 
of 1 allows two sessions, and so on.

I prefer to have the spec values be equal to the number of sessions allowed.
* Dispatch code subtracts one from the specified value and puts it into proton 
channel-max. 
* A value of zero in the spec can be disallowed or it can mean some default 
value.

h4. Proposal

Leave this setting unchanged.

h2. maxSessionWindow

This setting is in octets. The range is 0..ULONG_MAX with a minimum of 
max-frame-size octets.

This setting is slightly confusing as the specification is in octets. Then that 
value of octets is passed to proton in pn_session_set_incoming_capacity. Proton 
divides the incoming_capacity by the max-frame-size and uses the result in a 
Begin incoming-window. The incoming-window then is measured in transfer frames. 
For example:

* maxFrameSize = 65,536.
* maxSessionWindow = 1,000,000.

Dividing (1000000 / 65536) = 15 frames. The 15 is used in the 
Begin/incoming-window field during negotiation with the peer.

A user expecting to have about a megabyte of buffering on the session might be 
surprised to find all the buffering consumed by 15 100-byte transfer frames.

h4. Proposal

* Rename this setting to *maxSessionFrames*.
* Change this setting's units of 'transfer frame'. Then the value sent to 
proton in incoming_capacity would be calculated by (maxSessionFrames * 
maxFrameSize). The value of maxSessionFrames would then appear in the 
Begin/incoming-window field.

h2. maxMessageSize

This setting is in octets. The range is 0..ULONG_MAX. 

This setting is TBD. No interface in proton engine is available to change it. 
If this value is zero or, more typically, not set then there is no maximum 
message size.

h4. Proposal

Leave this setting unchanged.

h2. linkCapacity

This setting is in transfer frames. The range is 0..LONG_MAX.

This setting defines how much credit is issued on links created on a 
connection. It specifies how many transfers can be in-flight concurrently for 
each link.

This setting is for Listener and Connector objects only. It is not defined for 
Policy Vhost objects.

h4. Proposal

* Leave the units and current meaning of this setting unchanged. 
* Add this value to the Policy Vhost settings so that it may be overridden on a 
Vhost Usergroup basis.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to