IP Library Granted Patent US 10,680,957
Granted Patent B2
US 10,680,957 · App. 14/289,533 · Granted Jun 9, 2020

Method and apparatus for analytics in a network switch

Inventors: Weihuang Wang (Los Gatos, CA); Gerald Schmidt (San Jose, CA); Tsahi Daniel (Palo Alto, CA); Saurabh Shrivastava (Saratoga, CA)
Assignee: Cavium International
H04L47/20H04L12/1407H04L12/1435H04L43/0805H04L43/0888H04L43/0894H04L41/0893H04L41/142H04M15/58
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 10,680,957
App. No.
14/289,533
Granted
Jun 9, 2020
Kind
B2
Abstract

Embodiments of the present invention relate to a centralized network analytic device, the centralized network analytic device efficiently uses on-chip memory to flexibly perform counting, traffic rate monitoring and flow sampling. The device includes a pool of memory that is shared by all cores and packet processing stages of each core. The counting, the monitoring and the sampling are all defined through software allowing for greater flexibility and efficient analytics in the device. In some embodiments, the device is a network switch.

Claims (41)

1. A network switch comprising:

a plurality of processing cores each including a plurality of pipeline stages for processing incoming packet data;

an interface module including a plurality of client interfaces for communicating with each of the plurality of pipeline stages of the cores, wherein the communicating comprises receiving and responding to analytics requests from the each of the plurality of pipeline stages regarding policing, counting or sampling of the incoming packet data; and

a common memory pool coupled with each of the cores via the client interfaces of the interface module and storing re-programmable policing, counting or sampling protocol data that defines how to police, count or sample the packet data for all of the pipeline stages of all of the cores, wherein the common memory pool is divided into a plurality of analytics banks that each include a counter processing unit, a policing processing unit and a sampling processing unit such that each of the analytics banks is able to be switched from one of counting with the counter processing unit, policing with the policing processing unit and sampling with the sampling processing unit to another of the counting with the counter processing unit, the policing with the policing processing unit and the sampling with the sampling processing unit.

2. The network switch of claim 1 , further comprising an interconnect.

3. The network switch of claim 2 , wherein the plurality of client interfaces and the plurality of analytics banks are interconnected through the interconnect.

4. The network switch of claim 2 , wherein each of the plurality of client interfaces is programmable to map to one or more of the plurality of analytics banks.

5. The network switch of claim 2 , wherein memories from the common memory pool are logically organized into the plurality of analytics banks.

6. The network switch of claim 2 , wherein the plurality of analytics banks is homogenous.

7. The network switch of claim 2 , wherein each of the plurality of analytics banks includes an on-chip memory.

8. The network switch of claim 2 , wherein the plurality of client interfaces is similarly configured.

9. The network switch of claim 2 , wherein each of the plurality of client interfaces includes a request interface for receiving requests and a response interface for sending responses.

10. The network switch of claim 9 , wherein the request interface classifies each request and determines a target analytics bank and a target entry address within the target analytics bank that the request should target, wherein the target analytics bank is one of the plurality of analytics banks.

11. The network switch of claim 10 , wherein the request is sent to the interconnect to be routed to the target analytics bank for processing.

12. The network switch of claim 2 , wherein each of the plurality of client interfaces is configured as one of four modes: counter, policing, policing with billing counters and sampling.

13. The network switch of claim 12 , wherein the counting mode, the policing mode and the sampling mode are each allocated at bank granularity, and wherein the policing with billing counters mode is allocated at granularity of a pair of analytics banks.

14. The network switch of claim 13 , wherein analytics bank 2*I is for policing and the immediate next analytics bank 2*i+1 is for corresponding billing counters.

15. The network switch of claim 2 , wherein when an analytics bank is in counting mode, the analytics bank is configured in one of four configurations, wherein modification operations are different for each of the configurations.

16. The network switch of claim 15 , wherein the modification operations include incrementing the value of an events field by one for each incoming request, incrementing the value of a sum field by the value of the incoming request, and incrementing the value of a sumOfSquare field by the square of the value of the incoming request.

17. The network switch of claim 15 , wherein standard deviation of network activities is calculated by subtracting the square of average of sum from the average of sumOfSquare.

18. The network switch of claim 15 , wherein no result response goes out of the analytics bank, wherein counter values are stored in memory of the analytics bank.

19. The network switch of claim 15 , wherein a fifth configuration is only used for policing with billing counter mode.

20. The network switch of claim 2 , wherein when an analytics bank is in policing mode, the analytics bank performs a two-rate three color rate monitoring function.

21. The network switch of claim 20 , wherein every row of the analytics bank has one policer, wherein the policer has configuration and internal state.

