Method and apparatus providing highly scalable server load balancing
First Claim
1. A method of providing highly scalable network server load balancing, the method comprising the steps of:
- receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
selecting a particular server site to process the client request;
determining a first path from the first router through a network to a second router associated with the particular server site, and a second path from the first router to a server load-balancing device associated with the second router;
creating and storing a mapping of flow identifying information, associated with the packet, to a first multi-protocol label switching (MPLS) label value that identifies the first path and to a second MPLS label value that identifies the second path;
storing the first MPLS label value and the second MPLS label value in the packet;
distributing the first and second MPLS label values to the network by attaching the first and second MPLS label values to a discovery request packet that is sent into the network by the first router;
forwarding all subsequent packets associated with the client request to the server load-balancing device based on looking up the first MPLS label value and second MPLS label value in the mapping, wherein the server load-balancing device does not terminate any TCP connections;
receiving a cookie containing server address information from the second router, wherein the server address information identifies a server that is managed by the load-balancing device; and
storing the server address information in the mapping of flow identifying information.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus providing highly scalable server load balancing are disclosed. Data packets from a client are routed through one or more routers to a server load balancer, which is selected from among a plurality of server load balancers in a network. In response to receiving a request packet, a particular server site to process the client request is selected. A first path to a second router associated with the particular server site, and a second path to a server load-balancing device associated with the second router, are determined. A mapping of flow identifying information, associated with the packet, to a first label value that identifies the first path and to a second label value that identifies the second path, is created. The first label value and the second label value are stored in the packet. All subsequent packets associated with the client request are forwarded to the server load-balancing device based on looking up the first label value and second label value in the mapping. As a result, a network is scalable to process and load-balance numerous client requests, which are efficiently routed to the site, server load-balancer, and server that are handling the request.
-
Citations
22 Claims
-
1. A method of providing highly scalable network server load balancing, the method comprising the steps of:
- receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
selecting a particular server site to process the client request;
determining a first path from the first router through a network to a second router associated with the particular server site, and a second path from the first router to a server load-balancing device associated with the second router;
creating and storing a mapping of flow identifying information, associated with the packet, to a first multi-protocol label switching (MPLS) label value that identifies the first path and to a second MPLS label value that identifies the second path;
storing the first MPLS label value and the second MPLS label value in the packet;
distributing the first and second MPLS label values to the network by attaching the first and second MPLS label values to a discovery request packet that is sent into the network by the first router;
forwarding all subsequent packets associated with the client request to the server load-balancing device based on looking up the first MPLS label value and second MPLS label value in the mapping, wherein the server load-balancing device does not terminate any TCP connections;
receiving a cookie containing server address information from the second router, wherein the server address information identifies a server that is managed by the load-balancing device; and
storing the server address information in the mapping of flow identifying information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
- receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
-
10. A computer-readable storage medium storing one or more sequences of instructions for providing highly scalable network server load balancing, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
- receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
selecting a particular server site to process the client request;
determining a first path from the first router through a network to a second router associated with the particular server site, and a second path from the client to a server load-balancing device associated with the second router;
creating and storing a mapping of flow identifying information, associated with the packet, to a first multi-protocol label switching (MPLS) label value that identifies the first path and to a second MPLS label value that identifies the second path;
storing the first MPLS label value and the second MPLS label value in the packet;
distributing the first and second MPLS label values to the network by attaching the first and second MPLS label values to a discovery request packet that is sent into the network by the first router;
forwarding all subsequent packets associated with the client request to the server load-balancing device based on looking up the first MPLS label value and second MPLS label value in the mapping, wherein the server load-balancing device does not terminate any TCP connections;
receiving a cookie containing server address information from the second router, wherein the server address information identifies a server that is managed by the load-balancing device; and
storing the server address information in the mapping of flow identifying information.
- receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
-
11. An apparatus for providing highly scalable network server load balancing, comprising:
- means for receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
means for selecting a particular server site to process the client request;
means for determining a first path from the first router through a network to a second router associated with the particular server site, and a second path from the client to a server load-balancing device associated with the second router;
means for creating and storing a mapping of flow identifying information, associated with the packet, to a first multi-protocol label switching (MPLS) label value that identifies the first path and to a second MPLS label value that identifies the second path;
means for storing the first MPLS label value and the second MPLS label value in the packet;
means for distributing the first and second MPLS label values to the network by attaching the first and second MPLS label values to a discovery request packet that is sent into the network by the first router;
means for forwarding all subsequent packets associated with the client request to the server load-balancing device based on looking up the first MPLS label value and second MPLS label value in the mapping, wherein the server load-balancing device does not terminate any TCP connections;
means for receiving a cookie containing server address information from the second router, wherein the server address information identifies a server that is managed by the load-balancing device; and
means for storing the server address information in the mapping of flow identifying information. - View Dependent Claims (13, 14, 15, 16, 17)
- means for receiving, at a first router in a path from a client to one or more server sites, a packet of a request from a client;
-
12. A load-balancing router for providing highly scalable network server load balancing, 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 first router in a path from a client to one or more server sites, a packet of a request from a client;
selecting a particular server site to process the client request;
determining a first path from the first router through the network to a second router associated with the particular server site, and a second path from the client to a server load-balancing device associated with the second router;
creating and storing a mapping of flow identifying information, associated with the packet, to a first multi-protocol label switching (MPLS) label value that identifies the first path and to a second MPLS label value that identifies the second path;
storing the first MPLS label value and the second MPLS label value in the packet;
distributing the first and second MPLS label values to the network by attaching the first and second MPLS label values to a discovery request packet that is sent into the network by the first router;
forwarding all subsequent packets associated with the client request to the server load-balancing device based on looking up the first MPLS label value and second MPLS label value in the mapping, wherein the server load-balancing device does not terminate any TCP connections;
receiving a cookie containing server address information from the second router, wherein the server address information identifies a server that is managed by the load-balancing device; and
storing the server address information in the mapping of flow identifying information. - View Dependent Claims (18, 19, 20, 21, 22)
- a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
Specification