USRE45070EExpiredUtility

Receive processing with network protocol bypass

54
Assignee: HEWLETT PACKARD DEVELOPMENT COPriority: May 1, 1998Filed: May 9, 2013Granted: Aug 12, 2014
Est. expiryMay 1, 2018(expired)· nominal 20-yr term from priority
H04L 49/90H04L 49/901H04L 49/9042H04L 69/161H04L 69/16
54
PatentIndex Score
0
Cited by
47
References
28
Claims

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.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       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 of the end station, from the at least one higher layer, a flow specification comprising an identifier of a protocol suite and an identifier of a block of data to be requested from the data source; 
 prior to receiving a first packet of a plurality of packets, wherein the plurality of packets includes the block of data, responsive to a request for the block of data, allocating a target buffer assigned by a process at a layer higher than the network layer for storing the block of data and notifying the network interface of the allocated target buffer; 
 receiving in the network interface a the first packet which carries a data payload from a the block of data in the data source, and a control field identifying the first packet; and 
 determining in the network interface whether the first packet carries a payload with at least a portion of the block of data based on matching the control field in the network interface whether the packet matches a with the identifier of the block of data in the flow specification, and if so transferring the data payload in the first packet directly to a the target buffer assigned by a process at a layer higher than the network layer based exclusively on the matching. 
 
     
     
       2. The method of  claim 1 , wherein the control field in the first packet includes a packet header. 
     
     
       3. The method of  claim 1 , wherein the multi-layer network protocol comprises TCP/IP, and the control field comprises a TCP/IP header. 
     
     
       4. The method of  claim 1 , including prior to receiving the packet, allocating the target buffer for the plurality of packets, and notifying the network interface of the allocated target buffer. 
     
     
       5. The method of  claim 1 , the network interface is coupled to a network medium supporting a maximum packet size, and including transmitting a the request from an application for transfer of a the block of data from the data source, the block of data having a length potentially greater than the maximum packet size for the medium. 
     
     
       6. The method of  claim 5 , including notifying wherein the flow specification is provided to the network interface in response to the request of a flow specification for transfer of the block of data according to the multi-layer network protocol, and wherein the step of receiving the packet includes identifying packet using the flow specification. 
     
     
       7. The method of  claim 6 , wherein the network protocol comprises TCP/IP, and the identifier in the flow specification includes a sequence number of a first byte from the plurality of packets to be stored in the target buffer. 
     
     
       8. The method of  claim 1 , wherein the identifier in the flow specification includes a sequence number range for the block of data. 
     
     
       9. The method of claim  8  1, wherein the flow specification includes IP source and destination addresses and TCP port numbers. 
     
     
       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.   
     
     
       11. The method of  claim 10 , wherein the control field in the first packet includes a packet header. 
     
     
       12. The method of  claim 10 , wherein the network protocol comprises TCP/IP, and the packet control data comprises a TCP/IP header. 
     
     
       13. The method of  claim 10 , wherein the network protocol comprises TCP/IP, and the flow specification includes a sequence number of a first byte from the plurality of packets to be stored in the target buffer. 
     
     
       14. The method of  claim 10 , wherein the flow specification includes a sequence number for the block of data. 
     
     
       15. The method of  claim 14 , wherein the flow specification includes IP source and destination addresses and TCP port numbers. 
     
     
       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.   
     
     
       17. The method of  claim 16 , wherein the flow specification includes a sequence number for bytes of data in the block of data. 
     
     
       18. The method of  claim 17 , wherein the flow specification includes IP source and destination addresses and TCP port numbers. 
     
     
       19. The method of  claim 16 , wherein the target buffer comprises a buffer assigned at the TCP layer or higher. 
     
     
       20. The method of  claim 16 , wherein the target buffer comprises a buffer assigned at a layer higher than the TCP layer. 
     
     
       21. The method of claim 2, further comprising transferring at least a portion of the packet header to a buffer in the end station outside the network interface for processing using the multi-layer network protocol. 
     
     
       22. The method of claim 1, wherein the identifier in the flow specification includes packet numbers. 
     
     
       23. 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 of the end station, from the at least one higher layer, a flow specification comprising an identifier of a protocol suite and an identifier of a block of data to be requested from the data source;   prior to receiving a first packet of a plurality of packets, wherein each packet of the plurality of packets carries a data payload from the block of data in the data source and a control field identifying that packet, responsive to a request for the block of data, allocating a target buffer assigned by a process at a layer higher than the network layer for storing the block of data and notifying the network interface of the allocated target buffer; and for each packet of the plurality of packets:   receiving in the network interface that packet; and   determining in the network interface whether that packet carries a payload with at least a portion of the block of data based on matching the control field of that packet with the identifier of the block of data in the flow specification, and if that packet matches the identifier of the block of data in the flow specification, transferring the data payload in that packet directly to the target buffer.   
     
     
       24. The method of claim 23, wherein the control field in each packet of the plurality of packets includes a packet header. 
     
     
       25. The method of claim 24, further comprising transferring at least a portion of the packet header to a buffer in the end station outside the network interface for processing using the multi-layer network protocol. 
     
     
       26. The method of claim 23, wherein the multi-layer network protocol comprises TCP/IP. 
     
     
       27. The method of claim 23, wherein the network interface is coupled to a network medium supporting a maximum packet size, and including transmitting the request from an application for transfer of the block of data from the data source, the block of data having a length greater than the maximum packet size for the medium. 
     
     
       28. The method of claim 27, wherein the flow specification is provided to the network interface in response to the request for transfer of the block of data according to the multi-layer network protocol.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.