22. The network switch of claim 20 , wherein the policer returns a color of a packet to one of the client interfaces that originated the packet.

23. The network switch of claim 21 , wherein when the originating client interface is configured as policing with billing counters mode, the analytics bank is sends a counter request to its immediate next analytics bank to calculate byte count for a packet in each color.

24. The network switch of claim 2 , wherein when an analytics bank is in sampling mode, the analytics bank supports N/M random sampling, wherein N contiguous events are sampled in every M events interval.

25. The network switch of claim 24 , wherein a response is returned to the originating client interface for each request.

26. A common memory pool of a network switch, the common memory pool comprising a non-transitory computer readable medium coupled with each of a plurality of cores and storing re-programmable policing, counting or sampling protocol data that defines how to police, count or sample the packet data for all of the pipeline stages of all of the cores, the cores each including a plurality of pipeline stages for processing incoming packet data, wherein the common memory pool is divided into a plurality of analytics banks that each include a counter processing unit, a policing processing unit and a sampling processing unit such that each of the analytics banks is able to be switched from one of counting with the counter processing unit, policing with the policing processing unit and sampling with the sampling processing unit to another of the counting with the counter processing unit, the policing with the policing processing unit and the sampling with the sampling processing unit.

27. A network switch comprising:

a plurality of processing cores each including a plurality of pipeline stages for processing incoming packet data;

a common memory pool coupled with each of the cores and logically divided into a plurality of analytics banks, the analytics banks storing re-programmable policing, counting or sampling protocol data that defines how to police, count or sample packet data for all of the pipeline stages of all of the cores, wherein each of the analytics banks include a counter processing unit, a policing processing unit and a sampling processing unit such that each of the analytics banks is able to be switched from one of counting with the counter processing unit, policing with the policing processing unit and sampling with the sampling processing unit to another of the counting with the counter processing unit, the policing with the policing processing unit and the sampling with the sampling processing unit; and

an interface module including a plurality of client interfaces, wherein each client interface is associated with a separate one of the analytics banks and configured to receive analytics requests from the plurality of pipeline stages of the cores and forward the analytics requests to the associated analytics banks, wherein the analytics requests relate to the policing, the counting or the sampling described by the re-programmable policing, counting or sampling protocol data stored on the common memory pool.

28. A network switch comprising:

a plurality of processing cores each including a plurality of pipeline stages for processing incoming packet data;

an interface module including a plurality of client interfaces for communicating with each of the plurality of pipeline stages of the cores, wherein the communicating comprises receiving and responding to analytics requests from the each of the plurality of pipeline stages regarding policing, counting or sampling of the incoming packet data; and

a common memory pool coupled with each of the cores via the client interfaces of the interface module and storing re-programmable policing, counting or sampling protocol data that defines how to police, count or sample the packet data for all of the pipeline stages of all of the cores, wherein the common memory pool is divided into a plurality of analytics banks that each include two of a group comprising a policing processing unit, a counter processing unit and a sampling processing unit such that each of the analytics banks is able to be switched from one of counting with the counter processing unit, policing with the policing processing unit and sampling with the sampling processing unit to another of the counting with the counter processing unit, the policing with the policing processing unit and the sampling with the sampling processing unit.

29. A network switch comprising:

a plurality of processing cores each including a plurality of pipeline stages for processing incoming packet data;

an interface module including a plurality of client interfaces for communicating with each of the plurality of pipeline stages of the cores, wherein the communicating comprises receiving and responding to analytics requests from the each of the plurality of pipeline stages regarding policing, counting or sampling of the incoming packet data; and

a common memory pool coupled with each of the cores via the client interfaces of the interface module and storing re-programmable policing, counting or sampling protocol data that defines how to police, count or sample the packet data for all of the pipeline stages of all of the cores, wherein the common memory pool is divided into a plurality of analytics banks that each include a sampling processing unit, a counter processing unit and a policing processing unit such that an analytic bank is able to be switched from one of counting with the counter processing unit, policing with the policing processing unit and sampling with the sampling processing unit to another of the counting with the counter processing unit, the policing with the policing processing unit and the sampling with the sampling processing unit.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 27, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047577/0653 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2016
From: CAVIUM NETWORKS LLC
To: CAVIUM, INC.
Reel/Frame 038040/0251 →
MERGER Recorded Mar 8, 2016
From: XPLIANT, INC.
To: CAVIUM NETWORKS LLC
Reel/Frame 038039/0328 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2014
From: WANG, WEIHUANG; SCHMIDT, GERALD; DANIEL, TSAHI; SHRIVASTAVA, SAURABH
To: XPLIANT, INC.
Reel/Frame 033286/0294 →