Installing and managing flows in a flow table cache
First Claim
1. A non-transitory machine readable medium storing a program that when executed by at least one processing unit processes packets, the program comprising sets of instructions for:
- generating and installing flows in a cache, wherein each flow is generated using at least one rule, from a flow table, which specifies performing a set of actions on incoming packets;
validating one or more of the flows that are installed in the cache by determining whether a set of actions in each flow matches a corresponding rule in the flow table, wherein each flow is assigned to a separate execution thread to be validated; and
removing or modifying each flow that has a different set of actions than a corresponding rule in the flow table in order to improve a performance of packet processing, wherein said generating and installing flows are executed in a first set of execution threads and said validating, removing, and modifying are executed in a second, different set of execution threads.
3 Assignments
0 Petitions
Accused Products
Abstract
Some embodiments provide a physical forwarding that installs flows in a flow table cache and uses the flows to process packets. In addition, the physical forwarding element iterates through each flow and validates the flow. In some embodiments, the physical forwarding element performs the installation and validation operations in a multi-threaded manner. The physical forwarding element in some such embodiments includes a set of one or more upcall handlers to install flows in the cache, and a set of one or more revalidators to validate the flows in the cache. In its own thread, an upcall handler may run independently of each revalidator in the set of revalidators. In another thread, a revalidator may run independently of each upcall handler and each other revalidator.
-
Citations
16 Claims
-
1. A non-transitory machine readable medium storing a program that when executed by at least one processing unit processes packets, the program comprising sets of instructions for:
-
generating and installing flows in a cache, wherein each flow is generated using at least one rule, from a flow table, which specifies performing a set of actions on incoming packets; validating one or more of the flows that are installed in the cache by determining whether a set of actions in each flow matches a corresponding rule in the flow table, wherein each flow is assigned to a separate execution thread to be validated; and removing or modifying each flow that has a different set of actions than a corresponding rule in the flow table in order to improve a performance of packet processing, wherein said generating and installing flows are executed in a first set of execution threads and said validating, removing, and modifying are executed in a second, different set of execution threads. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of processing packets, the method comprising:
-
generating and installing flows in a cache, wherein each flow is generated using at least one rule, from a flow table, which specifies performing a set of actions on incoming packets; validating one or more of the flows that are installed in the cache by determining whether a set of actions in each flow matches a corresponding rule in the flow table, wherein each flow is assigned to a separate execution thread to be validated; and removing or modifying each flow that has a different set of actions than a corresponding rule in the flow table in order to improve a performance of packet processing, wherein said generating and installing flows are executed in a first set of execution threads and said validating, removing, and modifying are executed in a second, different set of execution threads. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
Specification