IP Library Granted Patent US 11,522,773
Granted Patent B1
US 11,522,773 · App. 17/060,666 · Granted Dec 6, 2022

Optimized batched packet processing for deep packet inspection

Inventor: Gianpaolo Tedesco (Seoul, KR)
Assignee: Rapid7 , Inc.
H04L43/028H04L69/16
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 11,522,773
App. No.
17/060,666
Granted
Dec 6, 2022
Kind
B1
Abstract

Disclosed herein are methods, systems, and processes for performing optimized batched packet processing in deep packet inspection (DPI) computing systems. A batch of network packets is received. A stateless processing operation is performed for the batch that includes updating a current time for the batch, decoding the network packets in the batch, creating a flow-hash lookup key for each decoded network packet, and generating a first output that includes the current time and corresponding flow-hash lookup keys for the decoded network packets. Next, a stateful processing operation is performed for the batch that includes accessing the first output of the stateless processing operation, dividing the batch into multiple sub-batches, performing a parallel flow-hash table lookup operation on the network packets that are part of the sub-batches, and generating a second output that includes the sub-batches with associated packet flows. Finally, a batch-optimized DPI processing operation is performed that includes accessing the second output of the stateful processing operation and performing the DPI processing operation on a per-packet basis or on a per-flow basis.

Claims (101)

1. A computer-implemented method, comprising:

receiving a batch of network packets;

performing a stateless processing operation for the batch, comprising:

updating a current time for the batch,

decoding the network packets in the batch,

creating a flow-hash lookup key for each decoded network packet, and

generating a first output comprising the current time and corresponding flow-hash lookup keys for the decoded network packets;

performing a stateful processing operation for the batch, comprising:

accessing the first output of the stateless processing operation,

dividing the batch into a plurality of sub-batches,

performing a parallel flow-hash table lookup operation on the network packets that are part of the plurality of sub-batches, wherein

the parallel flow-hash table lookup operation is a multi-threaded operation that looks up records of packet flows in a hash table, and

the parallel flow-hash table lookup operation inserts a new record in the hash table if a record key is not found and deletes an existing record from the hash table corresponding to a unidirectional packet flow if the hash table has insufficient space for an insertion, and

generating a second output comprising the plurality of sub-batches with associated packet flows; and

performing a deep packet inspection (DPI) processing operation comprising:

accessing the second output of the stateful processing operation, and

performing the DPI processing operation on a per-packet basis or on a per-flow basis.

2. The computer-implemented method of claim 1 , wherein performing the DPI processing operation on the per-packet basis, comprises:

updating packet flow statistics for each network packet that is part of plurality of sub-batches,

performing transport layer state tracking for each network packet, and

performing application layer processing for each network packet.

3. The computer-implemented method of claim 1 , wherein performing the DPI processing on the per-flow basis, comprises:

grouping two or more network packets within each sub-batch of the plurality of sub-batches together if the two or more network packets have a same packet flow,

maintaining an order of the two or more network packets relative to each other within the same packet flow,

updating packet flow statistics for each packet flow,

performing transport layer state tracking for each packet flow followed by each network packet, and

performing application layer processing for each packet flow followed by each network packet.

4. The computer-implemented method of claim 1 , wherein

decoding the network packets in the batch comprises determining one or more internet protocol (IP) addresses, one or more ports, and an IP protocol associated with each of the network packets.

5. The computer-implemented method of claim 1 , wherein

a size of the batch in the first output is less than or equal to another size of the batch prior to performance of the stateless processing operation.

6. The computer-implemented method of claim 1 , further comprising:

comparing the current time with a next time; and

executing a timer bookkeeping operation.

7. The computer-implemented method of claim 3 , wherein

performing the transport layer state tracking comprises applying one or more packet payload transformations for transfer control protocol (TCP).

8. The computer-implemented method of claim 1 , wherein

the batch of network packets are received at a DPI engine that is implemented by a DPI server and executes one or more packet capture mechanisms.

9. A non-transitory computer readable storage medium comprising program instructions executable to:

receive a batch of network packets;

perform a stateless processing operation for the batch, comprising:

