1. A method comprising: in response to receiving a packet, looking up a packet characteristic in one of at least one protocol table to determine one or more fields of the packet to use as a hash value; applying a hash function to the hash value to obtain a hash result; and using the hash result to determine one of a plurality of processors on which to process the packet.