Method and system for storing load balancing information with an HTTP cookie
DCFirst Claim
1. Method for load balancing access to a resource identified in a hyper text transport protocol (HTTP) request, comprising:
- (a) examining an HTTP request to determine when a Cookie is included with the HTTP request, the Cookie including information that indicates a destination for accessing the resource identified in the HTTP request;
(b) when the Cookie is included in the HTTP request, sending the HTTP request to the destination that is indicated by the Cookie'"'"'s information;
(c) generating an HTTP response at the destination, the HTTP response providing access to the requested resource;
(d) inserting a copy of the information in the Cookie into the HTTP response; and
(e) sending the HTTP response with the copy of the information in the Cookie to the sender of the HTTP request, so that a subsequent HTTP request to access the resource will include another Cookie with information indicating that the resource is accessible at the destination.
3 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A method and system for inserting and examining Cookies in the data streams of HTTP connections for the purpose of persistently directing HTTP connections to the same destination. The invention enables a network device to direct subsequent HTTP connections from the same client to the same server (destination) for accessing the requested resources. There are four modes for employing the Cookie to persistently direct HTTP connections. The associative mode inserts a Cookie that uniquely identifies the client into an HTTP response. The passive mode inserts Cookie information that uniquely identifies a previously selected destination into an HTTP response. In the rewrite mode, a network device manages the destination information that is rewritten over blank Cookie information generated by the destination producing the HTTP response. The insert mode inserts and removes Cookie information in the data packets for HTTP requests and responses prior to processing by the destination.
-
Citations
52 Claims
-
1. Method for load balancing access to a resource identified in a hyper text transport protocol (HTTP) request, comprising:
-
(a) examining an HTTP request to determine when a Cookie is included with the HTTP request, the Cookie including information that indicates a destination for accessing the resource identified in the HTTP request;
(b) when the Cookie is included in the HTTP request, sending the HTTP request to the destination that is indicated by the Cookie'"'"'s information;
(c) generating an HTTP response at the destination, the HTTP response providing access to the requested resource;
(d) inserting a copy of the information in the Cookie into the HTTP response; and
(e) sending the HTTP response with the copy of the information in the Cookie to the sender of the HTTP request, so that a subsequent HTTP request to access the resource will include another Cookie with information indicating that the resource is accessible at the destination. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
(a) sending the HTTP request to a server array controller that manages a plurality of node servers; and
(b) employing the server array controller to select one of the plurality of node servers to receive the HTTP request based on the information in the Cookie, the selected node server being associated with the destination.
-
-
3. The method of claim 2, wherein the selected node server generates the HTTP response.
-
4. The method of claim 3, further comprising including an identifier with the copy of the information in the Cookie, the identifier associating the selected node server with the destination.
-
5. The method of claim 4, further comprising encoding the identifier.
-
6. The method of claim 5, further comprising employing a mathematical product to encode the identifier.
-
7. The method of claim 6, wherein the mathematical product includes a hash value.
-
8. The method of claim 4, further comprising generating a time stamp that is included in the HTTP response.
-
9. The method of claim 4, further comprising:
-
(a) employing the server array controller to insert the copy of the information in the Cookie into the HTTP response; and
(b) employing the server array controller to rewrite a data packet that includes the HTTP response and the copy of the information in the Cookie.
-
-
10. The method of claim 4, wherein the selected node server generates the HTTP response and includes a blank identifier in the copy of the information in the Cookie.
-
11. The method of claim 10, further comprising employing the server array controller to write the identifier over the blank identifier in the copy of the information in the Cookie.
-
12. The method of claim 4, further comprising employing the selected node server to include the copy of the information in the Cookie with the generated HTTP response.
-
13. The method of claim 8, wherein the selected node server generates the time stamp that is included in the HTTP response.
-
14. The method of claim 8, wherein the server array controller generates the time stamp that is included in the HTTP response.
-
15. The method of claim 2, further comprising:
-
(a) when the Cookie is not included in the HTTP request, employing the server array controller to select one of the plurality of node servers to receive the HTTP request and generate the HTTP response providing access to the requested resource; and
(b) sending the HTTP response from the selected node server to the sender of the HTTP request, the HTTP response including information for creating another Cookie at the sender, so that a subsequent HTTP request to access the resource will include the other Cookie with information indicating that the selected node server is the destination for accessing the requested resource.
-
-
16. The method of claim 15, further comprising employing the server array controller to balance the load demand on the plurality of node servers by determining an optimal node server to receive the HTTP request and generate the HTTP response.
-
17. The method of claim 16, wherein the server array controller employs at least one of a plurality of functions to determine the optimal node server to balance the load demand on the plurality of node servers, the plurality of functions including round trip time, round robin, least connections, packet completion rate, quality of service, server array controller packet rate, topology, global availability, hops, static ratio and dynamic ratio.
-
18. The method of claim 2, further comprising:
-
(a) until the HTTP request is provided to the server array controller, employing the server array controller to buffer communication between the sender and the destination; and
(b) when the HTTP request is provided to the server array controller, replaying in consecutive order the buffered communication to at least one of the plurality of node servers that is associated with the destination.
-
-
19. The method of claim 1, further comprising including a plurality of Cookies in the HTTP request, each Cookie having a different type.
-
20. The method of claim 19, further comprising determining a type for each Cookie, the type of each Cookie indicating how the information included in each Cookie is to be utilized.
-
21. The method of claim 1, wherein the sender includes at least one of a client, server and host machine.
-
22. The method of claim 1, wherein the destination includes at least one of a host machine, server array controller, router, node server, firewall and client.
-
23. Method for load balancing access to a resource identified in a hyper text transport protocol (HTTP) request, comprising:
-
(a) examining an HTTP request to determine when a Cookie is included with the HTTP request, the Cookie including information that identifies a sender of the HTTP request;
(b) when the Cookie is included in the HTTP request, comparing the information identifying the sender to a table of at least one destination, the HTTP request being sent to a destination that is associated with the identified sender in the table;
(c) generating an HTTP response at the destination, the HTTP response providing access to the requested resource;
(d) inserting a copy of the information in the Cookie into the HTTP response; and
(e) sending the HTTP response with the copy of the information in the Cookie to the identified sender of the HTTP request, so that a subsequent HTTP request to access the resource from the identified sender will include another Cookie with information that identifies the sender of the subsequent HTTP request. - View Dependent Claims (24, 25, 26)
(a) employing the node server to insert blank information into the HTTP response; and
(b) employing the server array controller to rewrite the blank information to include the copy of the information in the Cookie, the server array controller sending the HTTP response with the copy of the information in the Cookie to the sender identified in the HTTP request.
-
-
27. A system for load balancing access to a resource indicated in a hyper text transport protocol (HTTP) request, comprising:
-
(a) a memory for storing logical instructions; and
(b) a processor for executing the logical instructions stored in the memory, the execution of the logical instructions causing functions to be performed including;
(i) examining an HTTP request to determine when a Cookie is included with the HTTP request, the Cookie including information that indicates a destination for accessing the resource identified in the HTTP request;
(ii) when the Cookie is included in the HTTP request, sending the HTTP request to the destination that is indicated by the Cookie'"'"'s information;
(iii) generating an HTTP response at the destination, the HTTP response providing access to the requested resource;
(iv) inserting a copy of the information in the Cookie into the HTTP response; and
(v) sending the HTTP response with the copy of the information in the Cookie to the sender of the HTTP request, so that a subsequent HTTP request to access the resource will include another Cookie with information indicating that the resource is accessible at the destination.
-
-
28. A system for load balancing access to a resource indicated in a hyper text transport protocol (HTTP) request, comprising:
-
(a) a memory for storing logical instructions; and
(b) a processor for executing the logical instructions stored in the memory, the execution of the logical instructions causing functions to be performed, including;
(i) examining an HTTP request to determine when a Cookie is included with the HTTP request, the Cookie including information that identifies a sender of the HTTP request;
(ii) when the Cookie is included in the HTTP request, comparing the information identifying the sender to a table of at least one destination, the HTTP request being sent to a destination that is associated with the identified sender in the table;
(iii) generating an HTTP response at the destination, the HTTP response providing access to the requested resource;
(iv) inserting a copy of the information in the Cookie into the HTTP response; and
(v) sending the HTTP response with the copy of the information in the Cookie to the identified sender of the HTTP request, so that a subsequent HTTP request to access the resource from the identified sender will include another Cookie with information that identifies the sender of the subsequent HTTP request.
-
-
29. A method for load balancing access to a resource identified in a hyper text transport protocol (HTTP) request, comprising:
-
(a) receiving an HTTP request at a server array controller from a sender;
(b) employing the server array controller to examine the HTTP request to determine when a Cookie is included with the HTTP request, wherein the Cookie includes information that indicates a destination server for accessing the resource identified in the HTTP request;
(c) sending the HTTP request to the destination server indicated by the Cookie'"'"'s information;
(d) at the destination server, generating an HTTP response that provides access to the requested resource and includes a copy of the information in the Cookie; and
(e) sending the HTTP response to the sender of the HTTP request, so that a subsequent HTTP request from the sender to access the resource will include another Cookie with information indicating that the resource is accessible at the destination server. - View Dependent Claims (30, 31, 32)
(a) adding a new Cookie to the HTTP request forwarded to the selected destination server; and
(b) rewriting the new Cookie with new information identifying the selected destination server and including the rewritten new Cookie in the HTTP response from the selected destination server.
-
-
33. A method for load balancing access to requests from at least one client to a plurality of servers, comprising:
-
(a) receiving a Hypertext Transfer Protocol (HTTP) request from a client, the HTTP request comprising a request for access to a resource provided by at least one of the plurality of servers;
(b) determining whether the HTTP request includes a Cookie comprising information associated with a destination server of the plurality of servers;
(c) if the HTTP request does not include said Cookie, selecting, by a server array controller, a server of the at least one of the plurality of servers based on a load balancing algorithm and forwarding the HTTP request to the selected server;
(d) receiving, by the server array controller, an HTTP reply from the selected server, the HTTP reply comprising Cookie information and a command to create a Cookie;
(e) writing, by the server array controller, in the Cookie information, identification data for identifying the selected server;
(f) sending the HTTP reply with the identification data to the client; and
(g) if the determining of step (b) determines that the HTTP request includes said Cookie, forwarding the HTTP request to the destination server. - View Dependent Claims (34, 35, 36, 37, 38)
-
-
39. A method for load balancing access to requests from at least one client to a plurality of server, comprising:
-
(a) receiving a Hypertext Transfer Protocol (HTTP) request from a client, the HTTP request comprising a request for access to a resource provided by at least one of the plurality of servers;
(b) determining whether the HTTP request includes a Cookie that comprises information identifying a destination server and expiration data that indicates expiration;
(c) if the HTTP request does not include said Cookie or if the expiration data indicates expiration, selecting a server from the at least one of the plurality of servers based on a load balancing algorithm and forwarding the HTTP request to the selected server;
otherwise, forwarding the HTTP request to the destiation server(d) receiving an HTTP reply from the selected server, the HTTP reply comprising Cookie information and a command to create a Cookie;
(e) writing, in the Cookie information, identification data for identity the selected server and expiration data that indicates expiration of the Cookie; and
(f) sending the HTTP reply with the Cookie information to the client. - View Dependent Claims (40, 41)
(a) determining an amount of traffic to the load balancer; and
(b) determining the expiration data at least partially based on the amount of traffic to the load balancer.
-
-
42. A method for load balancing access to requests from at least one client to a plurality of servers, comprising:
-
(a) receiving a Hypertext Transport Protocol (HTTP) request from a client, the HTTP request comprising a request for access to a resource provided by at least one of the plurality of servers;
(b) determining whether the HTTP request includes a Cookie comprising information associated with one of the plurality of servers;
(c) if the HTTP request does not include said Cookie, forwarding, by a server array controller, the HTTP request to a selected destination server of the at least one of the plurality of servers based on a load balancing algorithm;
(d) receiving, at the server array controller, an HTTP reply from the destination server;
(e) inserting, by the server array controller, in the HTTP reply, identification data for identifying the destination server and a command to create a Cookie;
(f) sending the HTTP reply with the Cookie information to the client; and
(g) if the determining of step (b) determines that the HTTP request includes said Cookie, forwarding the HTTP request to a destination server indicated by said Cookie. - View Dependent Claims (43, 44)
-
-
45. A method for load balancing access to requests from at least one client to a plurality of servers, comprising:
-
(a) receiving a Hypertext Transport Protocol (HTTP) request from a client, the HTTP request comprising a request for access to a resource provided by at least one of the plurality of servers;
(b) determines whether the HTTP request includes a Cookie comprising information associated with a specified one of the plurality of servers;
(c) if the HTTP request does not include said Cookie, forwarding the HTTP request to a selected server of the at least one of the plurality of servers based on a load balancing algorithm;
(d) receiving an HTTP reply from the selected server, the HTTP reply comprising an identification of the selected server and a command to create a Cookie;
(f) forwarding the HTTP reply to the client; and
(g) if the determining of step (b) determines that the HTTP request includes said Cookie, forwarding the HTTP request to the specified server. - View Dependent Claims (46)
(a) inserting expiration data in the HTTP reply;
(b) if the HTTP request includes said Cookie, determining whether the expiration data in said Cookie indicates expiration; and
(c) if the expiration data indicates expiration, forwarding the HTTP request to a server based on a load balancing algorithm.
-
-
47. A load balancing device in a network comprising a plurality of clients and a plurality of servers, comprising:
-
(a) a mechanism that receives a Hypertext Transport Protocol (HTTP) request from a client;
(b) computer executable instructions that determine a destination server of the plurality of servers, based on a load balancing algorithm;
(c) means for determining whether the client has previously communicated with the destination server, based on persistence information in an HTTP Cookie;
(d) means for, if the client has previously communicated with the destination server, determining the destination server, based on the persistence information in the HTTP Cookie; and
(e) computer executable instructions that forward the HTTP request to the destination server. - View Dependent Claims (48, 49, 50)
(a) computer executable instructions for receiving an HTTP reply from the destination server; and
(b) means for adding the persistence information to the HTTP reply.
-
-
51. A load balancing system, comprising:
-
(a) a plurality of servers;
(b) a controller that receives a Hypertext Transport Protocol (HTTP) request from a client and forwards the HTTP request to a destination server of the plurality of servers;
wherein the destination server sends to the controller an HTTP reply;
wherein the controller receives the HTTP reply, modifies the HTTP reply by adding persistence information in an HTTP Cookie, and sends the modified HTTP reply to the client;
wherein the controller determines whether a second HTTP request includes the HTTP Cookie comprising the persistence information; and
wherein if the second HTTP request includes the HTTP Cookie comprising the persistence information, forwarding the second HTTP request to the destination server. - View Dependent Claims (52)
-
Specification