(57)【要約】【課題】  改良したＩＰアドレスルックアップ技術を提供する。【解決手段】  インターネットプロトコルアドレスプレフィックスを、第一ハッシュ及び単一リハッシュの両方に対して衝突が発生した後にオンデマンドでハッシュテーブルを割当てたメモリブロック内へハッシュさせる。各ハッシュテーブルに対して割当てられたメモリブロックの数は制限されており、付加的なプレフィックスはオーバーフロー内容参照可能メモリにより取扱われる。各ハッシュテーブルは特定長のプレフィックスのみを包含しており、異なるハッシュテーブルは異なる長さのプレフィックスを包含している。可能なプレフィックス長のサブセットのみがハッシュテーブルにより収容され、プレフィックスの残部は内容参照可能メモリ又は同様の代替的なアドレスルックアップファシリティにより取扱われる。【選択図】      図１
2005198285.tif 000002
【特許請求の範囲】
【請求項１】
アドレスルックアップ構造において、
アドレスルックアップ用のプレフィックスを格納する少なくとも１個のハッシュテーブル、
前記少なくとも１個のハッシュテーブル内において発生する衝突に対しての少なくとも幾つかのプレフィックスを格納する内容参照可能メモリ、
を有していることを特徴とするアドレスルックアップ構造。
【請求項２】
請求項１において、前記少なくとも１個のハッシュテーブルが、前記少なくとも１個のハッシュテーブル内において衝突が発生しない全ての所要のプレフィックスを保持するのに充分な最小数のメモリブロック内に包含されていることを特徴とするアドレスルックアップ構造。
【請求項３】
請求項１において、前記少なくとも１個のハッシュテーブルが所定の制限した数のメモリブロック内に包含されていることを特徴とするアドレスルックアップ構造。
【請求項４】
請求項１において、前記少なくとも１個のハッシュテーブルが２つのハッシュ関数のうちの１つによりハッシュされるプレフィックスを包含しており、前記２つのハッシュ関数のうちの第一のもので衝突が発生する場合に前記２つのハッシュ関数のうちの第二のものが使用されることを特徴とするアドレスルックアップ構造。
【請求項５】
請求項１において、前記少なくとも１つのハッシュテーブルが、各々が異なる長さのプレフィックスを包含している複数個のハッシュテーブルを有していることを特徴とするアドレスルックアップ構造。
【請求項６】
請求項５において、更に、
１つのプレフィックスの異なる長さの部分と前記複数個のハッシュテーブルのうちの２つ又はそれ以上の各々におけるプレフィックスとの間で複数の一致が発生する場合に最長のプレフィックスを選択するプライオリティエンコーダ、
を有していることを特徴とするアドレスルックアップ構造。
【請求項７】
請求項５において、前記複数個のハッシュテーブルがアドレッシングスキームの下で可能な異なる長さのプレフィックスのサブセットのみを包含しており、且つ前記異なる長さのプレフィックスの残部が前記内容参照可能メモリ内に格納されていることを特徴とするアドレスルックアップ構造。
【請求項８】
請求項１に基づくアドレスルックアップ構造を包含するネットワークルータにおいて、更に、
前記少なくとも１個のハッシュテーブルを包含しており且つ前記内容参照可能メモリへ結合されており前記少なくとも１個のハッシュテーブルを使用してアドレスルックアップを実施するネットワークサーチエンジン、
前記ネットワークサーチエンジンへ結合されており且つ前記ネットワークサーチエンジンにより発生される次ホップインデックスによりインデックスされるルート毎情報を包含している外部メモリ、
を有していることを特徴とするネットワークルータ。
【請求項９】
請求項８に基づくネットワークルータを複数個相互接続していることを特徴とするネットワーク。
【請求項１０】
アドレスルックアップ構造において、
複数個のハッシュテーブルであって、各々が該複数個内の他のハッシュテーブル内のプレフィックスと異なる長さのプレフィックスを包含しており、アドレス長以下の異なるプレフィックス長からなるサブセットのみを集合的に包含している複数個のハッシュテーブル、
前記複数個のハッシュテーブルにより収容されていない異なるアドレス長からなる残部を取扱う付加的なアドレスルックアップファシリティ、
を有していることを特徴とするアドレスルックアップ構造。
【請求項１１】
請求項１０において、前記付加的なアドレスルックアップファシリティが内容参照可能メモリを有していることを特徴とするアドレスルックアップ構造。
【請求項１２】
請求項１０において、前記複数個のハッシュテーブルの各々が少なくとも第一ハッシュ関数を使用して夫々のハッシュテーブル内に包含されている各プレフィックスのハッシングに基づいて割当てられた１つ又はそれ以上のメモリブロック内に包含されており、
夫々のハッシュテーブルへ割当てられている多数のメモリブロックは予め定めた数を超えるものではなく、
夫々のハッシュテーブル内のプレフィックスに対応する長さのプレフィックスの残部が該付加的なアドレスルックアップファシリティにより取扱われる、
ことを特徴とするアドレスルックアップ構造。
【請求項１３】
請求項１０において、更に、
前記複数個のハッシュテーブル内において識別された一致から最長のプレフィックスの一致を選択するプライオリティエンコーダ、
を有していることを特徴とするアドレスルックアップ構造。
【請求項１４】
アドレスルックアップを動作させる方法において、
少なくとも幾つかのアドレスプレフィックスを少なくとも１つのハッシュテーブル内に格納し、
前記少なくとも１個のハッシュテーブル内において発生する衝突に対するアドレスプレフィックスを内容参照可能メモリ内に格納する、
ことを包含していることを特徴とする方法。
【請求項１５】
請求項１４において、更に、
前記少なくとも１個のハッシュテーブル内において衝突が発生することのない全ての所要のプレフィックスを保持するのに充分な最小数のメモリブロック内に前記少なくとも１個のハッシュテーブルを維持する、
ことを包含していることを特徴とする方法。
【請求項１６】
請求項１４において、更に、
前記少なくとも１個のハッシュテーブルを所定の制限した数のメモリブロック内に維持する、
ことを包含していることを特徴とする方法。
【請求項１７】
請求項１４において、更に、
前記少なくとも１個のハッシュテーブル内のプレフィックスを２つのハッシュ関数のうちの１つでハッシングし、前記２つのハッシュ関数のうちの第一のもので衝突が発生する場合に前記２つのハッシュ関数のうちの第二のものを使用する、
ことを包含していることを特徴とする方法。
【請求項１８】
請求項１４において、更に、
複数個のハッシュテーブルの各々において、前記複数個のハッシュテーブルのうちの他のものに包含されているプレフィックスと異なる長さのプレフィックスを格納する、
ことを包含していることを特徴とする方法。
【請求項１９】
請求項１８において、更に、
１つのプレフィックスの異なる長さの部分と前記複数個のハッシュテーブルのうちの２つ又はそれ以上の各々におけるプレフィックスとの間で複数の一致が発生する場合に最長のプレフィックスを選択する、
ことを包含していることを特徴とする方法。
【請求項２０】
請求項１８において、更に、
アドレッシングスキームの下で可能な異なるプレフィックス長からなるサブセットのみに対応するプレフィックスを前記複数個のハッシュテーブル内に格納し、
プレフィックスの残部を前記内容参照可能メモリ内に格納する、
ことを包含していることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大略、インターネットプロトコルアドレスプレフィックスルックアップに関するものであって、更に詳細には、インターネットプロトコルアドレスプレフィックスルックアップを実施するためにハッシングを使用する技術に関するものである。
【背景技術】
【０００２】
インターネットプロトコル（ＩＰ）のようなパケットを基礎とした通信プロトコル用のネットワークルータは、そのパケットに対する意図されたデスティネーション即ち宛先へのルート即ち経路に沿っての次のネイバー（ｎｅｉｇｈｂｏｒ）へ入ってくる情報を指向させる。これを行うために、典型的に、該ルートに沿っての各ルータは、デスティネーションＩＰプレフィックスに対する適宜の次ホップアドレスを決定するためにルーチングテーブルに関してアドレスプレフィックス（通常、単に「プレフィックス」と呼称される）ルックアップ動作を実施せねばならない。このような動作は、埋設型ネットワークプロセッサか、又は、より一般的には、別個のネットワークサーチエンジンの何れかにより実施される。デスティネーションプレフィックス及び関連する次ホップ情報からなるプレフィックス（ルーチング）テーブルに関するサーチを実施することに加えて、ネットワークサーチエンジンは、又、典型的に、プレフィックステーブルを維持するタスク（即ち、プレフィックスの挿入及び削除）を行う。
【０００３】
当初、ネットワークサーチエンジン用のハードウエアは三重内容参照可能メモリ（ＴＣＡＭ）を使用しており、それは、ビット比較器と２個のメモリ要素、即ちデータを格納するために１つと比較マスクを格納する他のもの、からなるタイプのメモリである。ＴＣＡＭは、比較結果を「常に一致」（即ち、「ｄｏｎ’ｔ  ｃａｒｅ」）へオーバーライドさせるべくプログラムすることが可能なマスク値の制御下でデータメモリ内に格納されている値に対して入ってくるデータを比較する。動作において、ＴＣＡＭを基礎としたネットワークサーチエンジンは、ルーチングテーブルの全てのプレフィックスを特定の優先付けした順番でＴＣＡＭアレイ内に格納することにより機能し、各プレフィックスの関連する次ホップ情報は別のメモリ内の対応する（リンクされた）位置内に格納される。プレフィックスルックアップ期間中に、キーが該ＴＣＡＭアレイのコンパランド（比較オペランド）上に配置され且つ該メモリ内の全てのプレフィックスに対して比較される。全ての比較からの一致結果のアレイが優先度論理ユニットを介して送られて最高の優先度の一致を決定し、その勝利した一致を使用して次ホップメモリをアドレスし、そこから対応する次ホップ情報が読取られ且つリターンされる。
【０００４】
然しながら、ＴＣＡＭを基礎としたソリューションは通常低速であり、高価であり、且つ動作期間中にかなりのパワーを消費する。より最近には、汎用プロセッサ及び一般的なメモリを使用するソフトウエアを基礎としたサーチエンジンが開発されている。このような装置においては、ルーチングテーブルプレフィックス及び次ホップ情報は何らかのアルゴリズムに従って構築されたデータ構造でメモリ内に格納される。該汎用プロセッサを使用して一連のメモリ読取り及び比較演算を介してサーチが実施される。
【０００５】
従って、改良したＩＰアドレスルックアップスキームに対する必要性が存在している。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、第一ハッシュ及び単一リハッシュの両方に対する衝突の後にオンデマンドでハッシュテーブルに割当てられたメモリブロック内へのインターネットプロトコルアドレスプレフィックスのハッシングを、ネットワークルータにおいて使用するために、提供することを主要な目的としている。
【課題を解決するための手段】
【０００７】
各ハッシュテーブルに対して割当てられるメモリブロックの数は制限されており、付加的なプレフィックスはオーバーフロー内容参照可能メモリにより取扱われる。各ハッシュテーブルは特定長のプレフィックスのみを包含し、異なるハッシュテーブルは異なる長さのプレフィックスを包含する。可能なプレフィックス長からなるサブセットのみが該ハッシュテーブルにより収容され、プレフィックスの残部は該内容参照可能メモリ又は同様の代替的なアドレスルックアップファシリティにより取扱われる。
【発明を実施するための最良の形態】
【０００８】
本明細書において本発明の原理を説明するために以下に説明する図１乃至６及び種々の実施例は単に例示的なものであって本発明の技術的範囲を制限するような態様で解釈すべきものではない。当業者により理解されるように、本発明の原理は任意の適宜に構成された装置で実現することが可能である。
【０００９】
図１は本発明の一実施例に基づくハッシュを基礎としたネットワークサーチエンジンを使用した処理システムを示している。処理システム１００は、インターネットプロトコル（ＩＰ）ネットワークルータの一部を実現しており且つ外部メモリ１０３及び１０４へ結合されているネットワークパケットサーチエンジン（ＮＰＳＥ）１０２へ結合されているシステムプロセッサ／制御器即ちネットワーク処理ユニット（ＮＰＵ）１０１を包含している。メモリ１０３はオーバーフロー内容参照可能メモリ（ＣＡＭ）であり、一方外部メモリ１０３は次ホップ情報を保持する。ＮＰＳＥ１０２はシステム制御器１０１からのアドレス及び／又はコマンド及び次ホップアドレスをルックアップするためのプレフィックスを受取り、且つ次ホップアドレスをシステム制御器１０１へリターンする。システム制御器１０１はバックプレーン１０５へ結合されており且つネットワークインターフェース１０６を介してネットワーク（不図示）へ結合している。
【００１０】
本発明においては、ＮＰＳＥ１０２が可能な範囲において、オンチップＳＲＡＭメモリ１０７内のハッシュテーブルを使用してＩＰルックアップを実施する。ハッシングはテーブル又はアレイに対して非逐次的（ほぼランダム）アクセスを可能とするためのよく知られた技術であり、広範囲の値を小型のメモリ内に格納することが必要である場合に有用である。ハッシング用の例示的なアプリケーションは、データベース、コンパイラ、アッセンブラを包含している。コンパイラにおいて、例えば、ハッシングは、全ての可能な６キャラクタワードからなるより大きな空間（３６6）からアルファニューメリックキャラクタ（２６＋１０）からなる小さな（数百）セットのトークン又はキーワードを認識するために使用される。動作において、ハッシング関数Ｈが「キー」と呼ばれる入力データ値に対して適用されてハッシュテーブル内へのインデックスを生成し、該テーブルは該トークン又はキーワードを格納し且つ該トークン又はキーワードをルックアップするために使用される。
【００１１】
ハッシング関数Ｈは、それがハッシュテーブルを介してキーを一様に及び／又はランダムに分布させるようなものでなければならない。多数のキーが小さな組のトークンに対してマップされるので、２つのキーが、ハッシュされた場合に、同一のテーブルインデックスを発生する場合が生じる運命にあり、その状態は「衝突」と呼ばれる。良好なハッシング関数は衝突を最小とするが、発生する衝突は２つの態様で取扱うことが可能であり、即ち、クローズド（ｃｌｏｓｅｄ）ハッシュテーブルアプローチにおいては、ハッシング衝突は、別の関数でのリハッシングによるか又は使用可能なエントリを見付け出すために線形的に該テーブルをステップスルーすることの何れかにより解決し、一方オープン（ｏｐｅｎ）ハッシュテーブルアプローチにおいては、各テーブルエントリに対してアイテムのリストを維持し且つ所望の識別子を見付け出すために衝突が発生する場合にトラバースする。クローズドハッシュテーブルはテーブルの寸法より多くのエントリを収容することは不可能であるが、オープンハッシュテーブルの場合にはそうではない。
【００１２】
ハッシングはＩＰルックアップに必要な幾つかの基準を満足し、且つ、幾つかの態様においては、ハッシュテーブルは通常のスタチックランダムアクセスメモリ１０７内に存在することが可能であるので、高価なメモリセル条件なしで内容参照可能メモリと同様に動作する。ハッシングはハッシュ関数を計算するのに必要な時間及びアレイ内へのインデックスに依存して、ＣＡＭにおけるような高速のルックアップでメモリへの直接的なアクセスを提供する。アップデート（挿入又は削除）はＣＡＭにおけるように高速である。良好なハッシュ関数がある場合には、格納条件はＣＡＭにおけるようにハッシュテーブル内に格納することが必要なプレフィックスの数と共に線形的に増加するに過ぎない。
【００１３】
然しながら、ハッシングがＩＰルックアップに対する実行可能なソリューションを提供する前に２つの問題に対処せねばならない。第一に、ハッシング期間中の衝突は効率的に取扱われねばならない。第二に、ハッシングはコンパランドとの正確な一致に対する自然なソリューションであるが、ＩＰルックアップは最長のプレフィックスの一致を必要とする。
【００１４】
最長プレフィックス一致問題を解決するためにハッシングを使用するための１つの提案においては、プレフィックス長により組織化されたハッシュテーブルでルーチングテーブルを構築することである。サーチは最長のプレフィックス長でハッシュテーブルにおいて開始し、同一長の全てのプレフィックスに関しハッシュテーブル内においてバイナリサーチを実施する。一致が見つからない場合には、サーチは次に最も長い長さのハッシュテーブルで継続し、最長の一致したプレフィックスが見つかるまで反復的アルゴリズムにおいて以下同様に継続する。この反復的ソリューションはソフトウエアにおいて良好に動作するが、パイプライン化でのハードウエア実現の表示を与えるものではなかった。更に、該ソリューションはダイナミックランダムアクセスメモリ（ＤＲＡＭ）を使用し、それは使用可能なメモリの量に関して異なる組の拘束を課している。
【００１５】
別の提案されたハッシュを基礎としたＩＰルックアップスキームは、並列ハッシュテーブルでプログラマブル論理装置（ＰＬＤ）における複数のハードウエアハッシング関数実現例を使用する。提案された特定のアーキテクチャはマルチキャストパケット及びパケットフローの分類に対処しており、従って、正確な一致のみを関心事としており、最長の一致を関心事としているものではない。
【００１６】
本発明においては、オンチップＳＲＡＭ１０７が少なくとも１つのハッシュ関数１０８を使用して作成され且つアクセスされるハッシュテーブル１０９を保持しており、オーバーフローＣＡＭ１０３が衝突を取扱う。衝突を最小とさせるために、使用可能なメモリ資源及びリハッシュを効率的に使用するためにオンデマンドのブロックを基礎としたアロケーションスキームによってＳＲＡＭ１０７の使用を最大化させる。プレフィックス長により組織化された複数のハッシュテーブルに亘ってのハードウエアにおける並列ルックアップは単一のハッシュからの正確な一致結果を最長プレフィックス一致へ変換させる基本的な問題に対処することを助ける。ハッシュテーブルにおける仮想バンクアドレス変化は異なるプレフィックス長に亘り寸法決定する。メモリをクロスバーの使用を介して必要とされるように何れかのバンクへ動的に割当てられる小さなブロックへ分割することにより、ハッシュテーブル寸法は、各データセットに対して調節することが可能であり且つサーチエンジンの容量は全ての条件下で最大化される。
【００１７】
本発明のハードウエアソリューションは、オプチカルキャリアレベル１９２（ＯＣ−１９２）データレートにおいて及びそれを超えてのパケットルックアップをサポートするため、及び現在のＴＣＡＭシステムのパワー及びコストの僅かな部分で中程度のアップデートレートを取扱うために、２５６，０００インターネットプロトコルバージョン４（ＩＰｖ４）プレフィックスを超えて大きなルーチングテーブルを収容すべく設計されている。
【００１８】
図２は本発明の一実施例に基づいてハッシュを基礎としたＩＰルックアップスキームにおけるハッシュテーブルを使用するプロセスを示したハイレベルのフローチャートである。ブロックを基礎としたルックアップスキームは、ＩＰ次ホップアドレスルックアップを実施するために、ＣＡＭ１０３の小さな量と共に、ＳＲＡＭ１０７を使用する。ＳＲＡＭ１０７を最大に使用することを確保することは衝突を最小とすることを可能とする。そのために、本発明における最初の最適化は、コンパランドの最初のハッシュからの結果をリハッシュするために付加的なハッシング関数を使用することである。ＳＲＡＭの速度制限のために、リハッシュは１つのリハッシュのみに制限される。即ち、コンパランドは、２つの異なるハッシュ関数１０８を使用して２度（高々）ハッシュされる。好適には、与えられたプレフィックスに対するハッシュテーブルエントリのアロケーション即ち割当ては、異なるプレフィックスに対して以前に割当てていたエントリとの衝突が発生しない限り最初のハッシュの結果を基礎とする。その場合には、最初のハッシュの結果は２番目の異なるハッシング関数を使用してリハッシュされる。
【００１９】
図３は本発明の一実施例に基づくハッシュを基礎としたＩＰルックアップスキームにおけるハッシュテーブルに対してのメモリのブロックを基礎としたアロケーション即ち割当てを更に詳細に例示した模式図である。本発明において衝突を最小とさせるための２番目の最適化は、各ハッシュテーブルに対してブロックを基礎としたＳＲＡＭアロケーション即ち割当てを使用することである。ＳＲＡＭの小さく固定したブロックが、最初に、与えられたハッシュテーブルに対して割当てられる。リハッシュがもはや空のスロットを発生するものでない場合には（即ち、既存のブロックが満杯）、別のブロックが割当てられ且つそのＩＰアドレスは２番目のブロック内へハッシュされる。このオンデマンドブロックアロケーションは、衝突を最小としながら使用可能なＳＲＡＭの使用を効率的なものとさせる。無限のＳＲＡＭの場合には、ブロックを継続的に割当て且つ衝突を完全に回避することが可能である。然しながら、ある点において、ＳＲＡＭは不充分な使用を示し始め且つ付加的なブロックのアロケーションはもはや効率的なものでなくなる。その点において、衝突を取扱うために更なるブロックを割当てるのではなく、付加的なプレフィックスエントリがオーバーフローＣＡＭ１０３へディスパッチされる。
【００２０】
付加的なプレフィックスがオーバーフローＣＡＭ１０３へディスパッチされる点を選択する上でのゴールは、ＳＲＡＭ１０７に関する使用を最大としながらオーバーフローＣＡＭ１０３の寸法を最小とさせることである。与えられたハッシュテーブルに対してのブロックの割当てを何時停止するかを決定するために異なる基準を設定することが可能であり、その最も簡単な方法は、固定した（最大）数のブロックｎを前もって割当て且つこれらブロックの全てがハッシュテーブルに対して割当てられた場合に停止することであり、これは設計リスクを減少させるアプローチである。
【００２１】
ブロックを基礎としたアロケーションスキームは、マルチレベルハッシングアプローチとして考えることが可能であり、その場合に、レベルの数は非常に大きく（割当てることが可能なブロックの最大数と同じ）且つＳＲＡＭの寸法は各レベルにおいて同一である。このアプローチは、ハードウエア実現に対するメモリアーキテクチャの組織化を容易なものとさせる。
【００２２】
図２を参照すると、メモリの少なくとも１個の割当てられたブロックを有しているハッシュテーブルを使用するプロセス２００は、そのハッシュテーブルへ付加されるべき新たなプレフィックスで開始する（ステップ２０１）。この新たなプレフィックスはハッシュテーブル内のメモリの唯一存在している即ち最も最近に割当てられたブロックに対してハッシュされ（ステップ２０２）、且つそのハッシュ結果が当該ブロックにおける既存のエントリと衝突するか否かの判別がなされる（ステップ２０３）。衝突しない場合には、そのプレフィックスがハッシュテーブルへ付加される（ステップ２０４）。然しながら、衝突する場合には、そのハッシュ結果は２番目のハッシュ関数を使用してリハッシュされ（ステップ２０５）且つそのリハッシュ結果が当該ブロック内の既存のエントリと衝突するか否かについての判別が再度なされる（ステップ２０６）。衝突が識別されない場合には、そのプレフィックスがハッシュテーブルへ付加される（ステップ２０４）。
【００２３】
リハッシュの後に衝突が存在する場合には、最大数のブロックが既にハッシュテーブルに対して割当てられているか否かの判別が行われる（ステップ２０７）。そうでない場合には、メモリの付加的なブロックがハッシュテーブルへ割当てられ且つそのプレフィックスが新たに割当てられたブロック内にハッシュされる（ステップ２０８）。然しながら、そうである場合には、そのプレフィックスはオーバーフローＣＡＭへディスパッチされる（ステップ２０９）。次いで、本プロセスは、別のプレフィックスがハッシュテーブルへ付加することが必要とされるまでアイドルとなる（ステップ２１０）。
【００２４】
図４は本発明の一実施例に基づいてハッシュを基礎としたＩＰルックアップスキームにおいて最長プレフィックス一致を実施するためのメカニズムを示している。ハッシュテーブルで最長プレフィックス一致を実施することの基本的な問題は、各異なるプレフィックス長に対しハッシュテーブルＴ4−Ｔ32を作成することにより本発明において対処されている。従って、長さ２４ビットの全てのプレフィックスはハッシュテーブルＴ24内にハッシュされ、且つその他のプレフィックス長についても以下同様である。上述したメモリアロケーションスキームは、各プレフィックス長と関連するハッシュテーブルに対して使用される。
【００２５】
動作について説明すると、３２ビットＩＰアドレスに対する最長プレフィックス一致が必要とされる場合には、３２ビットプレフィックスに対するハッシュテーブルＴ32内のエントリに対する比較のためにアドレス全体をハッシュすることに加えて、そのアドレスの全てのより小さなプレフィックス長（３１，３０，２９，２８等）がそれらの夫々のハッシュテーブル（Ｔ31，Ｔ30，Ｔ29，Ｔ28，等）内のエントリとの比較のために並列的に同時的にハッシュされる。各ハッシュテーブルＴ4−Ｔ32からの一致信号（Ｍ32，Ｍ31，Ｍ30，Ｍ29，Ｍ28，等）がプライオリティエンコーダ４００へパスされて複数の一致を解消し且つ最長プレフィックス一致を決定する。このように、ハッシングにより決定された正確なマッチング即ち一致を異なるプレフィックス長に関して結合させることが可能である。異なる長さのプレフィックス及び該マッチ信号から派生され且つハッシュテーブルＴ4−Ｔ32の何れにおいても一致を表わすものでない信号が、ハッシュテーブルが許容された最大数のブロックを使用した場合に、オーバーフロー処理のためにＣＡＭ１０３へパスされる。
【００２６】
全てのハッシュテーブルの格納の複雑性を最小とするために、付加的な最適化が必要とされる。典型的に、ＩＰｖ４プレフィックスの非常に僅か（＜１％）が１−１６ビットレンジにあり、そのことは自律的システムマップ（ＡＳＭａｐ）ルーチングテーブル分布から理解され且つ異なるルーチングテーブル分布の分析において独立的に検証される。従って、ハッシングは、好適には、１６−３２ビット長範囲におけるプレフィックスに対してのみ選択的に使用される。残りのプレフィックス長（１−１５）は、オーバーフローＣＡＭ１０３を使用して、又はマルチビット（圧縮されているか又は圧縮されていない）トライを使用することにより取扱うことが可能である。ハッシュテーブルが使用されるプレフィックス長の選択は、オプションとして、プログラム可能なものとすることが可能である。
【００２７】
ハッシュテーブルにおける各エントリは、単にプレフィックス（最大で３２ビット）及び有効ビットを包含することが必要である（全部で３３ビット）。各プレフィックスに対する次ホップデータがサーチエンジン１０２からオフチップで、ハッシュテーブルブロックアドレス及びそのオフセットからオンチップで発生される次ホップインデックスによりアクセスされる拡張メモリ１０４内に格納される。該インデックスは次ホップアドレスとして又は次ホップアドレスを発生するマッピングテーブルに対するアドレスとしてオフチップへ移行する。このことは、次ホップデータ（及びルート毎情報）をオンチップで格納する必要性を取除く。最近のルータは与えられたルートに関する統計を収集するために付加的なメモリを必要とするので、ルート毎情報をオフチップで実現することが最善であり、且つシステム設計者に対して柔軟性を提供する。オフチップルート毎情報の格納は外部メモリ１０４に関して何らかの条件を課すものであるが、このような通常のメモリはより廉価である。
【００２８】
図５は本発明の一実施例に基づくブロックを基礎としたメモリアロケーション、最長プレフィックス一致、ハッシングＩＰルックアップスキームに対する例示的な実現例を示している。ブロックを基礎としたハッシングＩＰルックアップサーチメカニズム５００は、長さ１７−３２のプレフィックスに対する選択的ハッシング及び基本的メモリブロック寸法１ＫＸ３２を使用したブロックを基礎としたメモリアロケーションで実現した５１２Ｋエントリルーチングテーブルを包含している。メモリ５０１は、各プレフィックス長に対して１個ずつ１７個のバンクを具備するクロスバー構造として組織化されている。全ての１７個のハッシュ関数Ｈ16−Ｈ32は、１０ビットブロックオフセットアドレスを発生するために並列的に計算される。
【００２９】
各メモリブロック０−５１１は関連する１７ビットブロックコンフィギュレーションレジスタ（ＢＣＲ）５０１を有しており、それは存在する場合に対応するメモリブロックが割当てられるプレフィックス長／ハッシュ関数のコンフィギュレーションを包含しており、且つ割当てられたメモリブロックに対するルーチングのために適宜のハッシュ関数から１０ビットブロックオフセットアドレスの選択を司る。
【００３０】
各メモリブロックは、入ってくるプレフィックスからのビットの適宜のサブセットをハッシュ関数により発生されたブロックオフセットアドレスにおけるＳＲＡＭから読取ったブロックエントリとマッチングさせ且つヒット又はミスを発生する出力において比較器を具備する１ＫＸ３２ＳＲＡＭメモリである。ルックアップ期間中に、全てのプレフィックス長に対する全てのブロックが並列的にアクセスされる。該メモリブロックは、又、シーケンシャルな読取り／書込み動作をサポートしており、その期間中に、アドレスがハッシュ関数出力からくることはない。
【００３１】
図６は本発明の一実施例に基づくハッシングＩＰルックアップスキームに対するルックアップパイプラインを例示している。７ステージパイプライン６００は１７個のプレフィックス長の全てに対して並列的に実行される。ハッシュステージＨ１，Ｈ２はＩＰアドレスをハッシュし且つブロックオフセットアドレスを発生する。コンフィギャステージ即ち形態特定ステージＣ１，Ｃ２はブロックコンフィギュレーションレジスタを使用してブロックオフセットアドレスを適宜のメモリブロックに対してコンフィギャ即ち形態特定し且つ経路付けを行う。
【００３２】
ルックアップステージＬ１，Ｌ２は与えられたプレフィックス長に対して割当てられた全てのメモリブロックに対するメモリブロックへアクセスし、一方比較ステージＣＭＰ１，ＣＭＰ２はメモリエントリを当該ＩＰアドレスのプレフィックスサブセットと比較し且つマッチ即ち一致を発生する。マッチステージＭＡＴＣＨはマッチした即ち一致したラインを選択し（一致が識別された場合）且つ一致したプレフィックスを発生する。最長プレフィックスマッチステージＬＰＭは優先度選択を実行して一致したプレフィックスの中で最長のプレフィックスを決定し、且つ次ホップステージＮＥＸＴＨＯＰはブロックインデックス及びブロックオフセットアドレスから次ホップインデックスを発生する。
【００３３】
図示した実現例６００において、第二ハッシュ関数Ｈ２とのリハッシュはパイプライン化されており且つ第一ハッシュ関数Ｈ１の結果が既知となる前に実施される。最大の処理能力を保証するために、ハッシュ関数Ｈ１及びＨ２及びルックアップの計算（即ち、最初の４個のステージ、Ｈ１／Ｈ２，Ｃ１／Ｃ２，Ｌ１／Ｌ２，ＣＭＰ１／ＣＭＰ２）は、全て、ルックアップがクロックサイクル毎に実施されることを保証するためにルックアップエンジンの基本周波数の２倍で実行することを必要とする。従って、第三ステージＬＯＯＫＵＰにおいてアクセスされるＳＲＡＭメモリブロックは２倍速いことが必要であり、即ち１つのクロックサイクルにおいて２つの読取りを実施することが必要である。２００メガヘルツ（ＭＨｚ）基本周波数は、２００Ｍルックアップ／秒の処理能力を与えるためにはＳＲＡＭメモリブロックに対して少なくとも２．５ナノ秒（ｎｓ）アクセス時間を必要とする（即ち、４００ＭＨｚ）。次ホップデータのキューイング及びフェッチングは５−６サイクル程度かかる場合があり、ラウンドトリップレイテンシは１２−１３サイクルとなる。
【００３４】
既存のプレフィックスをアップデートすることは、次ホップインデックスへアクセスするためにルックアップを行うことを必要とし、該インデックスは、次いで、次ホップ情報をアップデートするために使用することが可能である。プレフィックスの挿入及び削除は、最初に、そのプレフィックスが存在しないか（挿入の場合）又は存在するか（削除の場合）を検証するためにルックアップを必要とする。そのプレフィックスの有無が検証されると、そのプレフィックスを挿入することが可能である。
【００３５】
プレフィックス挿入期間中、適宜のプレフィックス長と関連する全ての割当てられたＳＲＡＭメモリブロック内のアドレスされたエントリの有効ビットがシーケンシャルに検査される。そのビットがアサート即ち活性化されると、そのメモリブロックに対するアドレスされた位置が占有され、且つ次メモリブロックに対するアドレスされた位置が検査される。本プロセスは、アドレスされた位置において空のエントリを有するブロックまで（有効ビットはアサートされない）、又は最大数のメモリブロックがプレフィックス長に割当てられ且つ検査されるまで継続して行われる。このことは、ルックアップ動作がそのプレフィックスと関連するメモリブロックのうちのただ１つから一意的な一致を発生するように入ってくるプレフィックスを１つのメモリブロックのみに配置させることを確保する。
【００３６】
アップデートはルックアップほど頻繁なものでないことが予測され、従ってそのタスクを完了するためにルックアップサイクルの周期的なスティーリング即ち取合いが予測されるに過ぎない。考慮すべき幾つかの最悪なアップデート条件は、１つのプレフィックス長に割当てられている全てのメモリブロックが既に有効なエントリを包含している場合には、挿入をＣＡＭにおいて実施することが必要であり、そのプレフィックスと関連する全てのブロックのトラバーサルとそれに続くＣＡＭ挿入を必要とする、ことを包含している。ＣＡＭも満杯である場合には、ブロックの再割当てが必要となり、そのことは計算上高価なものである場合がある。何故ならば、ＣＡＭエントリをＳＲＡＭメモリブロックへ戻すこと又は他のプレフィックスのために不充分に使用されているＳＲＡＭブロックを解放すること−両方ともリハッシュが関与する−が必要とされるからである。この状況は、好適には、メモリ管理及びブロック再割当てをバックグラウンドで開始することが可能であるようにＣＡＭが満杯となる前に検知すべきである。
【００３７】
本発明はＩＰアドレスプレフィックスルックアップに対してハッシングを使用することを可能としている。オンデマンドでのブロックを基礎としたメモリ割当ては、与えられたハッシュテーブルに対して割当てられるブロックの最大数に対する制限を有しており、メモリアーキテクチャ組織化を簡単化させる。リハッシュ（１度のみ）及びオーバーフローＣＡＭは衝突を取扱うために使用される。最長プレフィックスマッチ即ち一致は各プレフィックス長に対する並列ルックアップ及び結果的に得られるマッチのプライオリティエンコーディングにより識別される。
【００３８】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施例に基づくハッシュを基礎としたネットワークサーチエンジンを使用する処理システムを示した概略図。
【図２】本発明の一実施例に基づくハッシュを基礎としたＩＰルックアップスキームにおいてハッシュテーブルを使用するプロセスを示したハイレベルのフローチャート。
【図３】本発明の一実施例に基づくハッシュを基礎としたＩＰルックアップスキームにおけるハッシュテーブルに対するメモリのブロックを基礎とした割当てをより詳細に示した概略図。
【図４】本発明の一実施例に基づくブロックを基礎としたメモリの割当てハッシュを基礎としたＩＰルックアップスキーム内の最長プレフィックスマッチを決定するメカニズムを示した概略図。
【図５】本発明の一実施例に基づくブロックを基礎としたメモリ割当て最長プレフィックスマッチハッシングＩＰルックアップスキームに対する例示的具体例を示した概略図。
【図６】本発明の一実施例に基づくハッシングＩＰルックアップスキームに対するルックアップパイプラインを示した概略図。
【符号の説明】
【００４０】
１００：処理システム
１０１：ネットワーク処理ユニット（ＮＰＵ）
１０２：ネットワークパケットサーチエンジン（ＮＰＳＥ）
１０３，１０４：外部メモリ
１０５：バックプレーン
１０６：ネットワークインターフェース
１０７：オンチップＳＲＡＭメモリ
【図１】
2005198285.tif 000003
【図２】
2005198285.tif 000004
【図３】
2005198285.tif 000005
【図４】
2005198285.tif 000006
【図５】
2005198285.tif 000007
【図６】
2005198285.tif 000008