1. Field of the Invention
This invention relates to networked file servers and caching proxy servers and more particularly to systems and methods for implementing a takeover of a reliable network connection by a backup host machine, particularly file servers, caching proxy servers, database servers, streaming media servers, or database proxies.
2. Background Information
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.
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.
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 provide additional web servers and/or associated proxies. The additional machines will have unique network addresses.
These network addresses are typically Transmission Control Protocol/Internet Protocol (TCP/IP) addresses that are represented by filenames or URLs including 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).
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.
Applications running on a proxy generally use an application program interface (API) based on sockets for their access top transport protocols, such as TCP and UDP. 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 APIs 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. 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 Computer Networks by Andrew S. Tanenbaun, printed by Prentice Hall PTR, Upper Saddle River, N.J., 1996.
Where web and other network-based data content is provided in large volume from a particular source, and/or to a particular group of users, the use of a multiple-server proxy caching array is highly desirable. In other words, a plurality of interconnected servers all residing on a local network are used to cache and vend content to clients based upon the clients' requests. One known implementation of a “cluster” of proxy cache servers (e.g. a proxy cache cluster or PCC) is the Excelerator™ appliance and associated software available from Volera, Inc. of San Jose, Calif. As part of such a cluster, a gateway router and Layer 4 (L4) switch may be employed. The L4 switch (or similarly operable component), in particular performs “load balancing.” By load-balancing it is meant that the switch assigns requests to various caches based upon a mechanism that attempts to balance the usage of the caches so that no single cache is over-utilized while taking into account any connection context associated with the client requesting the content dataflow.
When a server in a cluster fails, the TCP-based (more-formally termed “TCP/IP”) connections it has established will generally terminate unless a “hot backup” server is available. Such a server is a machine running in tandem with the failed server, and carrying the same connections. Clearly, this is a significant drain on server resources that may only be practical for critical data connections. Where a hot-backup arrangement is not employed, an alternative backup mechanism involves the resumption of the lost TCP-based connection(s) on a different server, or the same server, once restarted/rebooted. This approach, while less demanding on resources, is more time-consuming due to the delays in restarting and reestablishing the connection(s). Further, the hot backup server must be configured as a backup for a particular server-it cannot share the backup responsibilities with other servers in the cluster. In other words, it is dedicated to the server for which it is a backup.
It is desirable 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 L4 switch from any additional address partitioning responsibilities. The PPC architecture should thereby relieve congestion, and overfilling of the caches with duplicate copies of large files. The PPC architecture is just one example of an application of the present invention. The present invention is also applicable to other architectures that utilize L4 switches and other load-balancing and/or failover switching devices.
It is further desirable to provide a system and method for providing “transparent failover” for TCP-based connections that are served by a group of cooperating servers, such as a proxy cache cluster. That is, the connections should be maintained in a manner that does not significantly delay or inconvenience the client with whom the TCP-based connection is established. This system and method should not cause an undesirable increase in server resource usage.