Intelligent switching of client packets among a group of servers
First Claim
1. A method comprising:
- a step for maintaining a server load metric for each server in a group of servers;
a step for parsing application content from a packet;
a step for selecting a destination server from the group of servers, the step for selecting the destination server being dependent on the server load metric for each server;
a step for assigning a priority to the packet, the priority being dependent on the application content; and
a step for transmitting the packet to the destination server according to a transmitting schedule, the transmitting schedule being dependent on the priority,wherein the priority comprises a first priority or a second priority, the second priority is lower than the first priority, the destination server has a workload above a first redetermined level, and the transmitting schedule is constructed such that, if the packet comprises the first priority then the packet is transmitted to the destination server without delay and if the packet comprises the second priority then the packet is held back from being transmitted to the destination server.
2 Assignments
0 Petitions
Accused Products
Abstract
The content-aware application switch and methods thereof intelligently switch client packets to one server among a group of servers in a server farm. The switch uses Layer 7 or application content parsed from a packet to help select the server and to schedule the transmitting of the packet to the server. This enables refined load-balancing and Quality of-Service control tailored to the application being switched. In another aspect of the invention, a slow-start server selection method assigned an initially boosted server load metric to a server newly added to the group of servers under load balancing. This alleviates the problem of the new server being swamped initially due to a very low load metric compared to that of others. In yet another aspect of the invention, a switching method dependent on Layer 7 content avoids delayed binding in a new TCP session. Layer 7 content is not available during the initial handshaking phase of a new TCP session. The method uses the Layer 7 content from a previous session as an estimate to help select the server and uses a default priority to scheduling the transmitting of the handshaking packets. Updated Layer 7 content available after the handshaking phase is then used to reset the priority for the transmit schedule and becomes available for use in load balancing of the next TCP session.
-
Citations
40 Claims
-
1. A method comprising:
-
a step for maintaining a server load metric for each server in a group of servers; a step for parsing application content from a packet;
a step for selecting a destination server from the group of servers, the step for selecting the destination server being dependent on the server load metric for each server;a step for assigning a priority to the packet, the priority being dependent on the application content; and a step for transmitting the packet to the destination server according to a transmitting schedule, the transmitting schedule being dependent on the priority, wherein the priority comprises a first priority or a second priority, the second priority is lower than the first priority, the destination server has a workload above a first redetermined level, and the transmitting schedule is constructed such that, if the packet comprises the first priority then the packet is transmitted to the destination server without delay and if the packet comprises the second priority then the packet is held back from being transmitted to the destination server. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
a step for maintaining a server load metric for each server in a group of servers;
a step for parsing application content from a packet;
determining at least one eligible server from among the group of servers, wherein determining at least one eligible server is dependent at least in part upon the application content;a step for selecting a destination server from among the at least one eligible server; determining an estimated application load for the destination server, the estimated application load being dependent at least in part upon the application content; a step for assigning a priority to the packet, the priority being dependent at least in part upon the application content; and a step for transmitting the packet to the destination server according to a transmitting schedule, the transmitting schedule being dependent at least in part upon the priority and the server load metric for each server;
wherein the step for selecting the destination server is dependent at least in part upon the server load metric for each server in the group of servers and the estimated application load. - View Dependent Claims (7, 8, 9)
-
-
10. A method comprising:
-
a step for maintaining a server load metric for each server in a group of servers, wherein each server load metric provides a number of current server connections; a step for adding a load balancing server to the group of servers, the load balancing server having a load balancing server load metric that provides a number of current server connections for the load balancing server; a step for comparing the load balancing server load metric with an average server load metric for the group of servers; a step for determining a disparity between the load balancing server load metric and the average server load metric; a step for multiplying a time-varying factor to the load balancing server load metric such that the disparity is substantially reduced to below a predetermined value; a step for selecting a destination server from among the group of servers, the destination server comprising a destination server load metric; and a step for transmitting a packet to the destination server. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A method comprising:
-
a step for maintaining a server load metric for each server in a group of servers, wherein each server load metric provides a number of current server connections; a step for adding a load balancing server to the group of servers, the load balancing server comprising a load balancing server load metric that provides a number of current server connections for the load balancing server; a step for comparing the load balancing server load metric with an average server load metric for the group of servers; a step for determining a disparity between the load balancing server load metric and the average server load metric;
a step for multiplying the load balancing server load metric by a factor of 2k, k being an integer;a step for reducing k by a factor of two until 2k becomes unity;
a step for selecting a destination server from among the group of servers, the destination server comprising a destination server load metric; anda step for transmitting a packet to the destination server. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
-
25. A method comprising:
-
a step for maintaining a server load metric for each server in a group of servers; a step for parsing application content from a packet; a step for updating the server load metric for each server in the group of servers when a TOP session is not in an initial handshaking phase; determining an estimated application load based upon the application content; a step for selecting a destination server from among the group of servers, the step for selecting being dependent at least in part upon the server load metric for each server; a step for assigning a priority to the packet, wherein, if the TCP session is not in an initial handshaking phase then the priority is dependent at least in part upon the application content and if the TCP session is in an initial handshaking phase then the priority comprises a default priority; and a step for transmitting the packet to the destination server according to a transmitting schedule that is dependent at least in part upon the priority. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
Specification