IP Library Granted Patent US 7,397,762
Granted Patent B1
US 7,397,762 · App. 10/261,007 · Granted Jul 8, 2008

System, device and method for scheduling information processing with load-balancing

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,397,762
App. No.
10/261,007
Granted
Jul 8, 2008
Kind
B1
Abstract

Packets are spread among a number of packet processors with load-balancing. The incoming packets are logically divided into a number of packet flows, where the number of packet flows is greater than the number of packet processors. Each packet flow is assigned to a particular packet processor. When a packet is received, the packet flow for the packet is determined, and the packet is queued for the packet processor associated with the flow based upon a predetermined queuing scheme. The mapping of packet flows to packet processors is not fixed, but rather is dynamically updated based upon the amount of data associated with each packet flow and each packet processor.

Claims (55)

1. A method for scheduling information processing using load balancing, the method comprising:

associating each of a number of information units with one of a number of flows;

assigning each of the number of flows to one of a number of processors, wherein the number of flows is greater than the number of processors, and wherein the assignment of each of the number of flows to one of the number of processors substantially balances the information processing load among the number of processors; and

dynamically allocating each information unit to, including indexing into a flow table using a flow number of the flow to obtain a flow table entry, obtaining a processor identifier from the flow table entry and allocating the information unit to the processor associated with the process identifier, wherein processor identifiers stored in the flow table based upon the an amount of data associated with each of the number of flows and each of the number of processors.

2. The method of claim 1 , wherein assigning each of the number of flows to one of a number of processors comprises:

maintaining the flow table, the flow table having a flow table entry for each flow; and

storing in each flow table entry a processor identifier for the corresponding flow.

3. The method of claim 1 , wherein dynamically allocating each information unit to a processor comprises:

receiving an information unit;

determining the flow associated with the information unit; and

determining the processor associated with the flow responsive to the flow table entry.

4. The method of claim 3 , wherein determining the flow associated with the information unit comprises:

determining a flow for the information unit based upon the contents of the information unit using a predetermined scheme.

5. The method of claim 4 , wherein the contents of the information unit comprise addressing information.

6. The method of claim 4 , wherein the predetermined scheme comprises a hashing function.

7. The method of claim 3 , further comprising:

updating statistics for the flow based upon an information unit size.

8. The method of claim 7 , further comprising:

dynamically updating the assignment of flows to processors based upon updated statistics for the flows.

9. A method for scheduling information processing using load balancing, the method comprising:

associating each of a number of information units with one of a number of flows;

assigning each of the number of flows to one of a number of processors, wherein the number of flows is greater than the number of processors, and wherein the assignment of each of the number of flows to one of the number of processors substantially balances the information processing load among the number of processors; and

allocating each information unit to a processor based upon the flow associated with the information unit and the processor associated with the flow by determining a flow associated with each information unit, determining the processor associated with the flow; indexing into a flow table using a flow number of the flow to obtain a flow table entry, obtaining a processor identifier from the flow table entry and allocating the information unit to the processor associated with the process identifier.

10. A method for scheduling information processing using load balancing, the method comprising:

associating each of a number of information units with one of a number of flows;

assigning each of the number of flows to one of a number of processors, wherein the number of flows is greater than the number of processors, and wherein the assignment of each of the number of flows to one of the number of processors substantially balances the information processing load among the number of processors; and

allocating each information unit to a processor associated with the flow by

determining a priority for the information unit;

determining an amount of data in a queue associated with the processor;

queuing the information unit for the processor, if the priority for the information unit is within a set of acceptable priorities for the amount of data in the queue; and

dropping the information unit without queuing the information unit for the processor, if the priority for the information unit is not within a set of acceptable priorities for the amount of data in the queue.

11. The method of claim 10 , wherein determining a priority for the information unit comprises:

determining the priority for the information unit based upon the contents of the information unit and a quality-of-service table.

12. An apparatus comprising:

an interface over which information units are received;

a number of processors for processing information units; and

scheduling logic for dynamically allocating each information unit to a processor, wherein the scheduling logic is operably coupled to receive an information unit over the interface, determine a flow associated with the information unit by indexing into a flow table using a flow number of the flow to obtain a flow table entry comprising a processor identifier, determine a processor associated with the flow using the processor identifier from the flow table entry, and allocate the information unit to the processor identified by the processor identifier, wherein the processor identifiers are stored in the flow table entry responsive to an amount of data associated with each of the plurality of flows and at the plurality of processors.

13. The apparatus of claim 12 , wherein the scheduling logic is operably coupled to determine the flow associated with the information based upon the contents of the information unit according to a predetermined scheme.

14. The apparatus of claim 13 , wherein the contents of the information unit comprise addressing information.

