Method and system for distributing load by redirecting traffic
First Claim
1. In a network communications environment comprising at least a first and a second server client, a client, and a client-to-home-server assignment data structure specifying assignments of the clients to a server to which clients can subscribe, a method for changing the distribution of traffic among the servers, the method comprising:
- receiving at the first server a registration request from the client, wherein the registration request comprises a Session Initiation Protocol Register message;
determining at the first server a server with which the client is assigned to work based on the client-to-home-server assignment data structure;
when the determined server is the first server, processing the registration request at the first server;
when the determined sever is the second server, checking a number of Via headers in the registration request, the number of Via headers indicating how many times the registration request has been forwarded; and
if the number of Via headers is one, then sending a request from the first server to the client redirecting the client to work with the second server;
else if the number of Via headers is greater than one, then proxying from the first server the client'"'"'s registration request to the second server so that the second server processes the registration request;
setting up a subscription by a watcher to a current server;
monitoring the distribution of traffic among the servers;
determining that a change in the distribution of traffic could be beneficial;
modifying the client-to-home-server assignment data structure to reflect a change in assignment of the client from the current server to a new server; and
sending a notification to the watcher of the change in assignment so that the watcher can set up a new subscription.
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.
30 Citations
11 Claims
-
1. In a network communications environment comprising at least a first and a second server client, a client, and a client-to-home-server assignment data structure specifying assignments of the clients to a server to which clients can subscribe, a method for changing the distribution of traffic among the servers, the method comprising:
-
receiving at the first server a registration request from the client, wherein the registration request comprises a Session Initiation Protocol Register message; determining at the first server a server with which the client is assigned to work based on the client-to-home-server assignment data structure; when the determined server is the first server, processing the registration request at the first server; when the determined sever is the second server, checking a number of Via headers in the registration request, the number of Via headers indicating how many times the registration request has been forwarded; and if the number of Via headers is one, then sending a request from the first server to the client redirecting the client to work with the second server; else if the number of Via headers is greater than one, then proxying from the first server the client'"'"'s registration request to the second server so that the second server processes the registration request; setting up a subscription by a watcher to a current server; monitoring the distribution of traffic among the servers; determining that a change in the distribution of traffic could be beneficial; modifying the client-to-home-server assignment data structure to reflect a change in assignment of the client from the current server to a new server; and sending a notification to the watcher of the change in assignment so that the watcher can set up a new subscription. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer-readable storage medium containing computer-executable instructions for performing a method for a first server to redirect traffic, the method comprising:
-
receiving a registration request from a client, wherein the registration request comprises a Session Initiation Protocol Register message; determining a server with which the client is assigned to work; when the determined server is the first server, processing the registration request at the first server; and when the determined sever is a second server, checking a number of Via headers in the registration request; and if the number of Via headers is one, then sending a request to the client, redirecting the client to work with the second server; else if the number of Via headers is greater than one, then proxying the client'"'"'s registration request to the second server.
-
-
10. In a network communications environment, a system for redirecting traffic among servers, the system comprising:
-
a home server directory service; a client configured for requesting an identification of a home server from the home server directory service, for receiving a home server identification in response, and for sending a registration request to the identified home server, the registration request including a number indicating how many times the registration request has been forwarded, wherein the registration request comprises a Session Initiation Protocol Register message; the identified home server comprising a client-to-home-server assignment data structure, the identified home server configured for receiving the registration request from the client, for querying the client-to-home-server assignment data structure to determine a home server with which the client is assigned to work, for processing the registration request at the home server when the determined server is the home server, and for checking the number when the determined server is not the home server, and the home server with which the client is assigned to work wherein if the number is one, the identified home server is configured to send a request to the client redirecting the client to work with the home server with which the client is assigned to work, and else if the number is greater than one, the identified home server is configured for proxying the client'"'"'s registration request to the home server with which the client is assigned to work.
-
-
11. In a network communications environment, a system for redirecting traffic among servers, the system comprising:
-
a home server directory service; a client configured for requesting an identification of a home server from the home server directory service, for receiving a home server identification in response, and for sending a registration request to the identified home server, wherein the registration request comprises a Session Initiation Protocol Register message; the identified home server comprising a client-to-home-server assignment data structure, the identified home server configured for receiving the registration request from the client, for querying the client-to-home-server assignment data structure to determine a home server with which the client is assigned to work, for checking a number of Via headers in the registration request, and, if the number of Via headers is one, for sending a request to the client redirecting the client to work with the home server with which the client is assigned to work, else if the number of Via headers is greater than one, for proxying the client'"'"'s registration request to the home server with which the client is assigned to work; and
the home server with which the client is assigned to work.
-
Specification