(57)【特許請求の範囲】
【請求項１】
複数のデータ種別のデータを記憶するデータ管理テーブルと、
それぞれの前記データ種別に関して、ハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数を記憶する検索用ハッシュテーブルと、
前記データ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部と
を備えたことを特徴とするデータ検索装置。
【請求項２】
それぞれの前記データ種別に関して、前記ハッシュ値が同一の前記データを記憶する前記データ管理テーブルは、検索チェーンによって接続されており、
前記管理テーブル検索部は、前記選択したデータ種別に関して、前記検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項１に記載のデータ検索装置。
【請求項３】
前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
前記管理テーブル検索部は、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項２に記載のデータ検索装置。
【請求項４】
前記データ検索装置は、更に、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントする管理テーブル生成部を備えたことを特徴とする請求項１乃至３のいずれかに記載のデータ検索装置。
【請求項５】
前記データ検索装置は、更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントする管理テーブル削除部を備えたことを特徴とする請求項１乃至４のいずれかに記載のデータ検索装置。
【請求項６】
前記データ管理テーブルは、ＩＰパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項１乃至５のいずれかに記載のデータ検索装置。
【請求項７】
前記データ管理テーブルは、ＡＲＰテーブルであり、前記データ種別には、ＩＰアドレスとＭＡＣアドレスを含むことを特徴とする請求項１乃至５のいずれかに記載のデータ検索装置。
【請求項８】
複数のデータ種別の検索キーの組み合わせの検索に際し、検索用ハッシュテーブルを参照し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択するステップと、
前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索するステップと
を含むことを特徴とするデータ検索方法。
【請求項９】
前記データ管理テーブルを検索するステップは、前記選択したデータ種別に関して、検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項８に記載のデータ検索方法。
【請求項１０】
前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
前記データ種別を選択するステップは、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、
前記データ管理テーブルを検索するステップは、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項９に記載のデータ検索方法。
【請求項１１】
更に、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントするステップを含むことを特徴とする請求項８乃至１０のいずれかに記載のデータ検索方法。
【請求項１２】
更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントするステップを含むことを特徴とする請求項８乃至１１のいずれかに記載のデータ検索方法。
【請求項１３】
前記データ管理テーブルは、ＩＰパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項８乃至１２のいずれかに記載のデータ検索方法。
【請求項１４】
前記データ管理テーブルは、ＡＲＰテーブルであり、前記データ種別には、ＩＰアドレスとＭＡＣアドレスを含むことを特徴とする請求項８乃至１２のいずれかに記載のデータ検索方法。
【請求項１５】
コンピュータを、
複数のデータ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部と
して動作させることを特徴とするデータ検索用プログラム。
【請求項１６】
前記管理テーブル検索部は、前記選択したデータ種別に関して、検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項１５に記載のデータ検索用プログラム。
【請求項１７】
前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
前記管理テーブル検索部は、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項１６に記載のデータ検索用プログラム。
【請求項１８】
更に、コンピュータを、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントする管理テーブル生成部として動作させることを特徴とする請求項１５乃至１７のいずれかに記載のデータ検索用プログラム。
【請求項１９】
更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントする管理テーブル削除部として動作させることを特徴とする請求項１５乃至１８のいずれかに記載のデータ検索用プログラム。
【請求項２０】
前記データ管理テーブルは、ＩＰパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項１５乃至１９のいずれかに記載のデータ検索用プログラム。
【請求項２１】
前記データ管理テーブルは、ＡＲＰテーブルであり、前記データ種別には、ＩＰアドレスとＭＡＣアドレスを含むことを特徴とする請求項１５乃至１９のいずれかに記載のデータ検索用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ検索装置、データ検索方法、及びデータ検索用プログラムに関し、特に、ハッシュテーブルを用いて検索を行うデータ検索装置、データ検索方法、及びデータ検索用プログラムに関する。
【背景技術】
【０００２】
通信装置のフォワーディングやフロー制御、アクセス制御において、アドレスやポート番号等の検索キーの組み合わせに対する検索を行う場合がある。このような検索キーの組み合わせに対する検索方法として、例えば、特許文献１には、最初に一つの検索キーで検索したした結果に対して、残りの検索キーで検索を行う方法（［００３３］欄）（以下、多段階検索とする）や２つの検索キーのハッシュ値の組み合わせから成るテーブル位置を有するハッシュテーブルを用いて検索する方法（［００３７］）（以下、多次元ハッシュテーブルとする）が開示されている。
【０００３】
【特許文献１】特開２００５−３１１５３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した特許文献１に記載された検索方法のうち、多次元ハッシュテーブルを用いる方法は、各検索キーのハッシュ値の組み合わせに対してテーブル位置を確保する必要があり、検索キーの種別（次元）が増えると、ハッシュテーブルに必要な記憶容量が、各検索キーのハッシュ値の最大値の積に比例して増大する。一方、多段階検索を用いる方法において、各検索キーの検索にハッシュテーブルを用いた場合、検索キーの種別が増えた場合の記憶容量の増加は、多次元ハッシュテーブルを用いる方法に比べて抑えられる。
【０００５】
ところで、ハッシュテーブルを用いた検索方法においては、各ハッシュ値に対して関連付けられる検索対象の数は均一であることが理想的である。しかしながら、通信装置のフォワーディングやフロー制御、アクセス制御においては、各ハッシュ値に対して関連付けられる検索対象の数に偏りが発生することがある。
【０００６】
上述した多段階検索を用いる方法において、各ハッシュ値に対して関連付けられる検索対象の数に偏りがあると、最初の検索キーで検索した結果が多く得られることがあり、その結果、検索時間が増大し、検索性能が劣化するという課題があった。
【０００７】
（本発明の目的）
本発明の目的は、上述した課題を解決するデータ検索装置、データ検索方法、及びデータ検索用プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明のデータ検索装置は、複数のデータ種別のデータを記憶するデータ管理テーブルと、それぞれの前記データ種別に関して、ハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数を記憶する検索用ハッシュテーブルと、前記データ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部とを備えたことを特徴とする。
【０００９】
本発明のデータ検索方法は、複数のデータ種別の検索キーの組み合わせの検索に際し、検索用ハッシュテーブルを参照し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択するステップと、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索するステップとを含むことを特徴とする。
【００１０】
本発明のデータ検索用プログラムは、コンピュータを、複数のデータ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部として動作させることを特徴とする。
【発明の効果】
【００１１】
本発明の効果は、検索キーの組み合わせに対する検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できることである。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
（第一の実施の形態）
図１に本発明の第一の実施の形態におけるデータ検索装置１００の構成を示す。
【００１４】
本発明の第一の実施の形態においては、データ検索装置１００にて管理される、検索の対象となるデータ４３０の種別はデータ種別Ａ、Ｂの２つとしているが、データ４３０の種別の数は２以上の任意の数としてよい。データ４３０の種別は、ハッシュ値によって検索が行えるようものであればどのようなものでも良く、例えば、データ種別Ａ、Ｂをそれぞれ「名前を表すデータ」、「電話番号を表すデータ」としてもよい。データ検索装置１００は、各データ種別について１つの検索キーからなる、検索キーの組み合わせが指定されると、当該検索キーの組み合わせと同一のデータ４３０を含むデータ管理テーブル４００を検索する。なお、検索キーの組み合わせに含まれるデータ種別の数は、データ検索装置１００にて管理されるデータ種別の数以下の任意の数としてよい。例えば、データ検索装置１００にて管理されるデータ種別の数が４種類（Ａ、Ｂ、Ｃ、Ｄ）の場合、そのうちの２種類（Ａ、Ｃ）を検索キーとしてもよい。この場合、データ検索装置１００は、これら２つのデータ種別の検索キーの組み合わせと同一のデータ４３０の組み合わせを含むデータ管理テーブル４００を検索する。
【００１５】
図１を参照すると、データ検索装置１００は、管理テーブル検索部２１０、検索用ハッシュテーブル３００Ａ、３００Ｂ、及びデータ管理テーブル４００ａ、４００ｂ、４００ｃから構成される。なお、ここでは、検索用ハッシュテーブル３００Ａ、３００Ｂを総称する場合、検索用ハッシュテーブル３００と記述する。同様に、データ管理テーブル４００ａ、４００ｂ、４００ｃを総称する場合、データ管理テーブル４００と記述する。データ検索装置１００は、プログラムによって動作する情報処理装置であってもよい。
【００１６】
管理テーブル検索部２１０は、検索キーの組み合わせを取得すると、検索用ハッシュテーブル３００及びデータ管理テーブル４００を参照し、取得した検索キーの組み合わせと同じデータ４３０の組み合わせを含むデータ管理テーブル４００を検索する。
【００１７】
図２に本発明の第一の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す。
【００１８】
検索用ハッシュテーブル３００は、データ管理テーブル４００が管理するデータ種別毎に存在する。検索用ハッシュテーブル３００は、インデックス３１０ごとに、「インデックス３１０、カウンタ３２０、及び検索チェーン３３０」（以下、検索用サブテーブルとする）を含む。ここで、インデックス３１０は、当該インデックス３１０が属する検索用ハッシュテーブル３００のデータ種別のデータ４３０のハッシュ値が取り得る値である。なお、ハッシュ値の算出方法については、予め決められているものとする。
【００１９】
検索用ハッシュテーブル３００の検索用サブテーブル内の検索チェーン３３０には、当該検索用サブテーブル内のインデックス３１０とハッシュ値が同一のデータ４３０を含むデータ管理テーブル４００を指し示す情報が登録される（検索チェーン３３０が、当該データ管理テーブル４００を指し示す情報を持つ）。検索チェーン３３０は、データ管理テーブル４００を示すポインタとしてもよい。例えば、インデックス３１０Ａ１とデータ４３０ａＡのハッシュ値が等しければ、検索チェーン３３０Ａ１にはデータ管理テーブル４００ａが登録される。当該インデックス３１０とハッシュ値が同一のデータ４３０を含むデータ管理テーブル４００が複数存在する場合、検索チェーン３３０には、その先頭のデータ管理テーブル４００が登録される。当該インデックス３１０とハッシュ値が同一のデータ４３０を含むデータ管理テーブル４００が存在しない場合、検索チェーン３３０には、無効値（例えばＮｕｌｌ）が設定される。
【００２０】
検索用ハッシュテーブル３００の検索用サブテーブル内のカウンタ３２０は、当該検索用サブテーブル内のインデックス３１０とハッシュ値が同一のデータ４３０を含むデータ管理テーブル４００の数を管理する。すなわち、カウンタ３２０は、検索チェーン３３０、４２０によって接続されるデータ管理テーブル４００の数を示す。当該カウンタ３２０に対応するインデックス３１０とハッシュ値が同一のデータ４３０を含むデータ管理テーブル４００が存在しない場合、カウンタ３２０の値は０となる。
【００２１】
データ管理テーブル４００は、テーブル識別子４１０、検索チェーン４２０、及びデータ４３０により構成される。
【００２２】
テーブル識別子４１０は、データ管理テーブル４００をデータ検索装置１００上で一意に識別するための情報である。テーブル識別子４１０は、データ管理テーブル４００が存在するアドレスであってもよい。
【００２３】
データ４３０は、データ管理テーブル４００が管理する対象であり、データ管理テーブル４００は、検索対象となるデータ種別の数（ここでは、データ種別Ａ、Ｂの２種類）のデータ４３０を保持する。
【００２４】
データ管理テーブル４００は、データ種別の組み合わせ（例えば、データ種別Ａの個々のデータ４３０Ａとデータ種別Ｂの個々のデータ４３０Ｂとの組み合わせ）ごとに設けられる。また、この組み合わせについては、データ種別ごとに取り得る全てのデータ４３０の組み合わせが可能である。
【００２５】
検索チェーン４２０はデータ種別毎に存在する。検索チェーン４２０には、各々のデータ種別に関して、ハッシュ値が同一となるデータ４３０を含む他のデータ管理テーブル４００を示す情報が登録される（検索チェーン４２０は当該他のデータ管理テーブル４００を指し示す）。検索チェーン４２０は、例えば、他のデータ管理テーブル４００を示すポインタでもよい。検索チェーン４２０には、前のデータ管理テーブル４００を示す情報（前方値）と次のデータ管理テーブル４００を示す情報（後方値）の２つを含むものとする。ただし、検索用ハッシュテーブル３００の検索チェーン３３０に登録される先頭のデータ管理テーブル４００においては、検索チェーン４２０の前方値には、当該先頭のデータ管理テーブル４００を登録している検索チェーン３３０に対応するインデックス３１０を示す情報が登録される。検索チェーン４２０の前方値がインデックス３１０とデータ管理テーブル４００のどちらを示すかについては、例えば、検索チェーン４２０の前方値にフラグを含めることによって識別するようにしてもよい。また、次のデータ管理テーブル４００が存在しない場合、すなわち、検索チェーン３３０、４２０によって接続される最後のデータ管理テーブル４００では、検索チェーン４２０の後方値には、無効値（例えばＮｕｌｌ）が設定される。
【００２６】
図２の例においては、データ種別Ａに関して、データ管理テーブル４００ａのデータ４３０ａＡとデータ管理テーブル４００ｃのデータ４３０ｃＡのハッシュ値は同一で、インデックス３１０Ａ１と等しい。そして、検索チェーン３３０Ａ１には、データ管理テーブル４００ａが登録されている。検索チェーン４２０ａＡの前方値には、インデックス３１０Ａ１、検索チェーン４２０ａＡの後方値には、データ管理テーブル４００ｃが登録されている。検索チェーン４２０ｃＡの前方値には、データ管理テーブル４００ａ、検索チェーン４２０ｃＡの後方値には、他のデータ管理テーブル４００が登録されている。すなわち、データ管理テーブル４００ａ、４００ｃは、検索チェーン３３０Ａ１、検索チェーン４２０ａＡ、検索チェーン４２０ｃＡにより接続されている。
【００２７】
また、データ種別Ｂに関して、データ管理テーブル４００ｂのデータ４３０ｂＢとデータ管理テーブル４００ａのデータ４３０ａＢのハッシュ値は同一で、インデックス３１０Ｂ１と等しい。そして、検索チェーン３３０Ｂ１には、データ管理テーブル４００ｂが登録されている。検索チェーン４２０ｂＢの前方値には、インデックス３１０Ｂ１、検索チェーン４２０ｂＢの後方値には、データ管理テーブル４００ａが登録されている。検索チェーン４２０ａＢの前方値には、データ管理テーブル４００ｂ、検索チェーン４２０ａＢの後方値には、Ｎｕｌｌが登録されている。すなわち、データ管理テーブル４００ｂ、４００ａは、検索チェーン３３０Ｂ１、検索チェーン４２０ｂＢ、検索チェーン４２０ａＢにより接続されている。したがって、この場合、カウンタ３２０Ｂ１の値は２である。
【００２８】
次に本発明の第一の実施の形態の動作について、図面を参照して詳細に説明する。
【００２９】
図３に本発明の第一の実施の形態における管理テーブル検索部２１０によるデータ管理テーブル４００の検索時の処理フローを示す。また、カウンタ３２０の値については、データ管理テーブル４００の生成時に設定されているものとする。
【００３０】
ここでは、指定された検索キーの組み合わせと同一のデータ４３０の組み合わせを含むデータ管理テーブル４００のテーブル識別子４１０を検索結果として取得するものとする。検索結果の初期値はＮｕｌｌとする。
【００３１】
はじめに、管理テーブル検索部２１０は、検索を行う検索キーの組み合わせを取得する（検索キーの組み合わせが指定される）（ステップＳ１０１）。管理テーブル検索部２１０は、当該検索キーの組み合わせから検索キーを一つ選択する（ステップＳ１０２）。管理テーブル検索部２１０は、選択した検索キーについてハッシュ値を算出する（ステップＳ１０３）。管理テーブル検索部２１０は、選択した検索キーに対応する検索用ハッシュテーブル３００を参照し、算出したハッシュ値と同一のインデックス３１０を検索する（ステップＳ１０４）。管理テーブル検索部２１０は、当該インデックス３１０に対応する検索チェーン３３０にデータ管理テーブル４００が登録済みかどうかを確認する（ステップＳ１０５）。データ管理テーブル４００が登録済みでない場合（ステップＳ１０５／Ｎ）、選択した検索キーと一致するデータ４３０は存在しないため、管理テーブル検索部２１０は、検索を終了する。データ管理テーブル４００が登録済みの場合（ステップＳ１０５／Ｙ）、管理テーブル検索部２１０は、当該インデックス３１０に対応するカウンタ３２０の値を取得する（ステップＳ１０６）。管理テーブル検索部２１０は、検索キーの組み合わせの中で、カウンタ３２０の値を取得していない検索キーが存在する場合（ステップＳ１０７／Ｎ）、検索キーの組み合わせから次の検索キーを選択し（ステップＳ１０８）、ステップＳ１０３からステップＳ１０７を繰り返す。
【００３２】
管理テーブル検索部２１０は、検索キーの組み合わせの全ての検索キーについてカウンタ３２０の値を取得した場合（ステップＳ１０７／Ｙ）、カウンタ３２０の値が最小の検索キーを選択する（ステップＳ１０９）。
【００３３】
管理テーブル検索部２１０は、ステップＳ１０９で選択した検索キーのデータ種別に関して、算出したハッシュ値と同一のインデックス３１０に対応する検索チェーン３３０を参照し、当該検索チェーン３３０に登録されたデータ管理テーブル４００を取得する（ステップＳ１１０）。管理テーブル検索部２１０は、検索キーの組み合わせの中の各検索キーのデータ種別毎に、検索キーとステップＳ１１０において取得したデータ管理テーブル４００上のデータ４３０が一致するかどうかを確認する（ステップＳ１１１）。管理テーブル検索部２１０は、取得したデータ管理テーブル４００に、検索キーの組み合わせの中の全ての検索キーと一致するデータ４３０が含まれる場合（ステップＳ１１２／Ｙ）、当該データ管理テーブル４００のテーブル識別子４１０を検索結果に追加する（ステップＳ１１３）。
【００３４】
管理テーブル検索部２１０は、ステップＳ１０９で選択した検索キーのデータ種別に関して、取得したデータ管理テーブル４００の検索チェーン４２０の後方値に、他のデータ管理テーブル４００が登録済みかどうかを確認する（ステップＳ１１４）。管理テーブル検索部２１０は、検索チェーン４２０の後方値にデータ管理テーブル４００が登録済みの場合（ステップＳ１１４／Ｙ）、当該データ管理テーブル４００を取得し（ステップＳ１１５）、ステップＳ１１１からステップＳ１１４を繰り返す。
【００３５】
管理テーブル検索部２１０は、検索チェーン４２０の後方値に他のデータ管理テーブル４００が登録されていない場合（ステップＳ１１４／Ｎ）、検索チェーン４２０の最後のデータ管理テーブル４００と判断し、検索を終了する。
【００３６】
次に、図２に示した検索用ハッシュテーブル３００、データ管理テーブル４００を用いて、具体例を説明する。図２において、データ種別Ａ、Ｂに対して検索キーα、βが指定され、それぞれのハッシュ値がインデックス３１０Ａ１、３１０Ｂ１と同一であったとする。管理テーブル検索部２１０は、カウンタ３２０Ａ１、カウンタ３２０Ｂ１の値を取得する。ここで、カウンタ３２０Ａ１＝１０、カウンタ３２０Ｂ１＝２であった場合、管理テーブル検索部２１０は、検索キーβを選択する。
【００３７】
管理テーブル検索部２１０は、選択した検索キーβについて算出したインデックス３１０Ｂ１に対応する検索チェーン３３０Ｂ１を参照し、データ管理テーブル４００ｂを取得する。管理テーブル検索部２１０は、検索キーαとデータ４３０ｂＡ、検索キーβとデータ４３０ｂＢが一致するかどうかを確認し、全てが一致した場合、テーブル識別子４１０ｂを検索結果に追加する。
【００３８】
次に、管理テーブル検索部２１０は、選択した検索キーβのデータ種別Ｂに関する検索チェーン４２０ｂＢの後方値に、データ管理テーブル４００ａが登録済みであるため、データ管理テーブル４００ａを取得する。管理テーブル検索部２１０は、検索キーαとデータ４３０ａＡ、検索キーβとデータ４３０ａＢが一致するかどうかを確認し、全てが一致した場合、テーブル識別子４１０ａを検索結果に追加する。
【００３９】
次に、管理テーブル検索部２１０は、検索チェーン４２０ａＢの後方値に、他のデータ管理テーブル４００が登録されていない（Ｎｕｌｌが設定されている）ため、検索を終了する。
【００４０】
以上により、本発明の第一の実施の形態の動作が完了する。
【００４１】
なお、本発明の第一の実施の形態においては、各データ種別に関して、ハッシュ値が同一であるデータ４３０を記憶するデータ管理テーブル４００を管理する方法として、検索チェーン３３０、４２０を用いる方法を示したが、ハッシュ値が同一であるデータ４３０を記憶するデータ管理テーブル４００を取得できるのであれば、どのような方法を用いても良い。例えば、検索用ハッシュテーブル３３０において、ハッシュ値が同一であるデータ４３０を記憶する全てのデータ管理テーブル４００のテーブル識別子４１０を、インデックス３１０ごとに記憶するようにしてもよい。
【００４２】
本発明の第一の実施の形態によれば、検索キーの組み合わせに対する検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、管理テーブル検索部２１０が、検索用ハッシュテーブル３００を参照し、検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００に対して、検索キーの組み合わせを含むデータ管理テーブル４００を検索するためである。
【００４３】
（第二の実施の形態）
次に本発明の第二の実施の形態について説明する。
【００４４】
図４に本発明の第二の実施の形態におけるデータ検索装置１００の構成を示す。図４を参照すると、本発明の第二の実施の形態におけるデータ検索装置１００は、管理部２００、検索用ハッシュテーブル３００、データ管理テーブル４００、及びフロー制御部５００より構成される。管理部２００は、管理テーブル検索部２１０、管理テーブル生成部２２０、管理テーブル削除部２３０、及びアクセスリスト２４０より構成される。
【００４５】
本発明の第二の実施の形態においては、データ検索装置１００が管理テーブル生成部２２０、管理テーブル削除部２３０、及びアクセスリスト２４０を備えた点において、第一の実施の形態と異なる。
【００４６】
また本発明の第二の実施の形態においては、データ検索装置１００を通信装置のフロー制御に適用したものであり、フロー管理テーブルをデータ管理テーブル４００上で管理する。データ管理テーブル４００が保持するデータ種別は、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポートの４つとする。データ検索装置１００は、これら４つのデータ種別の組み合わせをフロー識別子とし、受信したＩＰパケットについて、フローを識別するものとする。
【００４７】
なお、本発明の第二の実施の形態において、第一の実施の形態と同一の符号を有する構成要素については、特別な説明がない限り、第一の実施の形態の構成要素と同一であるものとする。
【００４８】
図４において、管理テーブル生成部２２０は、データ管理テーブル４００の生成時に、検索チェーン３３０、検索チェーン４２０の設定を行う。管理テーブル削除部２３０は、データ管理テーブル４００の削除時に、検索チェーン３３０、検索チェーン４２０の設定を行う。アクセスリスト２４０は、フロー制御の対象となるパケットの条件、及び制御情報を表すリストであり、図５に示すように、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポート、及びパケットに対する制御情報を記憶管理する。
【００４９】
図８、図９、及び図１０に本発明の第二の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す。
【００５０】
検索用ハッシュテーブル３００は、データ管理テーブル４００が管理する４つのデータ種別（宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート番号、送信元ポート番号）毎に存在する。
【００５１】
データ管理テーブル４００は、テーブル識別子４１０、検索チェーン４２０、データ４３０、及び制御内容４４０により構成される。データ４３０は、フローを識別するための４つのデータ種別（宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート、送信元ポート）の値を保持する。また、検索チェーン４２０は、これらの４つのデータ種別毎に存在する。制御内容４４０には、データ４３０（フロー識別子）によって識別されるフローに対して適用される制御情報が、アクセスリスト２４０の制御情報を参照して設定される。
【００５２】
フロー制御部５００は、受信したＩＰパケットのフロー識別子を、データ管理テーブル４００上で検索し、制御内容４４０を適用する。フロー制御部５００は、ＩＰパケットを受信した際、データ管理テーブル４００を参照し、受信したＩＰパケットのフロー識別子と一致するデータ４３０を含むデータ管理テーブル４００が存在するかどうかを検索する。ここでは、フロー制御部５００によるデータ管理テーブル４００の検索は、管理テーブル検索部２１０とは別の検索手段を用いて行うものとするが、管理テーブル検索部２１０を用いて行うようにしてもよい。フロー制御部５００は、受信したＩＰパケットのフロー識別子と一致するデータ４３０を含むデータ管理テーブル４００が存在する場合、受信したＩＰパケットに対して、制御内容４４０を適用する。また、フロー制御部５００は、受信したＩＰパケットのフロー識別子と一致するデータ４３０を含むデータ管理テーブル４００が存在しない場合、管理部２００に対して、当該フロー識別子に対応するデータ管理テーブル４００の生成を要求する。
【００５３】
次に本発明の第二の実施の形態の動作について、図面を参照して詳細に説明する。
【００５４】
（生成処理）
上述の通り、フロー制御部５００は、受信したＩＰパケットのフロー識別子と一致するデータ４３０を含むデータ管理テーブル４００が存在しない場合、管理部２００に対してデータ管理テーブル４００の生成を要求する。管理部２００は、フロー制御部５００から、受信したＩＰパケットのフロー識別子を取得し、当該フロー識別子が該当する条件をアクセスリスト２４０上で検索し、制御情報を取得する。管理部２００は、管理テーブル生成部２２０にデータ管理テーブル４００の生成を指示する。
【００５５】
例えば、受信パケットのフロー識別子が、＜宛先ＩＰアドレス＝ａａ．ａａ．ａａ．ａａ、送信元ＩＰアドレス＝ｄｄ．ｄｄ．ｄｄ．ｄｄ、宛先ポート＝ｇｇ、送信元ポート＝ｋｋ＞であった場合、図５のアクセスリスト２４０においては、３行目の条件（送信元ＩＰアドレス＝ｄｄ．ｄｄ．ｄｄ．ｄｄ、送信元ポート＝ｋｋ）に該当するため、管理部２００は、制御情報として＜廃棄＞を取得する。そして、管理部２００は、受信パケットのフロー識別子をデータ４３０、取得した制御情報を制御内容４４０としたデータ管理テーブル４００の生成を管理テーブル生成部２２０に要求する。
【００５６】
図６に、本発明の第二の実施の形態における管理テーブル生成部２２０によるデータ管理テーブル４００の生成時の処理フローを示す。ここでは、生成するデータ管理テーブル４００を「新規データ管理テーブル４００」とする。
【００５７】
管理テーブル生成部２２０は、管理部２００から、新規データ管理テーブル４００に設定するデータ４３０（フロー識別子）、制御内容４４０を取得する（ステップＳ２０１）。管理テーブル生成部２２０は、新規データ管理テーブル４００を生成するための領域を取得し、テーブル識別子４１０、データ４３０、及び制御内容４４０を設定する（ステップＳ２０２）。管理テーブル生成部２２０は、データ４３０のうちのデータ種別を一つ選択する（ステップＳ２０３）。
【００５８】
管理テーブル生成部２２０は、選択したデータ種別について、対応するデータ４３０のハッシュ値を算出する（ステップＳ２０４）。管理テーブル生成部２２０は、選択したデータ種別に対応する検索用ハッシュテーブル３００を参照し、算出したハッシュ値と同一のインデックス３１０を検索する（ステップＳ２０５）。管理テーブル生成部２２０は、当該インデックス３１０に対応する検索チェーン３３０にデータ管理テーブル４００が登録済みかどうかを確認する（ステップＳ２０６）。
【００５９】
データ管理テーブル４００が登録済みの場合（ステップＳ２０６／Ｙ）、管理テーブル生成部２２０は、データ管理テーブル４００の検索チェーン４２０の後方値を順次たどり、検索チェーン４２０上の最後のデータ管理テーブル４００を取得する（ステップＳ２０７）。管理テーブル生成部２２０は、当該最後のデータ管理テーブル４００の検索チェーン４２０の後方値に、新規データ管理テーブル４００を登録する（ステップＳ２０８）。また、管理テーブル生成部２２０は、新規データ管理テーブル４００の検索チェーン４２０の前方値に、当該最後のデータ管理テーブル４００を登録する（ステップＳ２０９）。
【００６０】
データ管理テーブル４００が登録済みでない場合（ステップＳ２０６／Ｎ）、管理テーブル生成部２２０は、検索チェーン３３０に新規データ管理テーブル４００を登録する（ステップＳ２１０）。管理テーブル生成部２２０は、新規データ管理テーブル４００の検索チェーン４２０の前方値に、ステップＳ２０５で検索したインデックス３１０を登録する（ステップＳ２１１）。
【００６１】
新規データ管理テーブル４００の検索チェーン３３０、４２０への登録が完了すると、管理テーブル生成部２２０は、当該インデックス３１０に対応するカウンタ３２０をインクリメントする（ステップＳ２１２）。
【００６２】
管理テーブル生成部２２０は、データ４３０の全てのデータ種別について、検索チェーン３３０、４２０への登録が完了したかどうかを確認する（ステップＳ２１３）。検索チェーン３３０、４２０への登録が完了していないデータ種別がある場合(ステップＳ２１３／Ｎ)、管理テーブル生成部２２０は、次のデータ種別を選択し(ステップＳ２１４)、ステップＳ２０４からステップＳ２１３を繰り返す。全てのデータ種別について、検索チェーン３３０、４２０への登録が完了した場合(ステップＳ２１３／Ｙ)、管理テーブル生成部２２０は、生成処理を終了する。
【００６３】
次に、図８、図９に示した検索用ハッシュテーブル３００、データ管理テーブル４００を用いて、具体例を説明する。図９は、図８のデータ管理テーブル４００ａ、４００ｂにデータ管理テーブル４００ｎを生成、追加した場合の例である。ここで、生成するデータ４３０ｎＡ（宛先ＩＰアドレス）のハッシュ値はインデックス３１０Ａ２と、データ４３０ｎＢ（送信元ＩＰアドレス）のハッシュ値はインデックス３１０Ｂ２と、データ４３０ｎＣ（宛先ポート）のハッシュ値はインデックス３１０Ｃ２と、データ４３０ｎＤ（送信元ポート）のハッシュ値はインデックス３１０Ｄ２とそれぞれ同一であるものとする。
【００６４】
宛先ＩＰアドレスに関して、検索チェーン３３０Ａ２にはデータ管理テーブル４００ｂが登録されており、データ管理テーブル４００ｂは検索チェーン４２０上の最後のデータ管理テーブル４００である（図８）。管理テーブル生成部２２０は、検索チェーン４２０ｂＡの後方値にデータ管理テーブル４００ｎを追加し、検索チェーン４２０ｎＡの前方値にデータ管理テーブル４００ｂを追加する（図９）。さらに、管理テーブル生成部２２０は、カウンタ３２０Ａ２をインクリメントする。
【００６５】
送信元ＩＰアドレスに関して、検索チェーン３３０Ｂ２にはデータ管理テーブル４００が登録されていない（図８）。管理テーブル生成部２２０は、検索チェーン３３０Ｂ２にデータ管理テーブル４００ｎを追加し、管理テーブル生成部２２０は、検索チェーン４２０ｎＢの前方値にインデックス３１０Ｂ２を追加する（図９）。さらに、管理テーブル生成部２２０は、カウンタ３２０Ｂ２をインクリメントする。
【００６６】
宛先ポートに関して、検索チェーン３３０Ｃ２にはデータ管理テーブル４００ａが登録されており、データ管理テーブル４００ａは検索チェーン４２０上の最後のデータ管理テーブル４００である（図８）。管理テーブル生成部２２０は、検索チェーン４２０ａＣの後方値にデータ管理テーブル４００ｎを追加し、検索チェーン４２０ｎＣの前方値にデータ管理テーブル４００ａを追加する（図９）。さらに、管理テーブル生成部２２０は、カウンタ３２０Ｃ２をインクリメントする。
【００６７】
送信元ポートに関して、検索チェーン３３０Ｄ２にはデータ管理テーブル４００が登録されていない（図８）。管理テーブル生成部２２０は、検索チェーン３３０Ｄ２にデータ管理テーブル４００ｎを追加し、検索チェーン４２０ｎＣの前方値にインデックス３１０Ｄ２を追加する（図９）。さらに、管理テーブル生成部２２０は、カウンタ３２０Ｄ２をインクリメントする。
【００６８】
（検索処理）
データ管理テーブル４００の検索処理は、例えば、管理部２００が、アクセスリスト２４０上の特定の行に対応するデータ管理テーブル４００を検索する場合に使用する。
【００６９】
例えば、図５のアクセスリスト２４０において、３行目の制御情報に対応して生成されたデータ管理テーブル４００を検索する場合、管理部２００は、送信元ＩＰアドレス＝ｄｄ．ｄｄ．ｄｄ．ｄｄ、送信元ポート＝ｋｋの２つを検索キーとして、管理テーブル検索部２１０にデータ管理テーブル４００の検索を指示する。
【００７０】
本発明の第二の実施の形態における管理テーブル検索部２１０によるデータ管理テーブル４００の検索時の動作は、第一の実施の形態（図３）と同様となる。
【００７１】
次に、図９に示した検索用ハッシュテーブル３００、データ管理テーブル４００を用いて、具体例を説明する。図９において、宛先ＩＰアドレス、送信元ポートに対して検索キーα、βが指定され、それぞれのハッシュ値がインデックス３１０Ａ２、３１０Ｄ２と同一であったとする。管理テーブル検索部２１０は、カウンタ３２０Ａ２、カウンタ３２０Ｄ２の値を取得する。ここで、カウンタ３２０Ａ２＝２、カウンタ３２０Ｄ２＝１であった場合、管理テーブル検索部２１０は、検索キーβを選択する。
【００７２】
管理テーブル検索部２１０は、選択した検索キーβについて算出したインデックス３１０Ｄ２に対応する検索チェーン３３０Ｄ２を参照し、データ管理テーブル４００ｎを取得する。管理テーブル検索部２１０は、検索キーαとデータ４３０ｎＡ、検索キーβとデータ４３０ｎＤが一致するかどうかを確認し、全てが一致した場合、テーブル識別子４１０ｎを検索結果に追加する。
【００７３】
管理テーブル検索部２１０は、選択した検索キーβのデータ種別Ｄに関する検索チェーン４２０ｎＤの後方値に、データ管理テーブル４００が登録されていないため検索を終了する。
【００７４】
（削除処理）
データ管理テーブル４００の削除処理は、例えば、管理部２００において、アクセスリスト２４０上の行を削除する際に、当該削除する行に対応するデータ管理テーブル４００を削除する場合に使用される。ここでは、管理部２００は、削除対象となるデータ管理テーブル４００のテーブル識別子４１０を、例えば、管理テーブル検索部２１０を用いて特定しているものとする。
【００７５】
図７に、本発明の第二の実施の形態における管理テーブル削除部２３０によるデータ管理テーブル４００の削除時の処理フローを示す。ここでは、削除するデータ管理テーブル４００を「削除対象データ管理テーブル４００」とする。また、削除対象データ管理テーブル４００の検索チェーン４２０の前方値、後方値に登録されている他のデータ管理テーブル４００を、それぞれ「削除対象前方データ管理テーブル４００」、「削除対象後方データ管理テーブル４００」とする。
【００７６】
管理テーブル削除部２３０は、管理部２００から、削除対象データ管理テーブル４００のテーブル識別子４１０を取得する（ステップＳ３０１）。管理テーブル削除部２３０は、取得したテーブル識別子４１０から削除対象データ管理テーブル４００を特定し、当該削除対象データ管理テーブル４００のデータ４３０のうちのデータ種別を一つ選択する（ステップＳ３０２）。
【００７７】
管理テーブル削除部２３０は、選択したデータ種別に関して、削除対象データ管理テーブル４００の検索チェーン４２０の前方値がデータ管理テーブル（削除対象前方データ管理テーブル）４００とインデックス３１０のどちらであるか（ステップＳ３０３）と、後方値にデータ管理テーブル（削除対象後方データ管理テーブル）４００が登録済みであるかどうか（ステップＳ３０４、ステップＳ３０５）を確認する。なお、検索チェーン４２０の前方値がインデックス３１０とデータ管理テーブル４００のどちらであるかについては、例えば、検索チェーン４２０の前方値にフラグを含め、当該フラグにより識別するようにしてもよい。
【００７８】
削除対象データ管理テーブル４００の検索チェーン４２０の前方値にデータ管理テーブル４００が登録されており、後方値にもデータ管理テーブル４００が登録済みの場合（ステップＳ３０４／Ｙ）、管理テーブル削除部２３０は、削除対象後方データ管理テーブル４００を削除対象前方データ管理テーブル４００の検索チェーン４２０の後方値に登録し、削除対象前方データ管理テーブル４００を削除対象後方データ管理テーブル４００の検索チェーン４２０の前方値に登録する（ステップＳ３０６）。
【００７９】
削除対象データ管理テーブル４００の検索チェーン４２０の前方値にデータ管理テーブル４００が登録されており、後方値にデータ管理テーブル４００が登録されていない場合（ステップＳ３０４／Ｎ）、管理テーブル削除部２３０は、削除対象前方データ管理テーブル４００の検索チェーン４２０の後方値の登録内容を削除（Ｎｕｌｌを設定）する（ステップＳ３０７）。
【００８０】
削除対象データ管理テーブル４００の検索チェーン４２０の前方値にインデックス３１０が登録されており、後方値にデータ管理テーブル４００が登録されている場合（ステップＳ３０５／Ｙ）、管理テーブル削除部２３０は、削除対象後方データ管理テーブル４００をインデックス３１０に対応する検索チェーン３３０に登録し、インデックス３１０を削除対象後方データ管理テーブル４００の検索チェーン４２０の前方値に登録する（ステップＳ３０８）。
【００８１】
削除対象データ管理テーブル４００の検索チェーン４２０の前方値にインデックス３１０が登録されており、後方値にデータ管理テーブル４００が登録されていない場合（ステップＳ３０５／Ｎ）、管理テーブル削除部２３０は、インデックス３１０に対応する検索チェーン３３０の登録内容を削除（Ｎｕｌｌを設定）する（ステップＳ３０９）。
【００８２】
ステップＳ３０３からＳ３０９により、当該データ種別について、検索チェーン３３０、４２０からの削除対象データ管理テーブル４００の削除が完了する。
【００８３】
管理テーブル削除部２３０は、データ管理テーブル４００の検索チェーン４２０の前方値を順次たどり、検索用ハッシュテーブル３００のインデックス３１０に対応するカウンタ３２０をデクリメントする（ステップＳ３１０）。
【００８４】
管理テーブル削除部２３０は、データ４３０の全てのデータ種別について、検索チェーン３３０、４２０からの削除対象データ管理テーブル４００の削除が完了したかどうかを確認する（ステップＳ３１１）。検索チェーン３３０、４２０からの削除が完了していないデータ種別がある場合(ステップＳ３１１／Ｎ)、管理テーブル削除部２３０は、次のデータ種別を選択し(ステップＳ３１２)、ステップＳ３０３からステップＳ３１１を繰り返す。データ４３０の全てのデータ種別について、検索チェーン３３０、４２０からの削除が完了した場合(ステップＳ３１１／Ｙ)、管理テーブル削除部２３０は、削除処理を終了する。
【００８５】
次に、図９、図１０に示した検索用ハッシュテーブル３００、データ管理テーブル４００を用いて、具体例を説明する。図１０は、図９のデータ管理テーブル４００ａ、４００ｂ、４００ｎからデータ管理テーブル４００ｂを削除した場合の例である。
【００８６】
宛先ＩＰアドレスに関して、削除対象データ管理テーブル４００ｂの検索チェーン４２０ｂＡの前方値にはインデックス３１０Ａ２が、後方値にはデータ管理テーブル４００ｎが登録されている（図９）。管理テーブル削除部２３０は、インデックス３１０Ａ２に対応する検索チェーン３３０Ａ２にデータ管理テーブル４００ｎを登録し、データ管理テーブル４００ｎの検索チェーン４２０ｎＡの前方値にインデックス３１０Ａ２を登録する（図１０）。さらに、管理テーブル削除部２３０は、カウンタ３２０Ａ２をデクリメントする。
【００８７】
送信元ＩＰアドレスに関して、削除対象データ管理テーブル４００ｂの検索チェーン４２０ｂＢの前方値にはインデックス３１０Ｂ１が、後方値にはデータ管理テーブル４００ａが登録されている（図９）。管理テーブル削除部２３０は、インデックス３１０Ｂ１に対応する検索チェーン３３０Ｂ１にデータ管理テーブル４００ａを登録し、データ管理テーブル４００ａの検索チェーン４２０ａＢの前方値にインデックス３１０Ｂ１を登録する（図１０）。さらに、管理テーブル削除部２３０は、カウンタ３２０Ｂ１をデクリメントする。
【００８８】
宛先ポートに関して、削除対象データ管理テーブル４００ｂの検索チェーン４２０ｂＣの前方値にはインデックス３１０Ｃ１が登録されており、後方値にはデータ管理テーブル４００は登録されていない（図９）。管理テーブル削除部２３０は、インデックス３１０Ｃ１に対応する検索チェーン３３０Ｃ１の登録内容を削除する（図１０）。さらに、管理テーブル削除部２３０は、カウンタ３２０Ｃ１をデクリメントする。
【００８９】
送信元ポートに関して、削除対象データ管理テーブル４００ｂの検索チェーン４２０ｂＤの前方値にはデータ管理テーブル４００ａが登録されており、後方値にはデータ管理テーブル４００は登録されていない（図９）。管理テーブル削除部２３０は、データ管理テーブル４００ａの検索チェーン４２０ａＤの後方値の登録内容を削除する（図１０）。さらに、管理テーブル削除部２３０は、カウンタ３２０Ｄ１をデクリメントする。
【００９０】
以上により本発明の第二の実施の形態の動作が完了する。
【００９１】
本発明の第二の実施の形態によれば、ＩＰパケットのフロー管理テーブルの検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、データ検索装置１００がフロー管理テーブルをデータ管理テーブル４００上で管理し、管理テーブル検索部２１０が、第一の実施の形態と同様に、検索用ハッシュテーブル３００を参照し、検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００に対して、検索キーの組み合わせを含むデータ管理テーブル４００を検索するためである。
【００９２】
（第三の実施の形態）
次に本発明の第三の実施の形態について説明する。本発明の第三の実施の形態においては、データ検索装置１００を通信装置のＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）テーブルの管理に適用したものである。データ管理テーブル４００が保持するデータ種別は、ＩＰアドレス、ＭＡＣアドレスの２つとする。本発明の第三の実施の形態においては、データ検索装置１００がアクセスリスト２４０の替わりにＡＲＰ制御部２５０を備えた点において、第二の実施の形態と異なる。
【００９３】
なお、本発明の第三の実施の形態において、第二の実施の形態と同一の符号を有する構成要素については、特別な説明がない限り、第二の実施の形態の構成要素と同一であるものとする。
【００９４】
図１１に本発明の第三の実施の形態におけるデータ検索装置１００の構成を示す。図１１を参照すると、本発明の第三の実施の形態におけるデータ検索装置１００は、管理部２００、検索用ハッシュテーブル３００、及びデータ管理テーブル４００より構成される。
【００９５】
管理部２００は、管理テーブル検索部２１０、管理テーブル生成部２２０、管理テーブル削除部２３０、及びＡＲＰ制御部２５０より構成される。ＡＲＰ制御部２５０は、ＡＲＰプロトコルに従って、ＡＲＰ情報（ＩＰアドレスとＭＡＣアドレスの対応関係）を取得し、データ管理テーブル４００上で、ＡＲＰテーブルを管理する。
【００９６】
図１２に本発明の第三の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す。
【００９７】
検索用ハッシュテーブル３００は、データ管理テーブル４００が管理する２つのデータ種別（ＩＰアドレス、ＭＡＣアドレス）毎に存在する。
【００９８】
データ管理テーブル４００は、テーブル識別子４１０、検索チェーン４２０、及びデータ４３０により構成される。データ４３０は、ＡＲＰ情報となる２つのデータ種別（ＩＰアドレス、ＭＡＣアドレス）の値を保持する。また、検索チェーン４２０は、これらの２つのデータ種別毎に存在する。
【００９９】
次に本発明の第三の実施の形態の動作について説明する。
【０１００】
ＡＲＰ制御部２５０は、ＡＲＰプロトコルに従ったＡＲＰ情報の生成、検索、削除に伴い、ＡＲＰテーブル（データ管理テーブル４００）の生成、検索、削除を行う。ＡＲＰテーブルの検索の動作については、本発明の第一の実施の形態（図３）と、生成、削除の動作については、本発明の第二の実施の形態（図６、７）と同様となる。
【０１０１】
以上により本発明の第三の実施の形態の動作が完了する。
【０１０２】
本発明の第三の実施の形態によれば、ＡＲＰテーブルの検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、データ検索装置１００がＡＲＰテーブルをデータ管理テーブル４００上で管理し、管理テーブル検索部２１０が、第一の実施の形態と同様に、検索用ハッシュテーブル３００を参照し、検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ４３０を記憶するデータ管理テーブル４００に対して、検索キーの組み合わせを含むデータ管理テーブル４００を検索するためである。
【図面の簡単な説明】
【０１０３】
【図１】本発明の第一の実施の形態におけるデータ検索装置１００の構成を示す図である。
【図２】本発明の第一の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す図である。
【図３】本発明の第一の実施の形態における管理テーブル検索部２１０によるデータ管理テーブル４００の検索時の処理を示すフローチャートである。
【図４】本発明の第二の実施の形態におけるデータ検索装置１００の構成を示す図である。
【図５】本発明の第二の実施の形態におけるアクセスリスト２４０の内容を示す図である
【図６】本発明の第二の実施の形態における管理テーブル生成部２２０によるデータ管理テーブル４００の生成時の処理を示すフローチャートである。
【図７】本発明の第二の実施の形態における管理テーブル削除部２３０によるデータ管理テーブル４００の削除時の処理を示すフローチャートである。
【図８】本発明の第二の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す図である。
【図９】本発明の第二の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す図（データ管理テーブル４００追加時）である。
【図１０】本発明の第二の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す図（データ管理テーブル４００削除時）である。
【図１１】本発明の第三の実施の形態におけるデータ検索装置１００の構成を示す図である。
【図１２】本発明の第三の実施の形態における検索用ハッシュテーブル３００とデータ管理テーブル４００の関係の例を示す図である。
【符号の説明】
【０１０４】
１００    データ検索装置
２００    管理部
２１０    管理テーブル検索部
２２０    管理テーブル生成部
２３０    管理テーブル削除部
２４０    アクセスリスト
２５０    ＡＲＰ制御部
３００    検索用ハッシュテーブル
３１０    インデックス
３２０    カウンタ
３３０    検索チェーン
４００    データ管理テーブル
４１０    テーブル識別子
４２０    検索チェーン
４３０    データ
４４０    制御内容
５００    フロー制御部
【図１】
0004888369.tif 000002
【図２】
0004888369.tif 000003
【図３】
0004888369.tif 000004
【図４】
0004888369.tif 000005
【図５】
0004888369.tif 000006
【図６】
0004888369.tif 000007
【図７】
0004888369.tif 000008
【図８】
0004888369.tif 000009
【図９】
0004888369.tif 000010
【図１０】
0004888369.tif 000011
【図１１】
0004888369.tif 000012
【図１２】
0004888369.tif 000013