IP Library Granted Patent US 9,282,173
Granted Patent B2
US 9,282,173 · App. 13/770,505 · Granted Mar 8, 2016

Reconfigurable packet header parsing

Inventor: Takashi Hidai (Palo Alto, CA)
Assignee: Viavi Solutions Inc.
H04L69/22H04L69/12
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 9,282,173
App. No.
13/770,505
Granted
Mar 8, 2016
Kind
B2
Abstract

The invention relates to a method and device for configurable parsing of packet headers in a network. A configurable packet header parser (CPHP) includes hard-coded packet header logic implementing a hard-coded state machine and a reconfigurable header parsing logic that is coupled to the hardcoded logic and includes programmable registers. The CPHP is remotely programmable by means of a command packet parser that may receive command packets carrying CPHP configuration data and program the registers with the CPHP data to enable parsing packet including new types of headers. The hybrid hard-coded/programmable CPHP requires only a relatively small number of programmable elements enabling ASIC-based implementation.

Claims (89)

1. A configurable packet header parser (CPHP), comprising:

a command packet parser configured to:

receive a command packet from a network,

identify the command packet, and

parse the command packet,

the command packet including configuration data for the CPHP;

a plurality of programmable memory registers coupled to the command packet parser, each of the plurality of programmable memory registers configured to:

store the configuration data; and

a reconfigurable packet parsing engine (RPPE) coupled to the plurality of programmable memory registers, the RPPE configured to:

parse a header of a data packet, received from the network, based on the configuration data stored in one or more of the plurality of programmable memory registers,

the RPPE including:

a hardcoded header parsing portion configured to:

identify headers of a plurality of header types and header transitions in the data packet, and

output header type numbers for the identified headers, and

a programmable header parsing portion that includes one or more new header logics (NHLs), each of the one or more NHLs being coupled to one or more of the plurality of programmable memory registers.

2. The CPHP of claim 1 , wherein the command packet parser is configured to extract at least one new header type descriptor (HD) from the command packet, and

wherein the plurality of programmable memory registers includes one or more programmable HD registers for storing the at least one new header type descriptor.

3. The CPHP of claim 2 , wherein the at least one new header type descriptor includes a header type identifier (HID) and a next header type descriptor (NHD), and

wherein the plurality of programmable memory registers include one or more programmable NHD registers for storing the next header type descriptor, and one or more programmable HID registers for storing the header type identifier.

4. The CPHP of claim 3 , wherein the at least one new header type descriptor includes a header type number (HN) and header length (HL) data, and

wherein the plurality of programmable memory registers include at least one programmable HN register for storing the header type number for the new header type descriptor, and at least one programmable HL register for storing the header length data.

5. The CPHP of claim 1 , wherein each of the one or more NHLs is coupled to a respective programmable HD register of one or more programmable HD registers.

6. The CPHP of claim 3 , wherein:

the hardcoded header parsing portion comprises a plurality of default header logics (DHLs), each of the plurality of DHLs configured to:

parse the headers of the plurality of the header types,

identify header transitions associated with the headers, and

trigger a next one of the plurality of DHLs to parse a next header of the plurality of the header types in accordance with the identified header transitions; and

the programmable header parsing portion includes a programmable comparator coupled to one of the one or more NHLs and to one of the one or more programmable HD registers, the programmable comparator configured to:

trigger next header parsing by the one of the one or more NHLs when a next header identifier field of one of the headers corresponds to a HID value stored in the one of the one or more programmable HID registers.

7. The CPHP of claim 1 , comprising:

a plurality of default header logics (DHLs) configured to parse the headers of the plurality of header types, the plurality of DHLs including:

a first DHL configured to parse headers with a first header type of the plurality of header types, and

a plurality of second DHLs configured to parse headers with a plurality of second header types, of the plurality of header types, based on a trigger from the first DHL,

wherein header type identifiers of the first header type and header type identifiers of the plurality of second header types are hardcoded in the first DHL and the plurality of second DHLs.

8. The CPHP of claim 7 , wherein the first DHL comprises a plurality of hardcoded comparators configured to compare a next header identifier field, of a first header, to the plurality of second header types.

9. The CPHP of claim 8 , wherein each of the plurality of hardcoded comparators includes a header type identifier value of one of the plurality of second header types.

10. The CPHP of claim 7 , wherein each of the plurality of DHLs comprises:

a word counter configured to detect an end of a new header in the data packet and generate an end-header trigger, and

a trigger distributer configured to direct the end-header trigger to one of the plurality of second DHLs.

11. The CPHP of claim 10 , wherein at least one of the plurality of DHLs comprises a header length calculator configured to:

determine a length of the new header, and

provide a header length value to the word counter to detect the end of the new header.

12. The CPHP of claim 11 , wherein the header length calculator is configured to determine the length of the new header by adding, to a header length, a length increment value multiplied by a multiplier value.

13. The CPHP of claim 2 , wherein the one or more programmable HD registers comprise at least one of:

