Content-aware application switch and methods thereof
First Claim
1. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
- receiving a packet;
parsing application content from said packet;
maintaining a set of server load metrics associated with the servers among said group of servers;
selecting a destination server for said packet from among said group of servers, said selection being dependent on said set of server load metrics;
assigning to said packet a priority dependent on said parsed application content; and
transmitting said packet to the destination server according to a transmitting schedule dependent on said priority.
4 Assignments
0 Petitions
Accused Products
Abstract
A 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
74 Claims
-
1. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
receiving a packet;
parsing application content from said packet;
maintaining a set of server load metrics associated with the servers among said group of servers;
selecting a destination server for said packet from among said group of servers, said selection being dependent on said set of server load metrics;
assigning to said packet a priority dependent on said parsed application content; and
transmitting said packet to the destination server according to a transmitting schedule dependent on said priority. - View Dependent Claims (2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 16, 18, 19, 20, 21)
-
-
6. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
receiving a packet;
parsing application content from said packet;
maintaining a set of server load metrics associated with the servers among said group of servers;
determining a group of eligible servers among said group of servers, said determination being dependent on said parsed application content;
determining an estimated application load on the destination server, said estimated application load being dependent on said parsed application content;
selecting a destination server for said packet from among said group of eligible servers, said selection being dependent on said set of server load metrics and said estimated application load;
assigning to said packet a priority dependent on said parsed application content; and
transmitting said packet to the destination server according to a transmitting schedule dependent on said priority and said set of server load metrics. - View Dependent Claims (7)
-
-
12. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
receiving a packet;
parsing application content from said packet;
assigning to said packet a priority dependent on said parsed application content; and
dropping the packet if its assigned priority corresponds to a predetermined type.
-
-
13. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
receiving a packet;
parsing application content from said packet; and
enforcing security by reference to an access control list dependent on said parsed application content.
-
-
17. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
a buffer memory for storing individual packets;
a content class table defining a set of content classes with respect to a corresponding set of application content;
a class policy table associating a priority to a given content class;
a server table providing a set of server load metrics associated with the servers among said group of servers;
a packet classifier for assigning a content class to a packet, said packet classifier parses the application content from said packet and determines said content class by reference to said content class table for said parsed application content;
a load balancer for selecting a destination server from among said group of servers based on a set of server load metrics by reference to said server table for said group of servers;
a Quality-of-Service controller for scheduling transmission of said packet to the destination server according to a priority assigned to said packet by reference to said class policy table for said content class; and
a transmitter, responsive to said load balancer and said Quality-of-Service controller for releasing said packet from said buffer to the destination server in the order the packet is scheduled. - View Dependent Claims (24, 26)
-
-
22. A switch for switching a packet to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
a buffer memory for storing said packet;
a content class table defining a set of content classes with respect to a corresponding set of application content;
a class policy table associating a priority to a given content class;
a server group table associating a content class to a group of eligible servers;
an application load table associating a content class to an estimated application load on the selected server;
a server table providing a set of server load metrics associated with the servers among said group of servers;
a packet classifier for assigning a content class to said packet, said packet classifier parses the application content from said packet and determines said content class by reference to said content class table for said parsed application content;
a load balancer for selecting a destination server from among said group of servers, said selecting being restricted to a group of eligible servers by reference to said server group table for said content class, and said selecting being based on said set of server load metrics by reference to said server table for said group of eligible servers and based on an estimated application load by reference to said application load table for said content class;
a Quality-of-Service controller for scheduling transmission of said packet to the destination server according to a priority assigned to said packet by reference to said class policy table for said content class and said set of server load metrics; and
a transmitter, responsive to said load balancer and said Quality-of-Service controller for releasing said packet from said buffer to the destination server in the order the packet is scheduled. - View Dependent Claims (23, 25, 27, 30, 31, 32)
-
-
28. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
a buffer memory for storing individual packets;
a content class table defining a set of content classes with respect to a corresponding set of application content;
a class policy table associating a priority to a given content class;
a packet classifier for assigning a content class to a packet, said packet classifier parses the application content from said packet and determines said content class by reference to said content class table for said parsed application content; and
a transmit controller for dropping the packet if its assigned priority corresponds to a predetermined type.
-
-
29. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
a buffer memory for storing individual packets;
a content class table defining a set of content classes with respect to a corresponding set of application content;
an access control list table associating security access instructions to a given content class;
a packet classifier for assigning a content class to a packet, said packet classifier parses the application content from said packet and determines said content class by reference to said content class table for said parsed application content; and
a transmit controller responsive to said access control list table for enforcing securing access of the packet.
-
-
33. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
means for receiving a packet;
means for parsing application content from said packet;
means for maintaining a set of server load metrics associated with the servers among said group of servers;
means for selecting a destination server for said packet from among said group of servers, said selection being dependent on said set of server load metrics;
means for assigning to said packet a priority dependent on said parsed application content; and
means for transmitting said packet to the destination server according to a transmitting schedule dependent on said priority. - View Dependent Claims (34, 35, 36, 37, 39, 40, 41, 42, 43)
-
-
38. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
means for receiving a packet;
means for parsing application content from said packet;
means for maintaining a set of server load metrics associated with the servers among said group of servers;
means for determining a group of eligible servers among said group of servers, said determination being dependent on said parsed application content;
means for determining an estimated application load on the destination server, said estimated application load being dependent on said parsed application content;
means for selecting a destination server for said packet from among said group of eligible servers, said selection being dependent on said set of server load metrics and said estimated application load;
means for assigning to said packet a priority dependent on said parsed application content; and
means for transmitting said packet to the destination server according to a transmitting schedule dependent on said priority and said set of server load metrics.
-
-
44. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
means for receiving a packet;
means for parsing application content from said packet;
means for assigning to said packet a priority dependent on said parsed application content; and
means for dropping the packet if its assigned priority corresponds to a predetermined type. - View Dependent Claims (46, 47, 48, 50, 51)
-
-
45. A switch for switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, comprising:
-
means for receiving a packet;
means for parsing application content from said packet; and
means for providing application layer security by enforcing access control dependent on said parsed application content.
-
-
49. A method of switching packets to a server among a group of servers including a newly added server participating in load balancing, comprising:
-
maintaining a set of server load metrics associated with the servers among said group of servers, wherein a load metric associated with a server is dependent on the number of connections currently made hereto, and a disparity initially exists in server load metrics between said newly added server and that of other servers among said group of servers;
multiplying a time-varying factor to the server load metric for said newly added server such that said disparity is substantially reduced to below a predetermined level over a predefined period of time;
selecting for a packet a destination server having a minimum server load metric among said group of servers; and
transmitting said packet to the destination server. - View Dependent Claims (53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 68, 69, 70, 71, 72, 73, 74)
-
-
52. A method of switching packets to a server among a group of servers including a newly added server participating in load balancing, comprising:
-
maintaining a set of server load metrics associated with the servers among said group of servers, wherein a load metric associated with a server is dependent on the number of connections currently made hereto, and a disparity initially exists in server load metrics between said newly added server and that of other servers among said group of servers;
multiplying a factor of 2k, with k being an integer, to the server load metric for said newly added server;
reducing said factor of 2k by a factor of two at predefined periods until unity is reached;
selecting for said packet a destination server having a minimum server load metric among said group of servers; and
transmitting said packet to the destination server.
-
-
59. A method of switching packets to a server among a group of servers, wherein individual packets carry content associated with an application, said method comprising:
-
maintaining a set of server load metrics associated with the servers among said group of servers, receiving a packet during a TCP session;
parsing application content from said packet;
updating said set of server load metrics only when the TCP session is not in an initial handshaking phase, said updating incorporating an estimated application load determined with reference to the application content parsed from said packet;
selecting a destination server for said packet from among said group of servers, said selection being dependent on said set of server load metrics;
assigning to said packet a priority dependent on application content parsed from said packet only when the TCP session is not in an initial handshaking phase, otherwise assigning to said packet a default priority; and
transmitting said packet to the destination server according to a transmitting schedule dependent on said priority - View Dependent Claims (64, 67)
-
Specification