IP Library Granted Patent US 11,258,886
Granted Patent B2
US 11,258,886 · App. 16/802,357 · Granted Feb 22, 2022

Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof

Inventors: Vishal Anand (Saratoga, CA); Tsahi Daniel (Palo Alto, CA); Premshanth Theivendran (Foster City, CA)
Assignee: Marvell Asia PTE, LTD.
H04L69/22H04L69/321
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 11,258,886
App. No.
16/802,357
Granted
Feb 22, 2022
Kind
B2
Abstract

Embodiments of the apparatus for handling large protocol layers relate to an implementation that optimizes a field selection circuit. This implementation provides software like flexibility to a hardware parser engine in parsing packets. The implementation limits a size of each layer and splits any layer that exceeds that size into smaller layers. The parser engine extracts data from the split layers just as it would from a non-split layer and, then, concatenates the extracted data in a final result.

Claims (56)

1. A method of implementing a parser engine, the method comprising:

inputting a packet having header including one or more protocol layers with the parser engine;

splitting each of the protocol layers of the header that has a size greater than a predetermined size into a plurality of layer subsections with the parser engine; and

processing all of the subsections with the parser engine by extracting data from one or more of the subsections and forming a token based on the extracted data, wherein the token is used for further processing of the packet; and

outputting the packet out of the parser engine after the subsections have been processed.

2. The method of claim 1 , further comprising separating the protocol layers of the packet and storing a layer type of each protocol layer of the packet in a first array and storing an offset of where each protocol layer of the packet ends in a second array.

3. The method of claim 2 , wherein splitting each of the protocol layers of the packet includes updating the first array and the second array based on the split.

4. The method of claim 1 , wherein extracting data from the one or more of the subsections includes applying at least one from a set of generic commands to the one or more of the subsections to thereby extract a field from the one or more of the subsections.

5. The method of claim 4 , wherein each within the set of generic commands is agnostic of specific fields within the protocol layers.

6. The method of claim 1 , further comprising applying a bit vector to results from the processing to form an input to a hash function.

7. A method of implementing a parser engine, the method comprising:

inputting a packet having a header including a plurality of protocol layers with the parser engine;

splitting any of the protocol layers of the packet that has a size greater than a predetermined size into a first part and a second part with the parser engine;

based on a determination that the second part has a size greater than the predetermine size, further splitting the second part with the parser engine; and

processing all of the split layers with the parser engine by extracting data from one or more of the parts and forming a token based on the extracted data, wherein the token is used for further processing of the packet; and

outputting the packet out of the parser engine after the parts have been processed.

8. The method of claim 7 , further comprising updating information regarding a layer type of each of the protocol layers and offsets where each of the protocol layers end, wherein the information regarding the layer type is stored in a first array and the information regarding the offsets is stored in a second array.

9. The method of claim 8 , wherein updating the information includes:

storing information regarding layer types of the first part and the second part in sequential elements of the first array; and

storing information regarding offsets of the first part and the second part in sequential elements of the second array.

10. The method of claim 7 , further comprising, prior to processing, generalizing each of the split layers to a generic format.

11. A method of implementing a network switch, the method comprising:

inputting a packet having a header including a plurality of protocol layers;

comparing each of the protocol layers with a programmable register to determine whether each one of the protocol layers needs to be split;

based on the determination that one of more of the protocol layers needs to be split, splitting the one or more protocol layers into layer subsections;

processing the subsections by extracting data from each of the subsections;

forming a token based on the extracted data, wherein the token is used for further processing of the packet; and

outputting the packet out of the network switch after the protocol layers have been processed.

12. The method of claim 11 , further comprising parsing the packet by:

identifying a layer type of each of the protocol layers in the packet;

storing the layer type of each layer in a first array;

identifying an offset of where each of the protocol layers end in the packet; and

storing the offset of where each layer ends in a second array.

13. The method of claim 12 , further comprising storing the first array and the second array in a memory of the network switch.

14. The method of claim 11 , wherein the programmable register includes:

a layerType field, which indicates which a corresponding entry matches;

a splitLength field, which indicates an offset at which a corresponding layer should be split at; and

a newLayerType field, which indicates a layer type value of a new split layer.

15. The method of claim 14 , further comprising programming the layerType field, the splitLength field and the newLayerType field via software.

16. The method of claim 11 , further comprising applying a bit vector to results from logical AND operations, wherein each of the logical AND operations is applied on a bit mask and the extracted data from one of the protocol layers.

17. A network switch comprising:

an input port and an output port for receiving and transmitting packets each having a header including a plurality of protocol layers; and

a parser engine for splitting any of the protocol layers of a packet of the packets that exceeds a predetermined size into a plurality of sublayers, extracting data from one or more of the sublayers, forming a token based on the extracted data, wherein the token is used for further processing of the packet, and outputting the packet out of the parser engine after the sublayers have been processed.

18. The network switch of claim 17 , wherein the predetermined size is software defined.

19. The network switch of claim 17 , wherein the parser engine further:

applies a logical AND operation on a bit mask and the extracted data for each of the sublayers; and

applies a bit vector to results from the logical AND operations to form an input of a hash function.

20. The network switch of claim 19 , wherein an output of the hash function is a unique signature that identifies which of equal-cost multi-path routes the packet should take.

21. A parser engine comprising a circuit configured to:

input a packet having a header including one or more protocol layers;

split one or more of the protocol layers of the packet that has a size greater than a predetermined size into a plurality of sublayers;

process all of the sublayers by extracting data from one or more of the sublayers and forming a token based on the extracted data, wherein the token is used for further processing of the packet; and

output the packet out of the parser engine after the sublayers have been processed.

22. The parser engine of claim 21 , wherein information regarding a layer type of each of the protocol layers and an offset of where each of the protocol layers ends is maintained.

23. The parser engine of claim 22 , wherein the information is updated after splitting the one or more of the protocol layers.

24. The parser engine of claim 21 , wherein the circuit is also configured to apply a bit vector to results from the processing to form an input to a hash function.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2021
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 057897/0502 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2021
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 057926/0430 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2020
From: ANAND, VISHAL; DANIEL, TSAHI; THEIVENDRAN, PREMSHANTH
To: XPLIANT, INC.
Reel/Frame 051941/0875 →
MERGER Recorded Feb 26, 2020
From: XPLIANT, INC.
To: CAVIUM NETWORKS LLC
Reel/Frame 051941/0899 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2020
From: CAVIUM NETWORKS LLC
To: CAVIUM, INC.
Reel/Frame 051941/0922 →
CHANGE OF NAME Recorded Feb 26, 2020
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 052025/0798 →
Continuity (2)
Continuation 14309763 · Jun 19, 2014
Related Publication 20200195761A1 · Jun 18, 2020