IP Library Granted Patent US 8,886,879
Granted Patent B2
US 8,886,879 · App. 13/458,345 · Granted Nov 11, 2014

TCAM action updates

Inventors: Suddha Sekhar Dey (Roseville, CA); Brian E. Krelle (Roseville, CA)
Assignee: Hewlett-Packard Development Company, L.P.
G06F17/30982G06F11/1064
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,886,879
App. No.
13/458,345
Filed
Apr 27, 2012
Granted
Nov 11, 2014
Kind
B2
Art Unit
2135
USPC
711/108
Abstract

Systems, and methods, including executable instructions and/or logic thereon are provided for ternary content addressable memory (TCAM) updates. A TCAM system includes a TCAM matching array, a TCAM action array that specifies actions that are taken upon a match in the TCAM array, and a TCAM driver that provides a programmable interface to the TCAM matching array and the TCAM action array. Program instructions are executed by the TCAM driver to add a divert object which encompasses actions associated with the TCAM actions array and to apply the divert object to update action fields in the TCAM action array, without changing the relative order of entries in the TCAM matching array, while hardware is simultaneously using the entries.

Claims (41)

1. A ternary content addressable memory (TCAM) system, comprising:

a TCAM matching array;

a TCAM action array that specifies actions that are taken upon a match in the TCAM array, the TCAM action array including entries having source IP, destination IP, protocol, source port, destination port, and action fields; and

a TCAM driver that provides a programmable interface to the TCAM matching array and the TCAM action array, wherein program instructions programmed to the TCAM driver are stored in a memory and executed by a processing resource of the TCAM driver to:

add a divert object which encompasses actions associated with TCAM action array entries, wherein the divert object is a data structure referencing a particular TCAM action field to change within multiple TCAM action array entries; and

apply the divert object to change TCAM action fields associated with multiple TCAM action array entries, wherein changing TCAM action fields changes all TCAM action array entries associated with the divert object together without reordering the entries in the TCAM matching array, and without changing any other field in a given TCAM entry, while hardware is simultaneously using the entries.

2. The TCAM system of claim 1 , wherein the TCAM driver is configured to override the TCAM conditionally and unconditionally.

3. The TCAM system of claim 2 , wherein the TCAM driver is configured to override the TCAM via at least two options including:

an option to conditionally override an action field; and

an option to unconditionally override an action field with a specified gateway when programmed as a default route.

4. The TCAM system of claim 3 , wherein the program instructions are executed to respond to and accommodate a particular option based on particular functionality for multiple ASIC families, including when a particular ASIC generation does not have a particular functionality associated with a later ASIC generation.

5. The TCAM system of claim 3 , wherein the program instructions are executed to hide implementation differences for equivalent functionality between the different ASIC families.

6. The TCAM system of claim 1 , wherein the program instructions are executed such that the divert object can be associated with multiple TCAM entries without reordering or disturbing entries.

7. The TCAM system of claim 6 , wherein the program instructions are executed such that a single call to the TCAM driver to change the divert object will change all TCAM entries that are associated with the divert object.

8. A method for changing a ternary content addressable memory (TCAM) system including a TCAM matching array, a TCAM action array and a TCAM driver, comprising:

extending the TCAM driver to add a divert object which encompasses actions associated with the TCAM action array, the TCAM action array including entries having source IP, destination IP, protocol, source port, destination port, and action fields; and

using the TCAM driver to execute program instructions, stored in a memory, to:

apply a divert object in the TCAM driver to change TCAM action fields associated with multiple TCAM action array entries, wherein the divert object is a data structure referencing a particular TCAM action field to change within multiple TCAM action array entries, and wherein changing TCAM action fields changes all TCAM action array entries associated with the divert object together, without changing any other field in a given TCAM entry; and

change actions returned by the TCAM, wherein the program instructions are executed to override an action decision for IP forwarded packets according to at least two options, the at least two options including:

an option to unconditionally override the action decision; and

an option to conditionally override the action decision when the action decision is a default decision.

9. The method of claim 8 , wherein the program instructions are executed by the TCAM driver to change all action array entries returned by the TCAM.

10. The method of claim 8 , wherein the program instructions are executed by the TCAM driver to accommodate different ASIC families, including ASICs which do not have an action associated with the action array.

11. The method of claim 8 , wherein the program instructions are executed to:

override an IP Next Hop gateway decision for IP forwarded packets according to at least two options, the at least two options including:

an option to unconditionally override IP Next Hop gateway decision; and

an option to conditionally override the normal IP Next Hop gateway decision with a specified gateway only when the normal IP Next Hop is a default route.

12. A non-transitory computer-readable medium storing a set of instructions executable by a processor, wherein the set of instructions are executed by the processor to:

extend a TCAM driver to include a divert object, wherein the divert object implements action fields that are associated with multiple TCAM entries;

change actions returned by the TCAM, without reordering the entries in the TCAM matching array, the TCAM action array including entries having source IP, destination IP, protocol, source port, destination port, and action fields, while hardware is simultaneously using the entries; and

apply a divert object to assign a single action to multiple TCAM action field entries in a 1 for N (1:N) manner, where N is a variable number of TCAM entries, wherein the divert object is a data structure referencing a particular TCAM action field to change all TCAM action field entries in multiple TCAM action array entries that are associated with the divert object together, without changing any other field in a given TCAM entry.

13. The medium of claim 12 , wherein the instructions are executed to use the divert object to cause a TCAM driver to change an action field with at least one action associated with the action array to:

force packets into a port or link aggregation group;

force packets out of a port or link aggregation group; and

deny packets.

14. The medium of claim 12 , wherein the instructions are executed to use the divert object to cause a TCAM driver to:

change an action field with an action to force packets to be encapsulated into tunnels depending upon ASIC functionality; or

change an action field with an action to force packets to be de-capsulated depending upon ASIC functionality.

15. The medium of claim 12 , wherein the instructions are executed to use the divert object to cause a TCAM driver to change an action field with at least one action, the at least one action includes an action instruction to:

take no action on a particular group of packets associated with PBR and OpenFlow; and

copy a particular group of packets to a processor and then drop the packets associated with PBR and OpenFlow.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2012
From: DEY, SUDDHA SEKHAR; KRELLE, BRIAN E.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 028123/0055 →
Continuity (1)
Related Publication 20130290622A1 · Oct 31, 2013