Internet DRAFT - draft-manoj-cachecontrol

draft-manoj-cachecontrol



Internet-Draft                                                 G.Manoj 
Document: draft-manoj-cachecontrol-00.txt             January 16, 2006 
Expires: July 21, 2006                             
 
 
         An Extension to Cache-Control, HTTP/1.1 for group caching 
    
     
Status of this Memo  
    
   By submitting this Internet-Draft, each author represents that any 
   applicable patent or other IPR claims of which he or she is aware 
   have been or will be disclosed, and any of which he or she becomes 
   aware will be disclosed, in accordance with Section 6 of BCP 79. 
    
   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups.  Note that 
   other groups may also distribute working documents as Internet- 
   Drafts. 
    
   Internet-Drafts are draft documents valid for a maximum of six months 
   and may be updated, replaced, or obsoleted by other documents at any 
   time.  It is inappropriate to use Internet-Drafts as reference 
   material or to cite them other than as "work in progress." 
    
   The list of current Internet-Drafts can be accessed at 
   http://www.ietf.org/ietf/1id-abstracts.txt. 
    
   The list of Internet-Draft Shadow Directories can be accessed at 
   http://www.ietf.org/shadow.html. 
    
   This Internet-Draft will expire on July 21, 2006. 
    
Copyright Notice 
    
   Copyright (C) The Internet Society (2006). 
 
Abstract 
    
   The Cache-Control general-header field of HTTP/1.1 [1] is used to 
   specify directives that must be obeyed by all caching mechanisms 
   along the request/response chain. This document details an extension 
   to the cache-control header to enable caching of resources for 
   dynamic sets of users who are grouped under certain attributes. Also 
   this document specifies user-defined header extensions of HTTP/1.1 
   [1], which allow these clients to be served from the group caches. 
    
    
    
 
 
 
G.Manoj                  Expires - July 2006                 [Page 1] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
Table of Contents 
    
   1. Overview.......................................................2 
   2. The Role of Origin Server......................................3 
   3. The Cache-Control extension....................................3 
   4. The user-defined header extension..............................4 
   5. The Working....................................................4 
      5.1 The Client Request.........................................4 
      5.2 The Origin Server Response.................................5 
      5.3 Role of Caching Proxy......................................5 
      5.4 The follow-up client requests..............................5 
   6. Security considerations........................................6 
   References........................................................6 
   Intellectual Property Statement...................................6 
   Disclaimer of Validity............................................7 
   Copyright Statement...............................................7 
   Author's Address..................................................7 
       
1. Overview 
    
   The dynamic contents served to the web users need not be completely 
   private. Many a times the less confidential dynamic resources 
   accessed over the web are common to a group of users. It is the 
   origin server which decides upon serving dynamic contents (possibly 
   common to a group) to the web users. Since the accessed resources are 
   not common to all the web users, they are not cached in the shared 
   caches. If the dynamic content happens to be common for a group of 
   users then caching these contents in a shared cache would reasonably 
   improve the performance. If the group accessing this common resource 
   is significantly larger then a higher degree of performance can be 
   achieved through this group caching mechanism. 
    
   The cache-control response directive of HTTP/1.1 [1] allows an origin 
   server to override the default cacheability of the responses. This 
   cache-Control header can indicate the "private" or "public" nature of 
   a document. The 'public' indicates the response may be cached by any 
   cache, and the 'private' indicates that all or part of the response 
   message is needed for a single user and must not be cached by the 
   shared caches.  
    
   But cache-control header doesn't provide information about the 
   documents pertaining to dynamic groups formed by dynamic set of 
   users. The group is indeed determined by the origin server based on 
   various attributes like time of request or types of users or user's 
   credibility etc., and it is entirely origin server specific.  
 
 
Manoj                    Expires - July 2006                 [Page 2] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
    
    
   The following sections details how the caching for these dynamic 
   groups can be achieved through the combination of cache-control 
   extension and the user-defined header extension of HTTP/1.1 [1]. 
    