updating a current time for the batch,

decoding the network packets in the batch,

creating a flow-hash lookup key for each decoded network packet, and

generating a first output comprising the current time and corresponding flow-hash lookup keys for the decoded network packets;

perform a stateful processing operation for the batch, comprising:

accessing the first output of the stateless processing operation,

dividing the batch into a plurality of sub-batches,

performing a parallel flow-hash table lookup operation on the network packets that are part of the plurality of sub-batches wherein

the parallel flow-hash table lookup operation is a multi-threaded operation that looks up records of packet flows in a hash table, and

the parallel flow-hash table lookup operation inserts a new record in the hash table if a record key is not found and deletes an existing record from the hash table corresponding to a unidirectional packet flow if the hash table has insufficient space for an insertion, and

generating a second output comprising the plurality of sub-batches with associated packet flows; and

perform a deep packet inspection (DPI) processing operation comprising:

accessing the second output of the stateful processing operation, and

performing the DPI processing operation on a per-packet basis or on a per-flow basis.

10. The non-transitory computer readable storage medium of claim 9 , wherein

performing the DPI processing operation on the per-packet basis, comprises:

updating packet flow statistics for each network packet that is part of plurality of sub-batches,

performing transport layer state tracking for each network packet, and

performing application layer processing for each network packet.

11. The non-transitory computer readable storage medium of claim 9 , wherein

performing the DPI processing on the per-flow basis, comprises:

grouping two or more network packets within each sub-batch of the plurality of sub-batches together if the two or more network packets have a same packet flow,

maintaining an order of the two or more network packets relative to each other within the same packet flow,

updating packet flow statistics for each packet flow,

performing transport layer state tracking for each packet flow followed by each network packet, and

performing application layer processing for each packet flow followed by each network packet.

12. A system comprising:

one or more processors; and

a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to:

receive a batch of network packets;

perform a stateless processing operation for the batch, comprising:

updating a current time for the batch,

decoding the network packets in the batch,

creating a flow-hash lookup key for each decoded network packet, and

generating a first output comprising the current time and corresponding flow-hash lookup keys for the decoded network packets;

perform a stateful processing operation for the batch, comprising:

accessing the first output of the stateless processing operation,

dividing the batch into a plurality of sub-batches,

performing a parallel flow-hash table lookup operation on the network packets that are part of the plurality of sub-batches, wherein

the parallel flow-hash table lookup operation is a multi-threaded operation that looks up records of packet flows in a hash table, and

the parallel flow-hash table lookup operation inserts a new record in the hash table if a record key is not found and deletes an existing record from the hash table corresponding to a unidirectional packet flow if the hash table has insufficient space for an insertion, and

generating a second output comprising the plurality of sub-batches with associated packet flows; and

perform a deep packet inspection (DPI) processing operation comprising:

accessing the second output of the stateful processing operation, and

performing the DPI processing operation on a per-packet basis or on a per-flow basis.

13. The system of claim 12 , wherein

performing the DPI processing operation on the per-packet basis,

comprises:

updating packet flow statistics for each network packet that is part of plurality of sub-batches,

performing transport layer state tracking for each network packet, and

performing application layer processing for each network packet.

14. The system of claim 12 , wherein

performing the DPI processing on the per-flow basis, comprises:

grouping two or more network packets within each sub-batch of the plurality of sub-batches together if the two or more network packets have a same packet flow,

maintaining an order of the two or more network packets relative to each other within the same packet flow,

updating packet flow statistics for each packet flow,

performing transport layer state tracking for each packet flow followed by each network packet, and

performing application layer processing for each packet flow followed by each network packet.

15. The system of claim 12 , wherein

the parallel flow-hash table lookup operation implements a cuckoo-based hashing algorithm.

Assignments (2)
SECURITY INTEREST Recorded Jun 26, 2025
From: RAPID7, INC.; RAPID7 LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071743/0537 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2020
From: TEDESCO, GIANPAOLO
To: RAPID7, INC.
Reel/Frame 054134/0755 →
Continuity (1)
Provisional Application 62910745 · Oct 4, 2019
Cited By (1)
US 12,671,638