Abstract:
A policy enabled caching system based upon policy rules which define whether a request from a client is directed to a cache or a server. The client is coupled to a plurality of caches and to at least one server. The caches may store a subset of the data stored on the server. The policy enabled caching system stores policy rules which comprise at least one matching condition, where every request containing a matching condition falls into an associated class. Each class will have an associated routing rule, where a routing rule defines the type of routing for all the requests which fall into that class. The policy enabled caching system will receive the request from the client and classify the request according to the policy rules. The request is then routed according to the routing rule associated with the class to which the request belongs.

Description:
FIELD OF THE INVENTION 
     The invention relates to the field of computer networks and in particular, to that of caching services for a computer network. More specifically, a caching service for use on the World Wide Web is disclosed which can improve user response times and reduce the amount of data transmitted over the Web. 
     BACKGROUND OF THE INVENTION 
     Caching has been used as a technology to improve user response time and to decrease network bandwidth utilization for distributed applications  10  such as web browsing. In the context of the World Wide Web, it is common to deploy caching services to improve the response time to users and to reduce the amount of data that is transmitted over the Web. The user invokes a browser program to retrieve data from the server in the network. A Uniform Resource Locator or URL identifies the address of the source of the data. Without an intervening cache, the request goes directly to the server, and the server returns the desired information. 
     When a cache is used in a network, a request for information is first sent to the cache. If the cache contains the desired information it is returned to the client. If the requested information is not found in the cache, the catch retrieves the information from the server and returns the information to the client. The cache will also store a copy of the information locally. Since the local storage of the cache is limited only a small portion of all possible information can maintain locally. Caches may implement various techniques to decide which information is maintained and which is discarded. A very common technique is the least recently used scheme, in which the URL information, which has not been accessed for the longest amount of time, is replaced by the new URL information being accessed. An overview of different caching schemes can be found in the document Aggarwal, C., et al.,  Caching on the World Wide Web , IEEE Transactions on Knowledge and Data Engineering, Vol. 11, No. 1 January/February 1999, pp. 94-107. 
     There are two common modes for web caching: client proxy caches and transparent caches. In a client proxy cache, the browser is typically configured to send a request for information directly to the cache rather than the server. A transparent cache works like a proxy cache except that the browser need not be configured to send a request to the transparent cache. A transparent cache detects the packets belonging to the web-application by looking at information in the request such as the port number carried in IP packets (Web applications usually carry a port number of 80). The transparent cache then direct packets to the cache. 
     In some variants of the caching architecture, multiple caches can be deployed in the network. In one example, the proxy uses a static hashing of the URL to determine which cache should receive the request. Different caches can also be arranged in a hierarchy. The browser sends the request to a first cache. If the first cache does not find the URL information locally, the request is sent to a second cache. The second cache can send to a third cache, when the final cache is reached the request is sent to the server. The topology in which caching occurs is usually configurable. An algorithm for static hashing is CARP, or Cache Array Routing Protocol described in Ross, K.,  Hash Routing for Collections of Shared Web Caches , IEEE, Network, November/December 1997, pp. 37-44. 
     Although caching in the web has been researched extensively, the effectiveness of the caches has been found to be relatively poor. Usually, the probability that a web page is found in the local cache is less than half, possibly around 35-40%. Thus, more than half of the requests result in a cache miss, i.e., they are not found in the cache. 
     The cache miss factor is high due to a variety of reasons. Many of the URLs, associated with pages which browsers attempt to access, identify data that is dynamic (e.g., a program to be executed at a server commonly called cgi-bin scripts). Some URLs identify information that is highly specific to the user (e.g., uses a cookie or creates a special identifier for the user). Some URLs identify special programs like a video or audio clip that need special handling or special protocols between the client and the server, and cannot be handled by an intervening cache. 
     Each cache miss adds extra latency to the packet request, which degrades the performance perceived by the browser. Since more than half of the requests result in a cache miss, traditional caching is more likely to result in degraded user performance than improved response time. 
     Figure 1 illustrates the different components that interact together to implement a prior art caching system. Within this caching system, a client  101  wishes to access a URL that identifies some information located at server  111 . The client  101  initially contacts a cache  105 . The cache  105  is connected to the client  101  by a network  113 . Typically, the network  113  is a campus network or fast local area network. The cache  105  serves multiple clients that are present on the network  113 , e.g., another client  103  in the network may access the same cache. The cache  105  connects to the server  111  via a network  107 . Typically, network  113  is faster than network  107 , so that response time is improved every time there is a hit in the cache. The cache  105  may coordinate caching with other caches in the network, i.e., cache  109  in the network. 
     In order to improve the caching behavior, a system of multiple proxying caches may be deployed. In addition, special caching servers, that can provide caching techniques that work with cookies or provide a specialized protocol for caching video and audio clips can be added to the network. While there are several caching architectures for interconnecting a multiple number of caches, most do not perform well due to a poor cache hit ratio. Plus, the number of proxying mechanisms deployed in the network adds additional latency in the caching architecture, and usually degrades the performance of the network, rather than improving it. 
     SUMMARY OF THE INVENTION 
     A policy enabled caching system based upon policy rules which define whether a request from a client is directed to a cache or a server. The client is coupled to a plurality of caches and to at least one server. The caches may store a subset of the data stored on the server. 
     The policy enabled caching system stores policy rules which comprise at least one matching condition, where every request containing a matching condition falls into an associated class. Each class will have an associated routing rule, where a routing rule defines the type of routing for all the requests which fall into that class. 
     The policy enabled caching system will receive the request from the client and classify the request according to the policy rules. The request is then routed according to the routing rule associated with the class to which the request belongs. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram illustrating a prior art caching system. 
     FIG. 2 is a block diagram illustrating a policy enabled caching system in accordance with an exemplary embodiment of the present invention. 
     FIG. 3 is a table showing examples of how policy rules may be implemented in an exemplary embodiment of a policy enable caching system. 
     FIG. 4 is a block diagram showing two manners in which the a policy enabled caching system may be implemented in a client workstation. 
     FIG. 5 is a flow chart which illustrates the steps followed by a browser or a cache to obtain information corresponding to a specific URL. 
     FIG. 6 is a flow diagram illustrating the steps followed by a policy-enabled cache and a cache user to dynamically adjust the policies. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 2 illustrates an exemplary embodiment of a policy-enabled Web caching scheme which consists of a policy repository server  201 , and several policy clients  203 ,  205 ,  207 . The policy clients, policy repository and caches are connected together by the network  213 . The policy repository server  201  is also accessible to the caches that are in network  209 . The server  211  when being accessed is also connected to the caches via the network  209 . A policy client may be a browser  203  which is trying to access URLs over the network (e. g., from the server  211 ), or a cache  205  which is used by the browser. The policy repository server  201  stores the rules that dictate how the browser (or cache) should behave when operating on specific requests. The rules may dictate whether a browser (or cache) should go directly to the web server, or whether the browser should go to a specific cache, or one of a selected number of caches. 
     FIG. 3 a  and FIG. 3 b  illustrates an example of how policy rules may be implemented in the exemplary embodiment of the policy-enabled web caching architecture. The FIG. 3 a  is a table that shows three classes:  301 ,  303  and  305 . Each class is named such as “GoSpecific” and each class has an associated routing rule such as “CacheA”. Each request that belongs to a particular class will be routed according to that classes routing rule. FIG. 3 b  is a table that defines the matching conditions and the class associated with that matching condition. A request that contains a matching condition will become part of the associated class, such that a request that contains a “URL suffix .au” will become part of class “GoSpecific”. 
     Referring to FIG. 3 a  the action taken for each request belonging to class  301  (named GoDirect) is to send the request directly to the server. The action taken for each request belonging to class  303  (named GoSpecific) is to send the request to a specific cache; and the action taken for each request belonging to class  305  (named GoVideo) is to send the request to one of a set of selected caches. 
     Referring to the table in FIG. 3 b  there are four classification rules shown:  307 ,  309 ,  311  and  313 . Each classification rule consists of a matching condition and the name of a class. The matching condition of classification rule  307  is that a request with a URL that contains the substring .cgi-bin will become part of the class “GoDirect ”. Referring to FIG. 3 a  the class “GoDirect” has a routing rule that sends request that belong to the “Go Direct” class directly to the server. Therefore, the policy rule for a request with a URL having the substring of .cgi-bin is to send the request directly to the end-server. The matching condition of classification rule  309  provides for requests with a URL that end with the suffix “.au” should be classified as “GoSpecific” and, referring to FIG. 3 a , should be routed to a “CacheA ”. The matching condition for classification rule  311  provides any request with a cookie in the URL is classified as “GoDirect” and, referring to FIG. 3 a , should be routed directly to the server. The fourth classification rule  313  has a matching condition that any request with a URL containing the suffix of “.rpm” should be classified as “GoVideo” and, referring to FIG. 3 a , the request should be directed to one of the caches specified in the list of “GoVideo”. 
     The classification in a policy rule may be done on the basis of any of the fields in the request sent by the client, not just the URL. The information contained in the field may include things like cookies, the suffix of a URL, the requirement for an authentication header, the type of transport protocol used for communication, the existence of a specific header extension in the request, etc. The specification of the policy classification rules can be done using the syntax of regular expressions, a scheme which is well known in the field. The action to be taken on any of the classes can be specified by listing the caches or server to be contacted, using a reserved symbol (e.g., ‘*’) to denote that the server be contacted directly. 
     The classification rules as described, operate on the basis of matching a condition with the contents of the request made by the client. A degenerate case of this classification rule would be to specify the port numbers or IP addresses of clients and use them to direct cache requests to specific caches or servers. This is the manner in which transparent caching proxies of the prior art operate. However, routing of URL requests on the basis of only port numbers does not allow the differentiation between different types of requests (ones asking for video or audio data, or containing cookies) and is extremely limited since most of the web traffic would be directed on the same port number (port number  80 ). 
     As illustrated in FIG. 3 b , the matching condition can use the name and characteristics of the request to make policy decisions. The name is usually the URL of the information being obtained, and the characteristics are specified by other fields in the request header, e.g., the type of information (audio/video/text/graphics), cookies, authentication headers, etc. The classification on the basis of name and characteristics is much more flexible than routing on the basis of port numbers. Routing of requests to different caches or servers on the basis of name and characteristics can be done by a client originating the request, or at any intervening server, but routing on the basis of port numbers cannot be done effectively since all requests will have the same port numbers in them. 
     FIG. 4 illustrates an exemplary embodiment of the policy-enabled web caching architecture. The policy rules are stored in the policy repository server  405 . The client workstation  401  contains a browser program  403  which can obtain the policy rules directly from the policy repository server  405 . The browser program  403  will receives a request and use the policy rules to determine which cache or server to route the request to. The client workstation  407  contains a browser program  409  and a local proxy  411 . The local proxy  411  will obtain the policy rules directly from the policy repository server  405 . The browser program  409  will always send a request to the local proxy  411 . The local proxy  411  uses the policy rules to determine which cache or server to send the request to. 
     FIG. 5 is a flow chart diagram which illustrates the steps that can be used by the policy enabled browser  401  or the local proxy  411 , of FIG. 4, in order to implement web caching in a policy enabled manner. The processing begins at step  501  when a request is formed. In step  503 , the browser  401  or local proxy  411  first checks if it has the current set of defined policies from the policy repository server  405 . If the check fails, the browser or local proxy would get the current policies from the policy repository server  405  in step  505 , and then proceed to step  507 . Otherwise processing proceeds directly to step  507 . In step  507 , the next cache or server to be contacted is determined based on the policy. In step  509 , the processing terminates and the browser  401  or local proxy  411  sends the request to the selected cache or the server. 
     The check for ensuring that the set of polices is current can be implemented in a variety of ways which depend on the manner in which polices are obtained from the policy repository. The browser or local proxy may obtain the set of current policies at regular intervals from the policy repository, in which case the check consists of checking if it is time to fetch the new policies from the policy repository. On the other hand, the policy repository may be notifying the browser or local proxy when there is a change in policies. In this case, the check would consist of checking if such a notification has been received. Other ways could also be devised for this purpose. 
     The steps outlined in FIG. 5 can also be implemented by a cache which implements support for policies. In these cases, the policies determine next cache or server to be contacted in case a copy of the requested URL is not found locally. 
     FIG. 6 illustrates a preferred embodiment of the policy-enabled web caching architecture where a cache can revise or update policy rules that are being used by the local proxy or browser. This can be done, e.g., when the client is trying to contact the cache for a URL that is determined not to be cachable. FIG. 6 illustrates the manner in which such a modification occurs. A browser  601  contains a set of policies from a policy repository  603  as shown in interaction 1 and subsequently contacts a cache  605  as dictated by the policies as shown in interaction 2. The cache  605  does not find the information locally and contacts the server  607  as shown in interaction 3. The information obtained from the response  4  of server  607  indicates that the data is not cachable. This indication is carried in the standard protocols used to communicate with the server. When the cache  605  receives the response, it informs the client that the policy should be updated and the specific URL should not be cached via interaction 5. The cache  605  can also update the information in the policy repository  603  so that all clients become aware of the new policy via interaction 6. 
     The above description was intended to convey the methodology in which the invention of policy enabled caching to be implemented. Those skilled in the art can realize several ways in which this invention can be implemented. 
     Although the invention is illustrated and described herein with reference to specific embodiments, the invention is not intended to be limited to the details shown. Rather, various modifications may be made in the details within the scope and range of equivalents of the claims and without departing from the invention.