Saturday, February 7, 2009

To offload or not to offload, cost is the quesiton!

CPU Offloading

The notion of a “TCP Offload Engine” has been around since 2003, (Mogul)[i] the requirement became prominent as interface communications speed increased and faster checksums required more systems processing time; as more CPU time is required to process checksums less time is available for applications & systems use, thus the motivation behind offloading network communications processing became one of diminishing returns due to CPU time availability. The first patent to address TCP offload was filed on August 19th 2003 and was awarded on March 4th 2004. (USTPO)[ii]

Advantages of Offloading Network Processing

The primary advantages of offloading network acceleration & processing are to increase the availability of the systems node for applications and user processing time by moving the calculations for network communications to the Interface card. These also include systems bus availability and improved user space performance, reduced memory footprints due to smaller TCP/IP buffer requirements: Since network communications has become standardized even remote storage protocols have host bus adapters that require iSCSI calculations to be offloaded to the interface to improve both systems and network communications performance. (Parker)[iii], (Gupta et al.)[iv], (HP)[v]

Disadvantages of Offloading Network Processing

The primary disadvantage of TCP offload and network engine acceleration is that the technology used to process the network communications requirements are proprietary in nature; thus each manufacturer and vendor has their own systems that require firmware level revisions should any exploits be made public. This issue has been a large one for the existing Linux and open source community as open access to the driver and firmware layer is required to program support into the OS and kernel. (Parrot)[vi],(Corbet)[vii]. Redhat has also stated that Latency Increases over the Linux TCP/IP Stack, Firewalling is not possible, Traffic Shaping is not possible and QoS cannot be implemented; also as the result of a proprietary stack the nature of bug-fixes if discovered cannot be resolved in the open source development model nor can newer extensions be implemented without upgrading the interface hardware.(RedHat)[viii]

Synopsis

Depending on the systems use and explicit requirements TCP Offloading to the interface may or may not be beneficial; For lower speed interfaces on desktop workstations where the primary infrastructure is 10/100 Ethernet and typical desktop use will be the systems function there are no benefits to implementing a gigabit Ethernet with TCP offloading functions that would justify the increase in cost and support required; however should a given organization be implementing remote storage via Ethernet transports such as iSCSI, multiple Gigabit Ethernet (10/100GbE) using Microsoft Windows based operating systems; then TCP Offload and network interface processing become a requirement; where the marginal increase in network latency occurs the decrease in systems processing requirement justifies the cost of the implementation; As always it is a question of what is the system doing? What will it be used for? And where would the best bang for the communications buck lie? Should a proprietary operating system be utilized and the interface speed requirements are for gigabit or higher than the system & applications may benefit from TOE engines, if the system is going to be a Linux / FreeBSD server with similar communications requirements; architectural considerations must be made to allow for the excess communications requirement for processing the TCP stack at higher speeds. Although Intel and other vendors do support TOE interfaces in Linux the issue of contention is still the proprietary nature of the drivers offered and how they function in an inflexible manner to prevent complete integration into the operating systems network stack.

References



[i] Mogul, Jeffery C. (ACM, USENIX, HP Labratories May 2003) HotOS IX – The 9th workshop on Hot Topics in Operating Systems – TCP Offload is a dumb idea whose time has come [Online] PDF Document, Available from:

http://www.usenix.org/events/hotos03/tech/full_papers/mogul/mogul.pdf

(Accessed on February 7th 2009)

[ii] Ossman, Valenten, Bill Polkinhorn (USTPO, TEHUTI Networks Inc, March 4th 2004) Network traffic accelerator system and method [Online] World Wide Web, Available from:

http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PG01&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.html&r=1&f=G&l=50&s1=%2220040042487%22.PGNR.&OS=DN/20040042487&RS=DN/20040042487

(Accessed on February 7th 2009)

[iii] Parker, Keith (Enterprise Networks & Servers, February 2008) TCP Offload The time has come [Online] World Wide Web, Available from:

http://www.enterprisenetworksandservers.com/monthly/art.php?3521

(Accessed on February 7th 2009)

[iv] Gupta, Panjat; Light, Allen; Hameroff, Ian (Dell, August 2006) Boosting Data Transfer with TCP Offload Technology [Online] PDF Document, Available from:

http://www.dell.com/downloads/global/power/ps3q06-20060132-Broadcom.pdf

(Accessed on February 7th 2009)

[v] N.a. (Hewlett Packard, 2006) Using TCP/IP Offload Engine and Receive-Side Scaling to Improve Performance and Efficiency on HP ProLiant Servers in Microsoft® Windows® Environments [Online] PDF Document, Available from:

ftp://ftp.compaq.com/pub/products/servers/networking/techbrief-toe-rss.pdf

(Accessed on February 7th 2009)

[vi] Parrot, Nick (Linux Kernel Mailing List, December 18th 2007) PE2950 – Linux TCP offload (TOE) Configuration [Online] World Wide Web, Available from:

http://lists.us.dell.com/pipermail/linux-poweredge/2007-December/034115.html

(Accessed on February 7th 2009)

[vii] Corbet (LWN, August 22nd 2005) Linux and TCP Offload Engines [Online] World Wide Web, Available from:

http://lwn.net/Articles/148697/

(Accessed on February 7th 2009)

[viii] N.a. (Redhat, May 10th 2006) Do the Broadcom Gigabit drivers support TOE on Red Hat Enterprise Linux? [Online] World Wide Web, Available from:

http://kbase.redhat.com/faq/docs/DOC-8708

(Accessed on February 7th 2009)