JP2009147587A - データ検索装置、データ検索方法、及びデータ検索用プログラム - Google Patents

データ検索装置、データ検索方法、及びデータ検索用プログラム Download PDF

Info

Publication number
JP2009147587A
JP2009147587A JP2007321689A JP2007321689A JP2009147587A JP 2009147587 A JP2009147587 A JP 2009147587A JP 2007321689 A JP2007321689 A JP 2007321689A JP 2007321689 A JP2007321689 A JP 2007321689A JP 2009147587 A JP2009147587 A JP 2009147587A
Authority
JP
Japan
Prior art keywords
data
search
management table
data management
hash value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007321689A
Other languages
English (en)
Other versions
JP4888369B2 (ja
Inventor
Hide Haruhara
秀 春原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2007321689A priority Critical patent/JP4888369B2/ja
Publication of JP2009147587A publication Critical patent/JP2009147587A/ja
Application granted granted Critical
Publication of JP4888369B2 publication Critical patent/JP4888369B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 検索キーの組み合わせに対する検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、各ハッシュ値に対する検索対象の数に偏りがある場合の検索性能を向上する。
【解決手段】 管理テーブル検索部210は、複数のデータ種別の検索キーの組み合わせの検索の際、検索用ハッシュテーブル300を参照し、検索キーとハッシュ値が同一のデータを記憶するデータ管理テーブル400の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータを記憶するデータ管理テーブル400に対して、検索キーの組み合わせを含むデータ管理テーブル400を検索する。
【選択図】 図1

Description

本発明はデータ検索装置、データ検索方法、及びデータ検索用プログラムに関し、特に、ハッシュテーブルを用いて検索を行うデータ検索装置、データ検索方法、及びデータ検索用プログラムに関する。
通信装置のフォワーディングやフロー制御、アクセス制御において、アドレスやポート番号等の検索キーの組み合わせに対する検索を行う場合がある。このような検索キーの組み合わせに対する検索方法として、例えば、特許文献1には、最初に一つの検索キーで検索したした結果に対して、残りの検索キーで検索を行う方法([0033]欄)(以下、多段階検索とする)や2つの検索キーのハッシュ値の組み合わせから成るテーブル位置を有するハッシュテーブルを用いて検索する方法([0037])(以下、多次元ハッシュテーブルとする)が開示されている。
特開2005−311538号公報
上述した特許文献1に記載された検索方法のうち、多次元ハッシュテーブルを用いる方法は、各検索キーのハッシュ値の組み合わせに対してテーブル位置を確保する必要があり、検索キーの種別(次元)が増えると、ハッシュテーブルに必要な記憶容量が、各検索キーのハッシュ値の最大値の積に比例して増大する。一方、多段階検索を用いる方法において、各検索キーの検索にハッシュテーブルを用いた場合、検索キーの種別が増えた場合の記憶容量の増加は、多次元ハッシュテーブルを用いる方法に比べて抑えられる。
ところで、ハッシュテーブルを用いた検索方法においては、各ハッシュ値に対して関連付けられる検索対象の数は均一であることが理想的である。しかしながら、通信装置のフォワーディングやフロー制御、アクセス制御においては、各ハッシュ値に対して関連付けられる検索対象の数に偏りが発生することがある。
上述した多段階検索を用いる方法において、各ハッシュ値に対して関連付けられる検索対象の数に偏りがあると、最初の検索キーで検索した結果が多く得られることがあり、その結果、検索時間が増大し、検索性能が劣化するという課題があった。
(本発明の目的)
本発明の目的は、上述した課題を解決するデータ検索装置、データ検索方法、及びデータ検索用プログラムを提供することにある。
本発明のデータ検索装置は、複数のデータ種別のデータを記憶するデータ管理テーブルと、それぞれの前記データ種別に関して、ハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数を記憶する検索用ハッシュテーブルと、前記データ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部とを備えたことを特徴とする。
本発明のデータ検索方法は、複数のデータ種別の検索キーの組み合わせの検索に際し、検索用ハッシュテーブルを参照し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択するステップと、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索するステップとを含むことを特徴とする。
本発明のデータ検索用プログラムは、コンピュータを、複数のデータ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部として動作させることを特徴とする。
本発明の効果は、検索キーの組み合わせに対する検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できることである。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第一の実施の形態)
図1に本発明の第一の実施の形態におけるデータ検索装置100の構成を示す。
本発明の第一の実施の形態においては、データ検索装置100にて管理される、検索の対象となるデータ430の種別はデータ種別A、Bの2つとしているが、データ430の種別の数は2以上の任意の数としてよい。データ430の種別は、ハッシュ値によって検索が行えるようものであればどのようなものでも良く、例えば、データ種別A、Bをそれぞれ「名前を表すデータ」、「電話番号を表すデータ」としてもよい。データ検索装置100は、各データ種別について1つの検索キーからなる、検索キーの組み合わせが指定されると、当該検索キーの組み合わせと同一のデータ430を含むデータ管理テーブル400を検索する。なお、検索キーの組み合わせに含まれるデータ種別の数は、データ検索装置100にて管理されるデータ種別の数以下の任意の数としてよい。例えば、データ検索装置100にて管理されるデータ種別の数が4種類(A、B、C、D)の場合、そのうちの2種類(A、C)を検索キーとしてもよい。この場合、データ検索装置100は、これら2つのデータ種別の検索キーの組み合わせと同一のデータ430の組み合わせを含むデータ管理テーブル400を検索する。
図1を参照すると、データ検索装置100は、管理テーブル検索部210、検索用ハッシュテーブル300A、300B、及びデータ管理テーブル400a、400b、400cから構成される。なお、ここでは、検索用ハッシュテーブル300A、300Bを総称する場合、検索用ハッシュテーブル300と記述する。同様に、データ管理テーブル400a、400b、400cを総称する場合、データ管理テーブル400と記述する。データ検索装置100は、プログラムによって動作する情報処理装置であってもよい。
管理テーブル検索部210は、検索キーの組み合わせを取得すると、検索用ハッシュテーブル300及びデータ管理テーブル400を参照し、取得した検索キーの組み合わせと同じデータ430の組み合わせを含むデータ管理テーブル400を検索する。
図2に本発明の第一の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す。
検索用ハッシュテーブル300は、データ管理テーブル400が管理するデータ種別毎に存在する。検索用ハッシュテーブル300は、インデックス310ごとに、「インデックス310、カウンタ320、及び検索チェーン330」(以下、検索用サブテーブルとする)を含む。ここで、インデックス310は、当該インデックス310が属する検索用ハッシュテーブル300のデータ種別のデータ430のハッシュ値が取り得る値である。なお、ハッシュ値の算出方法については、予め決められているものとする。
検索用ハッシュテーブル300の検索用サブテーブル内の検索チェーン330には、当該検索用サブテーブル内のインデックス310とハッシュ値が同一のデータ430を含むデータ管理テーブル400を指し示す情報が登録される(検索チェーン330が、当該データ管理テーブル400を指し示す情報を持つ)。検索チェーン330は、データ管理テーブル400を示すポインタとしてもよい。例えば、インデックス310A1とデータ430aAのハッシュ値が等しければ、検索チェーン330A1にはデータ管理テーブル400aが登録される。当該インデックス310とハッシュ値が同一のデータ430を含むデータ管理テーブル400が複数存在する場合、検索チェーン330には、その先頭のデータ管理テーブル400が登録される。当該インデックス310とハッシュ値が同一のデータ430を含むデータ管理テーブル400が存在しない場合、検索チェーン330には、無効値(例えばNull)が設定される。
検索用ハッシュテーブル300の検索用サブテーブル内のカウンタ320は、当該検索用サブテーブル内のインデックス310とハッシュ値が同一のデータ430を含むデータ管理テーブル400の数を管理する。すなわち、カウンタ320は、検索チェーン330、420によって接続されるデータ管理テーブル400の数を示す。当該カウンタ320に対応するインデックス310とハッシュ値が同一のデータ430を含むデータ管理テーブル400が存在しない場合、カウンタ320の値は0となる。
データ管理テーブル400は、テーブル識別子410、検索チェーン420、及びデータ430により構成される。
テーブル識別子410は、データ管理テーブル400をデータ検索装置100上で一意に識別するための情報である。テーブル識別子410は、データ管理テーブル400が存在するアドレスであってもよい。
データ430は、データ管理テーブル400が管理する対象であり、データ管理テーブル400は、検索対象となるデータ種別の数(ここでは、データ種別A、Bの2種類)のデータ430を保持する。
データ管理テーブル400は、データ種別の組み合わせ(例えば、データ種別Aの個々のデータ430Aとデータ種別Bの個々のデータ430Bとの組み合わせ)ごとに設けられる。また、この組み合わせについては、データ種別ごとに取り得る全てのデータ430の組み合わせが可能である。
検索チェーン420はデータ種別毎に存在する。検索チェーン420には、各々のデータ種別に関して、ハッシュ値が同一となるデータ430を含む他のデータ管理テーブル400を示す情報が登録される(検索チェーン420は当該他のデータ管理テーブル400を指し示す)。検索チェーン420は、例えば、他のデータ管理テーブル400を示すポインタでもよい。検索チェーン420には、前のデータ管理テーブル400を示す情報(前方値)と次のデータ管理テーブル400を示す情報(後方値)の2つを含むものとする。ただし、検索用ハッシュテーブル300の検索チェーン330に登録される先頭のデータ管理テーブル400においては、検索チェーン420の前方値には、当該先頭のデータ管理テーブル400を登録している検索チェーン330に対応するインデックス310を示す情報が登録される。検索チェーン420の前方値がインデックス310とデータ管理テーブル400のどちらを示すかについては、例えば、検索チェーン420の前方値にフラグを含めることによって識別するようにしてもよい。また、次のデータ管理テーブル400が存在しない場合、すなわち、検索チェーン330、420によって接続される最後のデータ管理テーブル400では、検索チェーン420の後方値には、無効値(例えばNull)が設定される。
図2の例においては、データ種別Aに関して、データ管理テーブル400aのデータ430aAとデータ管理テーブル400cのデータ430cAのハッシュ値は同一で、インデックス310A1と等しい。そして、検索チェーン330A1には、データ管理テーブル400aが登録されている。検索チェーン420aAの前方値には、インデックス310A1、検索チェーン420aAの後方値には、データ管理テーブル400cが登録されている。検索チェーン420cAの前方値には、データ管理テーブル400a、検索チェーン420cAの後方値には、他のデータ管理テーブル400が登録されている。すなわち、データ管理テーブル400a、400cは、検索チェーン330A1、検索チェーン420aA、検索チェーン420cAにより接続されている。
また、データ種別Bに関して、データ管理テーブル400bのデータ430bBとデータ管理テーブル400aのデータ430aBのハッシュ値は同一で、インデックス310B1と等しい。そして、検索チェーン330B1には、データ管理テーブル400bが登録されている。検索チェーン420bBの前方値には、インデックス310B1、検索チェーン420bBの後方値には、データ管理テーブル400aが登録されている。検索チェーン420aBの前方値には、データ管理テーブル400b、検索チェーン420aBの後方値には、Nullが登録されている。すなわち、データ管理テーブル400b、400aは、検索チェーン330B1、検索チェーン420bB、検索チェーン420aBにより接続されている。したがって、この場合、カウンタ320B1の値は2である。
次に本発明の第一の実施の形態の動作について、図面を参照して詳細に説明する。
図3に本発明の第一の実施の形態における管理テーブル検索部210によるデータ管理テーブル400の検索時の処理フローを示す。また、カウンタ320の値については、データ管理テーブル400の生成時に設定されているものとする。
ここでは、指定された検索キーの組み合わせと同一のデータ430の組み合わせを含むデータ管理テーブル400のテーブル識別子410を検索結果として取得するものとする。検索結果の初期値はNullとする。
はじめに、管理テーブル検索部210は、検索を行う検索キーの組み合わせを取得する(検索キーの組み合わせが指定される)(ステップS101)。管理テーブル検索部210は、当該検索キーの組み合わせから検索キーを一つ選択する(ステップS102)。管理テーブル検索部210は、選択した検索キーについてハッシュ値を算出する(ステップS103)。管理テーブル検索部210は、選択した検索キーに対応する検索用ハッシュテーブル300を参照し、算出したハッシュ値と同一のインデックス310を検索する(ステップS104)。管理テーブル検索部210は、当該インデックス310に対応する検索チェーン330にデータ管理テーブル400が登録済みかどうかを確認する(ステップS105)。データ管理テーブル400が登録済みでない場合(ステップS105/N)、選択した検索キーと一致するデータ430は存在しないため、管理テーブル検索部210は、検索を終了する。データ管理テーブル400が登録済みの場合(ステップS105/Y)、管理テーブル検索部210は、当該インデックス310に対応するカウンタ320の値を取得する(ステップS106)。管理テーブル検索部210は、検索キーの組み合わせの中で、カウンタ320の値を取得していない検索キーが存在する場合(ステップS107/N)、検索キーの組み合わせから次の検索キーを選択し(ステップS108)、ステップS103からステップS107を繰り返す。
管理テーブル検索部210は、検索キーの組み合わせの全ての検索キーについてカウンタ320の値を取得した場合(ステップS107/Y)、カウンタ320の値が最小の検索キーを選択する(ステップS109)。
管理テーブル検索部210は、ステップS109で選択した検索キーのデータ種別に関して、算出したハッシュ値と同一のインデックス310に対応する検索チェーン330を参照し、当該検索チェーン330に登録されたデータ管理テーブル400を取得する(ステップS110)。管理テーブル検索部210は、検索キーの組み合わせの中の各検索キーのデータ種別毎に、検索キーとステップS110において取得したデータ管理テーブル400上のデータ430が一致するかどうかを確認する(ステップS111)。管理テーブル検索部210は、取得したデータ管理テーブル400に、検索キーの組み合わせの中の全ての検索キーと一致するデータ430が含まれる場合(ステップS112/Y)、当該データ管理テーブル400のテーブル識別子410を検索結果に追加する(ステップS113)。
管理テーブル検索部210は、ステップS109で選択した検索キーのデータ種別に関して、取得したデータ管理テーブル400の検索チェーン420の後方値に、他のデータ管理テーブル400が登録済みかどうかを確認する(ステップS114)。管理テーブル検索部210は、検索チェーン420の後方値にデータ管理テーブル400が登録済みの場合(ステップS114/Y)、当該データ管理テーブル400を取得し(ステップS115)、ステップS111からステップS114を繰り返す。
管理テーブル検索部210は、検索チェーン420の後方値に他のデータ管理テーブル400が登録されていない場合(ステップS114/N)、検索チェーン420の最後のデータ管理テーブル400と判断し、検索を終了する。
次に、図2に示した検索用ハッシュテーブル300、データ管理テーブル400を用いて、具体例を説明する。図2において、データ種別A、Bに対して検索キーα、βが指定され、それぞれのハッシュ値がインデックス310A1、310B1と同一であったとする。管理テーブル検索部210は、カウンタ320A1、カウンタ320B1の値を取得する。ここで、カウンタ320A1=10、カウンタ320B1=2であった場合、管理テーブル検索部210は、検索キーβを選択する。
管理テーブル検索部210は、選択した検索キーβについて算出したインデックス310B1に対応する検索チェーン330B1を参照し、データ管理テーブル400bを取得する。管理テーブル検索部210は、検索キーαとデータ430bA、検索キーβとデータ430bBが一致するかどうかを確認し、全てが一致した場合、テーブル識別子410bを検索結果に追加する。
次に、管理テーブル検索部210は、選択した検索キーβのデータ種別Bに関する検索チェーン420bBの後方値に、データ管理テーブル400aが登録済みであるため、データ管理テーブル400aを取得する。管理テーブル検索部210は、検索キーαとデータ430aA、検索キーβとデータ430aBが一致するかどうかを確認し、全てが一致した場合、テーブル識別子410aを検索結果に追加する。
次に、管理テーブル検索部210は、検索チェーン420aBの後方値に、他のデータ管理テーブル400が登録されていない(Nullが設定されている)ため、検索を終了する。
以上により、本発明の第一の実施の形態の動作が完了する。
なお、本発明の第一の実施の形態においては、各データ種別に関して、ハッシュ値が同一であるデータ430を記憶するデータ管理テーブル400を管理する方法として、検索チェーン330、420を用いる方法を示したが、ハッシュ値が同一であるデータ430を記憶するデータ管理テーブル400を取得できるのであれば、どのような方法を用いても良い。例えば、検索用ハッシュテーブル330において、ハッシュ値が同一であるデータ430を記憶する全てのデータ管理テーブル400のテーブル識別子410を、インデックス310ごとに記憶するようにしてもよい。
本発明の第一の実施の形態によれば、検索キーの組み合わせに対する検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、管理テーブル検索部210が、検索用ハッシュテーブル300を参照し、検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400に対して、検索キーの組み合わせを含むデータ管理テーブル400を検索するためである。
(第二の実施の形態)
次に本発明の第二の実施の形態について説明する。
図4に本発明の第二の実施の形態におけるデータ検索装置100の構成を示す。図4を参照すると、本発明の第二の実施の形態におけるデータ検索装置100は、管理部200、検索用ハッシュテーブル300、データ管理テーブル400、及びフロー制御部500より構成される。管理部200は、管理テーブル検索部210、管理テーブル生成部220、管理テーブル削除部230、及びアクセスリスト240より構成される。
本発明の第二の実施の形態においては、データ検索装置100が管理テーブル生成部220、管理テーブル削除部230、及びアクセスリスト240を備えた点において、第一の実施の形態と異なる。
また本発明の第二の実施の形態においては、データ検索装置100を通信装置のフロー制御に適用したものであり、フロー管理テーブルをデータ管理テーブル400上で管理する。データ管理テーブル400が保持するデータ種別は、宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポートの4つとする。データ検索装置100は、これら4つのデータ種別の組み合わせをフロー識別子とし、受信したIPパケットについて、フローを識別するものとする。
なお、本発明の第二の実施の形態において、第一の実施の形態と同一の符号を有する構成要素については、特別な説明がない限り、第一の実施の形態の構成要素と同一であるものとする。
図4において、管理テーブル生成部220は、データ管理テーブル400の生成時に、検索チェーン330、検索チェーン420の設定を行う。管理テーブル削除部230は、データ管理テーブル400の削除時に、検索チェーン330、検索チェーン420の設定を行う。アクセスリスト240は、フロー制御の対象となるパケットの条件、及び制御情報を表すリストであり、図5に示すように、宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポート、及びパケットに対する制御情報を記憶管理する。
図8、図9、及び図10に本発明の第二の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す。
検索用ハッシュテーブル300は、データ管理テーブル400が管理する4つのデータ種別(宛先IPアドレス、送信元IPアドレス、宛先ポート番号、送信元ポート番号)毎に存在する。
データ管理テーブル400は、テーブル識別子410、検索チェーン420、データ430、及び制御内容440により構成される。データ430は、フローを識別するための4つのデータ種別(宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポート)の値を保持する。また、検索チェーン420は、これらの4つのデータ種別毎に存在する。制御内容440には、データ430(フロー識別子)によって識別されるフローに対して適用される制御情報が、アクセスリスト240の制御情報を参照して設定される。
フロー制御部500は、受信したIPパケットのフロー識別子を、データ管理テーブル400上で検索し、制御内容440を適用する。フロー制御部500は、IPパケットを受信した際、データ管理テーブル400を参照し、受信したIPパケットのフロー識別子と一致するデータ430を含むデータ管理テーブル400が存在するかどうかを検索する。ここでは、フロー制御部500によるデータ管理テーブル400の検索は、管理テーブル検索部210とは別の検索手段を用いて行うものとするが、管理テーブル検索部210を用いて行うようにしてもよい。フロー制御部500は、受信したIPパケットのフロー識別子と一致するデータ430を含むデータ管理テーブル400が存在する場合、受信したIPパケットに対して、制御内容440を適用する。また、フロー制御部500は、受信したIPパケットのフロー識別子と一致するデータ430を含むデータ管理テーブル400が存在しない場合、管理部200に対して、当該フロー識別子に対応するデータ管理テーブル400の生成を要求する。
次に本発明の第二の実施の形態の動作について、図面を参照して詳細に説明する。
(生成処理)
上述の通り、フロー制御部500は、受信したIPパケットのフロー識別子と一致するデータ430を含むデータ管理テーブル400が存在しない場合、管理部200に対してデータ管理テーブル400の生成を要求する。管理部200は、フロー制御部500から、受信したIPパケットのフロー識別子を取得し、当該フロー識別子が該当する条件をアクセスリスト240上で検索し、制御情報を取得する。管理部200は、管理テーブル生成部220にデータ管理テーブル400の生成を指示する。
例えば、受信パケットのフロー識別子が、<宛先IPアドレス=aa.aa.aa.aa、送信元IPアドレス=dd.dd.dd.dd、宛先ポート=gg、送信元ポート=kk>であった場合、図5のアクセスリスト240においては、3行目の条件(送信元IPアドレス=dd.dd.dd.dd、送信元ポート=kk)に該当するため、管理部200は、制御情報として<廃棄>を取得する。そして、管理部200は、受信パケットのフロー識別子をデータ430、取得した制御情報を制御内容440としたデータ管理テーブル400の生成を管理テーブル生成部220に要求する。
図6に、本発明の第二の実施の形態における管理テーブル生成部220によるデータ管理テーブル400の生成時の処理フローを示す。ここでは、生成するデータ管理テーブル400を「新規データ管理テーブル400」とする。
管理テーブル生成部220は、管理部200から、新規データ管理テーブル400に設定するデータ430(フロー識別子)、制御内容440を取得する(ステップS201)。管理テーブル生成部220は、新規データ管理テーブル400を生成するための領域を取得し、テーブル識別子410、データ430、及び制御内容440を設定する(ステップS202)。管理テーブル生成部220は、データ430のうちのデータ種別を一つ選択する(ステップS203)。
管理テーブル生成部220は、選択したデータ種別について、対応するデータ430のハッシュ値を算出する(ステップS204)。管理テーブル生成部220は、選択したデータ種別に対応する検索用ハッシュテーブル300を参照し、算出したハッシュ値と同一のインデックス310を検索する(ステップS205)。管理テーブル生成部220は、当該インデックス310に対応する検索チェーン330にデータ管理テーブル400が登録済みかどうかを確認する(ステップS206)。
データ管理テーブル400が登録済みの場合(ステップS206/Y)、管理テーブル生成部220は、データ管理テーブル400の検索チェーン420の後方値を順次たどり、検索チェーン420上の最後のデータ管理テーブル400を取得する(ステップS207)。管理テーブル生成部220は、当該最後のデータ管理テーブル400の検索チェーン420の後方値に、新規データ管理テーブル400を登録する(ステップS208)。また、管理テーブル生成部220は、新規データ管理テーブル400の検索チェーン420の前方値に、当該最後のデータ管理テーブル400を登録する(ステップS209)。
データ管理テーブル400が登録済みでない場合(ステップS206/N)、管理テーブル生成部220は、検索チェーン330に新規データ管理テーブル400を登録する(ステップS210)。管理テーブル生成部220は、新規データ管理テーブル400の検索チェーン420の前方値に、ステップS205で検索したインデックス310を登録する(ステップS211)。
新規データ管理テーブル400の検索チェーン330、420への登録が完了すると、管理テーブル生成部220は、当該インデックス310に対応するカウンタ320をインクリメントする(ステップS212)。
管理テーブル生成部220は、データ430の全てのデータ種別について、検索チェーン330、420への登録が完了したかどうかを確認する(ステップS213)。検索チェーン330、420への登録が完了していないデータ種別がある場合(ステップS213/N)、管理テーブル生成部220は、次のデータ種別を選択し(ステップS214)、ステップS204からステップS213を繰り返す。全てのデータ種別について、検索チェーン330、420への登録が完了した場合(ステップS213/Y)、管理テーブル生成部220は、生成処理を終了する。
次に、図8、図9に示した検索用ハッシュテーブル300、データ管理テーブル400を用いて、具体例を説明する。図9は、図8のデータ管理テーブル400a、400bにデータ管理テーブル400nを生成、追加した場合の例である。ここで、生成するデータ430nA(宛先IPアドレス)のハッシュ値はインデックス310A2と、データ430nB(送信元IPアドレス)のハッシュ値はインデックス310B2と、データ430nC(宛先ポート)のハッシュ値はインデックス310C2と、データ430nD(送信元ポート)のハッシュ値はインデックス310D2とそれぞれ同一であるものとする。
宛先IPアドレスに関して、検索チェーン330A2にはデータ管理テーブル400bが登録されており、データ管理テーブル400bは検索チェーン420上の最後のデータ管理テーブル400である(図8)。管理テーブル生成部220は、検索チェーン420bAの後方値にデータ管理テーブル400nを追加し、検索チェーン420nAの前方値にデータ管理テーブル400bを追加する(図9)。さらに、管理テーブル生成部220は、カウンタ320A2をインクリメントする。
送信元IPアドレスに関して、検索チェーン330B2にはデータ管理テーブル400が登録されていない(図8)。管理テーブル生成部220は、検索チェーン330B2にデータ管理テーブル400nを追加し、管理テーブル生成部220は、検索チェーン420nBの前方値にインデックス310B2を追加する(図9)。さらに、管理テーブル生成部220は、カウンタ320B2をインクリメントする。
宛先ポートに関して、検索チェーン330C2にはデータ管理テーブル400aが登録されており、データ管理テーブル400aは検索チェーン420上の最後のデータ管理テーブル400である(図8)。管理テーブル生成部220は、検索チェーン420aCの後方値にデータ管理テーブル400nを追加し、検索チェーン420nCの前方値にデータ管理テーブル400aを追加する(図9)。さらに、管理テーブル生成部220は、カウンタ320C2をインクリメントする。
送信元ポートに関して、検索チェーン330D2にはデータ管理テーブル400が登録されていない(図8)。管理テーブル生成部220は、検索チェーン330D2にデータ管理テーブル400nを追加し、検索チェーン420nCの前方値にインデックス310D2を追加する(図9)。さらに、管理テーブル生成部220は、カウンタ320D2をインクリメントする。
(検索処理)
データ管理テーブル400の検索処理は、例えば、管理部200が、アクセスリスト240上の特定の行に対応するデータ管理テーブル400を検索する場合に使用する。
例えば、図5のアクセスリスト240において、3行目の制御情報に対応して生成されたデータ管理テーブル400を検索する場合、管理部200は、送信元IPアドレス=dd.dd.dd.dd、送信元ポート=kkの2つを検索キーとして、管理テーブル検索部210にデータ管理テーブル400の検索を指示する。
本発明の第二の実施の形態における管理テーブル検索部210によるデータ管理テーブル400の検索時の動作は、第一の実施の形態(図3)と同様となる。
次に、図9に示した検索用ハッシュテーブル300、データ管理テーブル400を用いて、具体例を説明する。図9において、宛先IPアドレス、送信元ポートに対して検索キーα、βが指定され、それぞれのハッシュ値がインデックス310A2、310D2と同一であったとする。管理テーブル検索部210は、カウンタ320A2、カウンタ320D2の値を取得する。ここで、カウンタ320A2=2、カウンタ320D2=1であった場合、管理テーブル検索部210は、検索キーβを選択する。
管理テーブル検索部210は、選択した検索キーβについて算出したインデックス310D2に対応する検索チェーン330D2を参照し、データ管理テーブル400nを取得する。管理テーブル検索部210は、検索キーαとデータ430nA、検索キーβとデータ430nDが一致するかどうかを確認し、全てが一致した場合、テーブル識別子410nを検索結果に追加する。
管理テーブル検索部210は、選択した検索キーβのデータ種別Dに関する検索チェーン420nDの後方値に、データ管理テーブル400が登録されていないため検索を終了する。
(削除処理)
データ管理テーブル400の削除処理は、例えば、管理部200において、アクセスリスト240上の行を削除する際に、当該削除する行に対応するデータ管理テーブル400を削除する場合に使用される。ここでは、管理部200は、削除対象となるデータ管理テーブル400のテーブル識別子410を、例えば、管理テーブル検索部210を用いて特定しているものとする。
図7に、本発明の第二の実施の形態における管理テーブル削除部230によるデータ管理テーブル400の削除時の処理フローを示す。ここでは、削除するデータ管理テーブル400を「削除対象データ管理テーブル400」とする。また、削除対象データ管理テーブル400の検索チェーン420の前方値、後方値に登録されている他のデータ管理テーブル400を、それぞれ「削除対象前方データ管理テーブル400」、「削除対象後方データ管理テーブル400」とする。
管理テーブル削除部230は、管理部200から、削除対象データ管理テーブル400のテーブル識別子410を取得する(ステップS301)。管理テーブル削除部230は、取得したテーブル識別子410から削除対象データ管理テーブル400を特定し、当該削除対象データ管理テーブル400のデータ430のうちのデータ種別を一つ選択する(ステップS302)。
管理テーブル削除部230は、選択したデータ種別に関して、削除対象データ管理テーブル400の検索チェーン420の前方値がデータ管理テーブル(削除対象前方データ管理テーブル)400とインデックス310のどちらであるか(ステップS303)と、後方値にデータ管理テーブル(削除対象後方データ管理テーブル)400が登録済みであるかどうか(ステップS304、ステップS305)を確認する。なお、検索チェーン420の前方値がインデックス310とデータ管理テーブル400のどちらであるかについては、例えば、検索チェーン420の前方値にフラグを含め、当該フラグにより識別するようにしてもよい。
削除対象データ管理テーブル400の検索チェーン420の前方値にデータ管理テーブル400が登録されており、後方値にもデータ管理テーブル400が登録済みの場合(ステップS304/Y)、管理テーブル削除部230は、削除対象後方データ管理テーブル400を削除対象前方データ管理テーブル400の検索チェーン420の後方値に登録し、削除対象前方データ管理テーブル400を削除対象後方データ管理テーブル400の検索チェーン420の前方値に登録する(ステップS306)。
削除対象データ管理テーブル400の検索チェーン420の前方値にデータ管理テーブル400が登録されており、後方値にデータ管理テーブル400が登録されていない場合(ステップS304/N)、管理テーブル削除部230は、削除対象前方データ管理テーブル400の検索チェーン420の後方値の登録内容を削除(Nullを設定)する(ステップS307)。
削除対象データ管理テーブル400の検索チェーン420の前方値にインデックス310が登録されており、後方値にデータ管理テーブル400が登録されている場合(ステップS305/Y)、管理テーブル削除部230は、削除対象後方データ管理テーブル400をインデックス310に対応する検索チェーン330に登録し、インデックス310を削除対象後方データ管理テーブル400の検索チェーン420の前方値に登録する(ステップS308)。
削除対象データ管理テーブル400の検索チェーン420の前方値にインデックス310が登録されており、後方値にデータ管理テーブル400が登録されていない場合(ステップS305/N)、管理テーブル削除部230は、インデックス310に対応する検索チェーン330の登録内容を削除(Nullを設定)する(ステップS309)。
ステップS303からS309により、当該データ種別について、検索チェーン330、420からの削除対象データ管理テーブル400の削除が完了する。
管理テーブル削除部230は、データ管理テーブル400の検索チェーン420の前方値を順次たどり、検索用ハッシュテーブル300のインデックス310に対応するカウンタ320をデクリメントする(ステップS310)。
管理テーブル削除部230は、データ430の全てのデータ種別について、検索チェーン330、420からの削除対象データ管理テーブル400の削除が完了したかどうかを確認する(ステップS311)。検索チェーン330、420からの削除が完了していないデータ種別がある場合(ステップS311/N)、管理テーブル削除部230は、次のデータ種別を選択し(ステップS312)、ステップS303からステップS311を繰り返す。データ430の全てのデータ種別について、検索チェーン330、420からの削除が完了した場合(ステップS311/Y)、管理テーブル削除部230は、削除処理を終了する。
次に、図9、図10に示した検索用ハッシュテーブル300、データ管理テーブル400を用いて、具体例を説明する。図10は、図9のデータ管理テーブル400a、400b、400nからデータ管理テーブル400bを削除した場合の例である。
宛先IPアドレスに関して、削除対象データ管理テーブル400bの検索チェーン420bAの前方値にはインデックス310A2が、後方値にはデータ管理テーブル400nが登録されている(図9)。管理テーブル削除部230は、インデックス310A2に対応する検索チェーン330A2にデータ管理テーブル400nを登録し、データ管理テーブル400nの検索チェーン420nAの前方値にインデックス310A2を登録する(図10)。さらに、管理テーブル削除部230は、カウンタ320A2をデクリメントする。
送信元IPアドレスに関して、削除対象データ管理テーブル400bの検索チェーン420bBの前方値にはインデックス310B1が、後方値にはデータ管理テーブル400aが登録されている(図9)。管理テーブル削除部230は、インデックス310B1に対応する検索チェーン330B1にデータ管理テーブル400aを登録し、データ管理テーブル400aの検索チェーン420aBの前方値にインデックス310B1を登録する(図10)。さらに、管理テーブル削除部230は、カウンタ320B1をデクリメントする。
宛先ポートに関して、削除対象データ管理テーブル400bの検索チェーン420bCの前方値にはインデックス310C1が登録されており、後方値にはデータ管理テーブル400は登録されていない(図9)。管理テーブル削除部230は、インデックス310C1に対応する検索チェーン330C1の登録内容を削除する(図10)。さらに、管理テーブル削除部230は、カウンタ320C1をデクリメントする。
送信元ポートに関して、削除対象データ管理テーブル400bの検索チェーン420bDの前方値にはデータ管理テーブル400aが登録されており、後方値にはデータ管理テーブル400は登録されていない(図9)。管理テーブル削除部230は、データ管理テーブル400aの検索チェーン420aDの後方値の登録内容を削除する(図10)。さらに、管理テーブル削除部230は、カウンタ320D1をデクリメントする。
以上により本発明の第二の実施の形態の動作が完了する。
本発明の第二の実施の形態によれば、IPパケットのフロー管理テーブルの検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、データ検索装置100がフロー管理テーブルをデータ管理テーブル400上で管理し、管理テーブル検索部210が、第一の実施の形態と同様に、検索用ハッシュテーブル300を参照し、検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400に対して、検索キーの組み合わせを含むデータ管理テーブル400を検索するためである。
(第三の実施の形態)
次に本発明の第三の実施の形態について説明する。本発明の第三の実施の形態においては、データ検索装置100を通信装置のARP(Address Resolution Protocol)テーブルの管理に適用したものである。データ管理テーブル400が保持するデータ種別は、IPアドレス、MACアドレスの2つとする。本発明の第三の実施の形態においては、データ検索装置100がアクセスリスト240の替わりにARP制御部250を備えた点において、第二の実施の形態と異なる。
なお、本発明の第三の実施の形態において、第二の実施の形態と同一の符号を有する構成要素については、特別な説明がない限り、第二の実施の形態の構成要素と同一であるものとする。
図11に本発明の第三の実施の形態におけるデータ検索装置100の構成を示す。図11を参照すると、本発明の第三の実施の形態におけるデータ検索装置100は、管理部200、検索用ハッシュテーブル300、及びデータ管理テーブル400より構成される。
管理部200は、管理テーブル検索部210、管理テーブル生成部220、管理テーブル削除部230、及びARP制御部250より構成される。ARP制御部250は、ARPプロトコルに従って、ARP情報(IPアドレスとMACアドレスの対応関係)を取得し、データ管理テーブル400上で、ARPテーブルを管理する。
図12に本発明の第三の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す。
検索用ハッシュテーブル300は、データ管理テーブル400が管理する2つのデータ種別(IPアドレス、MACアドレス)毎に存在する。
データ管理テーブル400は、テーブル識別子410、検索チェーン420、及びデータ430により構成される。データ430は、ARP情報となる2つのデータ種別(IPアドレス、MACアドレス)の値を保持する。また、検索チェーン420は、これらの2つのデータ種別毎に存在する。
次に本発明の第三の実施の形態の動作について説明する。
ARP制御部250は、ARPプロトコルに従ったARP情報の生成、検索、削除に伴い、ARPテーブル(データ管理テーブル400)の生成、検索、削除を行う。ARPテーブルの検索の動作については、本発明の第一の実施の形態(図3)と、生成、削除の動作については、本発明の第二の実施の形態(図6、7)と同様となる。
以上により本発明の第三の実施の形態の動作が完了する。
本発明の第三の実施の形態によれば、ARPテーブルの検索を、各検索キーのハッシュテーブルを用いて検索するデータ検索装置において、検索性能を向上できる。その理由は、データ検索装置100がARPテーブルをデータ管理テーブル400上で管理し、管理テーブル検索部210が、第一の実施の形態と同様に、検索用ハッシュテーブル300を参照し、検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400の数が最小のデータ種別を選択し、選択したデータ種別に関して検索キーとハッシュ値が同一のデータ430を記憶するデータ管理テーブル400に対して、検索キーの組み合わせを含むデータ管理テーブル400を検索するためである。
本発明の第一の実施の形態におけるデータ検索装置100の構成を示す図である。 本発明の第一の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す図である。 本発明の第一の実施の形態における管理テーブル検索部210によるデータ管理テーブル400の検索時の処理を示すフローチャートである。 本発明の第二の実施の形態におけるデータ検索装置100の構成を示す図である。 本発明の第二の実施の形態におけるアクセスリスト240の内容を示す図である 本発明の第二の実施の形態における管理テーブル生成部220によるデータ管理テーブル400の生成時の処理を示すフローチャートである。 本発明の第二の実施の形態における管理テーブル削除部230によるデータ管理テーブル400の削除時の処理を示すフローチャートである。 本発明の第二の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す図である。 本発明の第二の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す図(データ管理テーブル400追加時)である。 本発明の第二の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す図(データ管理テーブル400削除時)である。 本発明の第三の実施の形態におけるデータ検索装置100の構成を示す図である。 本発明の第三の実施の形態における検索用ハッシュテーブル300とデータ管理テーブル400の関係の例を示す図である。
符号の説明
100 データ検索装置
200 管理部
210 管理テーブル検索部
220 管理テーブル生成部
230 管理テーブル削除部
240 アクセスリスト
250 ARP制御部
300 検索用ハッシュテーブル
310 インデックス
320 カウンタ
330 検索チェーン
400 データ管理テーブル
410 テーブル識別子
420 検索チェーン
430 データ
440 制御内容
500 フロー制御部

