[Stgt-devel] iSCSI digest offload
Greg Law
glaw
Fri Jun 29 15:29:32 CEST 2007
Hi list,
I posted the following yesterday to iet-devel, and they suggested I'd be
better off talking to you guys, as this is the place for "hot iSCSI
target" developments.
My company, Solarflare, makes 10gig NICs. We don't do full TCP offload,
but we do have support on the card for iSCSI digest offload. Essentially
this means that if your packets are conveniently formatted, you can have
iSCSI digests with a very small performance penalty (in terms of both
throughput and CPU hit). I say "if your packets are conveniently
formatted" because the NIC can only offload the digest if an Ethernet
frame contains exactly one iSCSI PDU in exactly one TCP segment.
However, providing you use a MaxRecvDataSegmentLength of <= MSS (less
headers) our experiments show this is almost always the case.
We've implemented our own iSCSI initiator stack on Linux as a
proof-of-concept, and it gives the performance wins we'd hoped for. Now
we want to patch the open-source stacks (target and initiator) to take
advantage of this feature. We will also need to patch the Linux TCP
stack so that (a) we can pass meta data down (to tell the NIC to compute
and insert digests on tx) and pass meta data back up (to tell the iSCSI
stack whether the digests computed ok on rx); and (b) to make sure we
can handle edge-cases such as routing changes etc.
We expect the patch to be quite small - both the TCP and iSCSI parts. We
plan to do the target first, and follow up with the initiator.
I'd be really interested to hear the list's views on this. Have you
heard of anything similar before? Does it sound like a patch that you
might be interested in merging (of course, I'm not looking for a
definitive answer here, just a "could be interesting, providing ....".)
Also, do the tgt and open-iscsi share any code for the iSCSI protocol
processing? If not, are there any plans to do so?
Cheers,
Greg
--
Greg Law glaw at solarflare.com +44 1223 518 040
More information about the stgt
mailing list