1. Field of the Invention
The present invention relates generally to traffic redirection in a distributed system. More particularly, the present invention relates to a method and apparatus for redirecting traffic to a particular network location.
2. Description of the Related Art
A computer network may be defined as an interconnected collection of autonomous computers. In a distributed system, the existence of these multiple autonomous computers is transparent to the user. To achieve this transparency, allocation of jobs to processors and all other system functions must be automatic. These automated system functions are typically provided by an operating system.
In general, the operating system hides the details of the hardware from the user and provides the user with a convenient interface for using the system. More particularly, the operating system is responsible for allocating resources within the distributed system and schedules the execution of various services accordingly. Thus, the operating system selects the best processor, locates and transfers all corresponding service requests to the appropriate location. In this mariner, the operating system ensures that system resources such as file servers are used in an efficient manner.
The resource allocation provided by the operating system includes the retrieval and processing of data. Often, this data is stored on one or more shared file servers. Users in such a system are called clients. Communication from a client generally comprises a request message asking for a particular service to be performed. The service request message is then sent to an appropriate server. The server then does the work requested and sends back a reply. Thus, data is accessed and processed by the server in accordance with the service request message.
Similarly to allocating resources among multiple servers in a simple network, it is also important to appropriately allocate client requests among servers on the Internet. For instance, redundant data centers are often required in order to provide a backup in the event of failure of one of the data centers. Thus, when there are globally distributed data centers that provide the same content, various metrics are often used to select the optimum site to which to send a client request.
When a client requests access to a particular Internet domain name on the Internet, this domain name must be translated to an Internet Protocol (IP) address. More particularly, the Domain Name System (DNS) is used to map domain names of hosts and clients on the Internet to their corresponding IP addresses. Since a central list of domain name-IP address mappings would be impractical, such lists are distributed throughout the Internet in various DNS servers. By way of example, a client typically sends a DNS query to a DNS server that includes a host name with an indication that an IP address is requested. The DNS server then returns an IP address associated with the host name.
Ping is a basic Internet program that enables a client to verify that a particular IP address exists and that the host can accept requests. More particularly, ping is typically used diagnostically to ensure that a host computer is actually operating. Ping is also used with a host that is operating to determine how long it takes to get a response back. Ping operates by sending a packet to a designated address and waiting for a response.
FIG. 1 is a diagram illustrating a system in which a round-trip-response time metric is used to determine the optimum route among multiple possible routes. More particularly, when a client 102 sends a DNS query to a DNS server 104, the DNS server 104 sends a query to a content router 106 capable of determining the optimum route via which to send a client request. As shown, the content router 106 holding the client request sends a “ping” packet 108 to multiple routers 112, 114. For instance, the routers 112, 114 may be located at geographically disparate locations. Each router receiving a “ping” packet responds back to the content router 106 with a response 116 that indicates the total round-trip time. In other words, the total round-trip time is calculated by adding the time that the “ping” packet 108 travels from the content router 106 to one of the routers 112, 114 and the time that the response packet 116 travels back to the content router 106. In this manner, the content router 106 is able to measure the latency of response time from various disparate, geographically located servers or routers 112, 114. The content router 106 then informs the client DNS server 104 which server 112, 114 is closest. The client DNS server 104 then informs the client 102 which server is the most accessible server. The DNS server 104 then connects the client 102 to the appropriate web site.
Although the round-trip-response time metric is a valuable tool that may be used to determine the most efficient route and therefore the most appropriate web server to send a request, there are several drawbacks to this approach. First, the ping packet is often blocked by firewalls. Second, another method using TCP syn ack packets may look like a security denial of a service attack. As a result, another “boomerang” race system is also commonly used to determine the optimum route for routing of client requests.
Both the round-trip-response time metric and the boomerang race system methods are valuable in determining a fastest link among multiple links. However, such calculations rely upon the premise that these travel times are static. In other words, these calculations do not take into consideration that transmission times rely, at least in part, upon network availability of service providers of the Internet. Accordingly, neither of these methods is capable of determining a fastest provider from among multiple facilities or service providers. It would therefore be desirable if a mechanism were provided to enable the optimum service provider to be selected dynamically among multiple service providers on a per transaction basis.
While the Domain Name System is important in locating a particular web site or domain name on the Internet, the Hypertext Transfer Protocol (HTTP) is important in exchanging files on the World Wide Web. Each web server contains an HTTP daemon that is designed to wait for HTTP requests and handle them when they arrive. A web browser is an example of a HTTP client that sends requests to server machines. When the browser user enters a file request by “opening” a web file (e.g., by typing in a Uniform Resource Locator) or clicking on a hypertext link, the browser builds an HTTP request and sends it to the IP address indicated by the URL. The HTTP daemon in the destination server machine receives the request and, after any necessary processing, the requested file is returned.
When an HTTP request is processed, it is sent to a particular HTTP server. As described above, various metrics have been implemented for selecting a suitable server on the Internet. However, existing metrics only consider the link between the client's DNS server and the server that the client is attempting to reach. Thus, it would also be desirable if a mechanism for selecting the optimum server (or link) via a preferred service provider could be implemented that takes into account the entire network, from client to server, when making server site selections.
In view of the above, a system and method for redirecting traffic in a distributed system according to individual service provider capabilities would be desirable.