Method and system for distributing load by redirecting traffic
First Claim
1. A method performed by servers that each provide a service for clients, the method for distributing a request for service received from a client to a server for servicing the request, the servers being in a network, some of the clients being internal to the network and some of the clients being external to the network, the method comprising:
- providing a client-to-server assignment data structure specifying assignments of each client to one of the servers as a home server for the client;
receiving by a receiving server a request sent from a requesting client for a service,wherein the network includes an edge server through which requests from external clients pass before being provided to the receiving server, and wherein the request sent from a requesting client includes a Via header and the edge server adds another Via header to a request sent from an external client; and
under control of the receiving server,identifying by the receiving server a home server of the requesting client from the client-to-server assignment data structure before providing the requested service;
determining whether the receiving server is the identified home server;
after determining that the receiving server is the identified home server, providing by the receiving server the service requested by the requesting client;
after determining that the receiving server is not the identified home server,determining whether the requesting client is internal or external to the network based on number of Via headers of the received request;
after determining that the requesting client is internal to the network, sending by the receiving server a response to the requesting client indicating that the requesting client should redirect the received request to the identified home server so that the identified home server provides the service requested by the requesting client; and
after determining that the requesting client is external to the network, proxying by the receiving server the received request from the receiving server to the identified home server so that the identified home server provides the service requested by the requesting client.
2 Assignments
0 Petitions
Accused Products
Abstract
Disclosed is a system for servers to redirect client requests to other servers in order to distribute client traffic among the servers. A client is assigned to a server although the client may be unaware of that assignment. When the client accesses a server, a server possibly identified to the client by a name service, the server checks the client'"'"'s assignment. If the client is not assigned to this server, then in some scenarios this server redirects the client to its assigned server. The client responds by sending its request to the assigned server. In other scenarios, the first server accessed by the client proxies the client'"'"'s traffic to the assigned server. A database is kept of client-to-server assignments. If the present load distribution is less than ideal (e.g., clients are assigned to an unavailable server), then the assignment database is updated to reflect how the load should be distributed.
27 Citations
14 Claims
-
1. A method performed by servers that each provide a service for clients, the method for distributing a request for service received from a client to a server for servicing the request, the servers being in a network, some of the clients being internal to the network and some of the clients being external to the network, the method comprising:
-
providing a client-to-server assignment data structure specifying assignments of each client to one of the servers as a home server for the client; receiving by a receiving server a request sent from a requesting client for a service, wherein the network includes an edge server through which requests from external clients pass before being provided to the receiving server, and wherein the request sent from a requesting client includes a Via header and the edge server adds another Via header to a request sent from an external client; and under control of the receiving server, identifying by the receiving server a home server of the requesting client from the client-to-server assignment data structure before providing the requested service; determining whether the receiving server is the identified home server; after determining that the receiving server is the identified home server, providing by the receiving server the service requested by the requesting client; after determining that the receiving server is not the identified home server, determining whether the requesting client is internal or external to the network based on number of Via headers of the received request; after determining that the requesting client is internal to the network, sending by the receiving server a response to the requesting client indicating that the requesting client should redirect the received request to the identified home server so that the identified home server provides the service requested by the requesting client; and after determining that the requesting client is external to the network, proxying by the receiving server the received request from the receiving server to the identified home server so that the identified home server provides the service requested by the requesting client. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-readable storage medium that is not a signal containing instructions for controlling a server that provides a service for clients to perform a method to distribute a request for service received from a client to another server that also provides the service for clients, the servers being in a network, some of the clients being internal to the network and some of the clients being external to the network, the method comprising:
-
receiving by a receiving server a request sent from a requesting client for a service; and under control of the receiving server, identifying the home server of the requesting client before providing the requested service; when the receiving server is the identified home server, providing the service requested by the requesting client; when the receiving server is not the identified home server, when the requesting client is internal to the network, sending a response to the requesting client indicating that the requesting client should redirect the received request to the identified home server so that the identified home server provides the service requested by the requesting client; and when the requesting client is external to the network, proxying the received request from the receiving server to the identified home server so that the identified home server provides the service requested by the requesting client, wherein the network includes an edge server through which requests from external clients pass before being provided to the receiving server, and wherein the request sent from the requesting client includes a Via header, the edge server adds another Via header to a request sent from an external client, and the receiving server determines whether the requesting client is internal or external to the network based on number of Via headers of the received request. - View Dependent Claims (7, 8, 9)
-
-
10. A server that receives from a requesting client a request to provide a service and the receiving server either provides the service to the client or distributes the received request to another server that also provides the service for clients, the servers being in a network, some of the clients being internal to the network and some of the clients being external to the network, comprising:
-
a memory storing computer-executable instructions of; a component that identifies a home server of the requesting client before providing the requested service; a component that, when the receiving server is the identified home server, provides the service requested by the requesting client; a component that, when the receiving server is not the identified home server, determines whether the requesting client is internal or external to the network; when it is determined that the requesting client is internal to the network, sends a response to the requesting client indicating that the requesting client should redirect the received request to the identified home server; and when it is determined that the requesting client is external to the network, proxies the received request from the receiving server to the identified home server; and a processor that executes the computer-executable instructions stored in the memory, wherein the network includes an edge server through which requests from external clients pass before being provided to a receiving server, and wherein the request sent from the requesting client includes a Via header, the edge server adds another Via header to a request sent from an external client, and the receiving server determines whether the requesting client is internal or external to the network based on number of Via headers of the received request. - View Dependent Claims (11, 12, 13, 14)
-
Specification