Multi-CDN digital content streaming
Techniques for optimizing a plurality of parallel network connections for a digital content stream through a network between a plurality of content servers and a content player. Embodiments determine an indication of network performance for each of the plurality of parallel network connections. Additionally, upon determining that a first one the plurality of parallel network connections is underperforming, based on whether the indication of network performance associated with the first parallel network connection satisfies a threshold level of performance, the first parallel network connection is dropped. Upon determining that a total throughput for the digital content stream is less than a minimum threshold of network performance, embodiments select a content server with which to establish a new parallel network connection, based on historical network performance data associated with the selected content server, and also establishing the new parallel network connection to the selected content server.
1. A method for transferring a digital content stream via a plurality of parallel network connections between a plurality of content servers and a content player, comprising:
determining, by operation of one or more computer processors, an indication of network performance for each of the plurality of parallel network connections;
upon determining that network performance associated with a first parallel network connection included in the plurality of parallel network connections is below a threshold level of performance, dropping the first parallel network connection and continuing to transfer the digital content stream via remaining parallel network connections of the plurality of parallel network connections; and
upon determining that a total throughput for transferring the digital content stream via the remaining parallel network connections is less than a minimum threshold of network performance:
selecting a content server with which to establish a new parallel network connection based on historical network performance data associated with the selected content server;
adding the new parallel network connection to the plurality of parallel network connections by establishing the new parallel network connection to the selected content server;
assigning a portion of a content buffer of the content player to the new parallel network connection based on the historical network performance data associated with the selected content server; and
transferring the digital content stream to the content buffer via the plurality of parallel network connections.
2. The method of claim 1 , further comprising:
upon dropping the first parallel network connection, requesting content from the digital content stream associated with the first parallel network connection from a second parallel network connection included in the plurality of parallel network connections.
3. The method of claim 1 , wherein the new parallel network connection is a network connection to a new content server not in the plurality of content servers.
4. The method of claim 1 , wherein the new parallel network connection is an additional network connection to one of the plurality of content servers.
5. The method of claim 1 , further comprising:
upon determining that a first deadline for the digital content stream will not be met, adding a new parallel network connection to the plurality of parallel network connections.
6. The method of claim 1 , further comprising:
upon determining that the plurality of parallel network connections contains fewer than a threshold amount of parallel network connections, adding a new parallel network connection to the plurality of parallel network connections.
7. The method of claim 1 , further comprising:
upon adding a new parallel network connection to the plurality of network connections:
retrieving network performance information for the plurality of content servers;
determining a mapping of the plurality of content servers to a plurality of portions of a content buffer on the content player, based on the retrieved network performance information; and
receiving, from each of the plurality of content servers, digital content associated with the corresponding portion of the content buffer.
8. A non-transitory computer-readable medium containing a program that, when executed, transfers a digital content stream via a plurality of parallel network connections between a plurality of content servers and a content player, comprising:
determining an indication of network performance for each of the plurality of parallel network connections;
upon determining that network performance associated with a first parallel network connection included in the plurality of parallel network connections is below a threshold level of performance, dropping the first parallel network connection and continuing to transfer the digital content stream via remaining parallel network connections of the plurality of parallel network connections; and
upon determining that a total throughput for transferring the digital content stream via the remaining parallel network connections is less than a minimum threshold of network performance:
selecting a content server with which to establish a new parallel network connection based on historical network performance data associated with the selected content server;
adding the new parallel network connection to the plurality of parallel network connections by establishing the new parallel network connection to the selected content server;
assigning a portion of a content buffer of the content player to the new parallel network connection based on the historical network performance data associated with the selected content server; and
transferring the digital content stream to the content buffer via the plurality of parallel network connections.
9. The non-transitory computer-readable medium of claim 8 , the operation further comprising:
upon dropping the first parallel network connection, requesting content from the digital content stream associated with the first parallel network connection from a second parallel network connection included in the plurality of parallel network connections.
10. The non-transitory computer-readable medium of claim 8 , wherein the new parallel network connection is a network connection to a new content server not in the plurality of content servers.
11. The non-transitory computer-readable medium of claim 8 , wherein the new parallel network connection is an additional network connection to one of the plurality of content servers.
12. The non-transitory computer-readable medium of claim 8 , the operation further comprising:
upon determining that a first deadline for the digital content stream will not be met, adding a new parallel network connection to the plurality of parallel network connections.
13. The non-transitory computer-readable medium of claim 8 , the operation further comprising:
upon determining that the plurality of parallel network connections contains fewer than a threshold amount of parallel network connections, adding a new parallel network connection to the plurality of parallel network connections.
14. The non-transitory computer-readable medium of claim 8 , the operation further comprising:
upon adding a new parallel network connection to the plurality of network connections:
retrieving network performance information for the plurality of content servers;
determining a mapping of the plurality of content servers to a plurality of portions of a content buffer on the content player, based on the retrieved network performance information; and
receiving, from each of the plurality of content servers, digital content associated with the corresponding portion of the content buffer.
15. A system for transferring a digital content stream via a plurality of parallel network connections between a plurality of content servers and a content player, the system comprising:
a memory; and
a processor coupled to the memory and configured to:
determine an indication of network performance for each of the plurality of parallel network connections;
upon determining that network performance associated with a first parallel network connection included in the plurality of parallel network connections is below a threshold level of performance, drop the first parallel network connection and continue to transfer the digital content stream via remaining parallel network connections of the plurality of parallel network connections; and
upon determining that a total throughput for transferring the digital content stream via the remaining parallel network connections is less than a minimum threshold of network performance:
select a content server with which to establish a new parallel network connection based on historical network performance data associated with the selected content server;
add the new parallel network connection to the plurality of parallel network connections by establishing the new parallel network connection to the selected content server;
assigning a portion of a content buffer of the content player to the new parallel network connection based on the historical network performance data associated with the selected content server; and
transferring the digital content stream to the content buffer via the plurality of parallel network connections.
16. The system of claim 15 , the operation further comprising:
upon dropping the first parallel network connection, requesting content from the digital content stream associated with the first parallel network connection from a second parallel network connection included in the plurality of parallel network connections.
17. The system of claim 15 , wherein the new parallel network connection is a network connection to a new content server not in the plurality of content servers.
18. The system of claim 15 , wherein the new parallel network connection is an additional network connection to one of the plurality of content servers.
19. The system of claim 15 , the operation further comprising:
upon determining that a first deadline for the digital content stream will not be met, adding a new parallel network connection to the plurality of parallel network connections.
20. The system of claim 15 , the operation further comprising:
upon determining that the plurality of parallel network connections contains fewer than a threshold amount of parallel network connections, adding a new parallel network connection to the plurality of parallel network connections.
21. The system of claim 15 , the operation further comprising:
upon adding a new parallel network connection to the plurality of network connections:
retrieving network performance information for the plurality of content servers;
determining a mapping of the plurality of content servers to a plurality of portions of a content buffer on the content player, based on the retrieved network performance information; and
receiving, from each of the plurality of content servers, digital content associated with the corresponding portion of the content buffer.