Claims (21)

  1. 複数のデータ種別のデータを記憶するデータ管理テーブルと、
    それぞれの前記データ種別に関して、ハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数を記憶する検索用ハッシュテーブルと、
    前記データ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部と
    を備えたことを特徴とするデータ検索装置。
  2. それぞれの前記データ種別に関して、前記ハッシュ値が同一の前記データを記憶する前記データ管理テーブルは、検索チェーンによって接続されており、
    前記管理テーブル検索部は、前記選択したデータ種別に関して、前記検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項1に記載のデータ検索装置。
  3. 前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
    前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
    前記管理テーブル検索部は、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項2に記載のデータ検索装置。
  4. 前記データ検索装置は、更に、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントする管理テーブル生成部を備えたことを特徴とする請求項1乃至3のいずれかに記載のデータ検索装置。
  5. 前記データ検索装置は、更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントする管理テーブル削除部を備えたことを特徴とする請求項1乃至4のいずれかに記載のデータ検索装置。
  6. 前記データ管理テーブルは、IPパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項1乃至5のいずれかに記載のデータ検索装置。
  7. 前記データ管理テーブルは、ARPテーブルであり、前記データ種別には、IPアドレスとMACアドレスを含むことを特徴とする請求項1乃至5のいずれかに記載のデータ検索装置。
  8. 複数のデータ種別の検索キーの組み合わせの検索に際し、検索用ハッシュテーブルを参照し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択するステップと、
    前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索するステップと
    を含むことを特徴とするデータ検索方法。
  9. 前記データ管理テーブルを検索するステップは、前記選択したデータ種別に関して、検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項8に記載のデータ検索方法。
  10. 前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
    前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
    前記データ種別を選択するステップは、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、
    前記データ管理テーブルを検索するステップは、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項9に記載のデータ検索方法。
  11. 更に、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントするステップを含むことを特徴とする請求項8乃至10のいずれかに記載のデータ検索方法。
  12. 更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントするステップを含むことを特徴とする請求項8乃至11のいずれかに記載のデータ検索方法。
  13. 前記データ管理テーブルは、IPパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項8乃至12のいずれかに記載のデータ検索方法。
  14. 前記データ管理テーブルは、ARPテーブルであり、前記データ種別には、IPアドレスとMACアドレスを含むことを特徴とする請求項8乃至12のいずれかに記載のデータ検索方法。
  15. コンピュータを、
    複数のデータ種別の検索キーの組み合わせの検索に際し、前記検索キーとハッシュ値が同一であるデータを記憶するデータ管理テーブルの数が最小の前記データ種別を選択し、前記選択したデータ種別に関して前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索する管理テーブル検索部と
    して動作させることを特徴とするデータ検索用プログラム。
  16. 前記管理テーブル検索部は、前記選択したデータ種別に関して、検索チェーンによって接続された前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルに対し、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項15に記載のデータ検索用プログラム。
  17. 前記検索用ハッシュテーブルは、データのハッシュ値に対応したインデックスごとに、前記検索チェーンと、前記検索キーとハッシュ値が同一である前記データを記憶する前記データ管理テーブルの数を示すカウンタとを記憶し、
    前記データ管理テーブルは、前記データ種別ごとに、前記検索チェーンを記憶し、
    前記管理テーブル検索部は、前記データ種別の検索キーの組み合わせの検索に際し、それぞれの前記データ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記カウンタの値が最小の前記データ種別を選択し、前記選択したデータ種別に関して、前記検索キーとハッシュ値が同一である前記インデックスに対応する前記検索チェーンによって接続された前記管理テーブルの前記検索チェーンを順次たどりながら、前記検索キーの組み合わせを含む前記データ管理テーブルを検索することを特徴とする請求項16に記載のデータ検索用プログラム。
  18. 更に、コンピュータを、前記データ管理テーブルを生成した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記生成した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をインクリメントする管理テーブル生成部として動作させることを特徴とする請求項15乃至17のいずれかに記載のデータ検索用プログラム。
  19. 更に、前記データ管理テーブルを削除した際に、それぞれの前記データ種別に関して、前記検索用ハッシュテーブルにより管理される、前記削除した前記データ管理テーブルの前記データとハッシュ値が同一の前記データを記憶する前記データ管理テーブルの数をデクリメントする管理テーブル削除部として動作させることを特徴とする請求項15乃至18のいずれかに記載のデータ検索用プログラム。
  20. 前記データ管理テーブルは、IPパケットのフローを識別するためのフロー管理テーブルであり、前記データ種別には、宛先IPアドレス、送信元IPアドレス、宛先ポート、送信元ポートのうちのいずれか一つまたは複数を含むことを特徴とする請求項15乃至19のいずれかに記載のデータ検索用プログラム。
  21. 前記データ管理テーブルは、ARPテーブルであり、前記データ種別には、IPアドレスとMACアドレスを含むことを特徴とする請求項15乃至19のいずれかに記載のデータ検索用プログラム。
JP2007321689A 2007-12-13 2007-12-13 データ検索装置、データ検索方法、及びデータ検索用プログラム Expired - Fee Related JP4888369B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007321689A JP4888369B2 (ja) 2007-12-13 2007-12-13 データ検索装置、データ検索方法、及びデータ検索用プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007321689A JP4888369B2 (ja) 2007-12-13 2007-12-13 データ検索装置、データ検索方法、及びデータ検索用プログラム

Publications (2)

Publication Number Publication Date
JP2009147587A true JP2009147587A (ja) 2009-07-02
JP4888369B2 JP4888369B2 (ja) 2012-02-29

Family

ID=40917707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007321689A Expired - Fee Related JP4888369B2 (ja) 2007-12-13 2007-12-13 データ検索装置、データ検索方法、及びデータ検索用プログラム

Country Status (1)

Country Link
JP (1) JP4888369B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法
JP2016171449A (ja) * 2015-03-12 2016-09-23 株式会社東芝 ホワイトリスト作成装置
WO2017067364A1 (zh) * 2015-10-21 2017-04-27 北京瀚思安信科技有限公司 确定文本串公共子序列的方法和设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6118122B2 (ja) 2013-02-08 2017-04-19 キヤノン株式会社 通信装置及びその制御方法、プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法
JP2016171449A (ja) * 2015-03-12 2016-09-23 株式会社東芝 ホワイトリスト作成装置
WO2017067364A1 (zh) * 2015-10-21 2017-04-27 北京瀚思安信科技有限公司 确定文本串公共子序列的方法和设备

