特許第6859281号(P6859281)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧
<>
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000002
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000003
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000004
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000005
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000006
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000007
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000008
  • 特許6859281-検索装置、検索方法及び検索プログラム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6859281
(24)【登録日】2021年3月29日
(45)【発行日】2021年4月14日
(54)【発明の名称】検索装置、検索方法及び検索プログラム
(51)【国際特許分類】
   H04L 12/743 20130101AFI20210405BHJP
【FI】
   H04L12/743
【請求項の数】7
【全頁数】13
(21)【出願番号】特願2018-26499(P2018-26499)
(22)【出願日】2018年2月16日
(65)【公開番号】特開2019-145924(P2019-145924A)
(43)【公開日】2019年8月29日
【審査請求日】2020年6月18日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】内田 博志
(72)【発明者】
【氏名】金子 斉
【審査官】 森田 充功
(56)【参考文献】
【文献】 米国特許第6289375(US,B1)
【文献】 国際公開第2010/151192(WO,A1)
【文献】 特開2004−364306(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/743
(57)【特許請求の範囲】
【請求項1】
パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるANYポイントテーブルとを記憶する記憶部と、
検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ANYポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索部と、
を有することを特徴とする検索装置。
【請求項2】
前記記憶部は、前記ハッシュテーブル及び前記ANYポイントテーブルに登録されたポインタとして、前記所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び前記所定のフィールドの次のフィールドに対応するANYポイントテーブルを指すポインタのいずれか又は両方を記憶することを特徴とする請求項1に記載の検索装置。
【請求項3】
前記パケットの各フィールドの値の検索条件のうち、値が検索条件として設定されている場合はハッシュテーブルを作成し、ANY条件が検索条件として設定されている場合はANYポイントテーブルを作成する作成部をさらに有することを特徴とする請求項1に記載の検索装置。
【請求項4】
前記作成部は、前記所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、前記所定のフィールドの次のフィールドに対応するANYポイントテーブルが存在しない場合は、ポインタにNULLを登録することを特徴とする請求項3に記載の検索装置。
【請求項5】
前記作成部は、前記パケットのフィールドのうち、条件として値とANY条件の両方が設定されたフィールドについてのみ、当該ANY条件に対応するANYポイントテーブルを作成することを特徴とする請求項3に記載の検索装置。
【請求項6】
パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるANYポイントテーブルとを記憶する記憶部を有する検索装置で実行される検索方法であって、
検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ANYポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索工程を含むことを特徴とする検索方法。
【請求項7】
コンピュータを、請求項1から5のいずれか1項に記載の検索装置として機能させるための検索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索装置、検索方法及び検索プログラムに関する。
【背景技術】
【0002】
従来、IPパケットに対応したルールの高速な検索手法として、TCAM(Ternary Content Addressable Memory)、ハッシュ検索、二分木検索等が知られている。また、これらの手法の中で、TCAMは特に高速であるが、消費電力等のコストが高い。一方、ハッシュ検索は、条件が整えば、TCAMに劣らない速度で検索を行うことができることが知られている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】アラクサラネットワークス株式会社 製品開発部、「D1 パケットフォワーディングを支える技術 ハードウェア処理ルータの内部詳解」、Internet Week 2012プレゼンテーション、2012年11月20日、[online]、[平成30年2月2日検索]、インターネット(https://www.nic.ad.jp/ja/materials/iw/2012/proceedings/d1/d1-uchiya.pdf)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、パケットに対応したルールの検索を効率化することが困難な場合があるという問題がある。ここで、前述の通り、TCAMは高速であるが高コストでもある。また、ハッシュ検索は、条件が整えば、TCAMより低コストでかつTCAM並みの速度で検索を行うことができるが、逆にいえば、条件が整わない状況では、ハッシュ検索の検索速度はTCAMに劣ることになる。なお、二分木検索は、実行可能な条件の面ではハッシュ検索より有利であるが、速度ではハッシュ検索に劣る。
【0005】
例えば、ルールのハッシュ検索を行う場合、パケットの各フィールドに検索条件として設定された値に基づきハッシュテーブルが構築される。このとき、いずれかのフィールドの検索条件がANY条件である場合、ハッシュテーブルを構築することが困難である。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、本発明の検索装置は、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、前記所定のフィールドに対応し、ポインタが登録されたテーブルであるANYポイントテーブルとを記憶する記憶部と、検索対象のパケットの各フィールドの値から計算したハッシュ値と、前記ハッシュテーブル及び前記ANYポイントテーブルに登録されたポインタと、を参照し、前記検索対象のパケットに対応したルールのハッシュ検索を行う検索部と、を有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、パケットに対応したルールの検索を効率化することができる。
【図面の簡単な説明】
【0008】
図1図1は、第1の実施形態に係る検索装置の構成の一例を示す図である。
図2図2は、ルールの検索条件の一例を示す図である。
図3図3は、第1の実施形態に係る検索装置の処理について説明するための図である。
図4図4は、第1の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。
図5図5は、第1の実施形態に係る検索装置の検索処理の流れを示すフローチャートである。
図6図6は、第2の実施形態に係る検索装置の処理について説明するための図である。
図7図7は、第2の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。
図8図8は、検索プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る検索装置、検索方法及び検索プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0010】
[第1の実施形態]
[第1の実施形態の構成]
まず、図1を用いて、第1の実施形態に係る検索装置の構成について説明する。図1は、第1の実施形態に係る検索装置の構成の一例を示す図である。図1に示すように、検索装置10は、入出力部11、記憶部12及び制御部13を有する。例えば、検索装置10は、受信したパケットを、検索によって特定した転送先及び転送経路等に転送するスイッチやルータ等の通信機器である。
【0011】
入出力部11は、他の装置との間でデータのやり取りを行う。例えば、入出力部11は、ネットワークを介してパケットの入力を受け付ける。また、入出力部11は、パケットを所定の装置に転送することができる。例えば、入出力部11はNIC(Network Interface Card)である。
【0012】
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部12は、検索装置10で実行されるOS(Operating System)や各種プログラムを記憶する。さらに、記憶部12は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部12は、テーブル記憶部121を有する。
【0013】
記憶部12のテーブル記憶部121は、ハッシュテーブル及びANYポイントテーブルを記憶する。ハッシュテーブルは、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたテーブルである。ハッシュテーブルのインデックスはハッシュ値である。また、ANYポイントテーブルは、所定のフィールドに対応し、ポインタが登録されたテーブルである。
【0014】
また、テーブル記憶部121のハッシュテーブル及びANYポイントテーブルに登録されたポインタは、所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び所定のフィールドの次のフィールドに対応するANYポイントテーブルを指すポインタのいずれか又は両方を記憶する。つまり、ハッシュテーブルの各インデックス及びANYポインタテーブルには、1つ又は2つのポインタが対応付けられる。
【0015】
さらに、テーブル記憶部121は、ANYポイントテーブルと同様の構成のSTARTポイントテーブルを記憶する。ハッシュテーブル及び各ポイントテーブルの詳細については後述する。
【0016】
制御部13は、検索装置10全体を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部13は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部13は、作成部131及び検索部132を有する。
【0017】
作成部131は、ハッシュテーブル及びANYポイントテーブルを作成する。作成部131は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在する場合、ポインタに当該次のフィールドに対応するハッシュテーブルを指すポインタを登録する。また、所定のフィールドの次のフィールドに対応するANYポイントテーブルが存在する場合、ポインタに当該次のフィールドに対応するANYポイントテーブルを指すポインタを登録する。
【0018】
一方、作成部131は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、所定のフィールドの次のフィールドに対応するANYポイントテーブルが存在しない場合は、ポインタにNULLを登録する。
【0019】
検索部132は、検索対象のパケットの各フィールドの値から計算したハッシュ値と、ハッシュテーブル及びANYポイントテーブルに登録されたポインタと、を参照し、検索対象のパケットに対応したルールのハッシュ検索を行う。
【0020】
ここで、図2を用いて、ルールの検索条件について説明する。図2は、ルールの検索条件の一例を示す図である。図2のIP_SRC、IP_DST、Port_SRC及びPort_DSTは、いずれもパケットのフィールドである。なお、図2の検索条件は一例であり、例えば、検索条件のフィールドは、図2に示すものにプロトコルを加えた5−tupleであってもよい。
【0021】
図2は、検索対象のパケットのIP_SRC、IP_DST、Port_SRC及びPort_DSTが検索条件を満たす場合、当該検索条件に対応するルールが採用されることを示している。例えば、ルールは、パケットの転送先を示すものである。
【0022】
また、各フィールドの検索条件は、具体的な値又はANY条件である。具体的な値が設定されたフィールドの検索条件は、検索対象のフィールドの値が当該値に合致している場合に満たされる。一方、ANY条件が設定されたフィールドの検索条件は、検索対象のフィールドの値にかかわらず常に満たされる。
【0023】
例えば、検索対象のパケットのIP_SRCが「192.168.33.5」、IP_DSTが「192.168.21.13」、Port_SRCが「24002」、Port_DSTが「33002」である場合に図2の1行目の検索条件が満たされ、ルール#1が採用される。また、例えば、検索対象のパケットのIP_SRCが「192.168.10.10」、IP_DSTが「10.10.100.1」、Port_DSTが「2600」である場合、ANY条件が設定されたPort_SRCの値にかかわらず、図2の2行目の検索条件が満たされ、ルール#2が採用される。
【0024】
ここで、従来のハッシュ検索の手法では、ハッシュテーブルのインデックスには具体的なハッシュ値を設定する必要があるため、図2のようにANY条件を含んだ検索条件を反映したハッシュテーブルを作成することは困難であった。
【0025】
一方、本実施形態では、ハッシュテーブルとANYポイントテーブルを組み合せたツリー構造の検索モデルを用いて、検索条件にANY条件が含まれる場合であってもハッシュ検索を利用できるようにすることで、ルールの検索を高速化している。
【0026】
図3を用いて、本実施形態におけるツリーの作成処理及びツリーを用いた検索処理について説明する。図3は、第1の実施形態に係る検索装置の処理について説明するための図である。図3に示すように、ツリーは、ハッシュテーブル及び各ポイントをノードとして表現し、ポインタで示される接続をエッジとして表現したものである。
【0027】
図3に示すように、ツリーは、フィールドごとの階層に分けられる。図3の例では、ツリーは、IP_SRC、IP_DST、Port_SRC及びPort_DSTのそれぞれに対応した階層を有する。また、HTP(Hash Table Pointer)は、ハッシュテーブルを指すポインタである。また、AP(ANY pointer)は、ANYポイントテーブルを指すポインタである。
【0028】
ツリーは、最上位のノードとしてSTARTポイントテーブルに対応するSTARTポイントを有する。STARTポイントテーブルには、1番目のフィールドであるIP_SRCフィールドのハッシュテーブルを指すHTPと、IP_SRCフィールドのANYポイントテーブルを指すAPとが登録されている。
【0029】
なお、第1のフィールドに対応するハッシュテーブルが存在しない場合は、STARTポイントテーブルのHTPにはNULLが登録される。また、第1のフィールドに対応するANYポイントテーブルが存在しない場合は、STARTポイントテーブルのAPにはNULLが登録される。
【0030】
また、IP_SRCフィールドのハッシュテーブルのインデックスがH(a)であるレコードには、2番目のフィールドであるIP_DSTフィールドのハッシュテーブルを指すHTPと、IP_DSTフィールドのANYポイントテーブルを指すAPとが登録されている。なお、H(x)は、xを引数としたときのハッシュ関数H()が返すハッシュ値である。
【0031】
また、IP_SRCフィールドのANYポイントテーブルには、2番目のフィールドであるIP_DSTフィールドのハッシュテーブルを指すHTPと、IP_DSTフィールドのANYポイントテーブルを指すAPとが登録されている。ただし、当該ANYポイントテーブルのAPにはNULLが登録されている。このように、IP_SRCフィールドのANYポイントテーブルのAPがNULLになるのは、図2のように、IP_SRCフィールドがANY条件かつIP_DSTフィールドがANY条件という検索条件が存在しない場合である。
【0032】
同様に、3番目のフィールドであるPort_SRCフィールド及び4番目のフィールドであるPort_DSTフィールドについてもハッシュテーブル及びANYポイントテーブルが設定されている。ただし、ここでは、Port_DSTフィールドが最後のフィールドであるため、Port_DSTフィールドのハッシュテーブル及びANYポイントテーブルには、ルールを指すポインタが登録されている。
【0033】
作成部131は、検索条件に基づいて、図3に示すようなハッシュテーブル及びANYポイントテーブルを作成する。また、検索部132は、ハッシュテーブル及びANYポイントテーブルを用いて、検索対象のパケットに対応するルールを検索する。その際、検索部132は、ハッシュテーブルを用いたハッシュ検索を行いつつ、ポインタが指すハッシュテーブル及びANYポイントテーブルを参照していきルールを取得する。
【0034】
[第1の実施形態の処理]
図4を用いて、検索装置10の作成部131による作成処理について説明する。図4は、第1の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。まず、作成部131は、STARTポイントを作成する(ステップS101)。次に、作成部131は、検索条件の最初のフィールドを参照する(ステップS102)。
【0035】
ここで、参照中のフィールドの条件が値である場合(ステップS103、値)、HTPがNULLであれば(ステップS104、Yes)、作成部131は、作成したポイント又はハッシュテーブルにHTPを登録し、さらに次のフィールドのハッシュテーブルを作成する(ステップS105)。一方、HTPがNULLでなければ(ステップS104、No)、作成部131は、ステップS105を実行せずにステップS108へ進む。
【0036】
一方、参照中のフィールドの条件がANY条件である場合(ステップS103、ANY)、APがNULLであれば(ステップS106、Yes)、作成部131は、作成したポイント又はハッシュテーブルにAPを登録し、さらに次のフィールドのANYポイントテーブルを作成する(ステップS107)。一方、APがNULLでなければ(ステップS106、No)、作成部131は、ステップS107を実行せずにステップS108へ進む。
【0037】
そして、作成部131は、参照中のフィールドが最後のフィールドである場合(ステップS108、Yes)、ルールを登録する(ステップS110)。具体的には、作成部131は、最後のフィールドのハッシュテーブル又はANYポイントテーブルに、検索条件に対応するルールを指すポインタを登録する。
【0038】
一方、作成部131は、参照中のフィールドが最後のフィールドでない場合(ステップS108、No)、検索条件の次のフィールドを参照し(ステップS109)、ステップS103に戻り処理を繰り返す。
【0039】
図5を用いて、検索装置10の検索部132による検索処理について説明する。図5は、第1の実施形態に係る検索装置の検索処理の流れを示すフローチャートである。まず、検索部132は、検索対象のパケットの最初のフィールドを参照する(ステップS201)。次に、検索部132は、STARTポイントを参照する(ステップS202)。
【0040】
ここで、検索部132は、ルールを取得可能である場合(ステップS203、Yes)、ルールを取得し処理を終了する(ステップS212)。なお、ルールを取得可能であるとは、参照中のハッシュテーブル又はポイントのポインタがルールを指していることである。
【0041】
検索部132は、ルールを取得可能でない場合(ステップS203、No)、参照中のハッシュテーブル又はポイントにHTPが登録されているか否かを確認する(ステップS204)。HTPが登録されている場合(ステップS204、Yes)、検索部132は、参照中のフィールドの値で当該HTPが指すハッシュテーブルを検索する(ステップS205)。
【0042】
ハッシュテーブルにマッチするものがあった場合、又は参照中のハッシュテーブル又はポイントにAPが登録されている場合(ステップS206、Yes)、検索部132は、検索対象のパケットの次のフィールドを参照し(ステップS207)、次のハッシュテーブル又はポイントを参照し(ステップS208)、ステップS203に戻り処理を繰り返す。
【0043】
ハッシュテーブルにマッチするものがなく、かつ参照中のハッシュテーブル又はポイントにAPが登録されていない場合(ステップS206、No)、検索部132は、未参照のポイントがあるか否かを確認する(ステップS209)。未参照のポイントがある場合(ステップS209、Yes)、検索部132は、未参照のポイント及び対応するフィールドを参照し(ステップS210)、ステップS203に戻り処理を繰り返す。また、未参照のポイントがない場合(ステップS209、No)、検索部132は、マッチするルールなしと判定し(ステップS211)、処理を終了する。
【0044】
[第1の実施形態の効果]
記憶部12は、パケットの所定のフィールドに対応し、対応するフィールドの値のハッシュ値とポインタとの組が登録されたハッシュテーブルと、所定のフィールドに対応し、ポインタが登録されたテーブルであるANYポイントテーブルとを記憶する。検索部132は、検索対象のパケットの各フィールドの値から計算したハッシュ値と、ハッシュテーブル及びANYポイントテーブルに登録されたポインタと、を参照し、検索対象のパケットに対応したルールのハッシュ検索を行う。このように、本実施形態では、検索条件にANY条件が含まれる場合であっても、ハッシュ検索を用いることができるため、パケットに対応したルールの検索を効率化することができる。
【0045】
記憶部12は、ハッシュテーブル及びANYポイントテーブルに登録されたポインタとして、所定のフィールドの次のフィールドに対応するハッシュテーブルを指すポインタ、及び所定のフィールドの次のフィールドに対応するANYポイントテーブルを指すポインタのいずれか又は両方を記憶する。このように、ハッシュテーブルとANYポイントテーブルを組み合わせることにより、検索条件にANY条件が含まれる場合であってもハッシュ検索を行うことができる。
【0046】
作成部131は、パケットの各フィールドの値の検索条件のうち、値が検索条件として設定されている場合はハッシュテーブルを作成し、ANY条件が検索条件として設定されている場合はANYポイントテーブルを作成する。このように、必要最低限のハッシュテーブル及びANYポイントテーブルを作成することにより、リソースの使用量を低減させることができる。
【0047】
作成部131は、所定のフィールドの次のフィールドに対応するハッシュテーブルが存在しない場合、又は、所定のフィールドの次のフィールドに対応するANYポイントテーブルが存在しない場合は、ポインタにNULLを登録する。これにより、不要な検索を行わないようにすることができる。
【0048】
[第2の実施形態]
第1の実施形態では、検索装置10は、検索条件にANY条件がある場合は、ANYポイントテーブルを作成することしていた。これに対し、第2の所定のフィールドの検索条件が全てANY条件である場合、検索装置10は、当該フィールドについてはANYポイントテーブルを作成しない。
【0049】
つまり、作成部131は、パケットのフィールドのうち、条件として値とANY条件の両方が設定されたフィールドについてのみ、当該ANY条件に対応するANYポイントテーブルを作成する。言い換えると、作成部131は、パケットのフィールドのうち、条件としてANY条件のみが設定されたフィールドについては、当該ANY条件に対応するANYポイントテーブルを作成しない。なお、当然ながら、作成部131は、パケットのフィールドのうち、条件として値のみが設定されたフィールドについては、ANYポイントテーブルを作成しない。
【0050】
第2の実施形態の検索装置10の構成は、第1の実施形態の検索装置10の構成と同様である。ただし、作成部131によるANYポイントテーブルの作成方法が異なる。図6を用いて、第1の実施形態と第2の実施形態の相違点について説明する。図6は、第2の実施形態に係る検索装置の処理について説明するための図である。
【0051】
まず、前提条件として、Port_SRCフィールドの検索条件が全てANY条件であるとする。例えば、前提条件は、図2の例において、2行目、3行目及び5行目の検索条件のみが存在する場合に満たされる。
【0052】
この場合、図6に示すように、Port_SRCフィールドに対応するANYポイントテーブルは作成されない。そして、Port_SRCフィールドの1つ前のIP_DSTからのエッジは、Port_SRCフィールドの次のPort_DSTのハッシュテーブル等に接続される。
【0053】
[第2の実施形態の処理]
図7を用いて、検索装置10の作成部131による作成処理について説明する。図7は、第2の実施形態に係る検索装置の作成処理の流れを示すフローチャートである。まず、作成部131は、STARTポイントを作成する(ステップS301)。次に、作成部131は、検索条件の最初のフィールドを参照する(ステップS302)。
【0054】
ここで、参照中のフィールドの条件が値のみ又は値とANY条件の両方である場合(ステップS303、値のみ又は両方)、HTPがNULLであれば(ステップS304、Yes)、作成部131は、作成したポイント又はハッシュテーブルにHTPを登録し、さらに次のフィールドのハッシュテーブル及びANYポイントテーブルを作成する(ステップS305)。ただし、値のみの場合は、作成部131はハッシュテーブルのみを作成する。一方、HTPがNULLでなければ(ステップS304、No)、作成部131は、ステップS305を実行せずにステップS306へ進む。
【0055】
一方、参照中のフィールドの条件がANY条件のみである場合(ステップS303、ANYのみ)、作成部131は、ANYポイントテーブルを作成せずに次の処理へ進む。ただし、後から検索条件として値が追加された場合、作成部131は、ハッシュテーブル及びANYポイントテーブルを作成する。
【0056】
そして、作成部131は、参照中のフィールドが最後のフィールドである場合(ステップS306、Yes)、ルールを登録する(ステップS308)。具体的には、作成部131は、最後のフィールドのハッシュテーブル又はANYポイントテーブルに、検索条件に対応するルールを指すポインタを登録する。
【0057】
一方、作成部131は、参照中のフィールドが最後のフィールドでない場合(ステップS306、No)、検索条件の次のフィールドを参照し(ステップS307)、ステップS303に戻り処理を繰り返す。
【0058】
[第2の実施形態の効果]
作成部131は、パケットのフィールドのうち、条件として値とANY条件の両方が設定されたフィールドについてのみ、当該ANY条件に対応するANYポイントテーブルを作成する。これにより、作成が不要な場合はANYポイントテーブルの作成を行わないようにできるため、リソースの使用量を低減させることができる。さらに、本実施形態によれば、検索時のポインタの参照回数を減らすことができ、検索を高速化することができる。
【0059】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0060】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0061】
[プログラム]
一実施形態として、検索装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記の検索を実行する検索プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の検索プログラムを情報処理装置に実行させることにより、情報処理装置を検索装置10として機能させることができる。ここで言う情報処理装置には、スイッチやルータ等のネットワーク機器の他、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0062】
図8は、検索プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0063】
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0064】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、検索装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、検索装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSDにより代替されてもよい。
【0065】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0066】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0067】
10 検索装置
11 入出力部
12 記憶部
13 制御部
121 テーブル記憶部
131 作成部
132 検索部
図1
図2
図3
図4
図5
図6
図7
図8