IP Library Granted Patent US 12,493,432
Granted Patent B2
US 12,493,432 · App. 18/383,380 · Granted Dec 9, 2025

High speed data packet flow processing with offload

Inventor: Aaron Foo (Tokyo, JP)
Assignee: Fmad Engineering (SNG) Pte Ltd.
G06F3/0659G06F3/0604G06F3/061G06F3/0631G06F3/0643G06F3/067G06F11/1068G06F13/287G06F16/182G11C29/52
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,493,432
App. No.
18/383,380
Granted
Dec 9, 2025
Kind
B2
Abstract

An embodiment may involve digital circuitry configured to: (i) receive a plurality of data packets, (ii) calculate, based on content at a pre-determined set of locations within the data packets, respective hash values for each of the data packets, and (iii) store, in a first memory, metadata containing the respective hash values; and a plurality of processors configured to: (i) read, from the first memory, the metadata, (ii) aggregate, based on the respective hash values, the metadata into flow statistics of flows defined by the data packets, and (iii) write, to a second memory, the flow statistics, wherein the flows are subsets of the data packets having common values in each of the pre-determined set of locations.

Claims (42)

1 . A system comprising:

digital circuitry configured to: (i) receive a plurality of data packets, (ii) calculate, based on content at a pre-determined set of locations within the data packets, respective hash values for each of the data packets, and (iii) store, in a first memory, metadata containing the respective hash values; and

a plurality of processors configured to: (i) read, from the first memory, the metadata, (ii) aggregate, based on the respective hash values, the metadata into flow statistics of flows defined by the data packets, and (iii) write, to a second memory, the flow statistics, wherein the flows are subsets of the data packets having common values in each of the pre-determined set of locations.

2 . The system of claim 1 , wherein the pre-determined set of locations is defined by respective byte offsets and byte counts for each of the locations.

3 . The system of claim 1 , wherein the digital circuitry is further configured to:

determine, for each of the data packets, respective characteristics; and

include, in the metadata stored in the first memory and associated with the respective hash values, the respective characteristics.

4 . The system of claim 3 , wherein the respective characteristics include byte lengths for each of the data packets, and wherein the flow statistics include a sum of the byte lengths of the subsets of the data packets in each of the flows.

5 . The system of claim 1 , wherein the digital circuitry and the plurality of processors operate in parallel to one another.

6 . The system of claim 1 , wherein the plurality of processors includes a first processor, a second processor, and a third processor, and wherein aggregating the metadata into the flow statistics of the flows defined by the data packets comprises:

aggregating, by the first processor, the metadata of a first chunk of the data packets into first flow statistics of first flows defined by the first chunk of the data packets;

aggregating, by the second processor, the metadata of a second chunk of the data packets into second flow statistics of second flows defined by the second chunk of the data packets; and

aggregating, by the third processor, the first flow statistics and the second flow statistics.

7 . The system of claim 6 , wherein aggregating the first flow statistics and the second flow statistics comprises summing or averaging at least parts of common flows in the first flow statistics and the second flow statistics.

8 . The system of claim 1 , wherein the digital circuitry is further configured to:

calculate, based on second content at a second pre-determined set of locations within the data packets, respective second hash values for each of the data packets, wherein storing the metadata comprises storing the metadata containing the respective second hash values.

9 . The system of claim 8 , wherein the plurality of processors are further configured to:

aggregate, based on the respective second hash values, the metadata into second flow statistics of second flows defined by the data packets; and

write, to the second memory, the second flow statistics, wherein the second flows are second subsets of the data packets having second common values in each of the second pre-determined set of locations.

10 . The system of claim 1 , wherein the digital circuitry and the plurality of processors are disposed within at least two different devices.

11 . The system of claim 1 , wherein the first memory comprises one or more solid state drives (SSDs) and the second memory comprises a database.

12 . The system of claim 1 , wherein the digital circuitry comprises a field-programmable gate array (FPGA).

13 . A plurality of processors within a computing system, the plurality of processors configured to:

read, from a first memory, metadata containing respective hash values that were calculated based on content at a pre-determined set of locations within a plurality of data packets;

aggregate, based on the respective hash values, the metadata into flow statistics of flows defined by the data packets; and

write, to a second memory, the flow statistics, wherein the flows are subsets of the data packets having common values in each of the pre-determined set of locations.

14 . The plurality of processors of claim 13 , wherein the respective hash values were calculated by digital circuitry that received the plurality of data packets and stored the metadata in the first memory.

15 . The plurality of processors of claim 14 , wherein the digital circuitry further:

determined, for each of the data packets, respective characteristics; and

