(57)【要約】【課題】  パス圧縮最適化システム及び方法を提供する。【解決手段】  ルーターのパイプラインネットワーク検索エンジンにおいて使用するものであって、単一エントリトライテーブルを除去するためのパス圧縮最適化システム及び方法が提供される。本システムは、親トライテーブル内に、（１）データパケットの共通のプレフィックスビットを有するパス圧縮パターン、及び（２）パス圧縮パターンの長さを表わすスキップカウントを埋込む。ネットワーク検索エンジンがパス圧縮パターン及びスキップカウントを使用してデータ構造から単一エントリトライテーブルを除去する。各パス圧縮パターンはネットワーク検索エンジンの爾後のパイプライン段において一度に１個のストライドづつ処理される。不必要な単一エントリトライテーブルを除去することはメモリ空間、電力消費、及びデータ構造をトラバースするのに必要なメモリアクセスの数を減少させる。【選択図】      図４
2004194343.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるデータ構造において少なくとも１つの単一エントリトライテーブルのパス圧縮を最適化する装置において、
前記データ構造は前記少なくとも１つの単一エントリトライテーブルに対する少なくとも１つの親トライテーブルエントリを有しており、
少なくとも１つのＰＣ論理ユニットが前記ネットワーク検索エンジンの少なくとも１つのパイプライン論理段へ結合しており、前記少なくとも１つのＰＣ論理ユニットは前記少なくとも１つの親トライテーブルエントリにおいてデータパケットの共通プレフィックスビットを表わすパス圧縮パターンをエンコードすることが可能であり、
前記少なくとも１つのＰＣ論理ユニットは、更に、前記少なくとも１つの親トライテーブルエントリにおいて前記パス圧縮パターンの長さを表わすスキップカウントをエンコードすることが可能であり、
前記少なくとも１つのＰＣ論理ユニットは、更に、前記パス圧縮パターン及び前記スキップカウントを使用することにより前記データ構造から前記少なくとも１つの単一エントリトライテーブルを除去することが可能である、
ことを特徴とする装置。
【請求項２】
請求項１において、前記データ構造における前記少なくとも１つの親トライテーブルエントリが、
ｎ個のストライドのスキップカウントを有するパス圧縮パターンに対してパターンデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第一トライテーブルエントリ、
を有しており、前記パス圧縮パターンが前記第一トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
ことを特徴とする装置。
【請求項３】
請求項２において、前記データ構造における前記少なくとも１つの親トライテーブルエントリが、
ｎ個のストライドのスキップカウント、
を有しており、前記ｎ個のストライドのスキップカウントが前記第一トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
ことを特徴とする装置。
【請求項４】
請求項２において、前記データ構造における前記少なくとも１つの親トライテーブルエントリが、
１個のストライドから（ｎ−１）個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、カウントデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有している第二トライテーブルエントリ、
を有しており、前記パス圧縮パターンが前記第二トライテーブルエントリの前記パターンデータフィールド内に埋め込まれている、
ことを特徴とする装置。
【請求項５】
請求項４において、前記データ構造における前記少なくとも１つの親トライテーブルエントリが、
１個のストライドから（ｎ−１）個のストライドのスキップカウント、
を有しており、前記１個のストライドから（ｎ−１）のストライドのスキップカウントが前記第二トライテーブルエントリの前記カウントデータフィールド内に埋め込まれている、
ことを特徴とする装置。
【請求項６】
パイプラインハードウエア援助型ビットマップ型マルチトライアルゴリズムネットワーク検索エンジンにおけるデータ構造においての少なくとも１つの単一エントリトライテーブルのパス圧縮を最適化する装置において、
前記データ構造は前記少なくとも１つの単一エントリトライテーブルに対する少なくとも１つの親トライテーブルエントリを有しており、前記少なくとも１つの親トライテーブルエントリはデータパケットの共通プレフィックスビットを表わすパス圧縮パターン及び前記パス圧縮パターンの長さを表わすスキップカウントを有しており、
前記少なくとも１つのＰＣ論理ユニットが前記パス圧縮最適化を検知することが可能な前記ネットワーク検索エンジンの少なくとも１つのパイプライン論理段へ結合しており、
少なくとも１つのＰＣ論理ユニットは、前記パス圧縮最適化を検知することに応答して、更に、（１）前記少なくとも１つのＰＣ論理ユニットと関連するメモリバンクに対してのメモリ読取動作を抑制し、且つ（２）前記スキップカウントの値をアップデートし、且つ（３）前記パス圧縮パターンの未処理部分及び前記スキップカウントのアップデートした値を前記パイプラインネットワーク検索エンジンの次の段へ送る、ことが可能である、
ことを特徴とする装置。
【請求項７】
請求項６において、
前記ネットワーク検索エンジンの少なくとも１つのパイプライン論理段へ結合している少なくとも１つのＰＣ論理ユニットが前記スキップカウントの値がゼロに等しいことを決定することが可能であり、
前記少なくとも１つのＰＣ論理ユニットは、前記スキップカウントの値がゼロに等しいことを決定することに応答して、更に、（１）前記スキップカウントがゼロに等しい前記少なくとも１つのＰＣ論理ユニットと関連するメモリバンクからメモリデータを読取り、且つ（２）前記メモリデータを前記パイプラインネットワーク検索エンジンの次の段へ供給する、ことが可能である、
ことを特徴とする装置。
【請求項８】
請求項７において、本装置が前記パス圧縮処理の結果を表わすトライテーブルを、前記パス圧縮処理を実施する前に元のトライテーブルを配置すべきメモリバンク内へ配置させることが可能であることを特徴とする装置。
【請求項９】
請求項１において、前記パス圧縮処理期間中に、本装置はメモリ空間、メモリ帯域幅、電力消費のうちの１つの利用を最小化させることが可能であることを特徴とする装置。
【請求項１０】
請求項６において、前記少なくとも１つのＰＣ論理ユニットは、前記パス圧縮最適化を検知することに応答して、更に、前記少なくとも１つの単一エントリトライテーブルと関連する前記パイプラインネットワーク検索エンジンの前記少なくとも１つの段をスキップすることが可能であることを特徴とする装置。
【請求項１１】
請求項６において、前記パイプラインハードウエア援助型ビットマップ型マルチトライアルゴリズムネットワーク検索エンジン内に複数個のＰＣ論理ユニットを有しており、前記複数個のＰＣ論理ユニットが前記ネットワーク検索エンジンの爾後のパイプライン段において一度に１個のストライドづつ前記パス圧縮パターンの前記未処理部分を処理することが可能であることを特徴とする装置。
【請求項１２】
パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるデータ構造において少なくとも１つの単一エントリトライテーブルのパス圧縮を最適化させる方法において、
前記データ構造は前記少なくとも１つの単一エントリトライテーブルに対する少なくとも１つの親トライテーブルエントリを有しており、
前記少なくとも１つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込み、
前記少なくとも１つの親トライテーブルエントリ内に前記パス圧縮パターンの長さを表わすスキップカウントを埋込み、
前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記少なくとも１つの単一エントリトライテーブルを除去する、
上記各ステップを有していることを特徴とする方法。
【請求項１３】
請求項１２において、前記少なくとも１つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込む場合に、
前記少なくとも１つの親トライテーブルエントリ内にｎ個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第一トライテーブルエントリを与え、
前記パス圧縮パターンを前記第一トライテーブルエントリのパターンデータフィールド内に埋込む、
ことを特徴とする方法。
【請求項１４】
請求項１３において、更に、
前記少なくとも１つの親トライテーブルエントリ内にｎ個のストライドのスキップカウントを与え、
前記ｎ個のストライドのスキップカウントを前記第一トライテーブルエントリの前記パターンデータフィールド内に埋込む、
ことを特徴とする方法。
【請求項１５】
請求項１３において、更に、
前記少なくとも１つの親トライテーブルエントリ内に１個のストライドから（ｎ−１）個のストライドのスキップカウントを有するパス圧縮パターンに対してのパターンデータフィールドと、カウントデータフィールドと、ポインタデータフィールドと、コードデータフィールドとを有する第二トライテーブルエントリを与え、
前記１個のストライドから（ｎ−１）個のストライドのスキップカウントを有する前記パス圧縮パターンを前記第二トライテーブルエントリの前記パターンデータフィールド内に埋込む、
ことを特徴とする方法。
【請求項１６】
請求項１５において、更に、
前記少なくとも１つの親トライテーブルエントリ内に１個のストライドから（ｎ−１）個のストライドのスキップカウントを与え、
前記１個のストライドから（ｎ−１）個のストライドの前記スキップカウントを前記第二トライテーブルエントリの前記カウントデータフィールド内に埋込む、
ことを特徴とする方法。
【請求項１７】
請求項１２において、前記パス圧縮パターンと前記スキップカウントとを使用して前記データ構造から前記少なくとも１つの単一エントリトライテーブルを除去する場合に、
前記パイプラインネットワーク検索エンジンの複数個の段におけるパス圧縮最適化を検索し、
前記パイプラインネットワーク検索エンジンの１つの段における前記パス圧縮最適化を検知し、
前記パイプラインネットワーク検索エンジンの前記１つの段に関連するメモリバンクに対してのメモリ読取動作を抑制し、
前記スキップカウントの値をアップデートし、
前記パス圧縮パターンの未処理部分及び前記スキップカウントのアップデートした値を前記パイプラインネットワーク検索エンジンの次の段へ送る、
上記各ステップを有していることを特徴とする方法。
【請求項１８】
請求項１７において、更に、
前記パイプラインネットワーク検索エンジンの１つの段において前記スキップカウントの値がゼロに等しいものを決定し、
前記スキップカウントがゼロに等しい前記パイプラインネットワーク検索エンジンの前記段に関連するメモリバンクからメモリデータを読取り、
前記メモリデータを前記パイプラインネットワーク検索エンジンの次の段へ与える、
上記各ステップを有していることを特徴とする方法。
【請求項１９】
請求項１８において、更に、
前記パス圧縮処理の結果を表わすトライテーブルを、前記パス圧縮処理が実施される前に元のトライテーブルが配置されるべきメモリバンク内へ配置させる、
上記ステップを有していることを特徴とする方法。
【請求項２０】
請求項１７において、更に、
前記パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジン内に複数個のＰＣ論理ユニットを与え、
前記ネットワーク検索エンジンの爾後のパイプライン段において一度に１個のストライドづつ前記パス圧縮パターンの前記未処理部分を処理する、
上記各ステップを有していることを特徴とする方法。
【請求項２１】
請求項１７において、更に、
前記パイプラインネットワーク検索エンジンの１つの段においてパス圧縮候補を検知し、
前記パス圧縮候補に対してＮのスキップカウントでのパス圧縮最適化が可能であることを決定し、
プレフィックスからのパターンのＮ＋１個のストライドを前記パイプラインネットワーク検索エンジンの現在の段における現在のノード内に配置させることにより前記パイプラインネットワーク検索エンジンにおけるプレフィックステーブルをアップデートする、
上記各ステップを有していることを特徴とする方法。
【請求項２２】
パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおいてメモリ空間及びメモリ帯域幅の使用を最小とさせる方法において、
前記ネットワーク検索エンジンにおけるデータ構造においての少なくとも１つの単一エントリトライテーブルのパス圧縮を最適化し、前記データ構造は前記少なくとも１つの単一エントリトライテーブルに対して少なくとも１つの親トライテーブルエントリを有しており、
前記少なくとも１つの親トライテーブルエントリ内にデータパケットの共通プレフィックスビットを表わすパス圧縮パターンを埋込み、
前記少なくとも１つの親トライテーブルエントリ内に前記パス圧縮パターンの長さを表わすスキップカウントを埋込み、
前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記少なくとも１つの単一エントリトライテーブルを除去する、
上記各ステップを有していることを特徴とする方法。
【請求項２３】
請求項２２において、前記パス圧縮パターン及び前記スキップカウントを使用して前記データ構造から前記単一エントリトライテーブルを除去する場合に、
前記パイプラインネットワーク検索エンジンの複数個の段においてパス圧縮最適化を検索し、
前記パイプラインネットワーク検索エンジンの少なくとも１つの段において前記パス圧縮最適化を検知し、
前記少なくとも１つの単一エントリトライテーブルと関連する前記パイプラインネットワーク検索エンジンの前記少なくとも１つの段をスキップする、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大略、電子通信ネットワークにおけるルーターに関するものであって、更に詳細には、トライアルゴリズムネットワーク検索エンジンに関するものである。
【背景技術】
【０００２】
電子通信ネットワークは、パケットで電子データを送信及び受信することが可能なネットワークルーターを有している。各ネットワークルーターは、入って来る情報パケットを、そのパケットの意図されているデスティネーション即ち宛先のルート即ち経路上にある次の隣りのルーターへ指向させる。各ネットワークルーターは、そのパケットのデスティネーションＩＰ（インターネットプロトコル）プレフィックスに従ってそのパケットに対する適宜の「次のホップ」アドレスを決定するためにルーチングテーブルに関してプレフィックスルックアップ操作を実施せねばならない。
【０００３】
プレフィックスルックアップ操作は、ネットワークプロセッサによるか、又は、より一般的には、ネットワーク検索エンジンと呼称される別の装置によるかのいずれかにより行われる。ネットワークプロセッサ又はネットワーク検索エンジンのタスクは、デスティネーションプレフィックス及びそれらの関連する「次のホップ」情報からなるルーチングテーブルに関しての検索を維持し且つ実施することである。例示的な従来のルーターシステム１００を図１に示してある。パケットが入口ユニット１１０へ入り且つネットワーク処理ユニット（ＮＰＵ）１２０へ通過される。ＮＰＵ１２０はバックプレーンユニット１３０へ結合されており且つネットワーク検索エンジン（ＮＳＥ）１４０へ結合されている。ＮＰＵ１２０はそのパケットに対する検索キーをＮＳＥ１４０へ送る。ＮＳＥ１４０はＮＳＥ１４０内のルーチングテーブル（不図示）の検索を実施し且つ「次のホップ」情報をＮＰＵ１２０へリターンする。次いで、ＮＰＵ１２０はそのパケットを出口ユニット１５０を介してその「次のホップ」デスティネーションへ送る。
【０００４】
ルーチングテーブルを検索するタスクを実施することが可能な種々のタイプのネットワーク検索エンジンが存在している。本発明は、ビットマップ型マルチビットトライアルゴリズム検索アルゴリズムを実現するためにメモリの複数個のバンクを使用するパイプライン型ハードウエアを使用することが可能なタイプのネットワーク検索エンジンにおける改良に関するものである。図２は従来のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジン２００のブロック図を例示している。ネットワーク検索エンジン２００は入力インターフェース２１０、初期論理ユニット２２０、複数個のパイプライン型論理ユニット（２３０，２４０）、複数個のメモリバンク（２５０，２６０，２７０）、出力インターフェース２８０を有している。
【０００５】
図２に示したような典型的なパイプライン型ハードウエアネットワーク検索エンジンにおいては、検索キーに関する検索は段において行われる。パイプライン型論理ユニット（２３０，２４０）の各段におけるパイプライン論理は検索キーのある部分を処理する。検索キーにおけるビットが検査されると、（１）最終的な一致が見つかったか又は一致が見つからなかったかのいずれかのために検索を終了するため、又は（２）次の段へ継続するための決定が行われる。アドレスを発生し且つ関連するメモリバンクへ送り且つメモリの読取を実施することにより次の段へ検索が継続して行われる。
【０００６】
検索を継続するための決定がなされる場合には、メモリから読取られるデータは次の段のパイプライン論理ユニットへ送られ、且つ検索キーの次の部分が処理される。検索処理は、最終的な一致が見つかるか又は一致が見つからないのいずれかとなるまで継続して行われる。
【０００７】
ルーチングテーブルを格納するために使用せねばならないメモリの量を減少させるため及びルックアップ操作期間中になされねばならないメモリアクセスの数を減少させるために種々のソフトウエアアルゴリズムが開発されている。「トライ（ｔｒｉｅ）」は、ストリング内のビットが検索ツリーの分岐の方向を決定する二進ストリングを表わすデジタル検索ツリーデータ構造及びアルゴリズムである。「トライ（ｔｒｉｅ）」という用語は、「ｒｅｔｒｉｅｖａｌ」という単語の中間の４個の文字からとったものである。トライアルゴリズムはデスティネーションＩＰプレフィックス（プレフィックスの数値に従って）を容易に検索可能なツリー構造へ階層的に編成する。
【０００８】
二進トライは高々２個の分岐を有しており、一方マルチビットトライは一度に複数個のビットを消費し且つ幾つかの分岐を有している。マルチビットトライの各分岐は次のレベルへ通じている。マルチビットトライにおいて消費されるビット数は「ストライド（ｓｔｒｉｄｅ）」と呼称される。一様幅ストライドトライは、ストライドの全てが同一の幅を有する（但し、プレフィックス長の残部をストライド幅で割算した最後のストライドを除く）トライである。マルチビットトライアルゴリズムは、一様幅ストライドトライ又は可変幅ストライドトライにおいてプレフィックスを格納し且つ検索することにより動作する。
【０００９】
マルチビットトライビットマップアルゴリズムは全ての分岐をテーブル内の同一の「親」ストライド値を有する同一のレベル内にグループ化する。これは「トライテーブル」と呼ばれる。プレフィックスがｎビットストライドからなるアレイ内に分割される場合には、次のレベルのトライテーブルにおける可及的に最大のエントリは２nである。次のレベルのトライテーブルは、時折、「子」トライテーブルと呼称される。該アルゴリズムは同一の親からの全ての次のレベルのストライド値を２nビットデータフィールド内にエンコードし且つそれを、次のレベル（子）トライテーブルのベースアドレスと共に、親トライテーブル内のエントリ内に格納する。この情報を格納するデータ構造は「トライノード」と呼ばれる。
【００１０】
２nの最大寸法の代わりに存在するエントリの実際の数に対してメモリを割当てることによりテーブル圧縮が達成される。各プレフィックスの最後のストライドに対して、同様のタイプのデータ構造が使用されるが、この場合においては、ポインターが次のレベルのトライテーブルの代わりに「次のホップ」情報を包含するテーブルを指し示す点が異なる。このタイプのエントリは「エンドノード」と呼ばれる。
【００１１】
ルーチングテーブルルックアップも同一幅ストライドで実施される。次のレベルのストライドにおける値がデコードされ且つその親テーブルエントリにおけるデータフィールドで処理される。同一のストライド値を有する格納されている値が存在することが決定される場合には、その情報を使用してインデックスが計算される。テーブルポインター及びこのインデックスは次のレベルのトライテーブルエントリへ通じるアドレスを形成し且つ検索が継続して行われる。一致が見つからない場合には、その検索は成功せずに終了する。検索がエンドノードに到達し且つ一致が見つかった場合には、その検索は成功であり且つ関連する「次のホップ」情報が「次のホップ」テーブルから読取られる。
【００１２】
典型的なルーチングテーブルにおいて、共通の高次ビット（ストライド）を有するその他のプレフィックスは親トライテーブルを共用する。このことはプレフィックスを格納するために必要なメモリの量を減少させる。又、典型的なルーチングテーブルにおいて、時折、多数の単一エントリ中間トライテーブル（非葉テーブル）が存在している。このことは、多数のプレフィックスが高次ビット（ストライド）のストリングを共用する場合に発生する。ルックアップ操作期間中、これらのトライテーブルのシリーズが、一致する葉エントリが見つかるまで又はそのリンクの終りに遭遇するまで、これらのトライテーブルのシリーズが次々とアクセスされる。
【００１３】
ネットワークプロセッサユニット等の従来のソフトウエアを基礎としたパケットルックアップ装置においては、単一エントリトライテーブルの場合にアクセスされるべきトライテーブルのレベルを減少させるために「パス圧縮」と呼ばれる方法が使用される。パス圧縮は、一連の非葉単一エントリトライテーブルを、トライテーブル内のビットマップを表わし且つそのパターンの二進長（スキップカウント）と共に１つの位置に入れられた実際のプレフィックスパターン（ストライド）で置換することにより動作する。従って、サーチ期間中、同数のストライドをチェックするために一連のトライテーブルに対して複数回のメモリアクセスを行う代わりに、ネットワークプロセッサユニットはプレフィックスパターンを検索し且つビットからなるマルチ「ストライドフル（ｓｔｒｉｄｅ−ｆｕｌ）」の一致ステータスを決定するために単に１つのメモリアクセスを実施することが可能である。然しながら、このアプローチは通常のパイプラインの流れとのその見掛け上の不一致のためにパイプライン型ハードウエアを基礎とした装置において使用されたことはない。
【００１４】
「パス圧縮」を使用することのない従来のパイプライン型ハードウエア検索エンジンについて検討する。単一エントリトライテーブルを取扱うためのこのような検索エンジンにより使用される方法はメモリ空間、メモリ帯域幅、パワーを浪費する。例えば、トライテーブルの内容が、典型的に、テーブルヘッダーと１つ又はそれ以上のテーブルエントリとを有する場合について検討する。テーブルヘッダーはバックトラックポインター（親トライテーブルエントリのアドレス）を保持している。単一エントリトライテーブルが存在する場合には、単一エントリテーブルを指し示す親エントリは単に１つのセットビットでビットマップを保持する。子トライテーブルは１つのテーブルヘッダーと１つのデータエントリとから構成されている。一連の単一エントリトライテーブルにおいて、各爾後的子テーブルのビットマップの１つのセットビットを有している。従来のパイプライン型ハードウエア検索エンジンは、３つのタイプの単一エントリトライテーブルを取扱うためにメモリ空間と、メモリ帯域幅と、パワーとを使用する。これらのテーブルを除去することが可能である場合には、単一エントリテーブルに対するメモリアクセスも除去される。このことは、メモリ空間、メモリ帯域幅、パワーにおいて顕著な節約となる。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
従って、単一エントリトライテーブルのパス圧縮を最適化するための装置及び方法に対する必要性が存在している。単一エントリトライテーブルにより占有されるメモリ空間を節約し且つパイプライン型ハードウエアネットワーク検索エンジンにおける単一エントリトライテーブルへアクセスする場合に関連するメモリ帯域幅及びパワーを節約するための装置及び方法の必要性が存在している。
【課題を解決するための手段】
【００１６】
上述した従来技術の欠点を解消するために、本発明の主要な目的とするところは、パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンに関連する単一エントリトライテーブルのパス圧縮を最適化する装置及び方法を提供することである。
【００１７】
本発明の好適実施例においては、ルーター内のネットワーク検索エンジンがデータパケットの共通プレフィックスビット（「パス圧縮パターン」と呼称される）及びそのパターンの長さ（「スキップカウント」と呼称される）を親トライテーブルエントリ内に埋込む。本発明は、ネットワーク検索エンジンが「パス圧縮」エントリの意味を解釈し且つ再定義することを可能とする新たな組のフォーマットを提供する。このことは、ネットワーク検索エンジンが、データ構造から多数の単一エントリトライテーブルを除去し、一方データ構造内の全てのデータへのアクセスを保存することを可能とする。不必要な単一エントリトライテーブルの除去は、そうでなければ、単一エントリトライテーブルにより占有されるであろうメモリ空間を節約する。不必要な単一エントリトライテーブルの除去は、又、データ構造をトラバースするのに必要なメモリアクセスの数を減少させる。
【００１８】
本発明の１つの目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおけるデータ構造における不必要な単一エントリトライテーブルを除去する最適化したパス圧縮プロセスを提供することである。
【００１９】
本発明の別の目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおいてメモリ空間及びメモリ帯域幅の顕著な節約を得るためにデータ構造における不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
【００２０】
本発明の更に別の目的とするところは、パイプライン型ハードウエアネットワーク検索エンジンにおけるパワー消費の顕著な節約を得るためにデータ構造における不必要な単一エントリトライテーブルを除去する最適化したパス圧縮プロセスを提供することである。
【００２１】
本発明の別の目的とするところは、各パイプライン論理段及び各メモリバンクが各ルックアップに対し一度だけアクセスされる１パスプレフィックスルックアッププロセスと最適化したパス圧縮プロセスが互換性があるように関連する親トライテーブル内のパス圧縮パターン及びスキップカウントをエンコードすることによりデータ構造内の不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
【００２２】
本発明の更に別の目的とするところは、テーブルアップデートオーバーヘッドを最小とさせるために関連する親トライテーブル内のパス圧縮パターン及びスキップカウントをエンコードすることによりデータ構造内の不必要な単一エントリトライテーブルを除去するための最適化したパス圧縮プロセスを提供することである。
【発明を実施するための最良の形態】
【００２３】
以下に説明する図１乃至１０及び本明細書において本発明の原理を説明するために使用する種々の実施例は単に例示的なものであって本発明の技術的範囲を制限するような態様で解釈されるべきものではない。当業者によって理解されるように、本発明の原理は任意の適宜構成したネットワーク検索エンジンにおいて実現する事が可能なものである。
【００２４】
本発明は、ワンパス（ｏｎｅ−ｐａｓｓ）プレフィックスルックアップと互換性のある実現例を提供すべく設計されている。このことは、各パイプライン論理ユニット及び各メモリバンクが各ルックアップに対して一度だけアクセスされることを意味する。本発明は、又、テーブルアップデートオーバーヘッドを最小とさせる実現例を提供すべく設計されている。このことは、本発明は、既存のエントリの最小のメモリ移動でプレフィックス挿入及び削除を実施することを意味している。
【００２５】
本発明は、（１）パス圧縮パターンを関連する親ノードにおいてエンコードし、且つ（２）パス圧縮プロセスのすぐ後に続くトライテーブルを本発明のパス圧縮プロセスを実施する前に元のトライテーブルが存在すべく予定されていたメモリバンク内に配置させることによりこれらの設計目的を達成する。
【００２６】
本発明は「パス圧縮」エンティティを表わすために使用される２つの新たなフォーマットを作成する。パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおける本発明の好適実施例は、選択したトライテーブル（不図示）に対して第一トライテーブルエントリ３２０（図３Ｂ）及び第二トライテーブルエントリ３４０（図３Ｃ）を画定する。トライテーブルエントリ３００（図３Ａ）は従来のトライテーブルエントリである。トライテーブルエントリ３００は「ビットマップ」データフィールド３０５、「ポインター」データフィールド３１０、「コード」データフィールド３１５を有している。ビットマップデータフィールド３０５は選択したトライテーブル内に格納されているプレフィックスの特定のセクションのエンコードした値を包含している。ビットマップデータフィールド３０５内のデータは、次続のトライテーブル（即ち、選択したトライテーブルの後のトライテーブル）における次のエントリを探し出すための情報を提供するために使用される。ポインターデータフィールド３１０は次続のトライテーブルのベースアドレスを包含している。コードデータフィールド３１５は現在のエントリのフォーマットを包含している。
【００２７】
説明の便宜上、ビットマップデータフィールド３０５が正確にデータの１つのストライドを保持しているものと仮定する。ストライド幅が４である場合、ビットマップ幅は１６である（即ち、２の４乗である）。
【００２８】
本発明は第一トライテーブルエントリ３２０と第二トライテーブルエントリ３０４を有している。第一トライテーブルエントリ３２０は「パターン」データフィールド３２５、「ポインター」データフィールド３３０、「コード」データフィールド３３５を有しており、図３Ｂに示してある。第一トライテーブルエントリ３２０はｎ個のストライドのスキップカウントを有するパス圧縮エントリを表わす。例えば、ビットマップ幅が１６でストライド幅が４の場合には、パターンの４個のストライドを１つのノードに保持させることが可能である（即ち、４個のストライド×ストライド当たり４個のビット＝１６ビットである）。この場合には、スキップカウントは３である。即ち、最後の段に対する通常の４個のビットストライドに加えて、３個のスキップした４個のビットストライドが存在している。
【００２９】
第二テーブルエントリ３４０は、図３Ｃに示したように、「パターン」データフィールド３４５、「カウント」データフィールド３５０、「ポインター」データフィールド３５５、「コード」データフィールド３６０を有している。第二トライテーブルエントリ３４０は１個のストライドから（ｎ−１）ストライドへのスキップカウントを有する「パス圧縮」エントリを表わす。
【００３０】
スキップカウントはビットマップデータフィールド３０５内に格納される。ビットマップデータフィールド３０５は、スキップカウントがｎ未満である場合には、完全には使用されないので、図３Ｃに示したように、スキップカウントをカウントデータフィールド３５０内に不使用のビットでエンコードすることが可能である。
【００３１】
本発明の動作をより良く理解するために、図２に示した従来のパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジンの動作を最初に説明する。最初に、検索キーが入力インターフェース２１０へ供給される。入力インターフェース２１０は検索キーと検索コマンドとを初期論理ユニット２２０へ送ることにより検索操作を開始する。初期論理ユニット２２０はメモリアドレスを発生し且つメモリバンク０（参照番号２５０で示してある）に関してメモリ読取を実施する。初期論理ユニット２２０は（１）検索コマンド、（２）検索キー、（３）メモリバンク０（２５０）から読取ったメモリデータ（ノードデータ）をパイプライン論理段１（参照番号２３０で示してある）へ送る。
【００３２】
パイプライン論理段１（２３０）は、メモリバンク０（２５０）からのトライノードデータをデコードし且つそれを検索キーの第一セグメント（即ち、第一ストライド）と比較することにより一致が存在するか否かを決定する。その検索結果が、一致するプレフィックスが見つかり且つ検索を継続すべきでないことを表わす場合には、その検索は終了し且つパイプライン論理段１（２３０）は「一致」の検索結果情報を信号線（図２には示していない）を介して出力インターフェース２８０へ送る。その検索結果が、一致するプレフィックス又は子トライテーブルが見つからなかったことを表わす場合には、その検索は終了し且つパイプライン論理段１（２３０）は「一致なし」の検索結果情報を信号線（図２には示していない）を介して出力インターフェース２８０へ送る。
【００３３】
検索結果が、一致する子トライテーブルが見つかり且つ検索を継続すべきであることを表わす場合には、パイプライン論理段１（２３０）はメモリアドレスを発生し且つメモリバンク１（参照番号２６０で示してある）に関してのメモリ読取を実施する。パイプライン論理段１（２３０）は（１）検索コマンド、（２）検索キー、（３）メモリバンク１（２６０）から読取ったメモリデータ（ノードデータ）をパイプライン論理段２（参照番号２４０で示してある）へ送る。パイプライン論理段２（２４０）はそのデータを検査し且つ検索プロセスを繰返し行う。
【００３４】
最後に、その検索プロセスがパイプライン論理段Ｎ（図２には示していない）及びメモリバンクＮ（参照番号２７０で示してある）により表わされる最後のパイプライン段に到達すると、検索プロセスはそこで終了し且つ検索結果が出力インターフェース２８０へ送られる。
【００３５】
図４は本発明の原理に基づくパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジン４００のブロック図を例示している。説明の便宜上、従来のネットワーク検索エンジン２００の要素と同一であるネットワーク検索エンジン４００の要素には同一の参照番号を付してある。ネットワーク検索エンジン４００は、入力インターフェース２１０、初期論理ユニット２２０、複数個のパイプライン型論理ユニット（２３０，２４０）、複数個のメモリバンク（２５０，２６０，２６５，２７０）、出力インターフェース２８０を有している。更に、ネットワーク検索エンジン４００は、複数個のＰＣ論理ユニット（４１０，４４０）、複数個のシフトデータ格納ユニット（４２０，４５０）、複数個のマルチプレクサ（４３０，４６０）を有している。
【００３６】
図４に示したように、ネットワーク検索エンジン４００の第一段は、入力インターフェース２１０、初期論理ユニット２２０、メモリバンク０（２５０）を有している。ネットワーク検索エンジン４００の第二段は、パイプライン論理ユニット２３０（パイプライン論理段１）、メモリバンク１（２６０）、ＰＣ論理ユニット４１０、シフトデータ格納ユニット２０４、マルチプレクサ４３０を有している。ネットワーク検索エンジン４００の第三段は、パイプライン論理ユニット２４０（パイプライン論理段２）、メモリバンク２（２６５）、ＰＣ論理ユニット４４０、シフトデータ格納ユニット４５０、マルチプレクサ４６０を有している。ネットワーク検索エンジン４００のその他の段（不図示）は第二及び第三段と同一の構成を有しているが、最後のメモリバンク（メモリバンクＮ２７０）の出力が出力インターフェース２８０へ結合されている点が異なっている。
【００３７】
ネットワーク検索エンジン４００の各段において、ＰＣ論理ユニット（例えば、ＰＣ論理ユニット４１０）はそれの関連するパイプライン論理ユニット（例えば、パイプライン論理段１（２３０））におけるパス圧縮最適化の存在をサーチし且つ検知する。各段におけるＰＣ論理ユニットは、本発明の新たなトライノードフォーマット（即ち、第一トライテーブルエントリ３２０及び第二トライテーブルエントリ３４０）をサーチし且つ検知することによりこのことを行う。次いで、各段におけるＰＣ論理ユニットはパス圧縮最適化を処理する。パス圧縮最適化の処理結果に依存して、ＰＣ論理ユニットは通常のサーチ結果（即ち、関連するパイプライン論理ユニットにより得られたサーチ結果）を修正し且つ制御することが可能である。
【００３８】
各ＰＣ論理ユニット（４１０，４４０）はネットワーク検索エンジン４００におけるそれの関連するパイプライン論理段（２３０，２４０）を置換することはない。その代わりに、より詳細に説明するように、各ＰＣ論理ユニットはパス圧縮最適化を検知し且つ処理するための補充的な機能を提供する。パス圧縮最適化が検知されない場合には、ネットワーク検索エンジン４００はネットワーク検索エンジン２００と同一の態様で動作する。
【００３９】
ＰＣ論理ユニットがパス圧縮最適化を検知すると、現在のパイプライン論理段に対応する検索キーの部分が関連するパス圧縮パターン（即ち、前のメモリバンクから読取られたデータ）の対応する部分と比較される。
【００４０】
一致が見つかる場合には、（１）現在のメモリバンクに対するメモリ読取動作が抑圧され、且つ（２）パス圧縮パターンの残りの未処理部分がラッチされ且つ次のパイプライン論理段へ送られる。
【００４１】
（１）パス圧縮はデータの複数個のストライドフル（ｓｔｒｉｄｅｆｕｌ）を有する場合があり且つ（２）各パイプライン論理ユニット及び各ＰＣ論理ユニットは一度にデータの１つのストライドのみを処理するので、残りの圧縮パターンを表わすデータは、それが次の段へ通過される前に、シフトされる。
【００４２】
シフトされたデータはシフトデータ格納ユニット内に格納され且つ現在のＰＣ論理ユニットの制御下においてマルチプレクサを介して次のパイプライン論理ユニットへ送られる。シフトされたデータは、現在のメモリバンクからのメモリデータの代わりに次のパイプライン論理ユニットにおいて使用される。
【００４３】
ＰＣ論理ユニットは、又、対応するスキップカウントをアップデートする（例えば、スキップカウントを１だけデクリメントすることにより）。スキップカウントは、幾つのパイプライン論理段をスキップすべきであるかを表わす。ＰＣ論理ユニットは、シフトしたデータが次のパイプライン論理ユニットへ送られる場合に、信号線（不図示）を介してアップデートしたスキップカウントを次のパイプライン論理ユニットへ送る。
【００４４】
次いで、次の段のＰＣ論理ユニットがシフトしたデータ及び検索キーの対応する部分（ストライド）を検査して、一致条件が存在するか否かを決定する。検索キーの関連する部分がシフトしたデータの対応する部分と一致する場合にのみサーチ（検索）プロセスが継続して行われる。そうでなければ、サーチ即ち検索は終了する。
【００４５】
検索が継続し且つ残りのスキップカウントがゼロより大きい場合には、現在の段のＰＣ論理ユニット（パイプライン論理ユニットと共に）が（１）現在のメモリバンクに対するメモリ読取動作を抑圧し、（２）残りのスキップカウントをアップデートし、（３）残りの圧縮パターンを表わすデータをシフトし、（４）更なる処理のために検索データを次のパイプライン段へ送る。
【００４６】
パス圧縮最適化の処理は、スキップカウントがゼロに到達する場合に終了する。その時点において、新たなメモリアドレス及び読取動作が現在のメモリバンクにおいて実施される。データ及び残りの検索キーが処理のために次のパイプライン段へ送られ且つ通常の検索処理が再開される。
【００４７】
例えば、図４に示したネットワーク検索エンジン４００の以下の動作について検討する。最初に、検索キーが入力インターフェース２１０へ供給される。入力インターフェース２１０は、検索キー及び検索コマンドを初期論理ユニット２２０へ送ることにより検索動作を開始する。初期論理ユニット２２０はメモリアドレスを発生し且つメモリバンク０（参照番号２５０で示してある）に関してメモリ読取を実施する。初期論理ユニット２２０は、（１）検索コマンド、（２）検索キー、（３）メモリバンク０（２５０）から読取ったメモリデータ（ノードデータ）をパイプライン論理段１（参照番号２３０で示してある）へ送る。パイプライン論理段１（２３０）は、メモリバンク０（２５０）からのトライノードデータをデコードし且つそれを検索キーの第一セグメント（即ち、第一ストライド）と比較することにより一致が存在するか否かを決定する。その検索結果が、一致するプレフィックスが見つかり且つ検索を継続すべきでないことを表わす場合には、検索は終了し且つパイプライン論理段１（２３０）は「一致」の検索結果情報を信号線（図４には示していない）を介して出力インターフェース２８０へ送る。検索結果が、一致するプレフィックス又は子トライテーブルが見つからなかったことを表わす場合には、その検索は終了し且つパイプライン論理段１（２３０）は「一致なし」の検索結果情報を信号線（図４には示していない）を介して出力インターフェース２８０へ送る。
【００４８】
検索結果が、一致する子トライテーブルが見つかり且つ検索が継続すべきであることを表わす場合には、パイプライン論理段１（２３０）はメモリアドレスを発生し且つメモリバンク１（参照番号２６０で示してある）に関してのメモリ読取を実施する。ＰＣ論理ユニット４１０がパス圧縮最適化を検知しない場合には、ＰＣ論理ユニット４１０はパイプライン論理段１（２３０）をして（１）検索コマンド、（２）検索キー、（３）メモリバンク１（２６０）から読取ったメモリデータ（ノートデータ）をパイプライン論理段２（参照番号２４０で示してある）へ送らせる。メモリバンク１（２６０）からのメモリデータ（ノートデータ）はＰＣ論理ユニット４１０の制御下においてマルチプレクサ４３０を介して通過する。次いで、パイプライン論理段２（２４０）はそのデータを検査し且つ検索プロセスが繰返し行われる。
【００４９】
次に、ＰＣ論理ユニット４１０がパス圧縮最適化を検知する場合について検討する。ＰＣ論理ユニット４１０は、メモリバンク１（２６０）に対する通常のメモリ読取動作を抑圧する。ＰＣ論理ユニット４１０はマルチプレクサ４３０を制御して、メモリバンク１（２６０）からパイプライン論理段２（２４０）へのメモリデータ（ノードデータ）の転送を抑圧する。その代わりに、ＰＣ論理ユニット４１０は、パイプライン論理段１（２３０）をして、残りの圧縮パターンを表わすデータをシフトさせる。シフトされたデータはシフトデータ格納ユニット４２０内に格納される。ＰＣ論理ユニット４１０はマルチプレクサ４３０を制御して、シフトされたデータをパイプライン論理段２（２４０）へ送る。
【００５０】
次いで、ＰＣ論理ユニット４１０はスキップカウントをアップデートし（例えば、スキップカウントを１だけデクリメントすることにより）且つパイプライン論理段１（２３０）をしてアップデートしたスキップカウントをパイプライン論理段２（２４０）へ送らせる。パイプライン論理段２（２４０）及びＰＣ論理ユニット４４０は、次いで、検索プロセスを継続して行う。
【００５１】
ＰＣ論理ユニット４４０が、スキップカウントがゼロに到達したことを決定するものと仮定する。次いで、ＰＣ論理ユニット４４０はパス圧縮最適化の処理を終了する。ＰＣ論理ユニット４４０は、パイプライン論理段２（２４０）をして、メモリバンク２（２６５）に対しての新たなメモリアドレス及び読取動作を実施させる。この場合に、メモリアクセスは１つのメモリバンク（即ち、メモリバンク１（２６０））のみに対して抑圧される。ＰＣ論理ユニット４４０は、パイプライン論理段２（２４０）をしてデータ及び残りの検索キーを処理のために次のパイプライン段（図４においては不図示）へ送らせる。ＰＣ論理ユニット４４０は、又、マルチプレクサ４６０を制御して、メモリバンク２（２６５）から次のパイプライン段（図４には示していない）へのメモリデータ（ノードデータ）の転送を可能とさせる。通常の検索プロセスが再開される。
【００５２】
最後に、検索プロセスがパイプライン論理段Ｎ（図４には示していない）及びメモリバンクＮ（参照番号２７０で示してある）により表わされる最後のパイプライン段に到達すると、検索プロセスはそこで終了し且つ検索結果が出力インターフェース２８０へ送られる。
【００５３】
図５Ａは本発明の最適化させたパス圧縮を適用する前のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的な従来のメモリ構造５００を例示している。メモリ構造５００は、５個のパイプライン段５１５，５２０，５２５，５３０，５３５を有している。メモリ構造５００は、又、夫々５個のパイプライン段と関連している５個のメモリバンク５４０，５４５，５５０，５５５，５６０を有している。
【００５４】
本発明の最適化させたパス圧縮プロセスを実施するまえに、メモリバンク５４０はメモリ番号５４５内のメモリ位置を指し示すポインターを包含している。メモリバンク５４５はメモリバンク５５０内のメモリ位置を指し示すポインターを包含している。メモリバンク５５０はメモリバンク５５５内のメモリ位置を指し示すポインターを包含している。メモリバンク５５５はメモリバンク５０６内の位置を指し示すポインターを包含している。
【００５５】
図５Ｂは本発明の最適化させたパス圧縮を適用した後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的なメモリ構造５１０を例示している。本発明の最適化パス圧縮プロセスを実施した後に、メモリバンク５４０はメモリバンク５６０内のメモリ位置を指し示すポインターを包含している。メモリバンク５６０内のメモリ位置に到達するためにメモリバンク５４５，５５０，５５５を逐次的にアクセスすることは最早必要ではない。メモリバンク５４０はメモリバンク５６０へ直接的に到達する。この場合には、スキップカウントは３である。３個のパイプライン段（５２０，５２５，５３０）がスキップされる。
【００５６】
トライテーブルエントリ３００におけるポインターデータフィールド３１０が、通常、次のパイプライン段における次のトライテーブルのベースアドレスを保持する。ＰＣ論理ユニットが段Ｓにおけるパス圧縮最適化を検知し且つ本発明の最適化パス圧縮プロセスを実施するものと仮定する。スキップカウントがｎストライドに等しい場合には、最適なパス圧縮プロセスを実施した後に、第一トライテーブルエントリ３２０内のポインターデータフィールド内の３３０はパイプライン段（Ｓ＋ｎ＋１）における次のトライテーブルのベースアドレスを保持する。スキップカウントが１ストライドから（ｎ−１）ストライドの範囲にある場合には、第二トライテーブルエントリ３４０のポインターデータフィールド３５５は、最適化パス圧縮プロセスを実施した後に次のトライテーブル（１ストライドのスキップカウントに対するパイプライン段（Ｓ＋２）から（ｎ−１）ストライドのスキップカウントに対するパイプライン段（Ｓ＋ｎ）へ）のベースアドレスを保持している。
【００５７】
本発明の最適化パス圧縮プロセスを実施した後に、次のトライテーブルを次のパイプライン段内に位置されているメモリバンク内へ配置させることが可能である。然しながら、将来の拡張のために余裕を残すために、パス圧縮最適化をブレークすることが必要となる場合には、最適化パス圧縮プロセスを実施する前に元のトライテーブルが存在したメモリバンク内へ次のトライテーブルを配置させることが望ましい。図６は、メモリバンク５４０のすぐ後に続くメモリ構成５１０のメモリバンク５４５内にどのようにして次のトライテーブルを配置させることが可能であるかを例示している。この次のトライテーブルの配置は、既存のデータテーブルを移動させることなしに将来のテーブル拡張を行うことを可能とする。このことは、又、最適化パス圧縮プロセスが使用されない場合に、新たなトライテーブルを配置させる場所が存在していることを意味している。
【００５８】
将来の拡張及び本発明の動作の明確化のために、以下の例について検討する。例示的なデータ構造は４の等しいストライド長でグループ化されたものとして表わしてある以下の組のプレフィックスを有している。
【００５９】
【表１】
2004194343.tif 000003
【００６０】
４ビットストライドをエンコードするビットマップは１６個のビット（２の４乗）から構成されている。プレフィックスＰ０乃至Ｐ５を表わすデータ構造を図７に示してある。図７において、ラベルＴｎ（尚、ｎは数である）はパイプライン段ｎにおけるテーブルを示している。ラベルＥｎ（尚、ｎは数である）はテーブル内のエントリを示している。例えば、Ｔ０は第一レベルトライテーブル（パイプライン１）を表わしている。Ｔ１は第二レベルトライテーブル（パイプライン２）を表わしている。Ｔ１Ｅ１及びＴ１Ｅ２はテーブルＴ１のデータエントリ０及びデータエントリ１を表わしている。Ｔ１Ｅ０はＴ１テーブルヘッダーを表わしている。
【００６１】
テーブル内の各エントリは多数のフィールドを保持することが可能であるが、説明の便宜上、図７に示したエントリにおいては２つのフィールドのみを示してある。最初のものは次のレベル即ち「子」テーブル内のデータエントリの数及び位置を表わすビットマップフィールドである。２番目のものは、次のレベル即ち「子」テーブルのベースアドレスを保持するポインターである。
【００６２】
図７に示したデータ構造を検査すると、２つのチェーンの非葉単一エントリトライテーブルが見える。テーブルＴ２ａは第一チェーン内の唯一のテーブルである。テーブルＴ２ｂ，Ｔ３ｂ，Ｔ４ｂ，Ｔ５ｂ，Ｔ６ｂは第二チェーンを形成している。本発明の最適化パス圧縮プロセスを使用すると、Ｔ１Ｅ１ビットマップフォーマットを修正することによりテーブルＴ２を除去することが可能である。Ｔ１Ｅ１ビットマップはビットマップパターン「１１０１  ００１０」で置換され且つその意味は「１ストライドでのパス圧縮」を表わすフォーマットの１つのタイプを作成することにより再定義される。検索プロセス期間中、ルックアップ論理は「１１０１  ００１０」を保持するパス圧縮エントリとしてそのエントリを解釈し且つそのエントリをそれに従って取扱う。
【００６３】
同様に、本発明の最適化パス圧縮プロセスは、テーブルを除去するために第二チェーンの非葉単一エントリテーブルに対して適用することが可能である。この場合には、４ビットパターンの６個のストライドを表わす５個の連続した非葉単一エントリテーブルが存在している。ビットマップデータフィールド内には１６ビットが存在するに過ぎないので、パターンの４個のストライドのみを１つのエントリ内に配置させることが可能であるに過ぎない。最適化パス圧縮は、２つの連続するパス圧縮テーブルを使用することにより達成することが可能である。第一テーブルはパターンの４個のストライド（即ち、０１００  ００００  １００１  ００１０）を保持し且つ第二テーブルは残りの２つのストライド（１１０１  ０１１０）を保持する。最適化パス圧縮プロセスのこれらのステップを適用することの結果を図８に示してある。
【００６４】
本発明の最適化パス圧縮プロセスを適用することの利点はこのケースから極めて明らかである。図７に示した元のデータ構造には１０個のテーブルが存在している。これら１０個のテーブルは２１個のエントリを包含している。最適化パス圧縮プロセスを適用した後に、１１個のエントリを包含する５個のテーブルが存在するに過ぎない。メモリ空間節約はほぼ４８％である。
【００６５】
更に、テーブルをトラバースするのに必要なメモリアクセスの数も著しく減少される。元の構成においては、プレフィックスＰ０をサーチするために、４個のパイプライン段において４個のメモリアクセスを実施することが必要である。パイプライン段２を除去したテーブルの場合には、新たなデータ構造をトラバースするのに必要なメモリアクセスの数は３個のメモリアクセスへ減少される。
【００６６】
同様に、パイプライン段２，３，４，６におけるメモリアクセスに対する必要性は、プレフィックスＰ１乃至Ｐ５に関するサーチ（検索）に対して除去されている。
【００６７】
図９は本発明のテーブルアップデート方法の好適な実施例の動作を示すフローチャートを例示している。図９に示した方法のステップは集約的に参照番号９００として示してある。
【００６８】
第一ステップにおいて、ステージカウンタＳが１に等しく設定される（ステップ９１０）。次いで、テーブルアップデートプロセスがパス圧縮候補に対するステージ即ち段Ｓをサーチする（ステップ９２０）。ステージ（段）Ｓは第一ステージに対してステージ（段）１である。次いで、ステージＳにおいてパス圧縮候補が見つかったか否かの決定がなされる（決定ステップ９３０）。ステージＳにおいてパス圧縮候補が見つからなかった場合には、通常のプレフィックスアップデートが実施される（ステップ９７０）。次いで、ステージカウンタＳがインクリメントされる（ステップ９４０）。
【００６９】
次いで、新たにインクリメントされたステージカウンタＳがＳMAXによって示されるＳの最大値を超えるか否かの決定がなされる（ステップ９５０）。ＳMAXは問題のネットワーク検索エンジンにおけるステージの最大数を表わす。ステージカウンタがＳMAXより大きくない場合には、制御はステップ９２０へ移り且つ次のステージＳがパス圧縮候補に対してサーチされる。ステージカウンタがＳMAXより大きい場合には、テーブルアップデート方法が完了する。
【００７０】
パス圧縮候補がステップ９３０においてステージＳにおいて見つかった場合には、スキップカウントＮでのパス圧縮最適化が可能であるか否かの決定がなされる（決定ステップ９６０）。スキップカウントＮでのパス圧縮最適化が可能でない場合には、通常のプレフィックスアップデートが実施され（ステップ９７０）且つ本方法は前に説明した如くに継続する。
【００７１】
スキップカウントＮでのパス圧縮最適化が可能である場合には、本方法は、プレフィックスからのパターンのＮ＋１個のストライドをステージＳにおける現在のノード内に配置させる（ステップ９８０）。次いで、ステージカウンタＳはＳ＝Ｓ＋Ｎ＋１の値へアップデートされる（ステップ９９０）。次いで、アップデートしたステージカウンタの値ＳMAXとの比較のために制御はステップ９５０へ通過される。次いで、本方法は前に説明したように継続して行われる。
【００７２】
図１０は本発明のサーチ（検索）方法の好適実施例の動作を示したフローチャートを例示している。図１０に示した方法のステップは集約的に参照番号１０００で示してある。
【００７３】
パス圧縮パターン及びスキップカウントは親ビットマップフィールド内に前もってエンコードされている。検索キー及び検索コマンドが本発明のネットワーク検索エンジン４００へ供給される（ステップ１０１０）。パイプライン論理ユニットが現在のパイプライン段において通常のサーチ（検索）処理を実施する（ステップ１０２０）。そのパイプライン論理ユニットと関連するＰＣ論理ユニットが、現在のパイプライン段においてパス圧縮最適化が存在するか否かを決定する（決定ステップ１０３０）。パス圧縮最適化が現在のパイプライン段内に見つからない場合には、パイプライン論理ユニットはアドレスを発生し且つ次のバンクに対するメモリ読取を実施する（ステップ１０３５）。次いで、制御は次のパイプライン段へ移り（ステップ１０４０）且つ次のパイプライン論理ユニットがそのパイプライン段における通常のサーチ即ち検索プロセスを実施する（ステップ１０２０）。
【００７４】
パス圧縮最適化が現在のパイプライン段において見つかった場合には、ＰＣ論理ユニットは現在のメモリバンクからのメモリデータ読取動作を抑圧し、圧縮パターンデータをシフトし（且つそれをシフトデータ格納ユニット内に格納し）、且つスキップカウントをアップデートする（ステップ１０５０）。次いで、ＰＣ論理ユニットは、次のパイプライン段のパイプライン論理ユニットへ、（１）現在のシフトデータ格納ユニット内に存在するシフトしたデータ、及び（２）アップデートしたスキップカウントを送る（ステップ１０６０）。次のパイプライン段のＰＣ論理ユニットはサーチ即ち検索プロセスを継続する（ステップ１０７０）。次のパイプライン段のＰＣ論理ユニットはアップデートしたスキップカウントの値をチェックして、その値がゼロに等しいか否かを決定する（決定ステップ１０８０）。アップデートしたスキップカウントの値がゼロに等しくない場合には、制御がステップ１０５０へ移り且つ本プロセスが繰返される。アップデートしたスキップカウントの値がゼロに等しい場合には、制御がステップ１０３５へ移り且つ本プロセスは継続して行われる。
【００７５】
図１０は本発明のサーチ即ち検索方法の好適実施例をどのようにしてネットワーク検索エンジンの通常の検索プロセスと統合させることが可能であるかを例示するためのものである。注意すべきことであるが、説明の便宜上、通常の検索プロセスの前述したステップの全てを図１０に示してあるわけではない。
【００７６】
本発明の最適化パス圧縮プロセスは、通常のソフトウエアのみの最適化プロセスをパイプライン型ハードウエアビットマップ型マルチビットトライネットワーク検索エンジン内に組込んでいる。本発明の最適化パス圧縮プロセスは、メモリ空間、メモリ帯域幅、電力消費において顕著な節約を与えている。
【００７７】
共通のプレフィックスビット（パス圧縮パターン）及びパターンの長さ（スキップカウント）を親エントリ内に埋込むことは、単一エントリトライテーブルにより占有されるメモリ空間を節約する。それは、又、メモリ空間と関連するメモリ帯域幅及びパワーを節約する。まばらにデータが存在するルーチングテーブルにおけるように、非葉単一エントリテーブルの発生が頻繁である場合にその利点は特に顕著である。本発明により与えられるメモリ空間における節約は、データセットのまばらな程度に依存して高々３０％乃至４０％となる場合がある。更に、本発明を実現するためのハードウエアの複雑性において必要とされる変更及びエキストラな面積上のコストは些細なものである。
【００７８】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【００７９】
【図１】例示的な従来のルーターシステムを示したブロック図。
【図２】例示的な従来のパイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジンを示したブロック図。
【図３Ａ】ビットマップデータフィールドと、ポインターデータフィールドと、コードデータフィールドとを有する従来のトライテーブルエントリのフォーマットを示した概略図。
【図３Ｂ】本発明の原理に基づくｎ個のスライドのスキップカウントに対して使用される本発明の第一トライテーブルエントリのフォーマットを示した概略図。
【図３Ｃ】本発明の原理に基づく１ストライドから（ｎ−１）ストライドの範囲のスキップカウントに対して使用される本発明の第二トライテーブルエントリのフォーマットを示した概略図。
【図４】本発明の原理に基づくパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンを示したブロック図。
【図５Ａ】本発明に基づく最適化パス圧縮プロセスの適用前のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的な従来のメモリ構造を示した概略図。
【図５Ｂ】本発明の原理に基づく最適化パス圧縮プロセスの適用の後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンの例示的なメモリ構造を示した概略図。
【図６】本発明の原理に基づくテーブル拡張適用後のパイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンのメモリ構造を示した概略図。
【図７】各々が４のストライド長を有している６個のプレフィックスの例示的な組を表わす例示的なデータ構造を示した概略図。
【図８】本発明の原理に基づく最適化パス圧縮プロセスの適用後の図７に示した例示的なデータ構造を示した概略図。
【図９】本発明のテーブルアップデート方法の好適実施例の動作を示したフローチャート。
【図１０】本発明の検索方法の好適実施例の動作を示したフローチャート。
【符号の説明】
【００８０】
２１０  入力インターフェース
２２０  初期論理ユニット
２３０  パイプライン論理段１
２４０  パイプライン論理段２
２５０  メモリバンク０
２６０  メモリバンク１
２７０  メモリバンクＮ
２８０  出力インターフェース
４００  パイプライン型ハードウエアビットマップ型マルチトライアルゴリズムネットワーク検索エンジン
４１０  ＰＣ論理ユニット
４２０  シフトデータ格納ユニット
４３０  マルチプレクサ
４４０  ＰＣ論理ユニット
４５０  シフトデータ格納ユニット
４６０  マルチプレク  
【図１】
2004194343.tif 000004
【図２】
2004194343.tif 000005
【図３Ａ】
2004194343.tif 000006
【図３Ｂ】
2004194343.tif 000007
【図３Ｃ】
2004194343.tif 000008
【図４】
2004194343.tif 000009
【図５Ａ】
2004194343.tif 000010
【図５Ｂ】
2004194343.tif 000011
【図６】
2004194343.tif 000012
【図７】
2004194343.tif 000013
【図８】
2004194343.tif 000014
【図９】
2004194343.tif 000015
【図１０】
2004194343.tif 000016