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 sending path list identifies a path in the network from the client to a selected server;
storing identifiers of egress interfaces on which the first packet arrives, in the sending path list, as the first packet of the client request is routed to the plurality of servers using hop-by-hop routing decisions; and
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 and without hop-by-hop routing decisions.
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.
45 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 and a sending path list, wherein the sending path list identifies a path in the network from the client to a selected server; storing identifiers of egress interfaces on which the first packet arrives, in the sending path list, as the first packet of the client request is routed to the plurality of servers using hop-by-hop routing decisions; and 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 and without hop-by-hop routing decisions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable storage medium storing 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; and 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.
-
-
21. 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, wherein the first flag indicates that all nodes, of the load-balancing nodes, should update the send path list as the first packet is routed from the last load balancing node to the client using hop-by-hop routing decisions; 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, wherein the second flag value instructs nodes, of the load-balancing nodes, to use the send path list for routing 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.
-
-
22. 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 sending path list identifies a path in the network from the client to a selected server; storing an identifier of an egress interface on which the first packet arrives, in the sending path list, as the first packet of the client request is routed to the plurality of servers using hop-by-hop routing decisions; 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 (23, 24)
-
-
25. 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, and wherein the return path list stores identifiers of egress interfaces; 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, of the egress interfaces in the return path list, that is determined based on a label in the mapping corresponding to the client stickiness identifier.
-
-
26. 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, and wherein the send path list stores identifiers of egress interfaces on which the first IP packet arrives as the IP packet is routed to the selected server using hop-by-hop routing decisions; 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, of the egress interfaces in the send path list, that is determined based on a label in the mapping corresponding to the server identifier value.
-
-
27. 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, based on hop-by-hop routing decisions, 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, based on a hop-by-hop routing decision, 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 (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
Specification