Next: Design solutions for efficiency Up: Design of a scalable Previous: One-way architecture
23], must be communicated to a Web server node, in order to be able to recreate that connection in the same state it was before being transferred. Besides this, the Web server node must also receive the application-level information (usually, a client request) that started the connection transfer process. Both information (TCP connection state and client request) may be logically chained in an entity which we call TCP Handoff request. The name is justified by the following observation: a TCP Handoff request contains the minimum amount of information which is needed to shift the request serving process from one node to another. Upon the receipt of a TCP Handoff request, the Web server extracts the TCB and recreates the TCP connection. Next, it obtains the application-layer information which is tailed into the server process receive queues. Request parsing. The Web server which must serve a client request is chosen according to (a well-defined portion of) the application-level information contained in the request. Hence, it is necessary to provide a means for parsing the client request, with the goal of extracting the required information which will be used by the dispatching policy. It is worth noting that the parsing functionality is strictly related to the dispatching policy. Different policies may require different portions of a client request, such as parts of an URL, cookies, or even SSL identifiers. Dispatching mechanism. This is the second most critical phase after the TCP connection transfer. The distribution of client requests across cluster nodes requires an algorithm to take decisions and a mechanism to execute assignment decisions. In this paper, we consider content-aware request scheduling, so the dispatching policy (generally) uses some information extracted by the request parsing mechanism to identify the cluster node which is able to fulfill the request. Evaluation of Web server load conditions. Many dispatching policies use some information related to the Web server load status to perform a sub-optimal assignment or, at least, to minimize the risks of load unbalance. It has been widely shown that the introduction of state-awareness leads to smarter assignments than those performed by state-blind policies. However, a state-aware algorithm requires a mechanism for evaluating the conditions of a Web server node, which we call load monitor. The load monitor may be centralized or distributed. A centralized monitor runs entirely on the switch and treats the Web server nodes as ''black boxes''. A distributed monitor collects state information directly on the Web server node, which is then communicated to the switch. The former approach is typically easier to implement, since it does not require a communication mechanism. However, it does not estimate the server load as well as the distributed approach, that is able to access directly to the operating system internals. Server load information tends to become obsolete quickly ; thus, it is preferable to avoid time-synchronous updates every seconds. A better alternative is to update the server load coefficients synchronously with events, like the successful transfer of a connection and the closure of a transferred connection. Forwarding mechanism. Client packets subsequent to the received response segments cannot be handled anymore by the switch; they must be handled by the appropriate Web server. For this reason, the switch must be enriched with a mechanism for intercepting client packets and for delivering them to the Web server to which the TCP connection has been transferred. This operation requires a modification of some fields of the TCP/IP header, such as the IP and MAC destination addresses which have to be set to those of the real Web server. Such modifications imply the (re)computation of the IP and TCP checksums before the delivery of the packet to the Web server. It is of crucial importance that the forwarding mechanism be as fast as possible, otherwise the traffic between the client and the server is seriously slowed down. Typically, the operations involved in the forwarding module are CPU-bound, because of the TCP and IP checksum computation. Due to the large number of simultaneous open connections handled by a switch, the design of a forwarding mechanism which scales well in an SMP architecture is mandatory. Transparency. The whole TCP Handoff mechanism must be transparent to the clients. In other words, the responses and the end-to-end semantics of all TCP/IP operations must remain the same as if the client was connected to one Web server. This implies that response packets must look as if they were sent by the Web switch. Typically, this requires at least the modification of the following fields of a TCP/IP packet: source IP address, and TCP timestamp option . Making the entire mechanism transparent also to the server processes is an important plus, as the Web server applications must be portable and should not require modifications to work in one-way Web clusters.
Next: Design solutions for efficiency Up: Design of a scalable Previous: One-way architecture Mauro Andreolini 2003-03-13