System and method for load balancing a communications network
First Claim
1. A method for load-balancing a Session Initiation Protocol (SIP) network, comprising:
- receiving a SIP request from a source device;
selecting one of a plurality of SIP servers including a first SIP server based on a plurality of performance scores, each of the plurality of performance scores determined as a function of a plurality of weighted performance parameters of a corresponding one of the plurality of SIP servers, the selecting including setting the performance score of the first SIP server equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold, the selecting including automatically generating a random integer and comparing the random integer with a sum of two or more of the performance scores for corresponding SIP servers, the selecting including detecting failures of the SIP servers using the performance scores, the selecting further including preventing the first SIP server from being chosen as a selected SIP server to perform the SIP request when the performance score of the first SIP server is the predetermined value; and
forwarding the SIP request to the selected SIP server.
3 Assignments
0 Petitions
Accused Products
Abstract
The invention relates to a system and method for load-balancing multiple servers in a communications network. Instead of using round robin or other predetermined scheme, SIP messages are forwarded to one of multiple SIP servers according to a performance score that is calculated from measured performance data. Advantageously, the disclosed system and method decreases signaling latency, improving overall communications speed. Moreover, where performance data indicates that a SIP server has failed, the performance score for the failed SIP server is zero, and the load balancer will not forward SIP messages to the failed SIP server. System uptime is also improved.
170 Citations
22 Claims
-
1. A method for load-balancing a Session Initiation Protocol (SIP) network, comprising:
-
receiving a SIP request from a source device; selecting one of a plurality of SIP servers including a first SIP server based on a plurality of performance scores, each of the plurality of performance scores determined as a function of a plurality of weighted performance parameters of a corresponding one of the plurality of SIP servers, the selecting including setting the performance score of the first SIP server equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold, the selecting including automatically generating a random integer and comparing the random integer with a sum of two or more of the performance scores for corresponding SIP servers, the selecting including detecting failures of the SIP servers using the performance scores, the selecting further including preventing the first SIP server from being chosen as a selected SIP server to perform the SIP request when the performance score of the first SIP server is the predetermined value; and forwarding the SIP request to the selected SIP server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for polling a Session Initiation Protocol (SIP) server for performance data, comprising:
-
receiving, in a performance server, a data request for the performance data of the SIP server, the performance data to be assigned a weight and used in determining a performance score of the SIP server, the performance score to detect a failure of the SIP server, the performance score of the SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the SIP server is greater than a first predetermined threshold or that a memory availability parameter of the SIP server is less than a second predetermined threshold; creating a persistent performance client in the performance server; opening a connection to an agent running on the SIP server; and issuing a request from the persistent performance client to the agent; wherein the performance score of the SIP server is to be added with performance scores for one or more other SIP servers to generate a sum of two or more of the performance scores for corresponding SIP servers, the sum to be compared with an automatically generated random integer to select an available SIP server to service an SIP request; and wherein the SIP server is prevented from being selected as the available SIP server when the performance score of the SIP server is the predetermined value. - View Dependent Claims (11)
-
-
12. A method responsive to a data request, comprising:
-
creating, in a Session Initiation Protocol (SIP) server, a first controller, the first controller being configured to gather and cache performance data, the performance data to be assigned a weight and used in determining a performance score of the SIP server, the performance score to detect a failure of the SIP server, the performance score of the SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the SIP server is greater than a first predetermined threshold or that a memory availability parameter of the SIP server is less than a second predetermined threshold; and creating a server socket, the server socket being configured to determine whether a connection request has been received, the server socket being further configured to transmit the performance data; wherein the performance score of the SIP server is to be added with performance scores for one or more other SIP servers to generate a sum of two or more of the performance scores for corresponding SIP servers, the sum to be compared with an automatically generated random integer to select an available SIP server to service an SIP request; and wherein the SIP server is prevented from being selected as the available SIP server when the performance score of the SIP server is the predetermined value. - View Dependent Claims (13)
-
-
14. A method for load-balancing a Session Initiation Protocol (SIP) network, comprising:
-
receiving a SIP request; generating a routing request based on the SIP request; generating a request for a performance score for each of a plurality of SIP servers including a first SIP server based on the routing request, each performance score to be determined as a function of a plurality of weighted performance parameters of a corresponding one of the plurality of SIP servers, the performance score to detect a failure of its corresponding SIP server, the performance score of the first SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold; generating a performance data query to each of the plurality of SIP servers based on the request for the performance score; and receiving the performance data query in an agent in each of the plurality of SIP servers; wherein a sum of two or more performance scores for corresponding SIP servers are to be compared with an automatically generated random integer to select an available SIP server to service the SIP request; and wherein the first SIP server is prevented from being selected as the available SIP server when the performance score of the first SIP server is the predetermined value. - View Dependent Claims (15)
-
-
16. A machine-readable medium having instructions stored thereon for execution by a processor to perform a method comprising:
-
receiving a SIP request from a source device; selecting one of a plurality of SIP servers including a first SIP server based on a plurality of performance scores, each of the plurality of performance scores determined as a function of a plurality of weighted performance parameters of a corresponding one of the plurality of SIP servers, the selecting including setting the performance score of the first SIP server equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold, the selecting including automatically generating a random integer and comparing the random integer with a sum of two or more of the performance scores for corresponding SIP servers, the selecting including detecting failures of the SIP servers using the performance scores, the selecting further including preventing the first SIP server from being chosen as a selected SIP server to perform the SIP request when the performance score of the first SIP server is the predetermined value; and forwarding the SIP request to the selected SIP server.
-
-
17. A machine-readable medium having instructions stored thereon for execution by a processor to perform a method comprising:
-
receiving, in a performance server, a data request for the performance data of a Session Initiation Protocol (SIP) server, the performance data to be assigned a weight and used in determining a performance score of the SIP server, the performance score to detect a failure of the SIP server, the performance score of the SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the SIP server is greater than a first predetermined threshold or that a memory availability parameter of the SIP server is less than a second predetermined threshold; creating a persistent performance client in the performance server; opening a connection to an agent running on the SIP server; and issuing a request from the persistent performance client to the agent; wherein the performance score of the SIP server is to be added with performance scores for one or more other SIP servers to generate a sum of two or more of the performance scores for corresponding SIP servers, the sum to be compared with an automatically generated random integer to select an available SIP server to service an SIP request; and wherein the SIP server is prevented from being selected as the available SIP server when the performance score of the SIP server is the predetermined value.
-
-
18. A machine-readable medium having instructions stored thereon for execution by a processor to perform a method comprising:
-
creating, in a Session Initiation Protocol (SIP) server, a first controller, the first controller being configured to gather and cache performance data, the performance data to be assigned a weight and used in determining a performance score of the SIP server, the performance score to detect a failure of the SIP server, the performance score of the SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the SIP server is greater than a first predetermined threshold or that a memory availability parameter of the SIP server is less than a second predetermined threshold; and creating a server socket, the server socket being configured to determine whether a connection request has been received, the server socket being further configured to transmit the performance data; wherein the performance score of the SIP server is to be added with performance scores for one or more other SIP servers to generate a sum of two or more of the performance scores for corresponding SIP servers, the sum to be compared with an automatically generated random integer to select an available SIP server to service an SIP request; and wherein the SIP server is prevented from being selected as the available SIP server when the performance score of the SIP server is the predetermined value.
-
-
19. A machine-readable medium having instructions stored thereon for execution by a processor to perform a method comprising:
-
receiving a Session Initiation Protocol (SIP) request; generating a routing request based on the SIP request; generating a request for a performance score for each of a plurality of SIP servers including a first SIP server based on the routing request, each performance score to be determined as a function of a plurality of weighted performance parameters of a corresponding one of the plurality of SIP servers, the performance score to detect a failure of its corresponding SIP server, the performance score of the first SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold; generating a performance data query to each of the plurality of SIP servers based on the request for the performance score; and receiving the performance data query in an agent in each of the plurality of SIP servers; wherein a sum of two or more performance scores for corresponding SIP servers are to be compared with an automatically generated random integer to select an available SIP server to service the SIP request; and wherein the first SIP server is prevented from being selected as the available SIP server when the performance score of the first SIP server is the predetermined value.
-
-
20. A communication system, comprising:
-
an interface to a source device; a load balancer coupled to the interface; a plurality of Session Initiation Server (SIP) servers coupled to the load balancer, the plurality of SIP servers including a first SIP server; and a performance server coupled to the load balancer and the plurality of SIP servers, the performance server configured to collect performance data from the plurality of SIP servers, the load balancer configured to assign a weight to the performance data and calculate a plurality of performance scores, each of the plurality of performance scores associated with one of the plurality of SIP servers, the plurality of performance scores based on the weighted performance data, the performance score of the first SIP server to be set equal to a predetermined value upon determination that a CPU percentage usage parameter of the first SIP server is greater than a first predetermined threshold or that a memory availability parameter of the first SIP server is less than a second predetermined threshold; wherein the load balancer is configured to automatically generate a random integer and compare the random integer with a sum of two or more of the performance scores for corresponding SIP servers to select one of the plurality of SIP servers, the load balancer further configured to direct a SIP request received from the first interface to the selected one of the plurality of SIP servers, the load balancer further configured to detect failures of the SIP servers using the performance scores, the load balancer further configured to prevent the first SIP server from being chosen as the selected SIP to perform the SIP request when the performance score of the first SIP server is the predetermined value. - View Dependent Claims (21, 22)
-
Specification