15. The apparatus of claim 13 , wherein the predetermined scheme comprises a hashing function.

16. The apparatus of claim 12 , wherein the scheduling logic is operably coupled to update statistics for the flow based upon an information unit size.

17. An apparatus comprising:

an interface over which information units are received;

a number of processors for processing information units; and

scheduling logic for allocating each information unit to a processor, wherein the scheduling logic is operably coupled to receive an information unit over the interface, determine a flow associated with the information unit, determine a processor associated with the flow, and allocate the information unit to the processor associated with the flow;

wherein the scheduling logic is operably coupled to determine a priority for the information unit, determine an amount of data in a queue associated with the processor, queue the information unit for the processor, if the priority for the information unit is within a set of acceptable priorities for the amount of data in the queue, and drop the information unit without queuing the information unit for the processor, if the priority for the information unit is not within a set of acceptable priorities for the amount of data in the queue.

18. The apparatus of claim 17 , wherein the scheduling logic is operably coupled to determine a priority for the information unit based upon the contents of the information unit and a quality-of-service table.

19. A system for scheduling comprising:

means for associating each of a number of information units with one of a number of flows;

means for dynamically assigning each of the number of flows to one of a number of processors, wherein the number of flows is greater than the number of processors, and wherein the assignment of each of the number of flows to one of the number of processors substantially balances the information processing load among the number of processors by periodically assigning flows to processors responsive to an amount of data associated with each of the number of flows and at each of the number of processors, wherein the processors are assigned to flows using a flow table comprising a plurality of flow table entries, each flow table entry comprising a processor identifier, the flow table being indexed by a flow number associated with a received information unit to provide a flow table entry comprising a processor identifier identifying a processor associated with the flow; and

means for allocating each information unit to a processor based upon the flow associated with the information unit and the processor associated with the flow.

20. The system of claim 19 , further comprising:

means for updating statistics for the flow based upon an information unit size.

21. The system of claim 20 , further comprising:

means for dynamically updating the assignment of flows to processors based upon updated statistics for the flows.

Assignments (17)
(SECURITY INTEREST) GRANTOR'S NAME CHANGE Recorded Sep 21, 2023
From: AVAYA INC.
To: AVAYA LLC
Reel/Frame 065019/0231 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 61087/0386) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063690/0359 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 53955/0436) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063705/0023 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 045034/0001) Recorded May 18, 2023
From: GOLDMAN SACHS BANK USA., AS COLLATERAL AGENT
To: ZANG, INC. (FORMER NAME OF AVAYA CLOUD INC.); AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; HYPERQUALITY, INC.; HYPERQUALITY II, LLC; CAAS TECHNOLOGIES, LLC; AVAYA MANAGEMENT L.P.
Reel/Frame 063779/0622 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 4, 2023
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 063542/0662 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 3, 2023
From: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; KNOAHSOFT INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB [COLLATERAL AGENT]
Reel/Frame 063742/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 45124/FRAME 0026 Recorded Apr 26, 2023
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: AVAYA HOLDINGS CORP.; AVAYA INC.; AVAYA MANAGEMENT L.P.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063457/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Aug 5, 2022
From: AVAYA INC.; INTELLISIST, INC.; AVAYA MANAGEMENT L.P.; AVAYA CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 061087/0386 →
SECURITY INTEREST Recorded Sep 25, 2020
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 053955/0436 →
SECURITY INTEREST Recorded Jan 23, 2018
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 045124/0026 →
RELEASE OF SECURITY INTEREST Recorded Jan 11, 2018
From: CITICORP USA, INC.
To: AVAYA, INC.; SIERRA HOLDINGS CORP.
Reel/Frame 045045/0564 →
SECURITY INTEREST Recorded Jan 10, 2018
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 045034/0001 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 030083/0639 Recorded Dec 15, 2017
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVAYA INC.
Reel/Frame 045012/0666 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 023892/0500 Recorded Dec 15, 2017
From: CITIBANK, N.A.
To: AVAYA INC.
Reel/Frame 044891/0564 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 025863/0535 Recorded Dec 15, 2017
From: THE BANK OF NEW YORK MELLON TRUST, NA
To: AVAYA INC.
Reel/Frame 044892/0001 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 041576/0001 Recorded Dec 15, 2017
From: CITIBANK, N.A.
To: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS INC.; OCTEL COMMUNICATIONS LLC (FORMERLY KNOWN AS OCTEL COMMUNICATIONS CORPORATION); VPNET TECHNOLOGIES, INC.
Reel/Frame 044893/0531 →
SECURITY INTEREST Recorded Jan 27, 2017
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS INC.; OCTEL COMMUNICATIONS CORPORATION; VPNET TECHNOLOGIES, INC.
To: CITIBANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 041576/0001 →