IP Library Granted Patent US 10,108,422
Granted Patent B2
US 10,108,422 · App. 15/139,596 · Granted Oct 23, 2018

Multi-thread network stack buffering of data frames

Inventors: James Scott Cannata (Denver, CO); Jason Breakstone (Broomfield, CO)
Assignee: Liqid Inc.
G06F9/3009G06F3/061G06F3/067G06F3/0644G06F3/0656G06F9/526G06F13/24
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,108,422
App. No.
15/139,596
Granted
Oct 23, 2018
Kind
B2
Abstract

Systems, methods, apparatuses, and software for networked data systems are provided herein. In one example, a networked data processing system is presented. The system includes a processing system configured to execute an operating system that comprises a network module for handling data frames received over one or more network interfaces of the networked data processing system, the data frames directed to one or more applications. The network module is configured to establish a plurality of data buffers individually associated with application threads of the one or more applications, store associated ones of the data frames for the application threads in the data buffers as the data frames are processed through a network stack of the networked data processing system, and maintain data exclusivity locks for the plurality of data buffers and individually associate the data exclusivity locks with the application threads.

Claims (50)

1. A networked data processing system, comprising:

a processing system configured to execute an operating system that comprises a network module for handling data frames received over one or more network interfaces of the networked data processing system, the data frames directed to one or more applications;

the network module configured to establish a plurality of data buffers individually associated with application threads of the one or more applications, wherein the application threads are each associated with a messaged signaling interrupt (MSI);

the network module configured to store associated ones of the data frames for the application threads in the data buffers as the data frames are processed through a network stack of the networked data processing system; and

the network module configured to maintain data exclusivity locks for the plurality of data buffers and individually associate the data exclusivity locks with the application threads.

2. The networked data processing system of claim 1 , comprising:

the network module configured to manage the data exclusivity locks while the data frames progress in parallel data pathways through the network stack, with each of the parallel data pathways corresponding to an individual one of the application threads.

3. The networked data processing system of claim 1 , comprising:

the network module configured to operate the data exclusivity locks to allow each of the application threads to concurrently process the data frames through the network stack without blocking across the application threads.

4. The networked data processing system of claim 1 , wherein the data frames comprise data storage frames directed to one or more data storage drives of a data storage system, the data storage drives managed by the one or more applications.

5. The networked data processing system of claim 4 , wherein the one or more data storage drives and the processing system are coupled over a Peripheral Component Interconnect Express (PCIe) fabric.

6. The networked data processing system of claim 1 , wherein the data frames comprise iSCSI (Internet Small Computer System Interface) frames directed to one or more data storage drives of a data storage system comprising the networked data processing system.

7. The network data processing system of claim 1 , wherein the data frames comprise data storage transactions directed to one or more storage drives of a data storage system; and comprising:

the network module configured to place the data frames into selected ones of the plurality of data buffers based on a storage context of the storage transactions; and

the network module configured to handle processing of the data frames through the network stack by the application threads in parallel among the plurality of data buffers.

8. The network data processing system of claim 1 , wherein the network module comprises a network driver configured to handle traffic associated with the one or more network interfaces for the processing system, and wherein the plurality of data buffers are included in the network driver and allow concurrent processing of the data frames among the application threads through the network stack.

9. The network data processing system of claim 1 , comprising:

the one or more network interfaces comprising Ethernet interfaces configured to receive storage frames for storage transactions involving data storage drives of the data processing system;

the processing system coupled to the data storage drives and configured to execute the applications for handling the storage transactions with respect to the data storage drives, wherein each of the application threads is associated with a different storage context;

responsive to receiving the storage frames over the Ethernet interfaces, the network module configured to place the storage frames into the data buffers according to an associated storage context and allow the application threads to concurrently process the storage frames through the network stack without ones of the application threads blocking access to the data buffers across the storage contexts.

10. A method of operating a networked data processing system, the method comprising:

executing an operating system that comprises a network module for handling data frames received over one or more network interfaces of the networked data processing system, the data frames directed to one or more applications;

in the network module, establishing a plurality of data buffers individually associated with application threads of the one or more applications, wherein the application threads are each associated with a messaged signaling interrupt (MSI);

in the network module, storing associated ones of the data frames for the application threads in the data buffers as the data frames are processed through a network stack of the networked data processing system; and

in the network module, maintaining data exclusivity locks for the plurality of data buffers and individually associating the data exclusivity locks with the application threads.

11. The method of claim 10 , further comprising:

in the network module, managing the data exclusivity locks while the data frames progress in parallel data pathways through the network stack, with each of the parallel data pathways corresponding to an individual one of the application threads.

12. The method of claim 10 , further comprising:

in the network module, operating the data exclusivity locks to allow each of the application threads to concurrently process the data frames through the network stack without blocking across the application threads.

13. The method of claim 10 , wherein the data frames comprise data storage frames directed to one or more data storage drives of a data storage system, the data storage drives managed by the one or more applications.

14. The method of claim 13 , wherein the one or more data storage drives and the processing system are coupled over a Peripheral Component Interconnect Express (PCIe) fabric.

15. The method of claim 10 , wherein the data frames comprise iSCSI (Internet Small Computer System Interface) frames directed to one or more data storage drives of a data storage system comprising the networked data processing system.

16. The method of claim 10 , wherein the data frames comprise data storage transactions directed to one or more storage drives of a data storage system; and further comprising:

in the network module, placing the data frames into selected ones of the plurality of data buffers based on a storage context of the storage transactions; and

in the network module, handling processing of the data frames through the network stack by the application threads in parallel among the plurality of data buffers.

17. The method of claim 10 , wherein the network module comprises a network driver configured to handle traffic associated with the one or more network interfaces for the processing system, and wherein the plurality of data buffers are included in the network driver and allow concurrent processing of the data frames among the application threads through the network stack.

18. The method of claim 10 , wherein the one or more network interfaces comprise Ethernet interfaces, and further comprising:

in the Ethernet interfaces, receiving storage frames for storage transactions involving data storage drives of the data processing system;

in the processing system executing the applications for handling the storage transactions with respect to the data storage drives, wherein each of the application threads is associated with a different storage context;

responsive to receiving the storage frames over the Ethernet interfaces, in the network module, placing the storage frames into the data buffers according to an associated storage context and allowing the application threads to concurrently process the storage frames through the network stack without ones of the application threads blocking access to the data buffers across the storage contexts.

19. A data storage system, comprising:

a storage assembly comprising a plurality of storage drives and at least one processing module coupled over a Peripheral Component Interconnect Express (PCIe) fabric;

a processor of the processing module configured to execute an operating system that comprises a network stack for handling storage frames that are received into the network stack over one or more network interfaces of the data storage system, the storage frames comprising storage operations directed to ones of the storage drives;

the network stack configured to:

establish a plurality of data buffers individually associated with threads executed by the processor, wherein the threads are each associated with a messaged signaling interrupt (MSI);

store associated ones of the storage frames for the threads in the data buffers as the storage frames are processed through the network stack; and

maintain data exclusivity locks for the plurality of data buffers and individually associate the data exclusivity locks with the threads.

20. The data storage system of claim 19 , comprising:

the network stack configured to manage the data exclusivity locks while the storage frames progress in parallel data pathways through the network stack, with each of the parallel data pathways corresponding to an individual one of the threads; and

the network stack configured to operate the data exclusivity locks to allow each of the threads to concurrently process the storage frames through the network stack without blocking across the threads.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Apr 16, 2021
From: CANADIAN IMPERIAL BANK OF COMMERCE
To: LIQID INC.
Reel/Frame 055953/0860 →
SECURITY INTEREST Recorded Jan 5, 2021
From: LIQID INC.
To: HORIZON TECHNOLOGY FINANCE CORPORATION
Reel/Frame 054900/0539 →
SECURITY INTEREST Recorded Oct 3, 2019
From: LIQID INC.
To: CANADIAN IMPERIAL BANK OF COMMERCE
Reel/Frame 050630/0636 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2016
From: CANNATA, JAMES SCOTT; BREAKSTONE, JASON
To: LIQID INC.
Reel/Frame 039315/0092 →
Continuity (2)
Provisional Application 62153582 · Apr 28, 2015
Related Publication 20160321072A1 · Nov 3, 2016