← Back to Patent Explorer
US6175869B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Client-side techniques for web server allocation

Assignee: WSOU Investments LLC
•
Filing: 1998-04-08
•
Granted: 2001-01-16
•
Expires: 2018-04-08
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A client request directed to a web site or other service hosted by a distributed pool of servers is processed by a client agent associated with the client. The client agent intercepts the client request and routes it to a particular one of the servers in the pool. The client agent bases its routing decision on address information regarding the individual servers of the pool and performance data regarding processing of previous client requests directed to the service. The address information may be retrieved by the client agent from a response to an initial client request directed to the service. The performance data may include response times for servicing previous client requests directed to the service, and the client agent may route the client request such that an average response time of multiple requests to the service is minimized. It may also make use of a probabilistic routing strategy which ensures that each of the servers in the pool receives at least one client request, such that accurate performance data may be maintained for all of the servers. A pricing manager associated with the server pool may be used to establish discount factors or other pricing information for each of the servers in the pool. This pricing information is communicated to the client agents and used in their routing decisions, so as to ensure that otherwise non-cooperating client agents will route their requests in a manner consistent with a target operating point established by the service provider.

Inventors

  • 👤 Sudhir Raman Ahuja
  • 👤 Mehmet Karaul
  • 👤 Ioannis A. Korilis

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 23:19
CPC Classifications
H; H04; H04L; H04L67/00; H04L67/01; H04L67/10; H04L67/1001; H04L67/1004; H04L67/1008; H04L67/1019

Claims Analysis

