IP Library › Granted Patent US 10,341,242
Granted Patent B2
US 10,341,242 · App. 15/377,303 · Granted Jul 2, 2019

System and method for providing a programmable packet classification framework for use in a network device

Inventors: Arvind Srinivasan (San Jose, CA); Marcelino Dignum (Menlo Park, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
H04L47/2441H04L45/54H04L45/745H04L69/22H04L45/7453
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,341,242
App. No.
15/377,303
Granted
Jul 2, 2019
Kind
B2
Abstract

In accordance with an embodiment, described herein is a system and method for providing a programmable packet classification framework for use in a network device in a high performance network. The packet classification framework can comprise a plurality of hardware-based programmable classification primitives, including a key composition primitive, a key composition rule primitive, a match action logical structure, and a next action primitive. The classification primitives can be logically strung together, with the results from one classification primitive fed into the next one until the processing of a data packet is completed. The classification framework can use a state machine to track states of the data packet processing, and dynamically adjust behaviors of the classification primitives based on the processing states of a data packet. With the programmable classification primitives, the classification framework can recursively parse data packets of a plurality of protocols without requiring any hardware changes.

Claims (58)

1. A network device providing a programmable packet classification framework in a network device in a high performance network, comprising:

a memory, and a microprocessor;

a plurality of ingress ports for receiving data packets based on a plurality of protocols;

a plurality of hardware-based classification primitives including a key composition primitive, a key composition rule primitive, and a next action primitive;

one or more lookup tables, and a match action table;

a state machine configured to track states of the processing of each data packet;

wherein the key composition primitive is configured to construct a current lookup key for said each data packet based on the key composition rule primitive, and to present the current lookup key to a lookup table;

wherein a match with the lookup key in the lookup table results in an action match in the match action table for said each data packet;

wherein the action match is associated with information for use in constructing a next lookup key for said each data packet;

wherein each of the current lookup key and the next lookup is associated with a value in the state machine, wherein the value indicates a particular protocol layer being processed in said each data packet;

wherein the plurality of classification primitives are logically connected, with a result from one classification primitive fed into the next classification primitive;

whereby the network device is configured to,

parse each of said data packets recursively using the plurality of classification primitives until classification of said each data packet based on a particular protocol of the plurality of protocols is completed,

categorize said data packets into a plurality of flows based on said classification of each of said data packets,

and process said data packets categorized into each of said plurality of flows according to a predefined rule associated with said each of said plurality of flows.

2. The system of claim 1 , wherein each of a plurality of hardware-based classification primitives is programmable, and is based on either a ternary content-addressable memories (TCAMs) or a static random-access memory (SRAM) of said memory of said network device.

3. The system of claim 1 , wherein the network device is an Ethernet network interface card, or an Ethernet network switch.

4. The system of claim 1 , wherein the key composition rule primitive is a structure residing in a TCAM in the memory of the network device, and includes a key ID, a byte selection array, a length of the lookup key, and a table ID.

5. The system of claim 4 , wherein the byte selection array includes indexes pointing to byte positions in a data packet, wherein the indexes are relative to a start position of the data packet or a start position of a current network layer being processed, or derived as a result of a match rule.

6. The system of claim 1 , wherein the network device is an InfiniBand network interface card, or an InfiniBand network switch.

7. The system of claim 1 , wherein when a particular data packet is initially received by the network device, a default key composition rule primitive is used by the key composition primitive to construct a lookup key.

8. The system of claim 7 , wherein the default key composition rule primitive is based on a port of arrival of the plurality of ingress ports on the network device at which the particular data packet was received.

9. A method for categorizing and processing data packets in a high performance network, the method comprising:

providing a network device, wherein the network device includes,

a programmable packet classification framework having a plurality of hardware-based classification primitives comprising a key composition primitive, a key composition rule primitive,

one or more lookup tables,

a match action table,

a state machine wherein states of the processing of each of the data packets are tracked using a state machine, and

a plurality of ingress ports;

receiving, at the plurality of ingress ports, data packets based on a plurality of protocols;

constructing, using the key composition primitive, a current lookup key based on the key composition rule primitive;

detecting a match with the lookup key in said one or more lookup tables; and

triggering one or more actions associated with a match in the match action table;

constructing a next lookup key using information associated with the match in the match action table, wherein each of the current lookup key and the next lookup is associated with a value in the state machine, wherein the value indicates a particular protocol layer being processed in said each data packet;

wherein the plurality of hardware-based classification primitives are logically connected, with a result from one primitive fed into the next one;

parsing each of said data packets recursively using the plurality of hardware-based classification primitives until classification of said each data packet based on a particular protocol of the plurality of protocols is completed;

categorizing said data packets into a plurality of flows based on said classification of each of said data packets; and

processing said data packets categorized into each of said plurality of flows according to a predefined rule associated with said each of said plurality of flows.

10. The method of claim 9 , wherein each of a plurality of hardware-based classification primitives is programmable, and is based on either a ternary content-addressable memories (TCAMs) or a static random-access memory (SRAM).

11. The method of claim 9 , wherein the data packets are configured to be parsed recursively by the plurality of classification primitives.

12. The method of claim 9 , wherein the key composition rule primitive is a structure residing in a TCAM in the network device, and includes a key ID, a byte selection array, a length of the lookup key, and a table ID.

13. The method of claim 12 , wherein the byte selection array includes indexes pointing to byte positions in a data packet, wherein the indexes are relative to a start position of the data packet or a start position of a current network layer being processed, or derived as a result of a match rule.

14. The method of claim 9 , wherein the network device is a network interface card or a switch in an InfiniBand network or an Ethernet network.

15. The method of claim 9 , wherein when a data packet is initially received by the network device, a default key composition rule primitive is used by the key composition primitive to construct a lookup key.

16. A non-transitory computer-readable storage medium storing a set of instructions for supporting categorizing data packets in a network device in a high performance network, wherein the network device includes, a plurality of ingress ports, a plurality of hardware-based classification primitives comprising a key composition primitive, a key composition rule primitive, one or more lookup tables, and a match action table, for use in processing data packets based on a plurality of protocols, wherein states of the processing of each of the data packets are tracked using a state machine, said instructions, when executed by the network device, cause the network device to perform steps comprising:

receiving, at the plurality of ingress ports, data packets based on the plurality of protocols;

constructing, using the key composition primitive, a current lookup key based on the key composition rule primitive;

detecting a match with the lookup key in said one or more lookup tables; and

triggering one or more actions associated with a match in the match action table;

constructing a next lookup key using information associated with the match in the match action table, wherein each of the current lookup key and the next lookup is associated with a value in the state machine, wherein the value indicates a particular protocol layer being processed in said each data packet;

wherein the plurality of hardware-based classification primitives are logically connected, with a result from one primitive fed into the next one;

parsing each of said data packets recursively using the plurality of hardware-based classification primitives until classification of said each data packet based on a particular protocol of the plurality of protocols is completed;

categorizing said data packets into a plurality of flows based on said classification of each of said data packets; and

processing said data packets categorized into each of said plurality of flows according to a predefined rule associated with said each of said plurality of flows.

17. The non-transitory computer-readable storage medium of claim 16 , wherein each of a plurality of classification primitives is programmable, and is based on either a ternary content-addressable memories (TCAMs) or a static random-access memory (SRAM).

18. The non-transitory computer-readable storage medium of claim 16 , wherein the data packets are configured to be parsed recursively by the plurality of classification primitives.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the key composition rule primitive is a structure residing in a TCAM in the network device, and includes a key ID, a byte selection array, a length of the lookup key, and a table ID.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the byte selection array includes indexes pointing to byte positions in a data packet, wherein the indexes are relative to a start position of the data packet or a start position of a current network layer being processed, or derived as a result of a match rule.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2016
From: SRINIVASAN, ARVIND; DIGNUM, MARCELINO
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 040725/0158 →
Continuity (1)
Related Publication 20180167329A1 · Jun 14, 2018
Cited By (7)
US 12,255,835 US 12,375,588 US 12,381,962 US 12,407,564 US 12,445,542 US 12,457,172 US 12,634,199