Offload of TCP segmentation to a smart adapter
First Claim
1. A method for sending data on a network from a data source executing a network protocol which includes a process for generating packet control data for packets according to the network protocol, through a network interface including medium access control layer processes, comprising:
- establishing a connection with a destination for a session according to the network protocol;
determining a window size from the destination according to the network protocol, which indicates an amount of data the destination is ready to receive;
defining a datagram in the data source, including generating a packet control data template and supplying a data payload having a size less than or equal to the window size;
supplying the datagram to the network interface;
generating in the network interface, a plurality of packets from the datagram, the plurality of packets including respective packet control data based on the packet control data template, and including respective segments of the data payload;
sending the plurality of packets to the destination; and
receiving acknowledgment from the destination of receipt of the plurality of packets according to the network protocol.
6 Assignments
0 Petitions
Accused Products
Abstract
A method is provided for sending data from a data source executing a network protocol such as the TCP/IP protocol stack, which includes a process for generating headers for packets according to the network protocol. The method includes sending such data on a network through a smart network interface. The network protocol defines a datagram in the data source, including generating a header template and supplying a data payload. The datagram is supplied to the network interface. At the network interface, a plurality of packets of data are generated from the datagram. The plurality of packets include respective headers, such as TCP/IP headers, based on the header template, and include respective segments of the data payload. The network interface supports packets having a pre-specified length, and the data payload is greater than the pre-specified length, such as two to forty times larger or more. Thus, the higher layer processing specifies a very large datagram, which is automatically segmented at the network interface layer, instead of at the TCP layer.
-
Citations
83 Claims
-
1. A method for sending data on a network from a data source executing a network protocol which includes a process for generating packet control data for packets according to the network protocol, through a network interface including medium access control layer processes, comprising:
-
establishing a connection with a destination for a session according to the network protocol; determining a window size from the destination according to the network protocol, which indicates an amount of data the destination is ready to receive; defining a datagram in the data source, including generating a packet control data template and supplying a data payload having a size less than or equal to the window size; supplying the datagram to the network interface; generating in the network interface, a plurality of packets from the datagram, the plurality of packets including respective packet control data based on the packet control data template, and including respective segments of the data payload; sending the plurality of packets to the destination; and receiving acknowledgment from the destination of receipt of the plurality of packets according to the network protocol. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. A method for sending data on a network from a data source executing a TCP/IP network protocol which includes a process for generating TCP/IP headers for packets according to the network protocol, through a network interface, comprising:
-
establishing a connection with a destination for a session according to the TCP/IP network protocol; determining a TCP window size from the destination, which indicates an amount of data the destination is ready to receive; defining a datagram in the data source, including generating a TCP/IP header template and supplying a data payload having a size less than or equal to the window size; supplying the datagram, a segment size parameter, and a request to segment the datagram to the network interface; generating in the network interface, in response to the segment size parameter and to the request to segment, a plurality of packets from the datagram, including executing processes in the network interface to provide respective TCP/IP headers based on the TCP/IP header template, to provide respective segments of the data payload having lengths equal to or less than the segment size parameter, and to compute IP header checksums and TCP checksums for the plurality of packets; sending the plurality of packets to the destination; and receiving acknowledgment from the destination of receipt of the plurality of packets according to the network protocol. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49)
-
-
50. A network interface device coupled to a host system including a data source, the data source executing a network protocol which includes a process for generating packet control data for packets according to the network protocol and sending packet on the network, comprising:
-
a host interface coupled to the host system, adapted to receive a datagram in the data source, the datagram including a packet control data template and a data payload; memory to store at least portions of the datagram to the network interface; a processor that generates a plurality of packets from the datagram, the plurality of packets including respective packet control data based on the packet control data template, and including respective segments of the data payload; and a medium access control unit coupled to the memory and to a network medium that manages transfer of the plurality of packets to the network from the memory. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67)
-
-
68. A method for sending data on a network from a data source executing a network protocol which includes a process for generating packet control data for packets according to the network protocol, through a network interface, comprising:
-
defining a datagram in the data source, including generating a packet control data template and supplying a data payload; supplying the datagram to the network interface; generating in the network interface at the medium access control layer, a plurality of packets from the datagram, the plurality of packets including respective packet control data based on the packet control data template, and including respective segments of the data payload. - View Dependent Claims (69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)
-
Specification