IP Library › Granted Patent US 9,998,354
Granted Patent B2
US 9,998,354 · App. 14/289,552 · Granted Jun 12, 2018

Server selection for content distribution

Inventors: Christopher Brand (Livermore, CA); David Fullagar (Boulder, CO)
Assignee: NETFLIX, INC.
H04L45/126H04L65/4084H04L65/80H04L67/10H04L67/101H04L67/1021H04L67/18H04L67/42
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 9,998,354
App. No.
14/289,552
Filed
May 28, 2014
Granted
Jun 12, 2018
Kind
B2
Art Unit
2447
USPC
709/203
Abstract

In an embodiment, a method comprises receiving a first routing table of a first server computer; receiving a second routing table of a second server computer; receiving a request, from a client computer, for information about content servers that hold a media item title, wherein the request includes a client internet protocol address of the client computer; estimating that the first server computer is closer to the client computer than the second server computer is to the client computer based, at least in part, on the client internet protocol address, the first routing table, and the second routing table; sending, to the client computer, a first address to the client computer based, at least in part, on estimating that the first server computer is closer to the client computer than the second server computer, wherein the first address identifies the media item title stored on the first server computer.

Claims (96)

1. A method comprising:

receiving a first routing table of a first server computer, wherein the first routing table includes a first autonomous systems (AS) path;

receiving a second routing table of a second server computer, wherein the second routing table includes a second AS path;

receiving a request, from a client computer, for information about content servers that hold a media item title, wherein the request includes a client internet protocol address of the client computer;

estimating that the first server computer is closer to the client computer than the second server computer is to the client computer, at least in part, by comparing a first number of AS identifiers included in the first AS path to a second number of AS identifiers included in the second AS path;

assigning a first probability to the first server computer based on a first network throughput of the first server computer;

assigning a second probability to the second server computer based on a second network throughput of the second server computer; and

sending a first address to the client computer based, at least in part, on the first probability, on the second probability, and on estimating that the first server computer is closer to the client computer than the second server computer, wherein the first address identifies the media item title stored on the first server computer;

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

2. The method of claim 1 , wherein estimating that the first server computer is closer to the client computer than the second server computer is to the client computer further comprises estimating that the first server computer is closer in physical location to the client computer than the second server computer is to the client computer.

3. The method of claim 1 , wherein the client computer is a first client computer, the request is a first request, the client internet protocol address is a first client internet protocol address; the method further comprising:

receiving a second request, from a second client computer, for information about content servers that hold the media item title, wherein the second request includes a second client internet protocol address of the second client computer;

estimating that the second server computer is closer to the second client computer than the first server computer is to the second client computer based, at least in part, on the second client internet protocol address, the first routing table, and the second routing table; and

sending a second address to the second client computer based, at least in part, on estimating that the second server computer is closer to the second client computer than the first server computer is to the second client computer, wherein the second address identifies the media item title stored on the second server computer.

4. The method of claim 1 comprising:

receiving a third routing table of a third server computer;

estimating that the first server computer is as close to the client computer as the third server computer is to the client computer based, at least in part, on the client internet protocol address, the first routing table, and the third routing table; and

sending a second address to the client computer based, at least in part, on estimating that the first server computer is as close to the client computer than the third server computer is to the client computer;

wherein the second address identifies the media item title stored on the third server computer.

5. The method of claim 4 comprising:

determining that the first server computer is behind a first router;

determining that the third server computer is behind a second router;

determining that the first server computer and the third server computer are at different sites based, at least in part, on determining that the first router and the second router are different routers; and

sending the second address to the client computer based, at least in part, on determining that the first server computer and the third server computer are at different sites.

6. The method of claim 4 comprising:

estimating a first bandwidth for the first server computer;

estimating a second bandwidth for the third server computer;

determining a first probability based, at least in part, on the first bandwidth;

determining a second probability based, at least in part, on the second bandwidth; and

sending, to the client computer, a list of the first address and the second address in an order corresponding to magnitude of the first probability and the second probability.

7. The method of claim 4 wherein:

the first routing table comprises a first attribute of a particular attribute type;

the third routing table comprises a second attribute of the particular attribute type;

the third routing table comprises a community value indicating to ignore the particular attribute type; and

estimating that the first server computer is as close to the client computer as the third server computer is to the client computer based, at least in part, on ignoring the first attribute and the second attribute.

8. The method of claim 4 comprising:

determining a first cost for sending data from the first server computer to the client computer;

determining a second cost for sending data from the third server computer to the client computer;

assigning, for the client computer, the first server computer to a first level and the third server computer to a second level when the first cost is less than the second cost; and

sending, to the client computer, the first address and the second address, with data indicating that the first address is assigned to the first level and the second address is assigned to the second level.

9. The method of claim 4 comprising:

determining that the third server computer is associated with a content delivery network;

assigning, for the client computer, the first server computer to a first level and the second server computer to a second level based, at least in part, on determining that the second server computer is associated with the content delivery network; and

sending, to the client computer, the first address and the second address, with data indicating that the first address is assigned to the first level and the second address is assigned to the second level.

10. The method of claim 1 comprising estimating that the first server computer is closer to the client computer than the second server computer is to the client computer based, at least in part, on the client computer, device type of the client computer, country of the client computer, customer logged in to the client computer, testing protocols, internet service provider of the client computer.

