(57)【要約】【課題】パケットに対応したルールの検索を効率化する。【解決手段】記憶部１２は、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、所定のフィールドに対応し、ポインタが登録されたテーブルであるＡＮＹポイントテーブルとを記憶する。検索部１３２は、検索対象のパケットの各フィールドの値から計算したハッシュ値と、ハッシュテーブル及びＡＮＹポイントテーブルに登録されたポインタと、を参照し、検索対象のパケットに対応したルールのハッシュ検索を行う。【選択図】図１
2019145924.tif 000002
【特許請求の範囲】
【請求項１】
パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるＡＮＹポイントテーブルとを記憶する記憶部と、
検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ＡＮＹポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索部と、
を有することを特徴とする検索装置。
【請求項２】
前記記憶部は、前記ハッシュテーブル及び前記ＡＮＹポイントテーブルに登録されたポインタとして、前記所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び前記所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルを指すポインタのいずれか又は両方を記憶することを特徴とする請求項１に記載の検索装置。
【請求項３】
前記パケットの各フィールドの値の検索条件のうち、値が検索条件として設定されている場合はハッシュテーブルを作成し、ＡＮＹ条件が検索条件として設定されている場合はＡＮＹポイントテーブルを作成する作成部をさらに有することを特徴とする請求項１に記載の検索装置。
【請求項４】
前記作成部は、前記所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、前記所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルが存在しない場合は、ポインタにＮＵＬＬを登録することを特徴とする請求項３に記載の検索装置。
【請求項５】
前記作成部は、前記パケットのフィールドのうち、条件として値とＡＮＹ条件の両方が設定されたフィールドについてのみ、当該ＡＮＹ条件に対応するＡＮＹポイントテーブルを作成することを特徴とする請求項３に記載の検索装置。
【請求項６】
パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるＡＮＹポイントテーブルとを記憶する記憶部を有する検索装置で実行される検索方法であって、
検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ＡＮＹポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索工程を含むことを特徴とする検索方法。
【請求項７】
コンピュータを、請求項１から５のいずれか１項に記載の検索装置として機能させるための検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索装置、検索方法及び検索プログラムに関する。
【背景技術】
【０００２】
従来、ＩＰパケットに対応したルールの高速な検索手法として、ＴＣＡＭ（Ternary  Content  Addressable  Memory）、ハッシュ検索、二分木検索等が知られている。また、これらの手法の中で、ＴＣＡＭは特に高速であるが、消費電力等のコストが高い。一方、ハッシュ検索は、条件が整えば、ＴＣＡＭに劣らない速度で検索を行うことができることが知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】アラクサラネットワークス株式会社  製品開発部、「Ｄ１  パケットフォワーディングを支える技術  ハードウェア処理ルータの内部詳解」、Internet  Week  2012プレゼンテーション、2012年11月20日、[online]、[平成３０年２月２日検索]、インターネット（https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/d1/d1-uchiya.pdf）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、パケットに対応したルールの検索を効率化することが困難な場合があるという問題がある。ここで、前述の通り、ＴＣＡＭは高速であるが高コストでもある。また、ハッシュ検索は、条件が整えば、ＴＣＡＭより低コストでかつＴＣＡＭ並みの速度で検索を行うことができるが、逆にいえば、条件が整わない状況では、ハッシュ検索の検索速度はＴＣＡＭに劣ることになる。なお、二分木検索は、実行可能な条件の面ではハッシュ検索より有利であるが、速度ではハッシュ検索に劣る。
【０００５】
例えば、ルールのハッシュ検索を行う場合、パケットの各フィールドに検索条件として設定された値に基づきハッシュテーブルが構築される。このとき、いずれかのフィールドの検索条件がＡＮＹ条件である場合、ハッシュテーブルを構築することが困難である。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明の検索装置は、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるＡＮＹポイントテーブルとを記憶する記憶部と、検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ＡＮＹポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索部と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、パケットに対応したルールの検索を効率化することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態に係る検索装置の構成の一例を示す図である。
【図２】図２は、ルールの検索条件の一例を示す図である。
【図３】図３は、第１の実施形態に係る検索装置の処理について説明するための図である。
【図４】図４は、第１の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。
【図５】図５は、第１の実施形態に係る検索装置の検索処理の流れを示すフローチャートである。
【図６】図６は、第２の実施形態に係る検索装置の処理について説明するための図である。
【図７】図７は、第２の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。
【図８】図８は、検索プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願に係る検索装置、検索方法及び検索プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【００１０】
［第１の実施形態］
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係る検索装置の構成について説明する。図１は、第１の実施形態に係る検索装置の構成の一例を示す図である。図１に示すように、検索装置１０は、入出力部１１、記憶部１２及び制御部１３を有する。例えば、検索装置１０は、受信したパケットを、検索によって特定した転送先及び転送経路等に転送するスイッチやルータ等の通信機器である。
【００１１】
入出力部１１は、他の装置との間でデータのやり取りを行う。例えば、入出力部１１は、ネットワークを介してパケットの入力を受け付ける。また、入出力部１１は、パケットを所定の装置に転送することができる。例えば、入出力部１１はＮＩＣ（Network  Interface  Card）である。
【００１２】
記憶部１２は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１２は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部１２は、検索装置１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部１２は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部１２は、テーブル記憶部１２１を有する。
【００１３】
記憶部１２のテーブル記憶部１２１は、ハッシュテーブル及びＡＮＹポイントテーブルを記憶する。ハッシュテーブルは、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたテーブルである。ハッシュテーブルのインデックスはハッシュ値である。また、ＡＮＹポイントテーブルは、所定のフィールドに対応し、ポインタが登録されたテーブルである。
【００１４】
また、テーブル記憶部１２１のハッシュテーブル及びＡＮＹポイントテーブルに登録されたポインタは、所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルを指すポインタのいずれか又は両方を記憶する。つまり、ハッシュテーブルの各インデックス及びＡＮＹポインタテーブルには、１つ又は２つのポインタが対応付けられる。
【００１５】
さらに、テーブル記憶部１２１は、ＡＮＹポイントテーブルと同様の構成のＳＴＡＲＴポイントテーブルを記憶する。ハッシュテーブル及び各ポイントテーブルの詳細については後述する。
【００１６】
制御部１３は、検索装置１０全体を制御する。制御部１３は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部１３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部１３は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１３は、作成部１３１及び検索部１３２を有する。
【００１７】
作成部１３１は、ハッシュテーブル及びＡＮＹポイントテーブルを作成する。作成部１３１は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在する場合、ポインタに当該次のフィールドに対応するハッシュテーブルを指すポインタを登録する。また、所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルが存在する場合、ポインタに当該次のフィールドに対応するＡＮＹポイントテーブルを指すポインタを登録する。
【００１８】
一方、作成部１３１は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルが存在しない場合は、ポインタにＮＵＬＬを登録する。
【００１９】
検索部１３２は、検索対象のパケットの各フィールドの値から計算したハッシュ値と、ハッシュテーブル及びＡＮＹポイントテーブルに登録されたポインタと、を参照し、検索対象のパケットに対応したルールのハッシュ検索を行う。
【００２０】
ここで、図２を用いて、ルールの検索条件について説明する。図２は、ルールの検索条件の一例を示す図である。図２のＩＰ＿ＳＲＣ、ＩＰ＿ＤＳＴ、Ｐｏｒｔ＿ＳＲＣ及びＰｏｒｔ＿ＤＳＴは、いずれもパケットのフィールドである。なお、図２の検索条件は一例であり、例えば、検索条件のフィールドは、図２に示すものにプロトコルを加えた５−ｔｕｐｌｅであってもよい。
【００２１】
図２は、検索対象のパケットのＩＰ＿ＳＲＣ、ＩＰ＿ＤＳＴ、Ｐｏｒｔ＿ＳＲＣ及びＰｏｒｔ＿ＤＳＴが検索条件を満たす場合、当該検索条件に対応するルールが採用されることを示している。例えば、ルールは、パケットの転送先を示すものである。
【００２２】
また、各フィールドの検索条件は、具体的な値又はＡＮＹ条件である。具体的な値が設定されたフィールドの検索条件は、検索対象のフィールドの値が当該値に合致している場合に満たされる。一方、ＡＮＹ条件が設定されたフィールドの検索条件は、検索対象のフィールドの値にかかわらず常に満たされる。
【００２３】
例えば、検索対象のパケットのＩＰ＿ＳＲＣが「192.168.33.5」、ＩＰ＿ＤＳＴが「192.168.21.13」、Ｐｏｒｔ＿ＳＲＣが「24002」、Ｐｏｒｔ＿ＤＳＴが「33002」である場合に図２の１行目の検索条件が満たされ、ルール＃１が採用される。また、例えば、検索対象のパケットのＩＰ＿ＳＲＣが「192.168.10.10」、ＩＰ＿ＤＳＴが「10.10.100.1」、Ｐｏｒｔ＿ＤＳＴが「2600」である場合、ＡＮＹ条件が設定されたＰｏｒｔ＿ＳＲＣの値にかかわらず、図２の２行目の検索条件が満たされ、ルール＃２が採用される。
【００２４】
ここで、従来のハッシュ検索の手法では、ハッシュテーブルのインデックスには具体的なハッシュ値を設定する必要があるため、図２のようにＡＮＹ条件を含んだ検索条件を反映したハッシュテーブルを作成することは困難であった。
【００２５】
一方、本実施形態では、ハッシュテーブルとＡＮＹポイントテーブルを組み合せたツリー構造の検索モデルを用いて、検索条件にＡＮＹ条件が含まれる場合であってもハッシュ検索を利用できるようにすることで、ルールの検索を高速化している。
【００２６】
図３を用いて、本実施形態におけるツリーの作成処理及びツリーを用いた検索処理について説明する。図３は、第１の実施形態に係る検索装置の処理について説明するための図である。図３に示すように、ツリーは、ハッシュテーブル及び各ポイントをノードとして表現し、ポインタで示される接続をエッジとして表現したものである。
【００２７】
図３に示すように、ツリーは、フィールドごとの階層に分けられる。図３の例では、ツリーは、ＩＰ＿ＳＲＣ、ＩＰ＿ＤＳＴ、Ｐｏｒｔ＿ＳＲＣ及びＰｏｒｔ＿ＤＳＴのそれぞれに対応した階層を有する。また、ＨＴＰ（Hash  Table  Pointer）は、ハッシュテーブルを指すポインタである。また、ＡＰ（ANY  pointer）は、ＡＮＹポイントテーブルを指すポインタである。
【００２８】
ツリーは、最上位のノードとしてＳＴＡＲＴポイントテーブルに対応するＳＴＡＲＴポイントを有する。ＳＴＡＲＴポイントテーブルには、１番目のフィールドであるＩＰ＿ＳＲＣフィールドのハッシュテーブルを指すＨＴＰと、ＩＰ＿ＳＲＣフィールドのＡＮＹポイントテーブルを指すＡＰとが登録されている。
【００２９】
なお、第１のフィールドに対応するハッシュテーブルが存在しない場合は、ＳＴＡＲＴポイントテーブルのＨＴＰにはＮＵＬＬが登録される。また、第１のフィールドに対応するＡＮＹポイントテーブルが存在しない場合は、ＳＴＡＲＴポイントテーブルのＡＰにはＮＵＬＬが登録される。
【００３０】
また、ＩＰ＿ＳＲＣフィールドのハッシュテーブルのインデックスがＨ（ａ１）であるレコードには、２番目のフィールドであるＩＰ＿ＤＳＴフィールドのハッシュテーブルを指すＨＴＰと、ＩＰ＿ＤＳＴフィールドのＡＮＹポイントテーブルを指すＡＰとが登録されている。なお、Ｈ（ｘ）は、ｘを引数としたときのハッシュ関数Ｈ（）が返すハッシュ値である。
【００３１】
また、ＩＰ＿ＳＲＣフィールドのＡＮＹポイントテーブルには、２番目のフィールドであるＩＰ＿ＤＳＴフィールドのハッシュテーブルを指すＨＴＰと、ＩＰ＿ＤＳＴフィールドのＡＮＹポイントテーブルを指すＡＰとが登録されている。ただし、当該ＡＮＹポイントテーブルのＡＰにはＮＵＬＬが登録されている。このように、ＩＰ＿ＳＲＣフィールドのＡＮＹポイントテーブルのＡＰがＮＵＬＬになるのは、図２のように、ＩＰ＿ＳＲＣフィールドがＡＮＹ条件かつＩＰ＿ＤＳＴフィールドがＡＮＹ条件という検索条件が存在しない場合である。
【００３２】
同様に、３番目のフィールドであるＰｏｒｔ＿ＳＲＣフィールド及び４番目のフィールドであるＰｏｒｔ＿ＤＳＴフィールドについてもハッシュテーブル及びＡＮＹポイントテーブルが設定されている。ただし、ここでは、Ｐｏｒｔ＿ＤＳＴフィールドが最後のフィールドであるため、Ｐｏｒｔ＿ＤＳＴフィールドのハッシュテーブル及びＡＮＹポイントテーブルには、ルールを指すポインタが登録されている。
【００３３】
作成部１３１は、検索条件に基づいて、図３に示すようなハッシュテーブル及びＡＮＹポイントテーブルを作成する。また、検索部１３２は、ハッシュテーブル及びＡＮＹポイントテーブルを用いて、検索対象のパケットに対応するルールを検索する。その際、検索部１３２は、ハッシュテーブルを用いたハッシュ検索を行いつつ、ポインタが指すハッシュテーブル及びＡＮＹポイントテーブルを参照していきルールを取得する。
【００３４】
［第１の実施形態の処理］
図４を用いて、検索装置１０の作成部１３１による作成処理について説明する。図４は、第１の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。まず、作成部１３１は、ＳＴＡＲＴポイントを作成する（ステップＳ１０１）。次に、作成部１３１は、検索条件の最初のフィールドを参照する（ステップＳ１０２）。
【００３５】
ここで、参照中のフィールドの条件が値である場合（ステップＳ１０３、値）、ＨＴＰがＮＵＬＬであれば（ステップＳ１０４、Ｙｅｓ）、作成部１３１は、作成したポイント又はハッシュテーブルにＨＴＰを登録し、さらに次のフィールドのハッシュテーブルを作成する（ステップＳ１０５）。一方、ＨＴＰがＮＵＬＬでなければ（ステップＳ１０４、Ｎｏ）、作成部１３１は、ステップＳ１０５を実行せずにステップＳ１０８へ進む。
【００３６】
一方、参照中のフィールドの条件がＡＮＹ条件である場合（ステップＳ１０３、ＡＮＹ）、ＡＰがＮＵＬＬであれば（ステップＳ１０６、Ｙｅｓ）、作成部１３１は、作成したポイント又はハッシュテーブルにＡＰを登録し、さらに次のフィールドのＡＮＹポイントテーブルを作成する（ステップＳ１０７）。一方、ＡＰがＮＵＬＬでなければ（ステップＳ１０６、Ｎｏ）、作成部１３１は、ステップＳ１０７を実行せずにステップＳ１０８へ進む。
【００３７】
そして、作成部１３１は、参照中のフィールドが最後のフィールドである場合（ステップＳ１０８、Ｙｅｓ）、ルールを登録する（ステップＳ１１０）。具体的には、作成部１３１は、最後のフィールドのハッシュテーブル又はＡＮＹポイントテーブルに、検索条件に対応するルールを指すポインタを登録する。
【００３８】
一方、作成部１３１は、参照中のフィールドが最後のフィールドでない場合（ステップＳ１０８、Ｎｏ）、検索条件の次のフィールドを参照し（ステップＳ１０９）、ステップＳ１０３に戻り処理を繰り返す。
【００３９】
図５を用いて、検索装置１０の検索部１３２による検索処理について説明する。図５は、第１の実施形態に係る検索装置の検索処理の流れを示すフローチャートである。まず、検索部１３２は、検索対象のパケットの最初のフィールドを参照する（ステップＳ２０１）。次に、検索部１３２は、ＳＴＡＲＴポイントを参照する（ステップＳ２０２）。
【００４０】
ここで、検索部１３２は、ルールを取得可能である場合（ステップＳ２０３、Ｙｅｓ）、ルールを取得し処理を終了する（ステップＳ２１２）。なお、ルールを取得可能であるとは、参照中のハッシュテーブル又はポイントのポインタがルールを指していることである。
【００４１】
検索部１３２は、ルールを取得可能でない場合（ステップＳ２０３、Ｎｏ）、参照中のハッシュテーブル又はポイントにＨＴＰが登録されているか否かを確認する（ステップＳ２０４）。ＨＴＰが登録されている場合（ステップＳ２０４、Ｙｅｓ）、検索部１３２は、参照中のフィールドの値で当該ＨＴＰが指すハッシュテーブルを検索する（ステップＳ２０５）。
【００４２】
ハッシュテーブルにマッチするものがあった場合、又は参照中のハッシュテーブル又はポイントにＡＰが登録されている場合（ステップＳ２０６、Ｙｅｓ）、検索部１３２は、検索対象のパケットの次のフィールドを参照し（ステップＳ２０７）、次のハッシュテーブル又はポイントを参照し（ステップＳ２０８）、ステップＳ２０３に戻り処理を繰り返す。
【００４３】
ハッシュテーブルにマッチするものがなく、かつ参照中のハッシュテーブル又はポイントにＡＰが登録されていない場合（ステップＳ２０６、Ｎｏ）、検索部１３２は、未参照のポイントがあるか否かを確認する（ステップＳ２０９）。未参照のポイントがある場合（ステップＳ２０９、Ｙｅｓ）、検索部１３２は、未参照のポイント及び対応するフィールドを参照し（ステップＳ２１０）、ステップＳ２０３に戻り処理を繰り返す。また、未参照のポイントがない場合（ステップＳ２０９、Ｎｏ）、検索部１３２は、マッチするルールなしと判定し（ステップＳ２１１）、処理を終了する。
【００４４】
［第１の実施形態の効果］
記憶部１２は、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、所定のフィールドに対応し、ポインタが登録されたテーブルであるＡＮＹポイントテーブルとを記憶する。検索部１３２は、検索対象のパケットの各フィールドの値から計算したハッシュ値と、ハッシュテーブル及びＡＮＹポイントテーブルに登録されたポインタと、を参照し、検索対象のパケットに対応したルールのハッシュ検索を行う。このように、本実施形態では、検索条件にＡＮＹ条件が含まれる場合であっても、ハッシュ検索を用いることができるため、パケットに対応したルールの検索を効率化することができる。
【００４５】
記憶部１２は、ハッシュテーブル及びＡＮＹポイントテーブルに登録されたポインタとして、所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルを指すポインタのいずれか又は両方を記憶する。このように、ハッシュテーブルとＡＮＹポイントテーブルを組み合わせることにより、検索条件にＡＮＹ条件が含まれる場合であってもハッシュ検索を行うことができる。
【００４６】
作成部１３１は、パケットの各フィールドの値の検索条件のうち、値が検索条件として設定されている場合はハッシュテーブルを作成し、ＡＮＹ条件が検索条件として設定されている場合はＡＮＹポイントテーブルを作成する。このように、必要最低限のハッシュテーブル及びＡＮＹポイントテーブルを作成することにより、リソースの使用量を低減させることができる。
【００４７】
作成部１３１は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、所定のフィールドの次のフィールドに対応するＡＮＹポイントテーブルが存在しない場合は、ポインタにＮＵＬＬを登録する。これにより、不要な検索を行わないようにすることができる。
【００４８】
［第２の実施形態］
第１の実施形態では、検索装置１０は、検索条件にＡＮＹ条件がある場合は、ＡＮＹポイントテーブルを作成することしていた。これに対し、第２の所定のフィールドの検索条件が全てＡＮＹ条件である場合、検索装置１０は、当該フィールドについてはＡＮＹポイントテーブルを作成しない。
【００４９】
つまり、作成部１３１は、パケットのフィールドのうち、条件として値とＡＮＹ条件の両方が設定されたフィールドについてのみ、当該ＡＮＹ条件に対応するＡＮＹポイントテーブルを作成する。言い換えると、作成部１３１は、パケットのフィールドのうち、条件としてＡＮＹ条件のみが設定されたフィールドについては、当該ＡＮＹ条件に対応するＡＮＹポイントテーブルを作成しない。なお、当然ながら、作成部１３１は、パケットのフィールドのうち、条件として値のみが設定されたフィールドについては、ＡＮＹポイントテーブルを作成しない。
【００５０】
第２の実施形態の検索装置１０の構成は、第１の実施形態の検索装置１０の構成と同様である。ただし、作成部１３１によるＡＮＹポイントテーブルの作成方法が異なる。図６を用いて、第１の実施形態と第２の実施形態の相違点について説明する。図６は、第２の実施形態に係る検索装置の処理について説明するための図である。
【００５１】
まず、前提条件として、Ｐｏｒｔ＿ＳＲＣフィールドの検索条件が全てＡＮＹ条件であるとする。例えば、前提条件は、図２の例において、２行目、３行目及び５行目の検索条件のみが存在する場合に満たされる。
【００５２】
この場合、図６に示すように、Ｐｏｒｔ＿ＳＲＣフィールドに対応するＡＮＹポイントテーブルは作成されない。そして、Ｐｏｒｔ＿ＳＲＣフィールドの１つ前のＩＰ＿ＤＳＴからのエッジは、Ｐｏｒｔ＿ＳＲＣフィールドの次のＰｏｒｔ＿ＤＳＴのハッシュテーブル等に接続される。
【００５３】
［第２の実施形態の処理］
図７を用いて、検索装置１０の作成部１３１による作成処理について説明する。図７は、第２の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。まず、作成部１３１は、ＳＴＡＲＴポイントを作成する（ステップＳ３０１）。次に、作成部１３１は、検索条件の最初のフィールドを参照する（ステップＳ３０２）。
【００５４】
ここで、参照中のフィールドの条件が値のみ又は値とＡＮＹ条件の両方である場合（ステップＳ３０３、値のみ又は両方）、ＨＴＰがＮＵＬＬであれば（ステップＳ３０４、Ｙｅｓ）、作成部１３１は、作成したポイント又はハッシュテーブルにＨＴＰを登録し、さらに次のフィールドのハッシュテーブル及びＡＮＹポイントテーブルを作成する（ステップＳ３０５）。ただし、値のみの場合は、作成部１３１はハッシュテーブルのみを作成する。一方、ＨＴＰがＮＵＬＬでなければ（ステップＳ３０４、Ｎｏ）、作成部１３１は、ステップＳ３０５を実行せずにステップＳ３０６へ進む。
【００５５】
一方、参照中のフィールドの条件がＡＮＹ条件のみである場合（ステップＳ３０３、ＡＮＹのみ）、作成部１３１は、ＡＮＹポイントテーブルを作成せずに次の処理へ進む。ただし、後から検索条件として値が追加された場合、作成部１３１は、ハッシュテーブル及びＡＮＹポイントテーブルを作成する。
【００５６】
そして、作成部１３１は、参照中のフィールドが最後のフィールドである場合（ステップＳ３０６、Ｙｅｓ）、ルールを登録する（ステップＳ３０８）。具体的には、作成部１３１は、最後のフィールドのハッシュテーブル又はＡＮＹポイントテーブルに、検索条件に対応するルールを指すポインタを登録する。
【００５７】
一方、作成部１３１は、参照中のフィールドが最後のフィールドでない場合（ステップＳ３０６、Ｎｏ）、検索条件の次のフィールドを参照し（ステップＳ３０７）、ステップＳ３０３に戻り処理を繰り返す。
【００５８】
［第２の実施形態の効果］
作成部１３１は、パケットのフィールドのうち、条件として値とＡＮＹ条件の両方が設定されたフィールドについてのみ、当該ＡＮＹ条件に対応するＡＮＹポイントテーブルを作成する。これにより、作成が不要な場合はＡＮＹポイントテーブルの作成を行わないようにできるため、リソースの使用量を低減させることができる。さらに、本実施形態によれば、検索時のポインタの参照回数を減らすことができ、検索を高速化することができる。
【００５９】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６０】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６１】
［プログラム］
一実施形態として、検索装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の検索を実行する検索プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の検索プログラムを情報処理装置に実行させることにより、情報処理装置を検索装置１０として機能させることができる。ここで言う情報処理装置には、スイッチやルータ等のネットワーク機器の他、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００６２】
図８は、検索プログラムを実行するコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００６３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００６４】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、検索装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、検索装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００６５】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０は、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した実施形態の処理を実行する。
【００６６】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６７】
１０  検索装置
１１  入出力部
１２  記憶部
１３  制御部
１２１  テーブル記憶部
１３１  作成部
１３２  検索部
【図１】
2019145924.tif 000003
【図２】
2019145924.tif 000004
【図３】
2019145924.tif 000005
【図４】
2019145924.tif 000006
【図５】
2019145924.tif 000007
【図６】
2019145924.tif 000008
【図７】
2019145924.tif 000009
【図８】
2019145924.tif 000010