Monday, October 4, 2010

TCP/IP Offload

TCP Offload Engine (TOE)
http://lwn.net/Articles/148697
http://en.wikipedia.org/wiki/TCP_Offload_Engine

Large Segment Offload (LSO), Large Send Offload (LSO)
TCP Segmentation offload (TSO)
LSO is a technique for increasing outbound throughput of high-bandwidth network connections by reducing CPU overhead.

A host with TSO-enabled hardware sends TCP data to the NIC without segmenting the data in software. The NIC will perform TCP segmentation.

This technology shift the data segmentation effort from CPU to network controller, so the checksum will also generated by the network controller (Hardware Checksum).

In Linux, we can disable this function by issue the following command:
[ ]# ethtool -K eth0 tso off

show all the offload information for a specified interface
[ ]# ethtool -k eth0

http://en.wikipedia.org/wiki/TCP_segmentation_offloading
http://www.linuxfoundation.org/collaborate/workgroups/networking/tso 

Generic Segmentation Offload (GSO)
GSO is a performance optimization which is a generalization of the concept of TSO.

Patch
http://www.linuxfoundation.org/collaborate/workgroups/networking/gso

Large Receive Offload (LRO)
LRO is a technique for increasing inbound throughput of high-bandwidth network connections by reducing CPU overhead.

NICs supporting LRO receive packets and reassemble them before passing the data on to the local software.


[NET]: Generic Large Receive Offload for TCP traffic
The Linux kernel mailing list
http://lwn.net/Articles/243949
http://lwn.net/Articles/243950

Generic Receive Offload (GRO)
http://lwn.net/Articles/311357

UDP Fragmentation Offload (UFO)

1 comment:

Intilop said...

Thanks for approved my comment..
10G tcp offload