2. The Role of Origin Server 
        
   The Origin Server drives the group caching by including the cache- 
   extension tokens in the cache-control and an user-defined header 
   extension in the HTTP Responses. Lets consider an enterprise wishes 
   to offer a discounted service to its clients who have a good cash 
   payment history. The pages served to these good-clients are almost 
   the same and hence the origin server can direct the proxies to cache 
   these pages specific to the good-client group. So any follow-up good-
   client requests can be served from the group caches. To drive this, 
   the origin server has to identify the good clients and tag them 
   properly.  
    
   To enable the proxy to cache the private documents specific to these 
   dynamic groups, the origin server introduces a new cache-extension 
   token "cache-group". The attributes based on which the cache-group is 
   defined are entirely origin server specific. Once the cache-group has 
   been defined and proxies have been directed to cache the documents 
   specific to the cache-groups, a significant reduction in latency time 
   can be achieved. Moreover the life time of these cache-groups have to 
   be strictly defined by the origin server.  
    
   Another important role of origin server is tagging the clients about 
   the group they belong to. To achieve this a user-defined header 
   extension "X-Cache-Group" for HTTP/1.1 [1] is introduced. These 
   extensions are detailed in the following sections. 
    
        
3. The Cache-Control extension 
 
   HTTP/1.1 [1] allows an extension to Cache-Control directives, 
   allowing additional extensions to act as modifiers to the base 
   directives. Both the new directive and the standard directive are 
   supplied, such that applications which do not understand the new 
   directive will default to the behavior specified by the standard 
   directive, and those that understand the new directive will recognize 
   it as modifying the requirements associated with the standard 
   directive. 
    


 
 
Manoj                    Expires - July 2006                 [Page 3] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
   We propose a new cache-extension token "cache-group" which would be 
   used with the "private" cache-response-directive to give additional 
   information on the served messages. 
    
   The syntax for the extended primitive is as follows: 
    
   Cache-Control = "Cache-Control" ":" "private,cache-group =" val 
   val = quoted-string 
     
   Example 
    
      Cache-Control : private, cache-group = "group-1" 
       
    
4. The user-defined header extension 
        
   In order to tag the clients about the cache-group they belong to, we 
   propose a user-defined header extension "X-Cache-Group". Once the 
   origin server identifies the client ( usually on the first request), 
   it tags the client using the X-Cache-Group header. The same 
   attributes used to define the cache-group is used in determining the 
   user type also. The syntax for this extension is as follows: 
    
   X-Cache-Group = "X-Cache-Group" ":" "=" val 
   Val = quoted-string 
    
   Example 
       
      X-Cache-Group : "group-1" 
    
   This means that a particular client belongs to the group-1 and so the 
   proxy can serve this client by the pages cached in the cache-group 
   group-1 in the follow-up requests. 
    
    
5. The Working 
 
   Lets take the same example of good-client specified in section 2 and 
   see how the extension headers are put into use. 
    
5.1 The Client Request 
     
   The end-users have to talk to the origin server at least once to know 
   about the group they belong to. There is no modification in the 
   client Request and it is as same as before. Consider an user who has 
   a good record of cash payment to an enterprise requests for the daily 

 
 
Manoj                    Expires - July 2006                 [Page 4] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
   messages page. The Requests will look as follows. [only important 
   headers are shown] 
    
   POST /daily-messages/index.html HTTP/1.1 
   Host: http://www.company-1.com/ 
    
5.2 The Origin Server Response 
    
   The enterprise identifies the user based on authentication and on 
   data mining for this particular user, it also identifies the user as 
   a good-client. The server informs the client about the group it comes 
   under through the user-defined header X-Cache-Group. Also being a 
   less secure page the server informs the proxy to cache the served 
   page under a specific group through the cache-control extension. 
   The Response will look as follows. [only the important headers are 
   shown] 
    
   HTTP/1.1 200 OK 
   Date: Mon, 10 Jan 2006  09:55:21 GMT 
   Content-Type: text/html 
   Cache-control : private, cache-group = "good-client" 
   X-Cache-Group = "good-client" 
    