included, in the metadata stored in the first memory and associated with the respective hash values, the respective characteristics.

16 . The plurality of processors of claim 15 , wherein the respective characteristics include byte lengths for each of the data packets, and wherein the flow statistics include a sum of the byte lengths of the subsets of the data packets in each of the flows.

17 . The plurality of processors of claim 14 , wherein the digital circuitry further calculated, based on second content at a second pre-determined set of locations within the data packets, respective second hash values for each of the data packets, wherein storing the metadata comprises storing the metadata containing the respective second hash values, and wherein the plurality of processors are further configured to:

aggregate, based on the respective second hash values, the metadata into second flow statistics of second flows defined by the data packets; and

write, to the second memory, the second flow statistics, wherein the second flows are second subsets of the data packets having second common values in each of the second pre-determined set of locations.

18 . A method comprising:

reading, from a first memory by a plurality of processors, metadata containing respective hash values that were calculated based on content at a pre-determined set of locations within a plurality of data packets;

aggregating, by the plurality of processors and based on the respective hash values, the metadata into flow statistics of flows defined by the data packets; and

writing, to a second memory by the plurality of processors, the flow statistics, wherein the flows are subsets of the data packets having common values in each of the pre-determined set of locations.

19 . The method of claim 18 , wherein the respective hash values were calculated by digital circuitry that received the plurality of data packets and stored the metadata in the first memory.

20 . The method of claim 19 , wherein the digital circuitry further calculated, based on second content at a second pre-determined set of locations within the data packets, respective second hash values for each of the data packets, wherein storing the metadata comprises storing the metadata containing the respective second hash values, the method further comprising:

aggregating, by the plurality of processors and based on the respective second hash values, the metadata into second flow statistics of second flows defined by the data packets; and

