IP Library › Granted Patent US 7,962,631
Granted Patent B2
US 7,962,631 · App. 11/963,700 · Granted Jun 14, 2011

Method for determining network proximity for global traffic load balancing using passive TCP performance instrumentation

Assignee: Yahoo! Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,962,631
App. No.
11/963,700
Granted
Jun 14, 2011
Kind
B2
Abstract

Techniques are described for measuring TCP connection quality between a client and a plurality of data centers. A small amount of code, called a web beacon, is placed onto production web pages. When a client requests the production web page, the web page is served to the client. When the web page code is processed, the web beacon instructs the client to retrieve zero-content images from a plurality of data centers through TCP connections in the background. As each connection is made, a passive monitoring system measures and logs statistics about each TCP connection from the client to the data center. The statistics are aggregated into a database and may be sorted based upon ranges of IP addresses of clients and the connection quality measurements. The data is exported from the database to global load balancers to determine routing from subsequent clients to the plurality of data centers.

Claims (56)

1. A method to measure connection quality from a plurality of data centers to end-user-clients, comprising:

receiving, at an aggregator, a distinct set of connection quality measurements for each end-user-client/data-center combination;

wherein a connection quality measurement for an end-user-client/data-center combination includes measures of connection quality between (a) an end-user-client, and (b) a data-center;

determining and grouping, at the aggregator, said end-user-clients into netblocks based on IP addresses of said end-user-clients;

for each of the netblocks, the aggregator generating aggregated connection quality measurements data by aggregating the distinct sets of connection quality measurements for those end-user-clients that belong to the netblock;

outputting, from the aggregator, to a plurality of load balancing servers, said aggregated connection quality measurements data for use by said load balancing servers in determining how to route messages between said end-user-clients and said data-centers;

wherein the method is performed by one or more computing devices.

2. The method of claim 1 , wherein the measures of connection quality are based upon TCP connections from the end-user-clients to a plurality of beacon servers, wherein each of the plurality of beacon servers corresponds to one of the plurality of data centers.

3. The method of claim 2 , wherein the TCP connections are the result of web beacon code served to each of the plurality of end-user-clients.

4. The method of claim 1 , wherein the aggregated connection quality measurements data is organized into groups where, for each group, IP addresses of the end-user-clients are within a particular range of IP addresses.

5. The method of claim 4 , wherein the aggregated connection quality measurements data groups comprise data centers sorted by connection quality to the particular range of IP addresses.

6. The method of claim 1 , wherein the measures of connection quality comprise network latency.

7. The method of claim 1 , wherein the measures of connection quality comprise packet loss ratio.

8. The method of claim 2 , wherein the TCP connections are from end-user-clients retrieving zero-content images from each of the plurality of data centers corresponding to one of the plurality of data centers.

9. A method comprising:

storing, at an aggregator, from a server into a computer-readable non-transitory storage medium, a distinct set of connection quality measurements for each end-user-client/data-center combination;

wherein a connection quality measurement for an end-user-client/data-center combination includes measures of connection quality between (a) an end-user-client, and (b) a data-center;

determining and grouping, at the aggregator, said end-user-clients into netblocks based on IP addresses of said end-user-clients;

for each of the netblocks, the aggregator generating aggregated connection quality measurements data by aggregating the distinct sets of connection quality measurements for those end-user-clients that belong to the netblock of a plurality of netblocks;

wherein the netblock to which each end-user-client belongs is based on an IP address of the end-user-client;

outputting, from the aggregator, to a plurality of load balancing servers, said aggregated connection quality measurements data for use by said plurality of load balancing servers in determining how to route messages between said end-user-clients and said data-centers;

wherein the method is performed by one or more computing devices.

10. A method to measure connection quality from a plurality of data centers to clients, comprising:

receiving, at an aggregator, requests from a plurality of end-user-clients;

storing, at the aggregator, a distinct set of connection quality measurements for each end-user-client/data-center combination generated based upon the requests;

determining and grouping, at the aggregator, said end-user-clients into netblocks based on IP addresses of said end-user-clients;

outputting, from the aggregator, to a plurality of load balancing servers, aggregated connection quality measurements data for use by said load balancing servers in determining how to route messages between said end-user-clients and said data-centers;

wherein the aggregator generates said aggregated connection quality measurements data for each of the netblocks by aggregating the distinct sets of connection quality measurements for those end-user-clients that belong to the netblock;

wherein the method is performed by one or more computing devices.

11. A system comprising,

