# US 11,910,053 B2 · Spread channel multi-CDN streaming

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

- Number: US 11,910,053 B2
- Document ID: US11910053B2
- Status: Granted
- Kind: B2
- Application number: 17/644,752
- Filed: 2021-12-16
- Published: 2023-06-22
- Granted: 2024-02-20
- Earliest claimed: 2021-12-16
- Assignees: NBCUniversal Media, LLC
- Applicants: Nbcuniversal Media, LLC
- Inventors: Qiang Fu
- Web page: https://patentgrep.com/patent/US11910053B2

## CPC

- H04N 21/437: Interfacing the upstream path of the transmission network, e.g. for transmitting client requests to a VOD server {(flow control in data networks H04L47/10; streaming protocols, e.g. RTP or RTCP, H04L65/65; scheduling or organising the servicing of application requests in data packet switching networks H04L67/60)}
- H04L 67/567: Integrating service provisioning from a plurality of service providers
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04N 21/23116: {involving data replication, e.g. over plural servers (synchronization of replicated data G06F11/1658; error detection or correction by means of data replication G06F11/2053; replication in distributed file systems G06F16/10; replication in distributed file systems G06F16/27; replication or mirroring of data in data networks H04L67/1095)}
- H04N 21/4331: {Caching operations, e.g. of an advertisement for later insertion during playback}
- H04N 21/44209: {Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network (arrangements for maintenance or administration in data switching networks involving bandwidth and capacity management H04L41/0896)}
- H04N 21/6175: {involving transmission via Internet (broadcast-related systems characterised by the transmission system being the Internet H04H60/82)}
- H04N 21/631: {Multimode Transmission, e.g. transmitting basic layers and enhancement layers of the content over different transmission paths or transmitting with different error corrections, different keys or with different transmission protocols}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Traditional streaming sequentially downloads content fragments one by one from one CDN. The disclosed streaming method concurrently downloads content fragments from multiple CDNs. It first creates a sequence of bundles of fragments, and then downloads a subsequent bundle by spreading requests to download the fragments within the bundle to multiple CDNs simultaneously with each CDN acting as a channel to download a different fragment. Depending on business needs, various request dispatching strategies can be deployed. When there is a volume based pricing contract with a CDN, a dispatch strategy is to send more requests to the CDN in order to reach contract volume therefore reduce unit cost. Another strategy is to send the request for the earliest fragment to the fastest CDN in order to reduce latency and possibility of buffer underrun. Fault tolerance can be provided by re-routing a request failed at a CDN to another CDN.

## Claims

### Claim 1

A method for streaming multimedia content by a streaming device, the method comprising:
sending a first request to a first content distribution network (CDN) of a plurality of CDNs, the first request for requesting download of a first segment of the multimedia content for streaming by the streaming device;
sending a second request to a second CDN of the plurality of CDNs, the second request for requesting download of a second segment of the multimedia content for streaming by the streaming device;
storing the first segment in response to receiving the first segment from the first CDN; and
storing the second segment in response to receiving the second segment from the second CDN,
wherein:
the first segment is stored at a first cache in response to receiving the first segment from the first CDN; and
the second segment is stored at a second cache in response to receiving the second segment from the second CDN, and
wherein:
the streaming device is coupled to a connection provided by an Internet service provider (ISP); and
based on determining that a download speed of the first CDN is less than a download speed of the ISP, the second request is sent to the second CDN.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first request and the second request are sent sequentially as a batch of requests.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first request and the second request are sent concurrently as a batch of requests.

### Claim 4 (depends on 1)

The method of claim 1, further comprising sending additional requests to CDNs until the content has been received in entirety by the streaming device, wherein the additional requests are sent sequentially or concurrently as one or more batches of requests.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
the second segment is for streaming by the streaming device sequentially after the first segment; and
the second request is sent to the second CDN after the first request is sent to the first CDN, based on the download speed of the first CDN being faster than a download speed of the second CDN.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
measuring the download speed of the first CDN; and
measuring the download speed of the second CDN.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
based on determining that the first segment is not received from the first CDN within a particular period of time after the first request is sent, sending the first request to a third CDN of the plurality of CDNs.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
based on detecting an outage at the first CDN, sending the first request to a third CDN of the plurality of CDNs.

