Receive processing with network protocol bypass
First Claim
1. A method for transferring data on a network from a data source to an end station executing a multi-layer network protocol, including a network layer and at least one higher layer, through a network interface on the end station, comprising:
- receiving in the network interface a packet which carries a data payload from a block of data in the data source, and a control field identifying the packet;
determining based on the control field in the network interface whether the packet matches a flow specification, and if so transferring the data payload in the packet directly to a target buffer assigned by a process at a layer higher than the network layer.
6 Assignments
0 Petitions
Accused Products
Abstract
An adapter is provided with intelligence that allows it to separate the header parts of a packet being received from the payload it carries, and in most cases move the payload directly into a destination buffer at the application layer or file system layer. Copies by the intermediate layers of the protocol stack are bypassed, reducing the number of times that the payload of a communication must be copied by the host system. At the network interface, a plurality of packets is received, and the payload of each is bypassed directly into the target destination buffer. The network interface device identifies the packets which are in the sequence of packets carrying payload to be stored in the target buffer by the flow specification carried with such packets. Also, the packets carrying data payload for the file include a sequence number or other identifier by which the network interface is able to determine the offset within the target buffer to which the packet is to be stored.
-
Citations
20 Claims
-
1. A method for transferring data on a network from a data source to an end station executing a multi-layer network protocol, including a network layer and at least one higher layer, through a network interface on the end station, comprising:
-
receiving in the network interface a packet which carries a data payload from a block of data in the data source, and a control field identifying the packet;
determining based on the control field in the network interface whether the packet matches a flow specification, and if so transferring the data payload in the packet directly to a target buffer assigned by a process at a layer higher than the network layer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for transferring data on a network from a data source to an end station executing a multi-layer network protocol through a network interface on the end station, including medium access control layer processes, comprising:
-
establishing a connection with a destination for a session according to a network protocol;
transmitting a request for transfer of a block of data from the data source, and providing a flow specification and an identifier of a target buffer to the network interface;
receiving in the network interface a plurality of packets which carry respective data payloads, packets in the plurality of packets including control fields identifying whether the packet falls within the flow specification of the block of data, upon receiving a packet, determining in the network interface whether the packet falls within the flow specification, and if so transferring the data payload to the target buffer. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A method for transferring data on a network from a data source to an end station executing a TCP/IP network protocol through a network interface on the end station including medium access control layer processes below TCP/IP, comprising:
-
establishing a connection with a destination for a session according to the TCP/IP network protocol;
transmitting a request from a application, for transfer of a block of data from the data source, and providing a flow specification for the block of data and an identifier of a target buffer to the network interface;
receiving in the network interface a plurality of packets which carry respective data payloads from the block of data in the data source, and each packet in the plurality of packets including a TCP/IP header, upon receiving each packet, determining in the network interface whether the packet falls within the flow specification, and if so transferring a data payload to the target buffer. - View Dependent Claims (17, 18, 19, 20)
-
Specification