High performance packet processing using a general purpose processor
First Claim
1. An apparatus for processing data packets, comprising:
- a first data processing unit adapted to filter incoming packets;
an addressable memory unit in which a plurality of instruction sets for packet processing are stored;
a second data processing unit adapted to process incoming packets according to one of said plurality of instruction sets after the filtering, based on a thread assigned to the incoming packets by the first data processing unit; and
a data bus connecting the addressable memory unit and the first and second data processing units;
wherein the first data processing unit is adapted such that the filtering of the incoming packets includes determining whether to accept or discard each of the incoming packets;
wherein the first data processing unit is adapted such that the determining whether to accept or discard each of the incoming packets includes reading header information and contents for each incoming packet, and deriving state data from the packet header.
12 Assignments
0 Petitions
Accused Products
Abstract
A packet processing device includes a control logic processor for filtering packets according to a set of stored rules and an arithmetic logic processor for executing packet processing instructions based on the content of the packet. The control logic processor spawns a new thread for each incoming packet, relieving the arithmetic logic processor of the need to do so. The control logic processor and the arithmetic logic processor preferably are integrated via a thread queue. The control logic processor preferably assigns a policy to each incoming packet. A policy action table stores one or more policy instructions which may be easily changed to update policies to be implemented. The policy action table preferably maps a virtual packet flow identification code to the physical memory address of an action code and a state block associated to the identification code. The arithmetic logic processor processes a packet based on the stored policy assigned to that packet.
35 Citations
25 Claims
-
1. An apparatus for processing data packets, comprising:
-
a first data processing unit adapted to filter incoming packets; an addressable memory unit in which a plurality of instruction sets for packet processing are stored; a second data processing unit adapted to process incoming packets according to one of said plurality of instruction sets after the filtering, based on a thread assigned to the incoming packets by the first data processing unit; and a data bus connecting the addressable memory unit and the first and second data processing units; wherein the first data processing unit is adapted such that the filtering of the incoming packets includes determining whether to accept or discard each of the incoming packets; wherein the first data processing unit is adapted such that the determining whether to accept or discard each of the incoming packets includes reading header information and contents for each incoming packet, and deriving state data from the packet header. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. An apparatus, comprising:
-
a first data processing unit adapted to filter incoming packets; an addressable memory unit in which a plurality of instruction sets for packet processing are stored; a second data processing unit adapted to process incoming packets according to one of said plurality of instruction sets after the filtering, based on a thread assigned to the incoming packets by the first data processing unit; and a data bus connecting the addressable memory unit and the first and second data processing units; wherein a policy condition table is connected to said first data processing unit, said policy condition table having a plurality of rules stored therein; wherein a policy action table is connected to said data bus and said addressable memory unit, wherein said policy action table stores at least one data processing policy; wherein said first data processing unit comprises logic for matching a first incoming packet to a stored first rule and for generating a first thread if the first incoming packet matches said first rule, said first thread identifying the location of one of said at least one data processing policies in said policy action table; wherein said second data processing unit is adapted to process the first incoming packet according to said data processing policy corresponding to said first thread; wherein said data processing policy comprises a first address pointer to a starting address of a first set of instructions and a second address pointer to a starting address of a state block stored in said addressable memory unit, said state block used by said first set of instructions for processing the first incoming packet; wherein said first processing unit further comprises logic for matching a second incoming packet to a stored second rule and for generating a second thread if the second incoming packet matches the second rule, said second thread identifying the location of one of said at least one data processing policy in said policy action table; wherein said second data processing unit is adapted to process the second incoming packet according to said data processing policy corresponding to said second thread; wherein a memory unit is connected to said first data processing unit and to said second data processing unit, said memory unit adapted to temporarily store packets before processing by said second data processing unit; wherein said second data processing unit comprises a plurality of general purpose processors for executing instructions in parallel; wherein the apparatus includes a control logic unit coupled to an input and the policy condition table for feeding an arithmetic logic unit, which is in turn coupled to the policy action table and the state block for generating an output; wherein the first data processing unit is adapted such that the filtering of the incoming packets includes determining whether to accept or discard each of the incoming packets; wherein the first data processing unit is adapted such that the determining whether to accept or discard each of the incoming packets includes reading header information and contents for each incoming packet, and deriving state data from the packet header.
-
Specification