5.3 Role of Caching Proxy 
        
   On seeing the cache-group extension in the response from the origin 
   server, the caching proxies can very well cache the pages for the 
   specified cache-group good-client. If the proxies don't understand 
   the cache-group primitive they can treat the messages as private. 
   Thus the older proxies which don't understand this extension bypasses 
   this functionality and working in a normal way. 
    
   The cache server must return the X-Cache-group header to the end-
   users/clients. There is no max limit on the number of the cache-
   groups the proxy must provide the caching for. However it should 
   atleast support caching for 25 different cache-groups at any point of 
   time.  
    
    
5.4 The follow-up client requests 
    
   The follow-up client HTTP/1.1 Requests should carry the X-Cache-Group 
   header given by the origin server and will look as follows. [only the 
   important headers are shown]  
    
 
 
Manoj                    Expires - July 2006                 [Page 5] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
    
   GET  /daily-messages/index.html/page-1.html HTTP/1.1 
   Host: http://www.company-1.com/ 
   X-Cache-Group = "good-client" 
    
   It is possible that some other users who are also good-client might 
   have requested the same page and thus the page should be available 
   under the cache-group good-client. The proxy verifies the X-Cache-
   Group header and thus can serve this request with the page-1.html 
   from the cache-group of good-client after the normal expiration check 
   on the cached pages. 
    
6. Security considerations 
    
   This proposal finds a way of caching the pages which are common to a 
   set of users. A user of a particular group should not be served with 
   the pages from the other cache groups. Content providers must bear in 
   mind that there is no guarantee of a particular user agent honoring 
   either the Cache-Control, or X-Cache-Group headers. Alternative 
   measures should be taken if document confidentiality is important. 
    
References 
            
   [1]  Fielding, R., et al., "Hypertext Transfer Protocol --  
           HTTP/1.1", Request for Comments 2616, June 1999.    
 
Intellectual Property Statement 
 
  The IETF takes no position regarding the validity or scope of any 
  Intellectual Property Rights or other rights that might be claimed to 
  pertain to the implementation or use of the technology described in 
  this document or the extent to which any license under such rights 
  might or might not be available; nor does it represent that it has 
  made any independent effort to identify any such rights.  Information 
  on the procedures with respect to rights in RFC documents can be 
  found in BCP 78 and BCP 79. 
   
  Copies of IPR disclosures made to the IETF Secretariat and any 
  assurances of licenses to be made available, or the result of an 
  attempt made to obtain a general license or permission for the use of 
  such proprietary rights by implementers or users of this 
  specification can be obtained from the IETF on-line IPR repository at 
  http://www.ietf.org/ipr. 
   
  The IETF invites any interested party to bring to its attention any 
  copyrights, patents or patent applications, or other proprietary 
  rights that may cover technology that may be required to implement 
 
 
Manoj                    Expires - July 2006                 [Page 6] 
 
Internet-Draft  Cache-Control extension, group caching    January 2006 
 
  this standard.  Please address the information to the IETF at 
  ietf-ipr@ietf.org. 
   
  The IETF has been notified of intellectual property rights claimed in 
  regard to some or all of the specification contained in this 
  document.  For more information consult the online list of claimed 
  rights.  
    
Disclaimer of Validity 
 
   This document and the information contained herein are provided on an 
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
 
 
Copyright Statement 
 
  Copyright (C) The Internet Society (2006).  This document is subject 
  to the rights, licenses and restrictions contained in BCP 78, and 
  except as set forth therein, the authors retain all their rights. 
    
    
Author's Address 
        
   G. Manoj 
   Network Appliance Inc. 
   The Estate,  
   6th Floor, 
   121 Dickenson Road, 
   Bangalore - 560042 
   Email: manojpec@gmail.com 














 
 
Manoj                    Expires - July 2006                 [Page 7]