← Back to Patent Explorer
US7872993B2 Active / In Force US ⏱️ 2.0 years remaining

Method and system for classifying data packets

Assignee: Meta Platforms Inc
•
Filing: 2008-10-30
•
Granted: 2011-01-18
•
Expires: 2028-10-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Embodiments of the invention provide a method for building a classification tree based on a plurality of rules. Each rule includes multiple fields having different priority levels. The classification tree is built to provide for single pass classification of a received packet according to the multiple rules. The classification tree is built level-by-level, where each level represents one of the priority levels. Building a single level of the classification tree includes: creating, for each of the logical decision paths received from a next higher priority level, a respective sub-tree. The sub-tree includes only nodes and related logical decision paths that are necessary to satisfy rules associated with a respective next higher priority level node. Building of the single level further includes: creating, for each non-lowest priority level, logical decision paths from nodes within the current priority level to a next lower priority level.

Inventors

  • 👤 Kevin R. Bailey
  • 👤 Prashant R. Rao
  • 👤 Vincent Magret
  • 👤 Chiang Yeh

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-24 14:40
CPC Classifications
H; H04; H04L; H04L45/00; H04L45/54; H04L45/02; H04L45/46; H04L47/00; H04L47/10; H04L47/24; H04L47/2441

Claims Analysis

