JP5948494B2 - 三値連想メモリにおけるクラスタへのレコードの動的配分 - Google Patents

三値連想メモリにおけるクラスタへのレコードの動的配分 Download PDF

Info

Publication number
JP5948494B2
JP5948494B2 JP2015511873A JP2015511873A JP5948494B2 JP 5948494 B2 JP5948494 B2 JP 5948494B2 JP 2015511873 A JP2015511873 A JP 2015511873A JP 2015511873 A JP2015511873 A JP 2015511873A JP 5948494 B2 JP5948494 B2 JP 5948494B2
Authority
JP
Japan
Prior art keywords
cluster
records
type
empty
allocated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015511873A
Other languages
English (en)
Other versions
JP2015519660A (ja
Inventor
コクタン,トビー・ジェイ
Original Assignee
アルカテル−ルーセント
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アルカテル−ルーセント filed Critical アルカテル−ルーセント
Publication of JP2015519660A publication Critical patent/JP2015519660A/ja
Application granted granted Critical
Publication of JP5948494B2 publication Critical patent/JP5948494B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、三値連想メモリ(TCAM)におけるレコードの配分に関し、詳しくは、クラスタにおけるそのようなレコードの動的配分に関する。
TCAMハードウェアデバイスは、今日の高性能通信システムにおいて、高速ルーティングルックアップおよびパケット分類のために、普通に用いられている。TCAMサーチは、入ってくるパケットのヘッダと、転送テーブルまたは分類データベースにおけるすべてのエントリとを並列的に比較する。ルックアップの結果は、TCAMにおけるレコード位置およびレコードの個数とは無関係に、一定のレイテンシと共に戻される。
IPv4/v6でのルーティングルックアップの場合、エントリは、最長プレフィックス一致(LPM)を保証するために、転送テーブルにおけるアドレスプレフィックス長に基づいて、ソートされる。ルーティングルックアップエントリの追加および削除の下で、TCAMにおいてエントリをソートされた状態に維持することは時間を消費する動作であり、最悪の場合には、Nを、例えばIPv4では32でありIPv6では128である、転送テーブルにおけるプレフィックスの個数とすると、N回のメモリシフト(削除および再書き込み)動作を必要とし得る。TCAMのエントリをそのようにソートされた状態に維持することは、通信トラフィックのデータ経路転送を遅延させる可能性があり、システムのCPU資源に対する持続的な負荷の原因となる可能性もあり、これは、システム性能低下などの問題を生じさせる潜在性を有する。性能低下の危険性は、バルクルーティング更新の間に特に高い。
TCAMにおけるレコードを固定サイズのクラスタに配分することが、知られている。なお、以後本明細書では、クラスタをブロックとも称する。しかし、適切な初期のデフォルトのブロックサイズを選択するのは、困難な場合があり得る。例えば、初期ブロックサイズが特定のアプリケーションにとって小さすぎると、あるブロックがいっぱいになってしまった後でそのブロックにすべての新たなエントリを追加することは、それぞれの新たなエントリを挿入するために移動動作が必要になるために、CPU資源に過剰な負担をかけることになり得る。更に、複数の異なるマーケットおよびアプリケーションに向けて設計されているシステムは、IPルート分布に関する要件が異なることがあり得るのであって、これは、ルートのプレフィックス長ごとに、適切な「1サイズですべてに適合する」デフォルトのブロックサイズを決めるのは困難であることを意味し得る。更に、例えば、多くのルーティングテーブルがネットワークにおける大きな変更に起因して追加/削除を行うように、バルクルーティング更新が存在する期間の間には、結果的に生じる余分な処理は、ルートテーブルが大きくなり、それぞれのIPアドレスのプレフィックス長と関連する複数のブロックが容量に近づき容量に達する場合には、CPU資源および時間を要するものとなり得る。
従って、TCAMにおけるブロックの中にレコードを動的に配分するための効率的なアプローチが求められている。
本発明の一態様によると、最長のプレフィックス一致のためのTCAMが提供される。このTCAMは:複数のレコードを含んでおり、それら複数のレコードの一部は、各クラスタがそれぞれのIPアドレスのプレフィックス長に対応する1つまたは複数のアドレスクラスタとなるように構成されており、別の一部は、どのIPアドレスのプレフィックス長にも対応しない自由空間クラスタとなるように構成されている。
本発明の別の態様によると、TCAMにおけるクラスタに、レコードを動的に配分する方法が提供される。この方法は:それぞれの数のレコードを第1のタイプの複数のクラスタのそれぞれに配分するステップと、ある数の空レコードを第2のタイプのクラスタに配分するステップと、第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数をモニタするステップと、第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第1のしきい値とを比較するステップと、第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第1のしきい値よりも大きい場合には、増加させるステップと、を含む。
本発明の更に別の態様によると、TCAMにおけるクラスタに、レコードを動的に配分するように構成されている装置が提供される。この装置は:TCAMと、メモリと、TCAMおよびメモリと通信するプロセッサとを含む。このメモリは、ソフトウェアプログラムを用いて構成されており、このソフトウェアプログラムは、プロセッサによって実行されると、この装置に:それぞれの数のレコードを第1のタイプの複数のクラスタのそれぞれに配分すること、ある数の空レコードを第2のタイプのクラスタに配分し、第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数をモニタすること、第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第1のしきい値とを比較すること、および、第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第1のしきい値よりも大きい場合には、増加させること、という動作をさせることが可能な命令を含む。
追加的にまたは代替的には、本発明のいくつかの実施形態では、それぞれの数のレコードを第1のタイプの複数のクラスタのそれぞれに配分するステップが、各前記クラスタを、それぞれのインターネットアドレスのプレフィックス長と関連させるステップを含む。
追加的にまたは代替的には、本発明のいくつかの実施形態では、ある数の空レコードを第2のタイプのクラスタに配分するステップが、第2のタイプの前記クラスタを、それに配分されているレコードが空のままである自由クラスタと関連させるステップを含む。
追加的にまたは代替的には、本発明のいくつかの実施形態では、比較するステップが、空でないレコードのそれぞれの個数と、第1のタイプのクラスタに配分されているレコードのそれぞれの個数のそれぞれの第1のパーセンテージであるそれぞれの第1のしきい値とを比較するステップを含む。更に、いくつかの実施形態では、比較するステップが、第1のタイプのクラスタと関連するそれぞれのインターネットアドレスのプレフィックス長に従ってそれぞれの第1のパーセンテージを決定するステップを更に含む。
追加的にまたは代替的には、本発明のいくつかの実施形態では、増加させるステップが:第2のタイプのクラスタに配分されているレコードの個数を、レコードの第1の個数だけデクリメントするステップと、第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、レコードの第1の個数だけインクリメントするステップとを含む。
追加的にまたは代替的に、本発明のいくつかの実施形態は:第2のタイプのクラスタに配分されている空レコードの個数をモニタするステップと、空レコードの個数と第2のしきい値とを比較するステップと、空レコードの個数が第2のしきい値よりも小さい場合には、第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップとを更に含む。更に、本発明のいくつかの実施形態において、第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップが:第1のタイプの1つまたは複数のクラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第3のしきい値とを比較するステップと、第1のタイプの特定のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第3のしきい値よりも小さい場合には、レコードの第2の個数だけ減少させるステップと、第2のタイプのクラスタに配分されている空レコードの個数を、レコードの第2の個数だけ増加させるステップとを含む。更に、本発明のいくつかの実施形態は:第2のタイプのクラスタに配分されている空レコードの個数をモニタするステップと、空レコードの個数と、第2のしきい値とを比較するステップと、第2のタイプのクラスタに配分されている空レコードの個数が第2のしきい値よりも大きいまたは第2のしきい値と等しくなるまで、第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップとを反復するステップを更に含む。
有利であることに、本発明のいくつかの実施形態は、大容量でありスケーリングされたIPルーティングネットワーキング製品に対して、改善されたパフォーマンスを提供する。
有利であることに、本発明のいくつかの実施形態は、これらの実施形態が、特定の要件に基づく要求がある場合にTCAMのクラスタを成長/縮小することを可能にするという点で、ルートのプレフィックス長ごとに、適切な「1サイズですべてに適合する」デフォルトのブロックサイズを決めるのは困難であるという問題を改善する。いくつかの場合には、新たなルートが認識されたときには、新たなレコードを、どのような移動動作も伴わずに、TCAMの中に挿入することができる場合がある。
有利であることに、本発明のいくつかの実施形態は、この実施形態を用いるルーティングシステムによって新たなルーティングエントリが認識される時点でTCAMのエントリを更新されソートされた状態に維持しよう試みるのとは対照的に、上述した方法のステップのいくつかまたはすべてをバックグラウンドのプロセスで実行することにより、アイドル状態の中央演算装置(CPU)資源を用いることがあり得る。
有利であることに、本発明のいくつかの実施形態は、ルーティングシステムにおいて用いられるときに、全体的な平均ルート追加時間を縮小することによって、例えば主要なネットワーク変更に起因するバルクルート更新の間に決定的に必要とされ得る処理資源を解放する。
本発明の上述したおよび他の目的、特徴および効果は、次の添付の図面において図解されている好適な実施形態に関する以下のより詳細な説明から明らかになるであろう。
本発明の第1の実施形態による、TCAMにおけるクラスタにレコードを動的に配分する方法を示す図である。 図1に示されている方法の実装の結果として得られるTCAMにおけるクラスタへのレコードの配分を示す図である。 本発明の第1の実施形態により図2のTCAM上で実行されている動的なクラスタ成長動作を示す図である。 本発明の第1の実施形態により図2のTCAM上で実行されている動的なクラスタ縮小動作を示す図である。 本発明の第2の実施形態による図1に示されている方法を実行するための装置を示す図である。
図においては、同様の特徴は同様の参照記号によって示されている。
本発明の実施形態は、ソフトウェアプロセスをサイズ変更するTCAMのIPv4/IPv6のLPM動的クラスタにおいて、用いられ得る。よって、プレフィックス長に基づくIPv4/v6のレコードクラスタは、TCAMのメモリ空間の一部にわたるパーティションとして作製される。クラスタ自体のデフォルトのサイズは、いくつかのサンプルルータ配備に関する情報データベースを転送する際の典型的なルート分布に基づいて画定される。このデフォルトのサイズ画定は、クラスタがいっぱいになる可能性を、減少させるが、ゼロにすることはない。なお、クラスタがいっぱいになるとは、すなわち、新たなレコードを追加/挿入する空間が全く残っていない、ということである。クラスタは、クラスタの端部に、空レコードという形態で自由空間を有するように維持される。プレフィックス長のクラスタではレコードに関する順序従属性が存在しないから、クラスタに自由空間が存在する限り、新たなレコードエントリを、どのような移動動作もなしで、単純かつ瞬時にプログラムすることが可能であり、よって、そのレコードのための高速な挿入時間が提供される。
クラスタの動的なサイズ変更プロセスは、通信ネットワークに配備されるルーティングシステムの定常状態動作の間にかなりの数が存在し得るCPUのアイドル期間の間に、バックグラウンドでのソフトウェアプロセスとして、実行され得る。アイドル期間の間のこの利用可能なCPU時間の一部を奪い返し、TCAMのLPMソーティングおよび動的サイズ変更動作のためにそれを用いることにより、CPU資源を効率的に用いることになる。利用可能なCPUのアイドル時間の例外は、典型的には、通信サービスの高度な利用可能性のためにトラフィックフローのルーティングを変更するバルクルート更新など大規模なネットワークイベントの間に加えて、システムのブートアップおよび初期設定の間に生じる。
TCAMにおける配備とそれに関連するルート分布とは異なるのが典型的であるから、どのクラスタがいっぱいになり得るのかを予測し、余分の空間を要求するのは、困難である。TCAMのアドレス空間の端部に、本明細書で「自由空間」クラスタと称される(自由クラスタおよび空のクラスタとも称される)ものを取っておくことにより、そのフォルトのクラスタサイズの限度に近づいているどのようなクラスタでも成長させるための余地が存在することになる。自由空間クラスタのサイズは、TCAMの全容量の例えば10%であり得る。逆に、サイズが大きすぎるためにTCAMの空間を非効率的に用いている可能性があるクラスタを、空のクラスタ空間(すなわち、空のまたは用いられていないレコード)の一部を自由空間クラスタに移動させることによって、縮小させることが可能であり、それによって、他のクラスタを成長させる際に用いるための空間を必要に応じて取り戻すことができる。
動的クラスタサイズ変更プロセスの一部として、バックグラウンドでのソフトウェアプロセスが周期的に動作して、容量に近づいているクラスタを検出し、必要に応じてサイズを動的に増加させ、十分に用いられていない大きなクラスタについてはサイズを減少させるプロセスを呼び出す。このプロセスは、バックグラウンドで、いっぱいになりつつある(例えば、配分されているそのレコードサイズの75%を超えている)クラスタを検出して、例えば新たなルート更新を行わなければならないときには、そのようなクラスタのサイズを動的に増加させ、それらのクラスタが新たなエントリを追加する十分な自由空間を有することを保証するプロセスを始動し得る。
ルートテーブルがいっぱいに満たされているときは別にして、新たなルートを認識/計算するプロセスは、それらのルートがダウンロードされる前に高速の挿入が可能になるようにTCAMを再編成する機会をソフトウェアに与えるようなペースであることが多い。ルーティング更新のバッチがすべて一度に到来することにより、アイドル状態のCPUサイクルが利用可能になる前にクラスタを満たしてしまう場合には、ソフトウェアプロセスは、いつかしばらく後にクラスタに空間を追加して、このクラスタへの将来の追加がエントリの移動を必要としなくなるようにすることによって、いっぱいであるクラスタの状況を救済するであろう。このプロセスは、自由空間に空いている場所を請求し、サイズを増加させる必要があるクラスタに到達するまで、すべてのレコードのシフトダウンを開始させる。最悪の場合のシナリオは、最大回数の移動動作を結果的に生じ得る/32または/128(それぞれ、IPv4またはIPv6)クラスタを成長させてしまうことであろう。しかし、バルク更新期間の外では、利用可能な多くの自由CPUサイクルが存在するのが典型的である。必要な場合には、TCAMを再編成する作業を、そうでなければアイドル状態であり得るCPU処理サイクルを利用することで、小さな動作に分割することが可能である。
動的クラスタサイズ変更プロセスの別の機能は、そのサイズがTCAMサイズ全体の一定の予め選択されたパーセンテージ(例えば、10%)に留まることを保証するために、自由空間クラスタにおける空レコードの個数(自由空間)をモニタすることである。従って、クラスタ成長動作が生じると直ちに、用いられていないクラスタ空間の返還を求め、必要に応じて他のクラスタの成長に用いるための自由空間クラスタにそれを取り戻すために、1つまたは複数の縮小動作が呼び出され得る。そのようなクラスタ縮小動作のための例示的な規準には:クラスタの用いられていない空間が512個のレコードよりも大きいこと、25%よりも少ないクラスタが用いられていること、または、クラスタが、他のクラスタと比較して、最小の回数の先行する縮小動作に関係していること(ただし、自由空間クラスタは除外する)が含まれる。後者の規準は、サイズが大きすぎるすべてのクラスタの均一な縮小を提供することを目的としている。
いくつかのTCAMアプリケーションにおいては、クラスタ成長/縮小動作は、特に、特定の配備のルート分布が時間経過と共に劇的に変化する可能性がないときに、数回生じ得るだけである。動的クラスタサイズ変更プロセスは、TCAMレコード配分を顧客のルートテーブル分布に調整するために、バックグラウンドで働くので、重要なネットワーク更新の期間の間に時間のかかるTCAMエントリ移動動作が生じる可能性が、低下する。更に、動的クラスタサイズ変更プロセスは、データ経路の中への可能性のある最速の(すなわち、レコードの移動のない)更新を保証することにより、TCAMのパフォーマンス向上を助け、ルータの動作を通じてTCAMデバイスの中への全体的な平均ルートレコード挿入時間を短縮するはずである。
動的クラスタサイズ変更プロセスの実装は、2つの別個の機能を含み得るのであって、これらは、すなわち、TCAMにおけるクラスタのサイズを成長させるまたは増加させるのに用いられる第1の機能と、TCAMにおけるクラスタのサイズを縮小させるまたは減少させるのに用いられる第2の機能とである。第1の機能は、本明細書において「GrowIPClusterUpIntoAdjacentFreeSpace」と称され、他方で、第2の機能は、本明細書において「GrowIPClusterDownIntoAdjacentFreeSpace」と称される。
次の例では、これらの機能がどのように用いられるかを、例証する。動的クラスタサイズ変更プロセスによって、プレフィックス長=Nを有するクラスタのための量Xのレコードの動的クラスタ成長動作が要求されている、と仮定する。このプロセスは、以下のステップを実行し得る:
1)自由空間クラスタのTCAMアドレス空間のトップ(すなわち、最高アドレス)における自由空間クラスタの中に、/0プレフィックスクラスタをX個のレコードだけ低い方へ成長させる。
2)次に、TCAMアドレス空間におけるクラスタ1,2,・・・,Nの上で、一度に1つのクラスタだけ高い方向(プレフィックス長において1つ高い位置)に連続的に移動させ、GrowIPClusterDownIntoAdjacentFreeSpaceを用いて、そのクラスタをX個のレコードだけ低い方向に成長させる。なお、クラスタを下方向に成長させることは、所与のクラスタのトップにおいてエントリを下方向にロールすることにより、次に高いクラスタ(プレフィックス長において1つ高い)において自由空間を生成することを含む。移動されるエントリの個数を減少させるには、エントリがシフトダウンされるのではなく、もっとも、これには、たとえ1つのレコードだけシフトするためであっても、すべてのエントリを1つの位置だけ移動させることが要求されるのであるが、その代わりに、所望の量の自由空間を生じさせるのに必要であるだけの個数のエントリが、所与のクラスタのトップ(最高アドレス)におけるそれらの位置から、そのクラスタのボトム(最低アドレス)におけるエントリと隣接する位置まで、直接に移動されることに注意すべきである。アドレスプレフィックスはクラスタの内部でソートされていないため、より低い効率となり得る単なるエントリのシフトではなく、このような態様でエントリをロールすることを、必要に応じてエントリを移動させるために、用いることが可能である。
この最終的な結果は、TCAMのクラスタ全体にわたりLPM編成を維持しながら、自由空間のX個のレコードが、いまでは、クラスタNに転送されているということである。
次の例では、これらの機能がどのように用いられるか、更に例証している。動的クラスタサイズ変更プロセスにより、プレフィックス長=Nを有するクラスタのための量Xのレコードの動的クラスタ縮小動作が要求されている、と仮定する。このプロセスは、次のステップを実行し得る:
1)クラスタ=Nで開始し、そのクラスタを、GrowIPClusterUpIntoAdjacentFreeSpaceを用いて、上方向にX個のレコードだけ成長させる。
2)次に、TCAMのアドレス空間において、一度に1つのクラスタだけ下方向に連続的に移動させ(すなわち、プレフィックス長を減少させる)、/0クラスタに到達するまで、GrowIPClusterUpIntoAdjacentFreeSpaceを用いて、そのクラスタをX個のレコードだけ上方向に成長させる。なお、クラスタを上方向に成長させることには、エントリを、クラスタのボトム(すなわち、最低アドレス)からクラスタのトップ(すなわち、最高アドレス)までロールすることが含まれ、これにより、現在のクラスタよりも下にあるクラスタにおける空間が解放される。
3)最後に、自由空間クラスタを/0クラスタの中へ上方向に成長させることにより、空間Xのブロックを、自由空間の中に転送して戻す。
この最終的な結果は、クラスタNからの自由空間のX個のレコードが、自由空間クラスタに転送して戻されたということであり、これが、必要に応じて他のクラスタのサイズを増加させるために、将来において用いられ得る。
図1は、本発明の第1の実施形態により、TCAMにおいてレコードをクラスタに動的に配分する方法100を示している。一般に、TCAMは、それぞれがIPアドレスのプレフィックス長に対応する複数のアドレスクラスタと、1つの自由クラスタとに区分される。この方法は、TCAMにおいて、それぞれの数のレコードをアドレスクラスタ(1からN)のそれぞれに配分する(102)ことによって、開始する。方法100の実行は、ある数のレコードを自由クラスタに配分する(104)ことによって、継続する。なお、自由クラスタは、アドレスクラスタの1つではない。これら最初の2つの配分ステップ102、104は、上述した区分けを生じさせるように、任意の順序で行うことが可能である。典型的には、各アドレスクラスタに配分されるレコードの個数は、TCAMが用いられるアプリケーションに応じて変動する。自由クラスタに配分されるレコードの個数は、典型的には、TCAM上のレコードにおける容量の10%であり得るが、この量もまた、TCAMの意図されている使用に応じて変動し得る。TCAMの例示的な構成は、図2を参照しながら、より詳細に、後述する。
方法100は、アドレスクラスタ(例えば、1からNの範囲にあるX)を選択して(106)、一連のステップを開始することにより、継続する。なお、これら一連のステップは、実際はTCAMにおけるクラスタへのレコードの再配分および調整である動的配分を達成するために、反復的に実行される。この方法は、選択されたアドレスクラスタXにおける空ではないレコードの個数を判断する(108)ことによって、継続する。空でないレコードとは、その中に、IPアドレスプレフィックスなどのエントリを有しているものである。方法100は、選択されたアドレスクラスタXにおける空でないレコードの個数が、選択されたアドレスクラスタXの上限しきい値よりも大きいかどうかを判断する(110)ことに進み、大きい場合には、選択されたアドレスクラスタXに配分されているレコードの個数を、増加させる(110)。例示的な上限しきい値は、選択されているアドレスクラスタXに配分されているレコードの75%である。方法100は、自由クラスタにおける空レコードの個数を判断する(112)ことによって、継続する。空レコードとは、その中にエントリを全く含まないレコードである。方法100は、自由クラスタにおける空レコードの個数が自由しきい値よりも小さいかどうかを判断する(114)ことに進み、小さい場合には、余分な配分を有するアドレスクラスタに配分されているレコードの個数を、ある量(Y)だけ減少させ(114)、自由クラスタへのレコードの配分を同じ量Yだけ増加(114)させる。例示的な自由しきい値は、TCAMにおけるレコードの10%、すなわち、TCAMの全体のサイズの10%である。例示的な量Yのレコードは512個のレコードであるが、この量は、TCAMが配備されることになる意図されているアプリケーションに応じて変動し得る。方法100は、Xの代わりに新たな値を設定することによって別のアドレスクラスタを選択し(116)、選択されたアドレスクラスタXにおける空でないレコードの個数を判断する(108)ことで開始する上述のステップを反復することによって、継続する。
図2は、図1に示されている方法の実装例の結果として生じる、TCAM200におけるレコードのクラスタへの配分を示している。TCAMのアドレスクラスタは、降順のプレフィックス長によって、ソートされている。これ以後は、アドレスクラスタの命名は、/#というパターンに従う。なお、ここで、#は、そのアドレスクラスタに格納されることになるアドレスプレフィックスにおけるビット数を示す。IPv4の場合の最大プレフィックス長は32ビットであり、その長さのプレフィックスが/32のアドレスクラスタ202に格納されるのであるが、このアドレスクラスタ202には、4K(4096)個のレコードが配分されている。同様に、31ビットのIPアドレスプレフィックスを格納するための/31のアドレスクラスタ204には、4K個のレコードが配分されている。/30のアドレスクラスタにも、4K個のレコードが割り当てられているが、以下を含むものとして、更に詳細に示されている:すなわち、TCAMサーチキー(レコードM)206、TCAMサーチキー(レコードM+1)208、TCAMサーチキー(レコードM+2)210、TCAMの空レコード(レコードM+3)212、自由空間(空レコード)214、およびTCAMの空レコード(レコードM+4K)216が含まれる。TCAM200は、また、以下を含む:すなわち、1クラスタ当たり4K個のレコードを有する/29から/25のアドレスクラスタ218、8K(8192)個のレコードを有する/24のアドレスクラスタ220、4K個のレコードを有する/23のアドレスクラスタ222、4K個のレコードを有する/22のアドレスクラスタ224、1クラスタ当たり1K個から4K個までのいずれかのレコードを有する/21から/17のアドレスクラスタ226、4K個のレコードを有する/16のアドレスクラスタ228、256個のレコードを有する/15のアドレスクラスタ230、1クラスタ当たり4個から256個の範囲のレコードが配分されている/14から/2クラスタ232、4個のレコードを有する/1のアドレスクラスタ234、および256個のレコードを有する/0のアドレスクラスタ236が含まれる。TCAM200はまた、配分されているTCAMレコード全体の10%を有する自由空間クラスタ238を含み、これは、必要に応じてアドレスクラスタ202から236を動的に成長させるために用いられる。
図3は、本発明の第1の実施形態によって図2のTCAM200の/24アドレスクラスタ220上で実行されている動的クラスタ成長動作300を示している。成長動作300は、500個の空レコードを/24アドレスクラスタ220に追加することにより、そのクラスタに配分されているレコードの総数を増加させる。/24アドレスクラスタ220は、より詳細には、使用中の(すなわち、空ではない)レコード220aと空レコード220bとを含むものとして示されており、後者は、100個のレコードが存在している。同様に、/1アドレスクラスタ234が、より詳細に、使用中のレコード234aと空レコード234bとを含むものとして示されており、後者は、10個のレコードが存在している。同じように、/0アドレスクラスタ236が、より詳細に、使用中のレコード236aと空レコード236bとを含むものとして示されており、後者は、10個のレコードが存在している。自由空間クラスタ238は、それに配分されているTCAMレコード全体の10%を有するが、ここでは、転送情報ベース(FIB)の10%として示されている。
動的クラスタ成長動作300の第1のステップは、/0アドレスクラスタ236に配分されているレコードの個数を、500個の空レコードだけ増加させ(302)、それにより、そのクラスタにおける空レコード236bの総数を、510個とすることである。これらの500個のレコードは、自由空間クラスタ238のトップ(最高アドレス)における自由空間クラスタ238から得られる。/0アドレスクラスタ236における空でない(すなわち、使用中の/占有中の)レコード236aは、「GrowIPClusterDownIntoAdjacentFreeSpace」機能に関する説明との関係で既に述べた態様で、/0アドレスクラスタ236のトップからロールダウンされ(304)、それによって、/1アドレスクラスタ234における空レコード234bの個数を、510個に増加させる(306)。/1アドレスクラスタ234における空でないレコード234aは、/0アドレスクラスタ236における空でないレコード236aに関してなされたのと同じ態様で、/1アドレスクラスタ236のトップからロールダウンされる(308)。/0および/1アドレスクラスタ236、234に対して実行されたばかりの動作と同様のロールダウン動作312が、/2から/23クラスタ232−222に対して実行され、それにより、500個の空レコードが、/24アドレスクラスタ220の空レコード220bに追加される。最終的な結果は、/24アドレスクラスタ220における空レコード220bの個数が、100個のレコードから600個のレコードに増加したということであり、これは、/24アドレスクラスタ220に配分されているレコードが500個増加したことを表す。
図4は、本発明の第1の実施形態によって図2のTCAM200の/16アドレスクラスタ228上で実行されている動的クラスタ縮小動作400を示している。縮小動作400は、128個の空レコードを/16アドレスクラスタ228から除去することにより、そのクラスタに配分されているレコードの総数を減少させる。/16アドレスクラスタ228は、より詳細に、使用中のレコード228aと空レコード228bとを含むものとして示されており、後者は、3128個のレコードが存在している。同様に、/1アドレスクラスタ234が、より詳細に、使用中のレコード234aと空レコード234bとを含むものとして示されており、後者は、10個のレコードが存在している。同じように、/0アドレスクラスタ236が、より詳細に、使用中のレコード236aと空レコード236bとを含むものとして示されており、後者は、10個のレコードが存在している。自由空間クラスタ238は、それに配分されているTCAMレコード全体の10%よりもわずかに少ないものを有するが、ここでは、転送情報ベース(FIB)の10%未満として示されている。
動的クラスタ縮小動作400の第1のステップは、/16アドレスクラスタ228に配分されているレコードの個数を、128個の空レコードだけ減少させる(402)ことであり、それによって、そのクラスタにおける空レコード228bの総数が3000個となる。これは、「GrowIPClusterUpIntoAdjacentFreeSpace」機能に関する説明との関係で既に述べた態様で、/15から/2までのアドレスクラスタ230−232において、一度に1クラスタについて、128個のTCAMレコード位置だけ、空でないレコードを連続的にロールアップすることによって行われ、それによって、/1アドレスクラスタ234における空レコード234bの個数を、138個のレコードに増加させる(404)。/0アドレスクラスタ236における空でないレコード236aは、「GrowIPClusterUpIntoAdjacentFreeSpace」機能に関する説明との関係で既に述べた態様で、/0アドレスクラスタ236のトップからロールアップされ(408)、それによって、/1アドレスクラスタ234における空レコード234bの個数を、10個のレコードまで減少させる(406)。/0アドレスクラスタ236における空レコード236bは、この時点では、138個のレコードである。最後に、自由空間クラスタ238に配分されているレコードの個数が、/0アドレスクラスタ236のボトム(最低アドレス)から得られた128個の空レコードだけ増加され、それによって、自由空間クラスタ238に、TCAM200におけるレコードの総数の約10%に等しい個数のレコードが、配分されることになる。
図5は、本発明の第2の実施形態による、図1に示されている方法を実行するための装置500を示している。例えば、装置500は、ルータであり得る。この装置は、プロセッサ502と、プロセッサ502と通信するメモリ504と、プロセッサ502と通信する入力/出力(I/O)ポート506と、プロセッサ502とやはり通信するTCAM508とを含む。メモリは、命令を有するプログラム510を含んでおり、この命令は、プロセッサによって実行されると、方法200と、上述した関連の動的クラスタ成長および縮小動作300、400とをTCAM508上で実行させる。プロセッサ502は、TCAM508と共に、装置500がI/Oポート506を経由して通信されるデータパケットトラフィック512に対してLPM動作を行うことを可能にする。
本発明の範囲から逸脱することなく、多数の修正、変更および改変を、以上に記載されている本発明の実施形態に対して、行うことができる。なお、本発明の範囲は、特許請求の範囲において定義されている。

