IP Library Granted Patent US 10,284,690
Granted Patent B2
US 10,284,690 · App. 14/150,635 · Granted May 7, 2019

Methods and systems for distribution of packets among parsing clusters

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,284,690
App. No.
14/150,635
Granted
May 7, 2019
Kind
B2
Abstract

A method for parsing network packets via one or more clusters configured to parse network packets comprises receiving one or more packets to be parsed; determining a candidate cluster of the one or more clusters for parsing the one or more packets; transmitting the one or more packets to the candidate cluster; launching the candidate cluster to parse the one or more packets when a launch condition is met; and receiving parse results for the one or more packets from the candidate cluster. The launch condition may be met after transmitting the one or more packets meets a fraction of a parsing capacity of the candidate cluster. The fraction may be one such that the transmitting the one or more packets meets a parsing capacity of the candidate cluster. The launch condition may also be met when a time elapsed since a previous cluster was launched reaches a delay limit.

Claims (55)

1. A method for parsing network packets via a plurality of clusters configured to parse network packets, the method comprising:

receiving one or more packets to be parsed;

determining a candidate cluster of the plurality clusters for parsing the one or more packets;

transmitting the one or more packets to the candidate cluster;

launching the candidate cluster to parse the one or more packets when a launch condition is met, wherein

the launch condition is met after transmitting the one or more packets meets a fraction of a parsing capacity of the candidate cluster, wherein the fraction is a positive number less than or equal to one, and wherein the launch condition is also met when a time elapsed since a previous cluster was launched reaches a delay limit that depends on an average time that each one cluster takes to parse packets transmitted to the one cluster; and

receiving parse results for the one or more packets from the candidate cluster.

2. The method of claim 1 , wherein the delay limit is approximately the average time divided by the number of the plurality of clusters.

3. The method of claim 1 , wherein the launch condition is met when a time elapsed since a previous cluster was launched reaches a delay limit.

4. The method of claim 1 , wherein the launch condition is met when at least one cluster different from the candidate cluster is idle and can receive a packet for parsing.

5. The method of claim 4 , wherein the launch condition is also met when transmitting the one or more packets meets a parsing capacity of the candidate cluster.

6. The method of claim 5 , wherein the launch condition is also met when a time elapsed since a previous cluster was launched reaches a delay limit.

7. The method of claim 1 , wherein determining the candidate cluster includes:

checking whether a current candidate cluster can receive a packet for parsing; and

when the current candidate cluster cannot receive a packet for parsing, selecting a new candidate cluster as the candidate cluster.

8. The method of claim 7 , wherein determining the candidate cluster further includes:

checking whether the candidate cluster is parsing some packets; and

when the current candidate cluster is parsing some packets, waiting for the candidate cluster to complete the parsing.

9. A system for parsing network packets via a plurality of clusters configured to parse network packets, the system comprising:

a receiver configured to receive one or more packets to be parsed; and

a launcher configured to:

determine a candidate cluster of the plurality clusters for parsing the one or more packets;

transmit the one or more packets to the candidate cluster; and

launch the candidate cluster to parse the one or more packets when a launch condition is met;

a delay timer in communication with the launcher and configured to measure a time elapsed since a previous cluster was launched, wherein the launcher determines that the launch condition is met when the delay timer reaches a delay limit that depends on an average time that each one cluster takes to parse packets transmitted to the one cluster; and

a packet target receiving parse results for the one or more packets from the candidate cluster.

10. The system of claim 9 , wherein:

the system comprises a load pointer configured to point to a current candidate cluster of the plurality of clusters;

when the current candidate cluster cannot receive a packet for parsing, the load pointer is updated to point to a next candidate cluster of the plurality of clusters; and

the launcher selects the cluster pointed to by the load pointer as the candidate cluster.

11. The system of claim 10 , wherein when the next candidate cluster is parsing packets, the launcher waits for the one or more engines in the candidate cluster to complete parsing packets and become idle.

12. The system of claim 9 , wherein a cluster of the plurality of clusters comprises one or more engines configured to parse network packets.

13. The system of claim 12 , wherein the cluster comprises a plurality of engines each configured to parse network packets and further comprises:

a ready counter indicating a number of a subset of the plurality engines that can receive packets for parsing; and

an executing flag indicating that the cluster is executing, that is, at least one engine of the one or more engines are parsing one or more packets.

14. The system of claim 13 , wherein the launcher is further configured to:

select a first cluster as the candidate cluster;

when the ready counter of the candidate cluster is zero, select a second cluster as the candidate cluster;

when the executing flag of the candidate cluster indicates that the candidate cluster is executing, wait for the one or more engines in the candidate cluster to complete parsing packets and become idle.

15. The system of claim 9 , wherein the delay limit is approximately the average time divided by the number of the plurality of clusters.

16. A system for parsing network packets via a plurality of clusters configured to parse network packets, the system comprising:

a receiver configured to receive one or more packets to be parsed;

means for determining a candidate cluster of the plurality of clusters for parsing the one or more packets;

means for transmitting the one or more packets to the candidate cluster; and

means for launching the candidate cluster to parse the one or more packets when a launch condition is met;

means for measuring a time elapsed since a previous cluster was launched, wherein the means for launching determines that the launch condition is met when the means for measuring reaches a delay limit that depends on an average time that each one cluster takes to parse packets transmitted to the one cluster; and

means for receiving parse results for the one or more packets from the candidate cluster.

17. The system of claim 16 , wherein the delay limit is approximately the average time divided by the number of the plurality of clusters.

18. A non-transitory computer readable medium storing a computer program readable by one or more processors, wherein the computer program, when executed by one or more processors cause the one or more processors to execute a method for parsing network packets via a plurality of clusters configured to parse network packets, the method comprising:

receiving one or more packets to be parsed;

determining a candidate cluster of the plurality of clusters for parsing the one or more packets;

transmitting the one or more packets to the candidate cluster;

launching the candidate cluster to parse the one or more packets when a launch condition is met, wherein the launch condition is met when a time elapsed since a previous cluster was launched reaches a delay limit that depends on an average time that each one cluster takes to parse packets transmitted to the one cluster; and

receiving parse results for the one or more packets from the candidate cluster.

19. The non-transitory computer readable medium of claim 18 , wherein the delay limit is approximately the average time divided by the number of the plurality of clusters.

Assignments (6)
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 Dec 12, 2019
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 051260/0567 →
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 Jan 8, 2014
From: SNYDER, WILSON PARKHURST, II; KATZ, DANIEL ADAM
To: CAVIUM INC.
Reel/Frame 031922/0215 →