This invention relates to Internet Protocol Television (IPTV) networks and in particular to caching of video content at nodes within the network.
In an IPTV network, Video on Demand (VOD) and other video services generate large amounts of unicast traffic from a Video Head Office (VHO) to subscribers and, therefore, require significant bandwidth and equipment resources in the network. To reduce this traffic, and subsequently the overall network cost, part of the video content, such as most popular titles, may be stored in caches closer to subscribers. For example, a cache may be provided in a Digital Subscriber Line Access Multiplexer (DSLAM), Central Office (CO) or in Intermediate Offices (IO). Selection of content for caching may depend on several factors including size of the cache, content popularity, etc.
What is required is a system and method for optimizing the size and locations of cache memory in IPTV networks, and in particular a process to optimally partition a cache between several video services with different traffic characteristics and content sizes.
In one aspect of the disclosure, there is provided a method for optimizing a cache memory allocation of a cache relative to a plurality of services available to the cache, the cache at a network node of an Internet Protocol Television (IPTV) network, the method comprises defining a total cache effectiveness function, and determining an optimal solution to the total cache effectiveness function.
In one aspect of the disclosure, there is provided, in an Internet Protocol Television network having a plurality of services, a network node comprising a cache having a memory, wherein a partitioning of the cache memory to cache the plurality of services is in accordance with an optimal solution of a plurality of cacheability functions each corresponding to a respective service, the optimal solution specifying a determination of a cacheability value for the plurality of cacheability functions that concurs with occurrence of a cache limiting condition.
In one aspect of the disclosure, there is provided a computer-readable medium comprising computer-executable instructions for execution by a processor, that, when executed, cause the processor to process a plurality of cacheability functions each characterizing a respective service available for caching at a cache at a network node of an IPTV network, and optimize the cacheability functions.
Reference will now be made to specific embodiments, presented by way of example only, and to the accompanying drawings in which:
In one embodiment, caches are provided in all locations of one of the layers, e.g. DSLAM, CO, or IO. That is, a cache will be provided in each DSLAM 14 of the network, or each CO 16 or each IO 18.
Cache effectiveness (or cache hit ratio) F=F(n), is a function of the number n of cached titles. This function depends on statistical characteristics of traffic (e.g., long- and short-term popularity of titles) and on the effectiveness of the caching algorithm to update the cache content. Cache effectiveness, then, depends on several factors, including the number of titles stored in the cache (which is a function of cache memory and video sizes) and the popularity of titles stored in the cache which can be described by a popularity distribution.
Different video and other services may have different cache effectiveness functions. For example, different video services, such as Fast Channel Change (FCC), VoD, Network Personal Video Recorder (NPVR), and Pause Live TV (PLTV), have different cache effectiveness (or hit rates) and different size of titles. A problem to be addressed is how can a limited resource, i.e., cache memory, be partitioned between different services in order to increase the overall cost effectiveness of caching.
Accordingly, a goal, for a given set of services, is to maximize total cache effectiveness subject to the limits of available cache memory M and cache traffic throughput T. In one embodiment, cache effectiveness is defined as a total cache hit rate weighted by traffic amount. In an alternative embodiment, cache effectiveness may be weighted with minimization of used cache memory.
The problem of optimal partitioning of cache memory between several unicast video services may be considered as a constraint optimization problem similar to the “knapsack problem”, and may be solved by, e.g., a method of linear integer programming. However, given the number of variables described above, finding a solution may take significant computational time.
Thus, in one embodiment of the disclosure, the computational problem is reduced by defining a special metric—“cacheability” (Cab)—to speed-up the process of finding the optimal solution. The cacheability metric takes into account cache effectiveness, total traffic, and size of one title per service. The method uses the cacheability metric and an iterative process to find the optimal number of cached titles (for each service) that will maximize overall cache hit rate, subject to the constraints of cache memory and throughput limitations.
In order to develop the cacheability metric, a methodology is first needed to characterize the behavior or performance of a cache, and in particular a means to characterize cache effectiveness.
Total cache effectiveness is defined by the total amount of traffic served from the cache at peak time. The maximization of total cache effectiveness (i.e., maximize the total amount of traffic served from the cache), can be expressed as a constraint optimization problem, namely:
subject to cache memory constraint:
and cache throughput constraint:
where:
The cache effectiveness function Fi(n) is the ratio of traffic for the i-th service that may be served from the cache if n items (titles) of this service may be cached. This function is closely related to content popularity CDF (cumulative density function). In particular, Fi(0)=0 and Fi(ni)=1, where ni is a total number of titles for the ith service.
This constraint optimization problem, which is a form of knapsack problem, may be formulated as a Linear Integer Program and solved by LP Solver.
If there are several optimal solutions for this problem, the solution that uses the least amount of cache memory would be preferred.
Continuous formulation of this problem is similar to the formulation above:
subject to
and
and may be solved using a Method of Lagrange Multipliers. The Lagrange multipliers method is used for finding the extrema of a function of several variables subject to one or more constraints and is a basic tool in nonlinear constrained optimization. Lagrange multipliers compute the stationary points of the constrained function. Extrema occur at these points, or on the boundary, or at points where the function is not differentiable.
Assuming that the cache effectiveness functions Fi are differentiable, and by applying the method of Lagrange multipliers to the problem, the resulting equation is:
or
for i=1, 2, . . . , N.
These equations describe stationary points of the constraint function. An optimal solution may be achieved at stationary points or on the boundary (e.g., where Mi=0 or Mi=M).
According to the last equation above, at the stationary point, two or more services that share the memory should be “balanced,” that is, have the same value of functions (i.e., the left side of the reduced Lagrange Multiplier equation):
These functions fi(m) are called the “cacheability” functions, and serve as the metric used to facilitate a determination of the optimal solution for partitioning or allocating the cache memory among various services. The functions quantify the benefit of caching the i-th service per unit of used memory (m) (i=1, 2, . . . , N).
The function
is closely related to the content popularity PDF (probability density function) for the i-th service. This function decreases with increases of m. Therefore, for given parameters T and S (throughput and size per title, respectively), the cacheability function fi(m) also decreases when m increases.
The cacheability functions fi(m) can now be used to determine how to optimally partition or allocate a cache between several video services with different traffic characteristics and content sizes.
For exemplary purposes, in order to illustrate how cacheability functions may be used to find the optimal solution to the constraint optimization problem, an illustrative scenario is provided having two services with cacheability functions f1(m) for the 1st service and f2(m) for the 2nd service. It should be apparent, though, that the optimal partition determination can be extended to any number of services.
For purposes of this scenario, reference is made to
Assume, for example, that M1 units of cache memory is used for the 1st service and M2 units of cache memory is used for the 2nd service. The total caching benefit of both services, which is the amount of traffic Tc served from the cache, can be computed as follows:
Two cases are considered: a cache memory limited case, and a cache throughput limited case.
First, consider the case when Tc<T, and M1+M2=M (i.e., cache memory limited case). If f1(M1)>f2(M2), as shown in
This new caching benefit Tc′ is more than the original Tc (for small Δm), because f1(m1)>f2(m2) for m1ε[M1,M1+Δm] and m2ε[M2,M2−Δm].
This reasoning demonstrates that if there is a solution where both services share the cache memory, then the optimal solution occurs when the solution is balanced, namely, when the cacheability values of the services in the optimal solution should be equal, i.e., each of the cacheability functions fi(m) has substantially the same value. This balancing condition suggests that the optimal solution will occur at the intersection point(s) of the cacheability curves with a horizontal line, since such a line graphically marks off points of equal cacheability values for the different cacheability functions.
Second, consider the alternate case with Tc=T, M1+M2≦ΔM, and f1(M1)>f2(M2), i.e., a cache throughput limited case. By similar reasoning as above in the cache memory limited case, it can be demonstrated that by “trading” a small amount of memory it is possible to achieve a comparatively “better” optimal solution, since even though there is the same amount of cache throughput Tc, less amount of cache memory is used.
The memory “trading” strategy, whether applied to the memory-limited or throughput-limited scenario, facilitates implementation of an iterative algorithm for determining an optimal cache partitioning, namely, to determine how much of the cache memory will be allocated to each service having cached content.
The algorithm can be further understood in reference to
According to the algorithm, for every horizontal line (horizon) that intersects the cacheability curve(s), a determination is made regarding the corresponding amount of cache memory used (i.e., by indications along the horizontal axis), as well as the corresponding traffic throughput.
As the horizon moves down, the amount of cache memory used and traffic throughput increases. This movement of the horizon, which implements the memory “trading” strategy, is continued in a dynamic iterative fashion until either the cache memory limit or cache traffic limit is reached, whichever occurs first. The optimal partitioning solution is specified by occurrence of this limiting condition. In particular, the various memory points specified by the intersection of this limit-reaching horizontal line with the cacheability curves define the allocation scheme for partitioning the cache among the services. The memory values corresponding to the intersection points indicate, for each respective cacheability function (and related video service), the amount of memory that will be allocated to that service in the cache memory.
For example, depending on the shape of the cacheability curves, the optimal solution may be achieved when the horizon intersects (a) one curve only, such as horizon H1 intersecting just cacheability curve f1(m), or (b) both curves, such as horizon H2 intersecting curves f1(m) and f2(m), i.e., the balancing condition.
In case (a), cache memory would be allocated entirely to the service defined by cacheability function f1(m), i.e., memory amount M1 is dedicated to the service for function f1(m), and none to the service for function f2(m).
In case (b), the cache memory would be shared in some proportion among the services for both cacheability functions f1(m) and f2(m). For example, the cache memory would allocate a memory amount m1 to the service for function f1(m) (i.e., the memory amount corresponding to the intersection of horizon H2 with curve f1(m)), and a memory amount m2 to the service for function f2(m) (i.e., the memory amount corresponding to the intersection of horizon H2 with curve f2(m)). In this case, there is a balancing among cacheability functions f1(m) and f2(m), since the optimal solution occurs at an equivalent cacheability value for each function.
A discrete version of this algorithm can be used to develop a cache partitioning tool that optimally configures cache memory for a given set of services.
The utility of the optimizing algorithm may be demonstrated with a further example. Assume three services: FCC, VoD, and NPVR having popularity distributions that can be characterized as Zipf-Mandelbrot (ZM) curves with different α values (power parameter) and q values (“shift” factor). Each of the three services can be fully characterized by a certain number of titles, size of titles, and ZM distribution parameters, such as in the exemplary profiles of Table 1 below.
In addition to these characteristics, the traffic volume generated by each service also needs to be taken into account. For illustrative purposes, the following cache characteristics are used as memory and traffic constraints: the maximum size of the cache is 3TB, and the maximum cache throughput is 20 Gbps. Given these constraints, the cache partitioning optimizing algorithm is applied to two scenarios involving the services of Table 1, in which the only difference is the volume of traffic generated by FCC.
Table 2 shows the results of a first scenario.
As shown in Table 2, the optimal cache partitioning solution results in almost all of the available cache memory to be used (2,998,950 MB versus 3,000,000 MB available), while the total traffic from the cache is below its limit of 20 Gbps. This scenario can be considered a memory constrained case, since the total caching benefit is limited by the available cache memory. For example, referring to the horizon-moving strategy of
Table 3 shows the results of a second scenario.
As shown in Table 3, in which FCC traffic volume is doubled, the optimal cache partitioning solution generates traffic from the cache close to its limit of 20 Gbps, while there is unoccupied space in cache memory. This scenario can be considered a throughput constrained case, since the total caching benefit is limited by the available cache throughput.
It is notable that in scenario 1 (Table 2), titles from all three services reside in the cache (see “# Items Stored” column), including all of the FCC titles. By comparison, in scenario 2 (Table 3), only some titles from the FCC service are stored in the cache (125), while none are stored from the other two services, since the cache throughput limit has been reached just by accommodating the FCC service.
One feature of the cache allocation scheme is that the optimizing algorithm can be executed on an ongoing, dynamic basis as system requirements change. For example, referring to Tables 2 and 3, as the specifications changed regarding the FCC traffic, the appropriate calculations would be made to generate new cacheability functions required by the new data, a new total caching benefit would be computed, and the optimizing algorithm would be applied to the new total caching benefit expression. This adaptiveness to changing circumstances ensures that the cache is partitioned appropriately, with cache memory dedicated to each service in order to optimize the cache performance.
In one embodiment, the optimization tool for implementing the cache partitioning scheme may be embodied on one or more processors as shown in
For example, input parameters from a user may be passed from the user processor 73 to the system processor 71 to enable the system processor 71 to execute instructions for performing the calculation. Alternatively, the system processor may pass formulas and other required code from the memory 72 to the user processor 73 which, when combined with the input parameters, allows the processor 73 to calculate cacheability functions and/or the cache effectiveness function.
The input parameters may include, but are not limited to, characteristics of the various services (e.g., number of items offered by the service, item size, ZM distribution parameters, popularity distributions for the items, traffic specifications); cache constraints (memory and throughput); and statistical characteristics of the traffic for each service.
It will be understood that additional processors and memories may be provided and that the calculation of the cache functions may be performed on any suitable processor. In one embodiment, at least one of the processors may be provided in a network node and operatively associated with the cache of the network node so that, by ongoing calculation of the cache functions, the cache partitioning can be maintained in an optimal state.
Although embodiments of the present invention have been illustrated in the accompanied drawings and described in the foregoing description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications, and substitutions without departing from the spirit of the invention as set forth and defined by the following claims. For example, the capabilities of the invention can be performed fully and/or partially by one or more of the blocks, modules, processors or memories. Also, these capabilities may be performed in the current manner or in a distributed manner and on, or via, any device able to provide and/or receive information. Further, although depicted in a particular manner, various modules or blocks may be repositioned without departing from the scope of the current invention. Still further, although depicted in a particular manner, a greater or lesser number of modules and connections can be utilized with the present invention in order to accomplish the present invention, to provide additional known features to the present invention, and/or to make the present invention more efficient. Also, the information sent between various modules can be sent between the modules via at least one of a data network, the Internet, an Internet Protocol network, a wireless source, and a wired source and via plurality of protocols.
This application claims the benefit of U.S. Provisional Application No. 61/201,525 filed Dec. 11, 2008, and claims the benefit of and is filed as a continuation-in-part of PCT Patent Application No. PCT/US08/10269 filed Aug. 29, 2008, which is based upon and claims priority to U.S. Provisional Application No. 60/969,162 filed Aug. 30, 2007, the entire contents of all of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61201525 | Dec 2008 | US | |
60969162 | Aug 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US08/10269 | Aug 2008 | US |
Child | 12542838 | US |