Chelsio 10Gb TOE (TCP Offload Engine)
From: | Scott Bardone <sbardone@chelsio.com> | |
To: | netdev@vger.kernel.org | |
Subject: | [ANNOUNCE] Chelsio 10Gb TOE (TCP Offload Engine) | |
Date: | Tue, 02 Aug 2005 21:39:21 -0700 | |
Cc: | opentoe <opentoe@chelsio.com> |
Chelsio Communications would like to announce the availability of its TCP offload (TOE) support for Linux under the GPL. This is code developed by us over the past couple of years and has been in production for over a year. The code, architecture description, and some papers comparing TOE performance to other technologies are available from https://service.chelsio.com/open_toe/index.html. We are aware that TOEs are viewed with much skepticism in the Linux community but we believe that a lot of the concerns often brought up have to do with implementation details of particular products rather than with the technology as a whole. Chelsio is proposing a solution that we feel allows TOEs to coexist alongside the regular stack's TCP without breaking networking features, and allows the combined network stack to offer superior TCP performance. The code we are releasing today has been used with an older version of Linux to set the current Internet2 land speed record and has demonstrated improved performance with a variety of applications and benchmarks. As another example of performance benefits, while today's NICs cannot handle 10G receive with regular frames, a TOE can comfortably do so with much of the CPU left for application processing. The proposed design is intended to accommodate products from multiple vendors and roughly has the following components: - a vendor neutral cut-down analog of core/dev.c that provides registration and activation facilities for TOE devices and some basic data path functionality (mostly to deal with sniffers). This component does not introduce any new soft irqs, instead TOE devices use regular facilities, such as NAPI, to service incoming traffic; - some changes to existing TCP code and some additions to provide offloading. Changes to existing code are a few dozen lines and are usually either notification of TOEs when the SW stack processes certain events, e.g., ARP, or they allow TOEs to perform some socket operations differently from the SW stack (usually this is done by changing sk_prot, but some of the differing operations aren't covered by that and so need to be done through other changes); - the offloading support specific to each TOE is provided by two drivers, one that deals with HW and one that interfaces with the SW TCP/IP and sockets layer (these are separate conceptually, they may be one driver implementation-wise) More details of the proposed scheme and of the working of the various operations can be found in the architecture document at the above URL. We are including a patch containing the TCP changes below (against 2.6.12), and the rest of the vendor-neutral pieces will follow in subsequent emails. We are not posting the drivers on the list due to their size (the TOE driver though is an extension of Chelsio's NIC driver presently in Jeff's tree). All the code is available at the above URL. (We'd like to point out that the released code is our current production codebase that accommodates both 2.4 and 2.6 kernels. We are aware that we'll need to strip the compatibility stuff and plan to do so.) Thanks for your attention and we are looking forward to your comments. Chelsio Communications. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html