balancer/scheduler is set.
7.1.1. Registration Request
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Registration Req. Type(0x1010)| Size of Registration Req. TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flag Field | Group of Member Data Count | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
. .
. *Array of Group of Member Data Components .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*There will be as many Group of Member Data Components as "Group of
Member Data Count" has specified.
Figure 12
o Flag Field
A. Load Balancer Flag
+ xxxx xxx1 The entity sending this message is the load
balancer.
+ xxxx xxx0 The entity sending this message is an
Application.
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
o Group of Member Data Count: The number of "Group of Member Data"
components immediately following the Registration Request
component.
o Array of Group of Member Data Components: Each "Group of Member
Data" component is immediately followed by Group Data Components
and its Member Data components (as described in Section 6.1). In
the case where several of these "Group of Member Data" components
may be present, the second "Group of Member Data" component only
appears after all of the internal components that are referred to
by the first "Group of Member Data" component are listed. The
format is the same for all subsequent "Group of Member Data"
components in the message.
7.1.2. Registration Reply
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Registration Reply Type(0x1015)| Size of Registration Reply TLV|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Return Code |
+-+-+-+-+-+-+-+-+
Figure 13
o General SASP return codes (0x00 - 0x3F)
* 0x00 Successful
* 0x10 Message not understood
* 0x11 GWM will not accept this message from the sender. Reasons
for this include the following:
a. The message was not sent by a LB and trust flag is off
b. LB attempted to address members of a different LB in the
message
c. Vendor specific criteria for this message type were not met.
o Message-Specific return codes (0x40 - 0xFF)
* 0x40 Member already registered
* 0x44 Duplicate Member in Request
* 0x45 Invalid Group (determined by the GWM)
* 0x50 Invalid Group Name Size (size == 0)
* 0x51 Invalid LB UID Size (size == 0 or > max)
* 0x61 Member is registering itself, but LB hasn’t yet contacted
the GWM. This registration will not be processed.
**The Invalid Group error return code refers to the LB or member
attempting to form a group that the GWM considers invalid. For
example, some GWM vendors may not support the registration of both
System and Application members in the same group. To determine what
can cause a GWM to return this error code, the vendor’s documentation
must be consulted.
7.2. DeRegistration Request and Reply
This exchange happens between the load balancer/scheduler and the
Group Workload Manager as well as between the Group Workload Manager
and the Member to deregister members from a group specified by Group
Name with the Group Workload Manager. Even though deregistrations
can come from either the load balancer/scheduler or the actual
member, member-initiated deregistrations will only be considered if
the Trust flag is set with a Set LB State message.
7.2.1. DeRegistration Request
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|DeRegistration Req.Type(0x1020)|Size of DeRegistration Req. TLV|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flag Field | Reason | Group of Member Data Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. *Array of Group of Member Data Components .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*There will be as many Group of Member Data Components as "Group of
Member Data Count" has specified.
Figure 14
o Flag Field
A. Load Balancer Flag
+ xxxx xxx1 The entity sending this message is the load
balancer.
+ xxxx xxx0 The entity sending this message is an
Application.
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
o Reason: Byte describing the reason for deregistering the group or
instance.
A. SASP-defined Reason Codes (0x00-0x7F)
+ 0x00 No reason given.
+ 0x01 Learned and Purposeful, i.e., a human has deconfigured
this member from the load balancer configuration.
+ 0x80-0xFF Open for vendor specific deregistration reason
codes.
o Group of Member Data Count: The number of "Group of Member Data"
components immediately following the DeRegistration Request
component.
o Array of Group of Member Data Components: Each "Group of Member
Data" component is immediately followed by Group Data Components
and its Member Data components (as described in Section 6.1). In
this case, where several of these "Group of Member Data"
components may be present, the second "Group of Member Data"
component only appears after all of the internal components that
are referred to by the first "Group of Member Data" component are
listed. The format is the same for all subsequent "Group of
Member Data" components in the message.
** If Member Count equals zero in the Group of Member Data component,
the Group Workload Manager will deregister the entire group.
** Recall that the Group Data Component contains both a Unique LB
Identifier field and a Group Name field. If the Group Data component
has no Group Name (GroupData’s Group Name Length==0), the Group
Workload Manager will deregister all groups associated with this load
balancer.
7.2.2. DeRegistration Reply
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DeReg. Reply Type(0x1025) | Size of DeReg. Reply TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Return Code |
+-+-+-+-+-+-+-+-+
Figure 15
o Return Code: A byte return code indicating the status of action
taken.
A. General SASP return codes (0x00 - 0x3F)
+ 0x00 Successful
+ 0x10 Message not understood
+ 0x11 GWM will not accept this message from the sender.
Reasons for this include the following:
a. The message was not sent by a LB and trust flag is off
b. LB attempted to address members of a different LB in the
message
c. Vendor specific criteria for this message type were not
met.
B. Message-Specific return codes (0x40 - 0xFF)
+ 0x41 Application or System not registered
+ 0x42 Unknown Group Name
+ 0x43 Unknown LB UID
+ 0x44 Duplicate Member in Request
+ 0x46 Duplicate Group in Request (for remove all
members/groups requests)
+ 0x51 Invalid LB UID Size (size == 0 or > max)
+ 0x61 Member is deregistering itself, but LB hasn’t yet
contacted the GWM. This deregistration will not be
processed.
7.3. Get Weights Request and Reply
This exchange happens between the load balancer/scheduler and the
Group Workload Manager to get weights for the groups specified in the
list of GroupData objects. In the case of application load balancing
(balancing workloads between applications with the same
functionality), the load balancer would call the Group Workload
Manager every Interval (parameter returned by the Group Workload
Manager below) to get an array of weights and associated members
(e.g., Application1 20, SecondCopyOfApplication 30,
ThirdCopyOfApplication 5). The load balancer then uses these weights
to determine the fashion in which work will be sent to each of the
members. For example, in the case of weighted round robin, the load
balancer/scheduler would then send a request to Application1, the
next to SecondCopyOfApplication, and the next to
ThirdCopyOfApplication. After 15 requests, the load
balancer/scheduler would only send work to Application1 and
SecondCopyOfApplication. After an additional 30 requests, the load
balancer/scheduler would only send requests to
SecondCopyofApplication. After another 10 requests, the load
balancer/scheduler product would start over using the weights of 20,
30, and 5 again; or if the Interval number of seconds have passed,
the load balancer/scheduler would get a new set of weights.
7.3.1. Get Weights Request
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Get Weights Req. Type(0x1030) | Size of Get Weights Req. TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Data Count | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
. .
. *Array of Group Data Components .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*There will be as many Group Data Components as "Group Data Count"
has specified.
Figure 16
o Group Data Count: The number of "Group Data" components
immediately following the Get Weights Request TLV.
o Array of Group Data Components: This array of Group Data
Components lists the groups for which the load balancer wants to
get weights.
** If there is no group name in the Group Data structure of the Get
Weights Request, the load balancer is requesting weights for all
groups registered for the load balancer.
7.3.2. Get Weights Reply
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Get Weights Reply Type(0x1035)| Size of Get Weights Reply TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Return Code | Interval | Group of Weight
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Entry Data Count| |
+-+-+-+-+-+-+-+-+ +
. .
. *Group of Weight Entry Data Components .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* There will be as many Group of Weight Entry Data Components as
"Group of Weight Entry Data Count" has specified.
Figure 17
o Return Code: A byte return code indicating the status of action
taken.
A. General SASP return codes (0x00 - 0x3F)
+ 0x00 Successful
+ 0x10 Message not understood
+ 0x11 GWM will not accept this message from the sender.
Reasons for this include the following:
a. LB attempted to address members of a different LB in the
message
b. Vendor specific criteria for this message type were not
met.
B. Message-Specific return codes (0x40 - 0xFF)
+ 0x42 Unknown Group Name
+ 0x43 Unknown LB UID
+ 0x46 Duplicate Group in Request
+ 0x51 Invalid LB uid Size (size == 0 or > max)
o Interval: These two bytes indicate a recommended polling interval
for the load balancer to use. The Group Workload Manager is
stating that any polling interval smaller than the suggested
interval would probably retrieve values before they have had a
chance to change.
o Group of Weight Entry Data Components: Each "Group of Weight Data"
component is immediately followed by Group Data Components and its
Weight Entry Data components (as described in Section 6.2). In
this case, where several "Group of Weight Data" components may be
present, the second "Group of Weight Data" component only appears
after all of the internal components that are referred to by the
first "Group of Weight Data" component are listed. The format is
the same for all subsequent "Group of Weight Data" components in
the message.
7.4. Send Weights
This exchange happens between the Group Workload Manager and the load
balancer/scheduler to send the new weights for the group specified in
Group Name. This message is unique in that it is the only message
exchange initiated by the Group Workload Manager and the only message
that has no reply. In the case of application load balancing
(balancing workloads between applications with the same
functionality), the Group Workload Manager would message the load
balancer at a possibly dynamic interval (chosen by the Group Workload
Manager) to send an array of weights and associated members (e.g.,
Application1 20, SecondCopyOfApplication 30, ThirdCopyOfApplication
5). The load balancer then uses these weights to determine the
fashion in which work will be sent to each of the members. For
example, in the case of weighted round robin, the load
balancer/scheduler would then send a request to Application1, the
next to SecondCopyOfApplication, and the next to
ThirdCopyOfApplication. After 15 requests, the load
balancer/scheduler would only send work to Application1 and
SecondCopyOfApplication. After another 30 requests, the load
balancer/scheduler would only send requests to
SecondCopyofApplication. After an additional 10 requests, the load
balancer/scheduler product would start over using the weights of 20,
30, and 5 again, if it has not yet received a new set of weights.
The Group Workload Manager only sends this message if the Push flag
has been enabled using a Set Load Balancer State message.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. SASP Header TLV .
. .