In current content distribution systems, a content provider may use a number of servers to provide content to users. At any given time, a server may be responsible for handling the requests of a large population of users. The quality of service provided to users can vary, depending on a variety of parameters. These include, for example, the number of users, the frequency of their requests, the volume of data being requested, the topology of the content distribution network, and the infrastructure of the network from the server to each user. Moreover, other issues may affect the level of demand placed on the distribution system. Demand for entertainment may increase on weekends, for example; new releases of certain types of content, such as popular movies, trailers, or music videos may increase demand as well.
As a result of the demands placed on a content distribution network and its infrastructure, the user experience can sometimes be frustrating. The distribution process can be slow and inefficient in some circumstances, and can appear unresponsive to the user. Streaming may be slow to begin, and may then appear to pause or stutter for example. Downloads may take a long time to complete. The frustration can be compounded if the user is required to pay for access to the desired content, and receives slow service.
In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
Disclosed herein are methods and systems to improve the efficiency of a content delivery network. A local distribution node is introduced to the network, between the content provider and the end user device (i.e., the topological leaf node, if the network is modeled as a graph). The local distribution node is responsible for servicing a localized subset of the leaf nodes that would otherwise be serviced by a conventional server of the content delivery system. Such a local distribution node may service a single residential neighborhood or apartment complex for example. Requests for content are received at the local distribution node from leaf nodes, and content is received at the local distribution node for transmission to the leaf nodes. Under certain circumstances, content may be cached at the local distribution node to allow faster service of subsequent requests for this content.
Caching may also be used to make channel surfing process more efficient; low bandwidth “microtrailers” for each of several consecutive channels may be obtained by the local distribution node and cached. These microtrailers can then be quickly dispatched to a leaf node sequentially, allowing for efficient servicing of a channel surfing user.
Flexibility can be built into this system in several ways. If demand is high, a leaf node may be promoted to serve as an additional local distribution node, then demoted if demand subsides. Leaf nodes may also share content among themselves, which thereby provides a faster, more convenient way to obtain content for a user. Bandwidth may be allocated and reallocated by the local distribution node for the local population of leaf nodes, based on demand and contingent on infrastructure limitations.
Local Distribution Node
Example topologies for such a system are illustrated in
The local distribution node 110 may likewise be an STB or desktop or portable computing device, and may have server functionality. In an embodiment, the local distribution node 110 receives a request 130 for content 140, where the request comes from one or more leaf nodes 120. The request 130 is conveyed by local distribution node 110 to a server of a content provider (not shown) as necessary. The requested content 140 may then be received at the local distribution node 110 from the content provider and forwarded to the requesting leaf node(s) 120. In some situations the requested content may already be present at the local distribution node 110, as will be discussed below. In this case, the local distribution node will not necessarily have to contact the content provider. Communications between the local distribution node 110 and the leaf nodes 120 may take place using any communications protocol known to persons of ordinary skill in the art.
As will be discussed below, the provision of requested content 140 may be contingent on whether the request is consistent with an access policy. Such a policy would specify that a certain user, or the leaf node associated with the user, is or is not authorized to access certain content. This may be based on a particular subscription package purchased by the user, or on specified parental controls, for example. Such an access policy 160 is sent to and enforced by the local distribution node 110 in the illustrated embodiment. The access policy 160 may be provided to the local distribution node by a policy server (not shown). Alternatively, the access policy 160 may be enforced at the content provider, or at the individual leaf nodes. In an embodiment, the policy server may be incorporated in a content server of the content provider.
In an embodiment, the local distribution node 110 may also be capable of allocating and reallocating bandwidth to the leaf nodes 120. Such allocation may be performed in accordance with a bandwidth allocation policy 150. Such a policy 150 may be distributed from a bandwidth policy server (not shown) that may be the same physical device as the content server or access policy server. The bandwidth allocation policy 150 may be enforced at the local distribution node 110 or at the content provider, in various embodiments.
An alternative topology is shown in
Another alternative topology is shown in
Processing at the local distribution node includes the operations shown in
Otherwise, a determination is made at 240 as to whether the requested content is already cached at the local distribution node. If not, the content is obtained by the local distribution node from the content provider (250). Once the content is obtained, a determination is made as to whether to cache this content at 260. The process for making this determination will be described in greater detail below. If it is decided that caching is appropriate, then the requested content is cached at 265.
If the content is cached, then at 270 a determination is made as to whether appropriate security measures are in place for purposes of distribution of the content to the requesting leaf node. Such measures may include authentication, encryption, and/or any other privacy or digital rights management mechanisms. If necessary, such measures can be implemented at 290. In various embodiments, these measures may include key generation and/or key distribution processes, such as symmetric or public key protocols, and the use and verification of digital signatures. These examples of security-related processing are presented as examples and are not meant to be limiting, as would be understood by persons of ordinary skill in the art. Once the security measures are implemented, the content may be distributed to the requesting leaf node at 280.
The access permission determination (220 above) is illustrated in greater detail in
At 340 the access policy is applied to the user information and the content access parameters of the requested content. The result is a determination that the user information and the content access parameters are either consistent with the access policy (350) or that they are not (360).
The decision as to whether to cache content at the local distribution node (260 above) may depend on several factors. Some of these factors are illustrated in the embodiment of
At 420, it is determined whether a high demand threshold has been exceeded for the content item. Demand for an item may be measured by the number of times it has been requested in a current window of time, for example. If the content has been requested often enough in a current time window, it can be inferred that it is a popular content item and will likely be requested several more times in the immediate future. This indicates that caching of this content is appropriate (415). The high demand threshold may be defined empirically or arbitrarily in various embodiments.
At 430, it is determined whether the requested content represents a large volume of data. If so, and if the level of recent demand for this content is at least at some moderate level as determined at 440, then caching is appropriate (415). In this situation, having to obtain the large volume of data from the content provider may be onerous, and having to do so repeatedly compounds the demands placed on the system, creating latency. Hence, the use of the cache at the local distribution node would be advantageous (415). Otherwise, caching is not deemed necessary (450). The large volume threshold of 430 and the moderate demand threshold of 440 may be defined empirically or arbitrarily in various embodiments.
It should be understood that the processing shown in the embodiment of
A process for removal of a content item from the local distribution node's cache is shown in
If no cached content items are in this situation, but the cache is approaching maximum capacity (530), then at 540 a content item in the cache is identified for release. The determination of whether the cache is approaching capacity may be based on a threshold percentage of space used, for example. This threshold percentage may be arbitrary or determined empirically.
One or more criteria may be used to make the identification of 540, such as the length of time in the cache, the amount of demand for the content item, and/or the amount of cache space used by the item. Once an item is identified, it is removed at 550.
Network Configuration
As noted above, a local distribution node is responsible for servicing a plurality of leaf nodes, such as STBs and other computing devices. The local distribution node has a finite processing capability, like any other electronic device. Under some circumstances, the processing limits of the local distribution node may be approached. This would happen if there were an excessive number of requests for content, for example. In such circumstances the content distribution system can functionally reconfigure itself to create a second local distribution node to service the population of leaf nodes. This is done through recognition of a high activity level at the original local distribution node and promotion of a leaf node to the role of a second local distribution node.
This is illustrated in
At 620, a determination is made as to whether the current and/or expected processing load at the local distribution node is high, based on the operational parameter values such as those discussed above. If so, then a leaf node can be promoted at 630 to function as another local distribution node.
The determination 620 is illustrated in greater detail in
The promotion process 630 is illustrated in greater detail in
At 820, the portion of the current processing load of the local distribution node is allocated to the promoted leaf node. In an embodiment, this allocation includes the mapping of a portion of the existing leaf nodes to the promoted node, such that content requests from this portion of the leaf nodes are directed to the promoted node. In addition, some or all of the content that has been cached at the first local distribution node may be copied into the cache of the promoted node. This will allow the promoted node to service requests for previously cached content. At 830, the promoted node becomes operational, and new requests from the leaf nodes that are now associated with the promoted node are now received at the promoted node. Note that in some embodiments, more than one leaf node may have to be promoted if demand so dictates.
In an embodiment, the promotion of a leaf node is not necessarily permanent. If and when conditions allow, the promoted node can be demoted back to leaf node status. This can take place, for example, when the overall demand for content subsides, such that the system can operate using only the first local distribution node. The demotion process is illustrated in
The determination at 920 and 930 as to whether the current or expected processing loads are sufficiently low is illustrated in greater detail in
Cooperative Leaf Nodes
In an embodiment, the leaf nodes can have additional functionality that enables them to cooperate in the distribution of requested content. In such an embodiment, the leaf nodes are made aware of the content that has been previously distributed to other leaf nodes. The recipients of a content item save a copy of this content; subsequent requesting leaf nodes can then obtain the content from a node that has previously saved the content. In this manner, the cache functionality of the local distribution is distributed throughout the community of leaf nodes, so that any leaf node that holds a content item can serve as a local source of that content.
Processing at a leaf node that initially requests a content item is illustrated in
Otherwise, processing continues at 1130. Here, the requested content is received via the local distribution node. At 1140 the leaf node saves a copy of the requested content. At 1150, the leaf node informs the other nodes (i.e., the other leaf nodes and the local distribution node) that this leaf node has a copy of the content item. This communication can take place using any protocol known to persons of ordinary skill in the art, such as a peer-to-peer or other protocol. In the illustrated embodiment, the leaf node actively informs the other leaf nodes that the content has been obtained. Alternatively, the local distribution node may so inform the other leaf nodes. In another embodiment, the presence of the content at the leaf node is only discovered by another leaf node when the latter makes a request to the local distribution node; the local distribution node may then inform this latter requesting node that another leaf node has a copy of the content. Alternatively, this latter requesting node may broadcast its request to the other leaf nodes, and can then learn that the content is available through a response from any leaf node that is holding the content.
At 1160, the leaf node that initially received the content receives a request from another leaf node seeking the content item. At 1170, a determination is made as to whether this latter leaf node may access this content. In an embodiment, the access policy may have been sent to the first leaf node, enabling the first leaf node to make the access decision 1170. Alternatively, the user information of the second leaf node may be relayed to the local distribution node, where the access decision 1170 may then be made; this decision would then be sent to the first leaf node. In either case, if the second leaf node is not permitted access to the content item, then this request is rejected (1175). Otherwise, the content is sent from the first leaf node to the second leaf node. Again, this transmission may take place using any protocol known to persons of ordinary skill in the art, such as a peer-to-peer or other protocol.
Processing at the second leaf node is illustrated in
At 1240, a determination is made as to whether the requesting leaf node has permission to access the content, as described above. If not, the request is rejected at 1250. Otherwise, the content is received at the requesting leaf node.
Bandwidth Allocation
In an embodiment, the local distribution node may include network management functionality. The local distribution node can adaptively allocate and reallocate bandwidth to particular leaf nodes as demands require, for example.
This is illustrated at
The determination of bandwidth parameters for each leaf node is illustrated in
The determination of projected bandwidth needs for the leaf node (1420) is illustrated in
Bandwidth reallocation (1320) is illustrated in
Note that in some embodiments, the amount of bandwidth available for reallocation to the leaf node will depend on a prioritization of leaf nodes. Some leaf nodes may be given priority over other nodes based on, for example, business considerations. Some users may be subscribers to particular content packages, some of which may be treated as premium packages that entitle the user to better service, i.e., greater bandwidth than other users, and will have paid a higher subscription fee than other users. Such considerations may be taken into account at 1420, the determination of the amount of bandwidth available for reallocation.
Channel Surfing
The ability of a local distribution node to cache content can be used to improve the channel surfing process for a user. When a user normally channel surfs, each selection of another channel represents another request for content. Accessing that content includes some latency when the content is accessed from the content provider. This becomes problematic if the user is repeatedly selecting the next channel during the surfing process. Moreover, once the user settles on a channel, there may be a gap between what he may have seen briefly while channel surfing and the content as presented to him once he commits to that channel. The intervening content may be lost.
The cache of the local distribution node can be used to address these problems. The processing at the local distribution node is illustrated in
At 1730, additional content is obtained from the content provider for each of the n channels and cached, starting from the endpoint of each microtrailer. At 1750, a determination is made as to whether the user has advanced to the next channel. If not, then it is assumed that the user has stopped channel surfing, and at 1760 content is distributed to the leaf node of the user. If a microtrailer for this channel had already been distributed to this leaf node, the content obtained at 1760 starts at the endpoint of the microtrailer. If a microchannel for this channel was not previously sent to the leaf node, then the content for the channel is obtained via the local distribution node in the normal manner (if it has not been otherwise cached).
If, at 1750, the channel has advanced (i.e., if the user continues to channel surf), then at 1770 the microtrailer from the previously surfed channel is removed from the cache. At 1780, a next microtrailer (beyond the previously obtained n micro trailers) is obtained from the content provider and cached. Processing would then continue at 1750. The processing illustrated by 1750, 1770, and 1780 will continue as long as the user continues to channel surf.
The processing of
The determination of whether a leaf node is channel surfing (1710) is illustrated in greater detail in
Note that the process as illustrated in
One or more features disclosed herein may be implemented in hardware, software, firmware, and combinations thereof, including discrete and integrated circuit logic, application specific integrated circuit (ASIC) logic, and microcontrollers, and may be implemented as part of a domain-specific integrated circuit package, or a combination of integrated circuit packages. The term software, as used herein, refers to a computer program product including at least one computer readable medium having computer program logic stored therein to cause a computer system to perform one or more features and/or combinations of features disclosed herein. The computer readable medium may be transitory or non-transitory. An example of a transitory computer readable medium may be a digital signal transmitted over a radio frequency or over an electrical conductor, through a local or wide area network, or through a network such as the Internet. An example of a non-transitory computer readable medium may be a compact disk, a flash memory, or other data storage device.
In an embodiment, some or all of the processing described herein may be implemented as software or firmware. Such a software or firmware embodiment at a server is illustrated in the context of a computing system 1900 in
In the embodiment of
Computer program logic 1940 also includes a module 1958 for determination of the current and expected processing load at the local distribution node. Computer program logic 1940 also includes a module 1960 for allocation of the processing load of the local distribution node to a promoted leaf node. Logic 1940 can also include a module 1960 for performing bandwidth allocation for leaf nodes.
Computer program logic 1940 also includes a module 1962 for the detection of channel surfing. Logic 1940 also includes a microtrailer caching module 1964 to effect the caching of microtrailers and the removal of microtrailers when necessary.
A software or firmware embodiment of the processing described above at a leaf node is illustrated in the context of a computing system 2000 in
In the embodiment of
Methods and systems are disclosed herein with the aid of functional building blocks illustrating the functions, features, and relationships thereof. At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed.
While various embodiments are disclosed herein, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail may be made therein without departing from the spirit and scope of the methods and systems disclosed herein. Thus, the breadth and scope of the claims should not be limited by any of the exemplary embodiments disclosed herein.