a first plurality of servers, each particular server of the first plurality of servers located in a particular data center, of a plurality of data centers, wherein the first plurality of servers measures connection quality measurements for each end-user-client/data-center combination, and generates a distinct set of connection quality measurements for said each end-user-client/data-center combination;

wherein a connection quality measurement for an end-user-client/data-center combination includes, measures of connection quality between (a) an end-user-client, and (b) a data-center;

an aggregation server, wherein the aggregation server receives said distinct set of connection quality measurements for each end-user-client/data-center combination from said first plurality of servers; determines and groups said end-iser-clients into netblocks based on IP addresses of said end-user-clients; for each of the netblocks, generates aggregated connection quality measurements data by aggregating the distinct set of connection quality measurements for those end-user-clients that belong to the netblock; and

a second plurality of servers, wherein the second plurality of servers receives said aggregated connection quality measurements data for use in determining how to route messages between said end-user-client and said data-centers.

12. A computer-readable non-transitory storage medium storing one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to:

receive, at an aggregator, a distinct set of connection quality measurements for each end-user-client/data-center combination;

wherein a connection quality measurement for an end-user-client/data-center combination includes measures of connection quality between (a) an end-user-client, and (b) a data-center;

determine and group, at the aggregator, said end-user-clients into netblocks based on IP addresses of said end-user-clients;

generate, for each of the netblocks, at the aggregator, aggregated connection quality measurements data by aggregating the distinct sets of connection quality measurements for those end-user-clients;

output, from the aggregator, to a plurality of load balancing servers, said aggregated connection quality measurements data for use by said load balancing servers in determining how to route messages between said end-user-clients and said data-centers.

13. The computer-readable storage medium of claim 12 , wherein the measures of connection quality are based upon TCP connections from the end-user-clients to a plurality of beacon servers, wherein each of the plurality of beacon servers corresponds to one of a plurality of data centers.

14. The computer-readable storage medium of claim 13 , wherein the TCP connections are the result of web beacon code served to each of the plurality of end-user-clients.

15. The computer-readable storage medium of claim 12 , wherein the aggregated connection quality measurements data is organized into groups where IP addresses of the end-user-clients are within a particular range of IP addresses.

16. The computer-readable storage medium of claim 15 , wherein the aggregated connection quality measurements data groups comprise data centers sorted by connection quality to the particular range of IP addresses.

17. The computer-readable storage medium of claim 12 , wherein the measures of connection quality comprise network latency.

18. The computer-readable storage medium of claim 12 , wherein the measures of connection quality comprise packet loss ratio.

19. The computer-readable storage medium of claim 13 , wherein the TCP connections are from end-user-clients retrieving zero-content images from each of the plurality of data centers corresponding to one of a plurality of data centers.

20. The method of claim 9 , wherein the measures of connection quality are based upon TCP connections from the end-user-clients to a plurality of beacon servers, wherein each of the plurality of beacon servers corresponds to one of the plurality of data centers.

21. The method of claim 9 , wherein the TCP connections are the result of web beacon code served to each of the plurality of end-user-clients.

22. The method of claim 9 , wherein the aggregated connection quality measurements data is organized into groups where, for each group, IP addresses of the end-user-clients are within a particular range of IP addresses.

23. The method of claim 10 , wherein the measures of connection quality are based upon TCP connections from the end-user-clients to a plurality of beacon servers, wherein each of the plurality of beacon servers corresponds to one of the plurality of data centers.

24. The method of claim 10 , wherein the TCP connections are the result of web beacon code served to each of the plurality of end-user-clients.

25. The method of claim 10 , wherein the aggregated connection quality measurements data is organized into groups where, for each group, IP addresses of the end-user-clients are within a particular range of IP addresses.

26. The system of claim 11 , wherein the measures of connection quality are based upon TCP connections from the end-user-clients to a plurality of beacon servers, wherein each of the plurality of beacon servers corresponds to one of the plurality of data centers.

27. The system of claim 11 , wherein the TCP connections are the result of web beacon code served to each of the plurality of end-user-clients.

28. The system of claim 11 , wherein the aggregated connection quality measurements data is organized into groups where, for each group, IP addresses of the end-user-clients are within a particular range of IP addresses.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2020
From: EXCALIBUR IP, LLC
To: R2 SOLUTIONS LLC
Reel/Frame 053459/0059 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 2, 2008
From: CHRISTIAN, MICHAEL F.; APGAR, DAVID; VIJAYARAGHAVAN, JAYANTH
To: YAHOO! INC.
Reel/Frame 020307/0944 →
Continuity (1)
Related Publication 20090164646A1 · Jun 25, 2009