US2016301613A1PendingUtilityA1

Fast-path method for transmitting data corresponding to a transport layer connection

Assignee: ALACRITECH INCPriority: Oct 14, 1997Filed: Jun 17, 2016Published: Oct 13, 2016
Est. expiryOct 14, 2017(expired)· nominal 20-yr term from priority
H04L 69/32H04L 49/90H04L 47/10H04L 47/36H04L 47/193H04L 45/745H04L 69/162H04L 45/66H04L 69/166H04L 61/10H04L 61/00H04L 67/63H04L 67/62H04L 69/22H04L 47/50H04L 49/901H04L 49/9052H04L 49/9042H04L 49/9073H04L 49/9094H04L 67/10G06F 13/4221H04L 49/9068H04L 47/6225G06F 13/4022H04L 49/9021H04L 49/9063H04L 69/163H04L 69/16H04L 69/12G06F 13/28H04L 67/34H04L 69/161
60
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

An intelligent network interface card (INIC) or communication processing device (CPD) works with a host computer for data communication. The device provides a fast-path that avoids protocol processing for most messages, greatly accelerating data transfer and offloading time-intensive processing tasks from the host CPU. The host retains a fallback processing capability for messages that do not fit fast-path criteria, with the device providing assistance such as validation even for slow-path messages, and messages being selected for either fast-path or slow-path processing. A context for a connection is defined that allows the device to move data, free of headers, directly to or from a destination or source in the host. The context can be passed back to the host for message processing by the host. The device contains specialized hardware circuits that are much faster at their specific tasks than a general purpose CPU. A preferred embodiment includes a trio of pipelined processors devoted to transmit, receive and utility processing, providing full duplex communication for four Fast Ethernet nodes.

Claims

exact text as granted — not AI-modified
1 . A method for sending data over a network, the method comprising:
 establishing, by a protocol stack running on a host computer, a transport layer connection, including creating a context for the connection;   receiving, by the protocol stack from a process running at a layer above the transport layer, a block of data corresponding to the transport layer connection;   maintaining, at a network interface device for the host computer, a basic frame header for the context;   transferring, by the network interface device, portions of the block of data from the host computer to the network interface device;   creating headers for the portions, by the network interface device, from the basic frame header; and   prepending, by the network interface device, the headers to the portions to form transmit frames.   
     
     
         2 . The method of  claim 1 , further comprising sending, by the network interface device, the transmit frames to a network that has a maximum transmission unit (MTU) that is less than the length of the block of data. 
     
     
         3 . The method of  claim 1 , wherein creating headers for the portions includes modifying fields of the basic frame header. 
     
     
         4 . The method of  claim 1 , wherein the transport layer connection is a TCP connection, and the basic frame header includes Internet Protocol (IP) addresses and Transmission Control Protocol (TCP) ports for the TCP connection. 
     
     
         5 . The method of  claim 1 , wherein the basic frame header includes a Media Access Control (MAC) layer address, and creating headers for the portions includes forming headers containing the MAC layer address. 
     
     
         6 . The method of  claim 1 , further comprising associating with the context a descriptor for a buffer, in a memory of the computer, that has been allocated for the block of data. 
     
     
         7 . The method of  claim 1 , further comprising transmitting the transmit frames on a network. 
     
     
         8 . A method for sending data over a network, the method comprising:
 establishing, at a host computer, a transport layer connection, including creating a context for the connection;   receiving, by the protocol stack from a process running at a layer above the transport layer, a block of data corresponding to the transport layer connection, the block of data having a length;   maintaining, at a network interface device for the host computer, a basic frame header for the context;   transferring the block of data from the computer to the network interface device, by transferring a pointer to the block of data and the length;   dividing, by the network interface device, the data into portions, by transferring the portions from the host computer to the network interface device using the pointer and the length;   creating headers for the portions, by the network interface device, the headers for the portions including the basic frame header and an adjusted checksum; and   prepending, by the network interface device, the headers to the portions to form transmit frames.   
     
     
         9 . The method of  claim 8 , wherein creating headers for the portions includes modifying fields of the basic header. 
     
     
         10 . The method of  claim 8 , wherein the transport layer connection is a TCP connection, and the basic frame header includes Internet Protocol (IP) addresses and Transmission Control Protocol (TCP) ports for the TCP connection. 
     
     
         11 . The method of  claim 8 , wherein the basic frame header includes a Media Access Control (MAC) layer address. 
     
     
         12 . The method of  claim 8 , wherein the block of data is located in a memory of the host computer that is controlled by a process that is running above the transport layer. 
     
     
         13 . The method of  claim 8 , further comprising sending, by the network interface device, the transmit frames to a network that has a maximum transmission unit (MTU) that is less than the length of the block of data. 
     
     
         14 . A method for sending data over a network, the method comprising:
 running, on a host computer, a protocol stack including a network layer and a transport layer;   receiving, by the protocol stack from a process running at a layer above the transport layer, a block of data;   maintaining, at a network interface device for the host computer, a basic frame header for a transport layer connection;   transferring, by a direct memory access (DMA) unit of the network interface device, portions of the block of data from the host computer to the network interface device;   creating headers for the portions, by the network interface device, from the basic frame header;   prepending, by the network interface device, the headers to the portions to form transmit frames; and   transferring the transmit frames to the network.   
     
     
         15 . The method of  claim 14 , wherein the DMA unit performs a checksum calculation for each portion of the portions along with transferring that portion from the host computer to the interface device. 
     
     
         16 . The method of  claim 14 , wherein the prepending the headers to the portions is performed by the DMA unit. 
     
     
         17 . The method of  claim 14 , wherein prepending a header to a first portion of the portions is performed before transferring a second portion of the portions from the host computer to the network interface device. 
     
     
         18 . The method of  claim 14 , wherein creating headers for the portions includes adding status information to the basic frame header. 
     
     
         19 . The method of  claim 14 , wherein the basic frame header includes a Media Access Control (MAC) layer address. 
     
     
         20 . The method of  claim 14 , wherein the basic frame header includes Internet Protocol (IP) addresses and Transmission Control Protocol (TCP) ports.

Join the waitlist — get patent alerts

Track US2016301613A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.