(57)【特許請求の範囲】
【請求項１】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記固定長データテーブルを構成する全ての固定長データの中で、前記ポインタテーブルのインデックス（ｍビット長）と固定長データの上位ｍビットのうち、固定長データに付属するプリフィックスマスクで示されるビットだけを比較して、一致する固定長データを選出し、
一致する固定長データをすべて固定長データテーブルに保存するか、または、
一致する固定長データのプリフィックスマスクの長さがｍ＋１以上である固定長データを固定長データテーブルに保存し、かつ、一致する固定長データのプリフィックスマスクの長さがｍ以下である固定長データのうちで一番大きなプリフィックスマスクの長さを持つ固定長データを固定長データテーブルに保存する、固定長データ検索装置。
【請求項２】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記比較手段が、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在する場合に、一致結果とそのデフォルトデータを検索結果として出力し、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在しない場合に、不一致結果を検索結果として出力する、固定長データ検索装置。
【請求項３】
前記固定長データテーブルを構成する全ての固定長データの中で、前記ポインタテーブルのインデックス（ｍビット長）と固定長データの上位ｍビットのうち、固定長データに付属するプリフィックスマスクで示されるビットだけを比較して、一致する固定長データを選出し、
一致する固定長データのプリフィックスマスクの長さがｍ＋１以上である固定長データを固定長データテーブルに保存し、
一致する固定長データのプリフィックスマスクの長さがｍ以下である固定長データのうちで一番大きなプリフィックスマスクの長さを持つ固定長データのユーザーデータを前記デフォルトデータとしてポインタテーブルに保存する、請求項２に記載の固定長データ検索装置。
【請求項４】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
検索すべき固定長データが複数の要素から構成されており、
前記データベースメモリが、検索すべき固定長データの個々の要素を保存する固定長データテーブルを複数格納するか、または、複数の要素をグループ化して保存する固定長データテーブルを複数格納する、固定長データ検索装置。
【請求項５】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記データベースメモリに複数の固定長データテーブルが格納されており、
最後に検索される固定長データテーブルを除き、各固定長データテーブルは、
要素と、
該要素に一致するものがある場合に次に検索する固定長データテーブルのインデックスと、
該インデックスにより読み出される要素の数を細分化するパラメータと、
要素の比較を有効にするＩＤと、
を保存する、固定長データ検索装置。
【請求項６】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記比較手段が検索結果を出力する出力手段をさらに備えており、
検索すべき固定長データの要素が複数の固定長データテーブルに保存されており、
前記比較手段は、複数の固定長データテーブルに対して、
（１）検索する固定長データテーブルを定めて今次の固定長データテーブルとし、該今次の固定長データテーブルからの固定長データをサーチキーと比較し、
（２）該比較において不一致の場合には検索結果を前記出力手段から出力し、該比較において一致した場合には、該今次の固定長データテーブルの次の固定長データテーブルから読み出すための読み出し指令を前記ポインタ処理手段に発行するとともに、前記読み出し指令に応じてデータベースメモリから読み出された当該次の固定長データテーブルからの固定長データとそれに対応するサーチキーの一部とをさらに比較し、
（３）最後の固定長データテーブルに格納している最後の固定長データとなるまで（１）から（２）を繰り返す、固定長データ検索装置。
【請求項７】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記テーブル管理手段は、ポインタテーブルと固定長データテーブルの修正に必要な情報を保持する手段と該保持した情報を読み出す手段とを備えており、
前記テーブル管理手段は、入力されたテーブル管理命令に対応する命令コードを持つ検索命令を生成して該命令コードの処理を実行し、前記保持する手段に該検索実行過程でポインタテーブルと固定長データテーブルの修正に必要な情報を保持する、固定長データ検索装置。
【請求項８】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記テーブル管理手段は、ポインタテーブルと固定長データテーブルを修正するために、それらが格納されているポインタテーブルメモリとデータベースメモリのもつ構造上の特徴を利用するフィルオーダー、シフトオーダー、比較オーダーを発行する手段を備える、固定長データ検索装置。
【請求項９】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理手段と、
前記検索命令処理手段またはポインタ処理手段からの出力値をインデックスにして読み出すためのポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記検索命令処理手段の出力と比較手段から出力される比較結果とを用いて指定された処理を行って前記サーチキーに対応するアドレスを出力する前記ポインタ処理手段と、
前記ポインタ処理手段の出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを格納するデータベースメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較する比較手段であって、比較結果が一致の場合に、一致結果と一致した固定長データのユーザーデータとを検索結果として出力する比較手段と、
入力されたテーブル管理命令に対して、ポインタテーブルと固定長データテーブルを変更するテーブル管理手段と、
を備える固定長データ検索装置であって、
前記テーブル管理手段は、固定長データテーブルに保存する固定長データの数を最大化するため、ペアリング手法を使い固定長データテーブルの空きロケーションをなくす手段を備える、固定長データ検索装置。
【請求項１０】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理ステップと、
前記検索命令処理ステップの出力値をインデックスにしてポインタテーブルからポインタ値を読み出すステップと、
前記ポインタテーブルから読み出された前記ポインタ値と検索命令処理ステップの出力値とを用いて、指定された処理を行って前記サーチキーに対応するアドレスを出力するポインタ処理ステップと、
前記ポインタ処理ステップの出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルから複数の固定長データを読み出すステップと、
前記固定長データテーブルから読み出された複数の固定長データと前記入力された検索命令のサーチキーを指定された方法によって比較するステップであって、比較結果が一致の場合、一致結果と一致した固定長データのユーザーデータを検索結果として出力する比較ステップと、
を有する固定長データ検索方法であって、
前記比較ステップは、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在する場合、一致結果とそのデフォルトデータを検索結果として出力し、比較結果が不一致でポインタテーブルの出力にデフォルトデータが存在しない場合、不一致結果を検索結果として出力するものである、固定長データ検索方法。
【請求項１１】
検索のための命令を表す命令コードとサーチキーとから構成される入力された検索命令に対して、指定された処理を行って出力する検索命令処理ステップと、
前記検索命令処理ステップの出力値をインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
（１）前記ポインタテーブルから読み出された前記ポインタ値と検索命令処理ステップの出力値と、または比較ステップの出力値とを用いて、指定された処理を行って前記サーチキーに対応するアドレスを出力するポインタ処理ステップと、
（２）前記ポインタ処理ステップの出力によりアドレス指定される、検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
（３）指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索命令のサーチキーの複数の固定長データに対応する部分と同時に比較し、比較結果が一致した場合、次の固定長データテーブルを読み出す命令をポインタ処理ステップに出力する比較ステップと、
検索すべき固定長データを構成する要素を固定長データとして保存する複数の固定長データテーブルに対して（１）から（３）のステップを繰り返し、最後の固定長データテーブルが読み出され、指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索命令のサーチキーの固定長データに対応する部分と同時に比較し、比較結果が一致した場合、一致結果と一致した固定長データに伴うユーザーデータを、比較結果が不一致の場合、不一致の検索結果を出力する比較ステップと、
を有する固定長データ検索方法。
【請求項１２】
コンピュータを、請求項１〜請求項９のいずれかに記載の装置として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データの検索装置、データの検索方法に関する。特に、本発明は、データのビット長が一定である固定長データの集合であるデータベースから、指定された検索ルールの下で一致するデータを高速に検索する機能を備える制御方法、制御プログラム、並びに制御用データ構造に関する。さらに詳しくは、ネットワーク間中継装置における宛先ルートの高速検索およびフィルター機能に必要な複数の検索ルールの下で実行される高速検索を実現するための通信制御方法、通信制御プログラム、並びに通信制御用データ構造に関する。
【背景技術】
【０００２】
データベースから希望する固定長データを高速で検索する要求は各種分野において存在する。特にネットワーク間中継装置に使用される中継先判定および中継判定のためのデータベースにおいては、特殊な検索ルールによる宛先アドレスの検索、異なる複数の検索ルールによる検索、高速な検索等、さらなる高度な要求が存在する。
【０００３】
ネットワーク間中継装置（ルーター等）に使用されるルートデータベースの中から希望するＩＰ（Internet Protocol）アドレスを検索する場合、ＬＰＭ（Longest Prefix Match）ルールに基づく検索が必要である。ＩＰアドレスは基本的にネットワークアドレスとホストアドレスにより構成される。ネットワークアドレスの長さはプレフィックス（Prefix）で示される。プレフィックスは可変長であり、集約(アグリゲーション)され、ルートデータベースが構築される。集約とはプレフィックスの上位ビットが共通する複数のプレフィックスを、１つのプレフィックスによって代表させることである。代表するプレフィックスは共通の上位ビットで表される。この結果、集約されたＩＰアドレスを含むルートデータベースを検索すると、複数のＩＰアドレスが一致することが起きる。ＬＰＭルールは一致した複数のＩＰアドレスの中で最も長いプリフィックスをもつＩＰアドレスを一致結果とする検索方法である。ＬＰＭルールに基づく高速検索を実現する従来技術の代表例はＴＣＡＭ（Ternary Content Addressable Memory）である。しかし、ＴＣＡＭのメモリ容量は、ＤＲＡＭ（Dynamic Random Access Memory）の容量程大きくはない。そのためＴＣＡＭを利用して多数のＩＰアドレスを持つルートデータベースを構築するためには多数のＴＣＡＭが必要となりパワー供給およびパッケージの制約から大きなデータベースは構築できないという問題がある。
【０００４】
複数の検索ルールによって検索され、固定長データから構築されるようなテーブルも、ルーター等に使用されるものとして良く知られている。その複数の検索ルールを用いる代表例に、送出するか否かの判断を行うフィルタリング機能を持つＡＣＬ（Access Control List）を用いるものがある。ＡＣＬを用いるある例においては、８ビットのＴＯＳ(Type of Service)、送信元ＩＰアドレス（３２ビット）、宛先ＩＰアドレス（３２ビット）、プロトコール（８ビット）、送信元ポート（１６ビット）、宛先ポート(１６ビット)そして８ビットの制御フラグの７個の要素とユーザーデータから構成される固定長データによってＡＣＬが構築される。ユーザーデータは、検索結果が一致した場合に検索結果となるデータである。ＡＣＬの固定長データの検索は、送信元ＩＰアドレスと宛先ＩＰアドレスがプレフィックス・マスクによる比較一致ルール（ＬＰＭルールと異なる）により、送信元ポートと宛先ポートは数値比較ルールにより、そして、他のデータは比較一致ルールにより行われる。加えてＡＣＬの各固定長データは優先順位を持つ。全ての要素の比較結果が一致した場合、その固定長データは一致したと認識される。もし複数の固定長データが一致した場合、優先順位の最も高い固定長データが検索結果となる。プレフィックス・マスクによる比較一致ルールによる比較においては、ＡＣＬの固定長データを構成する送信元ＩＰアドレスと宛先ＩＰアドレスとに付随して保存されているプレフィックス・マスクを使ってビット毎の比較を行うことにより一致判定を行う。数値比較ルールによる比較においては、ＡＣＬテーブルの固定長データを構成する送信元ポートと宛先ポートの最大値および最小値との間において無符号数値比較を行い、比較するポートが最大値と最小値の間に存在すれば一致と認識される。最後に、比較一致ルールによる比較においては、ＡＣＬテーブルの固定長データを構成するＴＯＳ，プロトコール、制御フラグのすべてが比較値と一致すれば一致と認識される。
【０００５】
ＡＣＬテーブルを高速で検索する従来技術はＴＣＡＭしか存在しない。しかもＴＣＡＭは数値比較ができない。このため、数値比較が必要な部分を複数の部分に分解し、分解された各部分を一致比較することにより、要求されている機能を果たしている。このため、結果として、ＡＣＬテーブルのひとつの固定長データが複数（数個から数十個の）の固定長データに分解され、ＡＣＬテーブルに格納される。このように、複数の検索ルールで比較を高速で行う検索は、ＴＣＡＭに依存するために、ＴＣＡＭにおける前述の問題を同様に生じてしまう。
【０００６】
本願の発明者は、特許文献１に示す特許出願をすでに行っている。
【０００７】
【特許文献１】特願２００６−５１２４３４号（国際特許出願ＰＣＴ／ＪＰ２００４／０４６４１号）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、前記した問題点を解決するために、ＬＰＭルールによるルートデータベースの検索法と、そして複数の検索ルールによるＡＣＬ（本発明ではＡＣＬテーブルと記述する固定長データテーブル）の検索法を提供する。その主たる目的はルートテーブルやＡＣＬテーブルに格納される、検索に必要な大量の固定長データを高速に検索することであり、そのための方法を提供することである。なお、上述のルートデータベースは、本発明では「ルートテーブル」と記載する固定長データテーブルであり、上述の被固定長データは、本発明ではＦＬＤ（Fixed Length Data）と記載する。
【課題を解決するための手段】
【０００９】
一般的にデータベース内のＦＬＤから希望の固定長データ（本発明ではサーチキー）を検索することはデータベース内のＦＬＤを一つ一つサーチキーと比較することである。そして、一致するＦＬＤが得られたとき、または最後のＦＬＤを比較したときに検索は終了する。この方法はデータベースが大きくなればなるほど、検索時間が大きくなり、高速検索が実現できない。高速検索方法の一つはいかにサーチキーと比較するデータベース内のＦＬＤの数を少なくするかという命題と同じである。
【００１０】
本発明が提案する検索手法は、データベース内のＦＬＤの数を細分化し、サーチキーと比較するＦＬＤの数を一度に比較可能なまでに細分化する手段を使い、ＬＰＭルールによるルートテーブルの検索と、複数の検索ルールによるＡＣＬテーブルの検索とを実現するものである。本発明においては、サーチキー、およびサーチキーの一部を使用し、データベースを構成するＦＬＤをグループ化、すなわちＦＬＤ数を細分化する。細分化されたＦＬＤそれぞれは、その全てが、ルートテーブルまたはＡＣＬテーブルが格納されるメモリのひとつのメモリ位置に保存される。これにより、細分化されたＦＬＤが保存されているメモリ位置を読み出し、読み出しデータとサーチキーを一度に比較することにより高速検索が可能になる。
【００１１】
サーチキー、およびサーチキーの一部を利用してルートテーブル、またはＡＣＬテーブルを細分化する方法は、ポインターテーブル（ＰＴ）と呼ぶテーブルを使って行われる。ＰＴが格納されるメモリは、ルートテーブル、またはＡＣＬテーブルを格納するメモリと同一の半導体装置にあるようにすることもできるし、好適には、別の半導体装置によって実現される別のメモリにすることができる。この別のメモリを用いると、パイプライン処理が可能となる為、同一のメモリを用いる場合より単位時間当たりの検索数が増大し、高速な検索が実現される。以下、ルートテーブルのＰＴとルートテーブルとを使って、ＬＰＭルールの下でＩＰアドレスを検索する手法と、ＡＣＬテーブルのＰＴとＡＣＬテーブルを使って複数の検索ルールの下で検索を行なう手法を説明する。
【００１２】
ルートテーブルのＦＬＤは有効ビットと、プレフィックス・マスクと、ＩＰアドレスと、ＩＤ（Identification）と、ユーザーデータとから構成される。ユーザーデータは、検索結果が一致した場合に一致情報とともに検索結果となるデータであるが、検索結果とはならないＦＬＤに付随したデータを含んでも良い。ルートテーブルの検索においては、サーチキーの上位ｎビットをアドレスとしてルートテーブルのＰＴを読み出し、一例としてルートテーブルのインデックスと、ＰＴＩＤと、デフォルトデータ等を得る。次にルートテーブルのインデックスをアドレスとしてルートテーブルを読み出し、サーチキーと比較する複数のＦＬＤを得る。この場合、読み出されたＦＬＤのプレフィックス・マスクの長さはｎ＋１からＩＰアドレスの長さ（ＩＰｖ４の場合、３２）までである。ＦＬＤのＩＰアドレスは、それに付随するプレフィックス・マスクを使って、サーチキーと比較される（比較結果１）。加えて、ＰＴＩＤとＩＤが比較される（比較結果２）。比較結果１と比較結果２の両方とも一致するようなＦＬＤが複数存在すれば、その一致が得られた複数のＦＬＤのうちプレフィックス・マスクの長さが一番長いものが一致結果とされる。一致したＦＬＤのユーザーデータが一致結果とともに検索結果となる。読み出された全てのＦＬＤが不一致でデフォルトデータが存在する場合、一致結果とともにデフォルトデータが検索結果となる、そして、不一致でデフォルトデータが存在しない場合、不一致の検索結果となる。この場合、検索結果はデフォルトデータやユーザーデータを含まない。ＰＴが保存するデフォルトデータは、ＩＰアドレスの上位ｎビットのプレフィックス・マスクの部分が共通でそのプレフィックス・マスクの長さが一番長いＩＰアドレスのユーザーデータである。このため、全てのＦＬＤが不一致である場合、デフォルトデータが一致結果を伴う検索結果である。ＰＴがデフォルトデータを保存しない構成も可能である。その場合、デフォルトデータに対応するＩＰアドレスはルートテーブルに保存され、またはＩＰアドレスの上位ｎビットのプレフィックス・マスクの部分が共通のすべてのＩＰアドレスはルートテーブルに保存される。
【００１３】
ＡＣＬテーブルの検索の基本はＡＣＬテーブルの固定長データを分割し、分割した要素で２個以上のテーブルを構築し、それらを順次検索することである。すなわち、テーブルで細分化を行う検索である。例を使って説明する。ＡＣＬテーブルは２個のテーブル、ＡＣＬテーブル１とＡＣＬテーブル２で構成される。ＡＣＬテーブル１のＦＬＤは宛先ＩＰアドレス、または送信ＩＰアドレス、ＡＣＬテーブル２のインデックス、そしてＡＣＬＩＤである。ＡＣＬテーブル２のＦＬＤはＡＣＬテーブル１を構成するＩＰアドレスを除く全ての要素と、ＩＤとユーザーデータである。ＡＣＬテーブル１に格納されているＦＬＤはＬＰＭルールの優先順位をもち、ＡＣＬテーブル２に格納されているＦＬＤはＡＣＬで指定される優先順位を持つ。各テーブルの検索で複数のＦＬＤが一致した場合、優先順位の一番高いＦＬＤのユーザーデータが一致結果とともに検索結果となる。ＡＣＬテーブル１を検索する場合、ＬＰＭルールで行われる。
【００１４】
ＡＣＬテーブルの検索の最初はＡＣＬテーブルを構成する宛先ＩＰアドレス、または送信ＩＰアドレスを保存するＡＣＬテーブル１を検索する。検索はルートテーブルの方法と同じである。検索順序はサーチキーのＡＣＬテーブル１の保存する要素に相当するＩＰアドレス（サーチキー１）の上位ｎビットをアドレスとして、ＡＣＬテーブル１のＰＴを読み出し、ＰＴＩＤとＡＣＬテーブル１のインデックス等を得る。次にＡＣＬテーブル１のインデックスをアドレスとしてＡＣＬテーブル１を読み出す。読み出されたＦＬＤとサーチキー１と、プレフィックス・マスクを使って比較する（比較結果１）。加えて、ＰＴＩＤとＩＤが比較される（比較結果２）。ＦＬＤの有効ビットが有効で、比較結果１と比較結果２両方とも一致するＦＬＤが複数存在すれば、優先順位の一番高いＦＬＤのＡＣＬＩＤとＡＣＬテーブル２のインデックス等を得る。一致するＦＬＤが存在しなければ検索は終了し、不一致結果を得る。
【００１５】
一致するＦＬＤが存在すれば次の検索を行う。ＡＣＬテーブル２のインデックスでＡＣＬテーブル２を読み出す。読み出されたＦＬＤの各要素と最初の検索で使われたＩＰアドレスを除くサーチキー（サーチキー２）を、対応する検索ルールで比較する（比較結果３）。加えて、読み出されたＦＬＤのＩＤとＡＣＬＩＤをその一部を一致比較で、他を大小比較で、比較する（比較結果４）。ＡＣＬＩＤがＩＤに一致比較で一致し、大小比較で等しいか、または、大きければ一致と認識する。比較結果３と比較結果４両方が一致するＦＬＤが複数存在すれば、優先順位の一番高いＦＬＤのユーザーデータが一致結果とともに検索結果となる。一致するＦＬＤが存在しなければ検索は終了し、不一致結果を得る。
【発明の効果】
【００１６】
本発明を適用した実施の形態によれば、多数のＩＰアドレスが格納されたルートテーブルの検索処理がＬＰＭルールで、また多数の固定長データが格納されたＡＣＬテーブルの検索処理が複数の検索ルールで、２から３メモリーサイクル程度の速度で実行することができる。又、パイプライン構成が可能なため、一秒間あたりの検索処理数は膨大な数になる。検索処理に加えて、固定長データの付加、および削除を行うため、ホスト制御装置が行っていた重い処理を削減できる。又、本発明固定長データ検索装置と固定長データ検索および管理装置および管理方法と検索方法は、本発明は、本発明の固定長データ検索法を適用した情報処理装置として、コンピュータを機能させるためのコンピュータプログラムに適用することが可能である。
【発明を実施するための最良の形態】
【００１７】
以降、本発明を実施のための最良の形態および実施例について具体的に説明する。しかし、本発明は以下に説明する実施の形態および実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々の改良が可能である。
【００１８】
［全体の構成］
本発明における固定長データの検索および管理に係る実施例を示す機能ブロック図を図１に示す。
【００１９】
図１は、本発明における固定長データ検索法に係る実施例を示すブロック図である。図１に示された固定長データ検索装置１０は、入力された検索命令１に対して、指定された処理を行って出力する検索命令処理手段１００と、前記検索命令処理手段１００の出力またはポインタ処理手段３００の出力によりインデックスされるポインタテーブルを格納するポインタテーブルメモリ２００と、後記比較手段５００の出力または前記ポインタテーブルメモリ２００の出力を前記検索命令処理手段１００の出力の一部とともに演算を行い、その結果を出力する前記ポインタ処理手段３００と、前記ポインタ処理手段３００の出力をインデックスとしたデータベースを格納するデータベースメモリ４００と、前記データベースメモリ４００が出力する多数のＦＬＤと前記検索命令１が持つサーチキーを指定されたルールで比較する比較手段５００と，入力されたテーブル管理命令２に対し、比較手段５００の出力により、ポインタテーブルメモリ２００やデータベースメモリ４００に格納されているテーブルに変更を行うテーブル管理手段６００とを備える。なお、前記ポインタテーブルメモリ２００とデータベースメモリ４００とを単一のメモリで構成するようにしてもよい。
【００２０】
図２は、図１に記載した固定長データ検索装置１０の検索処理フロー図である。概略を説明すると、まず検索命令１が入力される（Ｓ２０２）。そして検索命令処理手段１００により検索命令１のサーチキーからポインタテーブルのインデックスを計算する（Ｓ２０４）。さらにポインタテーブルを読み出す（Ｓ２０６）。その後、ポインタテーブルの出力をポインタ処理手段３００により処理する（Ｓ２０８）。それがポインタテーブルを指示すれば（Ｓ２１０）、ポインタテーブルの読み出し（Ｓ２０６）を再び行う。ポインタ処理手段３００の出力がデータベースの読み出しを指示すれば、それを実行する（Ｓ２１２）。一回のデータベースの読み出しで比較動作（Ｓ２１４）が終了すれば（Ｓ２１６）、検索結果を出力（Ｓ２１８）する。前記比較動作が終了しなければ（Ｓ２１６〜Ｓ２０８）、再び、ポインタ処理でテーブルのアドレス計算が行われ、テーブルの選択（Ｓ２１０）が行われる。ローカルテーブルが選択された場合、固定長データテーブルの読み出し（Ｓ２１２）を実行する。テーブルの選択（Ｓ２１０）でＳＰＴが選択された場合、ポインタテーブルからの読み出し（Ｓ２０６）を実行する。図１は本発明であるＬＰＭルールによるルートテーブル（データベース）の検索法と、複数の検索ルールによるＡＣＬテーブル（データベース）の検索法を動作可能とするデータベースの細分化の方法、すなわち複数のポインタテーブルの読み出し、複数のデータベースの読み出し、そしてポインタテーブルとデータベースの組み合わせによる複数の読み出しの説明を含む。以下に固定長データ検索装置１０の動作で本発明の検索法を図１、図２と共に詳細に説明する。最初にＬＰＭルールによるルートテーブルの検索法をその本質を理解する為に３２ビットＩＰアドレス（ＩＰｖ４）に対して説明する。
【００２１】
［検索命令処理手段］
検索命令１は検索命令処理手段１００に入力される。図３に検索命令処理手段１００の機能を示す。検索命令は検索すべきＩＰアドレス（サーチキー１２）と検索のための命令コード１１から構成される。検索命令処理手段１００はポインタテーブルメモリ２００に格納されたポインタテーブルのインデックス１０２を抽出し、命令コード１０１、全インデックス１０３、サーチキー１０４、Ｆ１５１を出力する。出力されるインデックス１０２はＩＰアドレスの上位ｎビットである。なお、実際はポインタテーブルメモリ２００のベースアドレスと上位ｎビットの和であるが、簡単の為、以後の説明においてもインデックス１０２はＩＰアドレスの上位ｎビットであるとして説明する。ｎは選択可能である。図でプレグループ回路１１０は３２ビットＩＰアドレスの検索において、入力されるサーチキーの上位ｎビットをそのまま出力する。同じく出力するＦ１５１は３２ビットＩＰアドレスの検索法では使われない。そして、３２ビットＩＰアドレスのルートテーブルの検索では全インデックス１０３とサーチキー１０４はサーチキー１２である。以後の説明において簡単の為、ｎは１６と仮定する。ポインタテーブルの役目はデータベース内の固定長データ（ＦＬＤ）をグループに分割し、そのグループ内のＦＬＤの数（メンバー数）を少なくし、一度に比較可能なまでにすることである。
【００２２】
［ポインタテーブルメモリ］
図４に、ポインタテーブルメモリ２００の構成例を示す。なお、図４には、ポインタテーブルメモリ２００、データベースメモリ４００の構成が似ている場合の例をまとめて記載したものである。図４の下段には、これらの各メモリとして使用する場合の制御信号、アドレス、データの組合せが記載されている。よって、ポインタメモリの説明はデータベースメモリにも適用可能であり、異なる場合は別途説明する。
【００２３】
ポインタテーブルメモリ２００はメモリアレイ２９１から構成されるメモリ部分と書き込みおよび読み出し回路２９９から構成される。検索命令処理手段１００の出力のポインタテーブルインデックス１０２（図３）はポインタテーブルメモリ２００のメモリのアドレス２９５に使われ、読み出しデータ２９７がポインタ処理手段３００に出力される。
【００２４】
書き込み機能は、書き込みおよび読み出し回路２９９に入力される書き込み・読み出しアドレス・制御信号２９３と書き込み・読み出しデータ２９４により与えられる書き込み命令を実行することにより実現される。ポインタテーブルメモリ２００におけること書き込み機能は、主にテーブル管理手段６００で使用される機能であるため、詳細な説明はテーブル管理手段６００の説明において行う。
【００２５】
書き込みおよび読み出し回路２９９における読み出し機能は、２箇所からの読み出し命令を受付けて動作することができる（データベースメモリの書き込みおよび読み出し回路４９９では１つの読み出し命令だけを受け付ける）。読み出し命令の一つは検索命令処理手段１００からの読み出し命令２９５であり、他はポインタ処理手段３００からの読み出し命令２９６である。両命令とも読み出すメモリのアドレスおよび制御信号を伴っている。
【００２６】
ポインタテーブルメモリ２００のメモリ部分はＱ（Ｑは１以上の整数）個のメモリアレイ２９１から構成される。各メモリアレイ２９１は独立して動作するが、全ての、あるいは一部の複数のメモリアレイ２９１を同時に動作させることができる。Ｑ個のメモリアレイ２９１を実装する理由は一度に書き込みまたは読み出すデータ量を大きくする為である。例えばメモリアレイ２９１のデータバス２９２の幅をＷとすると、読み出しデータ２９７や書き込みデータ２９４のデータ幅はＷ＊Ｑが得られる。
【００２７】
［ポインタ処理手段］
ポインタテーブルメモリ２００の出力であるエントリーデータ（読み出しデータ２９７）はポインタ処理手段３００に入力される（図１）。ポインタ処理手段３００の目的は入力された情報から次の工程であるポインタテーブルメモリ、またはデータベースメモリのインデックスを出力することである。ポインタ処理手段３００の入力は、ポインタテーブルの前記エントリーデータと、検索命令処理手段１００の出力である全インデックス１０３と命令コード１０１とＦ１５１と、比較手段を通してデータベースメモリ４００から出力されるルートテーブルのエントリー制御データとである。ポインタテーブルの前記エントリーデータとルートテーブルのエントリー制御データとは同じ形式を持つので、以降の説明では単にエントリーデータという。
【００２８】
図５に、ポインタテーブルメモリ２００に格納されるポインタテーブルのエントリーデータの内容を示す。図５に示したように、エントリーデータは大きく分類して３つの要素に分けられる。それらは（１）次工程、（２）次の工程で必要なデータ、（３）メモリ制御データ（ＭＣＤ）である。ＭＣＤは、次に読み出されるルートテーブルを格納するデータベースメモリ４００を構成するメモリアレイ４９１を制御するデータである。すなわち、ＭＣＤはＦＬＤが格納されているメモリアレイ４９１だけ読み出す機能を持つ。
【００２９】
ポインタテーブルのエントリーデータは次の６つの次工程のためのデータを備える。
（１）ポインタテーブルのこのエントリーに、ＩＰアドレスは無い。
（２）ポインタテーブルのこのエントリーに、一つのＩＰアドレスが存在する。
（３）ポインタテーブルの再読み出し、を行う。
（４）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する。
（５）ルートテーブルの読み出しを行い、ＮＶＣ（数値比較）を実行する。
（６）ルートテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
【００３０】
次工程が上記（１）である場合、すなわち、ポインタテーブルのこのエントリーにＦＬＤとデフォルトデータが無い場合、データベースメモリ４００を経て、比較手段５００から、不一致の検索結果が出力され、検索が終了する。当然であるがデータベースメモリ４００に入力された、この次工程のデータによって読み出し動作は行われず、当該次工程はそのまま比較手段５００に出力される。
【００３１】
次工程が上記（２）である場合、すなわち、ポインタテーブルの当該エントリーに一つのＩＰアドレス、すなわちデフォルトデータ（ＤＥＦ）が存在する場合、データベースメモリ４００を経て、比較手段５００から一致結果とＤＥＦが出力される。データベースメモリ４００は読み出されない。
【００３２】
次工程が上記（３）である場合、すなわち、ポインタテーブルの再読み出しを行う場合、ポインタテーブルのこのエントリーに多数のＦＬＤが存在することを意味し、よりいっそうの細分化が必要である場合である。そのための手段として、ポインタテーブルによる細分化が図られる。最初のポインタテーブルと区別するため、このポインタテーブルをセカンダリーポインタテーブル（ＳＰＴ）または２次ポインタテーブルと呼ぶ。このエントリーは、ＳＰＴのインデックスを生成させる目的で、ポインタテーブルメモリ２００のベースアドレス、ＳＰＴのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備えている。ＳＰＴのインデックスはポインタテーブルメモリ２００のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分であり、ＰＴでこの次工程を指定される場合、開始ビット位置はｎ＋１である。ＳＰＴのインデックスが得られた後、再びポインタテーブルが読み出される。その後の工程は、読み出されたＳＰＴのエントリーデータに従う。
【００３３】
次工程が上記（４）である場合、すなわち、ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する場合、ルートテーブル内に構築されたＬＴの読み出しを行い、得られた多数のＦＬＤの比較を行う。この次工程は、ポインタテーブルのこのエントリーに多数のＦＬＤが存在することを意味し、よりいっそうの細分化を図る必要がある場合である。ＬＴはそのための手段の一つである。ＬＴは、ルートテーブル内の複数のエントリーがテーブルとして活用されたものである。ＬＴのインデックスはルートテーブルのインデックスの上位部分と、全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。ＬＴのインデックスが得られた後は（６）の次工程のルートテーブルのインデックスが得られた後と同じである。ＬＴとＳＰＴの相違点は、ＬＴがメモリ読み出し回数が少ないことと、ＳＰＴがデフォルトデータを保存することができる点である。
【００３４】
次工程が上記（５）である場合、すなわち、ルートテーブルの読み出しを行い、ＮＶＣ（数値比較）を実行する場合は、ポインタテーブルのこのエントリーに超多数のＦＬＤが存在することから、真剣によりいっそうのグループ化が必要となる場合である。このエントリーデータは、ルートテーブルのインデックスを備え、そのインデックスに基づいてルートテーブルの読み出しを行い、読み出されたデータに基づいてＮＶＣを実行する。この次工程が使われることはまれなことである。ＮＶＣにおいては数値比較を行うことによりデータベースを細分化する。ＮＶＣ動作の詳細な説明は、比較手段５００の説明において行う。この次工程の次は（５）もしくは（６）である。（５）が選ばれる場合、このエントリーは巨大な数のＦＬＤを持つことが予想される。  
【００３５】
次工程が上記（６）である場合、すなわち、ルートテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、ルートテーブルのインデックスとデータベースメモリ４００のメモリ制御データとを備える。そのインデックスでルートテーブルを読み出し、読み出されたデータは、サーチキーと比較される。ルートテーブルの読み出しの際、メモリ制御データにより、このエントリーに属するＦＬＤが格納されているメモリアレイ４９１だけが読み出される。これにより、メモリ読み出しに必要な電力が節約される。一般に、固定長データ検索装置１０による検索の大部分は、この次工程により実質的に終了する。このエントリーデータから、ルートテーブルのインデックスを得た後、ルートテーブルが読み出される。得られたルートテーブルのエントリーが比較手段に送られ比較結果が得られる。読み出されたエントリーデータの次工程は（１）である。ルートテーブルの検索法では次工程（１）、（２）そして（６）により説明される。他の次工程（３）、（４）そして（５）はポインタテーブルのエントリーに繋がるＦＬＤの数を細分化する。図５に記述してないが、ＰＴ、ＳＰＴ，ＬＴを使ってＮＶＣ動作を実行する次工程が考えられる。それらの説明は省く。また、次工程（７）はＡＣＬテーブルの検索で説明する。デフォルトデータはデフォルトデータが有効であるか否かを判断するビットを含む。
【００３６】
図６にポインタ処理手段３００を示す。図が示すようにポインタ処理手段３００は前記入力を受けて、エントリーデータの次工程が（３）の場合、ポインタテーブルのインデックス３０５を、次工程が（４）、（５）、（６）の場合、ルートテーブルのインデックス３０６を出力する。図６に示したインデックスデータ３２１は、次工程が（５）、（６）の場合、ルートテーブルのインデックスを、次工程が（３）の場合、ポインタテーブルメモリ２００のベースアドレスと、ＳＰＴのサイズと、開始ビット位置と、終了ビット位置を、次工程が（４）の場合、ルートテーブルのインデックスの上位ビットと、ＬＴのサイズと、開始ビット位置と、終了ビット位置を表す。インデックス発生回路３２２はインデックスデータ３２１と、次工程３０４と、全インデックス３０３を使ってポインタテーブルのインデックス（ＰＴＩＸ）３０５とルートテーブルのインデックス（ＲＴＩＸ）３０６を作成する。次工程が（３）、（４）の場合、同じ機能であるため次工程（４）を説明する。インデックス発生回路３２２は「ルートテーブルのインデックスの上位ビット」の上位ビットをルートテーブルのインデックス長からＬＴのサイズを引いたビットを取り出し、全インデックスの開始ビット位置から、同じく終了ビット位置までを抜き取り、前者を上位ビット位置に、後者を下位ビット位置に連結してＲＴＩＸ３０６を作成する。次工程が（５）、（６）の場合、インデックス発生回路３２２はインデックスデータ３２１をそのまま、ＲＴＩＸ３０６に出力する。そしてポインタ処理手段３００は入力された，次工程３０４、ＭＣＤ３０７，ＰＴＩＤ３０８，ＤＥＦ３０９、開始ビット位置３１０、終了ビット位置３１１はそのまま出力され、命令コード３０１、全インデックス３０３、Ｆ３５１は遅延回路を経て、次工程３０４等と同じタイミングに出力される。これらの信号・データはデータベースメモリ４００に送られ、データベースメモリ４００の読み出しデータ４９７とともに比較手段に送られる。命令コード３０１は比較手段の同期信号として使われる。
【００３７】
［データベースメモリ］
図４にデータベースメモリ４００（図１）の構成例を示す。データベースメモリ４００の説明はポインタテーブルメモリ２００と同じ為、省く。データベースメモリ４００に格納されるルートテーブルの構成を説明する。図７に、ルートテーブルのＦＬＤ４１６の構成を示す。ルートテーブルのＦＬＤ４１６は２つの形式が存在し、前次工程（データベースメモリ４００の読み出し要求）がその形式を決定する。一つは前次工程が（４）か（６）の比較動作を指示した場合の形式（１）であり、他は前次工程（５）のＮＶＣ動作を指示した場合の形式（２）である。形式（１）は有効ビット４２１、プレフィックス・マスク４２２、ＩＰアドレス下位（３２−ｎ）ビット４２３、ＩＤ４２２，およびユーザーデータ４２５から構成される。ｎはポインタテーブルのインデック１０２の長さである。形式（２）は被比較値４２７、ルートテーブルの変位４２８、ＭＣＤ４２９から構成される。形式（１）のＦＬＤ４１６は内蔵するプレフィックス・マスク４２２の長い順に格納される。図７を例にすれば、式１が成り立つ。
ＬＯＰ＿ＦＬＤｍ≧ＬＯＰ＿ＦＬＤｍ−１≧・・・≧ＬＯＰ＿ＦＬＤ０      式１
ＬＯＰ＿ＦＬＤｍはＦＬＤｍが内蔵するプレフィックス・マスクの長さを意味する。同様に、形式（２）の被比較値４２７に対して、式２が成立する。
被比較値ＦＬＤｍ≧被比較値ＦＬＤｍ−１≧・・・≧被比較値ＦＬＤ０      式２
被比較値ＦＬＤｍはＦＬＤｍが内蔵する被比較値４２７である。被比較値は無符号値として扱われる。
【００３８】
エントリーデータ４１５の形式は図５で示される、次工程（１）、（５）、（６）で、しかもデフォルトデータは存在しない。次工程（５）に伴うメモリ制御データは全てのメモリアレイが有効であることを指示する。次工程（６）に伴うメモリ制御データはＦＬＤを格納するメモリアレイだけが有効であることを指示し、そして、その後の次工程は常に（１）である。このためメモリ制御データの格納しているメモリアレイが読み出されなくとも問題は起きない。
【００３９】
データベースメモリ４００の読み出しデータ４９７に含まれるＦＬＤの数を説明する。図４で、例としてメモリアレイのデータバスの幅を５７６ビットとし、メモリアレイ数を４とすると、読み出しデータ４９７の幅さは２３０４ビットである。ユーザーデータの長さを３２ビットとすると、形式（１）のＦＬＤの長さは６４ビット以下である。被比較値の長さを１６ビットとすると、形式（２）のＦＬＤの長さは３２ビット以下である。すなわち、この例において、形式（１）の場合、一度に読み出されるＦＬＤ数は３２個、形式（２）の場合、一度に読み出されるＦＬＤ数は６４個である。これらの数のＦＬＤが一度に比較可能である。
【００４０】
［比較手段］
データベースメモリ４００の出力である読み出しデータ４９７は比較手段５００に入力される。比較手段５００の目的は、次工程４０４が（４）または（６）の場合、入力された読み出しデータのＦＬＤと検索命令処理手段１００の出力の前もって保存されたサーチキー５０４とを比較し（比較動作）、比較により得られた結果を出力すること、次工程４０４が（５）の場合、ポインタ処理手段３００から出力された全インデックス４０３から抽出した抽出インデックスを大小比較すること、および、読み出しデータ４９７のエントリー制御データの次工程に従い、次の工程を決定することである。
【００４１】
比較手段５００の実施例を図８に示す。比較手段５００への入力は次の３系統存在する。（１）検索命令処理手段１００の出力の命令コード１０１とサーチキー１０４。（２）データベースメモリ４００の出力の命令コード４０１、全インデックス４０３、次工程４０４、ＰＴＩＤ４０８，ＤＥＦ４０９、開始ビット位置４１０、終了ビット位置４１１。（３）データベースメモリ４００の出力の読み出しデータ４９７。比較手段５００の出力は命令コード４０１と、比較結果とユーザーデータまたはデフォルトデータから構成される結果出力３と、ポインタ処理手段３００に送られるエントリー制御データ５０１、命令コード５０１、全インデックス５０３である。図８が示すように比較手段５００は保存回路５１０、比較回路５２０、次工程回路５３０から構成される。保存回路５１０はリードポートとライトポートを持つ２ポートメモリである。ライトポートは命令コード１０１をアドレスとしてサーチキー１０４を書き込む。リードポートは命令コード４０１をアドレスとして保存されているサーチキー５０４を読み出し、比較回路５２０に送られる。
【００４２】
比較回路５２０は２種類の比較を実行することは記述した。それを説明する。最初に次工程４０４が（４）または（６）の場合、読み出しデータは形式（１）のＦＬＤ４１６である。ＦＬＤ４１６に内蔵されるプリフィックスマスク４２２を使い、ＩＰアドレス下位（３２−ｎ）ビット４２３とサーチキー５０４が比較される（比較１）。またＦＬＤ４１６のＩＤ４２４とＰＴＩＤ４０８が比較される（比較２）。比較１と比較２が一致結果を持ち、ＦＬＤ４１６の有効ビット４２１が有効であれば一致結果を得る。比較結果として、複数のＦＬＤ４１６が一致結果を得れば、ＦＬＤ４１６のプリフィックスマスク４２２の最大値を持つＦＬＤ４１６が一致結果となる。即ち、一致するＦＬＤｍの中で最大のｍを持つＦＬＤ４１６である。それが内蔵するユーザーデータと一致結果と命令コード４０１が結果出力３である。ＦＬＤ４１６のひとつも一致しなかった場合、そしてＤＥＦが有効である場合、ＤＥＦと一致結果と命令コード４０１が結果出力３である。ＦＬＤ４１６のひとつも一致しなかった場合、そしてＤＥＦが無効である場合、不一致結果と命令コード４０１が結果出力３である。プリフィックスマスク４２２は３２ビットＩＰアドレスの場合、５ビットで表される。そしてその値はＭＳＢからの１の数に等しい３２ビットの形式に展開される。一例として、プリフィックスマスク４２２が１８の場合、比較に使われるマスクは１１１１  １１１１  １１１１  １１１１  １１００  ００００  ００００  ００００に展開される。そして１に相当するビットが比較される。同様にポインタテーブルのインデック１０２の長さｎ（例として１６とする）を０と１を逆に展開し、それと上記マスクと論理積演算を行った結果が比較に使われるマスクである。この場合、インデック１０２の長さｎを展開すると００００  ００００  ００００  ００００  １１１１  １１１１  １１１１  １１１１が得られる。その結果、比較に使われるマスクは００００  ００００  ００００  ００００  １１００  ００００  ００００  ００００が得られる。このマスクを使い、上位ビットが０で、３２ビット形式に展開されたＩＰアドレス下位（３２−ｎ）ビット４２３とサーチキー５０４が比較される。
【００４３】
次に次工程４０４が（５）の場合、読み出しデータは形式（２）のＦＬＤ４１６である。この場合、比較回路５００はＮＶＣ比較を行う。ＮＶＣ比較は、全インデックス４０３から開始ビット位置４１０と終了ビット位置４１１が指定した部分を抽出した値から、ＦＬＤ４１６の被比較値４２７を引く演算である。一例として、開始ビット位置４１０と終了ビット位置４１１がそれぞれ１６と３１を示す場合、全インデックスのビット１５からビット０が無符号値として抽出される。この場合、被比較値はＩＰアドレスの下位１６ビットである。記述したが、ＦＬＤ４１６は、ＦＬＤ０の被比較値４２７が最小で、右に向かって大きな被比較値４２７となるように並べられている。この例に従えば、値の大小比較の結果は、ＦＬＤ０から記述すると、大、大、大、大、小、小…のような並びが得られる。この場合、大から小に遷移する直前の「大」に対応するＦＬＤ４１６が有するルートテーブルの変位値４２８とＭＣＤ４２９が次工程回路に送られ、次のルートテーブルの読み出しに使われる。すなわち、ＮＶＣ比較はポインタテーブルのひとつのエントリーに属する多数のＦＬＤ４１６を、ＮＶＣ形式２のＦＬＤ４１６数（例を使うと６４個）のグループに分割できる。
【００４４】
次工程回路は読み出しデータ４９７のエントリーデータ４１５の次工程が（１）の場合、比較回路５２０に検索終了の信号を送り、比較回路５２０は結果出力３を出力する。エントリーデータ４１５の次工程が（５）と（６）の場合、比較回路５２０から送られてきたルートテーブルの変位値４２８と、読み出しデータ４９７のエントリー制御データ４１５に格納されているインデックスデータが加えられ、出力すべきエントリー制御データ５１５に代入する。それに加え、エントリーデータ４１５の次工程、比較回路５２０から送られてきたＭＣＤ４２９、ＰＴＩＤ４０８，ＤＥＦ４０９がエントリー制御データ５１５を形成し、出力される。また、命令コード４０１と全インデックス４０３がそのまま命令コード５０１と全インデックス５０３に出力される。
【００４５】
以上がＬＰＭルールによる、３２ビットＩＰアドレスのルートテーブルの検索法である。図９の例を使ってまとめると、ケース１で示されるポインタテーブルのインデックスＡ１（サーチキーの上位１６ビット）に属するＩＰアドレスはＩＰ１１、ＩＰ１２、ＩＰ１３…. ＩＰ１Ｃ, ＩＰ１Ｄで示される。それぞれのプリフィックスマスクは/８、/１６、/１７…で表す。インデックスＡ１を読み出して得られるＤＥＦはＩＰ１２のユーザーデータであり、それをＤ/１６で表す。ルートテーブルに格納されるＦＬＤ４１６はプリフィックスマスクが/１７以上のＩＰアドレスである（図のケース１では。ＩＰ１３からＩＰ１Ｄである）。プリフィックスマスクが/１６以下のＩＰアドレスはテーブル管理手段６００により、/１６以下のＩＰアドレスの中で最長のプリフィックスマスクを持つＩＰアドレスのユーザーデータがインデックスＡ１でアドレスされるエントリーのデフォルトデータに保存される。説明した検索方法はケース１の場合、ＩＰ１４、ＩＰ１７、ＩＰ１Ａが一致するので、ＩＰ１Ａのユーザーデータと一致結果と命令コード４０１が結果出力３となる。ケース２はひとつのＦＬＤ４１６も一致しないが、ＤＥＦが存在するので、Ｄ/８と一致結果と命令コード４０１が結果出力３となる。ケース３はひとつのＦＬＤ４１６も一致しないし、ＤＥＦが存在しないので、不一致結果と命令コード４０１が結果出力３となる。
【００４６】
また本発明の必要条件である一度に比較可能なＦＬＤ４１６の数までグループ化する方法はＳＰＴとＬＴをあわせて利用することにより十分である。即ち、３２個のＦＬＤ４１６を格納するデータベースメモリ４００を例にすると、ポインタテーブルのインデックス長を１７ビット（サーチキーのビット３１からビット１５）とし、ＳＰＴの変位を６ビット（全インデックスのビット１４からビット９）、ＬＴの変位を４ビット（全インデックスのビット８からビット５）に指定すればＬＴのエントリーはエントリーに属するすべてのＩＰアドレスが格納可能である。よって、本発明の細分化の機能は十分機能する。
【００４７】
次にＬＰＭルールによる、１２８ビットＩＰアドレス（ＩＰｖ６）のルートテーブルの検索法を説明する。検索動作はＩＰｖ４の場合と基本的に同じであるため、相違点を説明する。相違点は２個である。ひとつは１２８ビットのＩＰアドレスの細分化をより効率的に行う為、プレグループ回路１１０が機能する。他はプレグループ回路１１０の出力により、ポインタテーブルのエントリーデータとＦＬＤ４１６の形式が異なる。相違点に重点を置き１２８ビットＩＰアドレスの検索法を順に説明する。
【００４８】
［検索命令処理手段］
図３において、プレグループ回路１１０は，設定可能なレジスターＲとサブ比較器を内蔵するサブ比較回路１１５をｍ個と、選択器１１６と、連結器１１７を持つ。プレグループ回路１１０はサーチキーのｎビットとサーチキーを入力され、ポインタテーブルのインデックス１０２と、Ｆ１５１を出力する回路である。レジスターＲは図が示すようにサブグループ、サブマスク、ＰＴベース、Ｆ、ＰＴ開始、そして終了を保存する。サブマスクは最上位ビットから最大ｎ個の１を持つマスクである。その１の数をサブマスクの長さと呼ぶ。その機能はサブ比較器で、サブマスクが１に相当するビットを比較する。サブマスクを使って、サーチキーのｎビットとレジスターに保存されているサブグループを比較する。この動作を全てのサブ比較回路１１５で行う。一致したサブ比較回路１１５のＰＴベースと、Ｆと、ＰＴ開始と終了が選択器１１６により選択、出力される。ｍ個のサブ比較回路は優先順位を持ち、複数のサブ比較回路１１５が一致した場合、優先順位の一番高いサブ比較回路１１５のレジスター内の上記パラメータが出力される。また、一致するサブ比較回路１１５が存在しない場合、優先順位の一番低いサブ比較回路１１５の上記パラメータが出力される。出力されたＦを除く上記パラメータは連結器１１７に入力され、ポインタテーブルのインデックス１０２が出力される。Ｆは選択器から、そのまま検索命令処理手段から出力される（Ｆ１５１）。連結器の機能を説明する。ＰＴ開始と終了で示されるサーチキーのその間のビットを抽出し、それを下位データとするポインタテーブルのインデックス長のデータ１を作成する。データ１の上位データは０である。そして、ＰＴベースを上位データとするポインタテーブルのインデックス長のデータ２を作成する。データ２の下位データは０である。データ１とデータ２の論理和がポインタテーブルのインデックス１０２である。ＰＴ開始がｎ＋１を指定した場合、Ｆは１であり、その他の値の場合、０である。
【００４９】
［ポインタテーブルメモリ］
１２８ビットＩＰアドレスのルートテーブルの検索で、ポインタテーブルメモリ２００が保存するポインタテーブルのエントリーデータはＦ１５１の値で形式が異なる。Ｆ１５１が１の場合、３２ビットＩＰアドレスのそれと同じであるが、０の場合、ＰＴＩＤとデフォルトデータが不必要である。
【００５０】
［ポインタ処理手段］
ポインタ処理手段３００の機能は、Ｆ１５１が１の場合、３２ビットＩＰアドレスの検索のそれと同じである。Ｆ１５１が０の場合、エントリーデータはＰＴＩＤとデフォルトデータは格納しないので、ＰＴＩＤ３０８は０が、ＤＥＦは無効ビットつきで出力される。
【００５１】
［データベースメモリ］
１２８ビットＩＰアドレスの検索で、データベースメモリ４００の読み出しデータの形式がＦ３５１の値で異なる。それを図７に示す。Ｆ３５１が１の場合、ＩＰアドレスの長さを除き、３２ビットＩＰアドレスの検索のそれと同じである。この場合、ＩＰアドレス下位（１２８−ｐ）ビットのｐは図３で、（サブマスクの長さ）＋（ＰＴ開始と終了の差）＋１で表される。以後の説明では例としてｐは２３とする。Ｆ３５１が０の場合、１２８ビットのＩＰアドレスが格納され、ＩＤは削除されている。プリフィックスマスクは７ビットで表される。
【００５２】
［比較手段］
比較手段５００で、３２ビットＩＰアドレスの検索のそれと異なる点は、プリフィックスマスク４２２の展開される形式が３２ビット長ではなく１２８ビット長である。一例として、それが４９の場合、比較に使われるマスクは１６進表示でＦＦＦＦＦＦＦＦＦＦＦＦ８０００００００００００００００００００に展開される。Ｆ４５１が１の場合、ｐは２３であるから、同様に０と１を逆に展開し、それと上記マスクと論理積演算を行った結果が比較に使われるマスクである。この場合、ｐを展開すると１６進表示で０００００１ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦが得られる。その結果、比較に使われるマスクは０００００１ＦＦＦＦＦＦ８０００００００００００００００００００が得られる。このマスクを使い、上位ビットが０で、１２８ビット形式に展開されたＩＰアドレス下位（１２８−ｐ）ビット４２３とサーチキー５０４が比較される。結果出力３の判定は、３２ビットＩＰアドレスの検索のそれと同じである。Ｆ４５１が０の場合、展開されたプリフィックスマスクだけを使って、ＩＰアドレス１２８ビット４２３とサーチキー５０４が比較される。結果出力３の判定は、３２ビットＩＰアドレスの検索のそれと異なる。ＤＥＦ４０９が無効であるため、比較結果が不一致の場合、不一致結果を結果出力３に出力する。
【００５３】
以上がＬＰＭルールによる、１２８ビットＩＰアドレスのルートテーブルの検索法である。まとめると、検索命令処理手段１００のプレグループ回路１１０を使って、最初に大きなグループを形成する。そしておのおののグループをそのグループに対応するポインタテーブルで細分化を図る。この回路を３２ビットＩＰアドレスのルートテーブルの検索に使える。しかし前述したが、ＳＰＴとＬＴの活用により十分な細分化が可能な為、その使用法は説明しない。また本発明の必要条件である一度に比較可能なＦＬＤ４１６の数までグループ化する方法はＳＰＴとＬＴに加えて、ＮＶＣ法をあわせて利用することにより十分である。例えば最悪のケースとして、全ての１２８ビットＩＰアドレスがポインタテーブルのひとつのエントリーに属している場合でも、ＮＶＣ法を３度繰り返すことにより８百万個の１２８ビットＩＰアドレスが検索可能である。よって、本発明の細分化の機能は十分働く。また、データベースメモリを読み出す際、複数のメモリ読み出しを連続で行うことにより、３２個のＦＬＤ４１６を一度で比較されるために読み出すことは可能である。
【００５４】
ＩＰアドレスの長さに関係なく、ポインタテーブルが保持するＤＥＦに対応するＩＰアドレスのＦＬＤ４１６を、ルートテーブルに保存することも考えられる。しかし、ルートテーブルのＦＬＤ４１６が増えること、および同じＦＬＤ４１６が多数保存される非効率な問題を持つ。
【００５５】
次にＡＣＬテーブルの検索法を説明する。ＡＣＬテーブルの検索において、ＩＰアドレスの長さは検索法に関係しない。これにより３２ビットＩＰアドレスを例に説明する。ＡＣＬテーブルはＡＣＬテーブル１とＡＣＬテーブル２で構成することは記述した。両テーブルはデータベースメモリに格納される。ＡＣＬテーブルの検索法の基本はＡＣＬテーブル１を最初に検索することによりＡＣＬテーブルの固定長データの数の細分化を行う。その後、ＡＣＬテーブル２を、後述する細分化技術を使用して検索する。
【００５６】
図１０はＡＣＬテーブル１とＡＣＬテーブル２を構成するＦＬＤ４１６を示す。ＡＣＬテーブル１のＦＬＤ４１６はルートテーブルの構成とまったく同じである。そのユーザーデータはＡＣＬＩＤ４２６と、ＡＣＬテーブル２の変位値４２７と、細分化データ４２８に分割される。ＡＣＬテーブル２のＦＬＤ４１６の詳細を示す。それは有効ビット（Ｖ）４６１、プレフィックス・マスク（ＰＦＭ）４６２、ＩＰアドレス（ＩＰＡ）４６３、送信元ポートの最大値（ＳＰＨ）４６４、送信元ポートの最小値（ＳＰＬ）４６５、宛先ポートの最大値（ＤＰＨ）４６６、宛先ポートの最小値（ＤＰＬ）４６７、プロトコール（ＰＲ）４６８、ＴＯＳのマスク（ＴＯＳＭ）４６９、ＴＯＳ４７０、制御フラグのマスク（ＣＦＭ）４７１、制御フラグ（ＣＦ）４７２、ＡＩＤ４７３，ユーザーデータ（ＵＤ）４７４から構成される。ＡＣＬテーブル１が送信元ＩＰアドレスを格納すれば、ＡＣＬテーブル２のＩＰＡは宛先ＩＰアドレスであり、ＡＣＬテーブル１が宛先ＩＰアドレスを格納すれば、ＡＣＬテーブル２のＩＰＡは送信元ＩＰアドレスである。
【００５７】
ＡＣＬテーブルの検索は、最初にＡＣＬテーブル１の検索をＬＰＭルールに従って行う。その検索法は記述した。このため、ＡＣＬテーブル１の検索結果を処理する比較手段５００から説明する。
【００５８】
［比較手段］
ＡＣＬテーブル１のＦＬＤ４１６とサーチキー１が一致した場合、一致したＦＬＤ４１６のユーザーデータ、または一致しない場合でＤＥＦが有効な場合のＤＥＦ（ユーザーデータと同じ形式を持つ）が得られる。一致しない場合、不一致結果が結果出力になる。ＡＣＬテーブル１の検索で注意したいことは、ＡＣＬテーブル１を読み出して得られたエントリー制御データの次工程は、ルートテーブルの比較結果を得る場合（１）であるがＡＣＬテーブル１の比較結果を得る場合（７）である（図５参照）。その機能は、比較結果が不一致の場合、不一致結果を出力し終了するが、一致の場合、ＡＣＬテーブル２の検索に移行する。ＡＣＬテーブル１の検索で得られたユーザーデータ、またはＤＥＦから、ＡＣＬテーブル２を読み出すＡＣＬテーブル２のベースインデックス４２７を得る。ＡＣＬテーブル２のインデックスはその下位ビットに、細分化データ４２８により生成されるビットを代入して得られる。細分化データ４２８の有効ビット４２９が無効であれば、得られたＡＣＬテーブル２のベースインデックス４２７がＡＣＬテーブル２のインデックスである。有効ビット４２９が有効である場合、読み出すＡＣＬテーブル２に一度に比較できない数のＦＬＤ４１６が存在することを意味する。細分化データ４２８は一度に比較が可能とする手段を与える。細分化の例を図１０に示す。図ではインデックス生成選択４３０とメモリ読み出し回数４３１が細分化データ４２８である。わかりやすい方法から説明する。メモリ読み出し回数４３１は、一回のＡＣＬテーブル２の読み出しにより、ＡＣＬテーブル２に格納されているＰ個のＦＬＤ４１６が得られるとすると、連続してメモリを読み出す回数を増やせば、比較可能なＦＬＤ４１６の数は２Ｐ、３Ｐ、４Ｐのように増加する。この目的でメモリ読み出し回数４３１はＡＣＬテーブル２の読み出し回数を定める。インデックス生成選択４３０は例として、ＰＲ分離４３２、ＩＰ分離０（４３３）、ＩＰ分離１（４３４）、ＩＰ分離２（４３５）、ＩＰ分離３（４３６）から構成される。前述したが、比較回路５００の保存回路５１０はサーチキーが保存されている。ＡＣＬテーブル２のＦＬＤ４１６を構成するプロトコールとＩＰアドレスに対応する、サーチキーの保存プロトコールと保存ＩＰアドレスを読み出し、保存プロトコールはデコードを行い、保存ＩＰアドレスから上記データによりビットを抽出する。ＰＲ分離４３２が有効な場合、保存プロトコールのデコードの結果、それが例えばＴＣＰであれば、ＡＣＬテーブル２のベースインデックス４２７のビット４を１に、それ以外であれば０の設定を行う。また、ＩＰ分離０（４３３）、ＩＰ分離１（４３４）、ＩＰ分離２（４３５）、ＩＰ分離３（４３６）は有効ビットとビット位置から構成されるが、それぞれの有効ビットが有効である場合、保存ＩＰアドレスから、それぞれのビット位置で指定するビットを抽出し、抽出したビットを順にＡＣＬテーブル２のベースインデックス４２７のビット０、ビット１、ビット２、ビット３に代入する。このように、細分化しない場合にＡＣＬテーブル２のベースインデックス４２７で読み出さなければならないＡＣＬテーブル２のＦＬＤ４１６の数は、インデックス生成選択４３０を使った処理を行うことにより５ビット、３２分割の細分化が実現できる。実際には均等に分割されることはないが前述のメモリ読み出し回数４３１を併用すれば細分化の効果は十分である。
【００５９】
次に、細分化後に得られたＡＣＬテーブル２のベースインデックス４２７を使って、ＡＣＬテーブル２を読み出すエントリー制御データ５１５を命令コード５０１とともにポインタ処理手段３００に出力する。全インデックス５０３は無効なデータが送られる。この場合、出力される次工程は（６）であり、ＭＣＤは全てのメモリアレイの読み出しを有効にする。
【００６０】
［ポインタ処理手段とデータベースメモリ］
ポインタ処理手段３００は記述した処理を実行し、命令コード３０１、次工程３０４、ＲＴＩＸ３０６、ＭＣＤ３０７をデータベースメモリ４００に出力し、ＡＣＬテーブル２を読み出す。
【００６１】
［比較手段］
ルートテーブルの検索と同様に、ＡＣＬテーブル２の読み出しデータ４９７のＦＬＤ４１６は比較回路５２０で、エントリーデータ４１５は次工程回路で処理される。エントリーデータ４１５の次工程は（１）である。複数の連続したメモリ読み出しが行われた場合、エントリーデータ４１５は全て同じである。読み出されたＦＬＤ４１６は保存回路に保存されているサーチキーを読み出し、それと比較される。ＡＣＬテーブル２のＦＬＤ４１６の詳細は図１０を参照し、略語で説明する。また読み出されたサーチキーの部分には保存を先頭につける。例えば、保存ＩＰアドレス。ＦＬＤ４１６のＰＦＭ４６２とＩＰＡ４６３は保存ＩＰアドレスと比較される（比較１）。ＰＦＭ４６２は５ビット（７ビット）であり、ＬＰＭルールで説明した方法で展開される。展開されたマスクを使ってＩＰＡ４６３と保存ＩＰアドレスが比較される。ＩＰＡ４６３は３２ビット（１２８ビット）で全ビットが比較される。ビット数はＩＰｖ４の場合で、カッコ内はＩＰｖ６の場合である。保存送信元ポートはＳＰＨ４６４そしてＳＰＬ４６５と比較される（比較２）。保存送信元ポートの値がＳＰＨ４６４とＳＰＬ４６５の間にある場合、一致と認識される。保存宛先ポートはＤＰＨ４６６そしてＤＰＬ４６７と比較される（比較３）。保存宛先ポートの値がＤＰＨ４６６とＤＰＬ４６７の間にある場合、一致と認識される。保存プロトコールはＰＲ４６８と比較される（比較４）。保存ＴＯＳはＴＯＳマスク、ＴＯＳＭ４６９を使って、マスクされていないＴＯＳ４７０のビットと比較される（比較５）。保存制御フラグはＣＦマスク、ＣＦＭ４７１を使って、マスクされていないＣＦ４７２のビットと比較される（比較６）。ユーザーデータ４２５のＡＣＬＩＤ４２６とＡＩＤ４７３が比較される（比較７）。比較１から比較７、全ての比較結果が一致であれば、そのＦＬＤ４１６はサーチキーと一致したと判断される。一致したＦＬＤ４１６が２個以上存在すれば、そのうち優先順位が一番高いＦＬＤ４１６のＵＤ４７４と一致結果と命令コード４０１が結果出力３である。ひとつのＦＬＤ４１６も一致しなかった場合、不一致結果と命令コード４０１が結果出力３である。本発明の重要な点である、ＡＣＬＩＤ４２６とＡＩＤ４７３の比較法を詳しく説明する。ＡＣＬＩＤ４２６とＡＩＤ４７３は同じ形式を持つ。ＡＣＬＩＤ４２６は一致ＩＤと範囲ＩＤから構成される。一致ＩＤは、読み出しデータ４９７に複数の異なるグループが存在する場合、それを区別する目的で比較される。ＡＣＬＩＤ４２６の範囲ＩＤがＡＩＤ４７３の範囲ＩＤの値以上であれば一致と判断される。その理由を説明する。ＡＣＬテーブル２に格納されている、細分化されたグループのＦＬＤ４１６は、ＡＣＬテーブル１の検索で一致したＩＰアドレスに属する。しかし、一致したＩＰアドレスは複数存在する可能性がある。それらの例をＩＰ０、ＩＰ１、ＩＰ２、ＩＰ３とし、ＩＰ０，ＩＰ１，ＩＰ２，ＩＰ３の順でそれらのプリフィックスマスク長が長くなるとする。ＡＣＬテーブル１の検索で、プリフィックスマスク長が最長のＩＰ３が選択されれば、このグループに属する全てのＦＬＤ４１６が比較対象となる。しかし、ＡＣＬテーブル１の検索で、ＩＰ２が選択された場合、ＩＰ３に関係するＦＬＤ４１６は比較対象から除かれなければならない。このため、それを実現する為に、ＩＰ３に関係するＦＬＤ４１６の範囲ＩＤに例として３を割り当てる。同様に、ＩＰ０、ＩＰ１、ＩＰ２に関係するＦＬＤ４１６の範囲ＩＤにそれぞれ０，１，２を割り当てる。このようにＡＣＬＩＤ４２６とＡＩＤ４７３を設定すると、ＡＣＬテーブル１の検索で、ＩＰ３が選択された場合、そのＡＣＬＩＤ４２６の範囲ＩＤが３であるから、３を含むそれ以下のＡＩＤ４７３の範囲ＩＤをもつ、グループ内の全てのＦＬＤ４１６のＡＩＤ４７３が一致する。ＩＰ１が選択された場合、そのＡＣＬＩＤ４２６の範囲ＩＤが１であるから、グループ内のＡＣＬＩＤ４２６の範囲ＩＤが０と１を持つＦＬＤ４１６が比較対象となる。
【００６２】
以上で、ＡＣＬテーブルの検索は、ＡＣＬテーブル１の検索に続いて、ＡＣＬテーブル２の検索を行うことにより実現可能であることを説明した。この手法は他に応用できる。例えば、送信元ＩＰアドレスで構成されるＡＣＬテーブル１の検索、その結果で、宛先ＩＰアドレスで構成されるＡＣＬテーブル２の検索、その結果で、送信元ポートと宛先ポートで構成されるＡＣＬテーブル３の検索、その結果でプロトコール、ＴＯＳ、制御フラグで構成されるＡＣＬテーブル４の検索を行いＡＣＬテーブルの検索が実現できることは明らかである。しかし、検索時間が長くなる欠点がある。
【００６３】
［テーブル管理手段］
次にテーブル管理手段６００の機能を説明する。テーブル管理手段６００は基本的にプロセッサーとそのプログラムを格納するメモリから構成される。そのプロセッサーの処理可能なアドレス空間にポインタテーブルメモリ２００とデータベースメモリ４００はマップされている。プロセッサーからの両メモリに対する書き込みと読み出しは書き込み・読み出しアドレス制御信号（２９３と４９３）と書き込み・読み出しデータ（２９４と４９４）を使って行われる（図４）。またテーブル管理手段６００は検索命令処理手段１００、ポインタ処理手段３００、比較手段５００に保持される、テーブル管理命令２の実行状況を読み出すインターフェイスを備える（図１の点線で示す）。
【００６４】
本発明であるルートテーブルとＡＣＬテーブルを検索する方法を実現する為には、それらのテーブルの構築にいろいろな条件が存在する。それらの条件を実現することが、テーブル管理手段６００の役目である。それらの条件を満たすためのテーブル管理手段６００の機能を、それぞれのテーブル構築で説明する。
【００６５】
最初に３２ビットＩＰアドレスのルートテーブルの構築法を説明する。なお、１２８ビットＩＰアドレスの場合も基本的には同じである。ルートテーブルはネットワークが備えるルーティングの機能により構築される。このため、ルートテーブルのテーブル管理命令２はひとつのＩＰアドレスの付加命令と削除命令である。初期条件設定などのテーブル管理命令２は本発明に関係がないためその記述はしない。テーブル管理命令２と検索命令１は命令コードにより互いに区別される。またＩＰアドレスの付加命令と削除命令はテーブル管理手段６００で処理されるが、同時に検索命令処理手段１００で処理され検索が行われる。ただし、ＩＰアドレスの付加命令と削除命令の命令コードを伴う検索は、検索過程で与えられたテーブル管理命令２の実行に必要なパラメータを保持する、そして結果出力３は出力しない。必要なパラメータの例として、検索命令処理手段１００はポインタテーブルのインデックスと全インデックスを、ポインタ処理手段３００はルートテーブルのインデックスとＳＰＴのインデックスを、比較手段５００は比較結果と、一致した場合、読み出しデータ４９７に格納されている、一致したＦＬＤ４１６の位置と、ＮＶＣ比較の場合、ＮＶＣ比較の結果と選択されたＦＬＤ４１６の位置、プリフィックスマスク長比較の場合、プリフィックスマスク長比較の結果と選択されたＦＬＤ４１６の位置、等を保存する。これらのパラメータを使ってテーブル管理手段６００はＩＰアドレスの付加命令と削除命令を実行する。ＩＰアドレスの付加と削除は、付加・削除されるＩＰアドレスのプレフィックス長に依存する。それがポインタテーブルのインデックス長（ｍとする）以下の場合、ポインタテーブルの処理になり、それがｍ＋１以上の場合、ルートテーブルの処理になる。ポインタテーブルとルートテーブルについて詳しく説明する。検索命令処理手段１００に保持されているポインタテーブルのインデックスでアドレスされるポインタテーブルの読み出しデータは、ポインタ処理手段３００に保存されるルートテーブルのインデックスを含む。ルートテーブルのインデックスで読み出されるＩＰアドレスのプレフィックス長はｍ＋１以上であり、そのＩＰアドレスの上位ｍビットはポインタテーブルのインデックスと当然であるが同じである。デフォルトデータが有効である場合、ｍ以下のプレフィックス長を持つＩＰアドレスの中で最大のプレフィックス長をもつＩＰアドレスのユーザーデータがデフォルトデータである。ｍ以下のプレフィックス長を持つＩＰアドレスは、そのプレフィックス・マスクを使って、ＩＰアドレスの上位ｍビットとポインタテーブルのインデックスを比較すると一致する。可能性として、デフォルトデータを無効とするルートテーブルを構築する場合、ｍ以下のプレフィックス長を持つ全てのＩＰアドレスを、または最大のプレフィックス長をもつＩＰアドレスを、ルートテーブルに保存する必要がある。この場合、ルートテーブルに同じＩＰアドレスが２の（ｍ−プレフィックス長）べき乗個書き込む必要があり、無駄が生じる。これを例により示す。サーチキーを１２３４５６７８（１６進形式）とする。ポインタテーブルのインデックスは１２３４である。それにより、ルートテーブルを読み出して得られる、ＩＰアドレスはプレフィックス長１７以上で、１２３４ｘｘｘｘである。ｘは０からＦの値それらのＩＰアドレスに加えて、この例でプレフィックス長が８と１２のＩＰアドレス、すなわち１６進表示でＩＰアドレス１２ｘｘｘｘｘｘと１２３ｘｘｘｘｘ（ｘは０からＦの値）、が存在した場合、ＩＰアドレス１２３ｘｘｘｘｘのユーザーデータがデフォルトデータであり、ポインタテーブルのロケーション１２３４のデフォルトデータに保存される。デフォルトデータを無効とするルートテーブルを構築する場合、ポインタテーブルのインデックス１２３ｘで読み出される、ルートテーブルのインデックスでアドレスされるルートテーブルに、ＩＰアドレス１２３ｘｘｘｘｘを保存する（１６個の同じＩＰアドレスの書き込みを行う）。必要とあればポインタテーブルのインデックス１２ｘｘで読み出される、ルートテーブルに、ＩＰアドレス１２ｘｘｘｘｘｘを保存する（２５６個の同じＩＰアドレスの書き込みを行う）。
【００６６】
付加・削除の機能の説明に戻る。デフォルトデータが有効であるポインタテーブルの処理の場合、例としてポインタテーブルのインデックス長を１６で、付加・削除されるＩＰアドレスのプリフィックス長を８とする。この例では、テーブル管理手段６００の持つルートテーブルのコンテキストの変更に加えて、ポインタテーブルのエントリーのデフォルトデータの処理を行う。その数は最大２５６存在する。ポインタテーブルメモリ２００がデータ幅の広いメモリを使うことは記述した。これを利用して、書き込み及び読み出し回路２９９は複数のエントリーを一度に処理できる機能を備える。例えばメモリアレイ２９１のデータバス２９２のバス幅を５７６ビットとすると、８個のエントリーが一度に処理できる。この場合、テーブル管理手段６００はポインタテーブルメモリ２００に対し、書き込みデータ（デフォルトデータ）とマスクと書き込みアドレスを与えればよい。図１１に示す、このフィルオーダー６１０を使い、最大２５６回の書き込みが３２回の書き込み命令でポインタテーブルの変更が可能であり、テーブル管理命令の高速実行が可能である。
【００６７】
付加・削除されるＩＰアドレスのプリフィックス長が１８の場合、ルートテーブルの修正が行われる。検索で一致した場合、テーブル管理手段６００は付加命令に対し、ポインタ処理手段３００の保持するルートテーブルのインデックスと比較手段５００の保持するＦＬＤ４１６の位置情報を使い、ユーザーデータの変更を行う。削除命令に対しては、各手段の保持する情報を使い一致したＦＬＤ４１６を削除する。検索で一致しない場合、テーブル管理手段６００は削除命令に対しては何も行わない、付加命令に対して、検索で一致しない場合、そしてポインタ処理手段３００の保持するルートテーブルのインデックスで、読み出しデータ４９７内に付加されるＦＬＤ４１６を保存するスペースがある場合、ルートテーブルのそのインデックスに保存されているＦＬＤ４１６のプリフィックス長の比較オーダーをデータベースメモリ４００に発行し、比較結果として、付加されるＦＬＤ４１６の位置を得る。比較オーダー６２０を図１１に示す。テーブル管理手段６００は、そのアドレスを読み出しＦＬＤ４１６のシフト動作を行うシフトオーダーを発行する。シフトオーダー６３０を図１１に示す。シフトオーダーはシフト量と、シフト方向と、シフトマスクと、シフト元アドレス（読み出しアドレス）と、シフト先アドレス（書き込みアドレス）から構成される。そしてシフト動作の結果、空いたロケーションに付加するＦＬＤ４１６を書き込む。付加されるＦＬＤ４１６を格納するロケーションが存在しなければ、次の二つのいずれかで処理される。全てのロケーションは同じグループのＦＬＤ４１６で、占められている場合と、複数のグループのＦＬＤ４１６で、占められている場合である。前者の場合、メモリ読み出し回数を増やすか、ＬＴ，ＳＰＴ等の細分化を適用する。ＬＴを構築する場合、ＬＴのインデックスを生成するとき、使われた全インデックスのビット位置とプリフィックスマスク位置が一致するＩＰアドレスは、その位置によりＬＴ内で複数回書き込む必要がある。ＳＰＴを構築する場合には、ＬＴのように複数回書き込むケースはない。理由はデフォルトデータが存在するからである。後者の場合、他のグループ、または付加されるべきグループを他のアドレスに移動し、空きロケーションを作る、そして前記のシフトオーダーを発行し、その後付加すべきＦＬＤ４１６を書き込む。ＦＬＤ４１６の付加後、または削除後、関連するテーブル管理手段６００のコンテキストを修正する。以上がルートテーブルに発行される付加命令および削除命令に対するテーブル管理手段６００の機能である。
【００６８】
ＡＣＬテーブルに対して、テーブル管理手段６００が行う機能はルートテーブルに対する記述されたその機能より簡単である。ＡＣＬテーブルの付加・削除命令は基本的にない。すなわち、ＡＣＬテーブルが修正されるとき、ＡＣＬテーブルを構築する、すべてのＦＬＤ４１６が削除され、新しく格納される全てのＦＬＤ４１６が書き込まれる。この理由により、ＡＣＬテーブルに対するテーブル管理命令２は構築命令である。構築命令はＡＣＬテーブル１のポインタテーブルのエントリーに属するＦＬＤ４１６のグループを優先順位に従って送られる。このため、テーブル管理手段６００は送られるＦＬＤ４１６を、ＡＣＬテーブル１を構成するＩＰアドレスを除き、順次ＡＣＬテーブル２に書き込む。除かれたＩＰアドレスはプリフィックスマスク長の順に並べて、ＡＣＬテーブル１に書き込み、そのポインタテーブルのエントリーを生成する。構築命令はＡＣＬテーブル１とＡＣＬテーブル２の構築に必要なヒントを含む。ヒントはＡＣＬテーブル１に対してＦＬＤ４１６の数、ＡＣＬテーブル２に対してＦＬＤ４１６の数、細分化情報（メモリ読み出し回数、ＡＣＬテーブル２のＩＰアドレスのビット位置等）である。（ヒント情報はテーブル管理手段６００で生成可能である。）
【００６９】
テーブル管理手段６００はルートテーブルとＡＣＬテーブルに対する上記機能に加えて、それらの固定長データテーブルの使用効率を高めるリソースマネージメント機能をもつ。この機能は一般的にペアリング機能と呼ばれる。固定長データテーブルの読み出しデータ４９７が３２個の固定長データを保存できる例で、例えば二つのポインタテーブルの読み出しデータ２９７が固定長データテーブルのインデックス、それぞれＩＸＡとＩＸＢを保持し、それに対応する固定長データが１４個と１８個保存されている場合を考える。図１１に示す。この場合、固定長データテーブルのインデックスＩＸＡとＩＸＢで読み出されるデータにはそれぞれ１８個と１４個の空きロケーションが存在し、使用効率が非常に悪い。使用効率を改善する為に、テーブル管理手段６００は、例えば、固定長データテーブルのインデックスＩＸＣに上記１４個と１８個の固定長データを保存し、空きロケーションをなくす機能を持つ。この場合、ポインタテーブルのＩＸＡとＩＸＢはＩＸＣに変更される。検索で異なるグループに属する固定長データが比較されるため、ルートテーブルではＩＤで、ＡＣＬテーブルではＡＩＤでまちがった比較結果が得られないようにする。空きロケーションをなくす手法で２個のグループで説明をしたが、この例では２から最大３２個のグループで空きロケーションをなくしてもよい。
【００７０】
テーブル管理手段６００の機能を固定長データ検索および管理装置１０から外部手段に委譲することが出来る。この場合、ポインタテーブルメモリ２００に格納されるポインタテーブルに、データベースメモリ４００に格納されるルートテーブルとＡＣＬテーブルに、その構造を含めた書き込まれるＦＬＤ４１６は外部手段で作成し、単純なメモリ書き込み機能で書き込まなければならない。付加されるＦＬＤ４１６の検索を考えると、外部手段のテーブル管理手段６００を伴う固定長データ検索および管理装置１０は付加命令と削除命令を実行することに大きな時間がかかる。
【００７１】
図１２に本発明のコンピュータプログラムおよび記録媒体の適用可能なハードウェアの構成例を示すブロック図を示す。図１２において、コンピュータシステム９０は、システムバス９４に接続されたＣＰＵ（Central Processing Unit）９１と、記憶装置９２と、入出力装置９３とを含む。ＣＰＵ９１は、少なくとも演算装置と制御装置とを備え、記憶装置９２は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブなどで構成される。コンピュータシステム９０に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置５５の前記主記憶メモリにより、またはＣＰＵ９１が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ、データベースメモリ等が構成される。入出力装置９３は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置９２内の例えばハードディスクドライブやフロッピー（登録商標）ディスクドライブなどにより、本発明のコンピュータプログラムが記録された記録媒体からプログラムが読み出される。
【００７２】
以上のように、いくつかの例示的な実施形態が本発明に関して詳細に説明された。当業者には、本発明の新規な開示および効果から実質的に離れることなくこれら実施形態を様々に改良することが可能であることが分るであろう。したがって、そのような改良も全て本発明の範囲に含められるべきことが意図されている。
【図面の簡単な説明】
【００７３】
【図１】図１は、本発明のある実施の形態における本発明固定長データ検索および管理装置に係る実施例を示すブロック図である。
【図２】図２は、本発明のある実施の形態における固定長データ検索装置１０の動作を示すフローチャートである。
【図３】図３は、本発明のある実施の形態における固定長データ検索装置１０を構成する検索命令処理手段１００の機能を示すブロック図である。
【図４】図４は、本発明のある実施の形態における固定長データ検索装置１０を構成するポインタテーブルメモリ２００の構成と、固定長データ検索装置１０を構成するデータベースメモリ４００の構成を示すブロック図である。
【図５】図５は、本発明のある実施の形態におけるポインタテーブルのエントリーデータの形式およびその内容と、ルートテーブルとＡＣＬテーブル１と、ＡＣＬテーブル２のエントリー制御データの形式およびその内容を示す図である。
【図６】図６は、本発明のある実施の形態における固定長データ検索装置１０を構成するポインタ処理手段３００の機能を示すブロック図である。
【図７】図７は、本発明のある実施の形態におけるルートテーブルの内容を示す図である。
【図８】図８は、本発明のある実施の形態における固定長データ検索装置１０を構成する比較手段５００の機能を示すブロック図である。
【図９】図９は、本発明のある実施の形態におけるルートテーブルを構成するＩＰｖ４アドレスをＬＰＭルールで検索する概念図である。
【図１０】図１０は、本発明のある実施の形態におけるＡＣＬテーブル１とＡＣＬテーブル２の内容を示す図である。
【図１１】図１１は、テーブル管理手段の発行するオーダーの形式とペアリング手法を示す図である。
【図１２】図１２は、本発明のある実施の形態における本発明のコンピュータプログラムおよび記録媒体を適用可能なコンピュータシステムの構成例を示すブロック図である。
【符号の説明】
【００７４】
１０    固定長データ検索装置
１００  検索命令処理手段
２００  ポインタテーブルメモリ
３００  ポインタ処理手段
４００  データベースメモリ
５００  比較手段
６００  テーブル管理手段
【図１】
0004995125.tif 000002
【図２】
0004995125.tif 000003
【図３】
0004995125.tif 000004
【図４】
0004995125.tif 000005
【図５】
0004995125.tif 000006
【図６】
0004995125.tif 000007
【図７】
0004995125.tif 000008
【図８】
0004995125.tif 000009
【図９】
0004995125.tif 000010
【図１０】
0004995125.tif 000011
【図１１】
0004995125.tif 000012
【図１２】
0004995125.tif 000013