The big question is where the packet came from. If a program just produced it, it's probably in cache. If it came in from an I/O device, it probably isn't.
This is why message copying isn't a big cost in modern microkernels. Create message->IPC->copy message->process message is an in-cache operation, if the scheduler and the message passing system are on speaking terms.