Claims (13)

  1. 三値連想メモリ(TCAM)における複数のクラスタに、レコードを動的に配分する方法であって、
    ある数のレコードを第1のタイプの複数のクラスタのそれぞれに配分するステップと、
    ある数の空レコードを第2のタイプのクラスタに配分するステップと、
    第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数をモニタするステップと、
    第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第1のしきい値とを比較するステップと、
    第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第1のしきい値よりも大きいときには、第2のタイプのクラスタに配分されているレコードの個数を、第1の個数だけデクリメントすることにより、および、第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、第1の個数だけインクリメントすることにより、繰り返し空でないレコードを漸進的にロールダウンすることにより、増加させるステップと、
    を含む、方法。
  2. ある数のレコードを第1のタイプの複数のクラスタのそれぞれに配分するステップが、各前記クラスタを、それぞれのインターネットアドレスのプレフィックス長と関連させるステップを更に含む、請求項1に記載の方法。
  3. ある数の空レコードを第2のタイプのクラスタに配分するステップが、第2のタイプの前記クラスタを、それに配分されているレコードが空のままである自由空間クラスタと関連させるステップを更に含む、請求項1から2のいずれか一項に記載の方法。
  4. 比較するステップが、空でないレコードのそれぞれの個数と、第1のタイプのクラスタのそれぞれの容量のそれぞれの第1のパーセンテージであるそれぞれの第1のしきい値とを比較するステップを更に含む、請求項2に記載の方法。
  5. 比較するステップが、第1のタイプのクラスタと関連するそれぞれのインターネットアドレスのプレフィックス長に従ってそれぞれの第1のパーセンテージを決定するステップを更に含む、請求項4に記載の方法。
  6. 第2のタイプのクラスタに配分されている空レコードの個数をモニタするステップと、
    空レコードの個数と第2のしきい値とを比較するステップと、
    空レコードの個数が第2のしきい値よりも小さい場合には、第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップと、
    を更に含む、請求項1から5のいずれか一項に記載の方法。
  7. 第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップが、
    第1のタイプの1つまたは複数のクラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第3のしきい値とを比較するステップと、
    第1のタイプの特定のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第3のしきい値よりも小さい場合には、第2の個数だけ減少させるステップと、
    第2のタイプのクラスタに配分されている空レコードの個数を、第2の個数だけ増加させるステップと、
    更に含む、請求項に記載の方法。
  8. 第2のタイプのクラスタに配分されている空レコードの個数をモニタするステップと、
    空レコードの個数と、第2のしきい値とを比較するステップと、
    第2のタイプのクラスタに配分されている空レコードの個数が第2のしきい値よりも大きいまたは第2のしきい値と等しくなるまで、第2のタイプのクラスタに配分されている空レコードの個数を増加させるステップと、
    を反復するステップを更に含む、請求項に記載の方法。
  9. 三値連想メモリ(TCAM)における複数のクラスタに、レコードを動的に配分するように構成されている装置であって、
    TCAMと、
    メモリと、
    TCAMおよびメモリと通信するプロセッサと、
    を備えており、プロセッサによって実行されると、この装置を、
    ある数のレコードを第1のタイプの複数のクラスタのそれぞれに配分し、
    ある数の空レコードを第2のタイプのクラスタに配分し、
    第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数をモニタし、
    第1のタイプの各クラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第1のしきい値とを比較し、
    第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第1のしきい値よりも大きいときには、第2のタイプのクラスタに配分されているレコードの個数を、第1の個数だけデクリメントすることにより、および、第1のタイプの所与のクラスタに配分されているレコードのそれぞれの個数を、第1の個数だけインクリメントすることにより、繰り返し空でないレコードを漸進的にロールダウンすることにより、増加させる、
    ように構成する命令を含むソフトウェアプログラムと共にメモリが構成されている、装置。
  10. 各前記クラスタを、それぞれのインターネットアドレスのプレフィックス長と関連させることにより、ある数のレコードを第1のタイプの複数のクラスタのそれぞれに配分するように更に構成された装置であって、装置は、空でないレコードのそれぞれの個数と、第1のタイプのクラスタのそれぞれの容量のそれぞれの第1のパーセンテージであるそれぞれの第1のしきい値とを比較するように、更に構成され、装置は、第1のタイプのクラスタと関連するそれぞれのインターネットアドレスのプレフィックス長に従ってそれぞれの第1のパーセンテージを決定するように更に構成された、請求項9に記載の装置。
  11. 2のタイプの前記クラスタを、それに配分されているレコードが空のままである自由クラスタと関連させることにより、ある数の空レコードを第2のタイプのクラスタに配分するように更に構成された、請求項に記載の装置。
  12. 第2のタイプのクラスタに配分されている空レコードの個数をモニタし、
    空レコードの個数と第2のしきい値とを比較し、
    空レコードの個数が第2のしきい値よりも小さい場合には、第2のタイプのクラスタに配分されている空レコードの個数を増加させるように更に構成された、請求項9から11のいずれか一項に記載の装置。
  13. 第1のタイプの1つまたは複数のクラスタに対して、空でないレコードのそれぞれの個数と、それぞれの第3のしきい値とを比較し、
    第1のタイプの特定のクラスタに配分されているレコードのそれぞれの個数を、そのクラスタの空でないレコードのそれぞれの個数がそのクラスタのそれぞれの第3のしきい値よりも小さい場合には、第2の個数だけ減少させ、
    第2のタイプのクラスタに配分されている空レコードの個数を、第2の個数だけ増加させるように更に構成された、請求項12に記載の装置。
