IP Library Granted Patent US 8,560,768
Granted Patent B2
US 8,560,768 · App. 12/952,050 · Granted Oct 15, 2013

Method and system for reducing entries in a content-addressable memory

Inventors: Arun Saha (Sunnyvale, CA); Bijendra Singh (Plano, TX)
Assignee: Fujitsu Limited
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,560,768
App. No.
12/952,050
Granted
Oct 15, 2013
Kind
B2
Abstract

A method for reducing memory entries in a ternary content-addressable memory may include determining if a first entry and a second entry are associated with the same data value. The method may also include determining if the first entry can be masked such that searching the memory with the content value of either of the first entry or the second entry returns the same data value. The method may further include, in response to determining that the first entry and a second entry are associated with the same data value and determining that the first entry can be masked such that addressing the memory with the content value of either of the first entry or the second entry returns the same data value: (i) masking the first entry such that addressing the memory with the content value of either of the first entry or the second entry returns the same data value; and (ii) deleting the second entry.

Claims (48)

1. A method for reducing memory entries in a ternary content-addressable memory, comprising:

determining if a first entry and a second entry of the ternary content-addressable memory include the same data value, each of the entries comprising an identifier, a mask associated with the identifier, and the data value associated with the identifier;

determining if the first entry can be masked such that searching the memory with the content value of either of the first entry or the second entry returns the same data value; and

in response to determining that the first entry and a second entry are associated with the same data value and determining that the first entry can be masked such that searching the memory with the content value of either of the first entry or the second entry returns the same data value:

masking the first entry such that searching the memory with the content value of either of the first entry or the second entry returns the same data value; and

deleting the second entry.

2. A method according to claim 1 , wherein:

determining if the first entry can be masked such that searching the memory with a content value of either of the first entry or the second entry returns the same data value comprises determining if, for a particular bit position of a content value and a mask of the first entry and a content value and a mask of the second entry:

a content value of a portion of the first entry of lesser significance than the particular bit position and a content value of a portion of the second entry of lesser significance than the particular bit position are equal to each other or each of such portion of the first entry and such portion of the second entry entirely comprise logical don't cares; and

a value of a bit at the particular bit position of the content value of the first entry is not equal to a value of a bit at the particular bit position of the content value of the second entry; and

a content value of a portion of the first entry of greater significance than the particular bit position and a content value of a portion of the second entry of greater significance than the particular bit position are equal to each other; and

masking the first entry such that searching the memory with the content value of either of the first entry or the second entry returns the same data value comprises setting a bit at the particular bit position of the mask of the first entry to mask a bit at the particular bit position of the content value of the first entry.

3. A method according to claim 2 , wherein the content value of the first entry and the content value of the second entry each comprise a virtual local area network identifier.

4. A method according to claim 1 , wherein the data value of the first entry and the data value of the second entry each identify a service.

5. A network element comprising:

one or more network interfaces, each network interface having one or more ports configured interface the network element to one or more other network elements; and

a switching element communicatively coupled to the one or more network interfaces, the switching element comprising:

a lookup table in the form of ternary content-addressable memory associating content values with respective data values; and

a processor communicatively coupled to the memory and configured to:

determine if a first entry and a second entry of the ternary content-addressable memory include the same data value, each of the entries comprising an identifier, a mask associated with the identifier, and the data value associated with the identifier;

determine if the first entry can be masked such that searching the lookup table with the content value of either of the first entry or the second entry returns the same data value; and

in response to determining that the first entry and a second entry are associated with the same data value and determining that the first entry can be masked such that addressing the memory with the content value of either of the first entry or the second entry returns the same data value:

masking the first entry such that addressing the lookup table with the content value of either of the first entry or the second entry returns the same data value; and

deleting the second entry.

6. A network element according to claim 5 , the processor further configured to:

in order to determine if the first entry can be masked such that searching the lookup table with a content value of either of the first entry or the second entry returns the same data value, determine if, for a particular bit position of a content value and a mask of the first entry and a content value and a mask of the second entry:

a content value of a portion of the first entry of lesser significance than the particular bit position and a content value of a portion of the second entry of lesser significance than the particular bit position are either equal to each other or each of such portion of the first entry and such portion of the second entry entirely comprise logical don't cares; and

a value of a bit at the particular bit position of the content value of the first entry is not equal to a value of a bit at the particular bit position of the content value of the second entry; and

a content value of a portion of the first entry of greater significance than the particular bit position and a content value of a portion of the second entry of greater significance than the particular bit position are equal to each other; and

in order to mask the first entry such that searching the lookup table with the content value of either of the first entry or the second entry returns the same data value, set a bit at the particular bit position of the mask of the first entry to mask a bit at the particular bit position of the content value of the first entry.

7. A network element according to claim 6 , wherein the content value of the first entry and the content value of the second entry each comprise a virtual local area network identifier.

8. A network element according to claim 5 , wherein the data value of the first entry and the data value of the second entry each identify a service.

9. A system comprising:

a ternary content-addressable memory associating content values with respective data values; and

a processor communicatively coupled to the memory and configured to:

determine if a first entry and a second entry of the ternary content-addressable memory include the same data value, each of the entries comprising an identifier, a mask associated with the identifier, and the data value associated with the identifier;

determine if the first entry can be masked such that searching the memory with the content value of either of the first entry or the second entry returns the same data value; and

in response to determining that the first entry and a second entry are associated with the same data value and determining that the first entry can be masked such that searching the memory with the content value of either of the first entry or the second entry returns the same data value:

masking the first entry such that addressing the memory with the content value of either of the first entry or the second entry returns the same data value; and

deleting the second entry.

10. A system according to claim 9 , the processor further configured to:

in order to determine if the first entry can be masked such that searching memory with a content value of either of the first entry or the second entry returns the same data value, determine if, for a particular bit position of a content value and a mask of the first entry and a content value and a mask of the second entry:

a content value of a portion of the first entry of lesser significance than the particular bit position and a content value of a portion of the second entry of lesser significance than the particular bit position are either equal to each other or each of such portion of the first entry and such portion of the second entry entirely comprise logical don't cares; and

a value of a bit at the particular bit position of the content value of the first entry is not equal to a value of a bit at the particular bit position of the content value of the second entry; and

a content value of a portion of the first entry of greater significance than the particular bit position and a content value of a portion of the second entry of greater significance than the particular bit position are equal to each other; and

in order to mask the first entry such that addressing the memory with the content value of either of the first entry or the second entry returns the same data value, set a bit at the particular bit position of the mask of the first entry to mask a bit at the particular bit position of the content value of the first entry.

11. A system according to claim 10 , wherein the content value of the first entry and the content value of the second entry each comprise a virtual local area network identifier.

12. A system according to claim 9 , wherein the data value of the first entry and the data value of the second entry each identify a service.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2011
From: FUJITSU NETWORK COMMUNICATIONS, INC.
To: FUJITSU LIMITED
Reel/Frame 026261/0854 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2010
From: SAHA, ARUN; SINGH, BIJENDRA
To: FUJITSU NETWORK COMMUNICATIONS, INC.
Reel/Frame 025394/0211 →
Continuity (1)
Related Publication 20120131299A1 · May 24, 2012