Claims
- 1. A system for providing TCP/IP offload, comprising:
a host; and a TCP/IP offload engine (TOE) coupled to said host, wherein said host transfers control of at least a portion of TCP connection variables to said TOE and said TOE provides updated TCP variables back to said host.
- 2. The system according to claim 1, wherein said host transfers control of segment-variant TCP connection variables to said TOE and said TOE provides updated TCP segment-variant TCP connection variables back to said host.
- 3. The method according to claim 2, wherein said TCP segment-variant TCP connection variables further comprises:
IP packet identifier; time remaining for retransmission; time remaining for delay acknowledgement; time remaining for keep alive; congestion window variables comprising:
congestion window (SND_CWIN); and slow start threshold (SSTHRESH); round trip time variables comprising:
smoothed round trip time (RTT); smoothed delta (DELTA); and time remaining for PUSH; and TCP state and timestamp send and receive sequence variables comprising:
sequence number for first un-ACK'd data (SND_UNA); sequence number for next send (SND_NXT); maximum sequence number ever sent (SND_MAX); maximum send window (MAX_WIN); sequence number for next receive (RCV_NXT); and receive window size (RCV_WND).
- 4. The system according to claim 1,
wherein said host provides said TOE with a snapshot of at least one of connection-invariant TCP connection variables and segment-invariant TCP connection variables, said TOE transferring updated at least one of connection-invariant TCP connection variables and segment-invariant TCP connection variables back to said host; and wherein said TOE utilizes transferred segment-variant TCP connection variables and said snapshot of said at least one of said connection-invariant TCP connection variables and said segment-invariant TCP connection variables to process at least one of incoming and outgoing TCP segments.
- 5. The system according to claim 4, wherein said TOE utilizes said transferred segment-variant TCP connection variables and a snapshot of at least one of connection-invariant TCP connection variables and segment-invariant TCP connection variables to independently process incoming TCP segments.
- 6. The system according to claim 1, wherein said host provides said TOE with a snapshot of connection-invariant TCP connection variables and segment-invariant TCP connection variables.
- 7. The system according to claim 1, wherein said host provides said TOE with a snapshot of TCP connection variables that are not segment-variant TCP connection variables.
- 8. The system according to claim 1, wherein said host posts at least one buffer that is utilized by any TCP connection, a buffer that is dedicated to one or more TCP connections and an application buffer.
- 9. The system according to claim 1, wherein said TOE manages said TCP connection.
- 10. The system according to claim 1, wherein said TOE manages at least one of segmentation, acknowledgement processing, windowing and congestion avoidance.
- 11. The system according to claim 1, wherein said TOE maintains exclusive read-write access to offloaded segment-variant variables.
- 12. The system according to claim 1, wherein said TOE exclusively updates offloaded segment-variant variables.
- 13. The system according to claim 1, wherein said host maintains read-write access to segment-invariant variables.
- 14. The system according to claim 1, wherein said TOE has read-only access to segment-invariant variables.
- 15. The system according to claim 1, wherein:
said host sends a message to said TOE concerning a change in a particular TCP connection variable whose control was not transferred to said TOE, and said TOE updates said particular TCP connection variable.
- 16. The system according to claim 1, wherein said TCP connection is an ESTABLISHED state.
- 17. The system according to claim 1, wherein said TCP connection variables are TCP connection variables that are independent of bandwidth delay product.
- 18. The system according to claim 1, wherein said host provides connection setups.
- 19. The system according to claim 18, wherein the system provides resistance to DoS attacks by allowing said host to handle said connection setups.
- 20. The system according to claim 1, wherein said host handles all TCP states exclusive of an ESTABLISHED state which may be offloaded to said TOE.
- 21. The system according to claim 1, wherein said TOE handles only connections that are in performance sensitive states.
- 22. The system according to claim 1, wherein said host processes resource utilization statistics in helping to determine which connections to offload and which connections to upload.
- 23. The system according to claim 1, wherein said host determines which connections to offload and which connections to upload.
- 24. The system according to claim 1, wherein at least one of said TOE and a device driver software for said TOE determines at least one of TCP connections to offload and TCP connections to upload.
- 25. A system for providing connection offload, comprising:
a host; and a network interface card (NIC) coupled to said host, wherein, for a particular connection offloaded to said NIC, control of state information is split between said host and said NIC and said NIC uploads at least a portion of updated connection variables for said particular connection to said host.
- 26. The system according to claim 25, wherein said particular connection employs a connection-oriented transport layer protocol (TLP).
- 27. The system according to claim 26, wherein said connection-oriented TLP comprises a TCP.
- 28. The system according to claim 25, wherein said host transfers control of segment variant variables corresponding to said particular connection to said NIC.
- 29. A method for providing TCP/IP offload, comprising:
deciding to offload a particular TCP connection from a host to a TOE; transferring control of connection variables of said particular TCP connection from said host to said TOE and transferring a snapshot of remaining connection variables whose control was not transferred to said TOE; managing said particular TCP connection via said TOE using said at least a portion of said connection variables transferred to said TOE and at least a portion of said snapshot; and updating at least a portion of said connection variables and a portion of said snapshot and transferring said updated at least said portion of said connection variables and said portion of said snapshot back to said host.
- 30. The method according to claim 29, wherein said one or more connection variables of said particular TCP connection transferred to said TOE comprise at least one segment-variant variables of said particular TCP connection.
- 31. The method according to claim 29, wherein said connection variables of said particular TCP connection transferred to said TOE lacks segment-invariant variables of said particular TCP connection.
- 32. The method according to claim 29, wherein said connection variables of said particular TCP connection transferred to the TOE lacks segment-invariant variables and connection-invariant variables of said particular TCP connection.
- 33. The method according to claim 29, further comprising:
determining if at least one of said connection variables controlled by said host have changed; notifying said TOE of changes in said at least one connection variables controlled by said host that has changed; and updating said connection variables in said TOE in accordance with said notified changes.
- 34. A method for providing TCP/IP offload, comprising:
deciding to offload an established TCP connection from a host to a TOE; transferring control of segment-variant variables to said TOE from said host; sending a snapshot of segment-invariant variables and connection-invariant variables to said TOE; independently processing incoming TCP packets via said TOE based upon said segment-variant variables and said snapshot; and updating at least a portion of said sent snapshot and at least a portion of said segment-variant variables and transferring at least a portion of said updated at least said portion of said sent snapshot and at least said portion of said updated segment-variant variables back to said host.
- 35. A method for processing a TCP connection, comprising:
establishing the TCP connection; and sharing a control plane for said TCP connection between a host and a TOE; and communicating updated TCP connection variables from said TOE back to said host.
- 36. The method according to claim 35, wherein said sharing of said control plane comprises transferring control of segment-variant variables corresponding to said TCP connection to said TOE.
- 37. The method according to claim 35, further comprising uploading said TCP connection to said host from said TOE.
- 38. The method according to claim 37, wherein uploading said TCP connection comprises transferring control of segment-variant variables corresponding to said TCP connection to said host.
- 39. The method according to claim 37, further comprising offloading said uploaded TCP connection to said TOE from said host.
- 40. The method according to claim 37, wherein offloading said uploaded TCP connection comprises transferring said control of said segment-variant variables corresponding to said uploaded TCP connection to said TOE.
- 41. A method for TCP offload, the method comprising:
acquiring TCP connection variables from a host; managing at least one TCP connection using said acquired TCP connection variables; updating at least a portion of said acquired TCP connection variables; and transferring said updated at least a portion of said acquired TCP connection variables back to said host.
- 42. The method according to claim 41, wherein said TCP connection variables are independent of bandwidth delay product.
- 43. The method according to claim 41, further comprising utilizing at least a portion of said updated at least said portion of said acquired TCP connection variables to process said at least said at least one TCP connection by said host.
- 44. The method according to claim 41, further comprising pulling said TCP connection variables from a stack.
- 45. The method according to claim 41, further comprising pushing said updated at least a portion of said acquired TCP connection variables onto a stack.
- 46. A machine-readable storage, having stored thereon, a computer program having at least one code section for providing TCP offload, the at least one code section being executable by a machine for causing the machine to perform steps comprising:
acquiring TCP connection variables from a host; managing at least one TCP connection using said acquired TCP connection variables; updating at least a portion of said acquired TCP connection variables; and transferring said updated at least a portion of said acquired TCP connection variables back to said host.
- 47. The machine-readable storage according to claim 46, wherein said TCP connection variables are independent of bandwidth delay product.
- 48. The machine-readable storage according to claim 46, further comprising code for utilizing at least a portion of said updated at least said portion of said acquired TCP connection variables to process said at least said at least one TCP connection by said host.
- 49. The machine-readable storage according to claim 46, further comprising code for pulling said TCP connection variables from a stack.
- 50. The machine-readable storage according to claim 46, further comprising code for pushing said updated at least a portion of said acquired TCP connection variables onto a stack.
CROSS-REFERENCE TO RELATED APPLICATIONS/INCORPORATION BY REFERENCE
[0001] This application makes reference to, claims priority to and claims benefit from: U.S. Provisional Patent Application Ser. No. 60/408,617, entitled “System and Method for TCP/IP Offload” filed on Sept. 6, 2002; and U.S. Provisional Patent Application Ser. No. 60/407,165, filed on Aug. 30, 2002.
[0002] The above stated application is incorporated herein by reference in its entirety.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60408617 |
Sep 2002 |
US |
|
60407165 |
Aug 2002 |
US |
|
60456260 |
Mar 2003 |
US |