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 backbone transmission speeds (using Optical Carrier, Gigabit Ethernet and 10 Gigabit Ethernet links) and faster and more reliable access mechanisms (such as DSL and cable modems), it is frequently used in data centers and desktop PC environments at speeds of over 1 Gigabit per second. The TCP software implementations on host systems require extensive computing power.
Moving some or all of TCP/IP functions to dedicated hardware, a TCP offload engine frees the system’s main CPU for other tasks.
TCP offload engine or TOE is a technology used in network interface cards (NIC) 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.
A server with TCP/IP offload can do more server work to perform other tasks such as file system processing (in a file server) or indexing (in a backup media server).
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.
- Latency < 100 ns
- Congestion avoidance / Slow Start
- Out of Order support/ Retransmission support
- 8 (or more) TCP sessions (depending on device/board capabilities)
- Nagle’s Algorithm