1. A flow-based network switching system, comprising: a memory including a flow table; a packet processor coupled to the memory, wherein the packet processor includes: a user-programmable flow-based rule storage that includes a plurality of flow-based rules; a flow-based handler and session manager that is operable to retrieve application layer metadata from a first packet, determine a first flow session associated with the first packet using the application layer metadata from the first packet and the flow table, and retrieve at least one of the plurality of flow-based rules from the programmable flow-based rule storage using the application layer metadata from the first packet; and a flow-based rule processing engine that is operable to apply the at least one flow-based rule to the first packet.