US20050102393A1 - Adaptive load balancing - Google Patents

Adaptive load balancing Download PDF

Info

Publication number
US20050102393A1
US20050102393A1 US10/712,130 US71213003A US2005102393A1 US 20050102393 A1 US20050102393 A1 US 20050102393A1 US 71213003 A US71213003 A US 71213003A US 2005102393 A1 US2005102393 A1 US 2005102393A1
Authority
US
United States
Prior art keywords
server
behavior modification
modification hint
operating conditions
clients
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US10/712,130
Other versions
US7421695B2 (en
Inventor
Christopher Murray
John Zamick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Priority to US10/712,130 priority Critical patent/US7421695B2/en
Assigned to CISCO TECHNOLOGY, INC. reassignment CISCO TECHNOLOGY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MURRAY, CHRISTOPHER, ZAMICK, JOHN
Priority to CA002543175A priority patent/CA2543175C/en
Priority to PCT/US2004/037072 priority patent/WO2005050356A2/en
Priority to EP04819058.1A priority patent/EP1682994B1/en
Publication of US20050102393A1 publication Critical patent/US20050102393A1/en
Priority to US12/194,434 priority patent/US7752630B2/en
Application granted granted Critical
Publication of US7421695B2 publication Critical patent/US7421695B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0892Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1036Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers

Definitions

  • the present invention relates to load balanced servers in a network.
  • the invention specifically relates to adaptive load balancing.
  • a client-server computer system clients rely on servers to provide needed services.
  • a single server serves multiple clients. If this is the case, then any degradation in the quality of service (QoS) provided by the server, or failure of the server, will result in poor or failed service at each of its clients.
  • QoS quality of service
  • One approach for detecting the need for failover is to use a timeout mechanism configured on the client.
  • the client will wait time T for a response from the server and will retry the request R times, again waiting time T for each retry.
  • the server In a situation where the server cannot respond in time T to the request, either because the server is down (has failed), or the QoS has degraded, then the client waits for a total time of R*T without a response to the request and then fails over to another server.
  • a problem with the timeout approach is that the client wastes the total time to failover of R*T.
  • Another problem with the timeout approach is that failover time is constant for a particular client.
  • a server's speed of response is dictated by the server's operating conditions, including network conditions.
  • the client's timeout value does not adapt and therefore the client's QoS suffers under changing conditions.
  • a second problem with the timeout approach is that it increases network traffic.
  • O(R) messages per client will be passed when failover is needed.
  • a server Once a server has “timed out” a predefined number of times for a particular client, the client fails over to a second server.
  • This second server is typically chosen from a preconfigured list of alternative servers on the client.
  • a problem with this configured failover approach is that the choice of server to which to failover is based on a fixed list and not on network conditions or the operating conditions of the original server or the servers to which the client could failover.
  • a load balancer routes messages between clients and servers, acting as a single point of contact for multiple clients and allowing those clients to be served by multiple servers.
  • a client must be served by the same server for all related messages.
  • the load balancer must make client-server relationships “sticky” even when using a stateless protocol such as hypertext transfer protocol (HTTP) that does not inherently support maintaining long-duration connections of clients to servers.
  • HTTP hypertext transfer protocol
  • a load balancer makes a client-server session sticky by either keeping state for each client session, thereby keeping track of the routing of messages between clients and servers, or otherwise determining, for each message for each client-server relationship, to which client-server relationship that message corresponds.
  • a problem with the load balancer approach is that the implementations of stickiness algorithms are computationally expensive, memory intensive, and difficult to deploy.
  • a related problem with the load balancer approach is that it requires at least one separate process, the load balancer. If a client could failover correctly on its own, then there would be no need for a load balancer and load balanced client-server systems as a whole could be simpler.
  • determining the server to which to failover is based on a preconfigured list on the load balancer and not on network conditions or the operating conditions of the original server or the servers to which the client could failover.
  • FIG. 1 depicts a block diagram of example architectural components and layout of a load balanced system.
  • FIG. 2 depicts a flow diagram of an example method for determining when to send a behavior modification hint.
  • FIG. 3 depicts a flow diagram of an example method for determining appropriate reaction to a behavior modification hint.
  • FIG. 4 depicts a block diagram of example architectural elements of a load balanced authentication, authorization, and accounting (AAA) server that performs the foregoing steps.
  • AAA authentication, authorization, and accounting
  • FIG. 5 is a block diagram that illustrates a computer system upon which an embodiment of the invention may be implemented.
  • a method for adaptive load balancing including the steps of monitoring a server's operating conditions; determining, based on the server's operating conditions, when to send a behavior modification hint to one or more clients that are being served by the server; generating the behavior modification hint based on the server's operating conditions; and sending the behavior modification hint to the one or more clients.
  • the server is an AAA server and the one or more clients are AAA clients.
  • the step of sending the behavior modification hint comprises sending a RADIUS message containing the behavior modification hint in a vendor specific attribute within the RADIUS message.
  • the step of sending the behavior modification hint comprises sending a particular message containing the behavior modification hint to a particular client of the one or more clients, where the particular message is a response message to a request message sent by the particular client to the server.
  • the step of monitoring the server's operating conditions comprises monitoring at least one of average transaction request processing time, CPU usage percentage, memory usage percentage, network conditions, and number of processes running.
  • the method further includes the step of determining the one or more clients to which to send the message based on a predefined list of clients. In a related feature, the method further includes the step of determining the one or more clients to which to send the message based on a network device group. In a related feature, the method further includes the step of determining the one or more clients to which to send the message based on operating conditions for the server relative to each of the one or more clients.
  • the server is one of multiple servers providing a particular service; the behavior modification hint comprises a suggestion of one or more alternative servers; and the method further comprises the step of determining the one or more alternative servers based on the set of operating conditions for each server of the multiple servers. In a related feature, the step of determining the one or more alternative servers further comprises the server obtaining the operating conditions of the multiple servers over a network.
  • the step of determining when to send a behavior modification hint is based on network conditions of a network providing communication between the server and the one or more clients, where the network conditions comprise at least one of ping time from the server to a computer on the network; round trip time of a message sent to a particular client; quality of service guaranteed to one or more clients; and operating conditions of a device on the network used to route messages.
  • the step of sending a behavior modification hint further comprises the steps of sending a code to the one or more clients; and generating the code based on why it was determined to send a message to the one or more clients.
  • the step of determining when to send a behavior modification hint is based on a scheduled event related to the server.
  • the scheduled event related to the server is selected from the group consisting of server shutdown, server maintenance, and server backup.
  • the step of determining when to send a behavior modification hint is based on a server detecting that a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service from a particular client.
  • a method for adaptive load balancing including the steps of receiving a behavior modification hint from a first server providing a first service, where the behavior modification hint comprises the first server's operating conditions; and altering one or more functional aspects of a client based on the behavior modification hint, where the one or more functional aspects of the client comprise at least one of a configured timeout value for the first server for the first service and a preferred server setting for the first service.
  • the step of receiving a behavior modification hint comprises receiving a particular message containing the behavior modification hint from the first server, where the particular message is sent by the first server in response to a request message sent by the client to the first server.
  • the step of altering one or more functional aspects of a client comprises altering the configured timeout value for the first server for the first service.
  • the method further includes the step of generating a new timeout value based on the first server's operating conditions.
  • the behavior modification hint contains a list of one or more alternative servers and the step of altering one or more functional aspects of a client comprises altering the preferred server setting for the first service based on the list of one or more alternative servers.
  • a second server is one of the servers in the list of one or more alternative servers and the method further comprises the step of connecting to the second server.
  • the method further includes the step of generating a new timeout value based on the second server's operating conditions.
  • the step of receiving a behavior modification hint further comprises the steps of receiving a RADIUS message containing the behavior modification hint in a Vendor Specific Attribute (VSA) within the RADIUS message and interpreting the behavior modification hint contained within the RADIUS message.
  • VSA Vendor Specific Attribute
  • a computer-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform any of the foregoing steps.
  • FIG. 1 depicts a block diagram of example architectural components and layout of a load balanced system.
  • One or more supplicants 101 A, 101 B, 101 C are communicatively coupled to network devices 105 A, 105 B.
  • communication of supplicants 101 A, 101 B, 101 C with network devices 105 A, 105 B is over a network 155 .
  • the network 155 is a wireless network, dial up access, the Internet, a local area network (LAN), or any other communication network.
  • the network device 105 A, 105 B are wireless access points, virtual private network devices, network access servers, switches, routers, or any other appropriate devices.
  • the network devices 105 A, 105 B are communicatively coupled to a LAN 150 .
  • the LAN 150 is a wireless network, dial up access, the Internet, or any other appropriate communications network.
  • the network device 105 A is also communicatively coupled to a log 135 .
  • the log is a database, a flat file, or any other appropriate storage.
  • One or more servers 110 A, 110 B, 110 C are communicatively coupled to the LAN 150 and to respective logs 136 A, 136 B, 136 C.
  • the servers are AAA servers, application servers, database servers, or any other servers that can support load balancing.
  • the servers 110 A, 110 B, and 110 C are AAA servers and the network devices 105 A, 105 B are AAA clients.
  • Network device 105 A acts as an access regulator for a supplicant 101 A, controlling what the supplicant 101 A can reach in the rest of the system 100 .
  • the network device 105 A accounts for all of the activity that passes through it via a log 135 .
  • supplicant 101 A requests a service from a server 110 A in the system 100
  • the network device 105 A communicates with the servers 110 A to forward the request from supplicant 101 A through the LAN 150 . All activity at the server 110 A is accounted for in a log 136 A.
  • One approach herein uses a preemptive method to indicate to clients that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • a server sends a behavior modification hint based on the operating conditions of the server.
  • the operating conditions include any aspect of the server itself or its network environment that can affect the server's ability to serve a client.
  • a server's operating conditions comprise detecting that a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service.
  • a server's operating conditions include average transaction time for a particular type of request for the server or average transaction time for a particular type of request for one or more other servers to which the server is communicatively coupled.
  • a server's operating conditions comprise CPU (central processing unit) usage percentage, memory usage percentage, network conditions, or number of processes running.
  • network conditions are computed as the round trip time for a particular request less the transaction time for the particular request or network ping time between the client and server.
  • a server's operating conditions is computed relative to a particular client.
  • the AAA server 110 A determines CPU usage, which is a parameter relative to all clients, and network ping time relative to network device 105 A.
  • a server's operating conditions may include the schedule for server shutdown, server maintenance, server backup or any other scheduled event related to the server.
  • a server's operating conditions include operating conditions of one or more other servers to which the server is communicatively coupled.
  • the server obtains the operating conditions of the one or more other servers over a network, via file transfer protocol (FTP), via HTTP, secure HTTP (HTTPS), TCP/IP (Transaction Control Protocol/Internet Protocol) sockets, or other appropriate data transport mechanisms.
  • FTP file transfer protocol
  • HTTP secure HTTP
  • TCP/IP Transaction Control Protocol/Internet Protocol
  • determining whether operating conditions meet certain criteria comprises detecting whether a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service; determining whether network ping time from the server to the client is over or under certain limits; determining whether average transaction time for a particular type of request for a server is over or under certain limits; or determining whether an average transaction time for a particular type of request for servers communicatively coupled to a particular server are over or under certain limits.
  • determining whether operating conditions meet certain criteria comprises determining whether a server's CPU usage percentage is over or under certain limits, whether the server's memory usage percentage is over or under certain limits, whether the server's network conditions are better or worse than certain predefined thresholds, or whether the number of processes running on the server is over or under certain limits. In a related embodiment, determining whether the server's network conditions are above or below certain thresholds comprises comparing a predefined threshold to either a function of the round trip time for a particular request and the reported transaction time for the particular request or the ping time between a server and a client. In various embodiments, determining whether operating conditions meet certain criteria includes determining when the server will shutdown, have maintenance, perform a backup, or perform any other scheduled event related to the server.
  • determining whether a particular server's operating conditions meet certain criteria comprises determining whether other communicatively coupled servers' operating conditions meet certain criteria.
  • the server determines whether the other communicatively coupled servers' operating conditions meet certain criteria in part by obtaining the servers' operating conditions over a network, FTP, HTTP, HTTPS, TCP/IP sockets, or other appropriate data transport mechanisms.
  • FIG. 2 depicts a flow diagram of an example method for determining when to send a behavior modification hint.
  • a server's operating conditions are monitored.
  • a server monitors its own operating conditions.
  • a process communicatively coupled to a server monitors the server's operating conditions.
  • a first server 110 A monitors its own operating conditions and these operating conditions include one or more of CPU usage percentage, memory usage percentage, network conditions, number of processes running, and knowledge of the server's 110 A maintenance cycles of server 110 A.
  • the server's operating conditions also comprise the operating conditions of servers 110 B and 110 C, which server 110 A obtains using TCP/IP sockets.
  • step 220 includes determining whether the operating conditions of one or more other servers meet certain criteria, where the other servers are communicatively coupled to the first server.
  • step 220 includes determining whether CPU usage is over a certain percentage, whether memory usage is over a certain percentage, whether network ping time is higher than a predefined limit, or whether the number of processes running is over a certain limit. In various embodiments, step 220 includes determining whether server shutdown, server maintenance, server backup or any other scheduled event related to the server could affect the ability to serve clients.
  • a server 110 A determines whether its own operating conditions meet certain criteria, and the operating conditions include one or more of CPU usage percentage, memory usage percentage, network conditions, number of processes running, and knowledge of the maintenance cycles. Determining whether the server's operating conditions meet certain criteria also includes determining whether the operating conditions of servers 110 B and 110 C meet certain criteria. In this example, the server 110 A determines whether servers 110 B or 110 C are in an operating condition suitable for servicing clients.
  • a behavior modification hint is sent to one or more clients at step 230 .
  • a behavior modification hint is any indication by which server suggests to clients that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • the behavior modification hint is sent to a client from a server in a message that is sent in response to a request from the client to the server.
  • sending the behavior modification hint comprises sending a Remote Authentication Dial-In User Service (RADIUS) message containing therein a RADIUS Vendor Specific Attribute (VSA) containing the behavior modification hint.
  • RADIUS Remote Authentication Dial-In User Service
  • VSA Vendor Specific Attribute
  • the behavior modification hint is included as part of a message in Terminal Access Controller Access Control System (TACACS++) or Diameter protocols.
  • TACACS++ Terminal Access Controller Access Control System
  • Diameter protocols the specific mechanism used to send the hint is not critical.
  • determining the one or more clients to which to send the behavior modification hint is based on a predefined list of clients, a network device group, operating conditions for the server relative to each of the one or more clients, or on network conditions.
  • the network conditions comprise ping time from the server to a computer on the network; round trip time of a message sent to a particular client; quality of service guaranteed to one or more clients; or operating conditions of a device on the network used to route messages.
  • the server is one of multiple servers providing a particular service; in this arrangement, the server knows the operating conditions of each of the multiple servers and a suggestion of one or more alternative servers from among the multiple servers is sent along with the behavior modification hint.
  • the suggestion of one or more alternative servers is based on the operating conditions of each server of the multiple servers.
  • the behavior modification hint is sent to one client of the multiple clients a server serves, a proper subset of the multiple clients the server serves, or to all clients the server serves.
  • one or more reason codes are sent with the behavior modification hint. The reason codes indicate a reason why the server is providing a behavior modification hint. These reason codes are determined based on which operating conditions met which criteria. Client-side software or other mechanisms may use the reason codes to determine how to process the behavior modification hint.
  • a server 110 A sends a behavior modification hint to all of its clients in order to inform them that the server's memory usage is over a certain limit, and the behavior modification hint includes a reason code corresponding to the memory usage being over a certain limit.
  • the behavior modification hint also includes a list of alternative servers 110 B and 110 C and their operating conditions.
  • a behavior modification hint is sent to one or more clients in step 230 , or if a server's operating conditions do not meet certain criteria in step 220 , then the server's operating conditions are monitored, step 210 . In one embodiment, the server's performance is continually monitored.
  • FIG. 2 overcome the need for a client to use only a timeout mechanism for failover and allows servers or processes communicatively coupled thereto to indicate to clients or processes communicatively coupled thereto the state of operating conditions for the server, reasons for sending behavior modification hints, and a list of alternative servers to which the clients can failover and eliminate the need for a separate process to perform load balancing. These indications enable a client to make an informed decision about when and to which server to failover. Moreover, various embodiments reduce the network traffic associated with timeout, failover, and reconnection.
  • FIG. 2 depicts a certain flow of events
  • the invention is not limited to these steps or this flow. Additional steps could be performed, steps could be left out, and the steps could be performed in parallel or in a different order.
  • FIG. 3 depicts a flow diagram of an example method for determining appropriate reaction to a behavior modification hint.
  • a behavior modification hint is awaited in step 310 .
  • a client awaits receiving a behavior modification hint as part of a message in any appropriate protocol, such as RADIUS, TACACS+, or Diameter.
  • a client awaits receipt of a behavior modification hint or a process thereto communicatively coupled awaits arrival of a behavior modification hint at the client.
  • a client awaits a behavior modification hint after sending a request for service to a server.
  • the client awaits the behavior modification hint at least in part by investigating the responses sent by the server. For example, in the context of FIG. 1 where the server 110 A is an AAA server, a network device 105 A, an AAA client, awaits receipt of a behavior modification hint by investigating the contents of the Vendor Specific Attributes in RADIUS messages sent in response to the client's request for service.
  • receiving a behavior modification hint includes receiving the behavior modification hint via a network connection from a server or a process communicatively coupled to a server or polling for the behavior modification hint at a known location and downloading the behavior modification hint over an appropriate network connection.
  • receiving the behavior modification hint includes storing the behavior modification hint in a computer readable medium communicatively coupled to a client.
  • the behavior modification hint includes operating conditions.
  • the behavior modification hint contains information regarding whether the server's operating conditions meet certain criteria.
  • accompanying or contained within the behavior modification hint is one or more reason codes corresponding to the reason(s) the behavior modification hint was sent.
  • a network device 105 A receives a behavior modification hint from a server 110 A which contains information about the server's operating condition and suggests alternative servers is stored in a memory communicatively coupled to the client.
  • the decision whether to failover is based on the operating conditions of the server that sent the behavior modification hint, an estimated time that the client would have to wait for service from the server; or the operating conditions of other servers which could provide the same service as the server which sent the behavior modification hint.
  • the operating conditions include any of the operating conditions described above.
  • the estimated time that the client would have to wait for service from the server is based on a function of the operating conditions of the server.
  • the client makes the decision to failover based on an estimate of how long the server would take to service the client and how long each of one or more alternative servers would take to service the client.
  • a network device 105 A determines whether it needs to failover based on the operating conditions of the server 110 A. Specifically, the network device 105 A bases the decision on whether the server's 110 A CPU usage is over a predefined limit and whether the server's 110 A network ping time is over a certain predefined limit.
  • step 340 comprises setting a preferred server setting on a client and the client using the preferred server setting to determine to which server to send the message.
  • step 340 comprises connecting to a server over a network or sending a message to a server.
  • a client chooses the alternative server based on the operating conditions of the server; based on a preconfigured list to which the client has access; or based on a list of one or more suggested alternatives contained in the behavior modification hint in step 310 .
  • a network device 105 A determines that it needs to failover based on the operating conditions of the server 110 A. Then the network device 105 A determines that it will failover to the server 110 B based on the operating conditions of server 110 B and server 110 C.
  • the decision whether to alter a timeout value is based on the operating conditions of the server that sent the behavior modification hint.
  • the decision whether to alter a timeout value is based on the operating conditions of the server to which the client failed over in step 340 .
  • a network device 105 A decides whether to alter a timeout value related to requests to a server 110 A based on whether the server's 110 A CPU usage is over a predefined limit and whether the network ping time is over a certain predefined limit.
  • the network device 105 A increases the timeout value in order to wait a longer, more appropriate amount of time for a response from the server, which is under a heavy processing load, or because of network latency problems as indicated by the high client-server ping time.
  • altering the timeout value at a client includes changing a value stored in a computer readable medium that specifies the timeout values for all servers, changing a value stored in a computer readable medium that specifies the timeout value for the server that sent the behavior modification hint to the client; changing the amount of time that the client will wait for a particular response to a particular query from the server; or changing the amount of time that the client will wait for a particular type of service provided by a particular server.
  • altering the timeout value includes determining a new timeout value based on the operating conditions of the server.
  • determining the new timeout value comprises performing a functional composition on one or more aspects the server's operating condition.
  • a network device 105 A increases a timeout value associated with a particular service provided by a particular server 110 A based on the server's 110 A CPU usage being over a predefined limit and the server's 110 A network ping time being over a certain predefined limit.
  • the new timeout value is based on an estimate of how long the particular server will take to complete the particular service.
  • FIG. 3 enable clients to react to the operating conditions of the servers which serve them.
  • the clients based on these operating conditions and behavior modification hints from the servers, can determine whether it is appropriate to wait longer for a response to a request sent to a server and when they should failover to an alternative server.
  • a client can choose the alternative server intelligently based on the operating conditions of these alternative servers, suggestions by the current server, or predefined lists.
  • various embodiments eliminate the need for a separate load balancing process and reduce the network traffic associated with timeout value, failover, and reconnection.
  • FIG. 3 depicts a certain flow of events
  • the invention is not limited to these steps or this flow. Additional steps could be performed, steps could be left out, and the steps could be performed in parallel or in a different order.
  • AAA load balanced authentication, authorization, and accounting
  • Authentication Validating the claimed identity of an end user or a device, such as a host, server, switch, router, etc.
  • Authorization Granting access rights to a user, groups of users, system, or a process.
  • Accounting Establishing who, or what, performed a certain action, such as tracking user connection and logging system users.
  • a network device 105 A an AAA client, sends an auth-request packet as provided in the RADIUS protocol to a load balanced AAA server 110 A.
  • the AAA server 110 A determines that the operating conditions it has been monitoring (step 210 ) meet certain criteria (step 220 ), which indicate that the server should send a behavior modification hint to the network device 105 A in step 230 .
  • the AAA server 110 A constructs a RADIUS auth-accept message with the behavior modification hint included in a RADIUS Vendor Specific Attribute in a key-value format that the client can parse.
  • the behavior modification hint includes the AAA server's 110 A CPU usage, which is higher than a predefined threshold; the server 110 A to network device 105 A ping time, which is higher than a predefined threshold; a suggestion of an alternative AAA server 110 B; and the alternative server's 110 B CPU usage.
  • This message containing a behavior modification hint is sent to the network device 105 A ( 230 ).
  • the network device 105 A which had been awaiting the reply to a request (step 310 ), receives the RADIUS auth-accept message from the AAA server 110 A (step 320 ).
  • the network device 105 A parses and interprets the behavior modification hint in the Vendor Specific Attribute of the RADIUS auth-accept message and determines, based on the AAA server's 110 A CPU usage and ping time, that the network device 105 A needs to failover to another server (step 330 ).
  • the network device 105 A chooses to failover to AAA server 110 B based on the CPU usage information for AAA server 110 B passed in the behavior modification hint.
  • the network device 105 A fails over to the AAA server 110 B, in part, by sending the server a RADIUS auth-request message (step 340 ).
  • the network device 105 A then increases the timeout value associated with the RADIUS auth-request sent to AAA server 110 B message because the CPU usage of AAA server 110 B being over a certain threshold (step 350 )—that information having been received in the behavior modification hint in step 320 . Subsequently, the network device 105 A awaits a RADIUS auth-accept message and a behavior modification hint (step 310 ) from the AAA server 110 B.
  • FIG. 4 depicts a block diagram of example architectural elements of a load balanced AAA server that performs the foregoing steps.
  • a server has multiple services.
  • the administration service 410 provides a built-in web server for AAA administration of the multiple simultaneous sessions within the server.
  • the authorization service 420 authenticates users, grants or denies service privileges, manages AAA databases, and handles external database authentication forwarding.
  • the database synchronization service 430 manages database synchronization and replication to other AAA servers.
  • the logging service 440 monitors and records user and administrator activities and activities related to backups and restoration, database replication, synchronizations, TACACS+ and RADIUS communication, VoIP activities, and any other service accounting needed.
  • the TACACS+ service 450 and RADIUS service 460 handle communication and parsing of messages passed among devices and services.
  • the monitoring service 470 monitors status of AAA services and server resources, records and reports all critical errors to logs, sends e-mail alerts to administrators noting any potential problems, automatically detects and restarts AAA services, and scrutinizes login frequency of users.
  • the steps of FIG. 2 may be implemented in a behavior modification hint signaler 480 .
  • the foregoing steps are performed by one or more of the services 410 , 420 , 430 , 440 , 450 , 460 , 470 ; are performed entirely by the service 480 ; or are performed by the service, 480 , in combination with the services one or more of the services 410 , 420 , 430 , 440 , 450 , 460 , 470 .
  • the foregoing steps are performed by one or more of the services 410 , 420 , 430 , 440 , 450 , 460 , 470 .
  • a monitoring service 470 provides information regarding the operating conditions of the AAA server 110 A to a behavior modification hint signaler 480 , and when the operating conditions meet certain criteria, the behavior modification hint signaler 480 constructs a behavior modification hint to be sent by the RADIUS service 460 in a VSA to one or more network devices 105 A, 105 B (AAA clients) to indicate that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • a behavior modification hint signaler 480 constructs a behavior modification hint to be sent by the RADIUS service 460 in a VSA to one or more network devices 105 A, 105 B (AAA clients) to indicate that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • the services listed in FIG. 4 do not assume any particular hardware configuration.
  • the services can run as part of a single thread or process, can be separate threads or processes on the same physical computer, or can be running on multiple computers.
  • FIG. 5 is a block diagram that illustrates a computer system upon which an embodiment of the invention may be implemented.
  • Computer system 500 includes a bus 502 or other communication mechanism for communicating information, and a processor 504 coupled with bus 502 for processing information.
  • Computer system 500 also includes a main memory 506 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions to be executed by processor 504 .
  • Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 504 .
  • Computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504 .
  • ROM read only memory
  • a storage device 510 such as a magnetic disk or optical disk, is provided and coupled to bus 502 for storing information and instructions.
  • Computer system 500 may be coupled via bus 502 to a display 512 , such as a cathode ray tube (CRT), for displaying information to a computer user.
  • a display 512 such as a cathode ray tube (CRT)
  • An input device 514 is coupled to bus 502 for communicating information and command selections to processor 504 .
  • cursor control 516 is Another type of user input device
  • cursor control 516 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 504 and for controlling cursor movement on display 512 .
  • This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
  • the invention is related to the use of computer system 500 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506 . Such instructions may be read into main memory 506 from another computer-readable medium, such as storage device 510 . Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
  • Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510 .
  • Volatile media includes dynamic memory, such as main memory 506 .
  • Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 502 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
  • Computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
  • Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 504 for execution.
  • the instructions may initially be carried on a magnetic disk of a remote computer.
  • the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
  • a modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
  • An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 502 .
  • Bus 502 carries the data to main memory 506 , from which processor 504 retrieves and executes the instructions.
  • the instructions received by main memory 506 may optionally be stored on storage device 510 either before or after execution by processor 504 .
  • Computer system 500 also includes a communication interface 518 coupled to bus 502 .
  • Communication interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522 .
  • communication interface 518 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line.
  • ISDN integrated services digital network
  • communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
  • LAN local area network
  • Wireless links may also be implemented.
  • communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
  • Network link 520 typically provides data communication through one or more networks to other data devices.
  • network link 520 may provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526 .
  • ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528 .
  • Internet 528 uses electrical, electromagnetic or optical signals that carry digital data streams.
  • the signals through the various networks and the signals on network link 520 and through communication interface 518 which carry the digital data to and from computer system 500 , are exemplary forms of carrier waves transporting the information.
  • Computer system 500 can send messages and receive data, including program code, through the network(s), network link 520 and communication interface 518 .
  • a server 530 might transmit a requested code for an application program through Internet 528 , ISP 526 , local network 522 and communication interface 518 .
  • the received code may be executed by processor 504 as it is received, and/or stored in storage device 510 , or other non-volatile storage for later execution. In this manner, computer system 500 may obtain application code in the form of a carrier wave.

Abstract

The invention provides techniques for adaptive load balancing. Techniques are provided for monitoring a server's operating conditions; determining, based on the server's operating conditions, when to send a behavior modification hint to one or more clients that are being served by the server; generating the behavior modification hint based on the server's operating conditions; and sending the behavior modification hint to the one or more clients. A client receives the behavior modification hint and, based on the behavior modification hint, alters a timeout value related to the server or alters its preferred server.

Description

    FIELD OF THE INVENTION
  • The present invention relates to load balanced servers in a network. The invention specifically relates to adaptive load balancing.
  • BACKGROUND OF THE INVENTION
  • In a client-server computer system, clients rely on servers to provide needed services. In the simplest form of these systems, a single server serves multiple clients. If this is the case, then any degradation in the quality of service (QoS) provided by the server, or failure of the server, will result in poor or failed service at each of its clients.
  • In many cases, however, this single point of failure is unacceptable. Therefore, systems are often built such that multiple servers are available to service clients, and clients are able to change (“failover”) from one server to another. For example, if a client detects that a server fails to respond, then the client can failover to another server providing the same service.
  • One approach for detecting the need for failover is to use a timeout mechanism configured on the client. In this timeout approach, given a particular request, the client will wait time T for a response from the server and will retry the request R times, again waiting time T for each retry. In a situation where the server cannot respond in time T to the request, either because the server is down (has failed), or the QoS has degraded, then the client waits for a total time of R*T without a response to the request and then fails over to another server.
  • A problem with the timeout approach is that the client wastes the total time to failover of R*T. Another problem with the timeout approach is that failover time is constant for a particular client. In many cases, a server's speed of response is dictated by the server's operating conditions, including network conditions. In the timeout approach, the client's timeout value does not adapt and therefore the client's QoS suffers under changing conditions.
  • A second problem with the timeout approach is that it increases network traffic. Depending on implementation, O(R) messages per client will be passed when failover is needed.
  • Once a server has “timed out” a predefined number of times for a particular client, the client fails over to a second server. This second server is typically chosen from a preconfigured list of alternative servers on the client. A problem with this configured failover approach is that the choice of server to which to failover is based on a fixed list and not on network conditions or the operating conditions of the original server or the servers to which the client could failover.
  • Another approach is to use a load balancer to handle failover. A load balancer routes messages between clients and servers, acting as a single point of contact for multiple clients and allowing those clients to be served by multiple servers. In many cases, a client must be served by the same server for all related messages. In such cases, the load balancer must make client-server relationships “sticky” even when using a stateless protocol such as hypertext transfer protocol (HTTP) that does not inherently support maintaining long-duration connections of clients to servers. A load balancer makes a client-server session sticky by either keeping state for each client session, thereby keeping track of the routing of messages between clients and servers, or otherwise determining, for each message for each client-server relationship, to which client-server relationship that message corresponds.
  • A problem with the load balancer approach is that the implementations of stickiness algorithms are computationally expensive, memory intensive, and difficult to deploy. A related problem with the load balancer approach is that it requires at least one separate process, the load balancer. If a client could failover correctly on its own, then there would be no need for a load balancer and load balanced client-server systems as a whole could be simpler.
  • Another problem with the load balancer approach is that determining the server to which to failover is based on a preconfigured list on the load balancer and not on network conditions or the operating conditions of the original server or the servers to which the client could failover.
  • From the above Background and in the upcoming description it will be clear that there is a need for a system for adaptive load balancing that overcomes the problems of clients failing over to alternative servers without considering the first servers operating conditions, including network conditions, or the other server's operating conditions; and needing a separate process for load balancing.
  • The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
  • FIG. 1 depicts a block diagram of example architectural components and layout of a load balanced system.
  • FIG. 2 depicts a flow diagram of an example method for determining when to send a behavior modification hint.
  • FIG. 3 depicts a flow diagram of an example method for determining appropriate reaction to a behavior modification hint.
  • FIG. 4 depicts a block diagram of example architectural elements of a load balanced authentication, authorization, and accounting (AAA) server that performs the foregoing steps.
  • FIG. 5 is a block diagram that illustrates a computer system upon which an embodiment of the invention may be implemented.
  • DETAILED DESCRIPTION OF THE INVENTION
  • A method and apparatus for adaptive load balancing is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent to one with ordinary skill in the art, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
      • 1.0 GENERAL OVERVIEW
      • 2.0 STRUCTURAL OVERVIEW
      • 3.0 FUNCTIONAL OVERVIEW
        • 3.1 OPERATING CONDITIONS
        • 3.2 DETERMINING WHEN TO SEND A BEHAVIOR MODIFICATION HINT
        • 3.3 REACTING TO A BEHAVIOR MODIFICATION HINT
        • 3.4 AN EXAMPLE EMBODIMENT OF ADAPTIVE LOAD BALANCING FOR AN AAA SERVER
        • 3.5 FUNCTIONAL ARCHITECTURE
      • 4.0 HARDWARE OVERVIEW
      • 5.0 EXTENSIONS AND ALTERNATIVES
    1.0 General Overview
  • The needs identified in the foregoing Background, and other needs and objects that will become apparent for the following description, are achieved in the present invention, which comprises, in one aspect, a method for adaptive load balancing including the steps of monitoring a server's operating conditions; determining, based on the server's operating conditions, when to send a behavior modification hint to one or more clients that are being served by the server; generating the behavior modification hint based on the server's operating conditions; and sending the behavior modification hint to the one or more clients. In a related feature, the server is an AAA server and the one or more clients are AAA clients. In a related feature, the step of sending the behavior modification hint comprises sending a RADIUS message containing the behavior modification hint in a vendor specific attribute within the RADIUS message.
  • In a related feature, the step of sending the behavior modification hint comprises sending a particular message containing the behavior modification hint to a particular client of the one or more clients, where the particular message is a response message to a request message sent by the particular client to the server. In a related feature, the step of monitoring the server's operating conditions comprises monitoring at least one of average transaction request processing time, CPU usage percentage, memory usage percentage, network conditions, and number of processes running.
  • In a related feature, the method further includes the step of determining the one or more clients to which to send the message based on a predefined list of clients. In a related feature, the method further includes the step of determining the one or more clients to which to send the message based on a network device group. In a related feature, the method further includes the step of determining the one or more clients to which to send the message based on operating conditions for the server relative to each of the one or more clients. In a related feature, the server is one of multiple servers providing a particular service; the behavior modification hint comprises a suggestion of one or more alternative servers; and the method further comprises the step of determining the one or more alternative servers based on the set of operating conditions for each server of the multiple servers. In a related feature, the step of determining the one or more alternative servers further comprises the server obtaining the operating conditions of the multiple servers over a network.
  • In a related feature, the step of determining when to send a behavior modification hint is based on network conditions of a network providing communication between the server and the one or more clients, where the network conditions comprise at least one of ping time from the server to a computer on the network; round trip time of a message sent to a particular client; quality of service guaranteed to one or more clients; and operating conditions of a device on the network used to route messages. In a related feature, the step of sending a behavior modification hint further comprises the steps of sending a code to the one or more clients; and generating the code based on why it was determined to send a message to the one or more clients. In a related feature, the step of determining when to send a behavior modification hint is based on a scheduled event related to the server. In a related feature, the scheduled event related to the server is selected from the group consisting of server shutdown, server maintenance, and server backup. In a related feature, the step of determining when to send a behavior modification hint is based on a server detecting that a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service from a particular client.
  • In another aspect, techniques are provided for a method for adaptive load balancing including the steps of receiving a behavior modification hint from a first server providing a first service, where the behavior modification hint comprises the first server's operating conditions; and altering one or more functional aspects of a client based on the behavior modification hint, where the one or more functional aspects of the client comprise at least one of a configured timeout value for the first server for the first service and a preferred server setting for the first service. In a related feature, the step of receiving a behavior modification hint comprises receiving a particular message containing the behavior modification hint from the first server, where the particular message is sent by the first server in response to a request message sent by the client to the first server.
  • In a related feature, the step of altering one or more functional aspects of a client comprises altering the configured timeout value for the first server for the first service. In a related feature, the method further includes the step of generating a new timeout value based on the first server's operating conditions. In a related feature, the behavior modification hint contains a list of one or more alternative servers and the step of altering one or more functional aspects of a client comprises altering the preferred server setting for the first service based on the list of one or more alternative servers. In a related feature, a second server is one of the servers in the list of one or more alternative servers and the method further comprises the step of connecting to the second server. In a related feature, the method further includes the step of generating a new timeout value based on the second server's operating conditions.
  • In a related feature, the step of receiving a behavior modification hint further comprises the steps of receiving a RADIUS message containing the behavior modification hint in a Vendor Specific Attribute (VSA) within the RADIUS message and interpreting the behavior modification hint contained within the RADIUS message.
  • In another aspect, a computer-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform any of the foregoing steps.
  • 2.0 Structural Overview
  • FIG. 1 depicts a block diagram of example architectural components and layout of a load balanced system.
  • One or more supplicants 101A, 101B, 101C are communicatively coupled to network devices 105A, 105B. In one embodiment, communication of supplicants 101A, 101B, 101C with network devices 105A, 105B is over a network 155. In various embodiments, the network 155 is a wireless network, dial up access, the Internet, a local area network (LAN), or any other communication network. In various embodiments, the network device 105A, 105B are wireless access points, virtual private network devices, network access servers, switches, routers, or any other appropriate devices.
  • The network devices 105A, 105B are communicatively coupled to a LAN 150. In various embodiments, the LAN 150 is a wireless network, dial up access, the Internet, or any other appropriate communications network. The network device 105A is also communicatively coupled to a log 135. In various embodiments, the log is a database, a flat file, or any other appropriate storage.
  • One or more servers 110A, 110B, 110C are communicatively coupled to the LAN 150 and to respective logs 136A, 136B, 136C. In various embodiments, the servers are AAA servers, application servers, database servers, or any other servers that can support load balancing. According to one embodiment of the techniques herein described, the servers 110A, 110B, and 110C are AAA servers and the network devices 105A, 105B are AAA clients.
  • Consider this example of a functioning system of FIG. 1. Network device 105A acts as an access regulator for a supplicant 101A, controlling what the supplicant 101A can reach in the rest of the system 100. The network device 105A accounts for all of the activity that passes through it via a log 135. When supplicant 101A requests a service from a server 110A in the system 100, the network device 105A communicates with the servers 110A to forward the request from supplicant 101A through the LAN 150. All activity at the server 110A is accounted for in a log 136A.
  • 3.0 Functional Overview
  • The following functional description assumes no particular hardware, operating system, software system, or other detail of an implementation. Additionally, the flow diagrams presented are examples of possible algorithmic flow and in no way limit the scope of the invention. Embodiments of the invention can be practiced in many ways in many disparate hardware and software environments and using different algorithmic flow.
  • One approach herein uses a preemptive method to indicate to clients that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • 3.1 Operating Conditions
  • As will be described in more detail below, in various embodiments, a server sends a behavior modification hint based on the operating conditions of the server. The operating conditions include any aspect of the server itself or its network environment that can affect the server's ability to serve a client. In one embodiment, a server's operating conditions comprise detecting that a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service. In various embodiments, a server's operating conditions include average transaction time for a particular type of request for the server or average transaction time for a particular type of request for one or more other servers to which the server is communicatively coupled. In various embodiments, a server's operating conditions comprise CPU (central processing unit) usage percentage, memory usage percentage, network conditions, or number of processes running. In related embodiments, network conditions are computed as the round trip time for a particular request less the transaction time for the particular request or network ping time between the client and server.
  • In one embodiment, a server's operating conditions is computed relative to a particular client. For example, in the context of FIG. 1, where the server 110A is an AAA server and the network device 105A is an AAA client, the AAA server 110A determines CPU usage, which is a parameter relative to all clients, and network ping time relative to network device 105A.
  • In various embodiments, a server's operating conditions may include the schedule for server shutdown, server maintenance, server backup or any other scheduled event related to the server. In one embodiment, a server's operating conditions include operating conditions of one or more other servers to which the server is communicatively coupled. In various related embodiments, the server obtains the operating conditions of the one or more other servers over a network, via file transfer protocol (FTP), via HTTP, secure HTTP (HTTPS), TCP/IP (Transaction Control Protocol/Internet Protocol) sockets, or other appropriate data transport mechanisms.
  • Some embodiments described herein determine whether the operating conditions of a server meet certain criteria. In various embodiments, determining whether operating conditions meet certain criteria comprises detecting whether a particular client has sent one or more retry messages, where a retry message is a second or subsequent message corresponding to a particular request for service; determining whether network ping time from the server to the client is over or under certain limits; determining whether average transaction time for a particular type of request for a server is over or under certain limits; or determining whether an average transaction time for a particular type of request for servers communicatively coupled to a particular server are over or under certain limits.
  • In various embodiments, determining whether operating conditions meet certain criteria comprises determining whether a server's CPU usage percentage is over or under certain limits, whether the server's memory usage percentage is over or under certain limits, whether the server's network conditions are better or worse than certain predefined thresholds, or whether the number of processes running on the server is over or under certain limits. In a related embodiment, determining whether the server's network conditions are above or below certain thresholds comprises comparing a predefined threshold to either a function of the round trip time for a particular request and the reported transaction time for the particular request or the ping time between a server and a client. In various embodiments, determining whether operating conditions meet certain criteria includes determining when the server will shutdown, have maintenance, perform a backup, or perform any other scheduled event related to the server.
  • In one embodiment, determining whether a particular server's operating conditions meet certain criteria comprises determining whether other communicatively coupled servers' operating conditions meet certain criteria. In various related embodiments, the server determines whether the other communicatively coupled servers' operating conditions meet certain criteria in part by obtaining the servers' operating conditions over a network, FTP, HTTP, HTTPS, TCP/IP sockets, or other appropriate data transport mechanisms.
  • 3.2 Determining When to Send a Behavior Modification Hint
  • FIG. 2 depicts a flow diagram of an example method for determining when to send a behavior modification hint.
  • In step 210, a server's operating conditions are monitored. In one embodiment, a server monitors its own operating conditions. Alternatively, a process communicatively coupled to a server monitors the server's operating conditions.
  • In the context of FIG. 1, for example, a first server 110A monitors its own operating conditions and these operating conditions include one or more of CPU usage percentage, memory usage percentage, network conditions, number of processes running, and knowledge of the server's 110A maintenance cycles of server 110A. The server's operating conditions also comprise the operating conditions of servers 110B and 110C, which server 110A obtains using TCP/IP sockets.
  • Whether the operating conditions meet certain criteria is tested in step 220. In one embodiment, step 220 includes determining whether the operating conditions of one or more other servers meet certain criteria, where the other servers are communicatively coupled to the first server.
  • In various embodiments, step 220 includes determining whether CPU usage is over a certain percentage, whether memory usage is over a certain percentage, whether network ping time is higher than a predefined limit, or whether the number of processes running is over a certain limit. In various embodiments, step 220 includes determining whether server shutdown, server maintenance, server backup or any other scheduled event related to the server could affect the ability to serve clients.
  • In the context of FIG. 1, for example, a server 110A determines whether its own operating conditions meet certain criteria, and the operating conditions include one or more of CPU usage percentage, memory usage percentage, network conditions, number of processes running, and knowledge of the maintenance cycles. Determining whether the server's operating conditions meet certain criteria also includes determining whether the operating conditions of servers 110B and 110C meet certain criteria. In this example, the server 110A determines whether servers 110B or 110C are in an operating condition suitable for servicing clients.
  • If a server's operating conditions meet certain criteria, then a behavior modification hint is sent to one or more clients at step 230. In this context, a behavior modification hint is any indication by which server suggests to clients that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers. In one embodiment, the behavior modification hint is sent to a client from a server in a message that is sent in response to a request from the client to the server.
  • In one embodiment, in which server 110A is a AAA server, sending the behavior modification hint comprises sending a Remote Authentication Dial-In User Service (RADIUS) message containing therein a RADIUS Vendor Specific Attribute (VSA) containing the behavior modification hint. In various embodiments, the behavior modification hint is included as part of a message in Terminal Access Controller Access Control System (TACACS++) or Diameter protocols. However, the specific mechanism used to send the hint is not critical.
  • In various embodiments, determining the one or more clients to which to send the behavior modification hint is based on a predefined list of clients, a network device group, operating conditions for the server relative to each of the one or more clients, or on network conditions. In related embodiments, the network conditions comprise ping time from the server to a computer on the network; round trip time of a message sent to a particular client; quality of service guaranteed to one or more clients; or operating conditions of a device on the network used to route messages.
  • In one embodiment, the server is one of multiple servers providing a particular service; in this arrangement, the server knows the operating conditions of each of the multiple servers and a suggestion of one or more alternative servers from among the multiple servers is sent along with the behavior modification hint. In a related embodiment, the suggestion of one or more alternative servers is based on the operating conditions of each server of the multiple servers. In various embodiments, the behavior modification hint is sent to one client of the multiple clients a server serves, a proper subset of the multiple clients the server serves, or to all clients the server serves. In one embodiment, one or more reason codes are sent with the behavior modification hint. The reason codes indicate a reason why the server is providing a behavior modification hint. These reason codes are determined based on which operating conditions met which criteria. Client-side software or other mechanisms may use the reason codes to determine how to process the behavior modification hint.
  • In the context of FIG. 1, for example, a server 110A sends a behavior modification hint to all of its clients in order to inform them that the server's memory usage is over a certain limit, and the behavior modification hint includes a reason code corresponding to the memory usage being over a certain limit. The behavior modification hint also includes a list of alternative servers 110B and 110C and their operating conditions.
  • After a behavior modification hint is sent to one or more clients in step 230, or if a server's operating conditions do not meet certain criteria in step 220, then the server's operating conditions are monitored, step 210. In one embodiment, the server's performance is continually monitored.
  • Various embodiments of FIG. 2 overcome the need for a client to use only a timeout mechanism for failover and allows servers or processes communicatively coupled thereto to indicate to clients or processes communicatively coupled thereto the state of operating conditions for the server, reasons for sending behavior modification hints, and a list of alternative servers to which the clients can failover and eliminate the need for a separate process to perform load balancing. These indications enable a client to make an informed decision about when and to which server to failover. Moreover, various embodiments reduce the network traffic associated with timeout, failover, and reconnection.
  • Whereas FIG. 2 depicts a certain flow of events, the invention is not limited to these steps or this flow. Additional steps could be performed, steps could be left out, and the steps could be performed in parallel or in a different order.
  • 3.3 Reacting to a Behavior Modification Hint
  • FIG. 3 depicts a flow diagram of an example method for determining appropriate reaction to a behavior modification hint.
  • A behavior modification hint is awaited in step 310. In various embodiments, a client awaits receiving a behavior modification hint as part of a message in any appropriate protocol, such as RADIUS, TACACS+, or Diameter. In various embodiments, a client awaits receipt of a behavior modification hint or a process thereto communicatively coupled awaits arrival of a behavior modification hint at the client. In one embodiment, a client awaits a behavior modification hint after sending a request for service to a server. In a related embodiment, the client awaits the behavior modification hint at least in part by investigating the responses sent by the server. For example, in the context of FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, awaits receipt of a behavior modification hint by investigating the contents of the Vendor Specific Attributes in RADIUS messages sent in response to the client's request for service.
  • Once the behavior modification hint has arrived, it is received, step 320. In various embodiments, receiving a behavior modification hint includes receiving the behavior modification hint via a network connection from a server or a process communicatively coupled to a server or polling for the behavior modification hint at a known location and downloading the behavior modification hint over an appropriate network connection. In one embodiment, receiving the behavior modification hint includes storing the behavior modification hint in a computer readable medium communicatively coupled to a client.
  • In one embodiment, the behavior modification hint includes operating conditions. In related embodiments, the behavior modification hint contains information regarding whether the server's operating conditions meet certain criteria. In various embodiments, accompanying or contained within the behavior modification hint is one or more reason codes corresponding to the reason(s) the behavior modification hint was sent.
  • For example, in the context of FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, receives a behavior modification hint from a server 110A which contains information about the server's operating condition and suggests alternative servers is stored in a memory communicatively coupled to the client.
  • Once the behavior modification hint is received in step 320, then a check is made to determine whether the client needs to failover to another server, step 330. In various embodiments, the decision whether to failover is based on the operating conditions of the server that sent the behavior modification hint, an estimated time that the client would have to wait for service from the server; or the operating conditions of other servers which could provide the same service as the server which sent the behavior modification hint. In related embodiments, the operating conditions include any of the operating conditions described above. In a related embodiment, the estimated time that the client would have to wait for service from the server is based on a function of the operating conditions of the server. In one embodiment, the client makes the decision to failover based on an estimate of how long the server would take to service the client and how long each of one or more alternative servers would take to service the client.
  • For example, in the context of FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, determines whether it needs to failover based on the operating conditions of the server 110A. Specifically, the network device 105A bases the decision on whether the server's 110A CPU usage is over a predefined limit and whether the server's 110A network ping time is over a certain predefined limit.
  • If it is determined to failover to another server in step 330, then a connection is established to an alternative server in step 340. In one embodiment, step 340 comprises setting a preferred server setting on a client and the client using the preferred server setting to determine to which server to send the message. In various embodiments, step 340 comprises connecting to a server over a network or sending a message to a server. In various embodiments, a client chooses the alternative server based on the operating conditions of the server; based on a preconfigured list to which the client has access; or based on a list of one or more suggested alternatives contained in the behavior modification hint in step 310.
  • For example, in the context of FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, which received a behavior modification hint from server 110A containing operating conditions of servers 110A, 110B, 110C in step 320, determines that it needs to failover based on the operating conditions of the server 110A. Then the network device 105A determines that it will failover to the server 110B based on the operating conditions of server 110B and server 110C.
  • After the client has failed over in step 340, or if no failover is needed in step 330, a decision is made whether to alter a timeout value on a client, step 350. In one embodiment, the decision whether to alter a timeout value is based on the operating conditions of the server that sent the behavior modification hint. In another embodiment, the decision whether to alter a timeout value is based on the operating conditions of the server to which the client failed over in step 340.
  • For example, in the context of FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, decides whether to alter a timeout value related to requests to a server 110A based on whether the server's 110A CPU usage is over a predefined limit and whether the network ping time is over a certain predefined limit. The network device 105A increases the timeout value in order to wait a longer, more appropriate amount of time for a response from the server, which is under a heavy processing load, or because of network latency problems as indicated by the high client-server ping time.
  • If there is a need to alter the timeout value, then the timeout value is altered at a client in step 360. In various embodiments, altering the timeout value at a client includes changing a value stored in a computer readable medium that specifies the timeout values for all servers, changing a value stored in a computer readable medium that specifies the timeout value for the server that sent the behavior modification hint to the client; changing the amount of time that the client will wait for a particular response to a particular query from the server; or changing the amount of time that the client will wait for a particular type of service provided by a particular server. In one embodiment, altering the timeout value includes determining a new timeout value based on the operating conditions of the server. In related embodiments, determining the new timeout value comprises performing a functional composition on one or more aspects the server's operating condition.
  • For example, in the context FIG. 1 where the server 110A is an AAA server, a network device 105A, an AAA client, increases a timeout value associated with a particular service provided by a particular server 110A based on the server's 110A CPU usage being over a predefined limit and the server's 110A network ping time being over a certain predefined limit. The new timeout value is based on an estimate of how long the particular server will take to complete the particular service.
  • Various embodiments of FIG. 3 enable clients to react to the operating conditions of the servers which serve them. The clients, based on these operating conditions and behavior modification hints from the servers, can determine whether it is appropriate to wait longer for a response to a request sent to a server and when they should failover to an alternative server. Moreover, a client can choose the alternative server intelligently based on the operating conditions of these alternative servers, suggestions by the current server, or predefined lists. Moreover, various embodiments eliminate the need for a separate load balancing process and reduce the network traffic associated with timeout value, failover, and reconnection.
  • Whereas FIG. 3 depicts a certain flow of events, the invention is not limited to these steps or this flow. Additional steps could be performed, steps could be left out, and the steps could be performed in parallel or in a different order.
  • 3.4 An Example Embodiment of Adaptive Load Balancing for an AAA Server
  • An example system with load balanced authentication, authorization, and accounting (AAA) servers according to one embodiment of the techniques described herein and clients is described for purposes of illustrating a clear example, but other embodiments, some of which are described above, are possible. AAA servers provide the following services to clients in that environment:
  • Authentication: Validating the claimed identity of an end user or a device, such as a host, server, switch, router, etc.
  • Authorization: Granting access rights to a user, groups of users, system, or a process.
  • Accounting: Establishing who, or what, performed a certain action, such as tracking user connection and logging system users.
  • A network device 105A, an AAA client, sends an auth-request packet as provided in the RADIUS protocol to a load balanced AAA server 110A. Upon receipt of this request the AAA server 110A determines that the operating conditions it has been monitoring (step 210) meet certain criteria (step 220), which indicate that the server should send a behavior modification hint to the network device 105A in step 230. The AAA server 110A constructs a RADIUS auth-accept message with the behavior modification hint included in a RADIUS Vendor Specific Attribute in a key-value format that the client can parse. The behavior modification hint includes the AAA server's 110A CPU usage, which is higher than a predefined threshold; the server 110A to network device 105A ping time, which is higher than a predefined threshold; a suggestion of an alternative AAA server 110B; and the alternative server's 110B CPU usage. This message containing a behavior modification hint is sent to the network device 105A (230).
  • The network device 105A, which had been awaiting the reply to a request (step 310), receives the RADIUS auth-accept message from the AAA server 110A (step 320). The network device 105A parses and interprets the behavior modification hint in the Vendor Specific Attribute of the RADIUS auth-accept message and determines, based on the AAA server's 110A CPU usage and ping time, that the network device 105A needs to failover to another server (step 330). The network device 105A chooses to failover to AAA server 110B based on the CPU usage information for AAA server 110B passed in the behavior modification hint. The network device 105A fails over to the AAA server 110B, in part, by sending the server a RADIUS auth-request message (step 340).
  • The network device 105A then increases the timeout value associated with the RADIUS auth-request sent to AAA server 110B message because the CPU usage of AAA server 110B being over a certain threshold (step 350)—that information having been received in the behavior modification hint in step 320. Subsequently, the network device 105A awaits a RADIUS auth-accept message and a behavior modification hint (step 310) from the AAA server 110B.
  • 3.5 Functional Architecture
  • FIG. 4 depicts a block diagram of example architectural elements of a load balanced AAA server that performs the foregoing steps.
  • In various embodiments, a server has multiple services. The administration service 410 provides a built-in web server for AAA administration of the multiple simultaneous sessions within the server. The authorization service 420 authenticates users, grants or denies service privileges, manages AAA databases, and handles external database authentication forwarding. The database synchronization service 430 manages database synchronization and replication to other AAA servers. The logging service 440 monitors and records user and administrator activities and activities related to backups and restoration, database replication, synchronizations, TACACS+ and RADIUS communication, VoIP activities, and any other service accounting needed. The TACACS+ service 450 and RADIUS service 460 handle communication and parsing of messages passed among devices and services. The monitoring service 470, monitors status of AAA services and server resources, records and reports all critical errors to logs, sends e-mail alerts to administrators noting any potential problems, automatically detects and restarts AAA services, and scrutinizes login frequency of users.
  • The steps of FIG. 2 may be implemented in a behavior modification hint signaler 480. In various embodiments, the foregoing steps are performed by one or more of the services 410, 420, 430, 440, 450, 460, 470; are performed entirely by the service 480; or are performed by the service, 480, in combination with the services one or more of the services 410, 420, 430, 440, 450, 460, 470. For example, in the context of FIG. 1 where the server 110A is an AAA server, as part of the AAA server 110A, a monitoring service 470 provides information regarding the operating conditions of the AAA server 110A to a behavior modification hint signaler 480, and when the operating conditions meet certain criteria, the behavior modification hint signaler 480 constructs a behavior modification hint to be sent by the RADIUS service 460 in a VSA to one or more network devices 105A, 105B (AAA clients) to indicate that services from the server are going to degrade or fail and that the clients should alter their expectations of that server or failover to alternative servers.
  • The services listed in FIG. 4 do not assume any particular hardware configuration. The services can run as part of a single thread or process, can be separate threads or processes on the same physical computer, or can be running on multiple computers.
  • 4.0 Hardware Overview
  • FIG. 5 is a block diagram that illustrates a computer system upon which an embodiment of the invention may be implemented. Computer system 500 includes a bus 502 or other communication mechanism for communicating information, and a processor 504 coupled with bus 502 for processing information. Computer system 500 also includes a main memory 506, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 504. Computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504. A storage device 510, such as a magnetic disk or optical disk, is provided and coupled to bus 502 for storing information and instructions.
  • Computer system 500 may be coupled via bus 502 to a display 512, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 514, including alphanumeric and other keys, is coupled to bus 502 for communicating information and command selections to processor 504. Another type of user input device is cursor control 516, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 504 and for controlling cursor movement on display 512. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
  • The invention is related to the use of computer system 500 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another computer-readable medium, such as storage device 510. Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
  • The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 504 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 502. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
  • Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
  • Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 504 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 502. Bus 502 carries the data to main memory 506, from which processor 504 retrieves and executes the instructions. The instructions received by main memory 506 may optionally be stored on storage device 510 either before or after execution by processor 504.
  • Computer system 500 also includes a communication interface 518 coupled to bus 502. Communication interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522. For example, communication interface 518 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
  • Network link 520 typically provides data communication through one or more networks to other data devices. For example, network link 520 may provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526. ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528. Local network 522 and Internet 528 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 520 and through communication interface 518, which carry the digital data to and from computer system 500, are exemplary forms of carrier waves transporting the information.
  • Computer system 500 can send messages and receive data, including program code, through the network(s), network link 520 and communication interface 518. In the Internet example, a server 530 might transmit a requested code for an application program through Internet 528, ISP 526, local network 522 and communication interface 518.
  • The received code may be executed by processor 504 as it is received, and/or stored in storage device 510, or other non-volatile storage for later execution. In this manner, computer system 500 may obtain application code in the form of a carrier wave.
  • 5.0 Extensions and Alternatives
  • In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (29)

1. A method for adaptive load balancing comprising the steps of:
monitoring operating conditions of a server;
determining, based on the operating conditions, whether to send a behavior modification hint to one or more clients that are served by the server;
generating the behavior modification hint based on the operating conditions; and
sending the behavior modification hint to the one or more clients.
2. The method of claim 1, wherein the server is an AAA server and the one or more clients are AAA clients.
3. The method of claim 2, wherein the step of sending the behavior modification hint comprises sending a RADIUS message containing the behavior modification hint in a vendor specific attribute within the RADIUS message.
4. The method of claim 1, wherein the step of sending the behavior modification hint comprises sending a particular message containing the behavior modification hint to a particular client of the one or more clients, where the particular message is a response message to a request message sent by the particular client to the server.
5. The method of claim 1, wherein the step of monitoring the server's operating conditions comprises monitoring at least one of CPU usage percentage, memory usage percentage, network conditions, and number of processes running.
6. The method of claim 1, further comprising the step of determining the one or more clients to which to send the behavior modification hint based on a predefined list of clients.
7. The method of claim 1, further comprising the step of determining the one or more clients to which to send the behavior modification hint based on a network device group.
8. The method of claim 1, further comprising the step of determining the one or more clients to which to send the behavior modification hint based on operating conditions for the server relative to each of the one or more clients.
9. The method of claim 1, wherein the server is one of multiple servers providing a particular service; the behavior modification hint comprises a suggestion of one or more alternative servers; and the method further comprises the step of determining the one or more alternative servers based on operating conditions for each server of the one or more alternative servers.
10. The method of claim 9, wherein the step of determining the one or more alternative servers further comprises the server obtaining the operating conditions of the one or more alternative servers over a network.
11. The method of claim 1, wherein the step of determining when to send a behavior modification hint is based on network conditions of one or more networks providing communication between the server and the one or more clients, wherein the network conditions comprise at least one of:
a ping time from the server to a computer on the one or more networks;
a round trip time of a message sent to a particular client;
a quality of service guaranteed to one or more clients; and
operating conditions of a device on the one or more networks used to route messages.
12. The method of claim 1, wherein the step of sending a behavior modification hint further comprises the steps of:
sending a code to the one or more clients; and
generating the code based on why it was determined to send a message to the one or more clients.
13. The method of claim 1, wherein the step of determining when to send a behavior modification hint is based on a scheduled event related to the server.
14. The method of claim 13, wherein the scheduled event related to the server is selected from a group consisting of server shutdown, server maintenance, and server backup.
15. The method of claim 1, wherein the step of determining when to send a behavior modification hint is based on a server detecting that a particular client has sent one or more retry messages, wherein a retry message is a second or subsequent message corresponding to a particular request for service from the particular client.
16. A method for adaptive load balancing comprising the steps of:
receiving a behavior modification hint from a first server providing a first service, wherein the behavior modification hint comprises the first server's operating conditions; and
altering one or more functional aspects of a client based on the behavior modification hint, wherein the one or more functional aspects of the client comprise at least one of:
a configured timeout value for the first server for the first service and
a preferred server setting for the first service.
17. The method of claim 16, wherein the step of receiving a behavior modification hint comprises receiving a particular message containing the behavior modification hint from the first server, where the particular message is sent by the first server in response to a request message sent by the client to the first server.
18. The method of claim 16, wherein the step of altering one or more functional aspects of a client comprises altering the configured timeout value for the first server for the first service.
19. The method of claim 18, further comprising the step of generating a new timeout value based on the first server's operating conditions.
20. The method of claim 16, wherein the behavior modification hint contains a list of one or more alternative servers and the step of altering one or more functional aspects of a client comprises altering the preferred server setting for the first service based on the list of one or more alternative servers.
21. The method of claim 20, wherein a second server is one of the servers in the list of one or more alternative servers and the method further comprises the step of connecting to the second server.
22. The method of claim 21, further comprising the step of generating a new timeout value based on the second server's operating conditions.
23. The method of claim 16, wherein the step of receiving a behavior modification hint further comprises the steps of:
receiving a RADIUS message containing the behavior modification hint in a vendor specific attribute within the RADIUS message; and
interpreting the behavior modification hint contained within the RADIUS message.
24. A computer-readable medium carrying one or more sequences of instructions for adaptive load balancing, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
monitoring operating conditions of a server;
determining, based on the operating conditions, whether to send a behavior modification hint to one or more clients that are served by the server;
generating the behavior modification hint based on the operating conditions; and
sending the behavior modification hint to the one or more clients.
25. An apparatus for adaptive load balancing, comprising:
means for monitoring operating conditions of a server;
means for determining, based on the operating conditions, whether to send a behavior modification hint to one or more clients that are served by the server;
means for generating the behavior modification hint based on the operating conditions; and
means for sending the behavior modification hint to the one or more clients.
26. An apparatus for adaptive load balancing, comprising:
a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:
monitoring operating conditions of a server;
determining, based on the operating conditions, whether to send a behavior modification hint to one or more clients that are served by the server;
generating the behavior modification hint based on the operating conditions; and
sending the behavior modification hint to the one or more clients.
27. A computer-readable medium carrying one or more sequences of instructions for adaptive load balancing, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
receiving a behavior modification hint from a first server providing a first service, wherein the behavior modification hint comprises the first server's operating conditions; and
altering one or more functional aspects of a client based on the behavior modification hint, wherein the one or more functional aspects of the client comprise at least one of a configured timeout value for the first server for the first service and a preferred server setting for the first service.
28. An apparatus for adaptive load balancing, comprising:
means for receiving a behavior modification hint from a first server providing a first service, wherein the behavior modification hint comprises the first server's operating conditions; and
means for altering one or more functional aspects of a client based on the behavior modification hint, wherein the one or more functional aspects of the client comprise at least one of a configured timeout value for the first server for the first service and a preferred server setting for the first service.
29. An apparatus for adaptive load balancing, comprising:
a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:
receiving a behavior modification hint from a first server providing a first service, wherein the behavior modification hint comprises the first server's operating conditions; and
altering one or more functional aspects of a client based on the behavior modification hint, wherein the one or more functional aspects of the client comprise at least one of a configured timeout value for the first server for the first service and a preferred server setting for the first service.
US10/712,130 2003-11-12 2003-11-12 System and methodology for adaptive load balancing with behavior modification hints Active 2026-01-28 US7421695B2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US10/712,130 US7421695B2 (en) 2003-11-12 2003-11-12 System and methodology for adaptive load balancing with behavior modification hints
CA002543175A CA2543175C (en) 2003-11-12 2004-11-04 Adaptive load balancing
PCT/US2004/037072 WO2005050356A2 (en) 2003-11-12 2004-11-04 Adaptive load balancing
EP04819058.1A EP1682994B1 (en) 2003-11-12 2004-11-04 Adaptive load balancing
US12/194,434 US7752630B2 (en) 2003-11-12 2008-08-19 System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/712,130 US7421695B2 (en) 2003-11-12 2003-11-12 System and methodology for adaptive load balancing with behavior modification hints

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/194,434 Continuation US7752630B2 (en) 2003-11-12 2008-08-19 System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server

Publications (2)

Publication Number Publication Date
US20050102393A1 true US20050102393A1 (en) 2005-05-12
US7421695B2 US7421695B2 (en) 2008-09-02

Family

ID=34552643

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/712,130 Active 2026-01-28 US7421695B2 (en) 2003-11-12 2003-11-12 System and methodology for adaptive load balancing with behavior modification hints
US12/194,434 Expired - Fee Related US7752630B2 (en) 2003-11-12 2008-08-19 System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/194,434 Expired - Fee Related US7752630B2 (en) 2003-11-12 2008-08-19 System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server

Country Status (4)

Country Link
US (2) US7421695B2 (en)
EP (1) EP1682994B1 (en)
CA (1) CA2543175C (en)
WO (1) WO2005050356A2 (en)

Cited By (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050135255A1 (en) * 2003-12-19 2005-06-23 International Business Machines Corporation System and method for re-routing messaging traffic to external resources
US20050267980A1 (en) * 2004-04-21 2005-12-01 Warren Joseph R Regulating client requests in an electronic messaging environment
US20060026250A1 (en) * 2004-07-30 2006-02-02 Ntt Docomo, Inc. Communication system
US20060123467A1 (en) * 2004-12-06 2006-06-08 Sandeep Kumar Performing message payload processing functions in a network element on behalf of an application
US20060123479A1 (en) * 2004-12-07 2006-06-08 Sandeep Kumar Network and application attack protection based on application layer message inspection
US20060129650A1 (en) * 2004-12-10 2006-06-15 Ricky Ho Guaranteed delivery of application layer messages by a network element
US20060129689A1 (en) * 2004-12-10 2006-06-15 Ricky Ho Reducing the sizes of application layer messages in a network element
US20060146879A1 (en) * 2005-01-05 2006-07-06 Tefcros Anthias Interpreting an application message at a network element using sampling and heuristics
US20060155862A1 (en) * 2005-01-06 2006-07-13 Hari Kathi Data traffic load balancing based on application layer messages
US20060168334A1 (en) * 2005-01-25 2006-07-27 Sunil Potti Application layer message-based server failover management by a network element
US20060167730A1 (en) * 2004-12-22 2006-07-27 Calderone Anthony B System and methods for workflow management
US20060167975A1 (en) * 2004-11-23 2006-07-27 Chan Alex Y Caching content and state data at a network element
US20060288404A1 (en) * 2005-06-21 2006-12-21 Mayilraj Kirshnan Controlling computer program extensions in a network device
US20070056029A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for providing security and monitoring in a networking architecture
US20070056030A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for facilitating network security with granular traffic modifications
US20070056028A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for selective mirroring
US20070058540A1 (en) * 2005-08-19 2007-03-15 Rony Kay Apparatus and method for facilitating network security
US20070094651A1 (en) * 2005-10-20 2007-04-26 Microsoft Corporation Load balancing
US20080025230A1 (en) * 2006-07-27 2008-01-31 Alpesh Patel Applying quality of service to application messages in network elements based on roles and status
US20080028409A1 (en) * 2006-07-25 2008-01-31 Ludmila Cherkasova System and method for determining allocation of resource access demands to different classes of service based at least in part on permitted degraded performance
US20090089418A1 (en) * 2007-10-01 2009-04-02 Ebay Inc. Method and system to detect a network deficiency
WO2009059456A1 (en) * 2007-11-06 2009-05-14 Lucent Technologies Inc. Method for controlling load balance of network system, client, server and network system
US20100008359A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization
US20100011101A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for biased and weighted sampling of network traffic to facilitate network monitoring
US20100011434A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for associating categorization information with network traffic to facilitate application level processing
US7787497B1 (en) * 2003-03-03 2010-08-31 Cisco Technology, Inc. System for grouping attributes in packets in a radius protocol
US7953870B1 (en) * 2009-12-09 2011-05-31 Sprint Communications Company L.P. Dynamic HTTP service timeout adjustment
CN102111899A (en) * 2011-03-08 2011-06-29 中兴通讯股份有限公司 Session keep-alive method and device
US8060623B2 (en) 2004-05-13 2011-11-15 Cisco Technology, Inc. Automated configuration of network device ports
EP2434704A1 (en) * 2007-09-26 2012-03-28 Huawei Technologies Co., Ltd. Method and system for choosing backup resources
US20120124431A1 (en) * 2010-11-17 2012-05-17 Alcatel-Lucent Usa Inc. Method and system for client recovery strategy in a redundant server configuration
CN102932266A (en) * 2012-11-20 2013-02-13 无锡城市云计算中心有限公司 Method and device for controlling traffic distribution of server
US20130148531A1 (en) * 2004-12-28 2013-06-13 At&T Intellectual Property I, L.P. Methods and apparatus for collecting, analyzing, and presenting data in a communication network
US20130238785A1 (en) * 2012-03-06 2013-09-12 Rackspace Us, Inc. System and Method for Metadata Discovery and Metadata-Aware Scheduling
US20130275540A1 (en) * 2010-12-23 2013-10-17 Nederlandse Organisatie Voor Toegepast- Natuurwetenschappelijk Onderzoek Tno Method, Device, System and Network Architecture for Handling a Service Request
US20130294283A1 (en) * 2010-12-03 2013-11-07 Nokia Corporation Facilitating device-to-device communication
US20130304903A1 (en) * 2012-05-09 2013-11-14 Rackspace Us, Inc. Market-Based Virtual Machine Allocation
US8843598B2 (en) 2005-08-01 2014-09-23 Cisco Technology, Inc. Network based device for providing RFID middleware functionality
EP2827561A1 (en) * 2013-07-18 2015-01-21 Synchronoss Technologies, Inc. Server controlled adaptive back off for overload protection using internal error counts
US8949658B1 (en) * 2012-03-02 2015-02-03 Amazon Technologies, Inc. Load balancer host selection and fault detection
CN104518985A (en) * 2013-09-27 2015-04-15 国家广播电影电视总局广播科学研究院 Method and terminal for selecting service node in distributed network environment
US9058367B2 (en) * 2012-08-20 2015-06-16 Sears Brands, L.L.C. Methods and systems for staging and propagating data
US20150180702A1 (en) * 2013-12-19 2015-06-25 Jvl Ventures, Llc Systems, methods, and computer program products for service processing
US20150271102A1 (en) * 2014-03-21 2015-09-24 Juniper Networks, Inc. Selectable service node resources
US9185008B1 (en) * 2013-03-14 2015-11-10 Amazon Technologies, Inc. Operational reporting in a computing environment
US9292060B1 (en) * 2012-06-28 2016-03-22 Amazon Technologies, Inc. Allowing clients to limited control on power consumed by the cloud while executing the client's tasks
US9348391B1 (en) * 2012-06-28 2016-05-24 Amazon Technologies, Inc. Managing resource power states in shared environments
US20160359808A1 (en) * 2011-02-16 2016-12-08 Fortinet, Inc. Load balancing among a cluster of firewall security devices
US9547353B1 (en) 2012-09-19 2017-01-17 Amazon Technologies, Inc. Processor energy monitoring and dynamic adjustment
WO2018164610A1 (en) * 2017-03-06 2018-09-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and control node for managing cloud resources in a communications network
US10404791B2 (en) 2015-12-04 2019-09-03 Microsoft Technology Licensing, Llc State-aware load balancing of application servers
US20210410038A1 (en) * 2020-06-30 2021-12-30 Uber Technologies, Inc. Automatic failover handling minimization in wireless network environment
US11546337B2 (en) * 2009-02-17 2023-01-03 Netapp, Inc. Servicing of network software components of nodes of a cluster storage system
US20230090032A1 (en) * 2021-09-22 2023-03-23 Hitachi, Ltd. Storage system and control method

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421695B2 (en) * 2003-11-12 2008-09-02 Cisco Tech Inc System and methodology for adaptive load balancing with behavior modification hints
US7730489B1 (en) * 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7493394B2 (en) * 2003-12-31 2009-02-17 Cisco Technology, Inc. Dynamic timeout in a client-server system
EP1626339B1 (en) * 2004-08-13 2016-02-24 Sap Se Data processing system and method for assigning objects to processing units
TWI283816B (en) * 2004-12-31 2007-07-11 Infopower Corp System and method of automatic transforming instant message transmission modes on Internet
US7831686B1 (en) * 2006-03-31 2010-11-09 Symantec Operating Corporation System and method for rapidly ending communication protocol connections in response to node failure
US7797565B1 (en) 2006-04-04 2010-09-14 Symantec Operating Corporation System and method for maintaining communication protocol connections during failover
US8576712B2 (en) 2006-05-31 2013-11-05 At&T Intellectual Property Ii, L.P. Method and apparatus for providing a reliable voice extensible markup language service
US8549137B2 (en) * 2006-06-05 2013-10-01 Nec Corporation Monitoring device, monitoring system, monitoring method, and program
US7860973B2 (en) * 2008-06-27 2010-12-28 Microsoft Corporation Data center scheduler
JP5463738B2 (en) * 2008-09-22 2014-04-09 沖電気工業株式会社 Wireless communication system, access point, controller, network management apparatus, and access point network identifier setting method
US8301735B1 (en) * 2009-10-02 2012-10-30 Cellco Partnership Variable AAA load distribution for PDSN
EP2395710B1 (en) * 2010-06-08 2013-11-06 Alcatel Lucent Device and method for data load balancing
US9137331B2 (en) * 2011-07-15 2015-09-15 Metalogix International Gmbh Adaptive replication
US9450875B1 (en) * 2011-09-23 2016-09-20 Google Inc. Cooperative fault tolerance and load balancing
US9443273B2 (en) * 2012-11-19 2016-09-13 Facebook, Inc. Authenticating a persona in a social networking system
US9197549B2 (en) 2013-01-23 2015-11-24 Cisco Technology, Inc. Server load balancer traffic steering
JP5944537B2 (en) * 2013-01-31 2016-07-05 株式会社日立製作所 Communication path management method
US9471594B1 (en) * 2013-09-30 2016-10-18 Emc Corporation Defect remediation within a system
CN109714190A (en) * 2018-11-28 2019-05-03 四川商通实业有限公司 A kind of load balancing based on application level and failure transfer system and its method

Citations (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4621359A (en) * 1984-10-18 1986-11-04 Hughes Aircraft Company Load balancing for packet switching nodes
US5155851A (en) * 1989-05-15 1992-10-13 Bell Communications Research, Inc. Routing an incoming data stream to parallel processing stations
US5239649A (en) * 1989-10-30 1993-08-24 International Business Machines Corporation Channel path load balancing, through selection of storage volumes to be processed, for long running applications
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
US5404515A (en) * 1992-04-30 1995-04-04 Bull Hn Information Systems Inc. Balancing of communications transport connections over multiple central processing units
US5444848A (en) * 1992-04-30 1995-08-22 Bull Hn Information Systems Inc. Distribution of communications connections over multiple service access points by choosing remote and local access points having lowest number of connections
US5537542A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Apparatus and method for managing a server workload according to client performance goals in a client/server data processing system
US5544327A (en) * 1994-03-01 1996-08-06 International Business Machines Corporation Load balancing in video-on-demand servers by allocating buffer to streams with successively larger buffer requirements until the buffer requirements of a stream can not be satisfied
US5596720A (en) * 1990-03-05 1997-01-21 Fujitsu Limited Redundant message processing system featuring reception server controlling communication between client and server process, and stand-by server retransmitting message with information indicating the message being a retransmitted message
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5858847A (en) * 1997-03-28 1999-01-12 Chartered Semiconductor Manufacturing, Ltd. Method for a lightly doped drain structure
US5864535A (en) * 1996-09-18 1999-01-26 International Business Machines Corporation Network server having dynamic load balancing of messages in both inbound and outbound directions
US5881238A (en) * 1995-06-07 1999-03-09 International Business Machines Corporation System for assignment of work requests by identifying servers in a multisystem complex having a minimum predefined capacity utilization at lowest importance level
US5915095A (en) * 1995-08-08 1999-06-22 Ncr Corporation Method and apparatus for balancing processing requests among a plurality of servers based on measurable characteristics off network node and common application
US5954795A (en) * 1995-09-14 1999-09-21 Sony Corporation Method of and apparatus for reducing server and network load with client-side data structure
US6023722A (en) * 1996-12-07 2000-02-08 International Business Machines Corp. High-availability WWW computer server system with pull-based load balancing using a messaging and queuing unit in front of back-end servers
US6078960A (en) * 1998-07-03 2000-06-20 Acceleration Software International Corporation Client-side load-balancing in client server network
US6185601B1 (en) * 1996-08-02 2001-02-06 Hewlett-Packard Company Dynamic load balancing of a network of client and server computers
US6219790B1 (en) * 1998-06-19 2001-04-17 Lucent Technologies Inc. Centralized authentication, authorization and accounting server with support for multiple transport protocols and multiple client types
US6259705B1 (en) * 1997-09-22 2001-07-10 Fujitsu Limited Network service server load balancing device, network service server load balancing method and computer-readable storage medium recorded with network service server load balancing program
US6263368B1 (en) * 1997-06-19 2001-07-17 Sun Microsystems, Inc. Network load balancing for multi-computer server by counting message packets to/from multi-computer server
US6330231B1 (en) * 1995-10-16 2001-12-11 Nec Corporation Dynamic server allocation for load balancing wireless remote interface processing
US20020040402A1 (en) * 2000-09-28 2002-04-04 International Business Machines Corporation System and method for implementing a clustered load balancer
US6401121B1 (en) * 1995-12-26 2002-06-04 Mitsubishi Denki Kabushiki Kaisha File server load distribution system and method
US20020161891A1 (en) * 2001-04-25 2002-10-31 Tatsuo Higuchi System and method for computer resource marketing
US20020194335A1 (en) * 2001-06-19 2002-12-19 Maynard William Pat Method and apparatus for load balancing
US20030009698A1 (en) * 2001-05-30 2003-01-09 Cascadezone, Inc. Spam avenger
US6539445B1 (en) * 2000-01-10 2003-03-25 Imagex.Com, Inc. Method for load balancing in an application server system
US20030158933A1 (en) * 2002-01-10 2003-08-21 Hubbert Smith Failover clustering based on input/output processors
US20030217285A1 (en) * 2002-04-22 2003-11-20 Telefonaktiebolaget Lm Ericsson (Publ) User selector proxy, method and system for authentication, authorization and accounting
US20040024861A1 (en) * 2002-06-28 2004-02-05 Coughlin Chesley B. Network load balancing
US20040132473A1 (en) * 2000-01-14 2004-07-08 Idreas Mir Avoiding PPP time-outs during IPCP negotiations
US6778528B1 (en) * 2000-05-17 2004-08-17 Cisco Technology, Inc. Dial-out with dynamic IP address assignment
US7159234B1 (en) * 2003-06-27 2007-01-02 Craig Murphy System and method for streaming media server single frame failover
US7185045B2 (en) * 2002-07-15 2007-02-27 Sixnet, Llc Ethernet interface device for reporting status via common industrial protocols
US7231445B1 (en) * 2000-11-16 2007-06-12 Nortel Networks Limited Technique for adaptively distributing web server requests

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828847A (en) 1996-04-19 1998-10-27 Storage Technology Corporation Dynamic server switching for maximum server availability and load balancing
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US6003079A (en) 1997-02-27 1999-12-14 Hewlett Packard Company System and method for continuously measuring quality of service in a federated application environment
US6377991B1 (en) * 1998-05-29 2002-04-23 Microsoft Corporation Method, computer program product, and system for migrating URLs within a dynamically changing distributed cache of URLs
US7337234B2 (en) * 2002-04-05 2008-02-26 Oracle International Corporation Retry technique for multi-tier network communication systems
US7421695B2 (en) * 2003-11-12 2008-09-02 Cisco Tech Inc System and methodology for adaptive load balancing with behavior modification hints

Patent Citations (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4621359A (en) * 1984-10-18 1986-11-04 Hughes Aircraft Company Load balancing for packet switching nodes
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
US5155851A (en) * 1989-05-15 1992-10-13 Bell Communications Research, Inc. Routing an incoming data stream to parallel processing stations
US5239649A (en) * 1989-10-30 1993-08-24 International Business Machines Corporation Channel path load balancing, through selection of storage volumes to be processed, for long running applications
US5596720A (en) * 1990-03-05 1997-01-21 Fujitsu Limited Redundant message processing system featuring reception server controlling communication between client and server process, and stand-by server retransmitting message with information indicating the message being a retransmitted message
US5404515A (en) * 1992-04-30 1995-04-04 Bull Hn Information Systems Inc. Balancing of communications transport connections over multiple central processing units
US5444848A (en) * 1992-04-30 1995-08-22 Bull Hn Information Systems Inc. Distribution of communications connections over multiple service access points by choosing remote and local access points having lowest number of connections
US5544327A (en) * 1994-03-01 1996-08-06 International Business Machines Corporation Load balancing in video-on-demand servers by allocating buffer to streams with successively larger buffer requirements until the buffer requirements of a stream can not be satisfied
US5537542A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Apparatus and method for managing a server workload according to client performance goals in a client/server data processing system
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5881238A (en) * 1995-06-07 1999-03-09 International Business Machines Corporation System for assignment of work requests by identifying servers in a multisystem complex having a minimum predefined capacity utilization at lowest importance level
US5915095A (en) * 1995-08-08 1999-06-22 Ncr Corporation Method and apparatus for balancing processing requests among a plurality of servers based on measurable characteristics off network node and common application
US5954795A (en) * 1995-09-14 1999-09-21 Sony Corporation Method of and apparatus for reducing server and network load with client-side data structure
US6330231B1 (en) * 1995-10-16 2001-12-11 Nec Corporation Dynamic server allocation for load balancing wireless remote interface processing
US6401121B1 (en) * 1995-12-26 2002-06-04 Mitsubishi Denki Kabushiki Kaisha File server load distribution system and method
US6185601B1 (en) * 1996-08-02 2001-02-06 Hewlett-Packard Company Dynamic load balancing of a network of client and server computers
US5864535A (en) * 1996-09-18 1999-01-26 International Business Machines Corporation Network server having dynamic load balancing of messages in both inbound and outbound directions
US6023722A (en) * 1996-12-07 2000-02-08 International Business Machines Corp. High-availability WWW computer server system with pull-based load balancing using a messaging and queuing unit in front of back-end servers
US5858847A (en) * 1997-03-28 1999-01-12 Chartered Semiconductor Manufacturing, Ltd. Method for a lightly doped drain structure
US6263368B1 (en) * 1997-06-19 2001-07-17 Sun Microsystems, Inc. Network load balancing for multi-computer server by counting message packets to/from multi-computer server
US6259705B1 (en) * 1997-09-22 2001-07-10 Fujitsu Limited Network service server load balancing device, network service server load balancing method and computer-readable storage medium recorded with network service server load balancing program
US6219790B1 (en) * 1998-06-19 2001-04-17 Lucent Technologies Inc. Centralized authentication, authorization and accounting server with support for multiple transport protocols and multiple client types
US6078960A (en) * 1998-07-03 2000-06-20 Acceleration Software International Corporation Client-side load-balancing in client server network
US6539445B1 (en) * 2000-01-10 2003-03-25 Imagex.Com, Inc. Method for load balancing in an application server system
US20040132473A1 (en) * 2000-01-14 2004-07-08 Idreas Mir Avoiding PPP time-outs during IPCP negotiations
US6778528B1 (en) * 2000-05-17 2004-08-17 Cisco Technology, Inc. Dial-out with dynamic IP address assignment
US20020040402A1 (en) * 2000-09-28 2002-04-04 International Business Machines Corporation System and method for implementing a clustered load balancer
US7231445B1 (en) * 2000-11-16 2007-06-12 Nortel Networks Limited Technique for adaptively distributing web server requests
US20020161891A1 (en) * 2001-04-25 2002-10-31 Tatsuo Higuchi System and method for computer resource marketing
US20030009698A1 (en) * 2001-05-30 2003-01-09 Cascadezone, Inc. Spam avenger
US20020194335A1 (en) * 2001-06-19 2002-12-19 Maynard William Pat Method and apparatus for load balancing
US20030158933A1 (en) * 2002-01-10 2003-08-21 Hubbert Smith Failover clustering based on input/output processors
US20030217285A1 (en) * 2002-04-22 2003-11-20 Telefonaktiebolaget Lm Ericsson (Publ) User selector proxy, method and system for authentication, authorization and accounting
US20040024861A1 (en) * 2002-06-28 2004-02-05 Coughlin Chesley B. Network load balancing
US7185045B2 (en) * 2002-07-15 2007-02-27 Sixnet, Llc Ethernet interface device for reporting status via common industrial protocols
US7159234B1 (en) * 2003-06-27 2007-01-02 Craig Murphy System and method for streaming media server single frame failover

Cited By (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7787497B1 (en) * 2003-03-03 2010-08-31 Cisco Technology, Inc. System for grouping attributes in packets in a radius protocol
US20050135255A1 (en) * 2003-12-19 2005-06-23 International Business Machines Corporation System and method for re-routing messaging traffic to external resources
US7647379B2 (en) * 2003-12-19 2010-01-12 International Business Machines Corporation System and method for re-routing messaging traffic to external resources
US20050267980A1 (en) * 2004-04-21 2005-12-01 Warren Joseph R Regulating client requests in an electronic messaging environment
US7594022B2 (en) * 2004-04-21 2009-09-22 Microsoft Corporation Regulating client requests in an electronic messaging environment
US8601143B2 (en) 2004-05-13 2013-12-03 Cisco Technology, Inc. Automated configuration of network device ports
US8060623B2 (en) 2004-05-13 2011-11-15 Cisco Technology, Inc. Automated configuration of network device ports
US7603423B2 (en) * 2004-07-30 2009-10-13 Ntt Docomo, Inc. Communication system with primary device and standby device to prevent suspension of service of the system
US20060026250A1 (en) * 2004-07-30 2006-02-02 Ntt Docomo, Inc. Communication system
US8799403B2 (en) 2004-11-23 2014-08-05 Cisco Technology, Inc. Caching content and state data at a network element
US20100094945A1 (en) * 2004-11-23 2010-04-15 Cisco Technology, Inc. Caching content and state data at a network element
US7664879B2 (en) 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US20060167975A1 (en) * 2004-11-23 2006-07-27 Chan Alex Y Caching content and state data at a network element
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US7996556B2 (en) 2004-12-06 2011-08-09 Cisco Technology, Inc. Method and apparatus for generating a network topology representation based on inspection of application messages at a network device
US8312148B2 (en) 2004-12-06 2012-11-13 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US8549171B2 (en) 2004-12-06 2013-10-01 Cisco Technology, Inc. Method and apparatus for high-speed processing of structured application messages in a network device
US9380008B2 (en) 2004-12-06 2016-06-28 Cisco Technology, Inc. Method and apparatus for high-speed processing of structured application messages in a network device
US20060123477A1 (en) * 2004-12-06 2006-06-08 Kollivakkam Raghavan Method and apparatus for generating a network topology representation based on inspection of application messages at a network device
US20060123467A1 (en) * 2004-12-06 2006-06-08 Sandeep Kumar Performing message payload processing functions in a network element on behalf of an application
US7725934B2 (en) 2004-12-07 2010-05-25 Cisco Technology, Inc. Network and application attack protection based on application layer message inspection
US20060123479A1 (en) * 2004-12-07 2006-06-08 Sandeep Kumar Network and application attack protection based on application layer message inspection
US8082304B2 (en) 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US7606267B2 (en) 2004-12-10 2009-10-20 Cisco Technology, Inc. Reducing the sizes of application layer messages in a network element
US20060129650A1 (en) * 2004-12-10 2006-06-15 Ricky Ho Guaranteed delivery of application layer messages by a network element
US20060129689A1 (en) * 2004-12-10 2006-06-15 Ricky Ho Reducing the sizes of application layer messages in a network element
US20060167730A1 (en) * 2004-12-22 2006-07-27 Calderone Anthony B System and methods for workflow management
US8117334B2 (en) * 2004-12-22 2012-02-14 Bank Of America Corporation System and methods for workflow management
US20130148531A1 (en) * 2004-12-28 2013-06-13 At&T Intellectual Property I, L.P. Methods and apparatus for collecting, analyzing, and presenting data in a communication network
US9231837B2 (en) * 2004-12-28 2016-01-05 At&T Intellectual Property I, L.P. Methods and apparatus for collecting, analyzing, and presenting data in a communication network
US7551567B2 (en) 2005-01-05 2009-06-23 Cisco Technology, Inc. Interpreting an application message at a network element using sampling and heuristics
US20060146879A1 (en) * 2005-01-05 2006-07-06 Tefcros Anthias Interpreting an application message at a network element using sampling and heuristics
US20060155862A1 (en) * 2005-01-06 2006-07-13 Hari Kathi Data traffic load balancing based on application layer messages
US20060168334A1 (en) * 2005-01-25 2006-07-27 Sunil Potti Application layer message-based server failover management by a network element
US7698416B2 (en) 2005-01-25 2010-04-13 Cisco Technology, Inc. Application layer message-based server failover management by a network element
US8239923B2 (en) 2005-06-21 2012-08-07 Cisco Technology, Inc. Controlling computer program extensions in a network device
US20070156919A1 (en) * 2005-06-21 2007-07-05 Sunil Potti Enforcing network service level agreements in a network element
US7962582B2 (en) 2005-06-21 2011-06-14 Cisco Technology, Inc. Enforcing network service level agreements in a network element
US7827256B2 (en) * 2005-06-21 2010-11-02 Cisco Technology, Inc. Applying quality of service to application messages in network elements
US7840700B2 (en) 2005-06-21 2010-11-23 Cisco Technology, Inc. Dynamically adding application logic and protocol adapters to a programmable network element
US20060288404A1 (en) * 2005-06-21 2006-12-21 Mayilraj Kirshnan Controlling computer program extensions in a network device
US20070028001A1 (en) * 2005-06-21 2007-02-01 Steve Phillips Applying quality of service to application messages in network elements
US8843598B2 (en) 2005-08-01 2014-09-23 Cisco Technology, Inc. Network based device for providing RFID middleware functionality
US8346918B2 (en) 2005-08-19 2013-01-01 Cpacket Networks, Inc. Apparatus and method for biased and weighted sampling of network traffic to facilitate network monitoring
US20100008359A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization
US7937756B2 (en) * 2005-08-19 2011-05-03 Cpacket Networks, Inc. Apparatus and method for facilitating network security
US8665868B2 (en) 2005-08-19 2014-03-04 Cpacket Networks, Inc. Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization
US20070056029A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for providing security and monitoring in a networking architecture
US7890991B2 (en) 2005-08-19 2011-02-15 Cpacket Networks, Inc. Apparatus and method for providing security and monitoring in a networking architecture
US8024799B2 (en) * 2005-08-19 2011-09-20 Cpacket Networks, Inc. Apparatus and method for facilitating network security with granular traffic modifications
US20100011101A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for biased and weighted sampling of network traffic to facilitate network monitoring
US7882554B2 (en) 2005-08-19 2011-02-01 Cpacket Networks, Inc. Apparatus and method for selective mirroring
US20100011434A1 (en) * 2005-08-19 2010-01-14 Rony Kay Apparatus and method for associating categorization information with network traffic to facilitate application level processing
US20070056030A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for facilitating network security with granular traffic modifications
US20070058540A1 (en) * 2005-08-19 2007-03-15 Rony Kay Apparatus and method for facilitating network security
US8296846B2 (en) 2005-08-19 2012-10-23 Cpacket Networks, Inc. Apparatus and method for associating categorization information with network traffic to facilitate application level processing
US20070056028A1 (en) * 2005-08-19 2007-03-08 Cpacket Networks Inc. Apparatus and method for selective mirroring
US20070094651A1 (en) * 2005-10-20 2007-04-26 Microsoft Corporation Load balancing
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US10334031B2 (en) 2005-10-20 2019-06-25 Microsoft Technology Licensing, Llc Load balancing based on impending garbage collection in execution environment
US20080028409A1 (en) * 2006-07-25 2008-01-31 Ludmila Cherkasova System and method for determining allocation of resource access demands to different classes of service based at least in part on permitted degraded performance
US8046765B2 (en) * 2006-07-25 2011-10-25 Hewlett-Packard Development Company, L.P. System and method for determining allocation of resource access demands to different classes of service based at least in part on permitted degraded performance
US20080025230A1 (en) * 2006-07-27 2008-01-31 Alpesh Patel Applying quality of service to application messages in network elements based on roles and status
US7797406B2 (en) * 2006-07-27 2010-09-14 Cisco Technology, Inc. Applying quality of service to application messages in network elements based on roles and status
EP2434704A1 (en) * 2007-09-26 2012-03-28 Huawei Technologies Co., Ltd. Method and system for choosing backup resources
US20090089418A1 (en) * 2007-10-01 2009-04-02 Ebay Inc. Method and system to detect a network deficiency
US8135824B2 (en) * 2007-10-01 2012-03-13 Ebay Inc. Method and system to detect a network deficiency
WO2009059456A1 (en) * 2007-11-06 2009-05-14 Lucent Technologies Inc. Method for controlling load balance of network system, client, server and network system
US11546337B2 (en) * 2009-02-17 2023-01-03 Netapp, Inc. Servicing of network software components of nodes of a cluster storage system
US7953870B1 (en) * 2009-12-09 2011-05-31 Sprint Communications Company L.P. Dynamic HTTP service timeout adjustment
JP2013544408A (en) * 2010-11-17 2013-12-12 アルカテル−ルーセント Method and system for client recovery strategy in redundant server configurations
CN103370903A (en) * 2010-11-17 2013-10-23 阿尔卡特朗讯 Method and system for client recovery strategy in a redundant server configuration
US20120124431A1 (en) * 2010-11-17 2012-05-17 Alcatel-Lucent Usa Inc. Method and system for client recovery strategy in a redundant server configuration
WO2012067929A1 (en) * 2010-11-17 2012-05-24 Alcatel Lucent Method and system for client recovery strategy in a redundant server configuration
US20130294283A1 (en) * 2010-12-03 2013-11-07 Nokia Corporation Facilitating device-to-device communication
US10135668B2 (en) * 2010-12-23 2018-11-20 Koninklijke Kpn N.V. Method, device, system and network architecture for handling a service request
US20130275540A1 (en) * 2010-12-23 2013-10-17 Nederlandse Organisatie Voor Toegepast- Natuurwetenschappelijk Onderzoek Tno Method, Device, System and Network Architecture for Handling a Service Request
US20160359808A1 (en) * 2011-02-16 2016-12-08 Fortinet, Inc. Load balancing among a cluster of firewall security devices
US9825912B2 (en) * 2011-02-16 2017-11-21 Fortinet, Inc. Load balancing among a cluster of firewall security devices
US10084751B2 (en) 2011-02-16 2018-09-25 Fortinet, Inc. Load balancing among a cluster of firewall security devices
CN102111899A (en) * 2011-03-08 2011-06-29 中兴通讯股份有限公司 Session keep-alive method and device
US8949658B1 (en) * 2012-03-02 2015-02-03 Amazon Technologies, Inc. Load balancer host selection and fault detection
US20130238785A1 (en) * 2012-03-06 2013-09-12 Rackspace Us, Inc. System and Method for Metadata Discovery and Metadata-Aware Scheduling
US9027024B2 (en) * 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US20150235308A1 (en) * 2012-05-09 2015-08-20 Rackspace Us, Inc. Market-Based Virtual Machine Allocation
US10210567B2 (en) * 2012-05-09 2019-02-19 Rackspace Us, Inc. Market-based virtual machine allocation
US20130304903A1 (en) * 2012-05-09 2013-11-14 Rackspace Us, Inc. Market-Based Virtual Machine Allocation
US9292060B1 (en) * 2012-06-28 2016-03-22 Amazon Technologies, Inc. Allowing clients to limited control on power consumed by the cloud while executing the client's tasks
US9348391B1 (en) * 2012-06-28 2016-05-24 Amazon Technologies, Inc. Managing resource power states in shared environments
US9058367B2 (en) * 2012-08-20 2015-06-16 Sears Brands, L.L.C. Methods and systems for staging and propagating data
US9547353B1 (en) 2012-09-19 2017-01-17 Amazon Technologies, Inc. Processor energy monitoring and dynamic adjustment
CN102932266A (en) * 2012-11-20 2013-02-13 无锡城市云计算中心有限公司 Method and device for controlling traffic distribution of server
US9185008B1 (en) * 2013-03-14 2015-11-10 Amazon Technologies, Inc. Operational reporting in a computing environment
EP2827561A1 (en) * 2013-07-18 2015-01-21 Synchronoss Technologies, Inc. Server controlled adaptive back off for overload protection using internal error counts
CN104518985A (en) * 2013-09-27 2015-04-15 国家广播电影电视总局广播科学研究院 Method and terminal for selecting service node in distributed network environment
US9794353B2 (en) * 2013-12-19 2017-10-17 Google Inc. Systems, methods, and computer program products for service processing
US20150180750A1 (en) * 2013-12-19 2015-06-25 Jvl Ventures, Llc Systems, methods, and computer program products for service processing
US20150180702A1 (en) * 2013-12-19 2015-06-25 Jvl Ventures, Llc Systems, methods, and computer program products for service processing
CN105934914A (en) * 2013-12-19 2016-09-07 谷歌公司 Systems, methods, and computer program products for service processing
US20150271102A1 (en) * 2014-03-21 2015-09-24 Juniper Networks, Inc. Selectable service node resources
US9485192B2 (en) * 2014-03-21 2016-11-01 Juniper Networks, Inc. Selectable service node resources
US10404791B2 (en) 2015-12-04 2019-09-03 Microsoft Technology Licensing, Llc State-aware load balancing of application servers
WO2018164610A1 (en) * 2017-03-06 2018-09-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and control node for managing cloud resources in a communications network
US11159608B2 (en) 2017-03-06 2021-10-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and control node for managing cloud resources in a communications network
US20210410038A1 (en) * 2020-06-30 2021-12-30 Uber Technologies, Inc. Automatic failover handling minimization in wireless network environment
US20230090032A1 (en) * 2021-09-22 2023-03-23 Hitachi, Ltd. Storage system and control method

Also Published As

Publication number Publication date
CA2543175A1 (en) 2005-06-02
US7752630B2 (en) 2010-07-06
US7421695B2 (en) 2008-09-02
WO2005050356A2 (en) 2005-06-02
US20080313274A1 (en) 2008-12-18
EP1682994B1 (en) 2017-10-25
EP1682994A2 (en) 2006-07-26
WO2005050356B1 (en) 2008-01-31
CA2543175C (en) 2009-09-15
WO2005050356A3 (en) 2007-12-13
EP1682994A4 (en) 2011-05-18

Similar Documents

Publication Publication Date Title
US7421695B2 (en) System and methodology for adaptive load balancing with behavior modification hints
EP1700230B1 (en) Dynamic timeout in a client-server system
US11296991B2 (en) Quality of experience based network analysis
US7451209B1 (en) Improving reliability and availability of a load balanced server
US6519714B1 (en) Evaluating computer resources
US7167912B1 (en) Method and apparatus for detecting failures in network components
US8260916B2 (en) Network server and method of discovery of a network node
US7257731B2 (en) System and method for managing protocol network failures in a cluster system
WO2000019320A9 (en) Evaluating computer resources by end-user emulation
US7313735B1 (en) In-line server health checking
US20050268151A1 (en) System and method for maximizing connectivity during network failures in a cluster system
US9325685B2 (en) Authentication switch and network system
EP1762069B1 (en) Method of selecting one server out of a server set
US9485156B2 (en) Method and system for generic application liveliness monitoring for business resiliency
US7437732B1 (en) Computer system having an authentication and/or authorization routing service and a CORBA-compliant interceptor for monitoring the same
CN115623000A (en) Method and device for efficiently distributing data on digital network
JP2009238098A (en) Session management method, storage device, and computer system
US20060039288A1 (en) Network status monitoring and warning method
Fujita et al. TCP connection scheduler in single IP address cluster
CN117131493A (en) Authority management system construction method, device, equipment and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: CISCO TECHNOLOGY, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MURRAY, CHRISTOPHER;ZAMICK, JOHN;REEL/FRAME:014698/0904;SIGNING DATES FROM 20031021 TO 20031108

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12