Also Published As

Publication number Publication date
JP4888369B2 (ja) 2012-02-29

Similar Documents

Publication Publication Date Title
US10257092B2 (en) CCN routing using hardware-assisted hash tables
US7110540B2 (en) Multi-pass hierarchical pattern matching
WO2011004846A1 (ja) 情報検索システム、情報管理装置、情報検索方法、情報管理方法、及び、記録媒体
JP2019504412A (ja) ショートリンクの処理方法、デバイス、及びサーバ
CN107368527B (zh) 基于数据流的多属性索引方法
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
JP5960863B1 (ja) 検索装置、検索方法、プログラム、及び記録媒体
EP1156432A2 (en) Apparatus, method, data structure and recording medium for data retrieval by accessing retrieval tables
Suga et al. Secure keyword search using bloom filter with specified character positions
Xiao et al. Using parallel bloom filters for multiattribute representation on network services
JP4888369B2 (ja) データ検索装置、データ検索方法、及びデータ検索用プログラム
KR20170067804A (ko) 라우팅 테이블의 유지 방법, 장치 및 저장매체
Li et al. An improved trie-based name lookup scheme for named data networking
US20230041395A1 (en) Method and Device for Processing Routing Table Entries
JP2005284608A (ja) データ検索システム、データ検索方法
CN117171161A (zh) 数据查询方法及装置
CN113824814B (zh) 一种转发表的地址匹配方法、装置、网络设备及介质
US10516613B1 (en) Network device storage of incremental prefix trees
KR100720190B1 (ko) 임의적인 ip 범위 구성에 의한 고속의 규칙 검색
JP5983333B2 (ja) 検索処理方法、データ生成方法及び情報処理装置
Kniesburges et al. Hashed Patricia Trie: Efficient longest prefix matching in peer-to-peer systems
Bahrambeigy et al. Bloom-Bird: A scalable open source router based on Bloom filter
Ahmadi et al. A memory-optimized Bloom filter using an additional hashing function
US9444731B2 (en) Methods and systems for data packet routing
JP6205463B2 (ja) 検索装置、検索方法、プログラム、及び記録媒体

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20090513

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101112

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111115

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111128

R150 Certificate of patent or registration of utility model

Ref document number: 4888369

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees