[0001] This application is related to commonly owned U.S. patent application Ser. No. 09/195,982 entitled PROXY CACHE CLUSTER by Brent R. Christensen, et al. and U.S. patent application Ser. No. 09/337,241, entitled CACHE OBJECT STORE, by Robert Drew Major the teachings of which applications are expressly incorporated herein by reference.
[0002] 1. Field of the Invention
[0003] The present invention relates to services of communications networks and, more specifically, to a system and method for increasing the availability of services offered by a service provider of a communications network.
[0004] 2. Background Information
[0005] It is increasingly common for users having standalone computers, or computers interconnected by an institutional intranet or local area network, to gain access to various remote sites (such as those on the “World Wide Web”) via the well-known Internet communications network. Using resident web browser applications executing on the computers, these clients may navigate among services (“pages”) stored on various servers of a service provider (“web site”) and may further request these services as desired. In a basic network communication arrangement, clients are free to access any remote web site for which uniform resource locators (URLs) are available.
[0006] It is also increasingly common in network applications to provide the web site servers with associated proxy cache servers that link (“front-end”) the servers with the Internet. A proxy cache server (“proxy”) may be used to accelerate client access to the Internet (“forward proxy”), to accelerate Internet access to a web server (“reverse proxy”), or to accelerate Internet access transparently to either client access or web server access (“transparent proxy”). As for the latter reverse proxy environment, the proxy may access frequently requested services from the web servers and store (“host”) them locally to effectively speed-up access to future requests for the services. For instance, a proxy may host frequently requested web pages of a web site. In response to a request from a browser executing on a client, the proxy attempts to fulfill that request from its local storage. If it cannot, the proxy forwards the request to a web site server that can satisfy the request. The web server then responds by transferring a stream of information to the proxy, which stores and forwards the information over the Internet onto the client. The illustrative embodiment of the invention described herein is applicable to a proxy environment
[0007] As Internet traffic to the web site increases, the network infrastructure of the service provider may become strained attempting to keep up with the increased traffic. In order to satisfy such demand, the service provider may increase the number of network addresses for a particular service by providing additional web servers and/or associated proxies. These network addresses are typically Transmission Control Protocol/ Internet Protocol (TCP/IP) addresses that are represented by URLs or wordtext (domain) names and that are published in a directory service, such as the well-known Domain Name System (DNS). Computers referred to as name servers implement DNS by mapping between the domain names and TCP/IP address(es).
[0008] In the case of a “reverse proxy,” the proxies “front-end” the web servers (and may, in fact, be resident on the web servers) and the network addresses of the proxies (rather than the actual web site) are generally mapped to the domain name of the service provider. As a result, communication exchanges with the proxies generally comprise IP packets or UDP/TCP-socketed traffic, such as socket requests and responses. A socket is essentially an interface between an application layer and transport layer of a protocol stack that enables the transport layer to identify which application it must communicate with in the application layer. For example, a socket interfaces to a TCP/IP protocol stack via a set of application programming interfaces (API) consisting of a plurality of entry points into that stack. Applications that require TCP/IP connectivity typically utilize the socket API to interface into the TCP/IP stack.
[0009] For a connection-oriented protocol such as TCP, the socket may be considered a session; however, for a connectionless protocol such as IP datagram using the User Datagram Protocol (UDP), the socket is an entity/handle that the networking software (protocol stack) uses to uniquely identify an application layer end point, typically through the use of port numbers. The software entity within the server that manages the communication exchanges is a TCP/IP process, which is schematically illustrated as layers of a typical Internet communications protocol stack. Protocol stacks and the TCP/IP reference model are well-known and are, for example, described in
[0010] The popularity of Internet caching, due to the increased efficiencies it offers, has led to the construction of caching architectures that link multiple proxy cache servers in a single site. The servers may service an even larger cluster of content servers. The proxy cache servers are sometimes accessed via a Layer
[0011] Requests by users to various sites for large files have grown significantly. One particular class of often-requested files is feature-length movies stored using MPEG-2 compression or another standard. These files may easily exceed 1 gigabyte of storage. Moreover, certain movies in a site (highly popular releases) may be accessed continuously in a given period. Problems specific to the vending of large files have been observed. Conventional caches have become severely congested because of the time required to vend a file to a remote user/client. Part of this problem results from the low bandwidth of many clients (often using slower connections) that tends to tie up the server for hours on the vending of a single large file, and the fact that certain files are being vended much more often than others. Specifically, when a large proportion of the cache is being devoted to large files (over 50 Kbytes) and many requests are being made for the same file, the cache structure will become quickly filled with these large files. The problem is compounded by the load-balancing function of an L
[0012] One solution to the problem of congestion is to address-partition the storage of files in the cache. L
[0013] It is an object of the present invention to provide a technique for address-partitioning a proxy cache cluster and associated proxy partition cache (PPC) that enables address partitioning at the proxy cache at the cache situs without an external load-balancing mechanism, thereby freeing the L
[0014] The present invention overcomes the disadvantages of the prior art by providing a proxy partition cache (PPC) architecture and a technique for address-partitioning a proxy cache consisting of a grouping of discrete, cooperating caches (servers) by redirecting or reassigning client requests for objects (files) of a given size to a single cache in the grouping notwithstanding the cache to which the request is made by the L
[0015] In a preferred embodiment the PCC is member of a proxy cache cluster consisting of a number of coordinated processor/memory mechanisms (PMMs). The grouping of caches can be interconnected to the L
[0016] In a preferred embodiment the caches can each be adapted to determine a cutoff size for redirection/reassignment of requests. If a requested file/object is below a certain size, then the switch-designated cache server caches and vends the file/object directly. This prevents address-partition resources from being used inefficiently on small, quickly vended objects. In general, a request for an object is referred to a different discrete server unless the discrete server and the original receiving server (as assigned by the oad-balancing mechanism) are identical—whereby the request is optimally processed on the receiving server
[0017] The foregoing and other objects and advantages of the invention will become clearer with reference to the following detailed description as illustrated by the drawings in which:
[0018]
[0019]
[0020]
[0021]
[0022]
[0023] The foregoing and other objects and advantages of the invention will become clearer with reference to the following detailed description as illustrated by the drawings in which:
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030] The network segments may comprise local area networks
[0031] In the illustrative embodiment, the internetwork
[0032] The client
[0033]
[0034] Likewise, the proxy cache server
[0035] As noted, the reverse proxy
[0036] By way of background a proxy cache cluster (PCC) “front-ends” the servers of a service provider to increase the availability of services offered by the provider. As noted, the clients access the services by issuing requests to network addresses associated with the services. The PCC increases the availability of the services by receiving and servicing those requests on behalf of the service provider in accordance with a novel proxy cache clustering technique described herein.
[0037] According to an aspect of the invention, a PCC service is characterized by (i) a load rating, which is a number/value that reflects a measure of the PCC service's resource consumption, such as the amount of traffic at the web site
[0038] The PCC service is further characterized by (ii) service type, such as an HTTP proxy service, an HTTP accelerator service or a file transfer protocol (FTP) proxy service; further examples of service types include Real Audio, Real Video, NNTP and DNS; and (iii) service type parameters that are unique to each service. Typical examples of conventional parameters run by an HTTP proxy service include (a) a list of network addresses of, e.g., the web site that allows access to the web servers, (b) whether logging is activated, (c) the format of the activated log (common or extended) and (d) the log roll rate. Most web sites that provide an HTTP service run logging operations to determine the type of requests issued by users, the kinds of errors received by those users and the source network addresses of the requests. This latter log provides an indication of geography with respect to, e.g., the locations of the highest concentration of users.
[0039] The PMMs are organized as a PCC in accordance with the proxy cache clustering technique that dynamically assigns each PMM to the PCC. To that end, each PMM is configured with a unique identifier (ID), a network address and PCC configuration software to enable participation in the clustering process. The unique ID may be the media access control (MAC) address of a network interface card of the PMM or it may be the network address of the PMM. Once configured and activated, the PMM “listens” for a mechanism notifying the PMM that it is a member of a PCC
[0040] Referring further to
[0041] The router
[0042] According to one embodiment a form of tunneling is used to transfer requests from one server to another and to receive vended content files. Tunneling is a preferred technique (according to any number of acceptable, currently practiced tunneling techniques; in which an encapsulation of data transferred between servers is employed whereby the data is maintained within a private network) as the addresses of the servers
[0043] With further reference to
[0044] If, however, a file is greater than the cutoff size, it may still be vended from the initially requested cache. If a file is being cached and it's directory entry is still alive (e.g. a partition time to live has not expired—decision step
[0045] If the file is larger than the cutoff and not otherwise vended from the originally requested cache (e.g. step
[0046] In this embodiment, the hash URL value (URLHASH) is then subjected to a modulo arithmetic function (step
[0047] The request is then referred or forwarded to the reassigned cache server once the switch-designated cache consults its directory for the appropriate routing information. The request is referred over the NIC
[0048] Note that the reassigned cache server may receive a notification alerting it that a forwarded request is to be received so that a forwarding of the request is expected at the reassigned cache. The reassigned cache can be configured to reject the referred request as an unallowed external request when the forwarded request is not recognized as part of the defined redirection system. In other words, the external request is most-likely unauthorized or improperly made.
[0049] The L
[0050] Note that it is contemplated that, where there are significant increases in server numbers and associated traffic, the teachings herein can be adapted so that a given file is cached on a plurality of servers rather one. The number of servers is preset, or can be dynamically altered. Redirection or tunneling of a file request from a switch-designated server to one of the plurality of specified servers, tasked to cache the particular file, can be made according to a variety of techniques.
[0051] The following is a generalized pseudo-code description of the address partitioning procedure according to an embodiment of this invention:
If the requested object is in the cache and the Partition Time To Live (TTL) (1) indicates that the object should still be partitioned and the TTL indicates that the object is still fresh { If the Cache Object Store directory entry indicates that this is a partitioned object { If the object is not oversized (2) { Delete the directory entry Fill and vend the object from this cache } Else { Get the IP address of the partition member from the direc- tory If the IP address selected is the same as this box (3) { Fill and vend the object from this cache } Else { If the partition member is still up (4) { If not allowing a direct connect (5) { Forward the request to the appropri- ate cache and tunnel the response } Else { Send an indication to the appropriate cache to expect a client connec- tion(6) Redirect the client to the appropriate cache } } Else { Select the IP address of the partition mem- ber to handle the oversized object (7) Mark the directory entry to indicate that this is a partitioned object Mark the directory entry with the Partition TTL Store the partition member IP address in the directory If the IP address selected is the same as this box { Fill and vend the object from this cache } Else { If not allowing a direct connect { Forward the request to the appropri- ate cache and tunnel the response } Else { Send an indication to the appropriate cache to expect a connection from the client Redirect the client to the appropriate cache } } } } } } Else { Vend the requested object from this cache (8) } } Else { Start the fill from the origin serve (9) If the content size in the header or the size of the proceeding fill (10) indi- cates that the object is oversized { Select the IP address of the partition member to handle the over- sized object (11) Mark the directory entry to indicate that this is a partitioned object Mark the directory entry with the PartitionTTL Store the partition member IP address in the directory If the IP address selected is the same as this box { Continue the fill of oversized object and vend object (12) } Else { Abort the fill If not allowing a direct connect { Forward the request to the appropriate cache and tunnel the response { Else { Send an indication to the appropriate cache to ex- pect a connection from the client Redirect the client to the appropriate cache } } } Else { Continue the fill and vend the object } }.
[0052] The Cache Object Store directory is described in the above-incorporated OBJECT CACHE STORE Patent Application. With reference to the above listing the following comments apply to the steps numbered in parenthesis:
[0053] 1. TTL value is needed to determine how long an object should be considered fresh while being partitioned. This provides a mechanism to check to see if the object should be moved to another partition member before the object actually becomes stale.
[0054] 2. In this case the object was previously oversized but no longer meets that criteria (e.g. the administrator changed the oversized object threshold).
[0055] 3. This box is the partition member that should fill the request.
[0056] 4. This will be determined via the membership services provided by the current PCC mechanism.
[0057] 5. The administrator has determined that the IP addresses of the cache boxes are not to be made available for a direct connection from an outside client.
[0058] 6. Direct connections are allowed by outside clients. This function provides advanced warning to the partition member to receive the request that the request is coming. This will allow the partition member to deny any direct connections that are not expected.
[0059] 7. Since the previous partition member is not available we must select a new one.
[0060] 8. There is no reason to force cache partitioning if the object is in the cache. We will wait until the cache object becomes stale or is replaced because of cache contention. This will be an issue only when the cache partition is started or is reconfiguring after a partition member is leaving/joining. However, the most common case here will be that the object is in the cache of the partition member to handle the oversized object.
[0061] 9. We need to discover the size of the object.
[0062] 10. Sometimes the server does not send the size header; in this case we continue the fill until we see that it is a large object at which time this logic kicks in.
[0063] 11. This will be done by hashing the URL and taking the modulo based on the number of IP addresses handling the cache partitioning (this should effectively partition the address space of oversized objects among the partition members). We can use the “PCC membership services” to maintain a list of active and alive partition members (using the existing heart-beat, maintenance beat interval, failure-mode beat interval, etc. as described in the above-incorporated PROXY CACHE CLUSTER Patent Application).
[0064] If the membership number changes (thus changing the modulo) a new member will be chosen to handle the redefined partition. When the lost member returns, its cache will still be valid (excepting TTL expiration) and the objects filled by other members will finally expire and leave the cache because of a lack of requests.
[0065] 12. This is the default behavior of the partition member that should handle the oversized object.
[0066] The foregoing has been a detailed description of a preferred embodiment of the invention. Various modifications and additions can be made without departing from the spirit and scope thereof. For example the clustering of PMMs can vary from that depicted. The organization of the internetwork components can also vary from that shown as can the nature of the components. In addition, while an L