Total Claims: 52
Claim 1
Independent Claim 199 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: intercepting a client request directed to the service hosted by the server pool; and selecting a particular one ofthe servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein at least a portion of the address information and the performance data is gathered by a given client agent associated with the client, the given client agent gathering the portion ofthe address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting step utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.
Claim 2
Independent Claim 199 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: intercepting a client request directed to the service hosted by the server pool; and selecting a particular one ofthe servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein at least a portion of the address information and the performance data is gathered by a given client agent associated with the client, the given client agent gathering the portion ofthe address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting step utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.
Claim 3
Dependent Claim 21 words
The method of claim 1 wherein the intercepting and selecting steps are implemented in the client agent associated with the client.
Claim 4
Dependent Claim 41 words
The method of claim 1 wherein upon an initial client request to the service hosted by the server pool, the client agent retrieves the address information from a response to the initial request received from a server in the server pool.
Claim 5
Dependent Claim 35 words
The method of claim 1 wherein the selecting step includes selecting a particular one of the servers based on performance data which includes performance data regarding a network over which the client requests are sent.
Claim 6
Dependent Claim 34 words
The method of claim 1 wherein the selecting step includes selecting a particular one of the servers based on performance data which includes average response times for at least a subset of the servers.
Claim 7
Dependent Claim 21 words
The method of claim 5 wherein the average response times are determined by monitoring previous client requests directed to the service.
Claim 8
Dependent Claim 35 words
The method of claim 6 wherein the average response time for at least one of the servers includes a weighted average response time, wherein more recent responses are weighted more heavily than less recent responses.
Claim 9
Dependent Claim 24 words
The method of claim 5 wherein the average response times are determined by utilizing probe messages sent by the client agent to the servers.
Claim 10
Dependent Claim 59 words
The method of claim 1 wherein the selecting step includes selecting a server in the server pool in accordance with a probabilistic routing strategy which routes client requests such that a server in the pool which provides the fastest response is more likely to receive subsequent client requests than a server in the pool which provides a slower response.
Claim 11
Dependent Claim 31 words
The method of claim 9 wherein the probabilistic routing strategy routes multiple client requests such that at least one client request is directed to each of the servers in the pool.
Claim 12
Dependent Claim 32 words
The method of claim 1 further including the step of delivering the address information and other server-site specific information to the client agent by a server agent associated with the server pool.
Claim 13
Dependent Claim 39 words
The method of claim 11 wherein the server agent determines whether the address information used by the client agent to route the client request is outdated by examining a timestamp transmitted by the client agent with the client request.
Claim 14
Dependent Claim 38 words
The method of claim 11 wherein the server agent provides updated address information in its response to the client request if it determines that the address information used by the client agent to route the request is outdated.
Claim 15
Dependent Claim 62 words
The method of claim 1 further including the step of transmitting at least a portion of the additional information in the form of pricing information to the client agent, wherein the pricing information establishes a service price associated with each of at least a subset of the servers in the server pool, based on the target operating point for the server pool.
Claim 16
Dependent Claim 39 words
The method of claim 14 wherein at least a portion of the pricing information is generated by a pricing manager and transmitted from the pricing manager to a server agent and from the server agent to the client agent.
Claim 17
Dependent Claim 33 words
The method of claim 14 wherein at least a portion of the pricing information is generated by server agents associated with the servers and transmitted from the server agents to the client agent.
Claim 18
Dependent Claim 43 words
The method of claim 14 wherein the pricing information includes a discount factor for each of the servers in the pool, and the discount factor for a given server reflects the relative sensitivity of the client agent to the responsiveness of that server.
Claim 19
Dependent Claim 34 words
The method of claim 17 wherein the selecting step includes selecting one of the servers based on performance data which includes an average response time of each server multiplied by its corresponding discount factor.
Claim 20
Dependent Claim 20 words
The method of claim 17 further including the step of updating the discount factors in accordance with an adaptive algorithm.
Claim 21
Dependent Claim 34 words
The method of claim 17 wherein a single set of discount factors are supplied to each of a plurality of client agents processing client requests directed to the service hosted by the server pool.
Claim 22
Independent Claim 210 words
An apparatus for processing a client request directed to a service hosted by a pool of servers, the apparatus comprising: a processor for implementing a given client agent which is operative to intercept a client request directed from a corresponding client to the service hosted by the server pool, and to select a particular one of the servers in the server pool to which to route the client request based on address information and performance data regarding the servers, the given client agent gathering at least a portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, wherein the server selection operation further utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool; and a memory associated with the processor for storing at least a portion of the address information and performance data.
Claim 23
Independent Claim 210 words
An apparatus for processing a client request directed to a service hosted by a pool of servers, the apparatus comprising: a processor for implementing a given client agent which is operative to intercept a client request directed from a corresponding client to the service hosted by the server pool, and to select a particular one of the servers in the server pool to which to route the client request based on address information and performance data regarding the servers, the given client agent gathering at least a portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, wherein the server selection operation further utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool; and a memory associated with the processor for storing at least a portion of the address information and performance data.
Claim 24
Dependent Claim 20 words
The apparatus of claim 21 wherein at least a portion of the performance data is gathered by the client agent.
Claim 25
Dependent Claim 17 words
The apparatus of claim 21 wherein the processor is implemented at least in part within the client.
Claim 26
Dependent Claim 13 words
The apparatus of claim 21 wherein the processor is co-located with the client.
Claim 27
Dependent Claim 14 words
The apparatus of claim 21 wherein the processor is directly coupled to the client.
Claim 28
Dependent Claim 41 words
The apparatus of claim 21 wherein upon an initial client request to the service hosted by the server pool, the client agent retrieves the address information from a response to the initial request received from a server in the server pool.
Claim 29
Dependent Claim 36 words
The apparatus of claim 21 wherein the processor is operative to select a particular one of the servers based on performance data which includes performance data regarding a network over which the client requests are sent.
Claim 30
Dependent Claim 35 words
The apparatus of claim 21 wherein the processor is operative to select a particular one of the servers based on performance data which includes average response times for at least a subset of the servers.
Claim 31
Dependent Claim 21 words
The apparatus of claim 28 wherein the average response times are determined by monitoring previous client requests directed to the service.
Claim 32
Dependent Claim 35 words
The apparatus of claim 29 wherein the average response time for at least one of the servers includes a weighted average response time, wherein more recent responses are weighted more heavily than less recent responses.
Claim 33
Dependent Claim 24 words
The apparatus of claim 28 wherein the average response times are determined by utilizing probe messages sent by the client agent to the servers.
Claim 34
Dependent Claim 61 words
The apparatus of claim 21 wherein the client agent is operative to select a server in the server pool in accordance with a probabilistic routing strategy which routes client requests such that a server in the pool which provides the fastest response is more likely to receive subsequent client requests than a server in the pool which provides a slower response.
Claim 35
Dependent Claim 31 words
The apparatus of claim 32 wherein the probabilistic routing strategy routes multiple client requests such that at least one client request is directed to each of the servers in the pool.
Claim 36
Dependent Claim 29 words
The apparatus of claim 21 wherein the address information and other server-site specific information are delivered to the client agent by a server agent associated with the server pool.
Claim 37
Dependent Claim 43 words
The apparatus of claim 21 wherein client agent transmits a timestamp with the client request, such that a server agent associated with the server pool can determine whether the address information used by the client agent to route the client request is outdated.
Claim 38
Dependent Claim 30 words
The apparatus of claim 21 wherein the client agent is operative to retrieve updated address information for the servers of the server pool from a response to the client request.
Claim 39
Dependent Claim 66 words
The apparatus of claim 21 wherein the client agent is further operative to receive at least a portion of the additional information in the form of pricing information associated with the server pool, wherein the pricing information establishes a service price associated with each of at least a subset of the servers in the server pool, based on the target operating point for the server pool.
Claim 40
Dependent Claim 39 words
The apparatus of claim 37 wherein at least a portion of the pricing information is generated by a pricing manager and transmitted from the pricing manager to a server agent and from the server agent to the client agent.
Claim 41
Dependent Claim 33 words
The apparatus of claim 37 wherein at least a portion of the pricing information is generated by server agents associated with the servers and transmitted from the server agents to the client agent.
Claim 42
Dependent Claim 43 words
The apparatus of claim 37 wherein the pricing information includes a discount factor for each of the servers in the pool, wherein the discount factor for a given server reflects the relative sensitivity of the client agent to the responsiveness of that server.
Claim 43
Dependent Claim 33 words
The apparatus of claim 40 wherein the client agent selects one of the servers based on performance data which includes an average response time of each server multiplied by its corresponding discount factor.
Claim 44
Independent Claim 196 words
An apparatus for processing a client request directed to a service hosted by a pool of servers, comprising: means for intercepting a client request directed to the service hosted by the server pool; and means for selecting a particular one ofthe servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein at least a portion of the address information and the performance data is gathered by a given client agent associated with the client, the given client agent gathering the portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting means utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.
Claim 45
Independent Claim 196 words
An apparatus for processing a client request directed to a service hosted by a pool of servers, comprising: means for intercepting a client request directed to the service hosted by the server pool; and means for selecting a particular one ofthe servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein at least a portion of the address information and the performance data is gathered by a given client agent associated with the client, the given client agent gathering the portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting means utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.
Claim 46
Independent Claim 167 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: generating pricing information which establishes a service price associated with each of at least a subset of the servers in the server pool, based on a target operating point for the server pool; and transmitting the pricing information to the client, such that a client agent associated with the client is enabled to select a particular one of the servers in the server pool to which to route the client request based at least in part on the pricing information, the client agent gathering address information and performance data used in the select operation by processing responses to one or more previous client requests generated by the client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request.
Claim 47
Independent Claim 167 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: generating pricing information which establishes a service price associated with each of at least a subset of the servers in the server pool, based on a target operating point for the server pool; and transmitting the pricing information to the client, such that a client agent associated with the client is enabled to select a particular one of the servers in the server pool to which to route the client request based at least in part on the pricing information, the client agent gathering address information and performance data used in the select operation by processing responses to one or more previous client requests generated by the client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request.
Claim 48
Dependent Claim 39 words
The method of claim 43 wherein at least a portion of the pricing information is generated by a pricing manager associated with the server pool and transmitted from the pricing manager to a client agent associated with the client.
Claim 49
Dependent Claim 37 words
The method of claim 43 wherein at least a portion of the pricing information is generated by server agents associated with the servers and transmitted from the server agents to a client agent associated with the client.
Claim 50
Dependent Claim 43 words
The method of claim 43 wherein the pricing information includes a discount factor for each of the servers in the pool, wherein the discount factor for a given server reflects the relative sensitivity of the client agent to the responsiveness of that server.
Claim 51
Independent Claim 194 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: intercepting a client request directed to the service hosted by the server pool; and selecting a particular one of the servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein the intercepting and selecting steps are implemented in a client agent associated with the client, the client agent gathering at least a portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting step utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.
Claim 52
Independent Claim 194 words
A method of processing a client request directed from a client to a service hosted by a pool of servers, the method comprising the steps of: intercepting a client request directed to the service hosted by the server pool; and selecting a particular one of the servers in the server pool to which to route the client request based on address information and performance data regarding the servers, wherein the intercepting and selecting steps are implemented in a client agent associated with the client, the client agent gathering at least a portion of the address information and the performance data by processing responses to one or more previous client requests generated by the corresponding client and directed by the client agent to servers of the server pool using a routing strategy which ensures that each of the servers in the server pool receives at least one client request, and further wherein the selecting step utilizes additional information received from an entity associated with the server pool such that a plurality of otherwise non-cooperating client agents including the given client agent route their requests in accordance with a target operating point for the server pool.

References Cited (Backward Citations)

US5283897A Cited
US5459837A Cited
US5893077A Cited
US6056046A Cited
US5774660A Cited
US5852717A Cited
US5991808A Cited
US6067545A Cited
US6070191A Cited
US5987493A Cited
US6014307A Cited
US6070190A Cited
US6078960A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-01-16 2004-07-17 2005-01-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-01-16 2008-07-17 2009-01-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-01-16 2012-07-17 2013-01-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag