Method providing server affinity and client stickiness in a server load balancing device without TCP termination and without keeping flow states
First Claim
1. A method of routing data from a client through one or more load-balancing routers to a selected load-balanced server among a plurality of servers in a network, the method comprising the steps of:
- receiving, at a load balancing node in a path from the client to the plurality of servers, a first packet of a request from a client;
creating and storing a mapping of flow identifying information, associated with the first packet, to a client stickiness label and a sending path list, wherein the send path list identifies a path in the network from the client to a selected server;
forwarding all subsequent packets associated with the client request to the selected load-balanced server based on looking up the client stickiness label of such subsequent packets in the mapping.
0 Assignments
0 Petitions
Accused Products
Abstract
A method of routing data from a client through one or more load-balancing routers to a selected load-balanced server among a plurality of servers in a network involves: receiving, at a load balancing node in a path from the client to the plurality of servers, a first packet of a request from a client; creating and storing a mapping of flow identifying information, associated with the first packet, to a client stickiness identifier; pushing the client stickiness label into a sending path list that is stored in association with the first packet; storing the client stickiness label in a mapping of client stickiness labels to server identifiers at a last load balancing node associated with the plurality of servers, wherein the mapping associates the client stickiness label with a server identifier that uniquely identifies a selected server that has been selected from among the plurality of servers to receive the client request; and forwarding all subsequent packets associated with the client request to the same selected server based on looking up the client stickiness label of such subsequent packets in the mapping. As a result, packet flows are rapidly routed from the same client to the same server without time-consuming hop-by-hop routing decisions or repeated load-balancing decisions.
82 Citations
71 Claims
-
1. A method of routing data from a client through one or more load-balancing routers to a selected load-balanced server among a plurality of servers in a network, the method comprising the steps of:
-
receiving, at a load balancing node in a path from the client to the plurality of servers, a first packet of a request from a client;
creating and storing a mapping of flow identifying information, associated with the first packet, to a client stickiness label and a sending path list, wherein the send path list identifies a path in the network from the client to a selected server;
forwarding all subsequent packets associated with the client request to the selected load-balanced server based on looking up the client stickiness label of such subsequent packets in the mapping. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21-43. -43. (canceled)
-
44. A computer-readable medium carrying one or more sequences of instructions for routing data from a client through one or more load-balancing nodes to a selected load-balanced server among a plurality of servers in a network, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
receiving, at a load balancing node in a path from the client to the plurality of servers, a first packet of a request from a client;
creating and storing a mapping of flow identifying information, associated with the first packet, to a client stickiness label and a send path list, wherein the send path list identifies a path in the network from the client to a selected server;
forwarding all subsequent packets associated with the client request to the selected load-balanced server based on looking up the client stickiness label of such subsequent packets in the mapping.
-
-
45. An apparatus for routing data from a client through one or more load-balancing nodes to a selected load-balanced server among a plurality of servers in a network, comprising:
-
means for receiving, at a last load balancing node associated with a selected server among the plurality of servers, a first packet of a server reply to a request from a client;
means for storing one or more identifiers of ingress interfaces on which the packet arrives, in a send path list, means for setting a first flag value in the first packet of the server reply;
means for receiving one or more subsequent packets of the client request;
means for setting a second flag value in each of the subsequent packets; and
means for forwarding the subsequent packets to the selected server on a route that is defined by the send path list and without hop-by-hop routing decisions.
-
-
46. (canceled)
-
47. A load-balancing router, comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions for routing data from a client through one or more load-balancing nodes to a selected load-balanced server among a plurality of servers in a network and which, when executed by the processor, cause the processor to carry out the steps of;
receiving a first packet of a request from a client, wherein the load balancing router is a load balancing node in a path from the client to the plurality of servers;
storing a mapping of flow identifying information, associated with the first packet, to a client stickiness label and a send path list, wherein the send path list identifies a path in the network from the client to a selected server; and
forwarding all subsequent packets associated with the client request to the selected server based on looking up the client stickiness label of such subsequent packets in the mapping. - View Dependent Claims (48, 49)
-
-
50. A load-balancing router, comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions for routing data from a client through one or more load-balancing nodes to a selected load-balanced server among a plurality of servers in a network and which, when executed by the processor, cause the processor to carry out the steps of;
storing a mapping of flow identifying information, associated with the first IP packet, to a client stickiness label and a return path list, wherein the return path list identifies a path in the network from a selected server to the client;
receiving a server reply request packet, wherein the load-balancing router is a first load-balancing node in the network on a path from the client to the server;
extracting the client stickiness identifier from an IP header of the subsequent server reply packet;
looking up the client stickiness identifier value in the mapping; and
forwarding the subsequent server reply packet on an egress interface that is determined based on a label in the mapping corresponding to the client stickiness identifier.
-
-
51. A load-balancing router, comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions for routing data from a client through one or more load-balancing nodes to a selected load-balanced server among a plurality of servers in a network and which, when executed by the processor, cause the processor to carry out the steps of;
storing a mapping of flow identifying information, associated with the first IP packet, to a unique server identifier and a send path list, wherein the send path list identifies a path in the network from the client to the selected server;
receiving a subsequent client request packet, wherein the load balancing router is a last load-balancing node in the network on a path from the client to the selected server;
extracting the server identifier value from an IP header of the subsequent client request packet;
looking up the server identifier value in the mapping; and
forwarding the subsequent client request packet on an egress interface that is determined based on a label in the mapping corresponding to the server identifier value.
-
-
52. A computer system for routing data from a client through one or more load-balancing routers to a selected load-balanced server among a plurality of servers in a network, the computer system comprising:
-
a first router node that is operable to receive a first packet of a request from a client, and operable to indicate to nodes in the path from said client to a selected server that the nodes are to update a send path list that identifies a path in the network from the client to a selected server;
a last router node associated with the plurality of servers, wherein the last router node is operable to store a client stickiness label in a mapping of client stickiness labels to server identifiers, and wherein the mapping associates the client stickiness label with a server identifier that uniquely identifies a selected server that has been selected from among the plurality of servers to receive the client request; and
an intermediate router node coupled communicatively between said first router node and said last router node, wherein the intermediate router is operable to update the send path list in response to receiving the first packet with the indication to update the send path list, and is operable to forward subsequent packets associated with the client request to the selected server on a route that is defined only by the send path list and without hop-by-hop routing decisions. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71)
-
Specification