JP2015511873A 2012-05-14 2013-05-02 三値連想メモリにおけるクラスタへのレコードの動的配分 Expired - Fee Related JP5948494B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/470,833 2012-05-14
US13/470,833 US8924640B2 (en) 2012-05-14 2012-05-14 Dynamic allocation of records to clusters in a ternary content addressable memory
PCT/CA2013/050340 WO2013170373A1 (en) 2012-05-14 2013-05-02 Dynamic allocation of records to clusters in a ternary content addressable memory

Publications (2)

Publication Number Publication Date
JP2015519660A JP2015519660A (ja) 2015-07-09
JP5948494B2 true JP5948494B2 (ja) 2016-07-06

Family

ID=49549566

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015511873A Expired - Fee Related JP5948494B2 (ja) 2012-05-14 2013-05-02 三値連想メモリにおけるクラスタへのレコードの動的配分

Country Status (6)

Country Link
US (1) US8924640B2 (ja)
EP (1) EP2850526A4 (ja)
JP (1) JP5948494B2 (ja)
KR (1) KR101611119B1 (ja)
CN (1) CN104285213A (ja)
WO (1) WO2013170373A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824756B2 (en) * 2013-08-13 2017-11-21 Globalfoundries Inc. Mapping a lookup table to prefabricated TCAMS
CN107896194B (zh) * 2018-01-02 2021-04-09 盛科网络(苏州)有限公司 一种路由查找方法、装置和存储介质
CN112087389B (zh) * 2019-06-14 2023-01-24 深圳市中兴微电子技术有限公司 一种报文匹配查表方法、系统、存储介质和终端

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812882A (en) * 1994-10-18 1998-09-22 Lanier Worldwide, Inc. Digital dictation system having a central station that includes component cards for interfacing to dictation stations and transcription stations and for processing and storing digitized dictation segments
US6516383B1 (en) * 2001-05-30 2003-02-04 Cisco Technology, Inc. Techniques for efficient location of free entries for TCAM inserts
JP3699374B2 (ja) * 2001-08-15 2005-09-28 日本電信電話株式会社 経路表更新方法およびプログラムおよび記録媒体
US6532516B1 (en) * 2001-09-27 2003-03-11 Coriolis Networks, Inc. Technique for updating a content addressable memory
KR100745693B1 (ko) * 2006-09-29 2007-08-03 한국전자통신연구원 Tcam 테이블 관리 방법
US7706375B2 (en) * 2007-02-06 2010-04-27 Alcatel Lucent System and method of fast adaptive TCAM sorting for IP longest prefix matching
JP5134915B2 (ja) * 2007-11-02 2013-01-30 株式会社日立製作所 記憶領域の構成最適化方法、計算機システム及び管理計算機
US8626618B2 (en) * 2007-11-14 2014-01-07 Panjiva, Inc. Using non-public shipper records to facilitate rating an entity based on public records of supply transactions
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US7974190B2 (en) * 2009-02-12 2011-07-05 Micrel, Inc. Dynamic queue memory allocation with flow control
US20100274947A1 (en) * 2009-04-27 2010-10-28 Hitachi, Ltd. Memory management method, memory management program, and memory management device
JP5278157B2 (ja) * 2009-05-15 2013-09-04 富士通株式会社 伝送装置および伝送方法
JP5467558B2 (ja) * 2009-09-09 2014-04-09 アラクサラネットワークス株式会社 ネットワーク中継装置及びメモリ制御方法
US8539184B2 (en) * 2009-09-23 2013-09-17 International Business Machines Corporation On demand storage group management with recapture
US8307153B2 (en) * 2010-05-05 2012-11-06 Juniper Networks, Inc. Power efficient and rule movement optimized TCAM management
CN102185756A (zh) * 2011-03-15 2011-09-14 北京星网锐捷网络技术有限公司 Tcam共享存储方法及装置
CN102291296B (zh) * 2011-08-04 2016-12-21 中兴通讯股份有限公司 一种路由表的更新方法及系统

