Method and apparatus for routing data to a load balanced server using MPLS packet labels
First Claim
1. A method of routing data from a client to a selected load-balanced server among a plurality of servers in a network that comprises a plurality of load-balancing nodes, the method comprising the steps of:
- receiving a first packet of a client request at one of the load-balancing nodes in the network;
storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
receiving one or more subsequent packets of the client request;
receiving a label value;
storing the label value in a load balancing mapping at the last node that associates the label with the flow and interface identifying information; and
forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decisions.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of routing data to a load-balanced server through a network having one or more load-balancing nodes is disclosed. The first packet of a client request is received at one of the load-balancing nodes, which stores information identifying a flow associated with the packet and an incoming interface identifier. The node then makes a server load-balancing decision and stores an outgoing interface identifier. When the packet reaches the last load-balancing node before the selected server, that last node also requests an MPLS label to uniquely identify the flow, connection and route. The label is stored in a mapping at the last node that associates the label with the flow and interface identifying information. The packet is routed to the selected server. The first server response packet is switched hop-by-hop and the MPLS label is stored at each node traversed by the response packets, in association with a flow identifier and incoming and outgoing interface identifiers. For all other packets in the request and response, nodes fast-switch the packets based on the label mappings. 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
22 Claims
-
1. A method of routing data from a client to a selected load-balanced server among a plurality of servers in a network that comprises a plurality of load-balancing nodes, the method comprising the steps of:
-
receiving a first packet of a client request at one of the load-balancing nodes in the network;
storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
receiving one or more subsequent packets of the client request;
receiving a label value;
storing the label value in a load balancing mapping at the last node that associates the label with the flow and interface identifying information; and
forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decisions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of routing data from a client to a selected load-balanced server among a plurality of servers in a network that comprises a plurality of load-balancing nodes, the method comprising the steps of:
-
receiving a first packet of a client request at one of the load-balancing nodes in the network;
performing a load-balancing decision to result in selecting one of the plurality of servers to receive the client request;
storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
receiving one or more subsequent packets of the client request;
receiving an MPLS label value;
storing the MPLS label value in a load balancing mapping at the last node that associates the MPLS label with the flow and interface identifying information; and
forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decision. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable medium carrying one or more sequences of instructions for routing data from a client to a selected load-balanced server among a plurality of servers in a network that comprises a plurality of load-balancing nodes, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
-
receiving a first packet of a client request at one of the load-balancing nodes in the network;
storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
receiving one or more subsequent packets of the client request;
receiving a label value;
storing the label value in a load balancing mapping at the last node that associates the label with the flow and interface identifying information; and
forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decisions.
-
-
21. An apparatus for routing data from a client to a selected load-balanced server among a plurality of servers in a network that comprises a plurality of load-balancing nodes, comprising:
-
means for receiving a first packet of a client request at one of the load-balancing nodes in the network;
means for storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
means for receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
means for receiving one or more subsequent packets of the client request;
means for receiving a label value;
means for storing the label value in a load balancing mapping at the last node that associates the label with the flow and interface identifying information; and
means for forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decisions.
-
-
22. A load-balancing router configured for routing data from a client to a selected load-balanced server among a plurality of servers in a network, comprising:
-
a network interface that is coupled to the data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of;
receiving a first packet of a client request at one of the load-balancing nodes in the network;
storing information identifying a flow associated with the first packet, an identifier of an interface of that node on which the first packet arrived, and an outgoing interface identifier;
receiving a first packet of a server reply at a last node associated with a selected server among the plurality of servers;
receiving one or more subsequent packets of the client request;
receiving a label value;
storing the label value in a load balancing mapping at the last node that associates the label with the flow and interface identifying information; and
forwarding the subsequent packets to the selected server on a route that is defined by the load-balancing mapping and without hop-by-hop routing decisions.
-
Specification