IP Library Granted Patent US 7,016,685
Granted Patent B1
US 7,016,685 · App. 09/645,970 · Granted Mar 21, 2006

System and methods of dynamic load balancing across processor nodes

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,016,685
App. No.
09/645,970
Granted
Mar 21, 2006
Kind
B1
Abstract

A method of dynamically balancing work among a plurality of processing nodes is provided. The method includes the steps of periodically updating a node occupancy value at each of the plurality of processing nodes, communicating the respective node occupancy value of each processing node to at least one work originator node, storing the node occupancy values of the plurality of processing nodes at the at least one work originator node, and selecting, by the at least one work originator node, a processing node to perform a particular task in response to the node occupancy values of the processing nodes.

Claims (69)

1. In connection with a telecommunications switch having a switching fabric through which calls are switched, and with a plurality of processing nodes each capable of performing certain processing in connection with calls to be routed through the switching fabric, a method of dynamically balancing call processing tasks among the plurality of call processing nodes, comprising:

periodically updating a respective node processing occupancy value at each of the plurality of call processing nodes;

communicating the respective node occupancy value of each call processing node to at least one work originator node operable to receive incoming calls;

storing the node occupancy values of the plurality of call processing nodes at the at least one work originator node; and

selecting, by the at least one work originator node, a call processing node to process the incoming call in response to the node occupancy values of the call processing nodes;

wherein selecting a call processing node comprises:

determining a subset of call processing nodes having lowest node occupancy values; and

randomly selecting a call processing node from the subset.

2. The method, as set forth in claim 1 , wherein periodically updating the node occupancy value comprises calculating the node occupancy value, by each of the plurality of call processing nodes, using a percentage of available processing capacity of the call processing node.

3. The method, as set forth in claim 1 , wherein periodically updating node occupancy value comprises calculating the node occupancy value, by each of the plurality of call processing nodes, using a combination of a percentage of available processing capacity of the call processing node and a length of its work queue.

4. The method, as set forth in claim 1 , wherein periodically updating node occupancy value comprises calculating the node occupancy value, by each of the plurality of call processing nodes, using a combination of a percentage of available processing capacity of the call processing node, a length of its work queue, and its processing speed.

5. The method, as set forth in claim 1 , wherein communicating the respective node occupancy value comprises:

inserting the respective node occupancy value into a message header of a call processing message; and

sending the message to the work originator node.

6. The method, as set forth in claim 1 , wherein communicating the respective node occupancy value comprises sending a call processing message containing the respective node occupancy value as a part of existing call processing message traffic.

7. The method, as set forth in claim 1 , wherein communicating the respective node occupancy value comprises:

inserting the respective node occupancy value and a sender ID into a message header of an existing message; and

sending the message to the work originator node.

8. The method, as set forth in claim 7 , wherein storing the node occupancy values of the plurality of call processing nodes comprises storing the node occupancy value in a table indexable by the sender ID.

9. The method, as set forth in claim 1 , wherein determining the subset of processing nodes having lowest node occupancy values comprises:

determining a subset of call processing nodes having the lowest third node occupancy values.

10. A load shared processing system distributed among a plurality of processing nodes,

each of the plurality of processing nodes executing a shared process for switching fabrics,

each of the plurality of processing nodes in communication with one or more work origination nodes for performing tasks associated with switching taking place in one or more switching fabrics;

wherein each of the plurality of processing nodes executes a second process for periodically determining an indication of processing occupancy of the node, and communicates an indication of the occupancy to the at least one work origination node;

and wherein each of the one or more work origination nodes executes a process for storing the indication of the processing occupancy received from each of the plurality of processing nodes and for selecting one of the plurality of processing nodes for handling a task to be performed by the shared process based on the stored indications of processing occupancy of the plurality of nodes, wherein the selected one of the plurality of processing nodes is selected randomly from a subset of the plurality of processing nodes having lowest occupancies relative to the remaining plurality of processing nodes.

11. The load shared processing system of claim 10 , wherein each of the plurality of processing nodes is comprised of a multi-service fabric controller and each of the one or more work origination nodes is comprised of a multi-service fabric for telecommunications services.

12. The load shared processing system of claim 10 , wherein the one or more work original nodes and the plurality of processing nodes communicate by exchanging messages, and wherein at least certain of the messages communicated by each of the plurality of processing nodes to the one or more telecommunications switches includes an indication of that processing node's load.

13. The load shared processing system of claim 12 , wherein each of the certain messages sent by the plurality of processing nodes includes a header that includes a field for storing the indication of the processing load of the one of the plurality of processing nodes sending the message.

14. The load shared processing system of claim 13 , wherein the certain messages include call set up messages.

15. The load shared processing system of claim 10 , wherein the processing occupancy of a processing node indicates an ability of the processing node to process additional work.

16. A method of dynamically balancing work to be performed by a process distributed among a plurality of processing nodes, comprising:

periodically updating a node processing occupancy value at each of the plurality of processing nodes;

communicating the respective node occupancy value of each processing node to at least one work originator node;