Also Published As

Publication number Publication date
KR101611119B1 (ko) 2016-04-08
CN104285213A (zh) 2015-01-14
EP2850526A4 (en) 2016-01-20
JP2015519660A (ja) 2015-07-09
EP2850526A1 (en) 2015-03-25
US20130304983A1 (en) 2013-11-14
US8924640B2 (en) 2014-12-30
KR20140144303A (ko) 2014-12-18
WO2013170373A1 (en) 2013-11-21

Similar Documents

Publication Publication Date Title
US10257307B1 (en) Reserved cache space in content delivery networks
US10049051B1 (en) Reserved cache space in content delivery networks
US7606236B2 (en) Forwarding information base lookup method
US7599287B2 (en) Tokens in token buckets maintained among primary and secondary storages
CN102656580B (zh) 结构化数据的方法、预编译的异常列表引擎和网络设备
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
US6434144B1 (en) Multi-level table lookup
KR101994021B1 (ko) 파일 조작 방법 및 장치
US20020144073A1 (en) Method for memory heap and buddy system management for service aware networks
US10459729B2 (en) Map tables for hardware tables
US20110202571A1 (en) Method and device for storage
JP5948494B2 (ja) 三値連想メモリにおけるクラスタへのレコードの動的配分
US20140372725A1 (en) Allocation of distributed data structures
CN102291296A (zh) 一种路由表的更新方法及系统
US20210250296A1 (en) Dynamic route profile storage in a hardware trie routing table
CN105791455B (zh) 三态内容寻址存储器tcam空间的处理方法及装置
WO2001011469A1 (en) Caching associative memory
US20190171582A1 (en) Managing cache memory in a network element based on costs associated with fetching missing cache entries
CN107707479B (zh) 五元组规则的查找方法及装置
CN108351873B (zh) 一种缓存管理方法和装置
CN112398733B (zh) 流量调度转发方法及装置
US8205040B1 (en) Storing content in a ternary content addressable memory
CN113472911A (zh) 一种子网划分方法及装置
CN101420415B (zh) 形成路由表的方法及装置
CN111490972A (zh) 一种表项管理方法、装置、设备及机器可读存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160606

R150 Certificate of patent or registration of utility model

Ref document number: 5948494

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees