Multi-threaded internet small computer system interface (iSCSI) socket layer
First Claim
1. A system for processing network data comprising data received over a network or data for transmission over the network, the system comprising:
- computer system hardware configured for;
providing a subsystem software layer comprising a protocol software layer and a socket software layer, the protocol software layer implementing only one protocol processing thread for processing network data and the socket software layer implementing a plurality of socket processing threads for processing network data;
providing a thread identifier for each socket processing thread;
establishing a first connection over the network;
assigning the protocol processing thread and a first socket processing thread for servicing the first connection using a first freed list, the first freed list comprising data structures available for processing network data, the first freed list being accessible only by the protocol processing thread and the first socket processing thread;
storing the thread identifier of the first socket processing thread to the first freed list;
receiving data over the first connection;
accessing, using the first socket processing thread, the first freed list to remove a first data structure from the first freed list, wherein access to the first freed list is managed by allowing a socket processing thread, having the same thread identifier that is stored to the first freed list, to access the first freed list and restricting access for all other socket processing threads; and
processing the received data using the first socket processing thread and the first data structure.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments herein provide a computer system having an operating system that implements a multi-threaded iSCSI socket software layer. The multi-threaded iSCSI socket software layer may operate in conjunction with a single-threaded iSCSI protocol software layer to process network data according to the iSCSI protocol standard. Provided are protections against operational incompatibilities between the multi-threaded iSCSI socket layer and the single-threaded iSCSI protocol layer. A unique identifier may be assigned to each iSCSI socket thread to ensure proper delivery of thread messages to the appropriate iSCSI socket thread. A separate freed list may be allocated for each iSCSI socket thread, wherein the iSCSI protocol thread adds data structures to the freed list and a single iSCSI socket thread removes and uses data structures from the freed list. The multi-threaded iSCSI socket software layer reduces processor idle time, thus increasing data processing efficiency and overall network data throughput.
-
Citations
16 Claims
-
1. A system for processing network data comprising data received over a network or data for transmission over the network, the system comprising:
computer system hardware configured for; providing a subsystem software layer comprising a protocol software layer and a socket software layer, the protocol software layer implementing only one protocol processing thread for processing network data and the socket software layer implementing a plurality of socket processing threads for processing network data; providing a thread identifier for each socket processing thread; establishing a first connection over the network; assigning the protocol processing thread and a first socket processing thread for servicing the first connection using a first freed list, the first freed list comprising data structures available for processing network data, the first freed list being accessible only by the protocol processing thread and the first socket processing thread; storing the thread identifier of the first socket processing thread to the first freed list; receiving data over the first connection; accessing, using the first socket processing thread, the first freed list to remove a first data structure from the first freed list, wherein access to the first freed list is managed by allowing a socket processing thread, having the same thread identifier that is stored to the first freed list, to access the first freed list and restricting access for all other socket processing threads; and processing the received data using the first socket processing thread and the first data structure. - View Dependent Claims (2, 3, 15)
-
4. A method for processing network data comprising data received over a network or data for transmission over the network, the method comprising:
providing computer system hardware for performing; providing a subsystem software layer comprising a protocol software layer and a socket software layer, the protocol software layer implementing only one protocol processing thread for processing network data and the socket software layer implementing a plurality of socket processing threads for processing network data; providing a thread identifier for each socket processing thread; establishing a first connection over the network; assigning the protocol processing thread and a first socket processing thread for servicing the first connection using a first freed list, the first freed list comprising data structures available for processing network data, the first freed list being accessible only by the protocol processing thread and the first socket processing thread; storing the thread identifier of the first socket processing thread to the first freed list; receiving data over the first connection; accessing, using the first socket processing thread, the first freed list to remove a first data structure from the first freed list, wherein access to the first freed list is managed by allowing a socket processing thread, having the same thread identifier that is stored to the first freed list, to access the first freed list and restricting access for all other socket processing threads; and processing the received data using the first socket processing thread and the first data structure. - View Dependent Claims (5, 6, 16)
-
7. A system for processing network data comprising data received over a network or data for transmission over the network, the system comprising:
computer system hardware configured for; providing a subsystem software layer comprising a protocol software layer and a socket software layer, the protocol software layer implementing only one protocol processing thread for processing network data and the socket software layer implementing a plurality of socket processing threads for processing network data; providing a thread identifier for each socket processing thread; establishing a first connection over the network; assigning the protocol processing thread and a first socket processing thread for servicing the first connection using a first set of data structures and buffers; storing the thread identifier of the first socket processing thread to each data structure in the first set of data structures and buffers; processing, using the protocol processing thread, data for transmission over the first connection; storing processed data to a first data buffer and processing information to a first data structure in the first set of data structures and buffers; reading a thread identifier stored to the first data structure to determine that the first socket processing thread is servicing the first connection; and sending a message to the first socket processing thread which activates the first socket processing thread to process data stored in the first data buffer according to processing information stored in the first data structure. - View Dependent Claims (8, 9, 10)
-
11. A method for processing network data comprising data received over a network or data for transmission over the network, the method comprising:
providing computer system hardware for performing; providing a subsystem software layer comprising a protocol software layer and a socket software layer, the protocol software layer implementing only one protocol processing thread for processing network data and the socket software layer implementing a plurality of socket processing threads for processing network data; providing a thread identifier for each socket processing thread; establishing a first connection over the network; assigning the protocol processing thread and a first socket processing thread for servicing the first connection using a first set of data structures and buffers; storing the thread identifier of the first socket processing thread to each data structure in the first set of data structures and buffers; processing, using the protocol processing thread, data for transmission over the first connection; storing processed data to a first data buffer and processing information to a first data structure in the first set of data structures and buffers; reading a thread identifier stored to the first data structure to determine that the first socket processing thread is servicing the first connection; and sending a message to the first socket processing thread which activates the first socket processing thread to process data stored in the first data buffer according to processing information stored in the first data structure. - View Dependent Claims (12, 13, 14)
Specification