1. A method, comprising: using content addressable memories to determine fields to be parsed in order to gather packet information for a plurality of packets; performing multiple field extractions from the fields determined by the content addressable memories for at least one of the plurality of packets to form a key; performing a hash algorithm utilizing the key to generate a hash; storing a packet of the plurality of packets in a memory; and allocating the plurality of packets to different processor threads or a plurality of processor cores executing the different processor threads, utilizing at least the hash or the key, wherein allocating the plurality of packets to the different processor threads comprises: transmitting a location of the packet in the memory to a corresponding processor thread of the different processor threads or a corresponding processor core of the plurality of processor cores through a ring network rather than transmitting actual data of the packet to the corresponding processor thread or the corresponding processor core through the ring network; inserting a descriptor into a message; and sending the message to the corresponding processor thread or the corresponding processor core.