Patent ID: 8848715

Claim:
A method of utilizing hardware forwarding and software forwarding of network traffic in a forwarding system, comprising: receiving a plurality of packets at one of a plurality of ports of a forwarding system having (i) a software forwarding engine, the software forwarding engine being implemented using a processor executing machine readable instructions, and (ii) a hardware forwarding engine, wherein the forwarding system is configured to process a given packet using only one of the software forwarding engine or the hardware forwarding engine; classifying the given packet based on a priority of a flow to which the given packet belongs; selecting, at a selection engine of the forwarding system, one of the software forwarding engine or the hardware forwarding engine to determine an egress port via which the given packet is to be transmitted from the forwarding system, the selection engine being in communicative connection with the software forwarding engine and with the hardware forwarding engine, the selecting based on: (i) an availability of one or more resources, including at least one of: a rate of packets in the flow corresponding to the given packet, a size of a TCAM (Ternary Content Addressable Memory) of the hardware forwarding engine, a number of available entries in the TCAM, a number of allocated queues or buffers, or a number of entries in a queue or buffer; (ii) the classification of the given packet, and (iii) a type of an application corresponding to the given packet or a requirement of the application; and processing and forwarding, by the forwarding system, the given packet using only the selected one of the software forwarding engine or the hardware forwarding engine and without using the unselected one of the software forwarding engine and the hardware forwarding engine.