IP Library Granted Patent US 8,745,177
Granted Patent B1
US 8,745,177 · App. 13/286,470 · Granted Jun 3, 2014

End-to-end monitoring and optimization of a content delivery network using anycast routing

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 8,745,177
App. No.
13/286,470
Granted
Jun 3, 2014
Kind
B1
Abstract

Some embodiments implement systems and methods to monitor CDN performance from the end user's perspective. To achieve full end-to-end monitoring, the systems and methods monitor the performance of Anycast routing for routing an end user to the optimal PoP of the CDN and monitor the performance of different routes that deliver content from the optimally selected PoP back to the end user. Systems and methods are also provided to leverage the monitored performance in order to automatically optimize the performance of the CDN by optimizing or modifying Anycast routing and by performing route grooming as needed to ensure that the optimal route is selected to deliver content to different sets of end users that request content from a particular PoP.

Claims (32)

1. A method for monitoring Anycast performance in a content delivery network (CDN) comprising a plurality of points of presence (PoPs), said method comprising:

providing monitoring code embedded in content that is served to an end user machine, wherein the monitoring code comprises sets of instructions executable by the end user machine receiving the content for (i) determining a location of the end user machine, (ii) determining a set of the plurality of PoPs that are geographically proximate to the location of the end user machine, (iii) measuring performance for downloading a particular object from each PoP of the set of PoPs and a PoP that is selected from the plurality of PoPs based on Anycast routing, and (iv) reporting said performance measurements to a monitoring server;

analyzing performance measurements reported to the monitoring server by at least one particular end user machine executing said monitoring code to determine if performance of a PoP selected based on Anycast routing is optimal relative to performance of each PoP of a set of PoPs that is geographically proximate to the particular end user machine; and

modifying an Anycast configuration to cause the particular end user machine to be routed to a particular PoP from the set of geographically proximate PoPs when performance of the particular PoP is optimal relative to performance of the PoP selected by Anycast routing based on said analysis of the performance measurements reported by the particular end user machine.

2. The method of claim 1 further comprising generating a report to identify instances when Anycast routing does not result in the particular end user machine being routed to an optimal PoP.

3. The method of claim 1 further comprising repeating said analyzing and modifying on a periodic interval based on performance measurements reported by end user machines during each periodic interval.

4. The method of claim 1 further comprising identifying that the particular end user machine is blocked from accessing the PoP selected by Anycast routing based on the reported performance measurements from the particular end user machine.

5. The method of claim 4 further comprising modifying said Anycast configuration to route the particular end user machine to a particular PoP from the set of geographically proximate PoPs using a unique IP address that is associated with the particular PoP when the particular end user machine is blocked from accessing the PoP selected by Anycast routing.

6. The method of claim 1 , wherein the monitoring code further comprises a set of instructions for computing a distance from the end user machine to each PoP of the plurality of PoPs.

7. The method of claim 1 , wherein the monitoring code further comprises an IP address for directly addressing a request for the particular object to each PoP of the set of PoPs.

8. The method of claim 7 further comprising serving said particular object from a server in each PoP of the set of PoPs.

9. The method of claim 1 , wherein modifying the Anycast configuration comprises modifying a routing policy at a border router controlled by an autonomous system (AS).

10. The method of claim 1 , wherein a PoP of the set of geographically proximate PoPs is optimal relative to the PoP selected by Anycast routing when said PoP serves the particular object to the particular end user machine with less delay then the PoP selected by Anycast routing.

11. The method of claim 1 , wherein a PoP of the set of geographically proximate PoPs is optimal relative to the PoP selected by Anycast routing when the particular end user machine is blocked from accessing the PoP selected by Anycast routing as determined from the reported performance measurements from the particular end user machine.

12. The method of claim 1 , wherein analyzing said performance measurements reported by at least one particular end user machine comprises analyzing performance measurements that are reported by a set of end user machines associated with a particular AS, and wherein modifying the Anycast configuration comprises modifying an Anycast configuration to cause end users associated with the particular AS to be routed to a particular PoP from the set of geographically proximate PoPs when performance of the particular PoP is optimal relative to performance of the PoP selected by Anycast routing based on reported performance measurements from the set of end user machines associated with the particular AS.

13. The method of claim 1 , wherein analyzing performance measurements reported by at least one particular end user machine comprises analyzing performance measurements that are reported by a set of end user machines that are located in a particular geographic region, and wherein modifying the Anycast configuration comprises modifying an Anycast configuration to cause end users located in the particular geographic region to be routed to a particular PoP from the set of geographically proximate PoPs when performance of the particular PoP is optimal relative to performance of the PoP selected by Anycast routing based on reported performance measurements from the set of end user machines that are located in the particular geographic region.

