Data packets within a network equipment must be identified to a service and transformed appropriately for proper transmission across a network or to a client. This transformation includes control plane information appended to the packet data used within the network equipment and also frame header information of the packet itself (i.e., MAC address, VLAN tags, etc.) used throughout the network. This processing occurs on every packet, and therefore must occur at line rate to ensure no packet loss due to any processing buffer overflow.
Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures. It is emphasized that, in accordance with the standard practice in the industry, various features are not drawn to scale. In fact, the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion.
In previous implementations of frame processing engines, hard coded, highly specific functions are provided in discrete entities or modules in hardware to handle each individual frame transformation. What is described herein is a method of using a uniquely defined set of instructions to create programs of ordered operations to be executed on packet data. These programs can modify the frame header information as well as the internal proprietary control information appended to the frame by network equipment. The program selection as well as the execution is dependent on properties of the frame itself.
Once the CAM search requests have been made, the content of the first frame header register 48 is copied to the second frame header register 49. Once the results from the CAM and CAM RAM lookup are stored, the content of the second frame header register 55 is copied into the third frame header register 56. The content of the third frame header register 50 is copied into the fourth frame header register 51 when the EVC subroutine returned from the CAM and CAM RAM lookup is executed in an instruction & control unit 62. The instruction & control unit 62 is used to fetch, decode and execute the program instruction s from the CAM RAM. A destination and tag management module 64 uses the contents of the fourth frame header register 51 to modify the frame control information based on the CAM and CAM RAM lookup results. More specifically, the destination and tag management module uses the CAM search results to insert destination information and modify the VLAN tags. The values of the condition code registers can be examined by the destination and tag management module 64 for conditional logic. The content of the fourth frame header register 51 is copied into the fifth frame header register 52 so that the frame control information may be reassembled with the payload data in a frame assembly module 66.
Referring also to
The purpose of the frame processing engine is to provide a highly flexible and generic solution to both transform and direct data packets through a network equipment. This is accomplished through programs composed from a generic instruction set. The program executed and thus the processing of the frame is based upon the properties of the frame itself and is achieved at the line rate of the data. There are several advantages to this method of frame processing.
The frame processing engine described herein is highly flexible. A multitude of different transformations can be defined with a single set of instructions. Both the specific instructions used and the order in which they are executed can define different transformations. Because of conditional instructions, even the same frame processing engine program can perform different transformations based upon properties (or conditions) of the frame. Additional future requirements can also be met with the existing instruction set. By simply updating an existing program or creating a new program, new functions can be achieved. This requires only a software change, and there is no need of an FPGA update.
The frame processing engine is also very adaptable. If future requirements did demand additional instructions, the overall architecture of the frame processing engine is very accommodating. There would be no need for an architecture change, only the additional decode logic to accommodate the new instruction(s). Therefore, future requirements can be achieved by a program with the already defined instruction set (software change only), or they can be achieved through additions to the instruction set. The latter may require an FPGA update, but not any architectural changes.
The frame processing engine process is accomplished at line rate. The programs are stored and fetched from an external SRAM and executed within the FPGA. Retrieval and execution of the programs are performed at the data clock rate. Neither the control information or the packet data itself is sent to an external processing device.
Although embodiments of the present disclosure have been described in detail, those skilled in the art should understand that they may make various changes, substitutions and alterations herein without departing from the spirit and scope of the present disclosure. Accordingly, all such changes, substitutions and alterations are intended to be included within the scope of the present disclosure as defined in the following claims. In the claims, means-plus-function clauses are intended to cover the structures described herein as performing the recited function and not only structural equivalents, but also equivalent structures.
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 60/892,576, filed on Mar. 2, 2007. This application is related to U.S. patent application Ser. No. 11/681,606 filed on Mar. 2, 2007, and entitled “System and Method for Aggregated Shaping of Multiple Prioritized Classes of Service Flows,” U.S. patent application Ser. No. 11/681,647 filed on Mar. 2, 2007, and entitled “System and Method For Constrained Machine Address Learning,” and Ser. No. 12/041,476 filed on Mar. 3, 2008, and entitled “System and Method of Defense Against Denial of Service Attacks.” These applications are hereby incorporated by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
5946679 | Ahuja et al. | Aug 1999 | A |
6011798 | McAlpine | Jan 2000 | A |
6560230 | Li et al. | May 2003 | B1 |
6771653 | Le Pennec et al. | Aug 2004 | B1 |
6791990 | Collins et al. | Sep 2004 | B1 |
6901050 | Acharya | May 2005 | B1 |
6925055 | Erimli et al. | Aug 2005 | B1 |
6944172 | Sankey et al. | Sep 2005 | B2 |
7006440 | Agrawal et al. | Feb 2006 | B2 |
7007151 | Ely et al. | Feb 2006 | B1 |
7447212 | Hu | Nov 2008 | B2 |
20020038379 | Sato et al. | Mar 2002 | A1 |
20030076849 | Morgan et al. | Apr 2003 | A1 |
20060187949 | Seshan et al. | Aug 2006 | A1 |
20060187965 | Lee et al. | Aug 2006 | A1 |
20070195793 | Grisser et al. | Aug 2007 | A1 |
20070299987 | Parker et al. | Dec 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20080215853 A1 | Sep 2008 | US |
Number | Date | Country | |
---|---|---|---|
60892576 | Mar 2007 | US |