Network Working Group A. Bivens Request for Comments: 4678 IBM Research Category: Informational September 2006
Network Working Group A. Bivens Request for Comments: 4678 IBM Research Category: Informational September 2006
Server/Application State Protocol v1
服务器/应用程序状态协议v1
Status of This Memo
关于下段备忘
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
本备忘录为互联网社区提供信息。它没有规定任何类型的互联网标准。本备忘录的分发不受限制。
Copyright Notice
版权公告
Copyright (C) The Internet Society (2006).
版权所有(C)互联网协会(2006年)。
IESG Note
IESG注释
This RFC is not a candidate for any level of Internet Standard. The IETF disclaims any knowledge of the fitness of this RFC for any purpose and in particular notes that the decision to publish is not based on IETF review for such things as security, congestion control, or inappropriate interaction with deployed protocols. The RFC Editor has chosen to publish this document at its discretion. Readers of this document should exercise caution in evaluating its value for implementation and deployment. See RFC 3932 for more information.
本RFC不适用于任何级别的互联网标准。IETF不承认本RFC适用于任何目的的任何知识,特别注意到,发布决定并非基于IETF对安全、拥塞控制或与已部署协议的不当交互等事项的审查。RFC编辑已自行决定发布本文件。本文档的读者在评估其实施和部署价值时应谨慎。有关更多信息,请参阅RFC 3932。
Abstract
摘要
Entities responsible for distributing work across a group of systems traditionally do not know a great deal about the ability of the applications on those systems to complete the work in a satisfactory fashion. Workload management systems traditionally know a great deal about the health of applications, but have little control over the rate in which these applications receive work. The Server/Application State Protocol (SASP) provides a mechanism for load balancers and workload management systems to communicate better ways of distributing the existing workload to the group members.
负责在一组系统之间分配工作的实体通常不太了解这些系统上的应用程序以令人满意的方式完成工作的能力。传统上,工作负载管理系统非常了解应用程序的运行状况,但对这些应用程序接收工作的速率几乎没有控制权。服务器/应用程序状态协议(SASP)为负载平衡器和工作负载管理系统提供了一种机制,以更好地将现有工作负载分配给组成员。
Table of Contents
目录
1. Introduction ....................................................3 1.1. Overview ...................................................3 1.2. Identities .................................................4 2. Requirements Notation ...........................................4 3. Conventions Used in This Document ...............................4 4. General Message Structure .......................................4 4.1. TLV Structure ..............................................6 4.2. Component Types ............................................6 4.3. SASP Protocol Header .......................................7 4.4. Version Negotiation ........................................8 5. Singular Protocol Components ....................................9 5.1. Member Data Component ......................................9 5.2. Group Data Component ......................................11 5.3. Weight Entry Data Component ...............................12 5.4. Member State Instance Component ...........................14 6. Group Protocol Components ......................................15 6.1. Group of Member Data Component ............................15 6.2. Group of Weight Data Component ............................16 6.3. Group of Member State Data Components .....................17 7. Protocol Messages ..............................................17 7.1. Registration Request and Reply ............................18 7.1.1. Registration Request ...............................18 7.1.2. Registration Reply .................................19 7.2. DeRegistration Request and Reply ..........................20 7.2.1. DeRegistration Request .............................21 7.2.2. DeRegistration Reply ...............................22 7.3. Get Weights Request and Reply .............................23 7.3.1. Get Weights Request ................................24 7.3.2. Get Weights Reply ..................................25 7.4. Send Weights ..............................................26 7.5. Set Member State Request and Reply ........................27 7.5.1. Set Member State Request ...........................28 7.5.2. Set Member State Reply .............................29 7.6. Set Load Balancer State Request and Reply .................30 7.6.1. Set LB State Request ...............................30 7.6.2. Set LB State Reply .................................32 8. Example of SASP Message Encoding ...............................32 9. Protocol Flow ..................................................37 9.1. Normal Protocol Flow ......................................37 9.2. Behavior in Error Cases ...................................39 9.3. Example Flow 1: Load Balancer Registration, Getting Weights, and Application-Side Quiescing ...........41 9.4. Example Flow 2: Set Load Balancer State, Application Registration, and Load Balancer Group DeRegistration ......43 9.5. Avoiding Single Points of Failure .........................44
1. Introduction ....................................................3 1.1. Overview ...................................................3 1.2. Identities .................................................4 2. Requirements Notation ...........................................4 3. Conventions Used in This Document ...............................4 4. General Message Structure .......................................4 4.1. TLV Structure ..............................................6 4.2. Component Types ............................................6 4.3. SASP Protocol Header .......................................7 4.4. Version Negotiation ........................................8 5. Singular Protocol Components ....................................9 5.1. Member Data Component ......................................9 5.2. Group Data Component ......................................11 5.3. Weight Entry Data Component ...............................12 5.4. Member State Instance Component ...........................14 6. Group Protocol Components ......................................15 6.1. Group of Member Data Component ............................15 6.2. Group of Weight Data Component ............................16 6.3. Group of Member State Data Components .....................17 7. Protocol Messages ..............................................17 7.1. Registration Request and Reply ............................18 7.1.1. Registration Request ...............................18 7.1.2. Registration Reply .................................19 7.2. DeRegistration Request and Reply ..........................20 7.2.1. DeRegistration Request .............................21 7.2.2. DeRegistration Reply ...............................22 7.3. Get Weights Request and Reply .............................23 7.3.1. Get Weights Request ................................24 7.3.2. Get Weights Reply ..................................25 7.4. Send Weights ..............................................26 7.5. Set Member State Request and Reply ........................27 7.5.1. Set Member State Request ...........................28 7.5.2. Set Member State Reply .............................29 7.6. Set Load Balancer State Request and Reply .................30 7.6.1. Set LB State Request ...............................30 7.6.2. Set LB State Reply .................................32 8. Example of SASP Message Encoding ...............................32 9. Protocol Flow ..................................................37 9.1. Normal Protocol Flow ......................................37 9.2. Behavior in Error Cases ...................................39 9.3. Example Flow 1: Load Balancer Registration, Getting Weights, and Application-Side Quiescing ...........41 9.4. Example Flow 2: Set Load Balancer State, Application Registration, and Load Balancer Group DeRegistration ......43 9.5. Avoiding Single Points of Failure .........................44
10. Security Considerations .......................................45 11. Normative References ..........................................46 Appendix A. Acknowledgements ......................................47
10. Security Considerations .......................................45 11. Normative References ..........................................46 Appendix A. Acknowledgements ......................................47
The Server/Application State Protocol is designed to enable load balancers or schedulers (1) to receive traffic weight recommendations from Workload Managers, (2) to register with Workload Managers members of load balancing/scheduling groups, and (3) to enable Workload Managers to suggest new load balancing group members to load balancers and schedulers
服务器/应用程序状态协议旨在使负载平衡器或调度程序(1)能够从工作负载管理器接收流量权重建议,(2)向工作负载管理器注册负载平衡/调度组的成员,以及(3)使工作负载管理器能够向负载平衡器和调度器建议新的负载平衡组成员
The figure below shows where the SASP entities are in typical load balancing topology.
下图显示了SASP实体在典型负载平衡拓扑中的位置。
---------- | Group | -------->|Member 1|<--| | ---------- | | | --------- ---------- | ---------- | |Request|<------>| Load |---| | Group | | |Origins|<------>|Balancer|----------->|Member 2|<--| --------- | |---| ---------- | ---------- | | ^ | ---------- | | -------->| Group | | SASP | |Member 3|<--| ------- ---------- | | | | -------------------- | | | Group | SASP | ------>| Workload Manager |<---------- --------------------
---------- | Group | -------->|Member 1|<--| | ---------- | | | --------- ---------- | ---------- | |Request|<------>| Load |---| | Group | | |Origins|<------>|Balancer|----------->|Member 2|<--| --------- | |---| ---------- | ---------- | | ^ | ---------- | | -------->| Group | | SASP | |Member 3|<--| ------- ---------- | | | | -------------------- | | | Group | SASP | ------>| Workload Manager |<---------- --------------------
Figure 1
图1
SASP is a binary protocol that facilitates communication from load balancers/schedulers to Workload Managers. The connection between the Group Workload Manager (GWM) and the load balancer/scheduler is expected to be a long-running TCP connection. In SASP interactions, the GWM acts as a SASP server waiting to receive connections from the other SASP components. Server port 3860 has been registered with the IANA for SASP communications. It is expected that all SASP components are configured with the DNS name of the GWM to develop
SASP是一种二进制协议,用于促进从负载平衡器/调度器到工作负载管理器的通信。组工作负载管理器(GWM)与负载平衡器/调度程序之间的连接应为长时间运行的TCP连接。在SASP交互中,GWM充当SASP服务器,等待从其他SASP组件接收连接。服务器端口3860已向IANA注册用于SASP通信。预计所有SASP组件都配置了GWM的DNS名称来开发
this connection. Security in SASP is handled by transporting binary messages over Secure Socket Layer/Transport Layer Security (SSL/TLS). This document only describes the message format and protocol behavior above the connection and security layers. Connection and security aspects including SSL's authentication and encryption will be implementation specific.
这个连接。SASP中的安全性是通过在安全套接字层/传输层安全性(SSL/TLS)上传输二进制消息来处理的。本文档仅描述连接层和安全层之上的消息格式和协议行为。连接和安全方面(包括SSL的身份验证和加密)将是特定于实现的。
SASP identifies a load balancer by a UTF-8 string called a "LB UID". A group of "equivalent" servers providing a service is identified by a UTF-8 string called a "Group Name", which is interpreted in the context of the LB UID. A server is identified by its IP address and (optional) port and protocol numbers. A GWM is only identified implicitly as the entity on the other end of the TCP connection from a load balancer or group member. All of these identifiers are local; there are no globally unique identifiers. The LB UID and GroupName fields are unstructured so that components could assign values to these fields that are meaningful to an administrator. For example, in many cases, a load balancer would use the name an administrator provided for the serverfarm group as the groupname in a SASP-specified group. Since the naming options in industry load balancers do not carry explicit naming restrictions, SASP naming options also carry no naming restrictions.
SASP通过一个名为“LB UID”的UTF-8字符串标识负载平衡器。提供服务的一组“等效”服务器由一个名为“组名”的UTF-8字符串标识,该字符串在LB UID的上下文中解释。服务器由其IP地址和(可选)端口和协议号标识。GWM仅隐式标识为来自负载平衡器或组成员的TCP连接另一端的实体。所有这些标识符都是本地的;没有全局唯一标识符。LB UID和GroupName字段是非结构化的,因此组件可以为这些字段分配对管理员有意义的值。例如,在许多情况下,负载平衡器会使用管理员为serverfarm组提供的名称作为SASP指定组中的groupname。由于行业负载平衡器中的命名选项没有明确的命名限制,因此SASP命名选项也没有命名限制。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。
o Load Balancer - Entity responsible for distributing requests amongst the available members.
o 负载平衡器—负责在可用成员之间分发请求的实体。
o Member - Machine, process, or application used to service requests.
o 成员-用于服务请求的计算机、进程或应用程序。
o Group Workload Manager (GWM) - Entity responsible for reporting or managing a group of members on multiple machines.
o 组工作负载管理器(GWM)-负责报告或管理多台计算机上的一组成员的实体。
Any string interpreted by the group workload manager is assumed to use UTF8. Components implementing SASP MUST support the printable ASCII subrepertoire of UTF8 (0x20-0x7E). Components MAY also choose to provide support for additional UTF8 character encodings. It is
假定组工作负载管理器解释的任何字符串都使用UTF8。实现SASP的组件必须支持UTF8(0x20-0x7E)的可打印ASCII子目录。组件也可以选择提供对额外UTF8字符编码的支持。它是
recommended that customers using SASP-enabled products configure the string-generating components (load balancers and group members) to use the same character repertoire.
建议使用支持SASP的产品的客户将字符串生成组件(负载平衡器和组成员)配置为使用相同的字符库。
Many of the SASP structures involve the transfer of multi-byte integer values. In all cases where multi-byte integer values are used, they are considered to be in network-byte order (big-endian).
许多SASP结构涉及多字节整数值的传输。在使用多字节整数值的所有情况下,它们都被视为网络字节顺序(big-endian)。
SASP is organized into several message components. For extendibility and ease of processing, each message component is described in a TLV (Type, Length, Value) format. An illustration of the SASP structure can be found in the example below. The first section is the header followed by the message component type. As mentioned, the header, message component, and all other components have a TLV format. Each component value contains a variable number of fields, some of which refer to upcoming components (explained component descriptions are in upcoming sections). After the first message component, any number of additional components may be included (as stipulated in the fields of the message type).
SASP被组织成几个消息组件。为了便于扩展和处理,每个消息组件都以TLV(类型、长度、值)格式描述。下面的示例中可以找到SASP结构的说明。第一部分是消息头,后面是消息组件类型。如前所述,标头、消息组件和所有其他组件都具有TLV格式。每个组件值都包含数量可变的字段,其中一些字段涉及即将出现的组件(将在后续章节中解释组件说明)。在第一个消息组件之后,可以包括任意数量的附加组件(如消息类型字段中的规定)。
------------------------------------------------- | |T| Type (SASP Header Type) | | SASP |----------------------------------| | Header |L| Length of SASP header TLV | | |----------------------------------| | |V| Header fields | |-----------------------------------------------| | |T| Type (Message Type) | | Message |----------------------------------| | Type |L| Length of this Message Type TLV| | Component |----------------------------------| | |V| Component fields | |-----------------------------------------------| | |T| Type (Component Type) | | |----------------------------------| |Component-1 |L| Length of this TLV | | |----------------------------------| | |V| Component fields | |-----------------------------------------------| | ... | |-----------------------------------------------| | |T| Type (Component Type) | | |----------------------------------| |Component-n |L| Length of this TLV | | |----------------------------------| | |V| Component fields | -------------------------------------------------
------------------------------------------------- | |T| Type (SASP Header Type) | | SASP |----------------------------------| | Header |L| Length of SASP header TLV | | |----------------------------------| | |V| Header fields | |-----------------------------------------------| | |T| Type (Message Type) | | Message |----------------------------------| | Type |L| Length of this Message Type TLV| | Component |----------------------------------| | |V| Component fields | |-----------------------------------------------| | |T| Type (Component Type) | | |----------------------------------| |Component-1 |L| Length of this TLV | | |----------------------------------| | |V| Component fields | |-----------------------------------------------| | ... | |-----------------------------------------------| | |T| Type (Component Type) | | |----------------------------------| |Component-n |L| Length of this TLV | | |----------------------------------| | |V| Component fields | -------------------------------------------------
Figure 2
图2
An illustration of the TLV format is shown below. The Type is a two-byte field containing a binary value for the component type. The Length is a two-byte field containing the size of the TLV in bytes (including the Type and Length fields). The Value field is a variable-length field that actually contains the data of the component.
TLV格式的图示如下所示。类型是一个双字节字段,包含组件类型的二进制值。长度是一个双字节字段,包含TLV的大小(以字节为单位)(包括类型和长度字段)。“值”字段是一个可变长度字段,实际包含组件的数据。
< xxxx xxxx xxxx xxxx, xxxx xxxx xxxx xxxx, xxxx...........xxxx > |-----------------| |-----------------| |-----------------| Type(2 bytes) Length(2 bytes) Value(variable)
< xxxx xxxx xxxx xxxx, xxxx xxxx xxxx xxxx, xxxx...........xxxx > |-----------------| |-----------------| |-----------------| Type(2 bytes) Length(2 bytes) Value(variable)
Figure 3
图3
The TLV structure requires a type value for each protocol component. All SASP types are listed in this section.
TLV结构要求每个协议组件具有一个类型值。本节列出了所有SASP类型。
Reserved 0x0000-0x1000
保留0x0000-0x1000
Message Types
消息类型
Registration Request 0x1010
注册请求0x1010
Registration Reply 0x1015
注册回复0x1015
DeRegistration Request 0x1020
注销请求0x1020
DeRegistration Reply 0x1025
注销回复0x1025
Get Weights Request 0x1030
获取权重请求0x1030
Get Weights Reply 0x1035
获取权重回复0x1035
Send Weights 0x1040
发送权重0x1040
Set Load Balancer State Request 0x1050
设置负载平衡器状态请求0x1050
Set Load Balancer State Reply 0x1055
设置负载平衡器状态应答0x1055
Set Member State Request 0x1060
设置成员国请求0x1060
Set Member State Reply 0x1065
设置成员国回复0x1065
Utility Component Types
实用程序组件类型
SASP Header 0x2010
SASP头0x2010
Singular Component Types
奇异元件类型
Member Data 0x3010
成员数据0x3010
Group Data 0x3011
组数据0x3011
Weight Entry Data 0x3012
重量输入数据0x3012
Member State Instance 0x3013
成员国实例0x3013
Group Component Types
组组件类型
Group of Member Data 0x4010
成员数据组0x4010
Group of Weight Entry Data 0x4011
重量输入数据组0x4011
Group of Member State Data 0x4012
成员国数据组0x4012
Reserved 0xF000-0xFFFF
保留0xF000-0xFFFF
An illustration of the SASP Header is found in the table below. It is expected that every message will start with the SASP Protocol Header component.
下表显示了SASP标题的说明。预计每条消息都将以SASP协议头组件开头。
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 type (0x2010) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Message ID +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+
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 type (0x2010) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Message ID +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+
Figure 4
图4
o Version: The version of the protocol used in this message.
o 版本:此消息中使用的协议版本。
o Message Length: A 4-byte signed integer value representing the total length of the SASP message. It is said to be a signed 4-byte value to make any Java implementations easier (or any other implementations without unsigned values); however, no negative lengths are valid.
o 消息长度:一个4字节有符号整数值,表示SASP消息的总长度。据说它是一个有符号的4字节值,以使任何Java实现更容易(或没有无符号值的任何其他实现);但是,没有有效的负长度。
o Message ID: Each request message is given a 4-byte Message ID by the message originator, which is simply returned in the Message ID field of the reply. This field is meant to assist the requester in correlating replies to the appropriate request when many requests have been sent. In the Send Weights message (the only message transaction that has no reply), this field serves no purpose.
o 消息ID:消息发起者为每个请求消息提供一个4字节的消息ID,该ID仅在回复的消息ID字段中返回。此字段用于在发送多个请求时,帮助请求者关联对相应请求的答复。在Send Weights消息(唯一没有回复的消息事务)中,此字段没有任何用途。
To negotiate the version of the protocol used by the entities involved in the connection, the GWM views the version included in the load balancer request as the load balancer's proposed version.
为了协商连接中涉及的实体使用的协议版本,GWM将负载平衡器请求中包含的版本视为负载平衡器的建议版本。
If the GWM supports the version proposed by the load balancer, it will respond to the connection with the appropriate response code and the load balancer's proposed version in the response header. This proposed version should be the version used for all messages in this connection.
如果GWM支持负载平衡器建议的版本,它将在响应头中使用适当的响应代码和负载平衡器建议的版本响应连接。此建议版本应为用于此连接中所有消息的版本。
If the GWM does not support the version proposed by the load balancer, the GWM will respond with a "message not understood" response code and the GWM's highest supported SASP version in the version field of the response header. This is an indication for the load balancer to come down to GWM's SASP version level.
如果GWM不支持负载平衡器建议的版本,GWM将在响应头的版本字段中使用“message not Understanding”(消息未理解)响应代码和GWM支持的最高SASP版本进行响应。这表明负载平衡器将降低到GWM的SASP版本级别。
The most basic of SASP components are singular components because they describe a single instance of a member, member resource, member weight, or group. Some of the SASP components reuse other SASP components. When this is the case, any component being reused by a base component will simply be given immediately following the base component. Some examples of this technique are seen and explained in the Weight Entry and Member State Instance components.
最基本的SASP组件是单一组件,因为它们描述成员、成员资源、成员权重或组的单个实例。一些SASP组件重用其他SASP组件。在这种情况下,任何被基础组件重用的组件都将直接在基础组件之后给出。在权重输入和成员国实例组件中可以看到并解释此技术的一些示例。
The member data component describes a particular member and is referred to by other components.
成员数据组件描述特定成员,并由其他组件引用。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | Port | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + | | + IP Address of Member + | | + +-+-+-+-+-+-+-+-+ | | Label Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . . . Label . . . | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | Port | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + | | + IP Address of Member + | | + +-+-+-+-+-+-+-+-+ | | Label Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . . . Label . . . | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5
图5
o Protocol: The assigned number of the IP transport layer used in the Protocol Field of the IP header. These are defined in [RFC1700]; however, a current list is maintained at http://www.iana.org. for example: TCP = 0x06, UDP = 0x11, etc.
o 协议:在IP头的协议字段中使用的IP传输层的分配编号。这些在[RFC1700]中定义;但是,当前列表保留在http://www.iana.org. 例如:TCP=0x06、UDP=0x11等。
o Port: The port number used for communication to the member. *** A value of 0 can be given for the Protocol and Port to signify a system level member. However, 0 shouldn't be perceived as a wildcard for either Port or Protocol fields (i.e., a deregistration request that includes a MemberData component with a 0 for the port doesn't mean deregister all applications listening on any port of that IP and protocol).
o 端口:用于与成员通信的端口号。***协议和端口的值可以为0,表示系统级成员。但是,0不应被视为端口或协议字段的通配符(即,取消注册请求包括端口为0的MemberData组件并不意味着取消注册在该IP和协议的任何端口上侦听的所有应用程序)。
o IP Address: The current format is described by the following 16 bytes, where IPv4 addresses are represented as "IPv4-compatible IPv6 addresses" [RFC4291]. In the following example, the x's and zeros represent 4-bit hex values. The x's describe arbitrary hex values.
o IP地址:当前格式由以下16个字节描述,其中IPv4地址表示为“IPv4兼容IPv6地址”[RFC4291]。在下面的示例中,x和零表示4位十六进制值。x表示任意十六进制值。
IPv4 Address: 00 00 00 00 00 00 00 00 00 00 00 00 xx xx xx xx
IPv4地址:00 00 00 00 00 xx xx xx xx
IPv6 Address: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
IPv6地址:xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
o Label length: The length, in bytes, of the label string to follow.
o 标签长度:要跟随的标签字符串的长度(以字节为单位)。
o Label: A UTF8 string that may be set while registering a member. This string is opaque to the GWM and is simply included with any correspondence containing the member data component. Note that the size of this label is <= 255 bytes. Because UTF8 character encodings may be up to 6 bytes, care must be exercised by the load balancer or member to make sure the UTF8 string it sends the GWM is in fact <= 255 bytes.
o 标签:注册成员时可以设置的UTF8字符串。这个字符串对GWM来说是不透明的,并且只包含在包含成员数据组件的任何通信中。请注意,此标签的大小<=255字节。由于UTF8字符编码可能最多为6个字节,负载平衡器或成员必须小心确保它发送给GWM的UTF8字符串实际上小于等于255个字节。
The group data component simply describes a group with which to associate other singular components.
组数据组件仅描述与其他单一组件关联的组。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group Data Type (0x3011) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB UID Length | | +-+-+-+-+-+-+-+-+ + . . . LB UID . . . + +-+-+-+-+-+-+-+-+ | |Group Name Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Group Name . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group Data Type (0x3011) | Size of this TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB UID Length | | +-+-+-+-+-+-+-+-+ + . . . LB UID . . . + +-+-+-+-+-+-+-+-+ | |Group Name Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Group Name . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6
图6
o LB UID Length: Length of the LB UID to follow (in bytes).
o LB UID长度:要跟随的LB UID的长度(以字节为单位)。
o LB UID: A UTF8 string used as a unique identifier and a context for the Group Name (e.g., a UTF8 representation of the MAC address of the load balancer or some type of Universally Unique Identifier (UUID)). This string is used by the Group Workload Manager to associate application registration and deregistration, and to set state messages with the correct load balancer. This unique identifier should not be any longer than 64 bytes.
o LB UID:一个UTF8字符串,用作组名的唯一标识符和上下文(例如,负载平衡器MAC地址的UTF8表示或某种类型的通用唯一标识符(UUID))。组工作负载管理器使用此字符串将应用程序注册和注销关联起来,并将状态消息设置为正确的负载平衡器。此唯一标识符的长度不应超过64字节。
o Group Name Len: Length of the Group Name field to follow (in bytes).
o Group Name Len:要跟随的组名字段的长度(以字节为单位)。
o Group Name: A UTF8 string the load balancer has chosen to tell the Group Workload Manager that members being registered with this Group Name are equivalent in function. In Get Weight and DeRegistration messages, the Group Name may be omitted (Group Name Length = 0) to indicate all groups from the associated load balancer.
o 组名:负载平衡器选择的UTF8字符串,用于告诉组工作负载管理器使用此组名注册的成员在功能上是等效的。在Get Weight and DeRegistration消息中,可以省略组名(组名长度=0),以指示来自关联负载平衡器的所有组。
The Weight Entry Component is used by the get and send weight messages to associate a weight with a particular member (or Member Data). It also uses an opaque member state field and a general member flags field to denote extra information about a member (described below). When the Weight Entry component is used, the Member Data TLV it refers to is listed first, immediately followed by the Weight Entry TLV.
权重输入组件由获取和发送权重消息用于将权重与特定成员(或成员数据)关联。它还使用不透明的成员国字段和常规成员标志字段来表示有关成员的额外信息(如下所述)。使用重量输入组件时,首先列出其引用的构件数据TLV,紧接着是重量输入TLV。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this Member Data TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Member Data Fields . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Weight Entry Type (0x3012) | Size of this Weight Entry TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | State Field | Flags Field | Weight | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this Member Data TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Member Data Fields . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Weight Entry Type (0x3012) | Size of this Weight Entry TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | State Field | Flags Field | Weight | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7
图7
o State Field: This field is used by the member to communicate state information to the scheduler. The information placed in this field is opaque to the GWM and will simply be forwarded to the scheduler with the member weights. There are no defined values for this field.
o 状态字段:成员使用此字段将状态信息传递给计划程序。放置在该字段中的信息对GWM来说是不透明的,只需将其转发给具有成员权重的调度程序即可。此字段没有定义的值。
o Flags Field: This field has several flag values that describe several attributes of the member.
o Flags字段:此字段有多个标志值,用于描述成员的多个属性。
A. Contact Success Flag (set by the GWM): describes whether the member is currently running. If the contact success flag is off, this member should be avoided by the load balancer.
A.联系成功标志(由GWM设置):描述成员当前是否正在运行。如果contact success标志为off(关闭),负载平衡器应避免使用此成员。
+ xxxx xxx1 The GWM has located this running system or application.
+ xxxx xxx1 GWM已找到此正在运行的系统或应用程序。
+ xxxx xxx0 The GWM has not located this running system or application.
+ xxxx xxx0 GWM尚未找到此正在运行的系统或应用程序。
B. Quiesce Flag (set by the load balancer or Member): used when an administrator would like to temporarily remove a member from the weight calculation, but not deregister it from the
B.静止标志(由负载平衡器或成员设置):当管理员希望从权重计算中临时删除某个成员,但不想从权重计算中注销该成员时使用
group. When quiesced, the member will still show up in the weights, but the quiesce flag will be set, and its weight will be zero. When the administrator returns this member to active, the quiesce flag will be 0, and a weight will be provided. If the quiesce flag is on, this member should be avoided by the load balancer.
组静止时,成员仍将显示在权重中,但将设置静止标志,其权重将为零。当管理员将此成员返回活动状态时,静止标志将为0,并提供权重。如果quiesce标志处于启用状态,则负载平衡器应避免使用此成员。
+ xxxx xx1x The member is quiesced.
+ xxxx xx1x成员处于静止状态。
+ xxxx xx0x The member is active (not quiesced).
+ xxxx xx0x成员处于活动状态(未处于静止状态)。
C. Registration Flag (set by the GWM): stores how the member was registered.
C.注册标志(由GWM设置):存储成员的注册方式。
+ xxxx x1xx This member has been registered by the load balancer/scheduler.
+ xxxx x1xx此成员已由负载平衡器/计划程序注册。
+ xxxx x0xx This member has registered itself.
+ xxxx x0xx此成员已注册自身。
D. Confident Flag (set by the GWM): describes whether the GWM has knowledge of this member's state. If this flag is off for only some of the members in the group while the remaining members have valid weights, the load balancer should avoid sending work to those members with the confident flag off. If the confident flag is off for all valid group members, the load balancer should disregard any recommendation from the GWM until the confident flag comes back on for at least one member. In this case where all confident flags are off, the load balancer should determine the correct distribution of work by other means (perhaps a different advisor, previously configured static weights, etc.).
D.自信标志(由GWM设置):描述GWM是否了解该成员国。如果仅对组中的某些成员禁用此标志,而其余成员具有有效权重,则负载平衡器应避免在“信心”标志禁用的情况下向这些成员发送工作。如果所有有效组成员的信心标志都已关闭,则负载平衡器应忽略来自GWM的任何建议,直到至少一个成员的信心标志重新打开。在这种情况下,当所有置信标志都关闭时,负载平衡器应通过其他方式(可能是不同的advisor、先前配置的静态权重等)确定正确的工作分配。
The goal of the confident flag is to convey to the load balancer that it should look to other methods of distribution recommendations if the GWM cannot give recommendations for any of the valid group members. If some members of the group have the confident flag on but the contact flag off or the quiesced flag on (meaning these members should always be avoided) while the remaining members of the group have their confident flag off, the load balancer should determine the appropriate distribution of work for those members with the confident flag off by other means.
信心标志的目标是向负载平衡器传达这样一个信息:如果GWM不能为任何有效的组成员提供建议,那么它应该寻求其他分发建议方法。如果组中的某些成员打开了自信标志,但联系人标志关闭或静止标志打开(这意味着这些成员应始终避免),而组中的其他成员关闭了自信标志,负载平衡器应通过其他方式为那些取消信心标志的成员确定适当的工作分配。
+ xxxx 1xxx GWM has determined it has knowledge of the state of this member.
+ xxxx 1xxx GWM已确定其了解该成员的状态。
+ xxxx 0xxx GWM has no knowledge of the state of this member.
+ xxxx 0xxx GWM不知道该成员的状态。
E. Leftmost four bits are reserved (0000 xxxx - 1111 xxxx).
E.保留最左边的四位(0000 xxxx-1111 xxxx)。
o Weight: This field represents the GWM's recommendation for the relative amount of work that should be sent to this member. This is a 16-bit field with a possible range of 0 to 65536. Load balancers should be prepared to receive a wide range of weight values. Load balancers with limited maximum weight values may restrict the granularity of management by the GWM and in turn cause less than optimal performance. Many existing implementations have supported a minimum raw weight range from 0 to 100.
o 权重:该字段表示GWM对应发送给该成员的相对工作量的建议。这是一个16位字段,可能的范围为0到65536。负载平衡器应准备好接收范围广泛的重量值。具有有限最大权重值的负载平衡器可能会限制GWM的管理粒度,从而导致性能低于最佳水平。许多现有的实现都支持从0到100的最小原始重量范围。
The Member State Instance Component is used by the set member state message to indicate the sender's perceived state of the member mentioned. This component is used to set values that will ultimately end up in the WeightEntry component. When the Member State Instance component is used, the Member Data TLV it refers to is listed first, immediately followed by the Member State Instance TLV.
成员国实例组件由set Member State消息用于指示发送方对所述成员的感知状态。此组件用于设置最终将在WeightEntry组件中结束的值。使用成员国实例组件时,首先列出它引用的成员数据TLV,紧接着是成员国实例TLV。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this Member Data TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Member Data Fields . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member State Instance(0x3013) | Size of Member State Inst TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | State Field | Flags Field | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Data Type (0x3010) | Size of this Member Data TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Member Data Fields . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member State Instance(0x3013) | Size of Member State Inst TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | State Field | Flags Field | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 8
图8
o State Field: This field is used by the member to communicate state information to the load balancer or scheduler. There are no defined values for this field.
o 状态字段:成员使用此字段向负载平衡器或调度程序传递状态信息。此字段没有定义的值。
o Flags Field: This field describes attributes of the member. Currently the only flag value defined is that of the quiesce flag. The quiesce flag is used when an administrator would like to temporarily remove a member from the weight calculation, but not deregister it from the group. When quiesced, the member will still show up in the weights, but the quiesce flag will be set,
o 标志字段:该字段描述成员的属性。目前定义的唯一标志值是静止标志的值。当管理员希望从权重计算中临时删除某个成员,但不想将其从组中注销时,将使用静止标志。静止时,成员仍将显示在权重中,但将设置静止标志,
and its weight will be zero. When the administrator returns this member to active, the quiesce flag will be 0, and a weight will be provided.
它的重量将为零。当管理员将此成员返回活动状态时,静止标志将为0,并提供权重。
A. Quiesce Flag
A.静止标志
+ xxxx xxx1 The member or load balancer setting this state is quiescing this member.
+ xxxx xxx1设置此状态的成员或负载平衡器正在停止此成员。
+ xxxx xxx0 The member or load balancer setting this state is placing the member in a non-quiesced state.
+ xxxx xxx0设置此状态的成员或负载平衡器将成员置于非静止状态。
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
B.保留最左边的七位(0000 000x-1111 111x)。
Group protocol components each contain a collection of related singular components. In particular, they associate Member Data, Weight Entry, or Member State Instance components to a particular Group Data component. In these cases, the particular "Group of x" component will be immediately followed by the Group Data component. The Group Data component will be immediately followed by any number of singular components the group contains. In figures listed in this document, a component type with an asterisk denotes a component that is repeated a number of times.
组协议组件每个都包含一组相关的单一组件。特别是,它们将成员数据、权重条目或成员国实例组件关联到特定的组数据组件。在这些情况下,特定的“x组”组件后面紧跟着组数据组件。组数据组件后面紧跟着该组包含的任意数量的单个组件。在本文档中列出的图中,带星号的组件类型表示重复多次的组件。
The "group of member data" component describes a particular group of members and is used in the registration message components.
“成员数据组”组件描述特定的成员组,并在注册消息组件中使用。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group of Member Data (0x4010) | Size of GroupOfMemberData TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Member Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group of Member Data (0x4010) | Size of GroupOfMemberData TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Member Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 9
图9
o Member Count: The number of Member Data Components immediately following the Group Data structure.
o 成员计数:紧跟在组数据结构之后的成员数据组件的数量。
o Array of Member Data Components: There will be as many Member Data TLVs as Member Count has specified. A load balancer/scheduler would use these components to pass information that would enable the Group Workload Manager to identify the members to associate with this Group Name. The Member Data Component was described in Section 5.1. In DeRegistration messages, the Member Count may be set to 0 to indicate all members of a particular group.
o 成员数据组件数组:成员数指定的成员数据TLV数将与指定的成员数据TLV数相同。负载平衡器/调度器将使用这些组件传递信息,使组工作负载管理器能够识别与此组名称关联的成员。第5.1节描述了成员数据组件。在注销消息中,成员计数可以设置为0,以指示特定组的所有成员。
The "Group of Weight Data" Component is used by the get and send weight messages to create a list of Weight Entry Components for a particular group.
“重量数据组”组件由获取和发送重量消息用于为特定组创建重量输入组件列表。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Group Weight Entry Type(0x4011)| Size of GroupOfWeightEntry TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Weight Entry Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Weight Entry Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Group Weight Entry Type(0x4011)| Size of GroupOfWeightEntry TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Weight Entry Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Weight Entry Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 10
图10
o Weight Entry Count: The number of Member Data / Weight Entry combinations to follow the Group Data TLV.
o 权重输入计数:跟随组数据TLV的成员数据/权重输入组合的数量。
o Array of Weight Entry Data TLVs: There will be as many [Member Data / Weight Entry] TLVs as Weight Entry Count has specified. Each Weight Entry component is preceded by its corresponding Member Data component as explained in Section 5.3. This Member Data / Weight Entry data combination will repeat to form as many Weight Entry items as the Weight Entry Count specifies.
o 权重输入数据TLV数组:将有与权重输入计数指定的数量相同的[Member Data/Weight Entry]TLV。如第5.3节所述,每个重量输入组件前面都有相应的构件数据组件。此成员数据/重量输入数据组合将重复,以形成重量输入计数指定的重量输入项。
The "group of member state data" component describes a particular set of members and their corresponding state fields used in the Set Member State messages.
“成员国数据组”组件描述了一组特定的成员及其在集合成员国消息中使用的相应状态字段。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Group Weight Entry Type(0x4011)| Size of GroupOfWeightEntry TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member State Instance Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Member State Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Group Weight Entry Type(0x4011)| Size of GroupOfWeightEntry TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Member State Instance Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Group Data TLV . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . *Array of Member State Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11
图11
o Member State Instance Count: The number of Member Data / Member State Instance combinations following the Group Data component.
o 成员国实例计数:组数据组件之后的成员国数据/成员国实例组合数。
o Array of Member State Data Components: Each Member State Instance component is immediately preceded by its corresponding Member Data component as explained in Section 5.4. This Member Data / Member State Instance combination will repeat to form as many Member State items as the Member State Instance Count specifies.
o 成员国数据组件数组:如第5.4节所述,每个成员国实例组件前面紧跟着相应的成员国数据组件。此成员数据/成员国实例组合将重复,以形成成员国实例计数指定的成员国项目。
SASP messages are a collection of TLVs (Type, Length, and Value components). The header has no information as to what type of message it is part of; the purpose-specific information is in the message component. This format could facilitate placing more than one message component in a single message; however, this use of multiple message components is not supported in every GWM and could produce indeterminate behavior. Similar to the other protocol components, when a message component needs to involve other components, the additional components immediately follow the message component.
SASP消息是TLV(类型、长度和值组件)的集合。报头没有关于它属于哪种类型的消息的信息;特定于用途的信息位于消息组件中。这种格式有助于在单个消息中放置多个消息组件;但是,并非每个GWM都支持使用多个消息组件,并且可能会产生不确定的行为。与其他协议组件类似,当消息组件需要涉及其他组件时,其他组件会立即跟随消息组件。
All SASP requests sent to the GWM will be acknowledged with a reply. The reply contains information requested as well as a single-byte response code describing the success of the request. SASP defines some general response codes in the range of 0x00 - 0x3F that may be used regardless of the response message type. However, some request types may cause specific error conditions not covered by the general response codes. The response code range of 0x40 - 0xFF is used for these message-specific response codes. Any given SASP response will only contain one response code (depending on the error type). This section explains the format and purpose of specific SASP messages.
发送给GWM的所有SASP请求都将得到回复。回复包含请求的信息以及描述请求成功的单字节响应代码。SASP定义了0x00-0x3F范围内的一些通用响应代码,无论响应消息类型如何,都可以使用这些代码。但是,某些请求类型可能会导致一般响应代码未涵盖的特定错误情况。响应代码范围0x40-0xFF用于这些特定于消息的响应代码。任何给定的SASP响应将只包含一个响应代码(取决于错误类型)。本节解释特定SASP消息的格式和用途。
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 register the members in a group specified by Group Name. Applications are identified with an IP address, Protocol, and Port. Systems are identified only with an IP Address (Port = 0x0000 and Protocol = 0x00). All members in a group have equivalent functionality, so the Group Workload Manager can direct routers, load balancers, and schedulers to any member in the group. Even though registrations can come from either the load balancer/scheduler or the actual member, member-initiated registrations will only be considered if the Trust flag is set while the state of the load balancer/scheduler is set.
此交换发生在负载平衡器/调度器和组工作负载管理器之间,以及组工作负载管理器和成员之间,以在由组名称指定的组中注册成员。应用程序由IP地址、协议和端口标识。系统仅用IP地址标识(端口=0x0000,协议=0x00)。组中的所有成员都具有相同的功能,因此组工作负载管理器可以将路由器、负载平衡器和调度器定向到组中的任何成员。即使注册可以来自负载平衡器/调度程序或实际成员,但只有在设置了负载平衡器/调度程序的状态时设置了信任标志,才会考虑成员发起的注册。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
图12
o Flag Field
o 旗场
A. Load Balancer Flag
A.负载平衡器标志
+ xxxx xxx1 The entity sending this message is the load balancer.
+ xxxx xxx1发送此消息的实体是负载平衡器。
+ xxxx xxx0 The entity sending this message is an Application.
+ xxxx xxx0发送此消息的实体是一个应用程序。
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
B.保留最左边的七位(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 组成员数据计数:紧接注册请求组件之后的“组成员数据”组件数。
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.
o 成员数据组件组数组:每个“成员数据组”组件后面紧跟着组数据组件及其成员数据组件(如第6.1节所述)。在可能存在多个“成员数据组”组件的情况下,第二个“成员数据组”组件仅在列出第一个“成员数据组”组件引用的所有内部组件之后出现。消息中所有后续“成员数据组”组件的格式相同。
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 | +-+-+-+-+-+-+-+-+
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
图13
o General SASP return codes (0x00 - 0x3F)
o 通用SASP返回代码(0x00-0x3F)
* 0x00 Successful
* 0x00成功
* 0x10 Message not understood
* 0x10消息未被理解
* 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.
* 0x11 GWM将不接受来自发件人的此邮件。原因包括:a。消息不是由LB发送的,信任标志为off b。LB试图在消息c中寻址不同LB的成员。未满足此邮件类型的供应商特定条件。
o Message-Specific return codes (0x40 - 0xFF)
o 特定于消息的返回代码(0x40-0xFF)
* 0x40 Member already registered
* 0x40成员已注册
* 0x44 Duplicate Member in Request
* 0x44请求中存在重复成员
* 0x45 Invalid Group (determined by the GWM)
* 0x45无效组(由GWM确定)
* 0x50 Invalid Group Name Size (size == 0)
* 0x50 Invalid Group Name Size (size == 0)
* 0x51 Invalid LB UID Size (size == 0 or > max)
* 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.
* 0x61成员正在注册自身,但LB尚未联系GWM。此注册将不被处理。
**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.
**无效组错误返回代码是指试图组成GWM认为无效的组的LB或成员。例如,某些GWM供应商可能不支持在同一组中同时注册系统和应用程序成员。要确定导致GWM返回此错误代码的原因,必须查阅供应商的文档。
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.
此交换发生在负载平衡器/计划程序和组工作负载管理器之间,以及组工作负载管理器和成员之间,以从组名称指定的组中向组工作负载管理器注销成员。即使注销可以来自负载平衡器/调度程序或实际成员,但只有在使用set-LB-State消息设置信任标志时,才会考虑成员发起的注销。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
图14
o Flag Field
o 旗场
A. Load Balancer Flag
A.负载平衡器标志
+ xxxx xxx1 The entity sending this message is the load balancer.
+ xxxx xxx1发送此消息的实体是负载平衡器。
+ xxxx xxx0 The entity sending this message is an Application.
+ xxxx xxx0发送此消息的实体是一个应用程序。
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
B.保留最左边的七位(0000 000x-1111 111x)。
o Reason: Byte describing the reason for deregistering the group or instance.
o 原因:描述取消组或实例注册原因的字节。
A. SASP-defined Reason Codes (0x00-0x7F)
A.SASP定义的原因代码(0x00-0x7F)
+ 0x00 No reason given.
+ 0x00未给出任何理由。
+ 0x01 Learned and Purposeful, i.e., a human has deconfigured this member from the load balancer configuration.
+ 0x01已学习且有目的,即,有人已从负载平衡器配置中取消配置此成员。
+ 0x80-0xFF Open for vendor specific deregistration reason codes.
+ 0x80-0xFF针对特定于供应商的注销原因代码打开。
o Group of Member Data Count: The number of "Group of Member Data" components immediately following the DeRegistration Request component.
o Group of Member Data Count:紧跟注销请求组件之后的“Group of Member Data”组件数。
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.
o 成员数据组件组数组:每个“成员数据组”组件后面紧跟着组数据组件及其成员数据组件(如第6.1节所述)。在这种情况下,如果可能存在多个“成员数据组”组件,则第二个“成员数据组”组件仅在列出第一个“成员数据组”组件引用的所有内部组件之后出现。消息中所有后续“成员数据组”组件的格式相同。
** 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.
**回想一下,组数据组件包含唯一的LB标识符字段和组名称字段。如果组数据组件没有组名称(GroupData的组名称长度==0),则组工作负载管理器将注销与此负载平衡器关联的所有组。
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 | +-+-+-+-+-+-+-+-+
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
图15
o Return Code: A byte return code indicating the status of action taken.
o 返回码:一个字节的返回码,指示所采取行动的状态。
A. General SASP return codes (0x00 - 0x3F)
A.通用SASP返回代码(0x00-0x3F)
+ 0x00 Successful
+ 0x00成功
+ 0x10 Message not understood
+ 0x10消息未被理解
+ 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.
+ 0x11 GWM将不接受来自发件人的此邮件。原因包括:a。消息不是由LB发送的,信任标志为off b。LB试图在消息c中寻址不同LB的成员。未满足此邮件类型的供应商特定条件。
B. Message-Specific return codes (0x40 - 0xFF)
B.特定于消息的返回代码(0x40-0xFF)
+ 0x41 Application or System not registered
+ 0x41应用程序或系统未注册
+ 0x42 Unknown Group Name
+ 0x42未知组名
+ 0x43 Unknown LB UID
+ 0x43未知LB UID
+ 0x44 Duplicate Member in Request
+ 0x44请求中存在重复成员
+ 0x46 Duplicate Group in Request (for remove all members/groups requests)
+ 0x46请求中存在重复组(用于删除所有成员/组请求)
+ 0x51 Invalid LB UID Size (size == 0 or > max)
+ 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.
+ 0x61成员正在注销自身,但LB尚未联系GWM。将不会处理此注销。
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,
此交换发生在负载平衡器/调度器和组工作负载管理器之间,以获取GroupData对象列表中指定的组的权重。在应用程序负载平衡(在具有相同功能的应用程序之间平衡工作负载)的情况下,负载平衡器将每隔一段时间调用组工作负载管理器(下面由组工作负载管理器返回的参数),以获取权重和关联成员的数组(例如,申请书120,第二份申请书30,第三份申请书5)。然后,负载平衡器使用这些权重来确定将工作发送给每个成员的方式。例如,在加权循环的情况下,负载平衡器/调度程序将向应用程序1、下一个到第二个副本的应用程序和下一个到第三个副本的应用程序发送请求。在15个请求之后,负载平衡ancer/scheduler将只向Application1和SecondCopyOfApplication发送工作。在另外30个请求之后,负载平衡器/调度器将只向SecondCopyOfApplication发送请求。在另外10个请求之后,负载平衡器/调度器产品将使用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.
30,再加5;或者,如果间隔秒数已过,负载平衡器/调度程序将获得一组新的权重。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
图16
o Group Data Count: The number of "Group Data" components immediately following the Get Weights Request TLV.
o 组数据计数:紧接着Get Weights请求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.
o 组数据组件数组:此组数据组件数组列出负载平衡器想要获取权重的组。
** 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.
**如果Get Weights请求的组数据结构中没有组名,则负载平衡器正在请求为负载平衡器注册的所有组的权重。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
图17
o Return Code: A byte return code indicating the status of action taken.
o 返回码:一个字节的返回码,指示所采取行动的状态。
A. General SASP return codes (0x00 - 0x3F)
A.通用SASP返回代码(0x00-0x3F)
+ 0x00 Successful
+ 0x00成功
+ 0x10 Message not understood
+ 0x10消息未被理解
+ 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.
+ 0x11 GWM将不接受来自发件人的此邮件。原因包括:a。LB试图在消息b中寻址不同LB的成员。未满足此邮件类型的供应商特定条件。
B. Message-Specific return codes (0x40 - 0xFF)
B.特定于消息的返回代码(0x40-0xFF)
+ 0x42 Unknown Group Name
+ 0x42未知组名
+ 0x43 Unknown LB UID
+ 0x43未知LB UID
+ 0x46 Duplicate Group in Request
+ 0x46请求中存在重复组
+ 0x51 Invalid LB uid Size (size == 0 or > max)
+ 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 Workload Manager表示,任何小于建议间隔的轮询间隔都可能在值有机会更改之前检索到值。
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.
o 重量输入数据组件组:每个“重量数据组”组件后面紧跟着组数据组件及其重量输入数据组件(如第6.2节所述)。在这种情况下,如果可能存在多个“重量数据组”组件,则第二个“重量数据组”组件仅在列出第一个“重量数据组”组件所引用的所有内部组件之后出现。消息中所有后续“重量数据组”组件的格式相同。
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.
此交换在组工作负载管理器和负载平衡器/调度程序之间进行,以发送组名称中指定的组的新权重。此消息的唯一性在于,它是由组工作负载管理器发起的唯一消息交换,也是唯一没有回复的消息。在应用程序负载平衡(在具有相同功能的应用程序之间平衡工作负载)的情况下,组工作负载管理器将以可能的动态间隔(由组工作负载管理器选择)向负载平衡器发送消息,以发送权重数组和关联成员(例如,申请书120,第二份申请书30,第三份申请书5)。然后,负载平衡器使用这些权重来确定将工作发送给每个成员的方式。例如,在加权循环的情况下,负载平衡器/调度程序将向应用程序1、下一个到第二个副本的应用程序和下一个到第三个副本的应用程序发送请求。在15个请求之后,负载平衡ancer/scheduler将只向Application1和SecondCopyOfApplication发送工作。在另外30个请求之后,负载平衡器/调度器将只向SecondCopyOfApplication发送请求。在另外10个请求之后,负载平衡器/调度器产品将再次使用权重20、30和5重新启动,如果它尚未收到new组权重。只有在使用set Load Balancer State消息启用推送标志时,组工作负载管理器才会发送此消息。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Send Weights Type(0x1040) | Size of Send Weights TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group of Weight Data Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . *Group of Weight Entry Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Send Weights Type(0x1040) | Size of Send Weights TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group of Weight Data Count | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . *Group of Weight Entry Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* There will be as many Group of Weight Entry Data Components as "Group of Weight Data Count" has specified.
* 重量输入数据组件组的数量与“重量数据计数组”所规定的数量相同。
Figure 18
图18
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.
o 重量输入数据组件组:每个“重量数据组”组件后面紧跟着组数据组件及其重量输入数据组件(如第6.2节所述)。在这种情况下,如果可能存在多个“重量数据组”组件,则第二个“重量数据组”组件仅在列出第一个“重量数据组”组件所引用的所有内部组件之后出现。消息中所有后续“重量数据组”组件的格式相同。
This is a special exchange that can take place between the load balancer and the Group Workload Manager or between the Member and the Group Workload Manager to pass information about the state of the member including placing the member in quiesced or non-quiesced states. In particular, the load balancer/scheduler can use this message to quiesce a set of members. Members can also use this message to quiesce themselves as well as to pass certain state information to the load balancer/scheduler that is opaque to the Group Workload Manager. This opaque state information is passed to the load balancer/scheduler with the weights during get and send weight messages.
这是一种特殊的交换,可以在负载平衡器和组工作负载管理器之间或成员和组工作负载管理器之间进行,以传递有关成员状态的信息,包括将成员置于静止或非静止状态。特别是,负载平衡器/调度器可以使用此消息停止一组成员。成员还可以使用此消息使自己停止,并将某些状态信息传递给对组工作负载管理器不透明的负载平衡器/计划程序。在获取和发送权重消息期间,此不透明状态信息与权重一起传递给负载平衡器/调度程序。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SetMemberState Req.Type(0x1060)|Size of SetMemberState Req. TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flag Field | Group of MemberStateData Count| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . *Array of Group of Member State Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SetMemberState Req.Type(0x1060)|Size of SetMemberState Req. TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flag Field | Group of MemberStateData Count| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . *Array of Group of Member State Data Components . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*There will be as many Group of Member State Data Components as "Group of Member State Data Count" has specified.
*成员国数据组件组的数量将与“成员国数据计数组”指定的数量相同。
Figure 19
图19
o Flag Field
o 旗场
A. Load Balancer Flag
A.负载平衡器标志
+ xxxx xxx1 The entity sending this message is the load balancer.
+ xxxx xxx1发送此消息的实体是负载平衡器。
+ xxxx xxx0 The entity sending this message is an Application.
+ xxxx xxx0发送此消息的实体是一个应用程序。
B. Leftmost seven bits are reserved (0000 000x - 1111 111x).
B.保留最左边的七位(0000 000x-1111 111x)。
o Group of Member State Data Count: The number of "Group of Member State Data" components immediately following the Set Member State Request TLV.
o 成员国数据组计数:紧跟在设置的成员国请求TLV之后的“成员国数据组”组件数。
o Array of Group of Member Data Components: Each "Group of Member State Data" component is immediately followed by Group Data Components and its Member State Instance components (as described in Section 6.3). In the case where several "Group of Member State Data" components may be present, the second "Group of Member State Data" component only appears after all of the internal components that are referred to by the first "Group of Member State Data" component are listed. The format is the same for all subsequent "Group of Member State Data" components in the message.
o 成员数据组件组数组:每个“成员国数据组”组件后面紧跟着组数据组件及其成员国实例组件(如第6.3节所述)。在可能存在多个“成员国数据组”组件的情况下,第二个“成员国数据组”组件仅在列出第一个“成员国数据组”组件引用的所有内部组件之后出现。消息中所有后续“成员国数据组”组件的格式相同。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Set Member State Reply(0x1025)|Size of SetMemberStateReply TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Return Code | +-+-+-+-+-+-+-+-+
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Set Member State Reply(0x1025)|Size of SetMemberStateReply TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Return Code | +-+-+-+-+-+-+-+-+
Figure 20
图20
o Return Code: A byte return code indicating the status of action taken.
o 返回码:一个字节的返回码,指示所采取行动的状态。
A. General SASP return codes (0x00 - 0x3F)
A.通用SASP返回代码(0x00-0x3F)
+ 0x00 Successful
+ 0x00成功
+ 0x10 Message not understood
+ 0x10消息未被理解
+ 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.
+ 0x11 GWM将不接受来自发件人的此邮件。原因包括:a。消息不是由LB发送的,信任标志为off b。LB试图在消息c中寻址不同LB的成员。未满足此邮件类型的供应商特定条件。
B. Message-Specific return codes (0x40 - 0xFF)
B.特定于消息的返回代码(0x40-0xFF)
+ 0x41 Application or System not registered
+ 0x41应用程序或系统未注册
+ 0x42 Unknown Group Name
+ 0x42未知组名
+ 0x43 Unknown LB UID
+ 0x43未知LB UID
+ 0x44 Duplicate Member in Request
+ 0x44请求中存在重复成员
+ 0x46 Duplicate Group in Request
+ 0x46请求中存在重复组
+ 0x50 Invalid Group Name Size (size == 0)
+ 0x50 Invalid Group Name Size (size == 0)
+ 0x51 Invalid LB UID Size (size == 0 or > than max)
+ 0x51 Invalid LB UID Size (size == 0 or > than max)
+ 0x61 Member is setting state for itself, but LB hasn't yet contacted the GWM. This request will not be processed.
+ 0x61成员正在为自己设置状态,但LB尚未联系GWM。将不处理此请求。
This is an exchange that can take place between the load balancer and the Group Workload Manager to pass information about the state (and partial configuration) of the load balancer.
这是可以在负载平衡器和组工作负载管理器之间进行的交换,以传递有关负载平衡器状态(和部分配置)的信息。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Set LB State Req. Type (0x1050)| Size of Set LB State Req. TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB UID Length | | +-+-+-+-+-+-+-+-+ + . . . LB UID . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB Health | LB Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Set LB State Req. Type (0x1050)| Size of Set LB State Req. TLV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB UID Length | | +-+-+-+-+-+-+-+-+ + . . . LB UID . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LB Health | LB Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 21
图21
o LB UID Length: one-byte length field describing the size of the following LB UID.
o LB UID长度:描述以下LB UID大小的单字节长度字段。
o LB UID: This should be the same unique identifier given when registering group members for this particular load balancer.
o LB UID:这应该是注册此特定负载平衡器的组成员时给定的唯一标识符。
o LB Health: This field gives the load balancer a chance to pass in a metric describing its own health or state.
o LB Health:此字段使负载平衡器有机会传入描述其自身运行状况或状态的度量。
0x00 - 0x7F Least Healthy - Most Healthy
0x00-0x7F最不健康-最健康
0x80 - 0xFF Reserved
0x80-保留0xFF
o LB Flags:
o LB标志:
A. Push Flag
A.推旗
+ xxxx xxx1 The load balancer should receive weights through the Send Weights message (GWM pushes weights to load balancer). Even if this flag is set, the GWM must still respond accordingly to any Get Weights messages from the load balancer.
+ xxxx xxx1负载平衡器应通过发送权重消息接收权重(GWM将权重推送到负载平衡器)。即使设置了此标志,GWM仍必须相应地响应来自负载平衡器的任何Get WARGETS消息。
+ xxxx xxx0 The load balancer will send a Get Weights message to get the new weights. This is the default behavior. (load balancer pulls weights from GWM).
+ xxxx xxx0负载平衡器将发送获取权重消息以获取新权重。这是默认行为。(负载平衡器从GWM中拉出重量)。
B. Trust Flag
B.信托标志
+ xxxx xx1x Trust any member-initiated registration, deregistration, or set state message. Immediately reflect the registration, deregistration, or new state in the weights sent.
+ xxxx xx1x信任任何成员发起的注册、注销或设置状态消息。立即在发送的权重中反映注册、注销或新状态。
+ xxxx xx0x Do not trust any member-initiated registration, deregistration, or set state message. Registration, Deregistration, and State Setting of members can only occur from the load balancer. Discard any member-initiated registration, deregistration, or set state message. This is the default behavior.
+ xxxx xx0x不信任任何成员发起的注册、注销或设置状态消息。成员的注册、注销和状态设置只能从负载平衡器进行。放弃任何成员发起的注册、注销或设置状态消息。这是默认行为。
C. No Change / No Send Flag
C.无更改/无发送标志
+ xxxx x1xx The GWM must not include members whose weights and state (i.e., contact and quiesce flags) have not changed since they were last sent.
+ xxxx x1xx GWM不得包括自上次发送以来其权重和状态(即触点和静止标志)未更改的成员。
+ xxxx x0xx The GWM must include the weights of all group members when sending the weights to this load balancer (including members whose weights and state have not changed). This is the default behavior.
+ xxxx x0xx当将权重发送到此负载平衡器时,GWM必须包括所有组成员的权重(包括权重和状态未更改的成员)。这是默认行为。
D. Leftmost five bits are reserved (0000 0xxx - 1111 1xxx).
D.保留最左边的五位(0000 0xxx-1111 1xx)。
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Set LB State Reply (0x1025) | Size of Set LB State Reply TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Return Code | +-+-+-+-+-+-+-+-+
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 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Set LB State Reply (0x1025) | Size of Set LB State Reply TLV| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Return Code | +-+-+-+-+-+-+-+-+
Figure 22
图22
o Return Code: A byte return code indicating the status of action taken.
o 返回码:一个字节的返回码,指示所采取行动的状态。
A. General SASP return codes (0x00 - 0x3F)
A.通用SASP返回代码(0x00-0x3F)
+ 0x00 Successful
+ 0x00成功
+ 0x10 Message not understood
+ 0x10消息未被理解
+ 0x11 GWM will not accept this message from the sender. Reasons for this include the following: a. LB attempted to address the state of a different LB b. Vendor specific criteria for this message type were not met.
+ 0x11 GWM将不接受来自发件人的此邮件。原因包括:a。LB试图寻址不同LB b的状态。未满足此邮件类型的供应商特定条件。
B. Message-Specific return codes (0x40 - 0xFF)
B.特定于消息的返回代码(0x40-0xFF)
+ 0x51 Invalid LB UID Size (size == 0 or > max)
+ 0x51 Invalid LB UID Size (size == 0 or > max)
This section provides an example of the actual SASP message encoding. For this example, we will look at a sample GetWeights Reply in which two webservers are registered to a serverfarm called FARM1. The IP addresses of the two webservers are 10.10.10.1 and 10.10.10.2. Currently the GWM has a weight of 40 for 10.10.10.1 and 20 for 10.10.10.2. The load balancer has a unique Identifier of "LB1" and the message example was sent by the GWM in response to a request (MessageID: 0x32000000) for FARM1's weights.
本节提供了实际SASP消息编码的示例。对于本例,我们将查看一个示例GetWeights回复,其中两个Web服务器注册到名为FARM1的服务器场。这两个Web服务器的IP地址分别为10.10.10.1和10.10.10.2。目前,GWM在10.10.10.1中的重量为40,在10.10.10.2中的重量为20。负载平衡器具有唯一标识符“LB1”,GWM发送消息示例以响应FARM1权重的请求(MessageID:0x32000000)。
The TLVs necessary for this message are shown in the following list.
下表显示了此消息所需的TLV。
1. SASP Header TLV
1. SASP头TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x2010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x000D | |-----------|---------|------------| | | Version | 1 byte | 0x01 | | |---------|---------|------------| |V| Mesg Len| 4 bytes | 0x0000 006A| | |---------|---------|------------| | | Mesg ID | 4 bytes | 0x3200 0000| ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x2010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x000D | |-----------|---------|------------| | | Version | 1 byte | 0x01 | | |---------|---------|------------| |V| Mesg Len| 4 bytes | 0x0000 006A| | |---------|---------|------------| | | Mesg ID | 4 bytes | 0x3200 0000| ------------------------------------
Figure 23
图23
2. Get Weights Reply TLV
2. 获取权重回复TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x1035 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0009 | |-----------|---------|------------| | | RetCode | 1 byte | 0x00 | | |---------|---------|------------| |V| Interval| 2 bytes | 0x0040 | | |---------|---------|------------| | |GWD Count| 2 bytes | 0x0001 | ------------------------------------ *GWD Count = Group of Weight Data Count
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x1035 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0009 | |-----------|---------|------------| | | RetCode | 1 byte | 0x00 | | |---------|---------|------------| |V| Interval| 2 bytes | 0x0040 | | |---------|---------|------------| | |GWD Count| 2 bytes | 0x0001 | ------------------------------------ *GWD Count = Group of Weight Data Count
Figure 24
图24
3. Group of Weight Data TLV
3. 一组重量数据TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x4011 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0006 | |-----------|---------|------------| |V| WE Count| 2 bytes | 0x0002 | ------------------------------------ *WE Count = Weight Entry Count
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x4011 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0006 | |-----------|---------|------------| |V| WE Count| 2 bytes | 0x0002 | ------------------------------------ *WE Count = Weight Entry Count
Figure 25
图25
4. Group Data TLV
4. 组数据TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3011 | |-----------|---------|------------| |L| Length | 2 bytes | 0x000E | |-----------|---------|------------| | |LBUID len| 1 byte | 0x03 | | |---------|---------|------------| | | LBUID | 3 bytes | "LB1" or | | | | | 0x4C 42 31 | |V|---------|---------|------------| | |GroupName| 1 byte | 0x05 | | | Length | | | | |---------|---------|------------| | | Group | | "FARM1" or | | | Name | 5 bytes | 0x46 41 52 | | | | | 4D 31 | ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3011 | |-----------|---------|------------| |L| Length | 2 bytes | 0x000E | |-----------|---------|------------| | |LBUID len| 1 byte | 0x03 | | |---------|---------|------------| | | LBUID | 3 bytes | "LB1" or | | | | | 0x4C 42 31 | |V|---------|---------|------------| | |GroupName| 1 byte | 0x05 | | | Length | | | | |---------|---------|------------| | | Group | | "FARM1" or | | | Name | 5 bytes | 0x46 41 52 | | | | | 4D 31 | ------------------------------------
Figure 26
图26
5. Member Data TLV
5. 成员数据TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0018 | |-----------|---------|------------| | | Protocol| 1 byte | 0x06 | | |---------|---------|------------| | | Port | 2 bytes | 0x0050 | | |---------|---------|------------| |V| IP |16 bytes | 0x0000 0000| | | Address | | 0000 0000| | | | | 0000 0000| | | | | 0A0A 0A01| | |---------|---------|------------| | |Label Len| 1 byte | 0x00 | | |---------|---------|------------| | | Label | 0 bytes | | ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0018 | |-----------|---------|------------| | | Protocol| 1 byte | 0x06 | | |---------|---------|------------| | | Port | 2 bytes | 0x0050 | | |---------|---------|------------| |V| IP |16 bytes | 0x0000 0000| | | Address | | 0000 0000| | | | | 0000 0000| | | | | 0A0A 0A01| | |---------|---------|------------| | |Label Len| 1 byte | 0x00 | | |---------|---------|------------| | | Label | 0 bytes | | ------------------------------------
Figure 27
图27
6. Weight Entry Data TLV
6. 重量输入数据
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3012 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0008 | |-----------|---------|------------| | | State | 1 byte | 0x00 | | |---------|---------|------------| |V| Flags | 1 byte | 0x0D | | |---------|---------|------------| | | Weight | 2 bytes | 0x0028 | ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3012 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0008 | |-----------|---------|------------| | | State | 1 byte | 0x00 | | |---------|---------|------------| |V| Flags | 1 byte | 0x0D | | |---------|---------|------------| | | Weight | 2 bytes | 0x0028 | ------------------------------------
Figure 28
图28
7. Member Data TLV
7. 成员数据TLV
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0018 | |-----------|---------|------------| | | Protocol| 1 byte | 0x06 | | |---------|---------|------------| | | Port | 2 bytes | 0x0050 | | |---------|---------|------------| |V| IP |16 bytes | 0x0000 0000| | | Address | | 0000 0000| | | | | 0000 0000| | | | | 0A0A 0A02| | |---------|---------|------------| | |Label Len| 1 byte | 0x00 | | |---------|---------|------------| | | Label | 0 bytes | | ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3010 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0018 | |-----------|---------|------------| | | Protocol| 1 byte | 0x06 | | |---------|---------|------------| | | Port | 2 bytes | 0x0050 | | |---------|---------|------------| |V| IP |16 bytes | 0x0000 0000| | | Address | | 0000 0000| | | | | 0000 0000| | | | | 0A0A 0A02| | |---------|---------|------------| | |Label Len| 1 byte | 0x00 | | |---------|---------|------------| | | Label | 0 bytes | | ------------------------------------
Figure 29
图29
8. Weight Entry Data TLV
8. 重量输入数据
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3012 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0008 | |-----------|---------|------------| | | State | 1 byte | 0x00 | | |---------|---------|------------| |V| Flags | 1 byte | 0x0D | | |---------|---------|------------| | | Weight | 2 bytes | 0x0014 | ------------------------------------
------------------------------------ | | Field | Size | Value | |-----------|---------|------------| |T| Type | 2 bytes | 0x3012 | |-----------|---------|------------| |L| Length | 2 bytes | 0x0008 | |-----------|---------|------------| | | State | 1 byte | 0x00 | | |---------|---------|------------| |V| Flags | 1 byte | 0x0D | | |---------|---------|------------| | | Weight | 2 bytes | 0x0014 | ------------------------------------
Figure 30
图30
A hex stream representing this same message is below:
下面是表示该消息的十六进制流:
20 10 00 0D 01 00 00 00 6A 32 00 00 00 10 35 00 09 00 00 40
20 10 00 0D 01 00 00 6A 32 00 00 00 10 35 00 09 00 00 40
00 01 40 11 00 06 00 02 30 11 00 0E 03 4C 42 31 05 46 41 52
00 01 40 11 00 06 00 02 30 11 00 0E 03 4C 42 31 05 46 41 52
4D 31 30 10 00 18 06 00 50 00 00 00 00 00 00 00 00 00 00 00
4D 31 30 10 00 18 06 00 50 00 00 00 00 00
00 0A 0A 0A 01 00 30 12 00 08 00 0D 00 28 30 10 00 18 06 00
00 0A 0A 0A 01 00 30 12 00 08 00 0D 00 28 30 10 00 18 06 00
50 00 00 00 00 00 00 00 00 00 00 00 00 0A 0A 0A 02 00 30 12
50 00 00 00 00 00 00 0A 0A 0A 02 00 30 12
00 08 00 0D 00 14
00 08 00 0D 00 14
(106 bytes)
(106字节)
This section describes the expected general flow of the SASP messages.
本节描述SASP消息的预期一般流程。
SASP first starts with a connection from an LB to the GWM. This is expected to be a long-running connection and will be used for many messages. After establishing the connection, the LB either registers a group of members or sets a Trust flag to allow the members to register themselves. The Trust flag is set using a Set LB State Request (both message flows are shown below).
SASP首先从LB到GWM的连接开始。这将是一个长期运行的连接,并将用于许多消息。建立连接后,LB要么注册一组成员,要么设置信任标志以允许成员注册自己。使用set LB State请求设置信任标志(两个消息流如下所示)。
Registration from load balancer
从负载均衡器注册
------------ Registration Request ------------------ | |----------------------->| | | Load | | Group Workload | | Balancer | Registration Reply | Manager | | |<-----------------------| | ------------ ------------------
------------ Registration Request ------------------ | |----------------------->| | | Load | | Group Workload | | Balancer | Registration Reply | Manager | | |<-----------------------| | ------------ ------------------
Set LB State from load balancer
从负载平衡器设置LB状态
------------ Set LB State Request ------------------ | |----------------------->| | | Load | | Group Workload | | Balancer | Set LB State Reply | Manager | | |<-----------------------| | ------------ ------------------
------------ Set LB State Request ------------------ | |----------------------->| | | Load | | Group Workload | | Balancer | Set LB State Reply | Manager | | |<-----------------------| | ------------ ------------------
Figure 31
图31
The connection can start with other requests, but any other request would likely result in an error (unless this connection is a reconnection that has happened a short period of time after the original connection). For example, if the load balancer issues a deregistration request as its first message, it will receive an error because it has not registered any groups.
连接可以从其他请求开始,但任何其他请求都可能导致错误(除非此连接是在原始连接后短时间内发生的重新连接)。例如,如果负载平衡器发出取消注册请求作为其第一条消息,它将收到一个错误,因为它没有注册任何组。
The load balancer always drops all state information after a loss of connection and can recover it using a GetWeights message. The establishment of a new connection causes the GWM to assume that the old one is broken. In this case, the GWM will keep all state for the load balancer for a limited time after a detected break. After the limited time has expired, all state for the broken connection will be discarded by the GWM.
负载平衡器总是在连接断开后删除所有状态信息,并可以使用GetWeights消息进行恢复。新连接的建立会导致GWM假定旧连接已断开。在这种情况下,GWM将在检测到中断后的有限时间内保持负载平衡器的所有状态。在限制时间到期后,GWM将放弃断开连接的所有状态。
Registration of group members may be done at any time. A load balancer can register anywhere from one group with one member to many groups of many members. The member may also register itself if the Trust flag has been set and it knows the appropriate load balancer information. Registrations will add to groups that already exist, but return errors if any of the registered members already exist.
集团成员的登记可随时进行。负载平衡器可以在任何位置注册,从一个具有一个成员的组到多个具有多个成员的组。如果已设置信任标志并且成员知道适当的负载平衡器信息,则成员还可以注册自己。注册将添加到已存在的组,但如果任何已注册成员已存在,则返回错误。
In the case of system load balancing, the representation of a member is only the member's IP address with a 0 used as the value for the port and protocol. In the case of application load balancing, the representation of a member is the member's IP address and the Application's port and protocol.
在系统负载平衡的情况下,成员的表示形式仅为成员的IP地址,0用作端口和协议的值。在应用程序负载平衡的情况下,成员的表示形式是成员的IP地址以及应用程序的端口和协议。
Deregistration of group members may be done at any time. A load balancer can deregister anywhere from one group with one member to many groups of many members. The LB may also deregister entire groups or deregister all of its groups at once. The member may also deregister itself if the Trust flag has been set and it knows the appropriate load balancer information.
可随时撤销集团成员的注册。负载平衡器可以在任何位置取消注册,从一个具有一个成员的组到多个具有多个成员的组。LB也可以同时注销整个组或其所有组。如果已设置信任标志并且成员知道适当的负载平衡器信息,则该成员还可以注销自身。
Once members are registered, the GWM will start the monitoring and weight computation processes to determine weights to be sent back to the load balancer. At any time the load balancer may issue a GetWeights message and ask for the weights for members in a particular group. The LB may also set a flag telling the GWM to send the weights without waiting for the GetWeights message. If this flag is set, the GWM will send the weights at an interval it feels is appropriate (the interval could change depending on the algorithm used and variance of the weights generated).
注册成员后,GWM将启动监控和权重计算过程,以确定要发送回负载平衡器的权重。负载平衡器可随时发出GetWeights消息,并请求特定组中成员的权重。LB还可以设置一个标志,告知GWM在不等待GetWeights消息的情况下发送权重。如果设置了此标志,GWM将以其认为合适的时间间隔发送权重(时间间隔可能会根据使用的算法和生成的权重的变化而变化)。
At any time the LB or a particular member may quiesce the member through the use of a SetMemberState message. In this case, the member's weight will always be zero, and the quiesce flag will be
LB或特定成员可随时通过使用SetMemberState消息使该成员静止。在这种情况下,成员的权重将始终为零,静止标志将为零
turned on when sending its weight. Members may also use this message to send an opaque state value that will also be presented when sending weights.
发送其权重时启用。成员还可以使用此消息发送不透明状态值,该值在发送权重时也将显示。
At any time, the load balancer may choose to send the GWM a SetLBState request to configure its interaction. The message allows the load balancer to set the Push, Trust, and NoChange_NoSend flags. It also allows the load balancer to pass a health value to the GWM to be displayed.
在任何时候,负载平衡器都可以选择向GWM发送一个SetLBState请求来配置其交互。该消息允许负载平衡器设置Push、Trust和NoChange\u NoSend标志。它还允许负载平衡器将运行状况值传递给要显示的GWM。
While behaviors in many error conditions will be product specific, the following error cases should have the following expected behavior.
虽然许多错误情况下的行为都是特定于产品的,但以下错误情况应具有以下预期行为。
Case: The protocol is violated in an unrecoverable manner by either end of the connection.
案例:连接的任意一端以不可恢复的方式违反协议。
Behavior: Either end of the connection may choose to disconnect to avoid future message synchronization problems. The state kept when disconnected is vendor specific.
行为:连接的任意一端都可以选择断开连接,以避免将来出现消息同步问题。断开连接时保持的状态是特定于供应商的。
Case: LB or application attempts to connect to the GWM before the GWM is fully up and running.
案例:LB或应用程序尝试在GWM完全启动和运行之前连接到GWM。
Behavior: The LB or application should wait at least 20 seconds to retry the connection.
行为:LB或应用程序应至少等待20秒以重试连接。
Case: Members attempt to register or deregister themselves before the LB develops the connection with the GWM.
案例:成员试图在LB建立与GWM的连接之前注册或注销自己。
Behavior: In this case, the members would receive a reply with an error code signifying that there is no LB registered with that LB UID.
行为:在这种情况下,成员将收到一个带有错误代码的回复,表示没有使用该LB UID注册的LB。
Case: Member registers or deregisters for an LB who has not set the Trust flag.
案例:成员为未设置信任标志的LB注册或注销。
Behavior: GWM will send Member a reply containing an error code.
行为:GWM将向成员发送包含错误代码的回复。
Case: LB asks for weights for a group that doesn't exist.
案例:LB为不存在的组请求权重。
Behavior: GWM will send LB a reply containing an error code.
行为:GWM将向LB发送包含错误代码的回复。
Case: LB or Member attempts to register a member that is already registered in that group.
案例:LB或Member尝试注册已在该组中注册的成员。
Behavior: GWM will send sender a reply containing an error code.
行为:GWM将向发件人发送包含错误代码的回复。
Case: LB or Member attempts to deregister a member or group that doesn't exist.
案例:LB或Member试图注销不存在的成员或组。
Behavior: GWM will send sender a reply containing an error code.
行为:GWM将向发件人发送包含错误代码的回复。
Case: LB or Member tries to set state for a non-registered server.
案例:LB或成员尝试为未注册的服务器设置状态。
Behavior: GWM will send sender a reply containing an error code.
行为:GWM将向发件人发送包含错误代码的回复。
Case: LB tries to Get Weights for an unregistered group.
案例:LB尝试获取未注册组的权重。
Behavior: GWM will send LB a reply containing an error code.
行为:GWM将向LB发送包含错误代码的回复。
9.3. Example Flow 1: Load Balancer Registration, Getting Weights, and Application-Side Quiescing
9.3. 示例流程1:负载平衡器注册、获取权重和应用程序端静止
Load Group Workload Balancer Manager | | | 1) Registration Request | |------------------------>| |<------------------------| | Registration Reply | | | | 2) Set LB State Request | |------------------------>| |<------------------------| | Set LB State Reply | | | | 3) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | | 4) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| A | | | Set Member State Reply -------- | | | | 5) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| C | | | Set Member State Reply -------- | | | 6) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | | | | 7) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| C | | | Set Member State Reply -------- | | | 8) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | |
Load Group Workload Balancer Manager | | | 1) Registration Request | |------------------------>| |<------------------------| | Registration Reply | | | | 2) Set LB State Request | |------------------------>| |<------------------------| | Set LB State Reply | | | | 3) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | | 4) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| A | | | Set Member State Reply -------- | | | | 5) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| C | | | Set Member State Reply -------- | | | 6) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | | | | 7) Set Member State Req. -------- | |<-------------------------|Member| | |------------------------->| C | | | Set Member State Reply -------- | | | 8) Get Weights Request | |------------------------>| |<------------------------| | Get Weights Reply | | |
Figure 32
图32
1. The LB registers Members A, B, and C in a group named GRP1. The GWM replies with no error.
1. LB在名为GRP1的组中注册成员A、B和C。GWM的回复没有错误。
2. The LB turns its trust flag on by issuing a Set LB State message:
2. LB通过发出Set LB State消息打开其信任标志:
LB Health: 0x00 Flags: 0000 0010
LB运行状况:0x00标志:0000 0010
3. The LB sends a Get Weights message for GRP1 and gets the reply:
3. LB发送GRP1的Get Weights消息并获得回复:
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x00 0000 1101 5
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x00 0000 1101 5
4. Member A sends a Set Member State message with flags:
4. 成员A发送带有标志的集合成员国消息:
Members Opaque State Flags -------- ------------ --------- Member A 0x32 0000 0000
Members Opaque State Flags -------- ------------ --------- Member A 0x32 0000 0000
5. Member C sends a Set Member State message to quiesce itself with the following flags:
5. 成员C发送一个Set成员国消息,以使用以下标志使自身静止:
Members Opaque State Flags -------- ------------ --------- Member C 0x0A 0000 0001
Members Opaque State Flags -------- ------------ --------- Member C 0x0A 0000 0001
6. The LB sends the Get Weights message for GRP1 and receives the following:
6. LB发送GRP1的Get Weights(获取权重)消息,并接收以下信息:
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x32 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x0A 0000 1111 5
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x32 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x0A 0000 1111 5
7. Member C sends a Set Member State message to resume (un-quiesce itself) with the following flags:
7. 成员C发送设置成员国消息以恢复(取消静止本身),并带有以下标志:
Members Opaque State Flags -------- ------------ --------- Member C 0x0A 0000 0000
Members Opaque State Flags -------- ------------ --------- Member C 0x0A 0000 0000
8. The LB sends a Get Weights message for GRP1 and gets the reply:
8. LB发送GRP1的Get Weights消息并获得回复:
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x32 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x0A 0000 1101 5
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x32 0000 1101 20 Member B 0x00 0000 1101 40 Member C 0x0A 0000 1101 5
9.4. Example Flow 2: Set Load Balancer State, Application Registration, and Load Balancer Group DeRegistration
9.4. 示例流程2:设置负载平衡器状态、应用程序注册和负载平衡器组注销
Load Group Workload Balancer Manager | | | 1) Set LB State Request | |------------------------>| |<------------------------| | Set LB State Reply | | | | | 2) Registration Request -------- | |<-------------------------|Member| | |------------------------->| A | | | Registration Reply -------- | | | | 3) Registration Request -------- | |<-------------------------|Member| | |------------------------->| B | | | Registration Reply -------- | | | 4) Send Weights Mesg | |<------------------------| | | | | 5) Registration Request -------- | |<-------------------------|Member| | |------------------------->| C | | | Registration Reply -------- | | | 6) Send Weights Mesg | |<------------------------| | | |7) Deregistration Request| |------------------------>| |<------------------------| | Deregistration Reply | | |
Load Group Workload Balancer Manager | | | 1) Set LB State Request | |------------------------>| |<------------------------| | Set LB State Reply | | | | | 2) Registration Request -------- | |<-------------------------|Member| | |------------------------->| A | | | Registration Reply -------- | | | | 3) Registration Request -------- | |<-------------------------|Member| | |------------------------->| B | | | Registration Reply -------- | | | 4) Send Weights Mesg | |<------------------------| | | | | 5) Registration Request -------- | |<-------------------------|Member| | |------------------------->| C | | | Registration Reply -------- | | | 6) Send Weights Mesg | |<------------------------| | | |7) Deregistration Request| |------------------------>| |<------------------------| | Deregistration Reply | | |
Figure 39
图39
1. The LB sets its state with the Set LB State message and the following parameters.
1. LB使用Set LB state消息和以下参数设置其状态。
Health: 0x7F Flags: 0000 0011
运行状况:0x7F标志:0000 0011
2. Member A registers itself for work in GRP1 using the Register message.
2. 成员A使用Register消息在GRP1中注册自己的工作。
3. Member B registers itself for work in GRP1 using the Register message.
3. 成员B使用Register消息在GRP1中注册自己的工作。
4. The GWM issues a Send Weights message to the LB.
4. GWM向LB发出发送权重消息。
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1001 20 Member B 0x00 0000 1001 40
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1001 20 Member B 0x00 0000 1001 40
5. Member C registers itself for work in GRP1 using the Register message.
5. 成员C使用Register消息注册自己在GRP1中的工作。
6. The GWM issues a Send Weights message to the LB.
6. GWM向LB发出发送权重消息。
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1001 20 Member B 0x00 0000 1001 40 Member C 0x00 0000 1001 5
Members Opaque State Flags Weight -------- ------------ --------- ------ Member A 0x00 0000 1001 20 Member B 0x00 0000 1001 40 Member C 0x00 0000 1001 5
7. LB deregisters GRP1 by using the DeRegister message with the Member Data Count = 0
7. LB使用成员数据计数为0的注销消息注销GRP1
o To avoid having a single point of failure at the load balancer, an administrator may choose to have multiple load balancers in his or her environment. SASP provides for the GWM to keep track of multiple load balancers through the use of load balancer unique identifiers (LB UIDs).
o 为了避免负载平衡器出现单点故障,管理员可以选择在其环境中使用多个负载平衡器。SASP允许GWM通过使用负载平衡器唯一标识符(LB UID)来跟踪多个负载平衡器。
o To avoid having a single point of failure at the GWM or enhance the load balancing strategy by utilizing the strengths of several different GWMs, an administrator may choose to have multiple GWMs in his or her environment. In this case, the load balancer would
o 为了避免GWM出现单点故障,或者通过利用多个不同GWM的优势来增强负载平衡策略,管理员可以选择在其环境中使用多个GWM。在这种情况下,负载平衡器将
connect to multiple GWMs and register the same groups with corresponding members. The load balancer may choose to coordinate the recommendations of each GWM by any method it chooses (e.g., statistical combination such as averaging). The coordination of weights from multiple GWMs is product specific and not addressed in this protocol.
连接到多个GWM并向相应的成员注册相同的组。负载平衡器可以选择通过其选择的任何方法(例如,统计组合,如平均值)协调每个GWM的建议。来自多个GWM的权重协调是特定于产品的,本协议未涉及。
SASP is a binary stream expected to be transported over a TCP connection. To secure this protocol, it is expected that implementers of the protocol use a secure mode of transport such as SSL/TLS. Discussions around security concerns have been listed below:
SASP是预期通过TCP连接传输的二进制流。为了保护该协议,预期该协议的实现者使用安全的传输模式,如SSL/TLS。关于安全问题的讨论如下:
Security Issue: In insecure environments, if the LB UID becomes known by another system, the other system could initiate a connection and send messages to the GWM causing the GWM to replace the previous (possibly valid) connection for the new (potentially bad) connection.
安全问题:在不安全的环境中,如果另一个系统知道LB UID,则另一个系统可能会启动连接并向GWM发送消息,导致GWM为新的(可能是坏的)连接替换以前的(可能是有效的)连接。
Solution: This may not be a concern if the load balancer and GWM are in protected parts of the network. If the administrator is concerned about this vulnerability, she should use SSL or TLS to provide authentication for the connection. When using SSL or TLS to secure the connection, the administrator SHOULD use both server and client authentication through client and server certificates. The GWM will trust any certificate that is signed by an authority it's been configured to trust.
解决方案:如果负载平衡器和GWM位于网络的受保护部分,则这可能不是问题。如果管理员担心此漏洞,则应使用SSL或TLS为连接提供身份验证。使用SSL或TLS保护连接时,管理员应通过客户端和服务器证书使用服务器和客户端身份验证。GWM将信任由其配置为信任的机构签名的任何证书。
Security Issue: In insecure environments, if the load balancer turns the Trust Flag on, any member or other system can send a Registration Message and be included in the serverfarm to receive work. A person with bad intentions and the correct information could exploit this feature and register his own application to receive work. His counterfeit application could capture valuable data from unsuspecting clients as their transactions are sent to his system.
安全问题:在不安全的环境中,如果负载平衡器打开信任标志,则任何成员或其他系统都可以发送注册消息并包含在服务器场中以接收工作。具有恶意和正确信息的人可以利用此功能注册自己的应用程序以接收工作。当客户的交易被发送到他的系统时,他的伪造应用程序可以从毫无戒心的客户那里捕获有价值的数据。
Solution: This may not be a concern if the GWM and its members are in protected parts of the network. If the administrator is concerned about this vulnerability, she should use SSL or TLS to provide authentication for the member connections. When using SSL or TLS to authenticate the connection, the administrator would need to explicitly install valid certificates on each component
解决方案:如果GWM及其成员位于网络的受保护部分,则这可能不是一个问题。如果管理员担心此漏洞,则应使用SSL或TLS为成员连接提供身份验证。使用SSL或TLS对连接进行身份验证时,管理员需要在每个组件上显式安装有效证书
while at the same time establishing the trusted certificates of each component. This would make certain that only those trusted components would be permitted to connect to the GWM.
同时建立每个组件的可信证书。这将确保只允许那些受信任的组件连接到GWM。
[RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994.
[RFC1700]Reynolds,J.和J.Postel,“分配的数字”,标准2,RFC 1700,1994年10月。
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006.
[RFC4291]Hinden,R.和S.Deering,“IP版本6寻址体系结构”,RFC 42912006年2月。
The author gratefully acknowledges contributions by Mark Albert, David McCowan, John Fenton, Derek Huckaby, Dyan Collins, and Stefano Testa. Mark Albert, David McCowan, John Fenton, Derek Huckaby, Dyan Collins, and Stefano Testa were supported for this work by Cisco Systems Inc.
作者感谢马克·阿尔伯特、大卫·麦考恩、约翰·芬顿、德里克·哈卡比、迪安·柯林斯和斯特凡诺·泰斯塔的贡献。思科系统公司为马克·阿尔伯特、大卫·麦考恩、约翰·芬顿、德里克·哈卡比、迪安·柯林斯和斯特凡诺·泰斯塔的这项工作提供了支持。
The author would also like to thank John Arwe, Dave Bostjancic, Brian Carpenter, Donna Dillenberger, Gus Kassimis, and Thomas Narten for their efforts in the creation and refining of this work.
作者还要感谢John Arwe、Dave Bostjancic、Brian Carpenter、Donna Dillenberger、Gus Kassimis和Thomas Narten在这部作品的创作和完善过程中所做的努力。
Author's Address
作者地址
Alan Bivens IBM T.J. Watson Research Center 19 Skyline Drive Hawthorne, NY 10532 US
Alan Bivens IBM T.J.Watson研究中心美国纽约州霍桑市天际大道19号,邮编10532
EMail: jbivens@us.ibm.com
EMail: jbivens@us.ibm.com
Full Copyright Statement
完整版权声明
Copyright (C) The Internet Society (2006).
版权所有(C)互联网协会(2006年)。
This document is subject to the rights, licenses and restrictions contained in BCP 78 and at www.rfc-editor.org/copyright.html, and except as set forth therein, the authors retain all their rights.
本文件受BCP 78和www.rfc-editor.org/copyright.html中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
本文件及其包含的信息是按“原样”提供的,贡献者、他/她所代表或赞助的组织(如有)、互联网协会和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。
Intellectual Property
知识产权
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.
Acknowledgement
确认
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).
RFC编辑器功能的资金由IETF行政支持活动(IASA)提供。