### Claim 9 (depends on 1)

The method of claim 1,
wherein a percentage of requests sent to the first CDN is based on routing information, and
wherein a percentage of requests sent to the second CDN is based on the routing information.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
receiving, from the streaming device, a first device request for requesting download of the first segment,
wherein the first request and the second request are sent to the first CDN and the second CDN, respectively, by an intermediate layer in response to receiving the first device request; and
providing the stored first segment to the streaming device in further response to receiving the first device request.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
receiving, from the streaming device, a second device request for requesting download of the second segment; and
providing the stored second segment to the streaming device in response to receiving the second device request.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
sending a third request to a third CDN of the plurality of CDNs, the third request for requesting download of a third segment of the multimedia content for streaming by the streaming device; and
storing the third segment in response to receiving the third segment from the third CDN.

### Claim 13

A machine-readable non-transitory medium having stored thereon machine-executable instructions for streaming multimedia content by a streaming device, the instructions comprising:
sending a first request to a first content distribution network (CDN) of a plurality of CDNs, the first request for requesting download of a first segment of the multimedia content for streaming by the streaming device;
sending a second request to a second CDN of the plurality of CDNs, the second request for requesting download of a second segment of the multimedia content for streaming by the streaming device;
storing the first segment in response to receiving the first segment from the first CDN; and
storing the second segment in response to receiving the second segment from the second CDN,
wherein:
the first segment is stored at a first cache in response to receiving the first segment from the first CDN; and
the second segment is stored at a second cache in response to receiving the second segment from the second CDN, and
wherein:
the streaming device is coupled to a connection provided by an Internet service provider (ISP); and
based on determining that a download speed of the first CDN is less than a download speed of the ISP, the second request is sent to the second CDN.

### Claim 14 (depends on 13)

The machine-readable non-transitory medium of claim 13, wherein:
the second segment is for streaming by the streaming device sequentially after the first segment; and
the second request is sent to the second CDN after the first request is sent to the first CDN, based on the download speed of the first CDN being faster than a download speed of the second CDN.

### Claim 15 (depends on 13)

The machine-readable non-transitory medium of claim 13,
wherein a percentage of requests sent to the first CDN is based on routing information, and
wherein a percentage of requests sent to the second CDN is based on the routing information.

### Claim 16 (depends on 13)

The machine-readable non-transitory medium of claim 13, wherein the instructions further comprise:
receiving, from the streaming device, a first device request for requesting download of the first segment,
wherein the first request and the second request are sent to the first CDN and the second CDN, respectively, in response to receiving the first device request;
providing the stored first segment to the streaming device in further response to receiving the first device request;
receiving, from the streaming device, a second device request for requesting download of the second segment; and
providing the stored second segment to the streaming device in response to receiving the second device request.

### Claim 17

An apparatus for streaming multimedia content, the apparatus comprising:
a network communication unit configured to transmit and receive data; and
one or more controllers configured to:
send a first request to a first content distribution network (CDN) of a plurality of CDNs, the first request for requesting download of a first segment of the multimedia content for streaming by the apparatus;
send a second request to a second CDN of the plurality of CDNs, the second request for requesting download of a second segment of the multimedia content for streaming by the apparatus;
store the first segment in response to receiving the first segment from the first CDN; and
store the second segment in response to receiving the second segment from the second CDN,
wherein:
the first segment is stored at a first cache in response to receiving the first segment from the first CDN; and
the second segment is stored at a second cache in response to receiving the second segment from the second CDN, and
wherein:
the apparatus is coupled to a connection provided by an Internet service provider (ISP); and
based on determining that a download speed of the first CDN is less than a download speed of the ISP, the second request is sent to the second CDN.
