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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html