IP Library › Granted Patent US 12,335,154
Granted Patent B2
US 12,335,154 · App. 18/129,038 · Granted Jun 17, 2025

Dynamic leaf determination for tree creations for high-speed network policy search during data packet scanning

Inventor: Shushan Wen (Pleasant Hill, CA)
Assignee: Fortinet, Inc.
H04L47/20G06F16/2246H04L47/2441H04L63/0263H04L63/20
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 12,335,154
App. No.
18/129,038
Granted
Jun 17, 2025
Kind
B2
Abstract

During high-speed network policy searching for data packets, an upper limit and a lower limit for a policy count are predefined for a ratio of the policy count to the sum of the policy count and the range count. A policy tree builder generates a policy tree image from a set of recursive operations on the raw policy set including an on-the-fly determination of whether a specific node is a leaf based on a leaf policy count limit, wherein for a selected dimension, the specific node is converted to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise the specific node is converted to two or more child nodes. A network processor configures at least one set of registers, at least one set of tables, and at least one sequence of instructions according to the policy tree image.

Claims (26)

1. A network processor of a network computing device on a data communication network, for dynamic leaf generation determination for generic tree policy search optimization in high-speed network processor configuration for examining data packets, the network processor comprising:

a raw policy set for the network processor and a dimension bitmap corresponding to the raw policy set;

a policy tree builder to generate a policy tree image from a set of recursive operations on the raw policy set including an on-the-fly determination of whether a specific node, corresponding to a selected dimension of the raw policy set, is a leaf based on a leaf policy count limit, wherein for the selected dimension, the specific node is associated with a policy count defining a number of policies from the raw policy set under the specific node and a range count defining a number of distinct ranges of the selected dimension, wherein the specific node is converted to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise the specific node is converted to two or more child nodes, and wherein the leaf policy count limit is determined from a predetermined upper and lower limit and a ratio of the policy count and a sum of the policy count and the range count;

network processor hardware to configure at least one set of registers, at least one set of tables, and at least one sequence of instructions according to the policy tree image; and

a queue to receive data packets of a data packet session,

wherein the network processor applies the optimized policy tree image to the data packet session from the data communication network by the network processor.

2. The network processor of claim 1 , wherein the leaf policy count is related to the policy count lower limit and a product of the ratio and a difference between the policy count upper limit and the policy count lower limit.

3. The network processor of claim 1 , wherein the dimension comprises at least one of a source IP, a destination IP, a protocol, a source port and a destination port.

4. The network processor of claim 1 , wherein the network processor hardware comprises a policy search module.

5. The network processor of claim 1 , wherein the network processor is part of an access point device.

6. The network processor of claim 1 , further comprising a network processor driver to call the policy tree builder to generate the policy tree.

7. The network processor of claim 1 , further comprising a network processor driver to translate the policy set for the network processor hardware.

8. A method in a network processor of a network computing device on a data communication network, for dynamic leaf generation determination for generic tree policy search optimization in high-speed network processor configuration for examining data packets, the method comprising:

storing a raw policy set for the network processor and a dimension bitmap corresponding to the raw policy set;

generating a policy tree image from a set of recursive operations on the raw policy set including an on-the-fly determination of whether a specific node is a leaf based on a leaf policy count limit, corresponding to a selected dimension of the raw policy set, is a leaf based on a leaf policy count limit, wherein for the selected dimension, the specific node is associated with a policy count defining a number of policies from the raw policy set under the specific node and a range count defining a number of distinct ranges of the selected dimension, wherein the specific node is converted to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise the specific node is converted to two or more child nodes, and wherein the leaf policy count limit is determined from a predetermined upper and lower limit and a ratio of the policy count and a sum of the policy count and the range count;

converting, for a selected dimension, the specific node to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise converting the specific node to two or more child nodes;

configuring at least one set of registers, at least one set of tables, and at least one sequence of instructions from the network processor hardware according to the policy tree image;

receiving, in a queue, data packets of a data packet session; and

applying, by the network processor, the optimized policy tree image to the data packet session from the data communication network by the network processor.

9. A non-transitory computer-readable media in a network processor of a network computing device on a data communication network, implemented at least partially in hardware for, when executed by a processor, for dynamic leaf generation determination for generic tree policy search optimization in high-speed network processor configuration for examining data packets, the method comprising the steps of:

storing a raw policy set for the network processor and a dimension bitmap corresponding to the raw policy set;

