Abstract:
The dynamicity of current content delivery environments demands the use of highly complex algorithms. A content delivery system for delivering content to clients in a content delivery network is disclosed and further comprises a method for placing the content in the content delivery network. The content delivery system comprises at least one mobile object adapted to be executed on the content delivery system but also adapted to be executed on other content delivery systems. Each mobile object comprises a media file and is adapted to monitor data related to the clients access of the media file. When certain conditions are met, e.g. when many clients that are accessing the media file are closer to another content delivery system, the mobile object can decide to move or copy itself to the other content delivery system.

Description:
TECHNICAL FIELD OF THE INVENTION 
       [0001]    The present invention relates to a method and a system for content delivery. 
       DESCRIPTION OF RELATED ART 
       [0002]    A content delivery network or content distribution network (CDN) is a system of computers (content servers) networked together across the Internet and that delivers content (especially media content) to clients. Content delivery networks are difficult to control and manage as requests for content come from different locations sometimes following certain viewing patterns. In order to optimize performance, locations of the content servers and media content close to the client may be chosen. Many parameters have to be taken into account to optimize the media delivery in content delivery networks, for example: 
         [0003]    Number of content servers 
         [0004]    Locations of the clients and the content servers 
         [0005]    Location of an asset (media content) 
         [0006]    Popularity of an asset 
         [0007]    Available bandwidth in the network 
         [0008]    Cost for moving a content 
         [0009]    The number of parameters and unpredictability when it comes to user behavior makes this problem very complex if one wants to control a global CDN using a central management system. 
         [0010]    Existing solutions try to solve this problem in a centralized approach. Taking all the parameters into account the different solutions try to best place content in the network. However, the dynamicity of such an environment makes the algorithms highly complex and global decisions take a long time to be made and effectuated. 
         [0011]    Another technical area relevant to the current invention is mobile objects (also called mobile agents). Mobile objects are programs (software) and associated data that can migrate from host to host in a network at times and to places of their own choosing. In the new host they can then continue to run, possibly interacting with the local execution environment. Mobile objects have for example been discussed in the paper ‘Mobile Agents and the Future of the Internet’ by Kotz et al published in ‘ACM Operating Systems Review, August 1999 pp 7-13. An example of using mobile agents is disclosed in U.S. Pat. No. 7,254,608. This patent discloses a system and a method for using mobile agents for managing distribution of content in peer-to-peer networks. In the patent the mobile agent may visit the peer nodes on an itinerary to search for and collect information on distributor content stored on the visited peer. 
       SUMMARY OF THE INVENTION 
       [0012]    The present invention relates to the problem of how to avoid the disadvantages mentioned above of managing a content delivery network. 
         [0013]    The problem is in the current invention solved by placing the content itself (such as media files) in the mobile objects (agents). The invention comprises a content delivery system for delivering content to clients. This content delivery system comprises at least one mobile object adapted to be executed on the content delivery system but also adapted to be executed on other content delivery systems. What characterizes these mobile objects is that they comprise: 
         [0014]    a media file accessible by the client, 
         [0015]    a policy data base and 
         [0016]    execution logic that is adapted to monitor data related to the client&#39;s access of the media file, to interrogate the policy data base and to move or copy the mobile object towards the other content delivery system when certain conditions stored in the policy data base are met. 
         [0017]    The invention does also include a method for placing content in the content delivery network. 
         [0018]    In the method, the mobile object (comprising the policy data base and the media file accessible by the client as described above) executes in one content delivery system. The mobile object monitors data related to the client&#39;s access of the media file and when certain conditions stored in the policy data base are met, the mobile object moves or duplicates itself to another content delivery system. 
         [0019]    As one option, the mobile object moves from the original content delivery system to the other system without leaving any trace in the original system. The mobile object could either be adapted to keep its execution states when starting to execute in the other content delivery system or it could be adapted to reset the execution states prior to the execution. 
         [0020]    Another option is to copy the mobile object in the original content delivery system to the other system and that the mobile object in the original system continues to execute in parallel with the mobile object in the other system. 
         [0021]    The current invention makes the content (e.g., a media file) autonomous. By autonomous is here meant that the mobile object is intelligent enough to monitor data related to the client&#39;s access of the media file (e.g., number of times the media file has been downloaded, local link utilization measurements, link costs, etc) and take appropriate decisions. Instead of utilizing a central server (or a couple of servers) to gather global information and take global decisions the invention comprises a mobile object that takes local decisions based on local information. This will highly simplify the way content is placed and controlled through content delivery networks. 
         [0022]    The objective with the current invention is therefore to overcome the disadvantages mentioned above. 
         [0023]    The invention has several advantages: 
         [0024]    Robustness; the system is more robust since it features strong fault isolation characteristics. The mobile objects are independent pieces of software relying on the local environment and not on centralized systems. It is harder to launch a denial of service attack towards such a distributed system. 
         [0025]    No central point of failure; equal distribution of control and management functionalities brings a nice load distribution and no central point of failure. 
         [0026]    Simplicity; the complexity of traditional global optimization algorithms is eliminated by allowing local decisions based on local knowledge to be taken. 
         [0027]    Lower maintenance/management costs; simplicity leads to lower cost of maintenance of the entire system. 
         [0028]    The invention will now be described in more detail and with preferred embodiments and referring to accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0029]      FIG. 1  is a block diagram illustrating a content delivery network. 
           [0030]      FIG. 2  is a block diagram illustrating a first embodiment of a content delivery system and a mobile object according to the current invention. 
           [0031]      FIGS. 3   a  and  3   b  are flow charts showing the method of allocating content in a content delivery network according to the current invention. 
           [0032]      FIG. 4   a  is a block diagram illustrating a second embodiment of a content delivery system according to the current invention. 
           [0033]      FIG. 4   b  is a block diagram illustrating an embodiment of an implementation of the content delivery system. 
       
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
       [0034]      FIG. 1  illustrates an example of a content delivery network CDN  100 . The CDN  100  comprises in this example, four content servers  111 ,  112 ,  113  and  114 . These content servers  111 - 114  are interconnected by a network comprising a number of routers or switches  121 ,  122  and  123 . In content server  111 , a media file  1111  is stored. The media file  1111  can in this example be accessed by five different clients  131 ,  132 ,  133 ,  134  and  135 . As a majority of the clients are located closer to server  112  than server  111 , it is worth to consider moving the content, i.e., the media file  1111  from server  111  to server  112 . Closer can here be a network based distance, e.g., number of node hops in between the server  111 ,  112  and the clients  131 - 135 . By moving the content closer to the clients  133 ,  134  and  135  transmission resources are saved in the network  100 , there will be lower delays and the response time will be faster. 
         [0035]    In known prior art, the content servers  111 ,  112 ,  113  and  114  are managed by a central operation and management center, OMC  190 . As discussed above, this solution has a number of drawbacks. 
         [0036]      FIG. 2  describes an embodiment of the current invention. The content delivery system is here a Content Server 1  210  and a mobile object  212  according to the current invention. Content Server 1  210  comprises an execution environment  211  and at least one mobile object  212 . The mobile object  212  comprises a media file  213 . This media file  213  could be a data file such as a film, a streaming video, a game, an audio file, a document etc that can be accessed in action  231  by a client  230 ,  240  for on-line viewing or for download. 
         [0037]    The mobile object  212  further comprises execution logic  214 . The execution logic comprises program code  215  and a data area  216  that is used to execute the mobile object  212 . The execution logic  214  is also handling requests in action  231  from the clients  230 ,  240  that want to access the media file  213 . The programming language for the program code  215  could preferably be Java which has been the most used programming language to implement mobile objects as it is platform independent. The data area  216  comprises also data related to the client&#39;s  230 ,  240  access of the media file  213  as for example: 
         [0038]    Number of active connections (between the clients  230 ,  240  and the mobile object  212 ). 
         [0039]    Number of total accesses to the mobile object  212 . 
         [0040]    Number of times the media file  213  has been accessed per time unit (e.g., number of accesses per minute). 
         [0041]    Location of the clients  230 ,  240  accessing the media file  213  (using for example the source IP address of the clients  230 ,  240 ). 
         [0042]    Location of other servers. 
         [0043]    In addition to monitor data in the data area  216  in the mobile object  212 , the execution logic  214  is also adapted to monitor in action  241  data related the execution environment  211  as for example: 
         [0044]    Available bandwidth and/or processor load. 
         [0045]    Available communication links between the content server  210  and the clients  230 ,  240 . 
         [0046]    Communication link usage and/or link costs. 
         [0047]    The mobile object  212  further comprises a policy data base  217 . This data base  217  is adapted to comprise any kind of application specific policies that can trigger actions by the mobile object  212  as for example: 
         [0048]    The maximum and minimum acceptable number of accesses to the media file  213  per time unit. 
         [0049]    The maximum and minimum acceptable bandwidth to be consumed by the mobile object  212 . 
         [0050]    The maximum network cost of transmission of a media file ( 213 ). 
         [0051]    Using the data  216  related to the access of the media file  213  and the execution environment  211  and interrogating the policy data base  217 , the execution logic  214  can for example determine that a majority of the clients  240  accessing the media file  213  are located close to another server, Content Server 2  220 . 
         [0052]    Fulfilling certain conditions stored in the policy data base  217  the execution logic  214  may trigger a process to move, in action  250 , the mobile object  212  from Content Server 1  210  to Content Server 2  220  which has its own execution environment  221 . 
         [0053]    In this process the mobile object  212  stops serving requests from the clients  230 ,  240 . Active connections with clients  230 ,  240  are paused. The clients  230 ,  240  are informed about the pause by the mobile object  212  using suitable signaling protocols (e.g., a modified TCP). This signaling is normally demanding some support from the execution environment  211  and underlying operating system. The execution environments  211  and  221 , on the other hand, do not know where the mobile object  212  came from or where it is going next. 
         [0054]    In the process of moving, the mobile object  212  moves from the original Content Server 1  210  to Content Server 2  220  without leaving any traces in Content Server 1  210 . 
         [0055]    Fulfilling other conditions stored in the policy data base  217  the execution logic  214  may trigger a process to copy the mobile object  212  from Content Server 1  210  to a new mobile object  222  in Content Server 2  220 . In this case, the mobile object  212  in Content Server 1  210  continues to execute in parallel with the copy  222 . 
         [0056]    The copy  222  of mobile object  212  could either be adapted to keep its execution states when starting to execute in Content server 2  220  or it could be adapted to reset the execution states prior the execution. 
         [0057]    In order for clients not previously connected to find the new location of the mobile object  212 , a name resolution process is started using for example DNS (Domain Name Service) redirection. 
         [0058]    A situation that also can occur is that very few (or no) clients at all have accessed the media file  213  for a certain period of time. This can be an indication that the media file  213  has become less popular or that the clients  240  are located close to another Content Server 2  220  already hosting a copy of the media file  213 . In this situation, the execution logic  214  can take a decision to simply let the mobile object  212  in Content Server 1  210  ‘die’ and delete itself. 
         [0059]    The flow charts in  FIGS. 3   a  and  3   b  illustrate an embodiment of the method of allocating content in a content delivery network  100  according to the current invention. The mobile object  212  is executing in the original server  210  in step  301 . During execution it monitors in step  302  data related to the client&#39;s access of the media file  213 . This data can be collected by the mobile object itself  212  and stored in the data area  216 . The data can also be located in the execution environment  211  and accessed in action  241  by the mobile object  212 . 
         [0060]    In step  303 , a check is made if the media file  213  can be deleted. If a certain period of time has lapsed without any client  230 ,  240  accessing the media file  213  or that the media file  213  has been accessed very seldom, the mobile object  212  can make the decision to halt the execution and delete itself in step  304 . The conditions for this are stored in the policy data base  217 . If, on the contrary, the media file  213  is very popular but mainly accessed by clients  240  located closer to the other content server  220 , the mobile object  212  makes the decision in step  305  to move the mobile object  212  to the other server  220 . But before sending the mobile object to the other content server  220  in step  307 , the mobile object  212  halts in step  306  the access to the media file  213  and pauses the active connections between clients  230 ,  240  and the mobile object  212 . 
         [0061]    If the decision in step  305  is to not move the media file  213 , the flow chart continues (digit ‘ 2 ’ encircled) in  FIG. 3   b.    
         [0062]    If the media file  213  is popular in both regions where clients  230  (close to Content Server 1  210 ) and clients  240  (close to Content Server 2  220 ) are located, the mobile object  212  can make the decision in step  308  (now turning to  FIG. 3   b ) to copy itself in step  309  instead of moving. Before the copy  222  of the mobile object  212  is sent to Content Server 2  220 , a check is made in step  310  if the current execution states stored in data area  216  in the copy  222  is to be kept or reset. If the states are to be kept, the copy  222  (a ‘clone’) of the mobile object  212  is sent in step  312  to content server 2  220 . If the states are to be reset, the states are reset in step  311  and the copy  222  (a new ‘instance’) is sent in step  312 . After sending the copy  222  in step  312  the process starts all over again (digit ‘ 1 ’ encircled) as illustrated by  FIG. 3   a . This is also the case if the mobile object  212  decides to not copy itself in step  308 . 
         [0063]    The current invention is in the embodiments described above applied to a mobile object  212  that is moved and/or copied from one content server  210  to another content server  220 . The inventive concept does also allow for the mobile object  212  to migrate between other content delivery systems that have an execution environment that allows for the execution of the mobile object  212 . 
         [0064]    One example of this is a peer-to-peer P2P network.  FIG. 4   a  illustrates a P2P network  400  comprising a plurality of terminals  401 ,  402 ,  403 ,  404 . In this example all terminals  401 - 404  are connected to each other fully meshed. The content delivery system ( 210 ) corresponds here to any of the terminals  401 - 404 . Assuming that a mobile object  405  is located in terminal  401 , the mobile object  405  may decide to move itself in action  407  to another terminal  404 . 
         [0065]    The inventive concept does also allow the mobile object  212  to move and/or to copy itself within the same content delivery system  210  if needed. 
         [0066]    Yet another aspect of the invention is that the content delivery system  220  can be seen as a content delivery end-point (source of content) that is created dynamically when the mobile object  212  is moved or copied into the execution environment  221 . As an example, a server that is originally not a content server but having an execution environment  221  adapted for mobile objects in general can become a Content Server 2  220  when the mobile object  212  according to the invention is copied or moved into the execution environment  221  in the server  220 . 
         [0067]    Furthermore, utilizing the inventive concept a skilled person can create different policies and corresponding behaviors that are more suitable and tailored to the management of a particular content delivery network. 
         [0068]      FIG. 4   b  illustrates an example of an implementation of the content delivery system  210 . The system  210  comprises a processor  410  designed to execute software in a memory area  420 . This memory area  420  comprises an execution environment  430  and at least one mobile object MO  421 ,  422 ,  423 . Each of the mobile object  421 ,  422 ,  423  is adapted to communicate with the execution environment  430 .