writing, to the second memory by the plurality of processors, the second flow statistics wherein the second flows are second subsets of the data packets having second common values in each of the second pre-determined set of locations.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2023
From: FMAD ENGINEERING KABUSHIKI GAISHA
To: FMAD ENGINEERING (SNG) PTE LTD.
Reel/Frame 065948/0073 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2023
From: FOO, AARON
To: FMAD ENGINEERING KABUSHIKI GAISHA
Reel/Frame 065327/0852 →
Continuity (6)
Continuation In Part 17835809 · Jun 8, 2022
Continuation 16854071 · Apr 21, 2020
Continuation In Part 16689867 · Nov 20, 2019
Continuation In Part 16528952 · Aug 1, 2019
Continuation 15609729 · May 31, 2017
Related Publication 20240053930A1 · Feb 15, 2024
References Cited (136)
US 5193071A · Umina · 1993 [cited by applicant]
US 5317734A · Gupta · 1994 [cited by applicant]
US 5442708A · Adams, Jr. · 1995 [cited by applicant]
US 5671237A · Zook · 1997 [cited by applicant]
US 6021429A · Danknick · 2000 [cited by applicant]
US 6052362A · Somer · 2000 [cited by applicant]
US 6069898A · Nakatsugawa · 2000 [cited by applicant]
US 6098155A · Chong, Jr. · 2000 [cited by applicant]
US 6112294A · Merchant · 2000 [cited by applicant]
US 6134630A · McDonald · 2000 [cited by applicant]
US 6170063B1 · Golding · 2001 [cited by applicant]
US 6173333B1 · Jolitz · 2001 [cited by applicant]
US 6175571B1 · Haddock · 2001 [cited by applicant]
US 6182176B1 · Ziegler · 2001 [cited by applicant]
US 6236658B1 · Essbaum · 2001 [cited by applicant]
US 6272131B1 · Ofek · 2001 [cited by applicant]
US 6414966B1 · Kulkarni · 2002 [cited by applicant]
US 6473809B1 · Aref · 2002 [cited by applicant]
US 6571318B1 · Sander · 2003 [cited by applicant]
US 7120828B2 · Greer · 2006 [cited by applicant]
US 7540029B1 · Saxena · 2009 [cited by applicant]
US 7684347B2 · Merkey · 2010 [cited by applicant]
US 8433777B1 · Liu · 2013 [cited by applicant]
US 8612612B1 · Dukes · 2013 [cited by applicant]
US 8880696B1 · Michels · 2014 [cited by applicant]
US 8891528B2 · Moriarty · 2014 [cited by applicant]
US 9485183B2 · Anand · 2016 [cited by applicant]
US 9756154B1 · Jiang · 2017 [cited by applicant]
US 9866479B2 · Wang · 2018 [cited by applicant]
US 10013200B1 · Shveidel · 2018 [cited by applicant]
US 10193929B2 · Shieh · 2019 [cited by applicant]
US 10230643B2 · Ferrell · 2019 [cited by applicant]
US 10423358B1 · Foo · 2019 [cited by applicant]
US 10469385B2 · Heinz · 2019 [cited by applicant]
US 10574669B1 · Castro · 2020 [cited by applicant]
US 10588044B2 · Andreasen · 2020 [cited by applicant]
US 10721244B2 · Chiba · 2020 [cited by applicant]
US 10831408B2 · Foo · 2020 [cited by applicant]
US 10938711B2 · Sharma · 2021 [cited by applicant]
US 10990326B2 · Foo · 2021 [cited by applicant]
US 11036438B2 · Foo · 2021 [cited by applicant]
US 11128740B2 · Foo · 2021 [cited by applicant]
US 11249688B2 · Foo · 2022 [cited by applicant]
US 11392317B2 · Foo · 2022 [cited by applicant]
US 11681470B2 · Foo · 2023 [cited by applicant]
US 11704063B2 · Foo · 2023 [cited by applicant]
US 20010030943A1 · Gregg · 2001 [cited by applicant]
US 20010038607A1 · Honda · 2001 [cited by applicant]
US 20020188742A1 · Nie · 2002 [cited by applicant]
US 20030037337A1 · Yona · 2003 [cited by applicant]
US 20030058872A1 · Berggreen · 2003 [cited by applicant]
US 20030081554A1 · Huang · 2003 [cited by applicant]
US 20030099250A1 · Blanc · 2003 [cited by applicant]
US 20030120879A1 · Chen · 2003 [cited by applicant]
US 20040156313A1 · Hofmeister · 2004 [cited by applicant]
US 20040193876A1 · Donley · 2004 [cited by applicant]
US 20040233846A1 · Khandani · 2004 [cited by applicant]
US 20040236982A1 · Greer · 2004 [cited by applicant]
US 20050013300A1 · Akahane · 2005 [cited by applicant]
US 20050220014A1 · DelRegno · 2005 [cited by applicant]
US 20050240745A1 · Sundar · 2005 [cited by applicant]
US 20060277347A1 · Ashmore · 2006 [cited by applicant]
US 20070061492A1 · van Riel · 2007 [cited by applicant]
US 20070116292A1 · Kurita · 2007 [cited by applicant]
US 20070248110A1 · Oz · 2007 [cited by applicant]
US 20080126449A1 · Haitsma · 2008 [cited by applicant]
US 20080148011A1 · Gopal · 2008 [cited by applicant]
US 20080158958A1 · Sokolov · 2008 [cited by applicant]
US 20090077561A1 · Feng · 2009 [cited by applicant]
US 20090164752A1 · McConnell · 2009 [cited by applicant]
US 20090257451A1 · Saghi · 2009 [cited by applicant]
US 20090310491A1 · Ginsberg · 2009 [cited by applicant]
US 20100054128A1 · O'Hern · 2010 [cited by applicant]
US 20100250709A1 · Mallett · 2010 [cited by applicant]
US 20100332671A1 · Alfonso · 2010 [cited by applicant]
US 20110026406A1 · Gamage · 2011 [cited by applicant]
US 20110145491A1 · Hartwich · 2011 [cited by applicant]
US 20110205828A1 · Richter · 2011 [cited by applicant]
US 20110225302A1 · Park · 2011 [cited by applicant]
US 20120137055A1 · Lee · 2012 [cited by applicant]
US 20120151307A1 · Abel · 2012 [cited by applicant]
US 20120182891A1 · Lee · 2012 [cited by applicant]
US 20130067137A1 · Molloy · 2013 [cited by applicant]
US 20130097220A1 · Lyons · 2013 [cited by applicant]
US 20130119243A1 · Yuan · 2013 [cited by applicant]
US 20130145105A1 · Sawicki · 2013 [cited by applicant]
US 20130151584A1 · Westphal · 2013 [cited by applicant]
US 20130227236A1 · Flynn · 2013 [cited by applicant]
US 20130315237A1 · Kagan · 2013 [cited by applicant]
US 20130329744A1 · Hachiya · 2013 [cited by applicant]
US 20140010083A1 · Hamdi · 2014 [cited by applicant]
US 20140071866A1 · Maciocco · 2014 [cited by applicant]
US 20140277850A1 · Jobs · 2014 [cited by applicant]
US 20150100856A1 · Zhang · 2015 [cited by applicant]
US 20150227757A1 · Bestler · 2015 [cited by applicant]
US 20150312384A1 · Sankaran · 2015 [cited by applicant]
US 20150341473A1 · Dumitrescu · 2015 [cited by applicant]
US 20160119811A1 · Merlin · 2016 [cited by applicant]
US 20160127276A1 · Wu · 2016 [cited by applicant]
US 20160156516A1 · Nishi · 2016 [cited by applicant]
US 20160246710A1 · Shimizu · 2016 [cited by applicant]
US 20160259693A1 · Sundararaman · 2016 [cited by applicant]
US 20170063992A1 · Baek · 2017 [cited by applicant]
US 20170199707A1 · Varghese · 2017 [cited by applicant]
US 20170344439A1 · Howe · 2017 [cited by applicant]
US 20180095675A1 · Kachare · 2018 [cited by applicant]
US 20180109471A1 · Chang · 2018 [cited by applicant]
US 20210117360A1 · Kutch · 2021 [cited by applicant]
US 20210385308A1 · Foo · 2021 [cited by applicant]
US 20220058203A1 · Sitsky · 2022 [cited by applicant]
US 20220210065A1 · Khanna · 2022 [cited by applicant]
US 20220300213A1 · Foo · 2022 [cited by applicant]
US 20220329505A1 · Malhotra · 2022 [cited by applicant]
US 20230086756A1 · Lv · 2023 [cited by applicant]
CA 2015934C · 2000 [cited by applicant]
JP 2015023323A · 2015 [cited by applicant]
Office Action, U.S. Appl. No. 17/406,385, mailed Dec. 18, 2024. [cited by applicant]
Office Action, U.S. Appl. No. 17/406,385, mailed Dec. 20, 2023. [cited by applicant]
Arkime FAQ, https://arkime.com/faq, last accessed Jan. 26, 2023. [cited by applicant]
Ben Brahim et al., Using Energy-Efficient Overlays to Reduce Packet Error Rates in Wireless Ad-Hoc Networks, IEEE, Conference Paper, vol. 8, pp. 3717-3722. (Year: 2006). [cited by applicant]
Bregni et al., Slot Synchronization of a WDM Packet-Switched Slotted Ring, IEEE, vol. 25, Issue 10, Journal Article, pp. 2922-2930. (Year: 2007). [cited by applicant]
Francesco Fusco, et al., pcapIndex: An Index for Network Packet Traces with Legacy Compatibility, ACM SIGCOMM Computer Communication Review, vol. 42, Iss. 1, Jan. 2012 pp. 47-53, https://doi.org/10.1145/2096149.2096156. [cited by applicant]
GitHub—fmadio_pcap_bpfcounter_PCAP Packet counter with multiple BPF filters, https://github.com/fmadio/pcap_bpfcounter, Apr. 22, 2020, 2 pages. [cited by applicant]
GitHub—fmadio_pcap2json_High Speed PCAP TO JSON conversion utility.pdf, https://github.com/fmadio/pcap2json, Apr. 22, 2020, 5 pages. [cited by applicant]
Kesavan et al., “Optimal Multicast with Packetization and Network Interface Support”, 1997, IEEE, pp. 370-377. [cited by applicant]
Kim et al., High available system control network in the packet transport system, IEEE, Conference Paper, pp. 1-3 (Year: 2010). [cited by applicant]
Libpcap File Format, The Wireshark Wiki, https://wiki.wireshark.org/Developmenl/LibpcapFileFormat, 2015, 3 pages. [cited by applicant]
Manpage of TCPDUMP, http://tcpdump.org/manpages/tcpdump.1.html, 2017, 20 pages. [cited by applicant]
Nfdump netflow/sflow cookbook of examples, https://yurisk.info/2020/09/20/nfdump-netflow-usage-examples-cookbook/, Sep. 20, 2020. [cited by applicant]
NfSen—Netflow Sensor, https://nfsen.sourceforge.net/, last accessed Jan. 26, 2023. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/216,014, mailed Mar. 14, 2023. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/320,393, mailed Mar. 8, 2023. [cited by applicant]
Office Action, U.S. Appl. No. 17/835,809, mailed Mar. 30, 2023. [cited by applicant]
Pcap-Filter(7) Man Page, https://www.tcpdump.org/manpages/pcap-filter.7.html, Nov. 19, 2022. [cited by applicant]
PlayStation 2 technical specifications, https://en.wikipedia.org/wiki/PlayStation_2_technical_specifications, Sep. 19, 2019. [cited by applicant]
Steven McCanne and and Van Jacobson, The BSD Packet Filter: A New Architecture for User-level Packet Capture, 1993 Winter USENIX conference, Jan. 25-29, 1993. [cited by applicant]