Claims
- 1. A packet switching controller comprising:
a first engine; and a second engine comprising one or more programmable elements, at least one programmable element containing one or more instruction sets, wherein the first engine identifies an instruction set to be executed in the programmable element for a packet, and the programmable element executes the identified instruction set to process the packet.
- 2. The packet switching controller of claim 1 wherein a plurality of identified instruction sets are executed sequentially to process the packet.
- 3. The packet switching controller of claim 1 wherein the programmable elements are organized into one or more pipelines, and the programmable elements in the pipelines execute a plurality of identified instruction sets to process the packet.
- 4. The packet switching controller of claim 3 wherein at least one programmable element generates an output, and at least one programmable element generates application data for the packet by using the output generated by a preceding programmable element in at least one pipeline.
- 5. The packet switching controller of claim 1 wherein at least one programmable element generates application data for the packet by using one or more of source address data of the packet, destination address of the packet, and a service classifier associated with the packet.
- 6. The packet switching controller of claim 1 wherein at least one programmable element generates application data for the packet, and wherein the application data includes one or more of accounting data, routing data and policing data.
- 7. The packet switching controller of claim 1 wherein the first engine classifies the packet in accordance with tree-based classification logic.
- 8. The packet switching controller of claim 1 wherein the first engine indicates to a first programmable element in at least one pipeline to start processing the packet.
- 9. The packet switching controller of claim 8 wherein the first programmable element stops processing at the end of the identified instruction set.
- 10. The packet switching controller of claim 9 wherein the first programmable element indicates to a second programmable element in said pipeline to start processing the packet.
- 11. The packet switching controller of claim 1 wherein at least one of the programmable elements generates a disposition decision for the packet, and wherein the disposition decision is based on at least one of classification information for the packet and one or more disposition recommendations.
- 12. The packet switching controller of claim 11 wherein the classification information is provided by the first engine.
- 13. The packet switching controller of claim 11 wherein the disposition recommendations are provided by one or more programmable elements.
- 14. A method of processing a packet using a packet switching controller having a first engine and a second engine, the second engine comprising one or more programmable elements, the method comprising the steps of:
identifying an instruction set to be executed for the packet in at least one programmable element; and executing the identified instruction set to process the packet.
- 15. The method of claim 14 wherein the step of executing the identified instruction set comprises the step of executing a plurality of identified instruction sets sequentially to process the packet.
- 16. The method of claim 14 wherein the programmable elements are organized into one or more pipelines, and the step of executing the identified instruction set comprises the step of executing a plurality of identified instruction sets in the pipelines.
- 17. The method of claim 16 further comprising the step of:
generating an output from one or more programmable elements, wherein at least one programmable element generates application data for the packet by using the output generated by a preceding programmable element in at least one pipeline.
- 18. The method of claim 14 wherein at least one programmable element generates application data for the packet by using one or more of source address data of the packet, destination address data of the packet, and a service classifier associated with the packet.
- 19. The method of claim 14 wherein at least one programmable element generates application data for the packet, and wherein the application data include one or more of accounting data, routing data and policing data.
- 20. The method of claim 14 wherein the first engine classifies the packet in accordance with tree-based classification logic.
- 21. The method of claim 20 further comprising the step of indicating, using the first engine, to a first programmable element in at least one pipeline to start processing the packet.
- 22. The method of claim 21 further comprising the step of stopping processing in the first programmable element at the end of the identified instruction set.
- 23. The method of claim 22 further comprising the step of indicating, using the first programmable element, to a second programmable element in said pipeline to start processing the packet.
- 24. The method of claim 14 further comprising the step of providing a disposition decision for the packet, wherein the disposition decision is based on at least one of classification information for the packet and one or more disposition recommendations.
- 25. The method of claim 24 further comprising the step of identifying the classification information in the first engine.
- 26. The method of claim 24 further comprising the step of generating the disposition recommendations in one or more programmable elements.
- 27. A packet switching controller comprising:
programmable means for processing a packet, the programmable means containing a plurality of instruction sets configured thereon; and means for identifying one or more of the plurality of instruction sets to process the packet, wherein the programmable means processes the packet by executing the identified one or more of the plurality of instruction sets.
- 28. The packet switching controller of claim 27 wherein the programmable means processes the identified one or more of the plurality of instruction sets sequentially to process the packet.
- 29. The packet switching controller of claim 27 wherein the programmable means comprises a plurality of programmable elements organized as a processing pipeline, wherein at least one programmable element generates an output, and at least one programmable element generates application data for the packet by using the output generated by a preceding programmable element in the pipeline.
- 30. The packet switching controller of claim 27 wherein the means for identifying one or more of the plurality of instructions sets classifies the packet using decision tree-based classification logic.
- 31. A packet switching controller comprising:
a first engine containing packet classification logic for classifying a packet, the packet classification logic executing a decision tree having a root and a plurality of leaves, wherein the plurality of leaves represents a plurality of classifications, and the leaves are coupled to the root via one or more branches, and wherein particular branches are traversed from the root to a particular leaf that represents the classification of the packet, in response to the header checks performed on the packet.
- 32. A packet switching controller comprising:
a header data extractor for extracting data from a header of a packet, and for generating a header data cache index; a header data cache for receiving the extracted data from the header data extractor, and for storing the extracted data; and a first engine, wherein the header data extractor provides the header data cache index to the first engine, and the first engine uses the index to retrieve at least a portion of the extracted data from the header data cache, and applies the retrieved data in a header check to determine a classification for the packet.
- 33. A method for classifying a packet using decision tree-based packet classification logic, the method comprising the step of:
performing a plurality of header checks on the packet, traversing one or more branches of the decision tree having a plurality of leaves after a header check, wherein the plurality of leaves represents a plurality of classifications, and the leaves are coupled to the root via one or more branches, and wherein particular branches are traversed from the root to a particular leaf that represents the classification of the packet, in response to the header checks performed on the packet.
- 34. A method for classifying a packet, the method comprising the steps of:
extracting data from a header of the packet; storing the extracted data in a header data cache; generating a header data cache index to indicate the location of the extracted data in the header data cache; retrieving at least a portion of the extracted data from the header data cache; and applying the retrieved portion of the extracted data in a header check to determine a classification for the packet.
- 35. A packet switching controller comprising:
a first engine for receiving a plurality of inputs, and for providing one or more outputs, the one or more outputs including a disposition decision for a packet, wherein the plurality of inputs include one or more disposition recommendations for the packet, and wherein the first engine programmatically generates the disposition decision for the packet, in response to the disposition recommendations.
- 36. The packet switching controller of claim 35 wherein the plurality of inputs include classification dependent information for the packet, and wherein the first engine programmatically generates the disposition decision for the packet, in response to the disposition recommendations, and in accordance with the classification dependent information.
- 37. The packet switching controller of claim 36 wherein the first engine contains a plurality of instruction sets, wherein the packet switching controller further includes a second engine to provide one or more of the plurality of inputs to the first engine, and wherein the classification dependent information for the packet includes identification of one or more of the instruction sets to be executed.
- 38. The packet switching controller of claim 35 wherein the disposition recommendations include one or more of a security recommendation, a policing recommendation and a generic pattern match recommendation.
- 39. The packet switching controller of claim 38 further comprising a third engine for generating and providing a policing recommendation to the first engine, and for receiving the disposition decision as feedback.
- 40. A method of generating a disposition decision for a packet, the method comprising the steps of:
receiving a plurality of inputs, the inputs including one or more disposition recommendations for the packet; and programmatically generating a disposition decision for the packet in response to the disposition recommendations.
- 41. A method of generating a disposition decision of claim 40 wherein the plurality of inputs include classification dependent information for the packet, and the disposition decision for the packet is generated in accordance with the classification dependent information.
- 42. A method of generating a disposition decision of claim 41 wherein the classification dependent information includes an identification of one or more instruction sets to be executed, and the step of programmatically generating the disposition decision for the packet includes the step of executing the identified instruction sets.
- 43. A method of generating a disposition decision of claim 40 wherein the disposition recommendations include one or more of a security recommendation, a policing recommendation and a generic pattern match recommendation.
- 44. A switching controller comprising:
a programmable classification engine coupled to a plurality of programmable elements, each programmable element having a plurality of programs configured thereon, wherein the classification engine identifies for each packet a program for each of the programmable elements, in response to which the elements execute the identified programs substantially in series, whereby at least one of the elements produces data for processing the packet.
- 45. A method of processing a packet, the method comprising the steps of:
identifying for the packet a program to be executed in one or more programmable elements; and executing the identified programs substantially in series, wherein at least one of the programmable elements produces data for processing the packet.
- 46. Packet classification logic comprising:
a decision tree having a root and a plurality of leaves, wherein respective one of the leaves represent respective ones of classifications and are connected to the root by respective ones of sets of branches, wherein a particular branch within one of the sets of branches is traversed in response to a header check performed on a packet, and wherein one of the sets of branches is traversed from root to leaf in response to a plurality of header checks performed on the packet.
- 47. Packet classification logic comprising:
a header data extractor, a header data cache and a packet classification engine, the header data extractor operative to extract data from a header of a packet, apply the extracted data to the header data cache and supply a header data cache index to the packet classification engine, the packet classification engine operative to apply the index to retrieve at least part of the extracted data from the header data cache and apply the retrieved data in a header check to determine a classification for the packet.
- 48. A method of classifying a packet using decision tree-based packet classification logic, the decision tree having a root and a plurality of leaves, wherein respective ones of the leaves represent respective ones of classifications and are connected to the root by respective ones of sets of branches, the method comprising the step of:
traversing a particular branch within one of the sets of branches in response to a header check performed on the packet, wherein one of the sets of branches is traversed from root to leaf in response to a plurality of header checks performed on the packet.
- 49. A method of classifying a packet, the method comprising the steps of:
extracting data from a header of the packet; applying the extracted data to a header data cache; supplying a header data cache index to a packet classification engine; applying the index to retrieve at least part of the extracted data from the header data cache; and applying the retrieved data in a header check to determine a classification for the packet.
- 50. Disposition logic comprising:
a plurality of inputs and an output, wherein a disposition decision for a packet is transmitted on the output in response to a plurality of disposition recommendations received for the packet on respective ones of the inputs, and wherein the disposition decision for the packet is produced in accordance with classification information identified for the packet.
- 51. The disposition logic of claim 50 wherein the classification information is received on one or more of the inputs.
- 52. The disposition logic of claim 50 wherein the disposition recommendations include one or more of a security recommendation, a policing recommendation and a generic pattern match recommendation.
- 53. The disposition logic of claim 52 wherein the disposition decision is applied as feedback to logic from which the policing recommendation was received.
- 54. A method of providing a disposition decision for a packet, the method comprising the steps of:
receiving a plurality of disposition recommendations for the packet; producing the disposition decision for the packet programmatically in accordance with the disposition recommendations and classification information identified for the packet; and transmitting the disposition decision.
- 55. The method of providing a disposition decision of claim 54 further comprising the step of receiving the classification information.
- 56. The method of providing a disposition decision of claim 54 wherein the disposition recommendations include one or more of a security recommendation, a policing recommendation and a generic pattern match recommendation.
- 57. The method of providing a disposition decision of claim 56 further comprising the step of applying the disposition decision as feedback to logic from which the policing recommendation was received.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the priority of U.S. Provisional Application No. 60/206,617 entitled “System and Method for Enhanced Line Cards” filed May 24, 2000, U.S. Provisional Application No. 60/206,996 entitled “Flow Resolution Logic System and Method” filed May 24, 2000 and U.S. Provisional Application No. 60/220,335 entitled “Programmable Packet Processor” filed Jul. 24, 2000, the contents of all of which are fully incorporated by reference herein.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60206617 |
May 2000 |
US |
|
60206996 |
May 2000 |
US |
|
60220335 |
Jul 2000 |
US |