Network adapter with TCP windowing support
First Claim
1. A method for operating a network adapter coupled to a host computer, the adapter having a host-resident driver and separate adapter hardware, the method comprising:
- the network adapter driver accepting a request from a host-based transmission protocol layer to transmit a block of data to a remote endpoint;
the network adapter segmenting the block of data into multiple data packets;
the network adapter hardware transmitting the packets to the remote endpoint; and
the network adapter interpreting acknowledgment data, relevant to those packets, sent by the remote endpoint to the host-based transmission protocol layer, wherein interpreting comprises applying a filter to received acknowledgment packets, the filter applying a selection criteria to prevent at least some received acknowledgment packets addressed to the host-based transmission protocol layer from being forwarded to the host-based transmission protocol layer.
1 Assignment
0 Petitions
Accused Products
Abstract
A network adapter and corresponding method for its use are disclosed. The network adapter has an operational mode that allows a host CPU to offload transmission of a block of data to the adapter. The adapter segments the block into fragments, and builds a data packet for each fragment. The adapter transmits these packets with an adapter-implemented flow control. This flow control uses: a context engine that tracks flow control variables for a “context” established for the block; a context memory for storing the variables; and a receive filter that updates flow control information for the block based on ACK packets received from the remote endpoint receiving the data packets.
Because the network adapter implements flow control for data blocks that it segments, intermediate ACK packets corresponding to that block can be intercepted by the adapter, before they pass to the host, conserving host resources. An added advantage is that the host CPU can offload data blocks larger than the remote endpoint'"'"'s receive window size, since the adapter can follow the transmit window and transmit packets at appropriate intervals. This further decreases load on the host CPU, decreases latency, and improves bandwidth utilization.
-
Citations
25 Claims
-
1. A method for operating a network adapter coupled to a host computer, the adapter having a host-resident driver and separate adapter hardware, the method comprising:
-
the network adapter driver accepting a request from a host-based transmission protocol layer to transmit a block of data to a remote endpoint;
the network adapter segmenting the block of data into multiple data packets;
the network adapter hardware transmitting the packets to the remote endpoint; and
the network adapter interpreting acknowledgment data, relevant to those packets, sent by the remote endpoint to the host-based transmission protocol layer, wherein interpreting comprises applying a filter to received acknowledgment packets, the filter applying a selection criteria to prevent at least some received acknowledgment packets addressed to the host-based transmission protocol layer from being forwarded to the host-based transmission protocol layer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
periodically examining the remote endpoint'"'"'s window size and comparing it to the payload size of transmitted but unacknowledged data packets; and
building and transmitting another data packet for the connection context when the comparing step indicates that the remote endpoint can accept another data packet with at least a defined minimum payload size.
-
-
9. A method for operating a network adapter coupled to a host computer, the adapter having a host-resident driver and separate adapter hardware, the method comprising:
-
the network adapter driver accepting a request from a host-based transmission protocol layer to transmit a block of data to a remote endpoint, wherein the block of data is larger than the window size of the remote endpoint at the time of the request, the network adapter hardware initializing a connection context corresponding to the request;
the network adapter segmenting the block of data into multiple data packets;
the network adapter hardware transmitting the packets to the remote endpoint;
the network adapter hardware interpreting acknowledgment data, relevant to those packets, sent by the remote endpoint to the host-based transmission protocol layer; and
the network adapter hardware controlling the transmission timing of the multiple packets based on the remote endpoint'"'"'s window size and interpreted acknowledgment data;
wherein the network adapter is capable of accepting multiple requests and initializing a connection context for each request, the method further comprising interleaving service for the multiple contexts. - View Dependent Claims (10, 11, 12, 13, 14)
establishing a retransmission time for the connection context; and
executing a retransmission procedure when an acknowledgment packet that acknowledges at least one of the transmitted data packets for that connection context is not received prior to the retransmission time.
-
-
12. The method of claim 11, wherein executing the retransmission procedure comprises aborting the connection context and reporting an error to the host-based transmission protocol layer.
-
13. The method of claim 11, wherein executing the retransmission procedure comprises retransmitting unacknowledged data packets for the block.
-
14. The method of claim 13, further comprising counting the number of times that retransmittal has occurred for the connection context, and aborting the context and reporting an error to the host-based transport protocol if the number of times exceeds a defined maximum.
-
15. A network adapter comprising:
-
a network interface;
a packet buffer memory to buffer packets for transmission over the network interface;
a context engine to establish and service a connection context requested by a host;
a packet engine to segment a data block associated with the connection context into multiple data packets and place these packets into the packet buffer memory; and
a receive filter to associate acknowledgment packets, received via the network interface, with the connection context;
wherein the context engine controls when the packet engine places data packets in the packet buffer memory, according to flow control information taken from the acknowledgment packets. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A computer system comprising:
-
network adapter hardware having an offload operational mode wherein it segments a block of data into smaller data packets and configures the data packets for transmission under a network transport protocol, and then provides flow control for the data packets, the network adapter hardware comprising a receive filter that, in the offload operational mode, interprets acknowledgment packets transmitted by a remote endpoint to the host network transport protocol in order to provide flow control for the packets, wherein the receive filter traps at least some of the acknowledgment packets, preventing their communication to the host network transport protocol; and
a host processor in communication with the network adapter hardware, the host processor being software configured such that, for a given block of data, the network transport protocol can either be executed on the host processor, or network transport protocol segmentation and flow control for the block can be handed off to the network adapter hardware for processing in the offload operational mode.
-
-
25. An article of manufacture comprising a computer-readable medium containing a driver program for a network adapter, the driver program causing a processor to execute:
-
a packet segmentation offload scheduler that (a) accepts requests from a higher-level protocol to segment a data block and temporarily handle flow control for that block, and (b) schedules those requests, including flow control, to network adapter hardware controlled by the driver program, wherein the packet segmentation offload scheduler tracks the number of requests currently being handled by the network adapter, and rejects further requests from the higher-level protocol when the number of current requests exceeds a preset maximum; and
a packet segmentation offload status reporter for communicating the status of accepted requests to the higher-level protocol.
-
Specification