Generation and use of network maps based on race methods
First Claim
1. A computer-implemented method, comprising:
- generating a network map that reflects latencies between a plurality of clients and a plurality of servers;
receiving, at a load-balancing node, a request from a client;
determining, at the load-balancing node, in response to receiving the request from the client and based at least in part on the network map, that a particular server has less latency to the client than does another server in the plurality of servers; and
the load-balancing node selecting the particular server to handle the request;
wherein generating the network map comprises;
conducting at least one race between two or more servers, in which each of the two or more servers is part of an attempt to establish a connection with a given client at substantially the same time, and as a result of the at least one race, one of the two or more servers establishes a connection with the given client before another, if any, of the two or more servers does so, thereby reflecting relative latency amongst the two or more servers to the given client; and
,at the one of the two or more servers that first established the connection with the given client, (i) logging information identifying the given client, in response to the establishment of the connection with the given client, and (ii) sending the information identifying the given client from the one of the two or more servers, for use in generating the network map; and
,generating the network map based at least in part on the information.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques are provided for using the mobility support features of IPv6 to allow client and server nodes to communicate without the continuing intervention of a load-balancing node that selected the server node. A load-balancing node intercepts a TCP SYN packet addressed to a virtual IP address. The load-balancing node selects a server node from among multiple server nodes, and sends the packet toward the server node. The server node sends an IPv6 packet toward the client node. The packet contains a Binding Update option that specifies the virtual IP address as a Home Address. This information causes the client node to replace destination addresses in outgoing IP packets so that packets that the client node would have sent toward the virtual IP address are sent toward the selected server node'"'"'s IP address instead. Consequently, the IP packets are routed toward the selected server node instead of the load-balancing node.
-
Citations
26 Claims
-
1. A computer-implemented method, comprising:
-
generating a network map that reflects latencies between a plurality of clients and a plurality of servers; receiving, at a load-balancing node, a request from a client; determining, at the load-balancing node, in response to receiving the request from the client and based at least in part on the network map, that a particular server has less latency to the client than does another server in the plurality of servers; and the load-balancing node selecting the particular server to handle the request; wherein generating the network map comprises; conducting at least one race between two or more servers, in which each of the two or more servers is part of an attempt to establish a connection with a given client at substantially the same time, and as a result of the at least one race, one of the two or more servers establishes a connection with the given client before another, if any, of the two or more servers does so, thereby reflecting relative latency amongst the two or more servers to the given client; and
,at the one of the two or more servers that first established the connection with the given client, (i) logging information identifying the given client, in response to the establishment of the connection with the given client, and (ii) sending the information identifying the given client from the one of the two or more servers, for use in generating the network map; and
,generating the network map based at least in part on the information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An apparatus for enabling communication between nodes, the apparatus comprising one or more computers that have one or more processors and computer memory holding instructions that, upon execution by the one or more processors, cause the apparatus to:
-
(a) generate a network map that reflects latencies between a plurality of clients and a plurality of servers; (b) receive a request from a client; (c) determine, in response to receiving the request from the client, and based at least in part on the network map, that a particular server has less latency to the client than does another server in the plurality of servers; and (d) select the particular server to handle the request; (e) wherein generating the network map comprises; (i) conducting at least one race between two or more servers, in which each of the two or more servers is part of an attempt to establish a connection with a given client at substantially the same time, and as a result of the at least one race, one of the two or more servers establishes a connection with the given client before another, if any, of the two or more servers does so, thereby reflecting relative latency amongst the two or more servers to the given client; and
,(ii) receiving information identifying the given client sent from the one of the two or more servers for use in generating the network map, the information having been logged by the one of the two or more servers that first established the connection with the given client in response to the establishment of the connection with the given client; and
,(iii) generating the network map based at least in part on the information. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory machine-readable medium storing one or more sequences of instructions, wherein execution of the one or more sequences of instructions by one or more processors causes one or more computing machines to perform steps comprising:
-
generating a network map that reflects latencies between a plurality of clients and a plurality of servers; receiving a request from a client; in response to receiving the request from the client, and based at least in part on the network map, determining that a particular server has less latency to the client than does another server in the plurality of servers; and selecting the particular server to handle the request; wherein generating the network map comprises; conducting at least one race between two or more servers, in which each of the two or more servers is part of an attempt to establish a connection with a given client at substantially the same time, and as a result of the at least one race, one of the two or more servers establishes a connection with the given client before another, if any, of the two or more servers does so, thereby reflecting relative latency amongst the two or more servers to the given client; and
,at the one of the two or more servers that first established the connection with the given client, (i) logging information identifying the given client, in response to the establishment of the connection with the given client, and (ii) sending the information identifying the given client from the one of the two or more servers for use in generating the network map; and
,generating the network map based at least in part on the information. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26)
-
Specification