TCP Offload Engines (TOEs)
The idea of a TOE is to put the TCP
implementation onto the network adapter itself. This relieves the computer's CPUs of handling TCP segmentation, reassembly, checksum calculation and verification, and so on. Large-Send Offload (LSO)
and Checksum Offload
are typically assumed to be subsets of TOE functionality.
The drawbacks of TOEs are that they require driver support in the operating system, as well as additional kernel/driver interfaces for TCP-relevant operations (as opposed to the frame-based operations of traditional adapters). Also, when the operating system implements improvements to TCP over time, those normally have to be implemented on the TOE as well. And additional instrumentation such as the Web100 kernel instrumentation set would also need to be implemented separately.
For these and other reasons, TOEs (which are a relatively old idea) have never become a "mainstream" technology. In contrast, some more generic performance enhancements such as LSO
, interrupt coalescence
, or checksum offload
, are now part of many "commodity" network adapter chip-sets, and enjoy increasing support in operating systems.
Mogul (2003) nicely presents most of the issues with TOEs, and argues that they aren't overly useful for general TCP use. However TOE - or, more generally, transport offload - may find good use as part of network adapters that provide Remote DMA
(Remote Direct Memory Access) functionality for use in networked storage or clustering applications.
TOE on Windows: TCP Chimney
Microsoft Windows has its own architecture for TCP offload-capable network adapters called TCP Chimney
. The name "chimney" stands for the channel that is established between the operating system and the adapter for each TCP connection that is offloaded. TCP Chimney was first introduced (in 2006?) as part of an addition to Windows Server 2003 called the Scalable Networking pack
. In March 2008, it found its way into the first Service Pack for the Vista operating system (Vista SP1).
- TCP Offload to the Rescue, A. Currid, ACM Queue vol. 2, no. 3 (May 2004), http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=154
- Server Scalability and TCP Offload, D. Freimuth, E. Hu, J. LaVoie, R. M., E. Nahum, P. Pradhan, J. Tracey. USENIX Annual Technical Conference, Anaheim, CA, April 2005, http://www.research.ibm.com/people/n/nahum/publications/usenix05-scalability.pdf
- TCP offload is a dumb idea whose time has come, J. Mogul, Usenix HotOS IX, 2003, http://www.usenix.org/events/hotos03/tech/full_papers/mogul/mogul_html/ (PDF)
- 04 Jul 2005 - 26 Mar 2008