generating a policy tree image from a set of recursive operations on the raw policy set including an on-the-fly determination of whether a specific node is a leaf based on a leaf policy count limit, corresponding to a selected dimension of the raw policy set, is a leaf based on a leaf policy count limit, wherein for the selected dimension, the specific node is associated with a policy count defining a number of policies from the raw policy set under the specific node and a range count defining a number of distinct ranges of the selected dimension, wherein the specific node is converted to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise the specific node is converted to two or more child nodes, and wherein the leaf policy count limit is determined from a predetermined upper and lower limit and a ratio of the policy count and a sum of the policy count and the range count;

converting, for a selected dimension, the specific node to the leaf if the policy count does not exceed the leaf policy count limit and the range count for the selected dimension does not exceed a product of the leaf policy count limit and a range count limit coefficient, and otherwise converting the specific node to two or more child nodes;

configuring at least one set of registers, at least one set of tables, and at least one sequence of instructions from the network processor hardware according to the policy tree image;

receiving, in a queue, data packets of a data packet session; and

applying, by the network processor, the optimized policy tree image to the data packet session from the data communication network by the network processor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2023
From: WEN, SHUSHAN
To: FORTINET, INC.
Reel/Frame 063180/0923 →
Continuity (2)
Continuation In Part 17566855 · Dec 31, 2021
Related Publication 20230239213A1 · Jul 27, 2023
References Cited (34)
US 5951651A · Lakshman et al. · 1999 [cited by applicant]
US 6587466B1 · Bhattacharya · 2003 [cited by examiner]
US 6880158B1 · Basso et al. · 2005 [cited by applicant]
US 6970462B1 · McRae · 2005 [cited by applicant]
US 7236493B1 · McRae · 2007 [cited by applicant]
US 7249149B1 · Eatherton et al. · 2007 [cited by applicant]
US 9270586B2 · Assarpour · 2016 [cited by applicant]
US 10103976B2 · Nainar et al. · 2018 [cited by applicant]
US 10460250B2 · Goyal · 2019 [cited by examiner]
US 10944724B2 · Guo · 2021 [cited by examiner]
US 12041032B2 · Wen · 2024 [cited by examiner]
US 20020023089A1 · Woo · 2002 [cited by examiner]
US 20050132034A1 · Iglesia et al. · 2005 [cited by applicant]
US 20100175124A1 · Miranda · 2010 [cited by examiner]
US 20130089099A1 · Pollock et al. · 2013 [cited by applicant]
US 20130166491A1 · Zhang · 2013 [cited by examiner]
US 20140086240A1 · Assarpour · 2014 [cited by applicant]
US 20150117450A1 · Thibaut · 2015 [cited by applicant]
US 20150195194A1 · Goyal · 2015 [cited by examiner]
US 20160191466A1 · Pernicha · 2016 [cited by applicant]
US 20160335298A1 · Haggerty et al. · 2016 [cited by applicant]
US 20180152385A1 · Xu · 2018 [cited by examiner]
US 20180287859A1 · Desigowda et al. · 2018 [cited by applicant]
US 20190306118A1 · Guo · 2019 [cited by examiner]
US 20200403975A1 · Kashima et al. · 2020 [cited by applicant]
US 20220014970A1 · Cao · 2022 [cited by applicant]
US 20240114000A1 · Wen · 2024 [cited by examiner]
US 20240323165A1 · Wen · 2024 [cited by examiner]
Chen, Shuhui, et al. “CMT: an efficient algorithm for scalable packet classification.” The Computer Journal 64.6 (2021 ): 941-959. [cited by applicant]
Jamil, Hasibul, and Ning Weng. “Multibit tries packet classification with deep reinforcement learning.” 2020 IEEE 21st International Conference on High Performance Switching and Routing (HPSR). IEEE, 2020. [cited by applicant]
Li, Wenjun, et al. “Cutsplit: A decision-tree combining cutting and splitting for scalable packet classification.” IEEE in Focom 2018- IEEE Conference on Computer Communications. IEEE, 2018. [cited by applicant]
Liu, Zhi, et al. “BitCuts: A fast packet classification algorithm using bit-level cutting.” Computer Communications, 109 (2017), pp. 38-52. [cited by applicant]
“Machine Code”. FOLDOC: Free Online Dictionary of Computing, https://foldoc.org/machine+code, Jun. 2009. [cited by applicant]
Vamanan, Balajee, Gwendolyn Voskuilen, and T. N. Vijaykumar. “EffiCuts: Optimizing packet classification for memory and throughput.” ACM SIGCOMM Computer Communication Review 40.4 (2010): 207-218. [cited by applicant]