storing the node occupancy values of the plurality of processing nodes at the at least one work originator node; and

selecting, by the at least one work originator node, a processing node to perform a particular task in response to the node occupancy values of the processing nodes;

wherein selecting a processing node comprises:

determining a subset of processing nodes having lowest node occupancy values; and

randomly selecting a processing node from the subset.

17. The method, as set forth in claim 16 , wherein periodically updating node occupancy value comprises calculating the node occupancy value, by each of the plurality of processing nodes, using a percentage of available processing capacity of the processing node.

18. The method, as set forth in claim 16 , wherein periodically updating node occupancy value comprises calculating the node occupancy value, by each of the plurality of processing nodes, using a combination of percentage of available processing capacity of the processing node and a length of its work queue.

19. The method, as set forth in claim 16 , wherein periodically updating node occupancy value comprises calculating the node occupancy value, by each of the plurality of processing nodes, using a combination of percentage of available processing capacity of the processing node, a length of its work queue, and its processing speed.

20. The method, as set forth in claim 16 , wherein communicating the respective node occupancy value comprises:

inserting the respective node occupancy value into a message header of an existing message; and

sending the message to the work originator node.

21. The method, as set forth in claim 16 , wherein communicating the respective node occupancy value comprises sending a message containing the respective node occupancy value as a part of existing message traffic.

22. The method, as set forth in claim 16 , wherein communicating the respective node occupancy value comprises:

inserting the respective node occupancy value and a sender ID into a message header of an existing message; and

sending the message to the work originator node.

23. The method, as set forth in claim 22 , wherein storing the node occupancy values of the plurality of processing nodes comprises storing the node occupancy value in a table indexable by the sender ID.

24. The method, as set forth in claim 16 , wherein determining the subset of processing nodes having lowest node occupancy values comprises:

determining a subset of processing nodes having the lowest third node occupancy values.

25. A telecommunications system, comprising:

a plurality of call processing nodes for communicating with a switching fabric through which calls are switched; and

at least one incoming call receiving node;

the plurality of call processing nodes each:

periodically calculating and updating a respective node occupancy value; and

communicating the respective node occupancy value to at least one incoming call receiving node, communication of the occupancy value made in an open-loop manner;

the at least one incoming call receiving node:

storing the node occupancy values of the plurality of call processing nodes;

determining a subset of call processing nodes having lowest node occupancy values; and

selecting randomly from the subset a call processing node to process the incoming call.

26. The telecommunications system, as set forth in claim 25 , wherein the plurality of call processing nodes calculates the respective node occupancy value using a percentage of available processing capacity of the call processing node.

27. The telecommunications system, as set forth in claim 25 , wherein the plurality of call processing nodes calculate the respective node occupancy value using a combination of a percentage of available processing capacity of the call processing node and a length of its work queue.

28. The telecommunications system, as set forth in claim 25 , wherein the plurality of call processing nodes insert the respective node occupancy value into a message header of a call processing message, and send the message to the incoming call receiving node.

29. The telecommunications system, as set forth in claim 25 , wherein the plurality of call processing nodes send a call processing message containing the respective node occupancy value as a part of existing call processing message traffic.

30. The telecommunications system, as set forth in claim 25 , wherein the plurality of call processing nodes insert the respective node occupancy value and a sender ID into a message header of a call processing message, and send the call processing message to the incoming call receiving node.

31. The telecommunication system, as set forth in claim 30 , wherein the at least one incoming call receiving node stores the node occupancy value in a table indexable by the sender ID.

32. The telecommunications system, as set forth in claim 25 , wherein the subset of call processing nodes has the lowest third node occupancy values.

Assignments (9)
RELEASE OF SECURITY INTEREST Recorded Jun 24, 2024
From: CITIZENS BANK, N.A.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 067822/0433 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 044978/0801 Recorded Dec 6, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 058949/0497 →
SECURITY INTEREST Recorded Mar 3, 2020
From: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
To: CITIZENS BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 052076/0905 →
SECURITY INTEREST Recorded Jan 2, 2018
From: GENBAND US LLC; SONUS NETWORKS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 044978/0801 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Dec 29, 2017
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: GENBAND US LLC
Reel/Frame 044986/0303 →
CORRECTIVE ASSIGNMENT TO CORRECT PATENT NO. 6381239 PREVIOUSLY RECORDED AT REEL: 039269 FRAME: 0234. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Jan 3, 2017
From: GENBAND US LLC
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 041422/0080 →
RELEASE AND REASSIGNMENT OF PATENTS Recorded Jul 7, 2016
From: COMERICA BANK, AS AGENT
To: GENBAND US LLC
Reel/Frame 039280/0467 →
PATENT SECURITY AGREEMENT Recorded Jul 6, 2016
From: GENBAND US LLC
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 039269/0234 →
RELEASE OF SECURITY INTEREST Recorded Jan 10, 2014
From: ONE EQUITY PARTNERS III, L.P., AS COLLATERAL AGENT
To: GENBAND US LLC
Reel/Frame 031968/0955 →