IP Library Granted Patent US 8,713,092
Granted Patent B2
US 8,713,092 · App. 12/368,969 · Granted Apr 29, 2014

Method and system for distributing load by redirecting traffic

Inventors: Vishwajith Kumbalimutt (Redmond, WA); David J. Simons (Redmond, WA); Robert I. Brown (Kirkland, WA); Elena Apreutesei (Redmond, WA)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,713,092
App. No.
12/368,969
Granted
Apr 29, 2014
Kind
B2
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.

Claims (42)

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. The method of claim 1 wherein the edge server upon receiving a request for a service from an external client selects a server to receive the request to effect load balancing of receiving requests among the servers.

3. The method of claim 2 wherein the client-to-server assignment data structure provides load balancing among assignments of clients to home servers.

4. The method of claim 1 wherein the network includes a firewall separating the servers and internal clients from the external clients.

5. The method of claim 1 wherein 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 comprises sending a 301 Moved Permanently SIP response code.

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.

7. The computer-readable storage medium of claim 6 wherein the edge server upon receiving a request for a service from an external client selects a server to receive the request to effect load balancing of receiving requests among the servers.

8. The computer-readable storage medium of claim 7 wherein a client-to-server assignment data structure specifies assignments of each client to one of the servers as a home server for the client to provide load balancing among assignments of clients to home servers.

9. The computer-readable storage medium of claim 6 wherein the network includes a firewall separating the servers and internal clients from the external clients.

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.

11. The server of claim 10 wherein the edge server selects a server to receive the each request it receives from an external client to effect load balancing of receiving requests among the servers.

12. The server of claim 11 wherein an internal client selects a server to receive the request to effect load balancing of receiving requests among the servers.

13. The server of claim 10 wherein a client-to-server assignment data structure specifies assignments of each client to one of the servers as a home server for the client to provide load balancing among assignments of clients to home servers.

14. The server of claim 10 wherein the network includes a firewall separating the servers and internal clients from the external clients.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2014
From: FISCHER, MICHAEL A.
To: GRINNELL CORPORATION
Reel/Frame 033469/0102 →
Continuity (2)
Continuation 10606999 · Jun 26, 2003
Related Publication 20090282149A1 · Nov 12, 2009