a programmable Ethertype register for storing an Ethertype descriptor for a new header,

a programmable Protocol type register for storing an IP Protocol type descriptor for a new header, or

a programmable port number register for storing a new port number descriptor for a new header.

14. A method comprising:

receiving, from a network and by a packet header parser of a network device, a command packet hat includes configuration data associated with parsing headers;

parsing, by the packet header parser, the command packet to extract the configuration data;

storing, by the network device the configuration data in a plurality of programmable memory registers of the packet header parser;

receiving, by the network device, data packets from the network; and

parsing, by the packet header parser, headers of the data packets based on the configuration data stored in the plurality of programmable memory registers,

the packet header parser including a hardcoded header parsing portion and a programmable header parsing portion, and

the method further comprising:

identifying, by the hardcoded header parsing portion, headers of the data packets that include at least one of a plurality of header types,

outputting header type numbers for the identified headers, and

parsing additional headers of the data packets, other than the identified headers, with the programmable header parsing portion.

15. The method of claim 14 , wherein the configuration data includes a new header type descriptor that includes:

a header type identifier,

a next header type descriptor,

a header type number, and

header length data.

16. The method of claim 14 , wherein parsing the headers of the data packets includes:

parsing the headers of the data packets that include at least one of the plurality of the header types;

identifying header transitions associated with the headers of the data packets that include at least one of the plurality of the header types; and

triggering a parsing of a next header, of the headers of the data packets that include at least one of the plurality of the header types, based on the identified header transitions.

17. A network device, comprising:

packet header parser configured to:

identify a command packet from a network;

parse the command packet,

the command packet including configuration data for the packet header parser;

store the configuration data in a plurality of programmable memory registers;

receive data packets from the network,

identify, by a hardcoded header parsing portion of the packet header parser, headers of the data packets that include at least one of a plurality of header types;

output, by the hardcoded header parsing portion, header type numbers for the identified headers; and

parse, by a programmable header parsing portion of the packet header parser, additional headers of the data packets, other than the identified headers, based on the configuration data stored in the plurality of programmable memory registers.

18. The network device of claim 17 , wherein the configuration data includes a new header type descriptor that includes:

a header type identifier,

a next header type descriptor,

a header type number, and

header length data.

19. The network device of claim 17 , wherein the packet header parser is configured to:

parse the headers of the data packets that include at least one of the plurality of the header types;

identify header transitions associated with the headers of the data packets that include at least one of the plurality of the header types; and

trigger a parsing of a next header, of the headers of the data packets that include at least one of the plurality of the header types, based on the identified header transitions.

20. The network device of claim 17 , wherein the packet header parser includes a plurality of default header logics (DHLs) to parse the headers of the data packets that include at least one of the plurality of header types, the plurality of DHLs including:

a first DHL configured to parse headers with a first header type of the plurality of header types, and

a plurality of second DHLs configured to parse headers with a plurality of second header types, of the plurality of header types, based on a trigger from the first DHL.

Assignments (7)
RELEASE OF SECURITY INTEREST AT REEL/FRAME 73189/0873 Recorded May 28, 2026
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: INERTIAL LABS, INC.; VIAVI SOLUTIONS INC.; VIAVI SOLUTIONS LICENSING LLC
Reel/Frame 075642/0381 →
SECURITY INTEREST Recorded Nov 14, 2025
From: VIAVI SOLUTIONS INC.; VIAVI SOLUTIONS LICENSING LLC; INERTIAL LABS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 073571/0137 →
SECURITY AGREEMENT Recorded Oct 21, 2025
From: INERTIAL LABS, INC.; VIAVI SOLUTIONS INC.; VIAVI SOLUTIONS LICENSING LLC
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 073189/0873 →
TERMINATIONS OF SECURITY INTEREST AT REEL 052729, FRAME 0321 Recorded Jan 5, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: VIAVI SOLUTIONS INC.; RPC PHOTONICS, INC.
Reel/Frame 058666/0639 →
SECURITY INTEREST Recorded May 21, 2020
From: VIAVI SOLUTIONS INC.; 3Z TELECOM, INC.; ACTERNA LLC; ACTERNA WG INTERNATIONAL HOLDINGS LLC; VIAVI SOLUTIONS LLC; JDSU ACTERNA HOLDINGS LLC; OPTICAL COATING LABORATORY, LLC; RPC PHOTONICS, INC.; TTC INTERNATIONAL HOLDINGS, LLC
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 052729/0321 →
CHANGE OF NAME Recorded Aug 28, 2015
From: JDS UNIPHASE CORPORATION
To: VIAVI SOLUTIONS INC.
Reel/Frame 036504/0327 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2013
From: HIDAI, TAKASHI
To: JDS UNIPHASE CORPORATION
Reel/Frame 030143/0470 →
Continuity (2)
Provisional Application 61600502 · Feb 17, 2012
Related Publication 20130215906A1 · Aug 22, 2013