IP Library Granted Patent US 11,249,688
Granted Patent B2
US 11,249,688 · App. 17/034,593 · Granted Feb 15, 2022

High-speed data packet capture and storage with playback capabilities

Inventor: Aaron Foo (Tokyo, JP)
Assignee: fmad engineering kabushiki gaisha
G06F3/0659G06F3/061G06F3/0604G06F3/067G06F3/0631G06F3/0643G06F11/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 11,249,688
App. No.
17/034,593
Granted
Feb 15, 2022
Kind
B2
Abstract

An embodiment may involve receiving a chunk and a chunk index, where the chunk contains packets captured by a network interface unit and the chunk index contains timestamps of first and last packets within the chunk. The chunk may be stored in a first ring buffer of a first memory and the chunk index may be stored in an index buffer of the first memory. A processor may allocate an entry in an I/O queue of a second memory and an entry in a chunk processing queue of the first memory. The processor may read the chunk processing queue to identify and copy the chunk from the first ring buffer to a location in a second ring buffer of the second memory, the location associated with the entry in the I/O queue. The same or a different processor may instruct a controller to write the chunk to a non-volatile memory unit.

Claims (40)

1. A system comprising:

a network interface configured to arrange received packets into chunks, wherein each chunk contains one or more whole packets;

a first processor and a first memory coupled to the network interface, wherein the first memory contains a first buffer;

a second processor and a second memory, wherein the second memory contains a second buffer and an I/O queue; and

a storage controller coupled to the second processor and to a plurality of non-volatile memory units,

wherein the system is configured to: (i) allocate an entry in the I/O queue for a particular chunk stored in the first buffer, (ii) copy the particular chunk from the first buffer to a location in the second buffer associated with the entry in the I/O queue, and (iii) write, by way of the storage controller, the particular chunk from the second buffer to one of the plurality of non-volatile memory units that is mapped to the entry in the I/O queue.

2. The system of claim 1 , wherein the first processor is in a set of one or more processors configured to copy chunks from the first buffer to locations in the second buffer.

3. The system of claim 1 , wherein the second processor is in a set of two or more processors configured to write, by way of the storage controller, chunks from the second buffer to the plurality of non-volatile memory units.

4. The system of claim 1 , wherein the first processor or the second processor is configured to read from the first memory and write to the second memory, and wherein the first processor or the second processor is configured to read from the second memory and write to the plurality of non-volatile memory units.

5. The system of claim 1 , wherein the network interface is further configured to generate chunk indexes for each of the chunks, the chunk indexes respectively containing one or more timestamps, counts of packets within their associated chunks, or other statistics related to their associated chunks, wherein the system is further configured to write a chunk index associated with the particular chunk to a file system within the plurality of non-volatile memory units.

6. The system of claim 1 , wherein the first buffer and the second buffer are ring buffers.

7. The system of claim 1 , wherein a size of each of the chunks is fixed and identical.

8. The system of claim 1 , wherein each of the chunks contains an integer number of packets, and wherein unused space in any of the chunks is filled with padding bytes.

9. The system of claim 1 , wherein the first processor and the first memory are part of a first non-uniform memory access (NUMA) node, and wherein the second processor and the second memory are part of a second NUMA node.

10. The system of claim 1 , wherein the system is also configured to, for a group of the chunks that are consecutively placed in a chunk processing queue of the first memory:

calculate one or more parity chunks by applying an error-correcting code to the group of the chunks;

store the one or more parity chunks in a chunk parity write buffer of the second memory; and

write the one or more parity chunks across one or more non-volatile parity storage memory units.

11. The system of claim 1 , wherein the first processor and the first memory are communicatively coupled to the network interface by way of a first system bus, and wherein the second processor and the second memory are communicatively coupled to at least one of the plurality of non-volatile memory units by way of a second system bus.

12. The system of claim 11 , wherein the network interface includes a direct memory access (DMA) engine that writes chunks to the first memory by way of the first system bus, and wherein the network interface includes a back-pressure throttle that causes delay or dropping of received packets when the DMA engine detects congestion on the first system bus.

13. The system of claim 1 , wherein chunks stored in the second buffer are written to the non-volatile memory units in a round-robin fashion.

14. The system of claim 1 , wherein the network interface includes a NOP generator configured to generate synthetic null packets, wherein the NOP generator is triggered by (i) receiving a signal, (ii) no packets having been received at the network interface for a pre-determined amount of time, or (iii) at a fixed pre-determined time interval, wherein the synthetic null packets are distinguishable from other data received by way of the network interface through use of a corresponding NOP flag.

15. The system of claim 1 , wherein the I/O queue maintains respective write buffers for chunks to be written to each of the plurality of non-volatile memory units.

16. A method comprising:

receiving, by a network interface unit, a plurality of packets;

arranging, by the network interface unit, one or more whole packets from the plurality of packets into a chunk;

writing, by the network interface unit, the chunk to a first buffer within a first memory;

allocating an entry for the chunk in an I/O queue of a second memory;

copying the chunk from the first buffer to a location in a second buffer of the second memory, wherein the location in the second buffer is associated with the entry in the I/O queue; and

writing, by way of a storage controller, the chunk from the second buffer to one of a plurality of non-volatile memory units that is mapped to the entry in the I/O queue.

17. The method of claim 16 , wherein a set of one or more processors is configured to copy chunks from the first buffer to locations in the second buffer.

18. The method of claim 16 , wherein a set of one or more processors is configured to write chunks from the second buffer to the plurality of non-volatile memory units.

19. The method of claim 16 , wherein a first processor or a second processor is configured to read from the first memory and write to the second memory, and wherein the first processor or the second processor is configured to read from the second memory and write to the plurality of non-volatile memory units.

20. A system comprising:

means for receiving a plurality of packets;

means for arranging one or more whole packets from the plurality of packets into a chunk;

means for writing the chunk to a first buffer within a first memory;

means for allocating an entry for the chunk in an I/O queue of a second memory;

means for copying the chunk from the first buffer to a location in a second buffer of the second memory, wherein the location in the second buffer is associated with the entry in the I/O queue; and

means for writing the chunk from the second buffer to one of a plurality of non-volatile memory units that is mapped to the entry in the I/O queue.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2023
From: FMAD ENGINEERING KABUSHIKI GAISHA
To: FMAD ENGINEERING (SNG) PTE LTD.
Reel/Frame 065948/0073 →
CHANGE OF NAME Recorded Dec 21, 2020
From: FMAD ENGINEERING GK
To: FMAD ENGINEERING KABUSHIKI GAISHA
Reel/Frame 055145/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2020
From: FOO, AARON
To: FMAD ENGINEERING GK
Reel/Frame 053939/0324 →
Continuity (3)
Continuation 16528952 · Aug 1, 2019
Continuation 15609729 · May 31, 2017
Related Publication 20210011663A1 · Jan 14, 2021
Cited By (1)
US 12,493,432