← Back to Patent Explorer
US6725326B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Techniques for efficient memory management for longest prefix match problems

Assignee: Cisco Technology Inc
•
Filing: 2000-08-15
•
Granted: 2004-04-20
•
Expires: 2020-08-15
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Techniques for efficient memory management that enable rapid longest prefix match lookups in memory. In general, the present invention is efficacious wherever maintenance of a good distribution of holes in a sorted list is required. This technique relies on a proactive hole management methodology to preserve a good distribution of holes in each memory region in such a way that one does not have to search for holes in order to insert or store a new entry into the list. In particular, all holes in a given region are kept in one or more contiguous sub-region. Keeping the holes contiguous requires a hole move every time there is a delete operation. The amortized cost of these operations is justified by the resulting simplification in later insert (store) and delete operations. For example, during an insert the new entry is placed at the end of the contiguous sub-region of used entries in the region. During a delete, when a hole is created in the middle of a contiguous sub-region of used entries, the last used entry is moved into the hole, thus keeping the holes contiguous. Such an organization of holes and movement of used entries within a region is permissible within the longest prefix match type of lookup table, because all entries within a region, by definition, have an IP prefix of equal length.

Inventors

  • 👤 Abhijit Patra
  • 👤 Rina Panigrahy
  • 👤 Samar Sharma

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-24 13:16
CPC Classifications
H; H04; H04L; H04L45/00; H04L45/74; H04L45/745; H04L45/7453; G; G06; G06F; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; H04L49/00; H04L49/90

Claims Analysis

