Localizing packet processing significantly improves cache performance, in addition to avoiding copies and context switches. Receiving data from a socket almost always necessitates it being copied from a SKB to userspace memory, and prior to that from the driver's rx ring to a SKB. Grep for all references to 'cache' in http://lwn.net/Articles/169961/ which is Van Jacobsen's earlier work on a system of comparable design. Another (insanely more complex) implementation is http://www.openonload.org/