# US 10,320,874 B2 · Site-based server selection

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,320,874 B2
- Document ID: US10320874B2
- Status: Granted
- Kind: B2
- Application number: 15/132,016
- Filed: 2016-04-18
- Published: 2016-08-11
- Granted: 2019-06-11
- Earliest claimed: 2013-01-07
- Assignees: Netflix, Inc.
- Applicants: Netflix, Inc.
- Inventors: Mark Watson; Wei Wei
- Web page: https://patentgrep.com/patent/US10320874B2

## CPC

- H04L 65/764: {at the destination (reformatting of additional data in video clients H04N21/4355)}
- H04L 65/613: for the control of the source by the destination (control signals issued by the client directed to the server or network components specially adapted for selective content distribution H04N21/637)
- H04L 65/80: Responding to QoS
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In an embodiment, a method comprises receiving a first data streamed from a first server computer at a first site; collecting a first throughput data for the first site based, at least in part, on a first throughput of the first data streamed from the first server computer; receiving a second data streamed from a second server computer at a second site; collecting a second throughput data for the second site based, at least in part, on a second throughput of the second data streamed from the second server computer; switching from the second server computer at the second site, to a third server computer at the first site, based, at least in part, on a comparison between the first throughput data and the second throughput data; wherein the method is performed by one or more special-purpose computing devices.

## Claims

### Claim 1

A method comprising:
receiving, at a client computer, first data from a copy of a first bitrate file that is streamed from a first server computer at a first site having a plurality of server computers;
determining a first throughput estimate for the first server computer at the first site based, at least in part, on a first throughput of the first data;
determining that a first copy of a second bitrate file that is different from the first bitrate file is stored at a second server computer, and a second copy of the second bitrate file is stored at a third server computer, wherein the second server computer is at the first site and the third server computer is at a second site; and
requesting second data from the second copy of the second bitrate file from the third server computer, without attempting to download data of the first bitrate file or data of the first copy of the second bitrate file from the second server computer, based, at least in part, that the first throughput estimate for the first server computer at the first site,
wherein the method is performed by one or more special-purpose computing devices.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining that the first throughput estimate is insufficient is based, at least in part, on determining that the first throughput estimate is below a particular threshold.

### Claim 3 (depends on 1)

The method of claim 1, further comprising determining that a second throughput estimate is associated with the second site, wherein determining that the first throughput estimate is insufficient is based, at least in part, on determining that the first throughput estimate is less than the second throughput estimate.

### Claim 4 (depends on 1)

The method of claim 1, wherein the client computer maintains a buffer of data for playing media, the method further comprising:
determining that no data has been downloaded from any server computers at a third site for a threshold amount of time, and that the buffer has a particular amount of data stored from the second copy of the second bitrate file, and in response:
switching from the third server computer to a fourth server computer at the third site; and
computing a third throughput estimate based on data from the fourth server computer as the data from the fourth server computer is being received.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
determining that the client computer is communicatively coupled to a first computer network;
subsequently, determining that the client computer is communicatively coupled to a second computer network, and not the first computer network, and in response:
receiving, at the client computer through the second computer network, third data from a copy of a third bitrate file that is streamed from one of the plurality of server computers at the first site; and
updating the first throughput estimate for the first site based, at least in part, on a third throughput of the third data.

### Claim 6 (depends on 5)

The method of claim 5, wherein updating the first throughput estimate is based on using an adaptive operator.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
downloading the second copy of the second bitrate file from the third server computer at the second site;
determining that a third bitrate file has a higher bitrate than the second bitrate file;
determining that a first copy of the third bitrate file is available on a fourth server computer at the first site; and
determining, without attempting to download the first copy of the third bitrate file from the fourth server computer at the first site, that the first throughput estimate is insufficient, and in response, continuing to download the second copy of the second bitrate file from the third server computer at the second site.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
receiving level data;
associating the first site to a first level based, at least in part, on the level data;
associating the second site to the first level based, at least in part, on the level data;
associating a third site to a second level based, at least in part, on the level data; and
switching from the third server computer at the second site, to a fourth server computer at the third site, when the first site and the second site are no longer available to the client computer.

### Claim 9

A method comprising:
receiving first data from a first server computer at a first site having a first plurality of server computers;
determining a first throughput estimate for the first site based, at least in part, on a first throughput of the first data from the first server computer;
associating the first throughput estimate with the first site;
receiving second data from a second server computer at a second site having a second plurality of server computers;
determining a second throughput estimate for the second site based, at least in part, on a second throughput of the second data that is streamed from the second server computer;
associating the second throughput estimate with the second site;
determining that a first copy of a new bitrate file is stored at a server computer of the second plurality of server computers at the second site, and a second copy of the new bitrate file is stored at a third server computer of the first plurality of computers at the first site, wherein the third server computer is different than the first server computer; and
requesting third data from the first copy of the new bitrate file from the server computer of the second plurality of server computers at the second site, without attempting to download data from the second copy of the new bitrate file from the third server computer, based, at least in part, on a comparison between the first throughput estimate associated with the first site and the second throughput estimate associated with the second site,
wherein the method is performed by one or more special-purpose computing devices.

