Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
First Claim
1. A method for enabling sessions established between a client and a server to be uniquely defined to enhance the performance of a load balancing system, the method comprising the steps of:
- invoking client-side TCP executable instructions;
receiving a packet from a client connected to a network, the packet including a sender session identifier, wherein the load balancing system includes a first session identifier pool and a second session identifier pool, wherein the first session identifier pool and the second session identifier pool together contain a range of unique session identifiers that are each distributed amongst a plurality of nodes within the load balancing system such that each node has its own pool of exclusive session identifiers, wherein the sender session identifier is determined by at least one of the following;
invoking the TCP executable instructions to obtain the sender session identifier from the first session identifier pool of available session identifiers;
using an application that invoked the TCP executable instructions to automatically assign the sender session identifier; and
querying a service that resides on a node to obtain the sender session identifier from the second session identifier pool of available session identifiers;
parsing the packet to obtain the sender session identifier;
hashing over at least the sender session identifier to determine which node within the load balancing system will acquire the packet; and
acquiring the packet by a single determinant node based on the results of the hashing step.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for enhancing a load balancing network'"'"'s ability to load balance sessions is presented. A session identifier is placed within the TCP packet to enable a new mechanism of load distribution and connection grouping within a load balancing system. Specifically, TCP is invoked by a user application to obtain a unique session identifier value. TCP places the session identifier as a sender session identifier within the OPTIONS field of the TCP header. As an alternative, a session identifier can be placed within a session header that is attached to the TCP packet. On receiving such a packet, the destination load balancing system hashes over at least the session identifier value, and the node corresponding to the results of the hash algorithm acquires the packet. This method of hashing ensures that the same node acquires all subsequently received TCP packets possessing the same session identifier regardless of the source IP address or source port information. The node then places an identical session identifier value in the form of a response session identifier in its TCP response packet. When the TCP packet with response session identifier is received at a load balancing system, the node whose session identifier matches the response session identifier acquires it. This ensures that a response to a node assigned to a virtual IP address is received by the proper node, thus preventing other member nodes assigned to the same VIP address from picking up the packet instead.
27 Citations
18 Claims
-
1. A method for enabling sessions established between a client and a server to be uniquely defined to enhance the performance of a load balancing system, the method comprising the steps of:
-
invoking client-side TCP executable instructions; receiving a packet from a client connected to a network, the packet including a sender session identifier, wherein the load balancing system includes a first session identifier pool and a second session identifier pool, wherein the first session identifier pool and the second session identifier pool together contain a range of unique session identifiers that are each distributed amongst a plurality of nodes within the load balancing system such that each node has its own pool of exclusive session identifiers, wherein the sender session identifier is determined by at least one of the following; invoking the TCP executable instructions to obtain the sender session identifier from the first session identifier pool of available session identifiers; using an application that invoked the TCP executable instructions to automatically assign the sender session identifier; and querying a service that resides on a node to obtain the sender session identifier from the second session identifier pool of available session identifiers; parsing the packet to obtain the sender session identifier; hashing over at least the sender session identifier to determine which node within the load balancing system will acquire the packet; and acquiring the packet by a single determinant node based on the results of the hashing step. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for enabling sessions established between a client and a server to be uniquely defined to enhance the performance of a load balancing system, the method comprising the steps of:
-
invoking client-side TCP executable instructions; identifying an available sender session identifier for uniquely identifying a session between the client and the server, wherein the load balancing system includes a first session identifier pool and a second session identifier pool, wherein the first session identifier pool and the second session identifier pool together contain a range of unique session identifiers that are each distributed amongst a plurality of nodes within the load balancing system such that each node has its own pool of exclusive session identifiers, wherein the step of identifying further comprises at least one of the following; invoking the TCP executable instructions to obtain the sender session identifier from the first session identifier pool of available session identifiers; using an application that invoked the TCP executable instructions to automatically assign the sender session identifier; and querying a service that resides on a node to obtain the sender session identifier from the second session identifier pool of available session identifiers; forming a packet to be transmitted over a network to a destination IP address, the packet containing information that includes the sender session identifier; and transmitting the packet to the destination IP address. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. One or more computer-readable media containing computer-executable instructions that, when executed, implement a computer process for enabling sessions established between a client and a server to be uniquely defined to enhance the performance of a load balancing system, the computer process comprising:
-
invoking client-side TCP executable instructions; receiving a TCP packet having a TCP header and an OPTIONS field from a computing device associated with a source IP address, the packet including a session identifier wherein the load balancing system includes a first session identifier pool and a second session identifier pool, wherein the first session identifier pool and the second session identifier pool together contain a range of unique session identifiers that are each distributed amongst a plurality of nodes within the load balancing system such that each node has its own pool of exclusive session identifiers, wherein the session identifier is determined by at least one of the following; invoking the TCP executable instructions to obtain the session identifier from the first session identifier pool of available session identifiers; using an application that invoked the TCP executable instructions to automatically assign the session identifier; and querying a service that resides on a node to obtain the session identifier from the second session identifier pool of available session identifiers; parsing the packet to identify the session identifier; hashing over at least the session identifier to determine which node within the load balancing system will acquire the packet; acquiring the packet by a single determinant node based on results of the hashing step, wherein all subsequently received packets carrying the same session identifier are acquired by the same determinant node; and establishing a connection between the source IP address and a destination IP address associated with a second computing device by allocating a TCP control block for the connection.
-
Specification