14. The method of claim 1 , wherein analyzing performance measurements reported by at least one particular end user machine comprises analyzing performance measurements that are reported by a set of end user machines having a particular IP address prefix, and wherein modifying the Anycast configuration comprises modifying an Anycast configuration to cause end users having the particular IP address prefix to be routed to a particular PoP from the set of geographically proximate PoPs when performance of the particular PoP is optimal relative to performance of the PoP selected by Anycast routing based on reported performance measurements from the set of end user machines having the particular IP address prefix.

15. The method of claim 1 , wherein providing the monitoring code embedded in said content comprises encoding said monitoring code as a set of JavaScript instructions that are embedded in an error page that is served to the end user machine when the end user machine submits an invalid request for content.

16. A method for monitoring Anycast performance in a content delivery network (CDN) comprising a plurality of points of presence (PoPs), said method comprising:

at an end user machine, receiving content that is embedded with monitoring code comprising sets of instructions for performing said Anycast performance monitoring;

identifying a location of the end user machine based on a set of instructions of the monitoring code;

determining a set of the plurality of PoPs that are geographically closest to the identified location of the end user machine based on a set of instructions of the monitoring code for computing a distance between the location of said end user machine and a location of each PoP of the plurality of PoPs;

measuring performance to download a particular object from each PoP of the set of PoPs based on a request that is directly addressed to each PoP of the set of PoPs according to a set of instructions of the monitoring code;

measuring performance to download the particular object from an Anycast PoP of the plurality of PoPs that is identified based on a request that is submitted to an Anycast address of the CDN according to a set of instructions of the monitoring code; and

reporting said performance measurements to a monitoring server for determining whether performance of the Anycast PoP is optimal relative to performance of each PoP of the set of PoPs.

17. The method of claim 16 , wherein the location of each PoP of the plurality of PoPs is included as part of the monitoring code.

18. The method of claim 17 , wherein direct addresses to download the particular object from each PoP of the set of PoPs and the Anycast address are included as part of the monitoring code.

19. The method of claim 18 further comprising submitting a set of requests to commence download of the particular object from each PoP of the set of PoPs using a unique IP address for each PoP of the set of PoPs, and submitting a request to commence download of the particular object from the Anycast PoP using an Anycast address.

20. The method of claim 16 further comprising reporting that access to the Anycast PoP is blocked based on an invalid performance measurement for downloading the particular object from the Anycast PoP and a valid performance measurement for downloading the particular object from a PoP of the set of geographically proximate PoPs.

21. A monitoring system for monitoring Anycast performance in a content delivery network (CDN) comprising a plurality of points of presence (PoPs), said monitoring system comprising:

a caching server with a processor configured to perform operations comprising serving to an end user machine, content that is embedded with monitoring code comprising sets of instructions executable by the end user machine for (i) determining a location of the end user machine, (ii) determining a set of the plurality of PoPs that are geographically proximate to the location of the end user machine, (iii) measuring performance for downloading a particular object from each PoP of the set of PoPs and a PoP that is selected from the plurality of PoPs based on Anycast routing, and (iv) reporting said performance measurements to a second monitoring server; and

a monitoring server with a processor configured to perform operations comprising (i) receiving said performance measurements that are reported by the end user machine, (ii) generating a performance report that identifies if performance of a PoP selected based on Anycast routing is optimal relative to performance of each PoP of a set of PoPs that is geographically proximate to the end user machine based on the received performance measurements, and (iii) modifying an Anycast configuration to cause the end user machine to be routed to a particular PoP from the set of geographically proximate PoPs when performance of the particular PoP is optimal relative to performance of the PoP selected by Anycast routing as identified by the performance report.

Assignments (10)
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0406] Recorded Jul 9, 2025
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
To: UPLYNK, INC. (F/K/A EDGIO, INC.)
Reel/Frame 071875/0105 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0212] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071817/0877 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 068763/0276] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071818/0022 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2025
From: EDGIO, INC.
To: DRNC HOLDINGS, INC.
Reel/Frame 070071/0327 →
PATENT SECURITY AGREEMENT Recorded Aug 23, 2024
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 068763/0276 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 065597/0212 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065597/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2022
From: EDGECAST INC.
To: EDGIO, INC.
Reel/Frame 061738/0972 →
CHANGE OF NAME Recorded Mar 15, 2022
From: VERIZON DIGITAL MEDIA SERVICES INC.
To: EDGECAST INC.
Reel/Frame 059367/0990 →
CHANGE OF NAME Recorded Apr 25, 2016
From: EDGECAST NETWORKS, INC
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 038511/0045 →