### Claim 10 (depends on 9)

The method of claim 9, wherein the server computer of the second plurality of server computers with the first copy of the new bitrate file is the same server computer as the second server computer.

### Claim 11

A client computer for improving experience quality of digitally distributed content, comprising:
a processor; and
a memory containing instructions that, when executed by the processor, configure the processor to:
receive first data from a copy of a first bitrate file that is streamed from a first server computer at a first site having a plurality of server computers;
determine a first throughput estimate for the first server computer at the first site based, at least in part, on a first throughput of the first data;
determine that a first copy of a second bitrate file that is different from the first bitrate file is stored at a second server computer, and a second copy of the second bitrate file is stored at a third server computer, wherein the second server computer is at the first site and the third server computer is at a second site; and
request second data from the second copy of the second bitrate file from the third server computer, without attempting to download data of the first bitrate file or data of the first copy of the second bitrate file from the second server computer, based, at least in part, on the first throughput estimate for the first server computer at the first site.

### Claim 12 (depends on 11)

The client computer of claim 11, wherein determining that the first throughput estimate is insufficient is based, at least in part, on determining that the first throughput estimate is below a particular threshold.

### Claim 13 (depends on 11)

The client computer of claim 11, wherein the processor is further configured to determine that a second throughput estimate is associated with the second site, wherein determining that the first throughput estimate is insufficient is based, at least in part, on determining that the first throughput estimate is less than the second throughput estimate.

### Claim 14 (depends on 11)

The client computer of claim 11, wherein the client computer maintains a buffer of data for playing media, and the processor is further configured to:
determine that no data has been downloaded from any server computers at a third site for a threshold amount of time, and that the buffer has a particular amount of data stored from the second copy of the second bitrate file, and in response:
switch from the third server computer to a fourth server computer at the third site; and
compute a third throughput estimate based on data from the fourth server computer as the data from the fourth server computer is being received.

### Claim 15 (depends on 11)

The client computer of claim 11, wherein processor is further configured to:
determine that the client computer is communicatively coupled to a first computer network;
subsequently, determine that the client computer is communicatively coupled to a second computer network, and not the first computer network, and in response:
receive, through the second computer network, third data from a copy of a third bitrate file that is streamed from one of the plurality of server computers at the first site; and
update the first throughput estimate for the first site based, at least in part, on a third throughput of the third data.

### Claim 16 (depends on 15)

The client computer of claim 15, wherein updating the first throughput estimate is based on using an adaptive operator.

### Claim 17 (depends on 11)

The client computer of claim 11, wherein the processor is further configured to:
download the second copy of the second bitrate file from the third server computer at the second site;
determine that a third bitrate file has a higher bitrate than the second bitrate file;
determine that a first copy of the third bitrate file is available on a fourth server computer at the first site; and
determine, without attempting to download the first copy of the third bitrate file from the fourth server computer at the first site, that the first throughput estimate is insufficient, and in response, continue to download the second copy of the second bitrate file from the third server computer at the second site.

### Claim 18 (depends on 11)

The client computer of claim 11, wherein the processor is further configured to:
receive level data;
associate the first site to a first level based, at least in part, on the level data;
associate the second site to the first level based, at least in part, on the level data;
associate a third site to a second level based, at least in part, on the level data; and
switch from the third server computer at the second site, to a fourth server computer at the third site, when the first site and the second site are no longer available to the client computer.

### Claim 19

A client computer for improving experience quality of digitally distributed content, comprising:
a processor; and
a memory containing instructions that, when executed by the processor, configure the processor to:
receive first data from a first server computer at a first site having a first plurality of server computers;
determine a first throughput estimate for the first site based, at least in part, on a first throughput of the first data from the first server computer;
associate the first throughput estimate with the first site;
receive second data from a second server computer at a second site having a second plurality of server computers;
determine a second throughput estimate for the second site based, at least in part, on a second throughput of the second data that is streamed from the second server computer;
associate the second throughput estimate with the second site;
determine that a first copy of a new bitrate file is stored at a server computer of the second plurality of server computers at the second site, and a second copy of the new bitrate file is stored at a third server computer of the first plurality of computers at the first site, wherein the third server computer is different than the first server computer; and
request third data from the first copy of the new bitrate file from the server computer of the second plurality of server computers at the second site, without attempting to download data from the second copy of the new bitrate file from the third server computer, based, at least in part, on a comparison between the first throughput estimate associated with the first site and the second throughput estimate associated with the second site.

### Claim 20 (depends on 19)

The client computer of claim 19, wherein the server computer of the second plurality of server computers with the first copy of the new bitrate file is the same server computer as the second server computer.