Total Claims: 25
Claim 1
Independent Claim 220 words
A method for building a classification tree structure configured to enable single pass classification of a received packet according to a plurality of rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, the method comprising: for a top priority level, performing the steps of: creating a node for each unique value within fields of the top priority level; identifying, for each of the nodes within the top priority level, a respective set of one or more rules matching the corresponding node value; selecting from the created nodes a head node; creating logical decision paths from the head node to the other nodes within the top priority level; creating logical decision paths from nodes within the top priority level to a next lower priority level; and for each of any remaining priority levels, performing the steps of: creating, for each of the logical decision paths received from a next higher priority level, a respective sub-tree including only those nodes and related logical decision paths necessary to satisfy rules associated with a respective next higher priority level node; creating, for each non-lowest priority level, logical decision paths from nodes within the current priority level to a next lower priority level; wherein the classification tree structure is a ternary classification tree structure.
Claim 2
Independent Claim 220 words
A method for building a classification tree structure configured to enable single pass classification of a received packet according to a plurality of rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, the method comprising: for a top priority level, performing the steps of: creating a node for each unique value within fields of the top priority level; identifying, for each of the nodes within the top priority level, a respective set of one or more rules matching the corresponding node value; selecting from the created nodes a head node; creating logical decision paths from the head node to the other nodes within the top priority level; creating logical decision paths from nodes within the top priority level to a next lower priority level; and for each of any remaining priority levels, performing the steps of: creating, for each of the logical decision paths received from a next higher priority level, a respective sub-tree including only those nodes and related logical decision paths necessary to satisfy rules associated with a respective next higher priority level node; creating, for each non-lowest priority level, logical decision paths from nodes within the current priority level to a next lower priority level; wherein the classification tree structure is a ternary classification tree structure.
Claim 3
Dependent Claim 17 words
The method of claim 1 , wherein at least one logical decision path includes a wildcard node.
Claim 4
Dependent Claim 17 words
The method of claim 1 , wherein at least one logical decision path includes an unmatched node.
Claim 5
Dependent Claim 53 words
The method of claim 3 , wherein if a logical decision path includes an unmatched node within a first level of the ternary classification tree structure then a respective sub-tree has no wildcard nodes at the first level, wherein the sub-tree contains a portion of the logical decision path at the first level.
Claim 6
Dependent Claim 26 words
The method of claim 1 , wherein the head node is one of: a node selected randomly and a node selected according to a predefined function.
Claim 7
Dependent Claim 36 words
The method of claim 5 , wherein the head node is one of: a first created node, a node having a middle value, a node having a median value, and a node having an average value.
Claim 8
Dependent Claim 157 words
The method of claim 1 , wherein the step of creating the respective sub-tree comprises: building a top level of the sub-tree, the step of building the top level of the sub-tree comprising: creating a node for each unique value within fields of the top level of a subset of the plurality of rules; identifying, for each of the nodes within the top level, a respective set of one or more rules matching the corresponding node value using the subset of the plurality of rules; selecting from the created nodes a head node; creating logical decision paths from the head node to the other nodes within the top level; and creating logical decision paths from nodes within the top priority level to a next lower priority level; wherein the subset of the plurality of rules includes matching rules of a node having a next higher priority level to the top level and is associated with the sub-tree.
Claim 9
Dependent Claim 100 words
The method of claim 1 , wherein the step of creating the logical decision paths from the head node to the other nodes within the top priority level comprises: forming a first node group comprising nodes of the top priority level having values greater than a value of the head node; forming a second node group comprising nodes of the top priority level having values lower than the value of the head node; selecting a first child of the head node from the first node group; and selecting a second child of the head node from the second node group.
Claim 10
Dependent Claim 149 words
The method of claim 8 , wherein the first child is a node having a next greater value as compared to the value of the head node and the second child is a node having a next lower value as compared to the value of the head node, the step of creating the logical decision paths from the head node to the other nodes within the top priority level further comprising: for each node of the first node group, except a node having the greatest value, selecting a child node, wherein a value of the child node is a next greater value when compared to a value of the node; for each node of the second node group, except a node having the lowest value, selecting a child node, wherein a value of the child node is a next lower value when compared to a value of the node.
Claim 11
Dependent Claim 236 words
A non-transitory computer-readable storage medium having stored thereon instructions for controlling a computer system to perform a method of building a classification tree structure configured to enable single pass classification of a received packet according to a plurality of rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, the method comprising: for a top priority level, performing the steps of: creating a node for each unique value within fields of the top priority level; identifying, for each of the nodes within the top priority level, a respective set of one or more rules matching the corresponding node value; selecting from the created nodes a head node; creating logical decision paths from the head node to the other nodes within the top priority level; creating logical decision paths from nodes within the top priority level to a next lower priority level; and for each of any remaining priority levels, performing the steps of: creating, for each of the logical decision paths received from a next higher priority level, a respective sub-tree including only those nodes and related logical decision paths necessary to satisfy rules associated with a respective next higher priority level node; creating, for each non-lowest priority level, logical decision paths from nodes within the current priority level to a next lower priority level; wherein the classification tree structure is a ternary classification tree structure.
Claim 12
Dependent Claim 236 words
A non-transitory computer-readable storage medium having stored thereon instructions for controlling a computer system to perform a method of building a classification tree structure configured to enable single pass classification of a received packet according to a plurality of rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, the method comprising: for a top priority level, performing the steps of: creating a node for each unique value within fields of the top priority level; identifying, for each of the nodes within the top priority level, a respective set of one or more rules matching the corresponding node value; selecting from the created nodes a head node; creating logical decision paths from the head node to the other nodes within the top priority level; creating logical decision paths from nodes within the top priority level to a next lower priority level; and for each of any remaining priority levels, performing the steps of: creating, for each of the logical decision paths received from a next higher priority level, a respective sub-tree including only those nodes and related logical decision paths necessary to satisfy rules associated with a respective next higher priority level node; creating, for each non-lowest priority level, logical decision paths from nodes within the current priority level to a next lower priority level; wherein the classification tree structure is a ternary classification tree structure.
Claim 13
Independent Claim 272 words
A method for classifying incoming data packets, the method comprising: receiving a data packet comprising a plurality of packet fields, each field having associated with it a different priority level; and determining a classification rule matching the data packet via single pass of a ternary classification tree structure representing multiple classification rules, the ternary classification tree structure comprising a plurality of levels, wherein a top level of the ternary classification tree structure corresponds to a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level, wherein the determining step comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 14
Independent Claim 272 words
A method for classifying incoming data packets, the method comprising: receiving a data packet comprising a plurality of packet fields, each field having associated with it a different priority level; and determining a classification rule matching the data packet via single pass of a ternary classification tree structure representing multiple classification rules, the ternary classification tree structure comprising a plurality of levels, wherein a top level of the ternary classification tree structure corresponds to a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level, wherein the determining step comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 15
Dependent Claim 23 words
The method of claim 11 , further comprising: applying a pre-defined action to the packet when no matching classification rule has been identified.
Claim 16
Dependent Claim 30 words
The method of claim 12 , wherein the pre-defined action is one of: dropping the packet, quarantining the packet, and transmitting the packet toward a destination address of the packet.
Claim 17
Dependent Claim 38 words
The method of claim 11 , further comprising: if the logical decision path for the data packet reaches an unmatched node at one of plurality of levels, providing information that the data packet has no matching classification rules.
Claim 18
Dependent Claim 46 words
The method of claim 14 , wherein the provided information includes additional data comprising at least one of packet fields corresponding to each of levels preceding the one of the plurality of levels and a packet field corresponding to the one of the plurality of levels.
Claim 19
Dependent Claim 178 words
The method of claim 11 , wherein the step of determining the logical decision path within a current level comprises: comparing a value of a head node of current level with a value of a corresponding packet field to determine a next node of the logical decision path, wherein, when the current level is the top level, the head node is the root node, and wherein, when the current level is not the top level, the head node is defined by the logical decision path at a previous level; upon determining that the value of the head node is lower than the value of the packet field, selecting a first child of the head node as the next node, the first child having a value greater than the value of the root node; and upon determining that the value of the head node is greater than the value of the packet field, selecting a second child of the head node as the next node, the second child having a value lower than the value of the root node.
Claim 20
Dependent Claim 105 words
The method of claim 16 , wherein the step of determining the logical path within the current level further comprises: until the logical decision path reaches the matching node or unmatched node within the current level, selecting a next node of the logical decision path within the current level, wherein: the next node is a first child of a preceding node if a value of the preceding node is lower than the value of the packet field; and the next node is a second child of the preceding node if the value of the preceding node is greater than the value of the packet field.
Claim 21
Dependent Claim 288 words
A non-transitory computer-readable storage medium having stored thereon instructions for controlling a computer system to perform a method for classifying incoming data packets, the method comprising: receiving a data packet comprising a plurality of packet fields, each field having associated with it a different priority level; and determining a classification rule matching the data packet via single pass of a ternary classification tree structure representing multiple classification rules, the ternary classification tree structure comprising a plurality of levels, wherein a top level of the ternary classification tree structure corresponds to a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level, wherein the determining step comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 22
Dependent Claim 288 words
A non-transitory computer-readable storage medium having stored thereon instructions for controlling a computer system to perform a method for classifying incoming data packets, the method comprising: receiving a data packet comprising a plurality of packet fields, each field having associated with it a different priority level; and determining a classification rule matching the data packet via single pass of a ternary classification tree structure representing multiple classification rules, the ternary classification tree structure comprising a plurality of levels, wherein a top level of the ternary classification tree structure corresponds to a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level, wherein the determining step comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 23
Dependent Claim 305 words
A packet processor comprising: a memory for storing a ternary classification tree structure representing a plurality of classification rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, wherein the ternary classification tree structure comprises a plurality of levels, a top level of the classification tree representing a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level; and a processor for determining a classification rule matching an incoming data packet via a single pass of the ternary classification tree structure using a method for classifying data packets, wherein the data packet comprises a plurality of packet fields, each field having associated with it a different priority level, and wherein the method comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 24
Dependent Claim 305 words
A packet processor comprising: a memory for storing a ternary classification tree structure representing a plurality of classification rules, each rule having associated with it a plurality of fields, each field having associated with it a priority level, wherein the ternary classification tree structure comprises a plurality of levels, a top level of the classification tree representing a highest priority level and each next level of the ternary classification tree structure corresponds to a next lower priority level; and a processor for determining a classification rule matching an incoming data packet via a single pass of the ternary classification tree structure using a method for classifying data packets, wherein the data packet comprises a plurality of packet fields, each field having associated with it a different priority level, and wherein the method comprises: selecting a packet field, the selected packet field associated with the highest priority level; proceeding along a logical decision path corresponding to the data packet within the ternary classification tree structure, level-by-level, starting with a root node at the top level and moving toward a bottom level, wherein for each level of the ternary classification tree structure: comparing a value of the selected packet field to nodes of the logical decision path running within the current level of the ternary classification tree structure to find a matching node, the matching node having a value the same as a value of the selected packet field, wherein the matching node defines the logical decision path to a next lower level of the ternary classification tree structure; and for each non-lowest level, upon finding the matching node, selecting a packet field having a next lower priority level; and upon finding a matching node of the bottom level, providing a classification rule associated with the found matching node as the classification rule matching the data packet.
Claim 25
Dependent Claim 51 words
The packet processor of claim 19 , wherein a network router receives the data packet and provides the data packet to the packet processor for determining the matching classification rule, wherein the network router is configured to apply to the data packet an action associated with the determined matching classification rule.

References Cited (Backward Citations)

US6134599A Cited
US6397324B1 Cited
US20070195714A1 Cited
US20030193959A1 Cited
EP1453253A1 Cited
EP1515501A1 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2014-01-17 2014-07-19 2015-01-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2018-01-17 2018-07-19 2019-01-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2022-01-17 2022-07-19 2023-01-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag