IP Library Granted Patent US 8,139,583
Granted Patent B1
US 8,139,583 · App. 12/242,686 · Granted Mar 20, 2012

Command selection in a packet forwarding device

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,139,583
App. No.
12/242,686
Granted
Mar 20, 2012
Kind
B1
Abstract

Packet modification is performed in the switch fabric by selecting a conditional command belonging to a set of commands for modifying a packet. The set of commands is identified based on an index value, and selecting a conditional command belonging to the set of commands is based on a mask value, where the index and mask values are determined based on data in the packet undergoing modification, such as the packet's source and destination, or incoming label. Among other advantages, controlling packet modification in the switch fabric through selecting a conditional command belonging to a set of commands allows multiple sets of commands to be replaced with a single set of commands, resulting in a more efficient use of available external memory.

Claims (53)

1. A method for packet modification in a packet forwarding device, the method comprising:

determining a transmit modification index associated with an inbound packet, the transmit modification index pointing to a command set for modifying the inbound packet, the command set containing at least one conditional command;

assembling a mask value associated with the inbound packet;

locating a mask set based on the mask value, the mask set associated with the command set, the mask set containing binary values corresponding to positions of conditional commands in the command set;

applying the mask set to the command set for modifying the inbound packet; and

modifying the inbound packet to produce a modified outbound packet in accordance with the application of the mask set to the command set; and

wherein applying the mask set to the command set for modifying the inbound packet comprises:

fetching each conditional command in the command set;

determining whether the fetched conditional command is selected based on a binary value in the mask set, the binary value corresponding to a position of the fetched conditional command in the command set; and

changing the fetched conditional command to a no operation command when the binary value in the mask set corresponding to the position of the fetched conditional command in the command set indicates the fetched conditional command has not been selected for execution.

2. The method of claim 1 , wherein determining the transmit modification index associated with the inbound packet is performing a lookup in a receive table mapping identifying information from the packet with the transmit modification index, the transmit modification index having been previously assigned to packets matching the identifying information.

3. The method of claim 2 , wherein the identifying information is at least one of a source identification indicating the source of the inbound packet, a destination identification indicating the destination of the inbound packet, and a label associated with the packet.

4. The method of claim 1 , wherein the binary value in the mask set that indicates the fetched conditional command has not been selected for execution is zero and the binary value in the mask set that indicates the fetched conditional command has been selected for execution is one.

5. The method of claim 1 , wherein assembling the mask value associated with the inbound packet comprises:

returning an associated RAM resident mask data for each packet processor cycle in which the inbound packet matches a lookup table in first external CAM;

picking a location in a holding register based on a first portion of the returned mask data;

storing a second portion in the picked location of the holding register; and

reducing the stored portions in the holding register to a final value obtained from a second binary CAM matching the stored portions in the holding register.

6. A packet forwarding device supporting packet modification, the device comprising:

a receive table memory in which is stored a transmit modification index associated with identifying information of an inbound packet, the transmit modification index pointing to a command set for modifying the inbound packet;

a command set memory in which is stored the command set, the command set having at least one conditional command for modifying the inbound packet;

a receive processor for assembling a mask value associated with the inbound packet and locating a mask set based on the mask value, the mask set associated with the command set, the mask set containing binary values corresponding to positions of conditional commands in the command set;

a transmit modification processor for applying the mask set to the at least one conditional command in the command set for modifying the packet, and modifying the inbound packet to produce a modified outbound packet in accordance with the application of the mask set to the command set;

wherein the transmit modification processor for applying the mask set to the command set for modifying the inbound packet performs:

fetching each conditional command in the command set;

determining whether the fetched conditional command is selected based on a binary value in the mask set, the binary value corresponding to a position of the fetched conditional command in the command set; and

changing the fetched conditional command to a no operation command when the binary value in the mask set corresponding to the position of the fetched conditional command in the command set indicates the fetched conditional command has not been selected for execution.

7. The device of claim 6 , wherein the receive processor determines the transmit modification index associated with the inbound packet by performing a lookup in the receive table memory, the lookup mapping identifying information from the packet with the transmit modification index, the transmit modification index having been previously assigned to packets matching the identifying information.

8. The device of claim 7 , wherein the identifying information is at least one of a source identification indicating the source of the inbound packet, a destination identification indicating the destination of the inbound packet, and a label associated with the packet.

9. The device of claim 6 , wherein the binary value in the mask set that indicates the fetched conditional command has not been selected for execution is zero and the binary value in the mask set that indicates the fetched conditional command has been selected for execution is one.

10. The device of claim 6 , wherein the receive processor for assembling the mask value associated with the inbound packet performs:

returning an associated RAM resident mask data for each packet processor cycle in which the inbound packet matches a lookup table in first external CAM;

picking a location in a holding register based on a first portion of the returned mask data;

storing a second portion in the picked location of the holding register; and

reducing the stored portions in the holding register to a final value obtained from a second binary CAM matching the stored portions in the holding register.

11. A machine-implemented method for packet modification in a packet forwarding device, the method comprising:

means for determining a transmit modification index associated with an inbound packet, the transmit modification index pointing to a command set for modifying the inbound packet, the command set containing at least one conditional command;

means for assembling a mask value associated with the inbound packet;

means for locating a mask set based on the mask value, the mask set associated with the command set, the mask set containing binary values corresponding to positions of conditional commands in the command set;

means for applying the mask set to the command set for modifying the inbound packet;

means for modifying the inbound packet to produce a modified outbound packet in accordance with the application of the mask set to the command set; and

wherein the means for applying the mask set to the command set for modifying the inbound packet comprises:

means for fetching each conditional command in the command set;

means for determining whether the fetched conditional command is selected based on a binary value in the mask set, the binary value corresponding to a position of the fetched conditional command in the command set; and

means for changing the fetched conditional command to a no operation command when the binary value in the mask set corresponding to the position of the fetched conditional command in the command set indicates the fetched conditional command has not been selected for execution.

12. The method of claim 11 , wherein the means for determining the transmit modification index associated with the inbound packet is a means for performing a lookup in a receive table mapping identifying information from the packet with the transmit modification index, the transmit modification index having been previously assigned to packets matching the identifying information.

13. The method of claim 12 , wherein the identifying information is at least one of a source identification indicating the source of the inbound packet, a destination identification indicating the destination of the inbound packet, and a label associated with the packet.

14. The method of claim 11 , wherein the binary value in the mask set that indicates the fetched conditional command has not been selected for execution is zero and the binary value in the mask set that indicates the fetched conditional command has been selected for execution is one.

15. The method of claim 11 , wherein the means for assembling the mask value associated with the inbound packet comprises:

means for returning an associated RAM resident mask data for each packet processor cycle in which the inbound packet matches a lookup table in first external CAM;

means for picking a location in a holding register based on a first portion of the returned mask data;

means for storing a second portion in the picked location of the holding register; and

means for reducing the stored portions in the holding register to a final value obtained from a second binary CAM matching the stored portions in the holding register.

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 May 20, 2009
From: BURTON, CHARLES FREDERICK, III; YOUNG, CHRISTOPHER J.
To: EXTREME NETWORKS, INC.
Reel/Frame 022715/0296 →