Data matching using flow based packet data storage
First Claim
Patent Images
1. A system for processing packets, the system comprising:
- a communications interface configured to receive a plurality of packets at a network device between a source and a destination, each of the packets including data and flow information; and
a processor configured to identify a flow between the source and the destination based on the flow information in each of the plurality of packets to determine whether at least a portion of the data from the received plurality of packets indicates a potential match to data in storage using hashes, to remove a header from each of the plurality of packets if no indication is found of a potential match to data in storage, to store the data from each of the plurality of packets with the removed header in a block of memory allocated for the flow, wherein the allocated block of memory comprises a page of contiguous memory and the storage includes both fast memory and slow memory used to process the flow, to retrieve a list of possible data matches, to use a computed hash index to index a hash table for the data, to determine match sizes of the most likely data match and second most likely data match, to store the data from the most likely data match and second most likely data match in the block of memory allocated for the flow if both match sizes are small, and to generate a retrieve instruction with the computed hash index of the data for the match with the larger match size if at least one match size is not small.
5 Assignments
0 Petitions
Accused Products
Abstract
A system for processing packets includes a communications interface and a processor. A communications interface receives a packet between a source and a destination. The processor identifies a flow between the source and the destination based on the packet. The processor determines whether some of packet data of the packet matches to storage data in storage using hashes. The processor then stores the packet data in a block of memory in the storage based on the flow and if the packet data does not match the storage data.
254 Citations
33 Claims
-
1. A system for processing packets, the system comprising:
-
a communications interface configured to receive a plurality of packets at a network device between a source and a destination, each of the packets including data and flow information; and a processor configured to identify a flow between the source and the destination based on the flow information in each of the plurality of packets to determine whether at least a portion of the data from the received plurality of packets indicates a potential match to data in storage using hashes, to remove a header from each of the plurality of packets if no indication is found of a potential match to data in storage, to store the data from each of the plurality of packets with the removed header in a block of memory allocated for the flow, wherein the allocated block of memory comprises a page of contiguous memory and the storage includes both fast memory and slow memory used to process the flow, to retrieve a list of possible data matches, to use a computed hash index to index a hash table for the data, to determine match sizes of the most likely data match and second most likely data match, to store the data from the most likely data match and second most likely data match in the block of memory allocated for the flow if both match sizes are small, and to generate a retrieve instruction with the computed hash index of the data for the match with the larger match size if at least one match size is not small. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for processing packets, the method comprising:
-
receiving a plurality of packets at a network device between a source and a destination, each of the packets including data and flow information; identifying a flow between the source and the destination based on the flow information in each of the plurality of packets; determining whether at least a portion of the data from the received plurality of packets indicates a potential match to data in storage using hashes; retrieving a list of possible data matches; using a computed hash index to index a hash table for the data; determining match sizes of the most likely data match and second most likely data match; storing the data from the most likely data match and second most likely data match in a block of memory designated for the flow, if both match sizes are small; generating a retrieve instruction with the computed hash index of the data for the match with the larger match size, if at least one match size is not small; removing a header from each of the plurality of packets if no indication is found of a potential match to data in storage; and storing the data from each of the plurality of packets with the removed header in a block of memory allocated for the flow, wherein the allocated block of memory comprises a page of contiguous memory and the storage includes both fast memory and slow memory used to process the flow. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A software product for processing packets, the software product comprising:
-
software operational when executed by a processor to direct the processor to receive a plurality of packets at a network device between a source and a destination, each of the packets including data and flow information, to identify a flow between the source and the destination based on the flow information in each of the plurality of packets, to determine whether at least a portion of the data from the received plurality of packets indicates a potential match to data in storage using hashes, to retrieve a list of possible data matches, using a computed hash index to index a hash table for the data, to determine match sizes of the most likely data match and second most likely data match, to store the data from the most likely data match and second most likely data match in the block of memory allocated for the flow if both match sizes are small, to generate a retrieve instruction with the computed hash index of the data for the match with the larger match size if at least one match size is not small, to remove a header from each of the plurality of packets if no indication is found of a potential match to data in storage, and to store the data from each of the plurality of packets with the removed header in a block of memory allocated for the flow, wherein the allocated block of memory comprises a page of contiguous memory and the storage includes both fast memory and slow memory used to process the flow; and a non-transitory computer-readable storage medium configured to store the software. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
Specification