IP Library Granted Patent US 10,277,610
Granted Patent B2
US 10,277,610 · App. 14/456,884 · Granted Apr 30, 2019

Reassembly-free deep packet inspection on multi-core hardware

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,277,610
App. No.
14/456,884
Granted
Apr 30, 2019
Kind
B2
Abstract

Some embodiments of reassembly-free deep packet inspection (DPD on multicore hardware have been presented. In one embodiment, a set of packets of one or more files is received at a networked device from one or more connections. Each packet is scanned using one of a set of processing cores in the networked device without buffering the one or more files in the networked device. Furthermore, the set of processing cores may scan the packets substantially concurrently.

Claims (69)

1. A method for reassembly-free deep packet inspection, the method comprising:

storing information in a database in memory, the stored information regarding:

a plurality of connections, wherein a first connection is associated with an out-of-order buffer and a current state of pattern matching that is based on one or more previously received packets of a first file received from the first connection; and

a plurality of predetermined patterns, wherein each predetermined pattern spans a plurality of in-order packets;

receiving a plurality of packets of one or more files from the plurality of connections; and

processing the received plurality of packets at one of a plurality of processing cores of a multi-core processor concurrently, wherein each processing core is allowed to handle packets from a same connection and to access the database via a computer system bus coupled to each processing core, and wherein processing the received plurality of packets comprises:

identifying that a first packet of the first file was received from the first connection by a first processing core;

postponing evaluation of the first packet at the first processing core when another of the processing cores is identified as currently handling another packet from the first connection, wherein the first processing core handles another packet from another connection;

evaluating the first packet at the first processing core after identifying that the other processing core is no longer currently handling the other packet received from the first connection;

identifying that the first packet was received out-of-order in a packet sequence pertaining to one or more previously received packets of the first file from the first connection;

storing the first packet in the out-of-order buffer associated with the first connection;

identifying that a second packet from the first connection was received at a second processing core, wherein the second packet is next in the sequence in relation to the previously received packets of the first file from the first connection;

scanning the second packet for one or more of the stored predetermined patterns without reassembly;

retrieving the first packet from the out-of-order buffer associated with the first connection for scanning at the second processing core without reassembly, wherein the first packet is scanned for the stored predetermined patterns after the second packet has been scanned;

updating the current state of pattern matching that corresponds to the first connection in the database based on the scan of the first packet;

identifying that the updated state of pattern matching indicates a match to one of the stored predetermined patterns; and

blocking the first packet based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

2. The method of claim 1 , wherein packets that are received in-order from the first connection are not buffered.

3. The method of claim 1 , further comprising

storing a plurality of out-of-order packets from the first connection in the associated out-of-order buffer, and

checking the stored out-of-order packets for a next packet in the sequence after the second packet.

4. The method of claim 3 , wherein retrieving the first packet is based on identifying that the first packet is the next packet in the sequence after the second packet.

5. The method of claim 1 , wherein blocking the first packet comprises preventing the first packet from passing to a protected network.

6. The method of claim 1 , further comprising issuing an alarm based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

7. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor to perform a method for reassembly-free deep packet inspection, the method comprising:

storing information in a database in memory, the stored information regarding:

a plurality of connections, wherein a first connection is associated with an out-of-order buffer and a current state of pattern matching that is based on one or more previously received packets of a first file received from the first connection; and

a plurality of predetermined patterns, wherein each predetermined pattern spans a plurality of in-order packets;

receiving a plurality of packets of one or more files from the plurality of connections; and

processing the received plurality of packets at one of a plurality of processing cores of a multi-core processor concurrently, wherein each processing core is allowed to handle packets from a same connection and to access the database via a computer system bus coupled to each processing core, and wherein processing the received plurality of packets comprises:

identifying that a first packet of the first file was received from the first connection by a first processing core;

postponing evaluation of the first packet at the first processing core when another of the processing cores is identified as currently handling another packet from the first connection, wherein the first processing core handles another packet from another connection;

evaluating the first packet at the first processing core after identifying that the other processing core is no longer currently handling the other packet received from the first connection;

identifying that the first packet was received out-of-order in a packet sequence pertaining to one or more previously received packets of the first file from the first connection;

storing the first packet in the out-of-order buffer associated with the first connection;

identifying that a second packet from the first connection was received at a second processing core, wherein the second packet is next in the sequence in relation to one or more previously received packets of the first file from the first connection;

scanning the second packet for one or more of the stored predetermined patterns without reassembly;

retrieving the first packet from the out-of-order buffer associated with the first connection for scanning at the second processing core without reassembly, wherein the first packet is scanned for the stored predetermined patterns after the second packet has been scanned;

updating the current state of pattern matching that corresponds to the first connection in the database based on the scan of the first packet;

identifying that the updated state of pattern matching indicates a match to one of the stored predetermined patterns; and

blocking the first packet based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

8. The non-transitory computer: readable storage medium of claim 7 , wherein packets that are received in-order from the first connection are not buffered.

9. The non-transitory computer-readable storage medium of claim 7 , the program further comprising instructions executable to store a plurality of out-of-order packets from the first connection the associated out-of-order buffer, and checking the stored out-of-order packets for a next packet in the sequence after the second packet.

10. The non-transitory computer-readable storage medium of claim 9 , wherein retrieving the first packet is based on identifying that the first packet is the next packet in the sequence after the second packet.

11. The non-transitory computer: readable storage medium of claim 7 , wherein blocking the first packet comprises preventing the first packet from passing to a protected network.

12. The non-transitory computer readable storage medium of claim 7 , the program further comprising instructions executable to issue an alarm based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

13. An apparatus for reassembly-free deep packet inspection, the apparatus comprising:

memory that stores information in a database, the stored information regarding:

a plurality of connections, wherein a first connection is associated with an out-of-order buffer and a current state of pattern matching that is based on one or more previously received packets of a first file received from the first connection; and

a plurality of predetermined patterns, wherein each predetermined pattern spans a plurality of in-order packets;

a communication interface that receives a plurality of packets of one or more files from the plurality of connections; and

a multi-core processor that processes the received plurality of packets at one of a plurality of processing cores concurrently, wherein each processing core is allowed to handle packets from a same connection and to access the database via a computer system bus coupled to each processing core, and wherein the multi-core processor processes the received plurality of packets by:

identifying that a first packet of the first file was received from the first connection at a first processing core;

postponing evaluation of the first packet at the first processing core when another of the processing cores is identified as currently handling another packet from the first connection, wherein the first processing core handles another packet from another connection;

evaluating the first packet at the first processing cores after identifying that the other processing is no longer currently handling the other packet received from the first connection,

identifying that the first packet was received out-of-order in a packet sequence pertaining to one or more previously received packets of the first file from the first connection;

storing the first packet in the out: of: order buffer associated with the first connection;

identifying that a second packet from the first connection was received at a second processing core, wherein the second packet is next in an in-order sequence in relation to one or more previously received packets of the first file from the first connection;

scanning the second packet for one or more of the stored predetermined patterns without reassembly;

retrieving the first packet from the out-of-order buffer associated with the first connection at the second processing core without reassembly, wherein the first packet is scanned for the stored predetermined patterns after the second packet has been scanned;

updating the current state of pattern matching that corresponds to the first connection in the database based on the scan of the first packet;

identifying that the updated state of pattern matching indicates a match to one of the stored predetermined patterns; and

blocking the first packet based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

14. The apparatus of claim 13 , wherein packets that are received in-order from the first connection are not buffered.

15. The apparatus of claim 13 , wherein

the memory further stores a plurality of out-of-order packets from the first connection in the associated out-of-order buffer, and the second processing core further checks the stored out-of-order packets for a next packet in the sequence after the second packet.

16. The apparatus of claim 15 , wherein the second processing core retrieves the first packet based on identifying that the first packet is the next packet in the sequence after the second packet.

17. The apparatus of claim 13 , wherein the multi-core processor blocks the first packet by preventing the first packet from passing to a protected network.

18. The apparatus of claim 13 , wherein the multi-core processor issues an alarm based on the indicated match between the updated state of pattern matching and the matching stored predetermined pattern.

Assignments (20)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Apr 2, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045818/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
MERGER Recorded Dec 12, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037277/0849 →
CONVERSION AND NAME CHANGE Recorded Dec 12, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037278/0920 →
CHANGE OF NAME Recorded Dec 12, 2015
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 037277/0839 →
MERGER Recorded Dec 12, 2015
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC.
Reel/Frame 037277/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2014
From: DUBROVSKY, ALEKSANDR; GMUENDER, JOHN E.; NGUYEN, HUY MINH; MINKIN, ILYA; BRADY, JUSTIN M.; YANOVSKY, BORIS
To: SONICWALL, INC.
Reel/Frame 033595/0772 →
Cited By (1)
US 12,712,888