IP Library Granted Patent US 8,924,694
Granted Patent B2
US 8,924,694 · App. 13/444,700 · Granted Dec 30, 2014

Packet data modification processor

Inventors: David K. Parker (Cheltenham, GB); Erik R. Swenson (San Jose, CA); Christopher J. Young (San Jose, CA)
Assignee: Extreme Networks, Inc.
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 8,924,694
App. No.
13/444,700
Filed
Apr 11, 2012
Granted
Dec 30, 2014
Kind
B2
Art Unit
2183
USPC
712/224
Abstract

A programmable processor configured to perform one or more packet modifications through execution of one or more commands. A pipelined processor core comprises a first stage configured to selectively shift and mask data in each of a plurality of categories in response to one or more decoded commands, and combine the selectively shifted and masked data in each of the categories. The pipelined processor core further comprises a second stage configured to selectively perform one or more operations on the combined data from the first stage and other data responsive to the one or more decoded commands. In one implementation, the processor is implemented as an application specific integrated circuit (ASIC).

Claims (74)

1. A packet modification system comprising:

a packet slicer to receive a complete packet at the packet modification system and slice the complete packet into a plurality of packet portions;

a transmit-in-data buffer to receive and store the plurality of packet portions from the packet slicer;

the transmit-in-data buffer to pass, in parallel, the plurality of packet portions to a modification engine of the packet modification system;

a packet modification engine to effect a modification to one or more of the plurality of packet portions via a programmable processor core coupled with the packet modification engine by implementing at least the following operational stages at the programmable processor core:

(i) a command fetch stage to fetch one or more commands to effect the modification on the one or more packet portions,

(ii) a data fetch stage to fetch insertion and/or replacement data for use by the one or more commands, and

(iii) an address and mask generation stage to generate four pointers and associated masks during each command cycle of the programmable processor core, the four pointers comprising: (a) a first pointer to packet data indicating a location where an operation is to occur among the plurality of packet portions, (b) a second pointer to insertion data which is to be inserted into one or more of the packet portions, (c) a third pointer to copy data which is to be copied from one of the packet portions and into another of the packet portions, and (d) a fourth pointer to residual packet data which is to come after the location where the operation is to occur among the plurality of packet portions as specified via the first pointer;

wherein the data fetch stage follows the first, second, third, and fourth pointers to retrieve the data specified for use in completing the modification to the one or more packet portions via the programmable processor core; and

a packet assembler to re-assemble the plurality of packet portions, including the one or more packet portions having been modified, into a modified complete packet for egress transmission from the packet modification system.

2. The packet modification system of claim 1 , wherein the operational stages at the programmable processor core further includes a command decode stage.

3. The packet modification system of claim 1 , wherein the address and mask generation stage is to selectively shift and mask data from four or more categories in response to a decoded command determined by the command decode stage, the four or more categories comprising (a) the first pointer to packet data indicating a location where an operation is to occur among the plurality of packet portions, (b) the second pointer to insertion data which is to be inserted into one or more of the packet portions, (c) the third pointer to copy data which is to be copied from one of the packet portions and into another of the packet portions, and (d) the fourth pointer to residual packet data which is to come after the location where the operation is to occur among the plurality of packet portions as specified via the first pointer.

4. The packet modification system of claim 1 , wherein at least one of the commands to effect the modification on the one or more packet portions specifies a source or destination address in terms of a packet context and offset.

5. The packet modification system of claim 1 , wherein at least one of the commands to effect the modification on the one or more packet portions is a copy/insert command for copying data from a first one of the packet portions for the packet and inserting the copied data into a second one of the packet portions for the packet.

6. The packet modification system of claim 1 , wherein at least one of the commands to effect the modification on the one or more packet portions is a copy/replace command for copying data from a first one of the packet portions for the packet and replacing original data in a second one of the packet portions for the packet with the copied data.

7. The packet modification system of claim 1 , wherein the programmable processor core is implemented as an application specific integrated circuit (ASIC) on an integrated circuit chip.

8. The packet modification system of claim 1 , wherein the operational stages at the programmable processor core further include:

a command decode stage to decode the one or more commands fetched; and

wherein the command fetch stage is to fetch the one or more commands from a first memory of the packet modification system for decoding.

9. The packet modification system of claim 8 , wherein the operational stages at the programmable processor core further include:

the address and mask generation stage generate one or more addresses and one or more masks for each of the commands fetched and decoded;

wherein the modification includes at least:

(a) selectively shifting and masking data in each of several categories in response to a decoded command,

(b) logically summing the selectively shifted and masked data in each of the several categories via one or more shifters,

(c) logically ANDing the selectively shifted data via the masked data in each of the several categories using one or more AND gates, and

(d) logically ORing the outputs of the respective AND gates using an OR gate.

10. The packet modification system of claim 9 , further comprising:

an Arithmetic Logic Unit (ALU) to selectively perform, in response to the one or more decoded commands, an arithmetic operation on the logical sum as produced by the OR gate using data as retrieved from memory and provided to the ALU through one or more signal lines; and

wherein the ALU is to further perform a NOP (no operation) instruction on at least one of the plurality of packet portions where data of the at least one packet portion is to pass through the ALU without alteration according to the decoded command for the respective at least one packet portion.

11. The packet modification system of claim 8 , wherein the operational stages at the programmable processor core further include:

the address and mask generation stage generate, for each of the decoded commands, a first pointer to packet data designating a location for data to be replaced and/or inserted within the one or more of the plurality of packet portions.

12. The packet modification system of claim 11 :

wherein the address and mask generation stage to further generate a second pointer to insertion and/or replacement data; and

wherein the address and mask generation stage is to further identify associated masks for respective packet portions of the packet to be applied by logically ANDing shifted data with the associated masks.

13. The packet modification system of claim 12 , wherein the data fetch stage is to fetch the insertion and/or replacement data based on the second pointer generated by the address and mask generation stage.

14. The packet modification system of claim 1 , wherein the operational stages at the programmable processor core further include:

the address and mask generation stage generate one or more addresses and one or more masks for each of the one or more commands fetched; and

a shift and mask stage to modify the one or more packet portions with the fetched insertion and/or replacement data based on the mask for the respective packet portion by shifting left or right by a number of bytes equal to a number of bytes to be added or deleted from the one or more packet portions based on the one or more commands.

15. The packet modification system of claim 1 :

wherein the packet assembler is to produce an ordered set of instructions for assembling the modified complete packet for egress transmission from the one or more of the plurality of packet portions; and

wherein the packet assembler to re-assemble the plurality of packet portions comprises the packet assembler to re-assemble the plurality of packet portions into the modified complete packet for egress transmission from the packet modification system using the ordered set of instructions.

16. The packet modification system of claim 1 , further comprising:

a first memory of the packet modification system to store unmodified packet portions;

a second memory of the packet modification system to store commands for use by the packet modification system;

a third memory of the packet modification system to store modified packet portions; and

wherein the first memory, the second memory, and the third memory each comprise physically separate and distinct physical memories within the packet modification system.

17. A method in a packet modification system, wherein the method comprises:

receiving a complete packet at the packet modification system;

slicing, via a packet slicer of the packet modification system, the complete packet into a plurality of packet portions;

receiving and storing via a transmit-in-data buffer of the packet modification system, the plurality of packet portions from the packet slicer;

passing in parallel, via the transmit-in-data buffer, the plurality of the packet portions to a modification engine of the packet modification system;

modifying, via a packet modification engine, one or more of the plurality of packet portions by implementing the following operational stages via a programmable processor core coupled with the packet modification engine:

(i) a command fetch stage to fetch one or more commands to effect the modification on the one or more packet portions, and

(ii) a data fetch stage to fetch insertion and/or replacement data for use by the one or more commands, and

(iii) an address and mask generation stage to generate four pointers and associated masks during each command cycle of the programmable processor core, the four pointers comprising: (a) a first pointer to packet data indicating a location where an operation is to occur among the plurality of packet portions, (b) a second pointer to insertion data which is to be inserted into one or more of the packet portions, (c) a third pointer to copy data which is to be copied from one of the packet portions and into another of the packet portions, and (d) a fourth pointer to residual packet data which is to come after the location where the operation is to occur among the plurality of packet portions as specified via the first pointer;

wherein the data fetch stage follows the first, second, third, and fourth pointers to retrieve the data specified for use in completing the modification to the one or more packet portions via the programmable processor core; and

re-assembling, via a packet assembler of the packet modification system, the plurality of packet portions into a modified complete packet for egress transmission from the packet modification system.

18. The method of claim 17 :

wherein the packet modification engine further implements an operational stage for producing an ordered set of instructions for assembling the modified complete packet for egress transmission from the one or more of the plurality of packet portions; and

wherein the re-assembling comprises re-assembling the plurality of packet portions into the modified complete packet for egress transmission from the packet modification system using the ordered set of instructions.

19. The method of claim 17 :

wherein the transmit-in-data buffer comprises a plurality of first-in-first-out (FIFO) memory buffers, each of the plurality of FIFO memory buffers coupled with the modification engine in parallel; and

wherein passing in parallel, the plurality of the packet portions to the modification engine comprises passing in parallel, the plurality of the packet portions to the modification engine via the plurality of FIFO memory buffers.

20. A non-transitory processor-readable storage medium having instructions stored thereon that, when executed by a packet modification system, cause the packet modification system to perform a method comprising:

receiving a complete packet at the packet modification system;

slicing, via a packet slicer of the packet modification system, the complete packet into a plurality of packet portions;

receiving and storing via a transmit-in-data buffer of the packet modification system, the plurality of packet portions from the packet slicer;

passing in parallel, via the transmit-in-data buffer, the plurality of the packet portions to a modification engine of the packet modification system;

modifying, via a packet modification engine, one or more of the plurality of packet portions by implementing the following operational stages via a programmable processor core coupled with the packet modification engine:

(i) a command fetch stage to fetch one or more commands to effect the modification on the one or more packet portions, and

(ii) a data fetch stage to fetch insertion and/or replacement data for use by the one or more (ii) a data fetch stage to fetch insertion and/or replacement data for use by the one or more commands, and

(iii) an address and mask generation stage to generate four pointers and associated masks during each command cycle of the programmable processor core, the four pointers comprising: (a) a first pointer to packet data indicating a location where an operation is to occur among the plurality of packet portions, (b) a second pointer to insertion data which is to be inserted into one or more of the packet portions, (c) a third pointer to copy data which is to be copied from one of the packet portions and into another of the packet portions, and (d) a fourth pointer to residual packet data which is to come after the location where the operation is to occur among the plurality of packet portions as specified via the first pointer;

wherein the data fetch stage follows the first, second, third, and fourth pointers to retrieve the data specified for use in completing the modification to the one or more packet portions via the programmable processor core; and

re-assembling, via a packet assembler of the packet modification system, the plurality of packet portions into a modified complete packet for egress transmission from the packet modification system.

Assignments (10)
RELEASE OF PATENT AND TRADEMARK SECURITY INTEREST AT REEL/FRAME NO. 46050/0546 Recorded Jul 30, 2026
From: BANK OF MONTREAL, AS AGENT
To: EXTREME NETWORKS, INC.
Reel/Frame 076081/0088 →
SECURITY INTEREST Recorded Jul 29, 2026
From: EXTREME NETWORKS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 076078/0590 →
AMENDED SECURITY AGREEMENT Recorded Aug 18, 2023
From: EXTREME NETWORKS, INC.; AEROHIVE NETWORKS, INC.
To: BANK OF MONTREAL
Reel/Frame 064782/0971 →
SECURITY INTEREST Recorded May 1, 2018
From: EXTREME NETWORKS, INC.
To: BANK OF MONTREAL
Reel/Frame 046050/0546 →
RELEASE OF SECURITY INTEREST Recorded May 1, 2018
From: SILICON VALLEY BANK
To: EXTREME NETWORKS, INC.
Reel/Frame 046051/0775 →
THIRD AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Recorded Oct 31, 2017
From: EXTREME NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 044639/0300 →
SECOND AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Recorded Jul 14, 2017
From: EXTREME NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 043200/0614 →
AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Recorded Oct 31, 2016
From: EXTREME NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 040521/0762 →
SECURITY AGREEMENT Recorded Jul 27, 2015
From: EXTREME NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 036189/0284 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2012
From: PARKER, DAVID K.; SWENSON, ERIK K.; YOUNG, CHRISTOPHER J
To: EXTREME NETWORKS, INC.
Reel/Frame 028756/0427 →
Continuity (2)
Continuation 10814556 · Mar 30, 2004
Related Publication 20120195317A1 · Aug 2, 2012