11. The system of claim 1 , wherein comparing the first number of AS identifiers included in the first AS path to the second number of AS identifiers included in the second AS path comprises determining that the first number of AS identifiers is less than the second number of AS identifiers.

12. The system of claim 1 , wherein the first routing table further includes a first multi-exit discriminator (MED) attribute, the second routing table includes a second MED attribute, and estimating that the first server computer is closer to the client computer than the second server computer is to the client computer is further based on comparing the first MED attribute to the second MED attribute.

13. A computer system comprising:

a processor;

a memory; and

a processing module configured to:

receive a first routing table for a first server computer, wherein the first routing table includes a first autonomous systems (AS) path;

receive a second routing table for a second server computer, wherein the second routing table includes a second autonomous systems (AS) path;

receive a request, from a client computer, for information about content servers that hold a media item title, wherein the request includes a client internet protocol address of the client computer;

estimate that the first server computer is closer to the client computer than the second server computer is to the client computer, at least in part, by comparing a first number of AS identifiers included in the first AS path to a second number of AS identifiers included in the second AS path;

assign a first probability to the first server computer based on a first network throughput of the first server computer;

assign a second probability to the second server computer based on a second network throughput of the second server computer; and

send a first address to the client computer based, at least in part, on the first probability, on the second probability, and on estimating that the first server computer is closer to the client computer than the second server computer, wherein the first address identifies the media item title stored on the first server computer.

14. The system of claim 13 , wherein the processing module is configured to estimate that the first server computer is closer to the client computer than the second server computer is to the client computer based, at least in part, on estimating that the first server computer is closer in physical location to the client computer than the second server computer is to the client computer.

15. The system of claim 13 , wherein:

the client computer is a first client computer, the request is a first request, the client internet protocol address is a first client internet protocol address; and

the processing module is configured to:

receive a second request, from a second client computer, for information about content servers that hold the media item title, wherein the second request includes a second client internet protocol address of the second client computer;

estimate that the second server computer is closer to the second client computer than the first server computer is to the second client computer based, at least in part, on the second client internet protocol address, the first routing table, and the second routing table; and

send a second address to the second client computer based, at least in part, on estimating that the second server computer is closer to the second client computer than the first server computer is to the second client computer, wherein the second address identifies the media item title stored on the second server computer.

16. The system of claim 13 , wherein the processing module is configured to:

receive a third routing table of a third server computer;

estimate that the first server computer is as close to the client computer as the third server computer is to the client computer based, at least in part, on the client internet protocol address, the first routing table, and the third routing table; and

send a second address to the client computer based, at least in part, on estimating that the first server computer is as close to the client computer than the third server computer is to the client computer;

wherein the second address identifies the media item title stored on the third server computer.

17. The system of claim 16 , the processing module is configured to:

determine that the first server computer is behind a first router;

determine that the third server computer is behind a second router;

determine that the first server computer and the third server computer are at different sites based, at least in part, on determining that the first router and the second router are different routers; and

send the second address to the client computer based, at least in part, on determining that the first server computer and the third server computer are at different sites.

18. The system of claim 16 , wherein the processing module is configured to:

estimate a first bandwidth for the first server computer;

estimate a second bandwidth for the third server computer;

determine a first probability based, at least in part, on the first bandwidth;

determine a second probability based, at least in part, on the second bandwidth; and

send, to the client computer, a list of the first address and the second address in an order corresponding to magnitude of the first probability and the second probability.

19. The system of claim 16 , wherein:

the first routing table comprises a first attribute of a particular attribute type;

the third routing table comprises a second attribute of the particular attribute type;

the third routing table comprises a community value indicating to ignore the particular attribute type; and

the processing module is configured to estimate that the first server computer is as close to the client computer as the third server computer is to the client computer based, at least in part, on ignoring the first attribute and the second attribute.

20. The system of claim 16 , wherein the processing module is configured to:

determine a first cost for sending data from the first server computer to the client computer;

determine a second cost for sending data from the third server computer to the client computer;

assign, for the client computer, the first server computer to a first level and the third server computer to a second level when the first cost is less than the second cost; and

send, to the client computer, the first address and the second address, with data indicating that the first address is assigned to the first level and the second address is assigned to the second level.

21. The system of claim 16 , wherein the processing module is configured to:

determine that the third server computer is associated with a content delivery network;

assign, for the client computer, the first server computer to a first level and the second server computer to a second level based, at least in part, on determining that the second server computer is associated with the content delivery network; and

send, to the client computer, the first address and the second address, with data indicating that the first address is assigned to the first level and the second address is assigned to the second level.

22. The system of claim 13 , wherein the processing module is configured to estimate that the first server computer is closer to the client computer than the second server computer is to the client computer based, at least in part, on the client computer, device type of the client computer, country of the client computer, customer logged in to the client computer, testing protocols, internet service provider of the client computer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2014
From: BRAND, CHRIS; FULLAGAR, DAVID
To: NETFLIX, INC.
Reel/Frame 032985/0582 →
Continuity (2)
Provisional Application 61881599 · Sep 24, 2013
Related Publication 20150088972A1 · Mar 26, 2015