Network adapter with large frame transfer emulation
First Claim
1. A method for operating a network adapter coupled to a host computer running a transmission control protocol layer, the method comprising:
- the network adapter intercepting connection negotiation packets passing between the transmission control protocol layer and a remote endpoint, wherein the connection negotiation packets can contain a maximum segment size field;
the network adapter modifying the maximum segment size field of the intercepted packets as necessary such that the transmission control protocol layer receives an indication that the remote endpoint has accepted a first maximum segment size for the connection and the remote endpoint receives an indication that the host computer has accepted a second, smaller maximum segment size for the connection; and
, upon receiving a request from the transmission control protocol layer to transfer an original data packet larger than the second maximum segment size to the remote endpoint over the connection, the network adapter segmenting the original data packet into multiple secondary data packets, each having a data size no greater than the second maximum segment size, and transmitting the multiple secondary data packets to the remote endpoint.
1 Assignment
0 Petitions
Accused Products
Abstract
A network adapter and corresponding method for its use are disclosed. The network adapter advertises a large packet data maximum segment size (MSS) to its host, even though it cannot support this MSS on its physical connection. When the host then tries to negotiate remote connections using this large MSS, the adapter performs packet header manipulations such that the host believes it has negotiated a large MSS connection, and the remote endpoint believes it has negotiated a smaller, physically achievable MSS connection. The host should then send large packets, corresponding to the large MSS, to the network adapter. This decreases the workload of the host CPU and decreases bus utilization by the adapter.
Using its knowledge of the local and remote MSS values, the adapter transparently segments the large packets into multiple smaller packets that are digestible by the remote endpoint and transmits these according to the remote endpoint'"'"'s receive window. Preferably, the adapter also emulates a receive window to the host that corresponds to the large MSS.
-
Citations
29 Claims
-
1. A method for operating a network adapter coupled to a host computer running a transmission control protocol layer, the method comprising:
-
the network adapter intercepting connection negotiation packets passing between the transmission control protocol layer and a remote endpoint, wherein the connection negotiation packets can contain a maximum segment size field;
the network adapter modifying the maximum segment size field of the intercepted packets as necessary such that the transmission control protocol layer receives an indication that the remote endpoint has accepted a first maximum segment size for the connection and the remote endpoint receives an indication that the host computer has accepted a second, smaller maximum segment size for the connection; and
,upon receiving a request from the transmission control protocol layer to transfer an original data packet larger than the second maximum segment size to the remote endpoint over the connection, the network adapter segmenting the original data packet into multiple secondary data packets, each having a data size no greater than the second maximum segment size, and transmitting the multiple secondary data packets to the remote endpoint. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
the network adapter intercepting connection acknowledgment packets sent from the remote endpoint to the transmission control protocol layer and modifying remote endpoint flow control information in the acknowledgment packets to be consistent with a maximum packet size equal to the first maximum segment size; and
the network adapter controlling the transmission timing of data packets sent over the connection from the host computer to the remote endpoint based on the original remote endpoint flow control information.
-
-
3. The method of claim 2, wherein the remote endpoint flow control information comprises a window size field, and wherein modifying remote endpoint flow control information comprises calculating an emulated window size and substituting the emulated window size for the received window size in the window size field.
-
4. The method of claim 3, wherein calculating an emulated window size comprises:
-
calculating the aggregate size of (1) all data packets that have been sent over the connection to the remote endpoint and have not yet been acknowledged, and (2) all data packets that are queued for transmission over the connection; and
subtracting this aggregate size from a preset multiple of the first maximum segment size to form the emulated window size.
-
-
5. The method of claim 2, further comprising the network adapter trapping an acknowledgement packet sent from the remote endpoint to the transmission control protocol layer when the acknowledgement packet acknowledges receipt of only one or more, but not all of, the multiple secondary data packets.
-
6. The method of claim 2, further comprising upon receiving a request from the transmission control protocol layer to transfer an original data packet larger than the second maximum segment size to the remote endpoint over the connection, the network adapter fetching, from the host computer, a block of data larger than the second maximum segment size, and storing data from the block of data that cannot be immediately transmitted to the remote endpoint.
-
7. The method of claim 6, wherein the remote endpoint flow control information comprises a window size field, and wherein the block of data is larger than the window size field.
-
8. The method of claim 1, further comprising the network adapter keeping a connection table and updating the connection table, when the connection is negotiated, with an entry that identifies the connection and indicates the connection'"'"'s differing local and remote maximum segment sizes.
-
9. The method of claim 8, further comprising the network adapter sensing when the transmission control protocol closes the connection and, at that time, deleting the connection table entry for the connection.
-
10. The method of claim 8, wherein the connection table contains space for multiple entries, the method further comprising the network adapter creating table entries for multiple coincident connections and using the table entries to service their representative connections.
-
11. The method of claim 10, wherein when multiple coincident connections are being serviced, the method further comprising scheduling packets corresponding to the connections by a method selected from the group of methods consisting of round-robin scheduling, context priority scheduling, and combinations thereof.
-
12. The method of claim 1, further comprising the network adapter:
-
receiving first and second data packets, each pertaining to the connection and having a size not greater than the second maximum segment size, from the remote endpoint;
assembling the data from the first and second data packets into a single data packet having a size greater than the second maximum segment size; and
passing this single data packet up to the transmission control protocol layer as if it had originated at the remote endpoint.
-
-
13. The method of claim 12, further comprising the network adapter receiving additional data packets, pertaining to the connection, and assembling the data from these additional data packets onto the single data packet prior to passing the single data packet up to the transmission control protocol layer.
-
14. The method of claim 13, further comprising halting the assembling operation and passing the single data packet up to the transmission control protocol layer upon the first to occur of:
-
a preset time since the arrival of the first data packet elapsing; and
the size of the single data packet meeting a pre-configured target size.
-
-
15. The method of claim 12, further comprising the network adapter generating an acknowledgement packet that acknowledges the first data packet, and transmitting this acknowledgement packet to the remote endpoint.
-
16. The method of claim 15, further comprising the network adapter watching for a corresponding host acknowledgement packet from the transmission control protocol layer whenever it has acknowledged a data packet to the remote endpoint, and re-passing the single data packet up to the transmission control protocol layer if the corresponding host acknowledgement packet is not received within a preset time of the first passing of the single data packet up to the transmission control protocol layer.
-
17. The method of claim 1, further comprising the network adapter indicating to the transport protocol layer at initialization that it supports the first maximum segment size, when at the physical layer it does not in fact support the first maximum segment size.
-
18. A network adapter comprising:
-
a network interface;
a packet buffer memory to buffer packets for transmission over the network interface;
a connection parameter manager to negotiate, for a connection, a first maximum segment size with a local host and a second, smaller maximum segment size with a remote endpoint;
a context engine to establish and service a connection context when the local host requests transmission over the connection of an original data packet having a size greater than the remote endpoint'"'"'s maximum segment size; and
a packet engine to segment the original data packet into multiple secondary data packets, each having a size no greater than the remote endpoint'"'"'s maximum receive segment size, and place these secondary packets into the packet buffer memory. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. 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 connection parameter manager to negotiate, for a connection, a first maximum segment size with a local host and a second, smaller maximum segment size with a remote endpoint; and
a context scheduler to match host-originated data packets to the connection and request a packet segmentation context on the network adapter when a matched data packet is larger than the second maximum segment size. - View Dependent Claims (28, 29)
-
Specification