From all reports, however, it is solid, and, in certain situations, it should produce significant performance benefits. Zero-copy networking speeds things up by avoiding, whenever possible, copies of the data to be transferred. Making zero-copy work is not straightforward, and the patch is large. So zero-copy networking passes around simple structures with direct pointers to the struct page s for the user buffer. A user buffer must be assembled into one or more packets, with headers, before transmission.
Most network protocols require checksums to be calculated for packets at transmission time.
Normally the kernel calculates the checksums, but doing so requires, of course, a pass over the data. If you're transferring data directly to and from user buffers, you must be prepared for them to be in high memory - and the device must be able to address that memory. To handle all of this stuff, the zero-copy networking patch makes some fundamental changes to the networking core code. The skb contains the entire packet, headers and all. Much of the code which handles skb structures must be changed to take this new structure into account.