Protocol offload processing is known. For example, an interface device (sometimes known as intelligent network interface circuitry or an “offload target”) may be provided to operate in coordination with a host, for protocol offload processing with a peer device across a network. For example, the protocol offload processing may be according to the Transmission Control Protocol (TCP) whereas communication across the network may be via high-speed Ethernet, such as 10 Gbps Ethernet.
Furthermore, it is known that the protocol offload processing may be, for example, “partial offload” or “full offload.” For example, with “full offload,” the offload target handles all the phases of a connection. That is, in addition to handling the data transfer phase of a connection, the offload target is additionally at least responsible for establishing a connection, including handling retransmissions, if necessary, during connection establishment.
“Partial offload” has various flavors. Examples include the following:
Partial offload solutions have been promulgated such as, for example, the “TCP Chimney” feature of recently released Vista operating system from Microsoft. Like conventional partial offload solutions, the TCP Chimney feature appears to be designed to retain full control over connection acceptance while, in addition, simplifying management of listening servers.
A listening server, for example, is used when a peer requests a connection to a local host, such as a TCP/IP connection at a specified IP address and port number. A listening server typically has an LIP, LP, FIP, and FP attribute, such that a listening server on the local host is listening for connect requests to local IP address LIP, at local port number LP, from a foreign IP address FIP, and from foreign port FP at the FIP. The FIP and FP fields for the listening server many times have “don't care values,” such that connect requests are accepted from any FP on any FIP. A listening server may, in addition, have a protocol attribute such as TCP, or SCTP (Stream Control Transfer Protocol), as the SCTP protocol and other connection oriented protocols use a similar listening server mechanism to receive connect requests.
The connect request is received by the listening server that then forwards the request to a connection manager that either accepts all connect requests, or that uses various criteria such as ACL (Access Control Lists) to either accept or reject a connect request.
At 204, the host stack initiates offload of the connection to the offload target. At 205, a data packet arrives from the peer after the host stack initiates the connection offload but before the connection has been set up on the offload target. The data packet is therefore sent to the host. At 206, the host stack receives the data packet. Detecting that the offload is in progress, the host stack retains the data packet.
At 207, the offloading is complete. At 208, the host stack forwards the data packet back to the offload target for processing. At 209, the offload target processes the packet and provides an acknowledgment back to the peer.
We now discuss how a control block may be configured in accordance with an example of an active open operation. An example of such a control block is shown immediately below:
In accordance with one example of an active open operation, a “constant state” portion of a connection control block is provided in a manner that it may otherwise be provided in a configuration that does not include an offload target. A “cached state” portion of the connection control block may be partly determined by the offload target. The delegated state portion may be partially filled in by the offload target when the connection establishment succeeds. It is noted that, prior to connection establishment succeeding, all send and receive sequence numbers are undefined and the TCP state is SYN_SENT. The offload target interprets such a control block as being for an offloaded active open.
In accordance with other conventional implementations, an active open operation is achieved in a full offload manner. That is, in essence, the host requests the offload target to establish and operate a connection.
At 305, the offload target provides an ACK packet to the peer, in response to the SYN/ACK packet provided from the peer. At 306 and 307, the offload target receives a data packet (306) and acknowledges the data packet (307).
At 404, a data packet arrives from the peer. Meanwhile, at 405, the host receives the ACK and initiates a connection offload to the offload target. At 406, the host stack receives the data packet before the connection has been set up on the offload target. Detecting that the offload operation is in progress, the host stack retains the data packet. At 407, the host stack receives a message from the offload target that the offload operation is complete.
At 408, the host stack forwards the data packet to the offload target for processing. At 409, the offload target processes the data packet and sends an ACK to the peer. At 410, the peer receives the ACK corresponding to receipt of the data packet by the host.
We now discuss how a control block may be configured in accordance with an example of a partial offload passive open operation such as described relative to
In accordance with one example of a passive open operation, a “constant state” portion of a connection control block is provided in a manner that it may otherwise be provided in a configuration that does not include an offload target. In addition, a “cached state” portion of the connection control block may also be provided in a manner that may otherwise be provided in a configuration that does not include an offload target.
The “delegated state” portion of the connection control block may be partially filled in by the offload target when the connection establishment succeeds. It is noted that, prior to connection establishment succeeding, all send and receive sequence numbers are undefined and the TCP state is SYN_RCVD. The offload target interprets such a control block as being for an offloaded passive open.
At 503, based on the initiate offload indication, the offload target provides a SYN/ACK to the peer. Furthermore, at 503, the offload target deals with connection establishment issues such as SYN/ACK retransmission issues. At 504, the peer issues an ACK packet for the SYN/ACK packet. At 505, the peer sends a data packet. At 506, the offload target provides an “initiate complete” indication to the host stack. It is noted that the initiate complete indication may be temporally before or after the offload target receives the data packet (505). In any case, the offload target handles the data packet and, at 507, provides a corresponding ACK packet back to the peer.
A method of operating a system including a host and intelligent network interface circuitry extends a passive open operation to accomplish full offload of a stateful connection between a host and a peer. In response to observing a synchronization signal from the peer, an offload target creates a connection control block in the offload target in anticipation of a corresponding stateful connection being offloaded from the host. The observed synchronization signal is allowed to be provided to the host;
In response to observing a synchronization acknowledgment signal from the host and destined for the peer, the offload target performs establishment processing for the stateful connection. Based on an acknowledgment of the synchronization acknowledgment signal from the peer, acknowledgement of the synchronization acknowledgement signal is processed and a corresponding acknowledgment signal is provided to the host.
In response to receiving an offload event indication from the host, the stateful connection is operated between the host and the peer.
In accordance with an aspect, a method is provided to utilize a full offload capability of an offload target to “shadow” a host that operates according to a partial offload model. The offload target accomplishes a passive open operation including “shadowing” connection establishment with the remote peer. The host retains control over connection acceptance. In addition, connection “handoff” may be simplified. In some examples, no change to the application program interface (API) for TCP offload may be required.
At 603, the host begins connection establishment processing, responding to the provided SYN packet with a SYN/ACK packet and, for example, creating a connection control block at the offload target. At 604, the offload target detects the SYN/ACK packet from the host and performs connection establishment processing for the connection, including causing a SYN/ACK packet to be transmitted to the peer. The offload target may retransmit the SYN/ACK if necessary. At 605, the peer issues an ACK for the SYN/ACK and, at 606, the peer sends a data packet.
At 607, the host provides an “initiate offload” event to the offload target and the offload target provides an “initiate complete” event in response. In this case, a device driver in the host, for the offload target, knows that the offload target has been shadowing the connection setup process. The initiate offload event signals the offload target that it can now be in control of the connection and that the offload target can deliver to the host any data that may have been held in the offload target, including providing ACK packets to the peer as appropriate (608).
On the other hand, if the “initiate offload” event is not received by the device driver, the offload target operates under the assumption that the connection is to remain under control of the host. In this case, the data packets received by the offload target from the peer are provided to the host without maintaining the connection state in the offload target.
In the
In the context of a system including an offload target, the listening server process concept has been extended to include an “offload policy” portion. Turning back to the
The many features and advantages of the invention are apparent from the written description and, thus, it is intended by the appended claims to cover all such features and advantages of the invention. Further, since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation as illustrated and described. Hence, all suitable modifications and equivalents may be resorted to as falling within the scope of the invention.
This application claims priority under 35 USC 119(e) to U.S. Provisional Patent Application No. 60/938,640, filed May 17, 2007 and entitled “FULL OFFLOAD WITH PARTIAL OFFLOAD” which is incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
4445116 | Grow | Apr 1984 | A |
4533996 | Hartung et al. | Aug 1985 | A |
5497476 | Oldfield et al. | Mar 1996 | A |
5778189 | Kimura et al. | Jul 1998 | A |
6087581 | Emmer et al. | Jul 2000 | A |
6226680 | Boucher et al. | May 2001 | B1 |
6240094 | Schneider | May 2001 | B1 |
6247060 | Boucher et al. | Jun 2001 | B1 |
6334153 | Boucher et al. | Dec 2001 | B2 |
6389479 | Boucher et al. | May 2002 | B1 |
6393487 | Boucher et al. | May 2002 | B2 |
6397316 | Fesas, Jr. | May 2002 | B2 |
6401177 | Koike | Jun 2002 | B1 |
6427171 | Craft et al. | Jul 2002 | B1 |
6427173 | Boucher et al. | Jul 2002 | B1 |
6434620 | Boucher et al. | Aug 2002 | B1 |
6470415 | Starr et al. | Oct 2002 | B1 |
6510164 | Ramaswamy et al. | Jan 2003 | B1 |
6564267 | Lindsay | May 2003 | B1 |
6591302 | Boucher et al. | Jul 2003 | B2 |
6594268 | Aukia et al. | Jul 2003 | B1 |
6625671 | Collette et al. | Sep 2003 | B1 |
6658480 | Boucher et al. | Dec 2003 | B2 |
6681244 | Cross et al. | Jan 2004 | B1 |
6687758 | Craft et al. | Feb 2004 | B2 |
6697868 | Craft et al. | Feb 2004 | B2 |
6701372 | Yano et al. | Mar 2004 | B2 |
6708223 | Wang et al. | Mar 2004 | B1 |
6708232 | Obara | Mar 2004 | B2 |
6717946 | Hariguchi et al. | Apr 2004 | B1 |
6751665 | Philbrick et al. | Jun 2004 | B2 |
6757245 | Kuusinen et al. | Jun 2004 | B1 |
6757746 | Boucher et al. | Jun 2004 | B2 |
6792502 | Pandya et al. | Sep 2004 | B1 |
6798743 | Ma et al. | Sep 2004 | B1 |
6807581 | Starr et al. | Oct 2004 | B1 |
6813652 | Stadler et al. | Nov 2004 | B2 |
6862648 | Yatziv | Mar 2005 | B2 |
6925055 | Erimli et al. | Aug 2005 | B1 |
6938092 | Burns | Aug 2005 | B2 |
6941386 | Craft et al. | Sep 2005 | B2 |
6965941 | Boucher et al. | Nov 2005 | B2 |
6996070 | Starr et al. | Feb 2006 | B2 |
7031267 | Krumel | Apr 2006 | B2 |
7042898 | Blightman et al. | May 2006 | B2 |
7076568 | Philbrick et al. | Jul 2006 | B2 |
7089326 | Boucher et al. | Aug 2006 | B2 |
7093099 | Bodas et al. | Aug 2006 | B2 |
7114096 | Freimuth et al. | Sep 2006 | B2 |
7124205 | Craft et al. | Oct 2006 | B2 |
7133902 | Saha et al. | Nov 2006 | B2 |
7133914 | Holbrook | Nov 2006 | B1 |
7133940 | Blightman et al. | Nov 2006 | B2 |
7164656 | Foster et al. | Jan 2007 | B2 |
7167926 | Boucher et al. | Jan 2007 | B1 |
7167927 | Philbrick et al. | Jan 2007 | B2 |
7174393 | Boucher et al. | Feb 2007 | B2 |
7185266 | Blightman et al. | Feb 2007 | B2 |
7191241 | Boucher et al. | Mar 2007 | B2 |
7191318 | Tripathy et al. | Mar 2007 | B2 |
7239642 | Chinn et al. | Jul 2007 | B1 |
7254637 | Pinkerton et al. | Aug 2007 | B2 |
7260631 | Johnson et al. | Aug 2007 | B1 |
7284047 | Barham et al. | Oct 2007 | B2 |
7313623 | Elzur et al. | Dec 2007 | B2 |
7376147 | Seto et al. | May 2008 | B2 |
7408906 | Griswold et al. | Aug 2008 | B2 |
7453892 | Buskirk et al. | Nov 2008 | B2 |
7474670 | Nowshadi | Jan 2009 | B2 |
7493427 | Freimuth et al. | Feb 2009 | B2 |
7533176 | Freimuth et al. | May 2009 | B2 |
7583596 | Frink | Sep 2009 | B1 |
7609696 | Guygyi et al. | Oct 2009 | B2 |
20010010046 | Muyres et al. | Jul 2001 | A1 |
20010021949 | Blightman et al. | Sep 2001 | A1 |
20020039366 | Sano | Apr 2002 | A1 |
20020191622 | Zdan | Dec 2002 | A1 |
20030018516 | Ayala et al. | Jan 2003 | A1 |
20030035436 | Denecheau et al. | Feb 2003 | A1 |
20030046330 | Hayes | Mar 2003 | A1 |
20030158906 | Hayes | Aug 2003 | A1 |
20030200284 | Philbrick et al. | Oct 2003 | A1 |
20030204631 | Pinkerton et al. | Oct 2003 | A1 |
20040003094 | See | Jan 2004 | A1 |
20040019689 | Fan | Jan 2004 | A1 |
20040028069 | Tindal et al. | Feb 2004 | A1 |
20040030745 | Boucher et al. | Feb 2004 | A1 |
20040042487 | Ossman | Mar 2004 | A1 |
20040054813 | Boucher et al. | Mar 2004 | A1 |
20040062245 | Sharp et al. | Apr 2004 | A1 |
20040062246 | Boucher et al. | Apr 2004 | A1 |
20040064578 | Boucher et al. | Apr 2004 | A1 |
20040064590 | Starr et al. | Apr 2004 | A1 |
20040073703 | Boucher et al. | Apr 2004 | A1 |
20040078480 | Boucher et al. | Apr 2004 | A1 |
20040088262 | Boucher et al. | May 2004 | A1 |
20040100952 | Boucher et al. | May 2004 | A1 |
20040111535 | Boucher et al. | Jun 2004 | A1 |
20040117509 | Craft et al. | Jun 2004 | A1 |
20040158640 | Philbrick et al. | Aug 2004 | A1 |
20040165592 | Chen et al. | Aug 2004 | A1 |
20040190533 | Modi et al. | Sep 2004 | A1 |
20040199808 | Freimuth et al. | Oct 2004 | A1 |
20040213235 | Marshall et al. | Oct 2004 | A1 |
20040240435 | Craft et al. | Dec 2004 | A1 |
20050071490 | Craft et al. | Mar 2005 | A1 |
20050083935 | Kounavis et al. | Apr 2005 | A1 |
20050120037 | Maruyama et al. | Jun 2005 | A1 |
20050125195 | Brendel | Jun 2005 | A1 |
20050135378 | Rabie et al. | Jun 2005 | A1 |
20050135396 | McDaniel et al. | Jun 2005 | A1 |
20050135412 | Fan | Jun 2005 | A1 |
20050147126 | Qiu et al. | Jul 2005 | A1 |
20050190787 | Kuik et al. | Sep 2005 | A1 |
20050216597 | Shah et al. | Sep 2005 | A1 |
20050259644 | Huitema et al. | Nov 2005 | A1 |
20050259678 | Gaur | Nov 2005 | A1 |
20050289246 | Easton et al. | Dec 2005 | A1 |
20060031524 | Freimuth et al. | Feb 2006 | A1 |
20060039413 | Nakajima et al. | Feb 2006 | A1 |
20060075119 | Hussain et al. | Apr 2006 | A1 |
20060080733 | Khosmood et al. | Apr 2006 | A1 |
20060133267 | Alex et al. | Jun 2006 | A1 |
20060168649 | Venkat et al. | Jul 2006 | A1 |
20060206300 | Garg et al. | Sep 2006 | A1 |
20060209693 | Davari et al. | Sep 2006 | A1 |
20060221946 | Shalev et al. | Oct 2006 | A1 |
20060235977 | Wunderlich et al. | Oct 2006 | A1 |
20060281451 | Zur | Dec 2006 | A1 |
20070011358 | Wiegert et al. | Jan 2007 | A1 |
20070064737 | Williams | Mar 2007 | A1 |
20070070901 | Aloni et al. | Mar 2007 | A1 |
20070083638 | Pinkerton et al. | Apr 2007 | A1 |
20070110436 | Bennett | May 2007 | A1 |
20070201474 | Isobe | Aug 2007 | A1 |
20080002731 | Tripathi et al. | Jan 2008 | A1 |
20080016511 | Hyder et al. | Jan 2008 | A1 |
20080043750 | Keels et al. | Feb 2008 | A1 |
20080232386 | Gorti et al. | Sep 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
60938640 | May 2007 | US |