Total Claims: 45
Claim 1
Independent Claim 151 words
A method of memory management comprising the steps of: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 2
Independent Claim 151 words
A method of memory management comprising the steps of: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 3
Dependent Claim 28 words
The method of claim 1 , wherein said second designated region contains two said second sub-regions, each said second sub-region containing only holes and adjoining said first sub-region.
Claim 4
Dependent Claim 15 words
The method of claim 1 , wherein said memory comprises a content addressable memory (CAM).
Claim 5
Dependent Claim 16 words
The method of claim 1 , wherein said memory comprises a ternary content addressable memory (TCAM).
Claim 6
Dependent Claim 63 words
The method of claim 1 , wherein said equalizing further comprises: moving one of said used entries from an end of said first contiguous sub-region to a hole created by said deleting within said first contiguous sub-region; or adjusting the boundaries of said region to maintain a relatively equal distribution of holes in said region with respect to at least one adjoining region.
Claim 7
Dependent Claim 19 words
The method of claim 1 , wherein said first designated region is the contiguous region having the most holes.
Claim 8
Dependent Claim 53 words
The method of claim 1 , wherein said equalizing further comprises: computing the difference in number of said holes between each said contiguous region i and the next adjoining region ((i+1) modulo (the number of said plurality of contiguous regions)); and designating said first designated region based on having the most said difference.
Claim 9
Dependent Claim 185 words
The method of claim 1 , wherein said equalizing further comprises: further dividing said plurality of contiguous regions into a lower group and an upper group, wherein said first group consists of all contiguous regions from said lowest region up to and including said second designated region and said second group consists of all other regions; computing an average number of holes in said lower group and said upper group respectively; determining if said average number of holes in said lower group is larger than said average number of holes in said upper group, the result of said determining forming a first Boolean; next determining if the number of holes in said second designated region is larger than the number of holes in the next higher region; wherein said next higher region is said lowest region when said second designated region is said highest region, the result of said next determining forming a second Boolean; if said first Boolean is logically equal to said second Boolean, equalizing said second designated region; and incrementing said second designated region to point to said next higher contiguous region.
Claim 10
Dependent Claim 152 words
A computer system for memory management, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 11
Dependent Claim 152 words
A computer system for memory management, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 12
Dependent Claim 29 words
The computer system of claim 9 , wherein said second designated region contains two said second sub-regions, each said second sub-region containing only holes and adjoining said first sub-region.
Claim 13
Dependent Claim 16 words
The computer system of claim 9 , wherein said memory comprises a content addressable memory (CAM).
Claim 14
Dependent Claim 17 words
The computer system of claim 9 , wherein said memory comprises a ternary content addressable memory (TCAM).
Claim 15
Dependent Claim 64 words
The computer system of claim 9 , wherein said equalizing further comprises: moving one of said used entries from an end of said first contiguous sub-region to a hole created by said deleting within said first contiguous sub-region; or adjusting the boundaries of said region to maintain a relatively equal distribution of holes in said region with respect to at least one adjoining region.
Claim 16
Dependent Claim 20 words
The computer system of claim 9 , wherein said first designated region is the contiguous region having the most holes.
Claim 17
Dependent Claim 54 words
The computer system of claim 9 , wherein said equalizing further comprises: computing the difference in number of said holes between each said contiguous region i and the next adjoining region ((i+1) modulo (the number of said plurality of contiguous regions)); and designating said first designated region based on having the most said difference.
Claim 18
Dependent Claim 186 words
The computer system of claim 9 , wherein said equalizing further comprises: further dividing said plurality of contiguous regions into a lower group and an upper group, wherein said first group consists of all contiguous regions from said lowest region up to and including said second designated region and said second group consists of all other regions; computing an average number of holes in said lower group and said upper group respectively; determining if said average number of holes in said lower group is larger than said average number of holes in said upper group, the result of said determining forming a first Boolcan; next determining if the number of holes in said second designated region is larger than the number of holes in the next higher region; wherein said next higher region is said lowest region when said second designated region is said highest region, the result of said next determining forming a second Boolean; if said first Boolean is logically equal to said second Boolean, equalizing said second designated region; and incrementing said second designated region to point to said next higher contiguous region.
Claim 19
Dependent Claim 162 words
A computer system comprising a processor, a memory, and a network interface, said processor configured to perform the steps of: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 20
Dependent Claim 162 words
A computer system comprising a processor, a memory, and a network interface, said processor configured to perform the steps of: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 21
Dependent Claim 29 words
The computer system of claim 17 , wherein said second designated region contains two said second sub-regions, each said second sub-region containing only holes and adjoining said first sub-region.
Claim 22
Dependent Claim 16 words
The computer system of claim 17 , wherein said memory comprises a content addressable memory (CAM).
Claim 23
Dependent Claim 17 words
The computer system of claim 17 , wherein said memory comprises a ternary content addressable memory (TCAM).
Claim 24
Dependent Claim 64 words
The computer system of claim 17 , wherein said equalizing further comprises: moving one of said used entries from an end of said first contiguous sub-region to a hole created by said deleting within said first contiguous sub-region; or adjusting the boundaries of said region to maintain a relatively equal distribution of holes in said region with respect to at least one adjoining region.
Claim 25
Dependent Claim 20 words
The computer system of claim 17 , wherein said first designated region is the contiguous region having the most holes.
Claim 26
Dependent Claim 54 words
The computer system of claim 17 , wherein said equalizing further comprises: computing the difference in number of said holes between each said contiguous region i and the next adjoining region ((i+1) modulo (the number of said plurality of contiguous regions)); and designating said first designated region based on having the most said difference.
Claim 27
Dependent Claim 186 words
The computer system of claim 17 , wherein said equalizing further comprises: further dividing said plurality of contiguous regions into a lower group and an upper group, wherein said first group consists of all contiguous regions from said lowest region up to and including said second designated region and said second group consists of all other regions; computing an average number of holes in said lower group and said upper group respectively; determining if said average number of holes in said lower group is larger than said average number of holes in said upper group, the result of said determining forming a first Boolean; next determining if the number of holes in said second designated region is larger than the number of holes in the next higher region; wherein said next higher region is said lowest region when said second designated region is said highest region, the result of said next determining forming a second Boolean; if said first Boolean is logically equal to said second Boolean, equalizing said second designated region; and incrementing said second designated region to point to said next higher contiguous region.
Claim 28
Dependent Claim 150 words
A computer-readable storage medium, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 29
Dependent Claim 150 words
A computer-readable storage medium, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 30
Dependent Claim 30 words
The computer-readable storage medium of claim 25 , wherein said second designated region contains two said second sub-regions, each said second sub-region containing only holes and adjoining said first sub-region.
Claim 31
Dependent Claim 17 words
The computer-readable storage medium of claim 25 , wherein said memory comprises a content addressable memory (CAM).
Claim 32
Dependent Claim 18 words
The computer-readable storage medium of claim 25 , wherein said memory comprises a ternary content addressable memory (TCAM).
Claim 33
Dependent Claim 65 words
The computer-readable storage medium of claim 25 , wherein said equalizing further comprises: moving one of said used entries from an end of said first contiguous sub-region to a hole created by said deleting within said first contiguous sub-region; or adjusting the boundaries of said region to maintain a relatively equal distribution of holes in said region with respect to at least one adjoining region.
Claim 34
Dependent Claim 21 words
The computer-readable storage medium of claim 25 , wherein said first designated region is the contiguous region having the most holes.
Claim 35
Dependent Claim 55 words
The computer-readable storage medium of claim 25 , wherein said equalizing further comprises: computing the difference in number of said holes between each said contiguous region i and the next adjoining region ((i+1) modulo (the number of said plurality of contiguous regions)); and designating said first designated region based on having the most said difference.
Claim 36
Dependent Claim 187 words
The computer-readable storage medium of claim 25 , wherein said equalizing further comprises: further dividing said plurality of contiguous regions into a lower group and an upper group, wherein said first group consists of all contiguous regions from said lowest region up to and including said second designated region and said second group consists of all other regions; computing an average number of holes in said lower group and said upper group respectively; determining if said average number of holes in said lower group is larger than said average number of holes in said upper group, the result of said determining forming a first Boolean; next determining if the number of holes in said second designated region is larger than the number of holes in the next higher region; wherein said next higher region is said lowest region when said second designated region is said highest region, the result of said next determining forming a second Boolean; if said first Boolean is logically equal to said second Boolean, equalizing said second designated region; and incrementing said second designated region to point to said next higher contiguous region.
Claim 37
Dependent Claim 155 words
A computer data signal embodied in a carrier wave, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 38
Dependent Claim 155 words
A computer data signal embodied in a carrier wave, comprising computer instructions for: dividing a memory into a plurality of contiguous regions ordered from the lowest to the highest, each said region composed of a plurality of entries, wherein each said entry is either a used entry or a hole; iteratively: equalizing a first designated region to maintain all used entries in a first contiguous sub-region adjoining a second contiguous sub-region containing all holes; when commanded inserting a value in one of said entries in a second designated region, said second designated region being any one of said plurality of contiguous regions, wherein said inserting further comprises: if said second designated region lacks a hole, expanding said second designated region by moving one of said holes from an adjoining region; and writing said value in a hole in said second designated region; and deleting a used entry by converting said used entry into a hole.
Claim 39
Dependent Claim 30 words
The computer data signal of claim 33 , wherein said second designated region contains two said second sub-regions, each said second sub-region containing only holes and adjoining said first sub-region.
Claim 40
Dependent Claim 17 words
The computer data signal of claim 33 , wherein said memory comprises a content addressable memory (CAM).
Claim 41
Dependent Claim 18 words
The computer data signal of claim 33 , wherein said memory comprises a ternary content addressable memory (TCAM).
Claim 42
Dependent Claim 65 words
The computer data signal of claim 33 , wherein said equalizing further comprises: moving one of said used entries from an end of said first contiguous sub-region to a hole created by said deleting within said first contiguous sub-region; or adjusting the boundaries of said region to maintain a relatively equal distribution of holes in said region with respect to at least one adjoining region.
Claim 43
Dependent Claim 21 words
The computer data signal of claim 33 , wherein said first designated region is the contiguous region having the most holes.
Claim 44
Dependent Claim 55 words
The computer data signal of claim 33 , wherein said equalizing further comprises: computing the difference in number of said holes between each said contiguous region i and the next adjoining region ((i+1) modulo (the number of said plurality of contiguous regions)); and designating said first designated region based on having the most said difference.
Claim 45
Dependent Claim 187 words
The computer data signal of claim 33 , wherein said equalizing further comprises: further dividing said plurality of contiguous regions into a lower group and an upper group, wherein said first group consists of all contiguous regions from said lowest region up to and including said second designated region and said second group consists of all other regions; computing an average number of holes in said lower group and said upper group respectively; determining if said average number of holes in said lower group is larger than said average number of holes in said upper group, the result of said determining forming a first Boolean; next determining if the number of holes in said second designated region is larger than the number of holes in the next higher region; wherein said next higher region is said lowest region when said second designated region is said highest region, the result of said next determining forming a second Boolean; if said first Boolean is logically equal to said second Boolean, equalizing said second designated region; and incrementing said second designated region to point to said next higher contiguous region.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2007-04-20 2007-10-20 2008-04-20 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2011-04-20 2011-10-20 2012-04-20 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2015-04-20 2015-10-20 2016-04-20 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag