IP Library Granted Patent US 8,886,878
Granted Patent B1
US 8,886,878 · App. 13/682,937 · Granted Nov 11, 2014

Counter management algorithm systems and methods for high bandwidth systems

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 8,886,878
App. No.
13/682,937
Granted
Nov 11, 2014
Kind
B1
Abstract

A method, a statistics subsystem, and a system use a combination of commercially available high speed memory and high density low speed memory to mitigate cost, space, control, and power issues associated with storing counters for statistics updates, while meeting the growing width and depth needs of multi-hundred gigabit Carrier Class data network devices. The method, statistics subsystem, and system offer a Counter Management Algorithm (CMA) that relies on rollover bits stored within data of counters. An update to the low speed memory is substantially faster than a rollover time for the counter in the high speed memory thereby allowing statistics to be cached in the high speed memory while updates take place to the low speed memory.

Claims (52)

1. A method, comprising:

receiving a frame and generating a flow update request based thereon;

processing the flow update request for an individual request for a unique addresses;

queuing the individual request in a high speed memory interface;

reading count data from a counter associated with the individual requests from high speed memory;

monitoring rollover bits for the counter with the individual request added thereto;

combining the individual request with the read count data and placing resultant data on a write queue for low speed memory and writing zero to the high speed memory for the counter when one of the rollover bits is set; and

combining the individual request with the read count data and writing the resultant data back to the high speed memory when the rollover bits are not set.

2. The method of claim 1 , wherein an update to the low speed memory is substantially faster than a rollover time for the counter in the high speed memory thereby allowing statistics to be cached in the high speed memory while updates take place to the low speed memory.

3. The method of claim 1 , wherein the counter in the high speed memory comprises a width of N, N being an integer, and wherein the rollover bits comprise a first rollover bit being a second most significant bit, N−1, of the counter and a second rollover bit being a first most significant bit, N, of the counter.

4. The method of claim 3 , further comprising:

determining the first rollover bit is set;

writing the resultant data to the high speed memory responsive to the write queue for the low speed memory being full;

determining the second rollover bit is set subsequent to the determining the first rollover bit is set; and

placing the resultant data in the write queue in a portion reserved thereby always having space.

5. The method of claim 1 , wherein the rollover bits are maintained as part of the resultant data in the counter in the high speed memory.

6. The method of claim 1 , further comprising:

determining whether to move the counter from the high speed memory to the low speed memory in conjunction with a read of the counter associated with a counter update.

7. The method of claim 1 , wherein the low speed memory comprises Dynamic random-access memory and the high speed memory comprises Static random-access memory.

8. The method of claim 1 , wherein the counter comprises both packet count data and byte count data.

9. The method of claim 1 , further comprising:

compressing the individual request for the unique addresses.

10. A statistics subsystem, comprising:

electrical processing logic configured to:

receive a frame and generating a flow update request based thereon;

process the flow update request for an individual request for a unique addresses;

queue the individual request in a high speed memory interface;

read count data from a counter associated with the individual requests from high speed memory;

monitor rollover bits for the counter with the individual request added thereto;

combine the individual request with the read count data and placing resultant data on a write queue for low speed memory and writing zero to the high speed memory for the counter when one of the rollover bits is set; and

combine the individual request with the read count data and writing the resultant data back to the high speed memory when the rollover bits are not set.

11. The statistics subsystem of claim 10 , wherein an update to the low speed memory is substantially faster than a rollover time for the counter in the high speed memory thereby allowing statistics to be cached in the high speed memory while updates take place to the low speed memory.

12. The statistics subsystem of claim 10 , wherein the counter in the high speed memory comprises a width of N, N being an integer, and wherein the rollover bits comprise a first rollover bit being a second most significant bit, N−1, of the counter and a second rollover bit being a first most significant bit, N, of the counter.

13. The statistics subsystem of claim 12 , wherein the electrical processing logic is further configured to:

determine the first rollover bit is set;

write the resultant data to the high speed memory responsive to the write queue for the low speed memory being full; and

determine the second rollover bit is set subsequent to the determining the first rollover bit is set; and

place the resultant data in the write queue in a portion reserved thereby always having space.

14. The statistics subsystem of claim 10 , wherein the rollover bits are maintained as part of the resultant data in the counter in the high speed memory.

15. The statistics subsystem of claim 10 , wherein the electrical processing logic is further configured to:

determine whether to move the counter from the high speed memory to the low speed memory in conjunction with a read of the counter associated with a counter update.

16. The statistics subsystem of claim 10 , wherein the low speed memory comprises Dynamic random-access memory and the high speed memory comprises Static random-access memory.

17. The statistics subsystem of claim 10 , wherein the counter comprises both packet count data and byte count data.

18. The statistics subsystem of claim 10 , wherein the electrical processing logic is further configured to:

compress the individual request for the unique addresses.

19. A system, comprising:

a network processor providing Ethernet processing of packets;

an offload statistics circuit communicatively coupled to the network processor receiving statistics from the network processor associated with the Ethernet processing of packets;

high speed memory communicatively coupled to the offload statistics circuit for caching of counters of the statistics; and

low speed memory communicatively coupled to the offload statistics circuit for storing the counters from the high speed memory based on detecting a rollover of rollover bits stored in each of the counters when adding the statistics thereto, wherein the counter in the high speed memory comprises a width of N, N being an integer, and wherein the rollover bits comprise a first rollover bit being a second most significant bit, N−1, of the counter and a second rollover bit being a first most significant bit, N, of the counter.

20. The system of claim 19 , wherein an update to the low speed memory is substantially faster than a rollover time for the counter in the high speed memory thereby allowing statistics to be cached in the high speed memory while updates take place to the low speed memory; and

wherein the first rollover bit and the second rollover bit are part of data stored in the counter thereby alleviating a need to maintain a rollover separate from each counter, and wherein a decision to move a counter from the high speed memory to the low speed memory is part of a read and update cycle of the counter in the high speed memory.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2023
From: BANK OF AMERICA, N.A.
To: CIENA CORPORATION
Reel/Frame 065630/0232 →
PATENT SECURITY AGREEMENT Recorded Nov 8, 2019
From: CIENA CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 050969/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 30, 2019
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: CIENA CORPORATION
Reel/Frame 050938/0389 →
PATENT SECURITY AGREEMENT Recorded Jul 16, 2014
From: CIENA CORPORATION
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033347/0260 →
SECURITY INTEREST Recorded Jul 15, 2014
From: CIENA CORPORATION
To: DEUTSCHE BANK AG NEW YORK BRANCH
Reel/Frame 033329/0417 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2012
From: NEUDORF, KENNETH EDWARD; ROBB, RICHARD; FROMM, KELLY DONALD; SEACRIST, J. KEVIN
To: CIENA CORPORATION
Reel/Frame 029335/0406 →