IP Library Granted Patent US 9,191,321
Granted Patent B2
US 9,191,321 · App. 14/570,626 · Granted Nov 17, 2015

Packet classification

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 9,191,321
App. No.
14/570,626
Granted
Nov 17, 2015
Kind
B2
Abstract

A packet classification system, methods, and corresponding apparatus are provided for enabling packet classification. A processor of a security appliance coupled to a network uses a classifier table having a plurality of rules, the plurality of rules having at least one field, to build a decision tree structure including a plurality of nodes, the plurality of nodes including a subset of the plurality of rules. The methods may produce wider, shallower trees that result in shorter search times and reduced memory requirements for storing the trees.

Claims (29)

1. A method comprising:

in a processor, building a decision tree structure including a plurality of nodes, each node representing a subset of a plurality of rules having at least one field;

for at least one node of the decision tree structure, determining a number of cuts that may be made on each at least one field creating child nodes equal to the number of cuts and selecting a field on which to cut the at least one node based on a comparison of an average of a difference between an average number of rules per child node created and an actual number of rules per child node created per each at least one field;

cutting the at least one node into a number of child nodes on the selected field; and

storing the decision tree structure in a memory, wherein selecting the field on which to cut the at least one node based on the comparison enables the processor to build a wider, shallower decision tree structure relative to selecting the field on which to cut not based on the comparison, reducing a search time of a search performed using the decision tree structure stored in the memory.

2. The method of claim 1 wherein the plurality of rules are stored in a classifier table.

3. The method of claim 1 wherein determining the number of cuts is based on a maximum number of cuts for a given storage capacity.

4. The method of claim 1 wherein selecting includes selecting the field on which to cut the at least one node into a number of child nodes based on the field being a field of the at least one field with the smallest average of the difference between an average number of rules per child node and an actual number of rules per child node.

5. The method of claim 1 wherein cutting includes cutting the at least one node in an event the at least one node has greater than a predetermined number of the subset of the plurality of rules.

6. The method of claim 5 wherein the predetermined number is an adjustable number, and building includes controlling a depth of the decision tree structure by iteratively adjusting the predetermined number.

7. The method of claim 6 wherein adjusting the predetermined number includes incrementing the predetermined number with increasing levels of the tree.

8. The method of claim 1 wherein in an event cutting creates a plurality of child nodes and only one child node has a subset of the plurality of rules, storing at the at least one node an identifier of a field of the at least one field and a number of bits of the field of the at least one field to skip upon traversing the node to obtain a rule match.

9. The method of claim 8 wherein the number of bits of the field of the at least one field to skip is the same number as a number of bits used to cut the at least one node.

10. An apparatus comprising:

a memory;

a processor coupled to the memory, the processor configured to build a decision tree structure including a plurality of nodes, each node representing a subset of a plurality of rules having at least one field; and

the processor further configured to determine, for at least one node of the decision tree structure, a number of cuts that may be made on each at least one field creating child nodes equal to the number of cuts and to select a field on which to cut the at least one node based on a comparison of an average of a difference between an average number of rules per child node created and an actual number of rules per child node created per each at least one field, wherein the processor is further configured to cut the at least one node into a number of child nodes on the selected field and to store the decision tree structure in the memory, wherein selecting the field on which to cut the at least one node based on the comparison enables the processor to build a wider, shallower decision tree structure relative to selecting the field on which to cut not based on the comparison, reducing a search time of a search performed using the decision tree structure stored in the memory.

11. The apparatus of claim 10 wherein the processor is further configured to determine the number of cuts based on a maximum number of cuts for a given storage capacity.

12. The apparatus of claim 10 wherein the processor is further configured to select the field on which to cut the at least one node into a number of child nodes based on the field being a field of the at least one field with the smallest average of the difference between an average number of rules per child node and an actual number of rules per child node.

13. The apparatus of claim 10 wherein the processor is further configured to cut the at least one node in an event the at least one node has greater than a predetermined number of the subset of the plurality of rules.

14. The apparatus of claim 13 wherein the predetermined number is an adjustable number, and wherein the processor is further configured to control a depth of the decision tree structure by iteratively adjusting the predetermined number.

15. The apparatus of claim 14 wherein adjusting the predetermined number includes incrementing the predetermined number with increasing levels of the tree.

16. The apparatus of claim 11 wherein in an event cutting creates a plurality of child nodes and only one child node has a subset of the plurality of rules, the processor is further configured to store at the at least one node an identifier of a field of the at least one field and a number of bits of the field of the at least one field to skip upon traversing the node to obtain a rule match and the number of bits of the field of the at least one field to skip is the same number as a number of bits used to cut the node.

17. A non-transitory computer-readable medium having encoded thereon a sequence of instructions which, when executed by a processor, causes the processor to:

build a decision tree structure including a plurality of nodes, each node representing a subset of a plurality of rules having at least one field;

determine, for at least one node of the decision tree structure, a number of cuts that may be made on each at least one field creating child nodes equal to the number of cuts;

select a field on which to cut the at least one node based on a comparison of an average of a difference between an average number of rules per child node created and an actual number of rules per child node created per each at least one field;

cut the at least one node into a number of child nodes on the selected at least one field; and

store the decision tree structure in a memory, wherein selecting the field on which to cut the at least one node based on the comparison enables the processor to build a wider, shallower decision tree structure relative to selecting the field on which to cut not based on the comparison, reducing a search time of a search performed using the decision tree structure stored in the memory.

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 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
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 14, 2015
From: GOYAL, RAJAN; BULLIS, KENNETH A.; BILLA, SATYANARAYANA LAKSHMIPATHI
To: CAVIUM, INC.
Reel/Frame 034705/0800 →