Method and apparatus for source selection in peer-to-peer assisted network coded streaming
By adaptively selecting a combination of network edge and central sources, the throughput bottleneck and congestion problems in large-scale streaming are solved, achieving efficient and sustainable content delivery quality.
Patent Information
- Application Number
- CN202480036670.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-04-04
- Filing Date
- 2024-04-03
- Publication Date
- 2026-01-02
AI Technical Summary
In large-scale streaming scenarios, existing technologies suffer from throughput bottlenecks and network congestion, especially when multiple clients access the same content simultaneously. This leads to excessive load on the central Point of Presence (PoP), causing network bottlenecks and unreliable sources that negatively impact the client experience.
By downloading network-encoded content from an initial source set, an effective throughput rate is determined, and different types of sources are added to the source set when the rate falls below a threshold. Network edge sources are prioritized to reduce the load on central sources, and an adaptive source selection strategy is adopted to maintain a quality experience.
It effectively reduces the utilization of the central network source, lowers the amount of content requested by CDN, reduces bandwidth waste, and ensures a sustainable quality experience for clients in large-scale streaming scenarios.
Smart Images

Figure CN121264023A_ABST
Abstract
Description
Cross Reference to Related Applications
[0001] This application claims priority to U.S. Provisional Application Serial No. 63,494,074, filed April 4, 2023, which is incorporated by reference herein in its entirety. TECHNICAL FIELD
[0002] The present invention relates to a method and system for downloading content from a plurality of content sources. BACKGROUND
[0003] In the field of multimedia content delivery, content streaming (e.g., over the Internet) is one of the most popular methods for delivering content to users. Content streaming is very convenient and enables the playback of streamed content on many types of devices, including fixed playback devices (like a smart TV or a Hi-Fi system) and portable playback devices (like a smartphone, a laptop, a tablet, an AR / VR wearable device, or a car infotainment system).
[0004] Multimedia content can for example be in the form of video and / or audio content stored on one or more servers that can be accessed by a user device (often referred to as a client or client device) by using a media player that connects to the one or more servers over a network and requests the desired multimedia content. The one or more servers receive the request and, in response, transmit the requested multimedia content to the client that performs the playback of the multimedia content. The multimedia content is stored on the one or more servers and can be transmitted to the client in segments, meaning that the client does not need to receive the entire multimedia file (e.g., a complete music track or a complete movie) to start the playback and it is able to play the content in segments while downloading the content.
[0005] Devices and systems that store multimedia content for streaming to clients (e.g., content servers) are often referred to as Points of Presence (PoPs), and when initiating a multimedia stream, a client can access multiple PoPs, whereby a particular PoP is selected, for example, based on the geographical location of the client and / or the PoPs or the throughput that the PoPs can deliver. A PoP can be one or more dedicated multimedia content streaming servers forming a Content Delivery Network (CDN), where a CDN typically provides high-capacity and reliable PoPs that are located centrally in the network. A PoP can also be a streaming device that is located closer to the edge of the network (compared to a CDN located deeper in the network), for example, a PoP can be a peer or an edge cache. PoPs that are closer to the edge of the network typically provide lower reliability (e.g., when they are peers) compared to PoPs in a CDN, but PoPs that are closer to the edge of the network can be more abundant or less expensive to operate. SUMMARY
[0006] A drawback of existing solutions is that when many clients access the same content at the same time (e.g. in a large-scale streaming scenario), a throughput bottleneck occurs upstream on the network closer to the more central PoPs. For example, a throughput bottleneck can occur due to a large workload imposed on one or more CDN servers. Another reason for a throughput bottleneck in a streaming scenario relates to limitations of the Border Gateway Protocol (BGP), which manages routing between autonomous systems (ASes) of the Internet. BGP is built around the concept of shortest paths, which for example means that BGP cannot route around potential congestion (e.g. in a large-scale streaming scenario). This means that if a certain source is used to deliver content, even if multiple network paths are available for a connection between the certain source and a client, the certain source can be affected by a network bottleneck.
[0007] In case of multi-source delivery to a client, it is important to make a strategy of using multiple sources. This can for example be done by scheduling byte ranges to be delivered by respective sources. However, if certain sources are unreliable, there is a risk that bytes to be received from a bad or underperforming source do not arrive in time, which can impact the quality of experience of the client. Therefore, there is a need for a certain management strategy to mitigate the risks due to such unreliable sources. Alternatively, network coded delivery can be employed, which simplifies the use of multiple sources and enables to aggregate the throughput from multiple sources. The network code is a so-called fountain code. This means that data at the PoP is stored as so-called network coded symbols by means of a so-called block network code (e.g. network coded data can be received at the PoP or non-network coded data can be generated via an encoding process performed at the PoP). If enough linearly independent symbols are delivered from the sources, a data block can be decoded on the client. Therefore, it is not necessary to schedule a certain byte range to be delivered from a certain source, but rather to ensure that a sufficient number of (innovative symbols, i.e. linearly independent) network coded symbols are delivered from the respective source.
[0008] A drawback of multi-source delivery is that it can generate a large amount of in-flight data. For single-source delivery, the amount of in-flight data at the time of a content request is proportional to the product of network bandwidth and network latency. However, for multi-source delivery, the amount of in-flight data is proportional to the product of the number of sources and the single-path in-flight data. A large amount of in-flight data means a waste of bandwidth. Such excess data sent from the PoP is typically not desired, especially when the PoP is located within a CDN. Therefore, there is a need for an efficient strategy of using multiple sources.
[0009] It is an object of the present invention to overcome at least some of the drawbacks of the prior art solutions and to provide a method for streaming content that alleviates, mitigates or eliminates congestion and bottlenecks that occur during large scale streaming scenarios.
[0010] According to a first aspect of the invention, there is provided a method for downloading content from a plurality of sources over a network. The method comprises the steps of downloading network encoded content from each source in an initial set of sources, the initial set of sources comprising at least one source of a first type, wherein the network encoded content is encoded with a network code. The method further comprises determining an effective throughput rate of the network encoded content being downloaded from the initial set of sources, comparing the effective throughput rate to an effective throughput threshold, and if the effective throughput rate is below the effective throughput threshold, forming an updated set of sources by adding a source of a second type to the initial set of sources, wherein the source of the second type is a different source type to the first source type. In addition, the method comprises continuing to download the network encoded content from each source in the updated set of sources.
[0011] The invention is based at least on the observation that content can be downloaded from sources of different types (a first type and a second type), whereby content is requested from a source of the second type in response to an initial set of sources comprising one or more sources of the first type being unable to maintain an effective throughput above an effective throughput threshold.
[0012] In some embodiments, the initial set of sources comprises only sources of the first type. It is also envisaged that the initial set of sources comprises both sources of the first type and sources of the second type.
[0013] In some embodiments, the sources of the first type are edge sources, such as peers or edge caches, and the sources of the second type are central sources, such as sources belonging to a content delivery network, CDN.
[0014] The throughput available at PoPs located at the edge of the network (e.g., within a single AS) is typically much higher compared to the throughput available upstream in the network, especially for modern access technologies (e.g., FTTX). By using multimedia content encoded with network codes, content is efficiently delivered from multiple sources, and by prioritizing the download of content from nodes at the edge of the network (e.g., peers or edge caches), nodes located deeper in the network (e.g., CDNs) are offloaded and / or subjected to fewer content requests (e.g., resource consumption associated with requesting and receiving content from deeper nodes is minimized or avoided). Furthermore, by determining the effective throughput and using the effective throughput to determine when a reliable central network source (like a CDN) is needed to support the streaming process, the central network source is only used when necessary, which minimizes the load on the central network source. That is, the approach is adaptive and accommodates changing streaming conditions. In other words, the present invention seeks to identify a set of sources to use with the goal of reducing the amount of content requested from CDNs.
[0015] In some embodiments, the second type of source is an edge source, such as a peer or edge cache, and the first type of source is a central source, such as a source belonging to a content delivery network, CDN.
[0016] Thus, content is primarily downloaded from central sources, wherein in response to the one or more central sources being unable to maintain an effective throughput that exceeds the effective throughput threshold, edge sources are further used to download content. This reduces the utilization of central sources because instead of requesting content from one or more additional central sources to maintain sufficient effective throughput, content is requested from one or more additional edge sources.
[0017] In the following, it is assumed that the first type of source is an edge source, such as a peer source or an edge cache source, and that the second type of source is a central source, such as a source that is part of a CDN, unless otherwise stated. However, it will be appreciated that in many embodiments, the first type of source can also represent a central source, and the second type of source can represent an edge source.
[0018] In the case of multimedia streaming, the adaptive bitrate (ABR) streaming method is commonly used, where a single content item usually has multiple bitrate versions available. In this case, the client selects the appropriate bitrate version that fits the throughput observed on that client. The set of multiple bitrate versions is commonly referred to as a bitrate ladder. Such a bitrate ladder includes at least a low bitrate version associated with a low quality of experience (QoE) and a high bitrate version associated with a high QoE. The content player operating on the client includes an ABR policy that, for example, tries to maximize the QoE while minimizing the probability of not receiving a segment in time - which would lead to a play-out interruption and a re-buffering event. In the description of the invention, the term QoE or QoE level is associated with the ability to successfully deliver the bitrate version associated with that QoE. Thus, a decrease in QoE would mean that the ABR policy in the client observes a decrease in throughput and thus it decides to request a content version associated with a lower bitrate. Conversely, maintaining the QoE would mean that the ABR policy continues to request content segments associated with the bitrate that provides this particular QoE. The proposed invention assumes a generic ABR policy built-in the content player of the client and its focus is on generating sustainable throughput.
[0019] In general, the invention tries to reduce the utilization of central PoPs by using PoPs at the edge of the network. This is achieved either by not requesting content from central PoPs until it is absolutely necessary to maintain the QoE or by requesting content from additional edge PoPs instead of additional central PoPs when a set of central PoPs is having difficulties to maintain the QoE. However, PoPs at the edge of the network can be unreliable (e.g. if such a PoP is a peer that can go offline at any time). Thus, there is a risk that using a PoP located at the edge will have a negative impact on the QoE of the client. For example, if due to fluctuations in the bandwidth of the peer, not enough symbols are delivered in the time required to decode a content segment, the content player can decide to switch to a lower bitrate and this will have a negative impact on the QoE. The proposed invention includes a method to re-evaluate the composition of the set of sources to ensure that the probability of the event of not being able to decode a segment is very low. The invention uses the properties of the encoding delivery and the fact that PoPs located at the center, like the ones forming part of a CDN, are usually reliable.
[0020] A sustainable QoE level can refer to a state of the content player in which the content player is able to play content encoded at a bitrate associated with the QoE in time. In other words, delivering content at the specific bitrate required for the QoE is sustainable and all segments can be delivered before the player has to play the segment. An unsustainable QoE level can refer to a situation in which the content player needs to request segments at a lower bitrate to facilitate timely play of the segments. In other words, the player needs to lower the QoE level to achieve a new sustainable QoE level for the currently observed throughput. In addition to the term QoE level, the term QoE is used synonymously (if not ambiguous).
[0021] Additionally, between using central network sources and edge network sources, the "cost" (in terms of risk of degradation of streaming performance of other users, maintenance fees, equipment that the streaming provider needs to maintain) is asymmetric. For example, the outgoing bandwidth generated from a CDN typically incurs operational costs for the streaming service provider. On the other hand, the cost of having a client download content from an edge source is zero or negligible. Thus, a reduction in CDN utilization during content download can be provided by a PoP at the network edge, which can for example reduce the outgoing bandwidth of the CDN and / or reduce the total number of requests directed to the CDN. However, there is also an asymmetry between these two types of sources in terms of reliability. For example, a central source is expected to be highly reliable, as it is expected to be always available in the network, whereas an edge source can have a limited lifetime, e.g., an edge source can not be always present in the network. Moreover, a central source typically facilitates storing all content, whereas this can not always be achievable for an edge source (e.g., a peer operating within an Internet browser will have a constrained storage capacity). When using edge sources, a reduction in the reliability of these sources can be expected to negatively impact QoE, which means that in balancing the use of central and edge sources, a trade-off can be made between cost and e.g. average QoE. However, with the above-described approach, source selection achieves a reduction in the level of utilization of central sources, while maintaining the quality (such as QoE) of downloads with a higher probability. In other words, the approach maximizes central source utilization without impacting QoE. For example, this allows using fewer, less capable and / or more cost-effective central sources without negatively impacting QoE, even in large-scale streaming scenarios.
[0022] In some embodiments, obtaining the effective throughput threshold comprises: obtaining a current QoE level associated with the content; and determining the effective throughput threshold based on an effective throughput rate required to maintain the current QoE level.
[0023] That is, the method prioritizes downloading from the first type of source (edge source), and the method comprises initiating downloading from the second type of source (central source or edge source) if there is a risk of QoE degradation if continuing with the downloading from the first type of source without support from the second type of source. On the other hand, as long as the QoE can be maintained, the method enables a reduction in the level of utilization of the second type of source.
[0024] In some embodiments, the method comprises intercepting a content request from the content player and obtaining a QoE level based on the content request from the content player. Thus, the method can operate with any type of content.
[0025] According to a second aspect of the application, there is provided a computer device comprising a processor configured to perform the method according to the first aspect. In some embodiments, the computer device functions as a source selection agent that selects a source, requests content from the selected source on behalf of a content player, and once the content is received, passes the content to the content player. BRIEF DESCRIPTION OF DRAWINGS
[0026] Aspects of the application will be described in more detail with reference to the enclosed drawings, which show currently preferred embodiments.
[0027] Figure 1 Fig. 1 is a block diagram schematically illustrating a client comprising a content player and a source selection agent communicating with different types of sources, according to some embodiments.
[0028] Figure 2 Fig. 2 is a flow chart describing a method for selecting a source from which to request content, according to some embodiments.
[0029] Figure 3 Fig. 3 is a block diagram illustrating details of a source selection agent, according to some embodiments.
[0030] Figure 4 Fig. 4 is a flow chart describing how the decision whether to initiate content downloading from a second type of source is made, according to some embodiments.
[0031] Figure 5 Fig. 5 is a graph illustrating an example of how the method for source selection can be utilized to reduce the utilization of a second type of source (e.g. in terms of the number of content requests), according to some embodiments.
[0032] Figure 6 Fig. 6 is a flow chart describing an alternative version of how the decision whether to initiate content downloading from a second type of source is made, according to some embodiments. DETAILED DESCRIPTION
[0033] The systems and methods disclosed in this application can be implemented as software, firmware, hardware or a combination thereof. In a hardware implementation, the division of tasks is not necessarily corresponding to the division of physical units; on the contrary, one physical component can have multiple functions, and one task can be performed by several physical components in cooperation.
[0034] The computer hardware can be, for example, a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, an AR / VR wearable device, an automotive infotainment system, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, the present disclosure will refer to any collection of computer hardware individually or jointly executing instructions to perform any one or more of the concepts discussed herein.
[0035] Certain or all of the components can be implemented by one or more processors that accept computer-readable (also called machine-readable) code containing a set of instructions that, when executed by the one or more processors, perform at least one of the methods described herein. Any processor capable of (sequential or otherwise) executing a set of instructions, whether the instructions are supplied by software or hardware, including firmware, is called a machine-readable medium. Thus, a typical processing system (e.g., computer hardware) includes one or more processors as well as memory and / or storage. Each processor can include one or more of a CPU, a graphics processing unit, and a programmable DSP unit. The processing system can further include a memory subsystem including a hard drive, SSD, RAM, and / or ROM. A bus subsystem can be included for communication between the components. Software in execution can reside in the memory subsystem and / or within the processor(s).
[0036] The one or more processors can operate as a standalone device or can be connected to other processor(s) such as networked to other processor(s). Such a network can be built on various different network protocols and can be the Internet, a Wide Area Network (WAN), a Local Area Network (LAN), or any combination thereof.
[0037] Software can be distributed on a computer readable medium including computer storage media (or other non-transitory media) and communication media (or transitory media). As is well known to those skilled in the art, the term computer storage media includes all computer-readable media, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer. Further, it should be appreciated by those skilled in the art that (transitory) communications media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
[0038] Figure 1 is a block diagram depicting a client 30 streaming content from a plurality of available sources 11, 12, 13, 21, 22, 23 (PoPs). The available sources include first type sources 11, 12, 13 forming a first type source set 10 and second type sources 21, 22, 23 forming a second type source set 20. Each source 11, 12, 13, 21, 22, 23 is configured to transmit encoded content to the client 30 in response to receiving a content request from the client 30. The content can be provided to each source 11, 12, 13, 21, 22, 23 from an upstream source without network coding being performed, whereby the sources 11, 12, 13, 21, 22, 23 encode the content using network codes. Alternatively, the content is provided to each source 11, 12, 13, 21, 22, 23 already encoded with network codes from elsewhere (e.g., a central upstream server). The content (with or without network coding being performed) is temporarily stored by each source 11, 12, 13, 21, 22, 23 or forwarded to the client 30 requesting the content.
[0039] Client 30 includes a content player 37 configured to render and play media content provided to the client. Content player 37 can include a buffer for temporarily storing content prior to playback. Content player 37 can be any type of content player, such as a media player. In some implementations, content player 37 is an adaptive bit rate (ABR) content player 37 configured to request content at different bit rates based on an ABR policy and a content bit rate ladder (also referred to as a content manifest). A content bit rate ladder indicates a set of different versions of media content that the ABR content player 37 can request. The bit rate ladder can also indicate a download metric associated with each content version (such as an average effective throughput rate required to sustain the associated version). The ABR content player 37 obtains the content bit rate ladder from server 40 and / or from one of the available PoPs, which indicates to the ABR content player 37 which versions are available. The ABR content player 37 is configured to request one of the versions of content indicated in the content bit rate ladder based on its ABR policy and attributes of the streaming process. For example, the ABR content player 37 requests the version with the highest QoE (e.g., highest video and / or audio quality) that the ABR policy believes can be sustained based on the attributes of the streaming process.
[0040] The ABR policy can be buffer-based, where the ABR content player 37 determines that the streaming process attribute is the amount of content (e.g., duration) stored in the buffer of content player 37, and determines the version of content to request based on the amount of content in the buffer. For example, if there is a large amount of content in the buffer, the ABR content player 37 will request a higher quality version of the content, and if there is less content in the buffer (e.g., there is a risk of a playback interruption when the buffer becomes empty), the ABR content player 37 will request a lower quality version.
[0041] Additionally or alternatively, the ABR policy can be throughput or effective throughput based, where the ABR content player 37 determines that the streaming process attribute is the effective throughput rate or the throughput rate, and determines the version of content to request based on the determined effective throughput rate or the throughput rate. For example, if the effective throughput rate or the throughput rate is high, the ABR content player 37 will request a higher quality version of the content, and if the effective throughput rate or the throughput rate is low, the ABR content player 37 will request a lower quality version.
[0042] Additionally, for buffer-based ABR strategies and throughput / effective throughput-based ABR strategies, it is contemplated that the ABR content player 37 measures variance of streaming process attributes and further makes version selection based on the variance. For example, a larger variance can cause the ABR strategy to select a lower quality version compared to a case of a smaller variance.
[0043] The ABR content player 37 is configured to repeatedly re-evaluate version selection, such as once for each segment downloaded.
[0044] Different versions of content indicated in the content bitrate ladder provide different QoE to the user. For example, different quality versions can differ in at least one of resolution (SD, HD, or UHD), encoding format (H.264 or H.265), compression, frame size, color depth, etc. for video content, and at least one of sampling rate, number of bits per sample, compression, number of channels, etc. for audio content. The content version at the top of the content bitrate ladder provides content playback that is considered higher quality but also associated with higher requirements imposed by the reliability and throughput of the PoP connection. The ABR content player 37 strives to obtain the highest quality version of the content possible without interrupting playback in order to provide the highest possible QoE to the user.
[0045] It is also contemplated that the content player 37 is a non-ABR content player 37 and always requests the same version of content.
[0046] The content player 37 is configured to send a content request to the source selection agent 31 in the client 30. The source selection agent 31 is configured to select from the set of available PoPs to which the request of the content player 37 should be transmitted. That is, the source selection agent 31 is configured to determine which PoPs to use for downloading the version of the media content requested by the content player 37. The PoPs can also be referred to as sources 11, 12, 13, 21, 22, 23, and the set of available sources 11, 12, 13, 21, 22, 23 comprises two subsets, a first type source set 10 comprising the available first type sources 11, 12, 13, and a second type source set 20 comprising the available second type sources 21, 22, 23. The first type source set 10 can comprise sources 11, 12, 13 that are closer to the edge of the network (e.g. peers or edge caches), and the second type source set 20 can comprise sources 21, 22, 23 that are located more centrally in the network relative to the first type source set 10 (e.g. PoPs within a content delivery network (CDN)). That is, the second type sources can be sources belonging to a CDN, and the first type sources can be non-CDN sources, such as peers or edge caches. The source selection agent 31 is configured to select which source(s) 11, 12, 13, 21, 22, 23 should be used to download the content such that the utilization of the second type sources 21, 22, 23 is minimized while maintaining the level of QoE requested by the content player 37.
[0047] That is, the source selection agent 31 can be configured to select from which sources to request content according to a first decision scheme. The first decision scheme is configured to preferentially use edge sources 11, 12, 13 when downloading content, unless the resulting QoE would be negatively impacted - only then can the source selection agent 31 request content from one or more central sources 21, 22, 23 of the second type source set 20. Alternatively, the source selection agent 31 can be configured to select from which sources 11, 12, 13, 21, 22, 23 to request content according to a second decision scheme. The second decision scheme is configured to download content from one or more central sources, and if the effective throughput drops below the effective throughput threshold, the source selection agent 31 requests content from one or more edge sources. That is, it can be desirable to keep downloading content from the set of central sources until the effective throughput drops below the effective throughput threshold, and then the source selection agent 31 is configured to first try to increase the effective throughput by requesting content from edge sources rather than from additional central sources.
[0048] Additionally or alternatively, the source selection agent 31 can be configured to select the source 11, 12, 13, 21, 22, 23 from which content is to be requested according to a further decision scheme. An example of a third decision scheme is that, in order to maintain QoE, the source selection agent 31 can be configured to request content from additional edge sources 11, 12, 13 (first type sources) or to request content only from edge sources 11, 12, 13 while downloading content from a source set comprising one or more edge sources 11, 12, 13. If the effective throughput is detected to be below the effective throughput threshold, the source selection agent 31 can be configured to request content from additional edge sources 11, 12, 13 in an attempt to maintain an effective throughput sufficient to maintain QoE. Since edge sources 11, 12, 13 can be unreliable, there is a risk that additional edge sources 11, 12, 13 are insufficient to maintain the effective throughput, whereby content can be requested from yet another edge source 11, 12, 13. The source selection agent 31 can be configured to make a predetermined number of attempts by introducing additional edge sources 11, 12, 13 before resorting to the strategy of requesting content from central sources 21, 22, 23 described above.
[0049] An example of a fourth decision scheme is that, in order to maintain QoE, the source selection agent 31 can be configured to request content from additional central sources 21, 22, 23 (second type sources) or to request content only from central sources 21, 22, 23 while downloading content from a source set comprising one or more central sources 21, 22, 23. In some cases, initiating content download from additional central sources 21, 22, 23 can be deliberately avoided unless necessary for maintaining QoE and / or maintaining effective throughput above the effective throughput threshold. However, in order to avoid playback interruptions, there are cases in which content is requested from additional central sources 21, 22, 23 even if content has already been downloaded using one or more central sources 21, 22, 23. For example, if no edge sources 11, 12, 13 are available or known available edge sources are unable to provide sufficient effective throughput, the source selection agent 31 can be configured to request content from additional central sources 21, 22, 23.
[0050] The source selection 31 agent can be configured to apply one or more decision schemes, and / or to adaptively switch between decision schemes. For example, if only central sources 21, 22, 23 are available, the source selection agent 31 employs the fourth decision scheme, and if only edge sources 11, 12, 13 are available, the source selection agent employs the third decision scheme. If both central sources 21, 22, 23 and edge sources 11, 12, 13 are available, the source selection agent can employ any of the first through fourth decision schemes. For example, it is envisaged that at the beginning of a streaming process, the fourth decision scheme is utilized which primarily relies on central sources 21, 22, 23. After a predetermined amount of time of stable download, the method starts to deprecate central sources 21, 22, 23 and replace them with one or more edge sources 11, 12, 13. Then, the method can utilize the decision scheme one and request content primarily or only from edge sources 11, 12, 13, whereby one or more central sources 21, 22, 23 are only utilized when needed to maintain QoE.
[0051] The source selection agent 31 facilitates the use of any generic content player 37, which means that the content player 37 itself does not need to be adapted for multi-source delivery. The source selection agent 31 performs a source selection algorithm which will be explained in further detail below, and requests content from the source or sources 11, 12, 13, 21, 22, 23 it selects on behalf of the content player 37. The source selection algorithm performed by the source selection agent 31 is separate from the version selection or QoE selection that can be performed by the content player 37. In some embodiments, the source selection agent 31 will distribute content requests among the selected sources 11, 12, 13, 21, 22, 23, and a traffic controller implements a traffic control policy which will be explained in further detail below. The traffic control policy is also separate from the source selection algorithm performed by the source selection agent 31 and the version selection or QoE selection performed by the content player 37.
[0052] The source selection agent 31 receives content it requests on behalf of the content player 37 from the selected sources 11, 12, 13, 21, 22, 23, decodes the content with a network decoder, and then provides the decoded content to the content player 37.
[0053] To facilitate efficient multi-source content streaming, the content is encoded with network codes before it is transmitted to the client 30 (e.g. the encoding is performed by the sources 11, 12, 13, 21, 22, 23). For example, the content is divided into a plurality of subsequent segments, where each segment is encoded with a network code before being transmitted to the client 30. The network encoding enables each segment to be split into a plurality of symbols that can be transmitted independently from each other. For example, some symbols of a particular segment can be received from a first source 11, while some symbols are received from a different second source 12. The symbols are collected by the client 30 and decoded to generate the content segment.
[0054] The encoding of the content can be performed by the sources 11, 12, 13, 21, 22, 23, or elsewhere (e.g. in an upstream server that communicates with the sources 11, 12, 13, 21, 22, 23), and the sources 11, 12, 13, 21, 22, 23 receive and store the content, which is then transmitted to the client 30 upon request.
[0055] Typically, the central sources of the second set of sources 20 are highly reliable sources (compared to the edge sources of the first set of sources 10), and it is assumed that any second source 21, 22, 23 contains all the content (e.g. all segments) requested by the content player 37. In addition, the second sources 21, 22, 23 (which are for example dedicated servers of a CDN) are substantially always available and always ready to receive a content request and transmit the content to the client 30 in response.
[0056] However, the sources of the first set of sources 10 are typically less reliable, meaning that for example content requested from a certain first source 11 can only be partially available at the certain first source 11 (e.g. due to storage constraints in the first source 11) or not available at all, meaning that the content can be requested again from another source. In addition, the first sources 11, 12, 13 are also less reliable than the second sources 21, 22, 23 in terms of receiving requests while fully available / online, and the members of the second set of sources 20 are typically accessible at substantially all times, while the members of the first set of sources 10 can be available on an irregular and / or intermittent basis. For example, peers are an example of first sources 11, 12, 13, and a peer can be available for example only when a certain other user is streaming content, meaning that the peer can suddenly and unexpectedly become unavailable if the other user discontinues the streaming process.
[0057] The use of network coding helps to handle streaming cases containing sources of different types, different reliabilities, because network codes are so-called fountain codes, which allow requesting content from multiple sources 11, 12, 13, 21, 22, 23 without relying on receiving any particular packet from a particular source 11, 12, 13, 21, 22, 23. Therefore, it is expected that the more linearly independent the sources 11, 12, 13, 21, 22, 23 used are, the higher the probability of downloading the required data is, even if some of the sources 11, 12, 13, 21, 22, 23 are unreliable. On the other hand, simply downloading from more sources would lead to an increase of congestion in the network, which is why the source selection agent 31 is made adaptive to be able to handle cases where some sources are unreliable (e.g. do not have the exact content requested) without increasing the number of sources.
[0058] Further reference is made to Figure 2 The operation of the source selection agent 31 will now be described in more detail.
[0059] At step S1, the source selection agent 31 intercepts a request from the content player 37. The request comprises a content version identifier (e.g. a requested QoE level), and can indicate the effective throughput required to maintain the requested content version.
[0060] At step S2, the source selection agent 31 determines whether there are any available first type sources in the first set of sources 10. The first source type can be an edge source or a central source. In the following, it is assumed that any first type source is an edge source, and that any second type source is a central source, but the same approach is performed when any first type source is a central source and any second type source is an edge source.
[0061] In some embodiments, the source selection agent 31 receives a list of available sources 11, 12, 13, 21, 22, 23 and the type of each available source. The list of available sources can be updated repeatedly, e.g. when a first type source or a second type source becomes available or unavailable. That is, the first set of sources 10 and the second set of sources 20 can be updated repeatedly.
[0062] At step S2, the source selection agent 31 can access information indicative of the expected performance (e.g. in terms of latency and / or bandwidth) of the available sources 11, 12, 13, 21, 22, 23, thereby allowing the source selection agent 31 to make an informed decision as to which source(s) 11, 12, 13, 21, 22, 23 to select. For example, the expected performance of one source 12 can be based on previous downloads from the same source 12. To this end, the source selection agent 31 can make an informed decision and select one or more sources from the first set of sources 10 that are expected to be able to maintain the QoE indicated by the request of the content player 37 intercepted at step S1. The source selection agent 31 can be configured to preferentially select the first type sources 11, 12, 13 in order to reduce the load on the second type sources 21, 22, 23. For example, the source selection agent 31 can be configured to first try to meet the effective throughput required to maintain the QoE with one or more sources from the first set of sources 10, and if this is not possible, it resorts to using the second type source(s) 21, 22, 23 in addition or instead of the first type source(s) 11, 12, 13.
[0063] In case the first set of sources 10 is empty or the source(s) available in the first set of sources 10 are not expected to meet the effective throughput required to request the QoE, the method proceeds to step S8 and starts downloading the content from one or more sources selected from the second set of sources 20 in addition or instead of the first type source(s) 11, 12, 13.
[0064] As mentioned above, the content can be divided into successive encoded segments, whereby the download of one or more segments is initiated before the download of one or more subsequent segments. In such an embodiment, the source selection agent 31 can check whether one or more first type sources 11, 12, 13 were used for downloading a previous segment, and again use the same first type sources 11, 12, 13 for a subsequent segment.
[0065] If no first type sources 11, 12, 13 are available, then at step S8 the source selection agent 31 will request the content on behalf of the content player 37 using the second type sources 21, 22, 23 and initiate the download of the content from at least one second type source 21, 22, 23.
[0066] The content transmitted by the selected sources 11, 12, 13, 21, 22, 23 and received by the client 30 is encoded with a network code. For example, the sources 11, 12, 13, 21, 22, 23 encode the content with a network code, or the sources 11, 12, 13, 21, 22, 23 store content that has been encoded with a network code elsewhere. That is, the content received by the client can be encoded with a first encoding layer that the media player is able to ingest (e.g., MPEG-3 encoding for audio or H.265 encoding for video), where the first encoding layer is encapsulated in a second encoding layer that is the network code. With network coding, efficient downloading from multiple sources at the same time is facilitated. The network code can be a linear code, such as a random linear code, a RaptorQ code, a Reed-Solomon code, a Luby transform code, etc. The network code can be implemented as a block code or a convolutional code.
[0067] With network coding and content segmentation, the content is divided into a plurality of consecutive segments, where each segment represents a (possibly partially overlapping) temporal portion of the content. Each segment is then encoded with a network code into a set of symbols that can be transmitted independently of each other and reassembled at the client to form the encoded segment. By decoding the network coded segments, the client 30 can obtain the content segment in a format that can be ingested by the content player 30.
[0068] As an illustrative example, consider a video streaming, where a portion of the video (e.g., 2 seconds) forms a segment and is encoded with a network code to form N symbols. The symbols are transmitted from one or more sources (PoPs) 11, 12, 13, 21, 22, 23 to the client 30, and when the client 30 has a sufficient number of symbols, the client decodes the symbols to obtain the portion of the video that can be played by the content player 37.
[0069] At step S9, the source selection agent 31 will wait to receive a sufficient number of symbols so that decoding of the segment can be completed. After the segment is decoded, at step S10, the source selection agent 31 provides the decoded content to the content player 37, where the decoded content is stored in a buffer of the content player 37 or played immediately.
[0070] Returning to step S2, this step involves the source selection agent 31 determining whether there are any available first type source(s) 11, 12, 13. If it is determined that there are available first type sources 11, 12, 13, then the method proceeds to step S3 and the source selection agent 31 will select one or more first type sources 11, 12, 13 and initiate the downloading of content from the one or more first type sources 11, 12, 13. In some embodiments, the source selection agent 31 will initiate the downloading from only first type sources 11, 12, 13, given that there are available first type sources 11, 12, 13. In other words, if there is at least one first type source 11, 12, 13, then the source selection agent 31 can refrain from downloading from any members of the second type source set 20, unless this is initiated later in step S6 (as will be described below). This will alleviate the burden on the second type sources 21, 22, 23, as the source selection agent 31 will preferentially download from first type sources 11, 12, 13. The selected first type sources 11, 12, 13 are referred to as the initial source set, and as mentioned above, can contain only first type sources.
[0071] At step S5, the source selection agent 31 determines the effective throughput rate of the content downloaded from the one or more first type sources 11, 12, 13. The effective throughput rate can be the aggregate effective throughput for all (first type) sources used to download the content. For example, the effective throughput is the effective throughput measured at the output of the network decoder. The effective throughput at this location downstream of the network decoder is also the effective throughput that will influence the selection of the ABR policy in the content player 37. As an alternative, the effective throughput can also be determined based on the rate at which encoded symbols arrive at the network decoder and a measure of the amount of overhead indicative of these symbols.
[0072] Optionally, the method involves waiting for a predetermined time T1 until the effective throughput rate is first measured, to allow for the step S4 of ramping up the process of downloading from the selected first type sources 11, 12, 13, which can provide a more accurate measurement of the effective throughput rate.
[0073] The method then proceeds to step S6, in which the effective throughput rate is compared to an effective throughput threshold.
[0074] The effective throughput threshold can be based on a version (QoE) requested by the content player 37, which the source selection agent 31 can obtain by intercepting requests from the content player 37. The version or QoE can indicate or be associated with an effective throughput rate required to maintain the version or QoE selected by the content player 37, which is then used as the effective throughput threshold, so that the source selection agent 31 can select a source that reduces the utilization of the central source while maintaining an effective throughput that exceeds the effective throughput threshold. The version or QoE requested by the content player 37 can vary over time, which means that the effective throughput threshold based on the requested version or QoE can also vary over time.
[0075] In some embodiments, a target QoE is defined and can be used for source selection. For example, the target QoE is the highest available QoE. To allow the content player 37 to start playing quickly at the target QoE, the source selection agent 31 can be configured to always include one or more second type sources 21, 22, 23 as long as the QoE currently requested by the content player 37 is a lower QoE relative to the target QoE.
[0076] If the measured effective throughput rate exceeds the effective throughput threshold, this can indicate that the selected first type source 11, 12, 13 is able to maintain a download rate sufficient to maintain the QoE. Therefore, the source selection agent 31 will continue to download content from the selected one or more first type sources 11, 12, 13. At step S7, the source selection agent 31 checks whether enough content has been downloaded to start decoding. If this is the case, the method proceeds to step S10, where the content is decoded and the decoded content is provided to the content player 37 for playing. If the content downloaded at step S7 is not sufficient to start decoding, the method returns to step S5 and measures the effective throughput again at S5.
[0077] Optionally, at S11, the source selection agent 31 waits for a duration T2 and then determines the effective throughput rate again at step S5. That is, the effective throughput rate is repeatedly measured at intervals of T2 during the download and compared to the effective throughput threshold to determine whether a second type source 21, 22, 23 should be used. Alternatively, the effective throughput is determined substantially continuously, or instead of repeatedly / substantially continuously measuring the effective throughput, the effective throughput is measured once per segment, and if the evaluation of step S7 is negative, the method proceeds to step S9 and waits for the decoding to complete.
[0078] Thus, as long as the first type sources 11, 12, 13 can maintain a download effective throughput rate above the effective throughput threshold, the source selection agent 31 will repeat steps S5, S6, S7 and Sll until the segment has been received and can be decoded, thereby repeating the process for the next segment.
[0079] If at step S6 it is determined that the measured effective throughput rate is below the effective throughput threshold, there is a risk that the currently selected first type source 11, 12, 13 cannot maintain the current QoE. Then, the method proceeds to step S8 and, in addition or instead of downloading from the selected first type source 11, 12, 13, downloading from at least one second type source 21, 22, 23 is started. That is, the source selection agent 31 forms an updated source set comprising at least one second type source 21, 22, 23 and optionally one or more first type sources 11, 12, 13.
[0080] In this way, the number of content requests transmitted to the second type sources 21, 22, 23 will be reduced, since the central sources 21, 22, 23 are only used when it is necessary to maintain an effective throughput rate above the effective throughput threshold. By selecting an effective throughput threshold equal to the effective throughput required to maintain the requested QoE, a reduced utilization of the central sources is achieved without any compromise on the QoE.
[0081] Figure 3 is a block diagram illustrating details of the source selection agent 31 according to some embodiments. As shown, the source selection agent 31 operates between the content player 37 and the sources of the first type source set 10 and the second type source set 20.
[0082] The source selection agent 31 comprises an intercept unit 36 which intercepts content requests from the content player 37. The content request indicates the version or QoE of the content requested by the content player 37 and the request is passed to the source selection algorithm 33 which determines whether the first type source set 10, the second type source set 20 or the sources of both sets should be used when downloading the requested content. The content is divided into consecutive segments encoded with a network code. Each network code encoded segment is further divided into symbols which are transmitted from the sources 11, 21 to the source selection agent 31. The symbols are obtained and temporarily stored in a network decoder 35 of the source selection agent 31. When a sufficient number of symbols of a segment have been received, the network decoder 35 will be able to decode the segment and provide the decoded content of the segment to the content player 37 (optionally via the interceptor 36). The sufficient number of symbols required to start the decoding process can be equal to all the symbols of the segment or a subset of these symbols. For example, there are network coding techniques which allow the decoding to start when only a subset of the symbols have been received, whereby the decoding is completed after all the symbols have been received.
[0083] Information related to the operation of the decoder 35, the rate at which the decoder 35 receives symbols, or the rate at which the decoder 35 outputs decoded content will be passed to the bandwidth estimator 34. For example, the bandwidth estimator 34 obtains an indication of the rate at which the network decoder 35 receives symbols from each of the respective sources and the size of each symbol, thereby allowing the bandwidth estimator 34 to estimate the throughput rate of the source selection agent 31. For example, the network decoder 35 obtains X symbols of size N kB per second from a first source and Y symbols of size N kB per second from a second source, thereby allowing the bandwidth estimator to estimate the throughput as kB per second.
[0084] Additionally or alternatively, the bandwidth estimator 34 obtains from the network encoder 35 an indication of the amount of overhead in the network encoded data (e.g., a percentage, a ratio, or an estimated number of bytes per second), whereby the bandwidth estimator 34 can determine the effective throughput rate based on the amount of overhead and the throughput rate. For example, if the throughput rate is Z kB per second and the overhead is 20%, the effective throughput can be estimated as Z kB per second.
[0085] Additionally or alternatively, the bandwidth estimator 34 determines the rate at which the network decoder 35 outputs decoded content, which is equal to the effective throughput, thereby allowing a direct measurement of the effective throughput rate.
[0086] In some embodiments, the network decoder 35, the interceptor 36, and / or the content player 37 will also determine other parameters related to the download process and transmit these parameters to the source selection algorithm 33. For example, the network decoder 35 communicates to the source selection algorithm 33 information indicating how many (e.g., a ratio or a number of symbols) encoded segments have been received, and / or the content player 37 communicates to the source selection algorithm 33 information indicating how much (decoded) content is stored in the buffer of the content player 37 (e.g., in a data amount, a playback duration, or a buffer fullness level metric).
[0087] The source selection algorithm 33 also receives the requested content version or QoE from the interceptor 36, which has extracted this information from the request of the content player 37.
[0088] Thus, the source selection algorithm 33 obtains the requested version or QoE and at least one of the following: the throughput rate, the effective throughput rate, and other parameter(s) related to the download such as a buffer fullness level. Based on this information, the source selection algorithm 33 performs the process described above in Figure 2 and determines whether the second type source 21 should be utilized.
[0089] Further referenceFigure 4 Details for determining whether to initiate a download from a second type source will now be described in further detail in accordance with some embodiments. In Figure 2 Step S6 involves comparing the effective throughput rate to an effective throughput threshold to determine whether to download using the second type source. In some embodiments, step S6 will further include considering a buffer threshold and a buffer fullness level obtained from the content player 37.
[0090] The buffer fullness level indicates an amount or duration of buffered content available to the content player 37. For example, the buffer fullness level indicates an amount or duration of (decoded) ready-to-play content stored in the buffer of the content player 37.
[0091] Because network-encoded content is continuously downloaded and stored in network decoder 35 before being decoded, the amount of content stored in the buffer of content player 37 may be a slight underestimation of the amount of content available to content player 37. For example, if an encoded segment that network decoder 35 is currently downloading and / or decoding is likely to be fully downloaded and / or decoded before the content in the buffer of media player 37 is consumed, then the amount of content associated with that encoded segment, in addition to the decoded content stored in the buffer of content player 37, may also be included in the buffer fullness level. An example of how the download / decoding process of network decoder 35 can be considered together with the amount of decoded content in the buffer of content player 37 is described in International Application No. PCT / US2022 / 044237, filed September 21, 2022, entitled “METHOD FOR DATA RATE AND BUFFER ESTIMATION FOR MULTI-SOURCE DELIVERY”, which is incorporated herein by reference in its entirety. As explained in this reference, the amount of buffered content available to content player 37 can be determined as the sum of the content stored in the buffer and the content associated with the currently downloaded segment multiplied by a weighting factor. In one example implementation, the weighting factor is one if it is highly likely that the segment will be fully downloaded and decoded before the content in the buffer is consumed, and zero if it is highly likely that the segment will not be fully downloaded and decoded before the content in the buffer is consumed. Typically, a finer-grained estimate of the amount of available content can be obtained by determining the probability A% that the segment will be fully downloaded and decoded before the content in the buffer is consumed, whereby the weighting factor is set to probability A%. That is, the buffer fullness level can be either the actual amount of content stored in the buffer of content player 37 or the amount of available content, which includes the amount of content stored in the buffer of content player 37 and at least a portion of the content associated with the segment currently being downloaded to network decoder 35.
[0092] At step S61, the source selection algorithm obtains the buffer fullness level (e.g., the amount of content in the buffer, or a measure of available content considering the amount of content in the buffer and the download / decoding progress of the network decoder 35) and compares it with a buffer threshold. If the buffer fullness level exceeds the buffer threshold, the method proceeds to step S62, which includes comparing the effective throughput rate with a first effective throughput threshold. If the effective throughput rate exceeds the first effective throughput threshold, the method proceeds to step S7 and... Figure 2The flowchart continues. If it is determined at step S62 that the effective throughput rate is below the first effective throughput threshold, the method instead proceeds to step S8 and the content is downloaded from at least one second type source according to Figure 2 The flowchart continues by initiating downloading of content from at least one second type source.
[0093] On the other hand, if it is determined at step S61 that the buffer level is below the buffer threshold, the method instead proceeds to step S63 which comprises comparing the effective throughput rate with a second effective throughput threshold. If the effective throughput rate exceeds the second effective throughput threshold, the method proceeds to step S7 and the content is downloaded from at least one second type source according to Figure 2 The flowchart continues. If it is determined at step S63 that the effective throughput rate is below the second effective throughput threshold, the method instead proceeds to step S8 and the content is downloaded from at least one second type source according to Figure 2 The flowchart continues by initiating downloading of content from at least one second type source.
[0094] The first effective throughput threshold is lower relative to the second effective throughput threshold. In effect, this enables dynamic control of the effective throughput threshold based on the buffer fullness level. In this way, the source selection algorithm 33 is made more tolerant of lower effective throughput rates if the content player 37 has a large amount of content available (e.g. a high buffer fullness level). This effectively avoids downloading from the second type source 21 due to a temporary drop in throughput / effective throughput from the first type source(s) 11 in situations where the content player 37 has enough content to continue playing without the risk of reducing QoE or interruption.
[0095] As an illustrative example, the buffer threshold can be 10 seconds of content, the first effective throughput threshold is 5 Mb / s, and the second effective throughput threshold is 8 Mb / s. The source selection algorithm 33 will then repeatedly evaluate step S6 and check whether the media player 37 has more than 10 seconds of content available. As long as this criterion is met, no additional second type source 21 will be used for downloading even if the effective throughput temporarily drops to 6 Mb / s or even 5.1 Mb / s. On the other hand, if the effective throughput remains too low for a long time, the buffer fullness level will drop and when the buffer fullness level indicates that less than 10 seconds of content is stored in the buffer, the source selection algorithm 33 will initiate downloading from the second type source 21 as soon as the effective throughput is below the second effective throughput threshold of 8 Mb / s.
[0096] It will be appreciated that the above values for the first and second effective throughput thresholds and the buffer threshold are merely exemplary and other values can be assigned depending on, for example, the type of content being streamed (e.g. audio or video or both) and the type of network connection used by the client (e.g. wired, wireless or mobile network). The buffer threshold should be high enough to allow the download from the second type source(s) 21 to ramp up before the buffered content is consumed. The first effective throughput threshold can be lower than the average effective throughput required to maintain the current QoE, which is beneficial in tolerating lower effective throughput rates without requiring a download from the second type source(s) 21 (provided there is sufficient amount of content available in the buffer of the content player 37). On the other hand, the second effective throughput threshold can be higher than the average effective throughput rate required to maintain the current QoE, as the second effective throughput threshold sets a lower limit for the effective throughput rate used when the buffer fullness level has exceeded the critical limit, which means that it is desirable to both increase the amount of buffered content and continue the playback of the content.
[0097] In this way, by taking into account the buffer fullness level and the buffer threshold in addition to the effective throughput rate, the situation where the source selection algorithm 33 prematurely starts a download from the second type source is avoided.
[0098] Additionally or alternatively, another method for avoiding premature downloads from the second type source(s) 21 is to average the measured effective throughput rate and / or buffer level over time used by the source selection algorithm 33. For example, the effective throughput rate and / or buffer level can be averaged over the duration of each segment or over the time interval T2 between subsequent measurements, which means that temporary fluctuations in the effective throughput or buffer level maintained by the first type source(s) 11 will be tolerated.
[0099] The source 11, 21 selected by the source selection algorithm 33 is provided to the flow controller 32, which then transmits a request to the selected source 11, 21. The flow controller 32 is configured to request data from the source 11, 21 specified by the source selection algorithm 33 in a manner that reduces or minimizes the amount of in-flight data. Methods that can be used to implement this type of request distribution between the specified sources 11, 21 are explained in further detail in “DOWNLOAD CONTROL IN MULTI-SERVER COMMUNICATION SYSTEM” published on 10 September 2020 with international publication number WO / 2020 / 180988, which is incorporated herein by reference in its entirety.
[0100] As explained in this reference, the traffic controller 32 can be configured to send initial download requests to the sources 11, 21, receive data associated with these initial download requests, and update information about the quality (e.g. bandwidth and latency) of the communication links on which the requested data is transmitted. Then, based on the updated communication link quality information, the traffic controller 32 will determine how to send subsequent requests. In other words, while the source selection algorithm 33 determines which sources 11, 21 to use and when, the traffic controller 32 will ensure that the sources selected by the source selection algorithm 33 are used efficiently. For example, when requesting data from all sources specified by the source selection algorithm 33, the traffic controller 32 controls how much data is requested from each source. For example, a source associated with a lower latency and a higher bandwidth will receive more requests than another source associated with a higher latency and a lower bandwidth.
[0101] The source selection agent 31 can be configured to use different transmission methods for sources belonging to each of the two different types. For example, WebRTC data channels or QUIC can be used to download from the first type of sources 11 (e.g. that are peers) and HTTP or QUIC can be used to download content from the second type of sources 21 (e.g. that are PoPs belonging to a CDN).
[0102] Figure 5 is a graph showing an example of how the level of utilization of the central source is achieved with the method and the source selection agent described above. For the lines 51, 52, 53, 54, 55, 56, the horizontal axis represents the time since the start of the download of the content and the vertical axis represents the effective throughput rate, the amount of buffered content or the amount of available content (e.g. the buffer level or the buffer fullness) or the QoE.
[0103] The line 51 indicates the QoE of the content being downloaded and played. The QoE remains at the same level throughout the download. For example, the QoE stabilizes at the highest possible QoE.
[0104] The line 52 indicates the buffer level available to the content player or the amount of (decoded) content. At the start of the download at tl, there is no content available to the content player, however as the download continues, the buffer level increases and at time t3, the buffer level has stabilized at a certain amount of content or a certain duration of content.
[0105] Line 53 indicates the effective throughput received from a second type source (e.g., a CDN). As shown, line 53 is discontinuous and is not present between times t2 and t3. This is because the source selection algorithm determines at t2 that the effective throughput provided by the first type source (indicated with lines 55 and 56) exceeds the effective throughput threshold and that the second type source is not necessary. From t2 to t3, the source selection algorithm uses only the first type source(s), and the buffer level (line 52) continues to increase while the QoE (line 51) stabilizes. At time t3, the effective throughput provided by the first type source drops sharply, and the source selection algorithm detects this because the measured effective throughput rate is below the effective throughput threshold. In response, the source selection algorithm adds the second type source to the list of sources from which content should be downloaded, and from time t3 to t4, data is downloaded from the second type source (line 53) in addition to a small amount of data downloaded from the first type source (lines 55 and 56).
[0106] Thus, from time t2 to time t3, the utilization of the second type source is effectively mitigated, and the second type source is used to download content only when the effective throughput of the first type source drops at t3.
[0107] Line 54 indicates the total aggregate effective throughput achieved with the first type source and the second type source at each point in time. As with lines 53, 55, and 56, line 54 indicates effective throughput, but is plotted on a different scale. As shown, the total aggregate effective throughput remains stable throughout the download between ti and t4, despite the use of only the first type source between t2 and t3 and primarily the second type source between t3 and t4. Thus, the source selection method achieves efficient reduction in utilization of the central source without compromise to QoE or total effective throughput.
[0108] Figure 6 is a flowchart that describes a simplified method for comparing the effective throughput threshold to the effective throughput rate to determine whether an additional second type source should be used to download content. Steps SI, S2, S3, S8, S9, and S10 are analogous to the corresponding steps of Figure 2 . In the flowchart of Figure 6 , the first source type can be an edge source or a central source. In the following, it is assumed that any first type source is an edge source and that any second type source is a central source, but the same method is performed when any first type source is a central source and any second type source is an edge source.
[0109] Figure 6The method involves implicitly determining whether the effective throughput rate exceeds the effective throughput threshold, rather than explicitly determining the effective throughput rate and the effective throughput threshold. If it is determined at step S2 that the first type source is available, then at step S3, the network coded segments of the content are initiated to be downloaded from the first type source(s). The method then proceeds to step S41 which involves waiting for a predetermined time T3, and then proceeds to step S7 which involves checking whether decoding of the segments has completed. If decoding has completed T3 time after the download started, then the method proceeds to step S10 which involves providing the decoded content to the content player. On the other hand, if decoding of the segments has not completed at step S7, then the method proceeds to step S8 and starts downloading from at least one additional second type source.
[0110] That is, the effective throughput rate is determined indirectly by checking whether the T3 time is sufficient to allow the segments to be downloaded and decoded. The effective throughput threshold is determined indirectly by the time T3. It will be appreciated that the waiting time T3 can be set to an appropriate value for a predetermined segment size, an expected segment decode size and a requested QoE, thereby effectively giving an effective throughput threshold. For example, if the content player requests a QoE that on average requires X Mb / s to maintain, each encoded segment carries Y Mb of content, where Z% is overhead data, then the waiting T3 can be set to seconds. For example, , and , resulting in ms. In other words, in order to maintain the QoE, a new segment should be decoded and provided to the content player every 160 ms, and if the method determines at step S7 that this is not the case, then the method starts downloading content from an additional second type source at step S8.
[0111] The above numerical values are merely exemplary and other values can be used in the same way. Additionally, it is envisaged that T3 can be shortened from the above exemplified time required to maintain the QoE, to enhance reliability and bias the download towards maintaining the QoE of the stream, whilst also increasing the amount of buffered content.
[0112] Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the present disclosure, the use of terms such as “processing,” “computing,” “calculating,” “determining,” “analyzing,” “displaying,” and / or the like, refer to the action and / or processes of a computer hardware or computing system or similar electronic computing device, that manipulates and / or transforms data represented as physical (e.g., electronic) quantities within the computer hardware or computing system’s registers and / or memories into other data similarly represented as physical quantities within the computer hardware or computing system memories or registers or other such information storage, transmission or display devices.
[0113] It should be appreciated that the foregoing description is of exemplary embodiments of the application and that changes can be made to the embodiments described while still obtaining the inventive effect of the present application. For example, the various features of the foregoing description can be combined in any combination. Therefore, no limitation is placed on the scope of the inventive aspects, which are to be limited only by the claims that follow and the equivalents thereof.
[0114] Furthermore, certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules can constitute either software modules (e.g., code, instructions, logic, processing circuitry, or the like) or hardware modules. A hardware module is tangible unit capable of performing certain operations and can include, for example, a
[0115] Accordingly, although specific embodiments of the application have been described, it will be appreciated that those skilled in the art will be able to devise numerous other and further modifications to the specific embodiments described without departing from the spirit and scope of the general inventive aspects.
[0116] Various aspects of the disclosure can be appreciated from the following enumerated example embodiments (EEEs): EEE 1. A method for downloading content from a plurality of sources over a network, the method comprising: downloading network coded content from each source in an initial set of sources, the initial set of sources comprising at least one first type of source in the network, and the network coded content being encoded with a network code; determining an effective throughput rate of the network encoded content being downloaded from the initial set of sources; comparing the effective throughput rate to an effective throughput threshold; if the effective throughput rate is below an effective throughput threshold: then forming an updated set of sources by adding a second type of source to the initial set of sources, wherein the second source type is different from the first source type; and continuing to download the network encoded content from each source in the updated set of sources.
[0117] EEE2. The method of EEE1, wherein if the effective throughput rate is above the effective throughput threshold, the method comprises: continuing to download the network encoded content from each source in the initial set of sources.
[0118] EEE3. The method of any preceding EEE, wherein the second source type comprises a peer source or an edge cache source, and the first source type comprises a source belonging to a content delivery network, CDN.
[0119] EEE4. The method of EEE1 or EEE2, wherein the first source type comprises a peer source or an edge cache source, and the second source type comprises a source belonging to a content delivery network, CDN.
[0120] EEE5. The method of any preceding EEE, wherein downloading network encoded content comprises downloading a current network encoded segment of a plurality of consecutive network encoded segments.
[0121] EEE6. The method of EEE5, further comprising: downloading a first portion of the current network encoded segment with the initial set of sources; downloading a remaining portion of the current network encoded segment with the updated set of sources; and initializing downloading of a subsequent network encoded segment relative to the current segment with the initial set of sources.
[0122] EEE7. The method of EEE5 or EEE6, further comprising determining the effective throughput rate by measuring the effective throughput rate at a plurality of time points while downloading the current network encoded segment.
[0123] EEE8. The method of EEE7, wherein the effective throughput rate is an average of a plurality of measurements of the effective throughput rate.
[0124] EEE9. The method of any of the preceding EEEs, further comprising: determining a set of accessible first-type sources; determining the initial set of sources by selecting at least one first-type source in the set of accessible first-type sources; determining a set of accessible second-type sources; wherein adding the second-type sources to the initial set of sources to form the updated set of sources comprises selecting second-type sources from the set of accessible second-type sources.
[0125] EEE10. The method of EEE 9, further comprising repeatedly updating the set of accessible first-type sources and the set of accessible second-type sources.
[0126] EEE11. The method of any of the preceding claims, wherein obtaining an effective throughput threshold comprises: obtaining a current quality of experience (QoE) level associated with the content; and determining the effective throughput threshold based on a rate of effective throughput required to maintain the current QoE level.
[0127] EEE12. The method of EEE 11, further comprising: intercepting a content request from a content player; and obtaining the QoE level based on the content request from the content player.
[0128] EEE13. The method of EEE 11 or EEE 12, further comprising: obtaining a target QoE level; comparing the current QoE level to the target QoE level; if the current QoE level indicates a lower QoE compared to the target QoE: forming the updated set of sources by adding at least one second-type source to the initial set of sources; and downloading a network coded content from each source in the updated set of sources.
[0129] EEE14. The method of any of the preceding EEEs, wherein the initial set of sources comprises at least two first-type sources.
[0130] EEE15. The method of any of the preceding EEEs, wherein the initial set of sources comprises only sources of the first source type.
[0131] EEE16. The method of any of the preceding EEEs, further comprising: decoding the network encoded content to obtain decoded content; and providing the decoded content into a buffer associated with a media player.
[0132] EEE17. The method of any of the preceding EEEs, further comprising: obtaining a buffer fullness level, the buffer fullness level indicating an amount of buffered content stored in a buffer of a content player; if the buffer fullness level exceeds a buffer threshold, setting the effective throughput threshold to a first effective throughput threshold; otherwise, setting the effective throughput threshold to a second effective throughput threshold; wherein the second effective throughput threshold is higher than the first effective throughput threshold.
[0133] EEE18. A computer program product comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method according to any of EEEs 1 to 17.
[0134] EEE19. A computer-readable storage medium storing the computer program according to EEE 18.
[0135] EEE20. A computer device comprising a processor configured to carry out the method according to any of EEEs 1 to 17.
[0136] EEE21. A source selection agent comprising the computer device according to EEE 20, wherein the source selection agent is configured to download content requested by a content player.
[0137] EEE22. A streaming client device comprising the source selection agent according to EEE 21, and a content player.
Claims
1. A method for downloading content from multiple sources over a network, the method comprising: Download network-encoded content from each source in an initial source set, the initial source set including at least one source of a first type in the network, and the network-encoded content is encoded with network code; Determine the effective throughput rate of the network-encoded content being downloaded from the initial source set; Compare the effective throughput rate with the effective throughput threshold; If the effective throughput rate is lower than the effective throughput threshold: An updated source set is formed by adding a second type of source to the initial source set, wherein the second source type is different from the first source type; and Continue downloading the network-encoded content from each of the updated source sets.
2. The method according to claim 1, wherein, If the effective throughput rate is higher than the effective throughput threshold, the method includes: Continue downloading the network-encoded content from each source in the initial source set.
3. The method according to any one of the preceding claims, wherein, The second source type includes peer-to-peer sources or edge cache sources, and the first source type includes sources belonging to a Content Delivery Network (CDN).
4. The method according to claim 1 or claim 2, wherein, The first source type includes peer-to-peer sources or edge cache sources, and the second source type includes sources belonging to a Content Delivery Network (CDN).
5. The method according to any one of the preceding claims, wherein, Downloading network encoded content includes downloading the current network encoded segment from multiple consecutive network encoded segments.
6. The method of claim 5, further comprising: Download the first part of the current network-coded segment using the initial source set; Download the remaining portion of the current network-coded segment using the updated source set; as well as The download of subsequent network-coded segments relative to the current segment is initiated using the initial source set.
7. The method of claim 5 or claim 6, further comprising determining the effective throughput rate by measuring the effective throughput rate at multiple time points while downloading the current network encoded segment.
8. The method according to claim 7, wherein, The effective throughput rate is an average of multiple measurements of the effective throughput rate.
9. The method according to any one of the preceding claims, further comprising: Determine the first set of accessible source types; The initial source set is determined by selecting at least one first-type source from the accessible first-type source set; Determine the accessible set of second-type sources; Adding the second type of source to the initial source set to form the updated source set includes selecting a second type of source from the accessible second type of source set.
10. The method of claim 9, further comprising repeatedly updating the accessible first type source set and the accessible second type source set.
11. The method according to any one of the preceding claims, wherein, The thresholds for achieving effective throughput include: Obtain the current Quality of Experience (QoE) level associated with the content; and The effective throughput threshold is determined based on the effective throughput rate required to maintain the current QoE level.
12. The method of claim 11, further comprising: Intercept content requests from the content player; as well as The QoE level is obtained based on the content request from the content player.
13. The method according to claim 11 or claim 12, further comprising: Achieve the target QoE level; Compare the current QoE level with the target QoE level; If the current QoE level indicates a lower QoE compared to the target QoE: The updated source set is formed by adding at least one source of the second type to the initial source set; and Download network-encoded content from each of the updated source sets.
14. The method according to any one of the preceding claims, wherein, The initial source set includes at least two first-type sources.
15. The method according to any one of the preceding claims, wherein, The initial source set includes only sources of the first source type.
16. The method according to any one of the preceding claims, further comprising: The network-encoded content is decoded to obtain the decoded content; as well as The decoded content is then provided to a buffer associated with the media player.
17. The method according to any one of the preceding claims, further comprising: Obtain the buffer fullness level, which indicates the amount of buffered content stored in the buffer of the content player; If the buffer fullness level exceeds the buffer threshold, then the effective throughput threshold is set to the first effective throughput threshold; Otherwise, the effective throughput threshold is set to the second effective throughput threshold; The second effective throughput threshold is higher than the first effective throughput threshold.
18. A computer program product comprising instructions that, when executed by a computer, cause the computer to perform the method according to any one of claims 1 to 17.
19. A computer-readable storage medium storing a computer program according to claim 18.
20. A computer device comprising a processor configured to perform the method according to any one of claims 1 to 17.
21. A source selection agent, comprising the computer device of claim 20, wherein, The source selection proxy is configured to download the content requested by the content player.
22. A streaming client device, comprising a source selection proxy as described in claim 21, and a content player.
Citation Information
Patent Citations
Download control in multi-server communication system
WO2020180988A1