TCP Offload Engine
From Wikipedia, the free encyclopedia
| This article is missing citations or needs footnotes. Using inline citations helps guard against copyright violations and factual inaccuracies. (March 2007) |
TCP Offload Engine or TOE is a technology used in network interface cards to offload processing of the entire TCP/IP stack to the network controller. It is primarily used with high-speed network interfaces, such as gigabit Ethernet and 10 gigabit Ethernet, where processing overhead of the network stack becomes significant.
The term, TOE, is often used to refer to the NIC itself, although it more accurately refers only to the integrated circuit included on the card which processes the TCP headers. TOEs are often suggested as a way to reduce the overhead associated with new protocols like iSCSI.
Contents |
[edit] Purpose
Originally TCP was designed for unreliable low speed networks (such as early dial-up modems) but with the growth of the Internet in terms of internet backbone transmission speeds (Optical Carrier, gigabit Ethernet and 10 gigabit Ethernet links) and faster and more reliable access mechanisms (such as Digital Subscriber Line and cable modems) it is now sometimes used in datacenters and desktop PC environments at speeds over 1 gigabit per second. The TCP software implementations on host systems require extensive computing power. Gigabit TCP communication using software processing alone is enough to fully load a 2.4 GHz Pentium 4 processor,[citation needed] resulting in little or no processing resources left for the applications to run on the system.
As TCP is a connection-oriented protocol, this adds to the complexity and processing overhead of the protocol, these aspects include:
- Connection establishment using the 3 Way Handshake, this involves a number of messages passing between the connection initiator and the connection responder prior to any data flowing between the two endpoints.
- Acknowledgment of packets as they are received by the far end, adding to the message flow between the endpoints and thus the protocol load.
- Checksum and Sequence number calculations - again a burden on a general purpose CPU to perform.
- Sliding window calculations for packet acknowledgement and congestion control.
- Connection termination.
Moving some or all of these aspected to dedicated hardware, a TCP Offload Engine, frees up the system's main CPU for other tasks. As of 2006, very few consumer network interface cards support TOE.
[edit] Reduction of PCI traffic
In addition to the protocol overhead that TOE can address, it can also address some architectural issues that affect a large percentage of host based (Server and PC) endpoints. Currently most end point hosts are PCI bus based, which provides a standard interface for the addition of certain peripherals such as Network Interfaces to Servers and PCs. PCI is inefficient for transferring small bursts of data from host memory across the PCI bus to the network interface ICs but its efficiency improves as the data burst size increases. Within the TCP protocol, a large number of small packets are created (e.g acknowledgements) and as these are typically generated on the host CPU and transmitted across the PCI bus and out the network physical interface, this impacts the host computer IO throughput.
A TOE solution, located on the network interface, is located on the other side of the PCI bus from the CPU host so it can address this I/O efficiency issue, as the data to be sent across the TCP connection can be sent to the TOE from the CPU across the PCI bus using large data burst sizes with none of the smaller TCP packets having to traverse the PCI bus.
[edit] Criticism
TOE has many vocal opponents, particularly in the F/LOSS community. Some of the criticisms include[1]:
- Security - because TOE is implemented in hardware, patches must be applied to the TOE firmware, instead of just software, to address any security vulnerabilities found in a particular TOE implementation. This is further compounded by the newness and vendor-specificity of this hardware, as compared to a well tested TCP/IP stack as is found in an operating system that does not use TOE.
- Limitations of hardware - because connections are buffered and processed on the TOE chip, resource starvation can more easily occur as compared to the generous cpu and memory available to the operating system.
- Complexity - TOE breaks the assumption that kernels make about having access to all resources at all times - details such as memory used by open connections are not available with TOE. TOE also requires very large changes to a networking stack in order to be supported properly, and even when that is done, features like QoS and packet filtering typically do not work.
- Proprietary - TOE is implemented differently by each hardware vendor. This means more code must be rewritten to deal with the various TOE implementations, at a cost of the aforementioned complexity and, possibly, security. Furthermore, TOE firmware cannot be easily modified since it is closed-source.
[edit] Suppliers
An original TOE implementation was first developed and a patent applied for (USPTO #0040042487[2] ) by Valentin Ossman, who later founded Tehuti Networks Ltd. based on his patented technology. A patent (United States Patent: 6996070. Retrieved on 2008-02-20.) was granted on Dec. 25th, 2007 titled "System and method for TCP/IP offload independent of bandwidth delay product" and another one (United States Patent: 7313623. Retrieved on 2008-02-20.) on Feb. 7th, 2006 titled "TCP/IP offload device with reduced sequential processing".
The result of such TCP acceleration by the NTA (Network Traffic Accelerator) reduces the processing power needed from the CPU.
Much of the current work on TOE technology is by manufacturers of 10 Gigabit Ethernet interface cards, such as Broadcom Corporation, Chelsio Communications, LeWiz Communications and Neterion Technologies.
[edit] See also
[edit] References
- ^ Net:TOE Explanation why Linux doesn't support TOE
- ^ United States Patent Application: 0040042487 "Network traffic accelerator system and method"
[edit] External links
- Article: TCP Offload to the Rescue by Andy Currid at ACM Queue
- Patent Application 20040042487
- Explanation why Linux doesn't support TOE
- Mogul, Jeffrey C. (2003). "TCP offload is a dumb idea whose time has come". Proceedings of HotOS IX: The 9th Workshop on Hot Topics in Operating Systems, USENIX Association. Retrieved 23 July 2006

