IP Library Granted Patent US 7,392,349
Granted Patent B1
US 7,392,349 · App. 11/045,575 · Granted Jun 24, 2008

Table management within a policy-based routing system

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 7,392,349
App. No.
11/045,575
Granted
Jun 24, 2008
Kind
B1
Abstract

A method of controlling a content addressable memory (CAM) device. A data structure is generated that specifies (i) a prioritized set of rules and (ii) storage locations within the CAM device for one or more match clauses of each of the rules. A new rule having a specified priority is recorded in the data structure. Candidate storage locations within the CAM device are identified within the CAM device for the match clauses of each of the rules having a lower priority than the new rule. The candidate storage locations are compared with the storage locations specified by the data structure. Each match clause for which the candidate storage location does not match the specified storage location is stored in the CAM device.

Claims (37)

1. A method of controlling a content addressable memory (CAM) device:

generating a data structure that specifies (i) a prioritized set of rules and (ii) addresses within the CAM device for one or more match clauses of each of the rules;

recording a new rule having a specified priority in the data structure;

identifying candidate addresses within the CAM device for the one or more match clauses of each of the rules having a lower priority than the new rule;

comparing the candidate addresses with the addresses specified by the data structure;

storing, in the CAM device, each of the match clauses for which the candidate address does not match the address specified by the data structure; and

wherein identifying candidate addresses for the match clauses of each of the rules having a lower priority than the new rule comprises allocating respective CAM addresses to the match clauses, including obtaining each of the CAM addresses from either (i) a list of CAM addresses that correspond to unoccupied storage locations within the CAM device or (ii) a record of CAM addresses that correspond to storage locations already occupied by the match clauses of the rules having a lower priority than the new rule.

2. The method of claim 1 wherein generating the data structure comprises executing programmed instructions in a host processor, including instructions to write the data structure to a memory device coupled to the host processor.

3. The method of claim 2 wherein the memory device is distinct from the CAM device.

4. The method of claim 1 wherein the data structure comprises a list of rules ordered by priority and wherein recording a new rule having a specified priority in the data structure comprises inserting the new rule into the list of rules ahead of rules of lower priority.

5. The method of claim 1 wherein obtaining each of the CAM addresses comprises comparing a CAM address from the list of CAM addresses with a CAM address from the record of CAM addresses to determine which of the CAM addresses has a higher priority.

6. The method of claim 5 wherein allocating respective CAM addresses to the match clauses comprises, for each of the match clauses, allocating either the CAM address from the list of CAM addresses or the CAM address from the record of CAM addresses according to which of the CAM addresses has the higher priority.

7. The method of claim 1 further comprising constructing the record of CAM addresses that correspond to occupied storage locations based on the data structure.

8. The method of claim 1 wherein the data structure comprises the record of CAM addresses that correspond to occupied storage locations.

9. The method of claim 1 further comprising identifying a respective candidate storage location for each match clause of the new rule.

10. The method of claim 9 further comprising writing each match clause of the new rule to the CAM device at its respective candidate storage location.

11. The method of claim 1 wherein storing, in the CAM device, each match clause for which the candidate storage location does not match the specified storage location comprises writing each such match clause to the CAM device at its respective candidate storage location.

12. The method of claim 11 wherein writing each such match clause to the CAM device comprises writing each such match clause of the lowest priority rule before writing any such match clause of a rule having a higher priority than the lowest priority rule.

13. A system comprising:

a content addressable memory (CAM) device;

a storage device to store a data structure that specifies (i) a prioritized set of rules and (ii) addresses within the CAM device for one or more match clauses of each of the rules; and

a host processor coupled to the CAM device and the storage device, the host processor being programmed with one or more sequences of instructions which, when executed by the host processor, cause the host processor to:

record a new rule having a specified priority in the data structure;

identify candidate addresses within the CAM device for the one or more match clauses of each of the rules having a lower priority than the new rule;

compare the candidate addresses with the storage addresses specified by the data structure; and

store, in the CAM device, each match clause for which the candidate address does not match the specified address; and

wherein the instructions which cause the host processor to identify candidate storage locations for the match clauses of each of the rules having a lower priority than the new rule comprise instructions which, when executed by the host processor, cause the host processor to allocate respective CAM addresses to the match clauses, including obtaining each of the CAM addresses from either (i) a list of CAM addresses that correspond to unoccupied storage locations within the CAM device or (ii) a record of CAM addresses that correspond to storage locations already occupied by the match clauses of the rules having a lower priority than the new rule.

14. The system of claim 13 wherein the instructions which cause the host processor to obtain each of the CAM addresses comprise instructions which, when executed by the host processor, cause the host processor to compare a CAM address from the list of CAM addresses with a CAM address from the record of CAM addresses to determine which of the CAM addresses has a higher priority.

15. The system of claim 14 wherein the instructions which cause the processor to allocate respective CAM addresses to the match clauses comprise instructions which, when executed by the host processor, cause the host processor to allocate, for each of the match clauses, either the CAM address from the list of CAM addresses or the CAM address from the record of CAM addresses according to which of the CAM addresses has the higher priority.

16. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by a processing entity, causes the processing entity to:

generate a data structure that specifies (i) a prioritized set of rules and (ii) addresses within the CAM device for one or more match clauses of each of the rules;

record a new rule having a specified priority in the data structure;

identify candidate addresses within the CAM device for the one or more match clauses of each of the rules having a lower priority than the new rule;

compare the candidate storage addresses with the addresses specified by the data structure;

store, in the CAM device, each match clause for which the candidate address does not match the specified address; and

wherein the instructions which cause the processing entity to identify candidate storage locations for the match clauses of each of the rules having a lower priority than the new rule comprise instructions which, when executed by the processing entity, cause the processing entity to allocate respective CAM addresses to the match clauses, including obtaining each of the CAM addresses from either (i) a list of CAM addresses that correspond to unoccupied storage locations within the CAM device or (ii) a record of CAM addresses that correspond to storage locations already occupied by the match clauses of the rules having a lower priority than the new rule.

17. The computer readable storage medium of claim 16 wherein the instructions which cause the processing entity to obtain each of the CAM addresses comprise instructions which, when executed by the processing entity, cause the processing entity to compare a CAM address from the list of CAM addresses with a CAM address from the record of CAM addresses to determine which of the CAM addresses has a higher priority.

Assignments (11)
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER PREVIOUSLY RECORDED AT REEL: 047357 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048674/0834 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER PREVIOUSLY RECORDED ON REEL 047195 FRAME 0658. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047357/0302 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047195/0658 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
RELEASE OF SECURITY INTEREST Recorded Aug 30, 2011
From: SILICON VALLEY BANK
To: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
Reel/Frame 026830/0141 →
SECURITY AGREEMENT Recorded Jul 17, 2009
From: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
To: SILICON VALLEY BANK
Reel/Frame 022973/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2005
From: MATHUR, HARISH; SREENATH, SANJAY
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 016203/0715 →