Combined hardware/software forwarding mechanism and method
First Claim
1. 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.
1 Assignment
0 Petitions
Accused Products
Abstract
A forwarding system comprises a identification engine, a hardware forwarding engine configured to process an ingressing packet, a software forwarding engine configured to process the ingressing packet, and a selection engine. The selection engine is configured to select one of the hardware forwarding engine or the software forwarding engine to process the ingressing packet. The selection is based on at least one of an indication of resource availability or a classification of the ingressing packet based on a priority of a flow as determined by the identification engine. In some embodiments, the selection engine selects different forwarding engines to process different packets of a same flow based on changes in resource availability or classification of the ingressing packet.
-
Citations
19 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 18)
-
-
7. A forwarding system, comprising:
-
a hardware forwarding engine configured to process an ingressing packet; a software forwarding engine implemented using a processor executing machine readable instructions and configured to process the ingressing packet; an identification engine configured to determine a classification of the ingressing packet based on a priority of a respective flow to which the ingressing packet corresponds; and a selection engine configured to select one of the hardware forwarding engine or the software forwarding engine implemented using the processor executing the machine readable instructions to process and forward the ingressing packet including determining an egress port via which the ingressing packet is to be transmitted from the forwarding system, the selection based on; (i) an indication of an availability of resources, comprising an indication of at least one of;
a rate of packets in the flow corresponding to the ingressing 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 ingressing packet determined by the identification engine, and (iii) a type of an application corresponding to the ingressing packet or a requirement of the application; wherein the forwarding system is configured to process and forward each received packet by (i) using only a respective one of the software forwarding engine or the hardware forwarding engine selected by the selection engine, and (ii) not using the respective other one of the software forwarding engine or the hardware forwarding engine. - View Dependent Claims (8, 9, 10, 11, 12, 19)
-
-
13. A forwarding system, comprising:
-
a processor and a memory; a software forwarding engine comprising machine readable instructions stored on the memory, executable by the processor, and configured to process a packet for forwarding; a hardware forwarding engine configured to process the packet for forwarding; a parser and classifier engine configured to classify the packet based on a priority of a flow to which a packet corresponds; and a selection engine configured to determine a selection of one of;
the software forwarding engine or the hardware forwarding engine for processing the packet for forwarding including determining an egress port via which the packet is to be transmitted from the forwarding system, the selection based on;(i) an indication of resource availability, comprising an indication of at least one of;
a rate of packets in the flow corresponding to the 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 packet, and (iii) a type of an application corresponding to the packet or a requirement of the application; wherein; the forwarding system is configured to process each received packet by (i) using only a respective one of the software forwarding engine or the hardware forwarding engine included in a respective selection determined by the selection engine, and (ii) not using the respective other one of the software forwarding engine or the hardware forwarding engine. - View Dependent Claims (14, 15, 16, 17)
-
Specification