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;
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.
1 Assignment
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.
-
Citations
46 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; 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method of routing data from a client through one or more content routers to a selected load-balanced server among a plurality of servers in a network, the method comprising the steps of:
-
creating and storing a label value at each of the content routers that indicates how to forward packets associated with requests from the client; receiving a first packet of a client request at a first content router in the network between the client and the plurality of servers; mapping flow identifying information associated with the first packet to a client stickiness identifier in a persistent mapping that is stored at the first content router; inserting the client stickiness identifier in the first packet and all subsequent packets; mapping the client stickiness identifier to the label value; and fast switching the client request to a selected server based on the label value. - View Dependent Claims (22, 23, 24, 25)
-
-
26. A method of routing data from a client through one or more content routers to a selected load-balanced server among a plurality of servers in a network, the method comprising the steps of:
-
creating and storing a label value at each of the content routers that indicates how to forward packets associated with requests from the client; receiving a first packet of a client request at a first content router in the network between the client and the plurality of servers; mapping flow identifying information associated with the first packet to the label value in a persistent mapping that is stored at the first content router; fast switching the client request to a selected server based on the label value receiving one or more subsequent packets of the client request; creating a two-level stack frame in each of the subsequent packets; pushing the label value into a first level of the stack frame; pushing a second label value into a second level of the stack frame, wherein the second label value identifies a path from a last content router in the network to a selected server among the plurality of servers; and forwarding the packet to the selected server through a next content router in the network. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33)
-
-
34. 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 IP packet of a request from a client; creating and storing a mapping of flow identifying information, associated with the first IP packet, to a client stickiness identifier and a return path list, at a last load balancing node associated with the plurality of servers, wherein the return path list identifies a path in the network from a selected server to the client; storing the client stickiness identifier in a field of an IP header of the first IP packet; and forwarding all subsequent server reply packets associated with the client request to the same client based on obtaining the client stickiness identifier from the IP header of client request packets and looking up the client stickiness identifier in the mapping. - View Dependent Claims (38, 39)
-
-
35. 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 IP packet of a request from a client; creating and storing a mapping of flow identifying information, associated with the first IP packet, to a unique server identifier and a send path list, at a last load balancing node associated with the plurality of servers, wherein the send path list identifies a path in the network from the client to a selected server; storing the server identifier in a field of an IP header of the first IP packet; and forwarding all subsequent IP packets associated with the client request to the same selected server based on obtaining the server identifier from the IP header of such packets and looking up the server identifier in the mapping. - View Dependent Claims (36, 37)
-
-
40. A method of 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, the method comprising the steps of:
-
receiving, at a last load balancing node associated with a selected server among the plurality of servers, a first packet of the client request at the last node; storing a client stickiness label in a cookie at the client in response to receiving the first packet of the client request at the last node; storing one or more identifiers of ingress interfaces on which the packet arrives, in a send path list for server load balancing, as the first packet of the server reply is routed from the last load balancing node to the client using hop-by-hop decisions; receiving one or more subsequent packets of the client request; retrieving the client stickiness label from the cookie in response to receiving subsequent packets of the client request at the last node, and forwarding the subsequent packets of the client request to the selected server based on the client stickiness label. - View Dependent Claims (41, 42, 43)
-
-
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; 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.
-
-
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, as the first packet of the server reply is routed from the selected server to the client using hop-by-hop decisions; 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. 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, 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; storing one or more identifiers of ingress interfaces on which the packet arrives, in a send path list, as the first packet of the server reply is routed from the selected server to the client using hop-by-hop decisions; setting a first flag value in the first packet of the server reply; receiving one or more subsequent packets of the client request; setting a second flag value in each of the subsequent packets; and 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.
-
Specification