1. A computer-implemented method for classifying received packets, comprising: receiving a packet; processing the received packet through a hardware-based packet classifier having at least one evolving rule that determines an action to be taken based on a header field in the received packet to identify at least one cache miss packet that cannot be classified by the classifier; processing the at least one cache miss packet through a software based packet classifier including an original rule set; and determining whether to expand the at least one evolving rule in the hardware-based packet classifier based on the result of the processing of the at least one cache miss packet, the determination including determining whether an evolving rule has both the same action and lies entirely within one of the rules of the original rule set, wherein said hardware-based packet classifier comprises at least one rule cache for storing said at least one evolving rule, wherein said at least one evolving rule is updated periodically based on the cache miss packets, and wherein a cache miss packet is a packet that is unable to be classified by said hardware-based packet classifier.