Fast-path method for transmitting data corresponding to a transport layer connection
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-modified1 . 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.