JP5904045B2 - 情報処理装置および情報処理プログラム - Google Patents

情報処理装置および情報処理プログラム Download PDF

Info

Publication number
JP5904045B2
JP5904045B2 JP2012163716A JP2012163716A JP5904045B2 JP 5904045 B2 JP5904045 B2 JP 5904045B2 JP 2012163716 A JP2012163716 A JP 2012163716A JP 2012163716 A JP2012163716 A JP 2012163716A JP 5904045 B2 JP5904045 B2 JP 5904045B2
Authority
JP
Japan
Prior art keywords
search
character string
partial
input character
information processing
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.)
Expired - Fee Related
Application number
JP2012163716A
Other languages
English (en)
Other versions
JP2014026312A (ja
Inventor
三好 秀和
秀和 三好
勲 後藤
勲 後藤
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.)
Sumitomo Electric Industries Ltd
Original Assignee
Sumitomo Electric Industries Ltd
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 Sumitomo Electric Industries Ltd filed Critical Sumitomo Electric Industries Ltd
Priority to JP2012163716A priority Critical patent/JP5904045B2/ja
Publication of JP2014026312A publication Critical patent/JP2014026312A/ja
Application granted granted Critical
Publication of JP5904045B2 publication Critical patent/JP5904045B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、処理対象の入力文字列に対して予め定められた複数のパターンのいずれかと一致する部分文字列を探索する情報処理装置および情報処理プログラムに関する。
従来から、予め定められたパターンと一致する部分文字列を入力文字列(データ列)から探索する処理(以下「文字列探索処理」とも称す。)は様々な分野に応用されている。このような文字列探索処理の実装形態(アルゴリズム)については種々の方法が提案されている。その一つのアルゴリズムとして、非特許文献1に開示されるエイホ−コラシック法(Aho-Corasick algorithm:以下「AC法」とも称す。)がある。このAC法は、入力文字列に対して、予め定められたパターンの各要素を順次探索する辞書式マッチングアルゴリズムである。
Alfred V. Aho and Margaret J. Corasick, Bell Labs, "Efficient String Matching: An Aid to Bibliographic Search", Communications of the ACM, Volume 18 Number 6, June 1975
上述のAC法は、他の文字列探索処理のアルゴリズムに比較して高速であるが、より大量の文字列をより高速に処理するためには、さらなる改良が必要である。
そこで、本発明は、かかる問題を解決するためになされたものであり、より高速な文字列探索処理を実現できる情報処理装置および情報処理プログラムを提供することである。
本発明のある局面に従えば、処理対象の入力文字列に対して、予め定められた複数のパターンのいずれかと一致する部分文字列を探索する情報処理装置が提供される。情報処理装置は、複数のパターンを順序付けされたノードで示す木構造の探索ルールを保持する記憶部と、探索ルールに含まれるルートおよび一部のノードからなる部分探索ルールを用いて、入力文字列の異なる部分集合に対する探索処理をそれぞれ実行する第1の処理部と、第1の処理部による探索結果を利用しつつ、探索ルールを用いて入力文字列に対する探索処理を実行する第2の処理部とを含む。
好ましくは、第1の処理部は、隣接する部分集合の間では少なくとも予め定められた文字数を重複させつつ、入力文字列に対して複数の部分集合を設定する手段と、複数の部分集合の各々に対する部分探索ルールを用いた探索処理を並列実行する手段とを含む。
さらに好ましくは、第2の処理部は、第1の処理部による探索処理において、その部分集合のいずれについても部分探索ルールと一致しなかった入力文字列について、探索ルールを用いた探索処理の対象から除外する。
好ましくは、第1の処理部は、入力文字列に対して設定される部分集合の数と少なくとも同数の処理要素を含む。
好ましくは、第2の処理部は、第1の処理部による探索処理において、部分探索ルールと一致した部分文字列の位置を基準として、探索ルールを用いた探索処理を実行する。
好ましくは、第2の処理部は、第1の処理部による部分探索ルールと一致しなかった入力文字列の部分について、探索ルールを用いた探索処理をスキップする。
好ましくは、入力文字列は、ネットワークを転送されるパケットデータを含む。
本発明の別の局面に従えば、処理対象の入力文字列に対して、探索ルールによって予め定められた複数のパターン、のいずれかと一致する部分文字列を探索する処理情報処理プログラムが提供される。探索ルールは、複数のパターンを順序付けされたノードで示す木構造を有する。処理情報処理プログラムは、コンピュータに、探索ルールに含まれるルートおよび一部のノードからなる部分探索ルールを用いて、入力文字列の異なる部分集合に対する第1の探索処理をそれぞれ実行するステップと、第1の探索処理による探索結果を利用しつつ、探索ルールを用いて入力文字列に対する探索処理を実行するステップとを実行させる。
本発明によれば、より高速な文字列探索処理を実現できる。
本発明の実施の形態に従う情報処理装置を含むネットワークシステム1の全体構成を示す模式図である。 本発明の実施の形態に従う情報処理装置の機能構成を示す模式図である。 本発明の関連技術に従う探索ルールの一例を示す図である。 本発明の関連技術に従う探索ルールを用いた文字列探索処理の動作例を説明するための図である。 本発明の実施の形態に従う情報処理装置の装置構成を示す模式図である。 本発明の実施の形態に従う文字列探索処理のアルゴリズムを説明するための図である。 本発明の実施の形態に従う文字列探索処理において利用される探索ルールおよび部分探索ルールの一例を示す図である。 本発明の実施の形態に従う文字列探索処理の前処理を説明するための図である。 本発明の実施の形態に従う文字列探索処理の処理手順を示すフローチャートである。 本発明の実施の形態の変形例に従う並列化を説明するための図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
本発明に係る情報処理装置は、様々な分野における文字列探索処理に適用可能であるが、以下に説明する実施の形態においては、ネットワーク上を転送されるパケットデータに対する処理に文字列探索処理を応用した例を説明する。
<A.全体構成>
図1は、本発明の実施の形態に従う情報処理装置10を含むネットワークシステム1の全体構成を示す模式図である。図1を参照して、ネットワークシステム1は、ネットワーク2と、ネットワーク2に接続された情報処理装置10と、情報処理装置10に接続されたパーソナルコンピュータ3およびサーバ装置4とを含む。
情報処理装置10は、典型的には、パーソナルコンピュータ3およびサーバ装置4がネットワーク2に接続された何らかの装置との間でやり取りするパケットデータを解析する。このパケットデータの解析処理としては、(1)コンピュータウィルスの混入やスパムメールの排除といったセキュリティ機能、(2)ネットワーク2のいずれかにおいて発生している異常の検出およびその位置、原因の特定といったネットワーク障害管理機能、(3)ファイアウォール、フィルタリング(ペアレントコントロール)、不正アクセス防御といったアクセス制御機能、ならびに、(4)優先制御、QoS(Quality of Service)制御、シェイピングといったトラフィック管理機能、などが挙げられる。
これらのパケット解析では、入来したパケットデータに予め定められたパターンと一致する部分文字列が含まれているか否かに基づいて、それぞれのパケットデータに対して、何らかの処理が必要であるか、および/または、どのような処理が必要であるかが判断される。
<B.情報処理装置の機能構成>
次に、情報処理装置10の機能構成について説明する。図2は、本発明の実施の形態に従う情報処理装置10の機能構成を示す模式図である。
図2を参照して、情報処理装置10は、その機能構成として、パケット分類エンジン12と、分類定義記憶部14と、パケット解析エンジン16と、解析定義記憶部18とを含む。
パケット分類エンジン12は、分類定義記憶部14に記憶されている分類定義ファイル14aに記述されている分類定義に従って、入来したパケットデータを分類する。分類定義は、種別毎に含まれるパターン(文字列)を定義する。すなわち、入来したパケットデータが予め定められた複数のパターンのいずれかと一致する部分文字列を含む場合には、対応する分類(種別)の識別情報が付与された後、パケット解析エンジン16へ転送される。これに対して、入来したパケットデータが予め定められた複数のパターンのいずれとも一致(部分一致)しない場合には、パケット解析エンジン16へ転送されることなく、廃棄される。
より具体的な一例として、入来したパケットデータのヘッダ情報を用いて分類が行なわれる。例えば、同一の送信先および/または送信元を有する一連のパケットデータを同一のグループに分類するといった具合である。
パケット分類エンジン12は、後述するような文字列探索処理のアルゴリズムを利用して、入来したパケットデータを分類する。
パケット解析エンジン16は、解析定義記憶部18に記憶されている解析定義ファイル18aに記述されている解析定義に従って、分類されたパケットデータの別にその内容を解析する。この解析された内容は、解析結果として出力される。解析定義ファイル18aは、上述のパケットデータの解析処理を実現するための情報を含む。
<C.関連技術>
本実施の形態に従う文字列探索処理のアルゴリズムについて説明する前に、まず、本発明の関連技術について説明する。より具体的には、主としてAC法について説明する。
AC法は、処理対象の入力文字列に対して、予め定められた複数のパターンのいずれかと一致する部分文字列を探索する辞書式マッチングアルゴリズムである。より具体的には、予め定められた複数のパターンを順序付けされたノードで示す木構造の探索ルールが使用される。この探索ルールは、順序付き木構造の一種であるトライ(Trie)木構造を用いるとともに、ノードのリンク順序を利用して、探索対象のパターンを定義する。
図3は、本発明の関連技術に従う探索ルール100の一例を示す図である。図3(a)は、探索ルールをオートマトン表現で示し、図3(b)は、図3(a)の探索ルールにおけるfailure遷移を示す。図3において、丸印の中に記載の数字は遷移の状態値を示す。
図3(a)を参照して、探索ルール100は、ルート1002と、ルート1002に繋がる複数のノード1004を含む。ノード間の矢印に記載の文字が探索対象の文字列の各要素を示す。すなわち、図3(a)の探索ルール100は、{ab},{bab},{bd}の3つを探索対象のパターンとして定義する。
AC法では、処理対象の入力文字列に含まれる各要素との一致/不一致に応じて、探索ルール100に定義された状態値を順次遷移させる。そして、予め定められた文字列を示すノード(以下、対象ノード)まで遷移できた場合に、対応するパターンと一致する部分文字列が含まれていると判断できる。
例えば、入力文字列に文字列「ab」が含まれている場合には、まず文字「a」が発見されて、ルート(状態値「0」)から文字「a」に関連付けられた状態値「1」のノードへ遷移する。続いて文字「b」が発見されると、状態値「1」のノードから文字「b」に関連付けられた状態値「2」のノードへ遷移する。この状態値「2」のノードは対象ノードであるので、入力文字列にパターン{ab}が含まれていると判断できる。
このようにして、予め定められた複数のパターンのいずれかと一致する部分文字列が入力文字列から順次探索される。
実際の探索ルール100には、予め定められたパターンとは一致しない場合に、他のノードまたはルートへ遷移するためのリンクが設定される。より具体的には、図3(b)に示すようなfailure遷移が定義される(図3(b)において破線で示す矢印)。
例えば、入力文字列に文字列「aa」が含まれている場合には、まず文字「a」が発見されて、ルート(状態値「0」)から文字「a」に関連付けられた状態値「1」のノードへ遷移する。続いて文字「a」が発見されると、状態値「1」のノードへは遷移せず、ルートへ遷移する。すなわち、いずれのパターンとも一致しないと判断できる。
次に、図3に示す探索ルール100を用いた文字列探索処理の動作例について説明する。図4は、本発明の関連技術に従う探索ルール100を用いた文字列探索処理の動作例を説明するための図である。図4(a)は、入力文字列の一例を示し、図4(b)は、図4(a)の入力文字列に対応する状態遷移の一例を示し、図4(c)は、図4(b)の状態遷移を時系列に示す。上述したように、{ab},{bab},{bd}の3つが探索対象のパターンとして予め定められているとする。
図4(a)に示す例では、探索対象のパターン{ab}と一致する部分文字列が入力文字列の先頭から1文字目および2文字目に存在し、探索対象のパターン{bab}と一致する部分文字列が入力文字列の先頭から4文字目〜6文字目に存在し、探索対象のパターン{bb}と一致する部分文字列が入力文字列の先頭から6文字目および7文字目に存在するとする。
図4(b)を参照して、入力文字列の1文字目が文字「a」であるので、ルート(状態値「0」)から文字「a」に関連付けられた状態値「1」のノードへ遷移する(図4(b)のステップ(1))。続いて、入力文字列の2文字目が文字「b」であるので、状態値「1」のノードから文字「b」に関連付けられた状態値「2」のノードへ遷移する(図4(b)のステップ(2))。この状態値「2」のノードは対象ノードであるので、当該ノードに到達するまでのノードに関連付けられたパターン{ab}が入力文字列に含まれていると判断される。
状態値「2」のノードは対象ノードであるので、入力文字列の3文字目が入力されると、状態値「2」のノードから状態値「3」のノードへfailure遷移する(図4(b)のステップ(3))。ここで、入力文字列の3文字目が文字「c」であるので、状態値「3」のノードからルート(状態値「0」)へさらにfailure遷移する(図4(b)のステップ(4))。
続いて、入力文字列の4文字目が文字「b」であるので、ルート(状態値「0」)から文字「b」に関連付けられた状態値「3」のノードへ遷移する(図4(b)のステップ(5))。続いて、入力文字列の5文字目が文字「a」であるので、状態値「3」のノードから文字「a」に関連付けられた状態値「4」のノードへ遷移する(図4(b)のステップ(6))。さらに、入力文字列の6文字目が文字「b」であるので、状態値「4」のノードから文字「b」に関連付けられた状態値「5」のノードへ遷移する(図4(b)のステップ(7))。この状態値「5」のノードは対象ノードであるので、当該ノードに到達するまでのノードに関連付けられたパターン{bab}が入力文字列に含まれていると判断される。
状態値「5」のノードは対象ノードであるので、入力文字列の7文字目が入力されると、状態値「5」のノードから状態値「2」のノードへfailure遷移する(図4(b)のステップ(8))。さらに、状態値「2」のノードは対象ノードであるので、状態値「2」のノードから状態値「3」のノードへfailure遷移する(図4(b)のステップ(9))。ここで、入力文字列の7文字目が文字「d」であるので、状態値「3」のノードから文字「d」に関連付けられた状態値「6」のノードへ遷移する(図4(b)のステップ(10))。この状態値「6」のノードは対象ノードであるので、当該ノードに到達するまでのノードに関連付けられたパターン{bd}が入力文字列に含まれていると判断される。
状態値「6」のノードは対象ノードであるので、入力文字列の8文字目が入力されると、状態値「6」のノードからルート(状態値「0」)へfailure遷移する(図4(b)のステップ(11))。ここで、入力文字列の8文字目が文字「e」であるので、ルート(状態値「0」)からの遷移は生じない。
このような一連の遷移動作によって、図4(c)に示すように、予め定められた複数のパターンのいずれかと一致する部分文字列が探索される。図4(c)において、三角印(△)は、パターンと一致する部分文字列の検出位置を示す。
上述のように、AC法では、予め定められた複数のパターンのマッチングをより高速に一斉探索できる。
しかしながら、AC法は、文字列探索処理を比較的高速に実行できるものの、より大量の文字列をより高速に処理するためには、さらなる改良が必要である。例えば、ネットワーク上を転送されるパケットデータに対する解析処理に適用しようとすれば、リアルタイム性をより高める必要がある。そこで、本実施の形態に従う情報処理装置は、以下に説明する文字列探索処理のアルゴリズムを採用する。
<D.情報処理装置の装置構成>
まず、本実施の形態に従う情報処理装置10の装置構成について説明する。情報処理装置10は、処理対象の入力文字列に対して、予め定められた複数のパターンのいずれかと一致する部分文字列を探索するコンピュータである。以下の説明においては、一例として、処理対象の入力文字列は、ネットワーク上を転送されるパケットデータであるとする。
図5は、本発明の実施の形態に従う情報処理装置10の装置構成を示す模式図である。図5を参照して、情報処理装置10は、受信部(Rx)102と、受信キュー104と、メイン処理部110と、スイッチ140と、解析処理部142と、送信部(Tx)144とを含む。
受信部102は、ネットワーク2に転送されるパケットを受信する。より具体的には、受信部102は、ネットワーク2上の信号をデータ列に復調する回路、復調されたデータ列をパケットへデコードする回路、受信できなかったデータ列の再送などを制御する回路を含む。
受信部102で受信されたパケットは、受信キュー104へ順次記憶される。受信キュー104は、受信されたパケットを一時的に記憶するバッファであり、FIFO(First In First Out)形式のメモリが利用される。
メイン処理部110は、本実施の形態に従う文字列探索処理を実行する演算主体である。より具体的には、メイン処理部110は、主メモリ112と、フラッシュメモリ114と、前処理部120と、後処理部130とを含む。これらのコンポーネントは、バス118を介して互いにデータ通信可能に接続される。
主メモリ112は、前処理部120および後処理部130でのプログラムの実行に必要なデータを一時的に記憶するワーキングメモリとして機能する。より具体的には、主メモリ112には、プロセッサで実行されるプログラムが展開されるとともに、プログラムの実行に必要な各種データが一時的に記憶される。
フラッシュメモリ114は、各種データを不揮発的に記憶する。典型的に、フラッシュメモリ114は、本実施の形態に従う文字列探索処理を実現するための情報処理プログラム116、探索対象のパターンを定義する探索ルール150、および探索ルール150の部分集合である部分探索ルール151を記憶する。すなわち、フラッシュメモリ114は、複数のパターンを順序付けされたノードで示す木構造の探索ルール150と、探索ルール150に含まれるルートおよび一部のノードからなる部分探索ルール151を保持する。
情報処理プログラム116は、任意の方法で、情報処理装置10へインストールされる。より具体的には、情報処理装置10は、各種の記録媒体に格納された情報処理プログラム116を対応する機器で読み取り、その読み取った情報処理プログラム116をフラッシュメモリ114へ記憶する。このような記録媒体としては、一例として、Blu−ray(登録商標)ディスク、DVD(Digital Versatile Disc)、CD(Compact Disk)、MD(Mini Disk)といった光学記録媒体、MO(Magneto-Optical)ディスクといった光磁気記録媒体、フレキシブルディスクやカセットテープといった磁気記録媒体、IC(Integrated Circuit)メモリといった半導体記録媒体などを用いることができる。
あるいは、ネットワークを通じて情報処理プログラム116を提供してもよい。具体的には、ネットワーク上に設けられたサーバ装置に情報処理プログラム116を保持させるとともに、情報処理装置10からの要求に応答して、情報処理プログラム116をダウンロードする。
探索ルール150および部分探索ルール151についても、情報処理プログラム116と同様の方法でインストールまたは更新することができる。情報処理プログラム116、探索ルール150および部分探索ルール151は、単一のパッケージとして記録媒体に格納した上で配布してもよいし、それぞれを単独に配布してもよい。あるいは、探索ルール150のみを流通させ、部分探索ルール151については探索ルール150から動的に生成してもよい。
再度図2を参照して、前処理部120は、入力文字列に対して、部分探索ルール151を用いた探索処理を並列的に実行する。より具体的には、前処理部120は、前処理用の複数の処理要素(Processing Element)121,122,123,124と、処理要素121,122,123,124にそれぞれ関連付けられた前処理用の複数のメモリ125,126,127,128とを含む。図5には、一例として、4つの処理要素を含む構成を例示するが、この処理要素の数については、これに限られることなく、要求される処理速度などに応じて適宜設計すればよい。複数の処理要素を実装する形態としては、複数のコアを含むプロセッサを1または複数実装する形態、単一のコアからなるプロセッサを複数実装する形態、両形態を適宜組み合わせた形態などが考えられる。
後処理部130は、入力文字列に対して、探索ルール150を用いた探索処理を実行する。具体的には、後処理部130は、後処理用の処理要素131と、処理要素131に関連付けられた後処理用のメモリ132とを含む。
スイッチ140は、メイン処理部110による文字列探索処理の結果に基づいて、入来したパケットのうち、予め定められた複数のパターンのいずれかと一致するものについては、解析処理部142へ転送する一方で、いずれのパターンとも一致しないパケットは廃棄するかネットワークへ送る。
解析処理部142は、パケットに含まれるパターンに基づいて、各種の解析処理を実行する。文字列探索で解析が足りる場合、解析処理部142はなくともよい。
送信部144は、解析処理部142による解析結果および/またはパケット自体を送信する。より具体的には、送信部144は、送信すべきデータをエンコードする回路、エンコードされたデータを変調してネットワーク2へ送信する回路などを含む。
<E.アルゴリズム>
次に、本実施の形態に従う文字列探索処理のアルゴリズムについて説明する。図6は、本発明の実施の形態に従う文字列探索処理のアルゴリズムを説明するための図である。図6を参照して、本実施に従う文字列探索処理では、前処理と後処理とによって予め定められた複数のパターンとの一致が判断される。
概略すると、本実施の形態に従う文字列探索処理では、入力文字列200を複数の部分集合である部分入力文字列201,202,203,204に分割した上で、本来の探索ルール150ではなく、その部分集合である部分探索ルール151を用いて、これらの部分入力文字列201,202,203,204に対する簡易的な探索が並列的に実行される(前処理)。そして、その簡易的な探索の結果に応じて、入力文字列200の必要な部分に対して、探索ルール150を用いた完全な探索が実行される(後処理)。すなわち、多くのリソースを要する探索ルール150を用いた完全な探索を、入力文字列200のうち必要な部分に対してのみ実行するので、探索効率を高めることができる。
なお、図6には、入力文字列200を4分割する例を示すが、これに限られることなく任意の数に分割した上で探索処理を並列実行すればよい。但し、前処理部120(図5)は、入力文字列200に対して設定される部分集合の数と少なくとも同数の処理要素を含むことが好ましい。言い換えれば、前処理部120を構成する処理要素の数以下となるように、入力文字列200に対して部分集合が設定される。
[e1:前処理]
前処理では、探索ルール150に含まれるルートおよび一部のノードからなる部分探索ルール151を用いて、入力文字列200の異なる部分集合に対する探索処理がそれぞれ実行される。より具体的には、前処理は、隣接する部分集合の間では少なくとも予め定められた文字数を重複させつつ、入力文字列200に対して複数の部分入力文字列201,202,203,204を設定する処理と、複数の部分入力文字列201,202,203,204の各々に対する部分探索ルール151を用いた探索処理を並列実行する処理とを含む。
図7は、本発明の実施の形態に従う文字列探索処理において利用される探索ルール150および部分探索ルール151の一例を示す図である。図7(a)は、探索ルール150の一例を示し、図7(b)は、図7(a)に示す探索ルール150に対応する部分探索ルール151の一例を示す。なお、説明の便宜上、図7には最大で3文字(3バイト)のパターンを示すが、パケットデータを解析するような場合には、各々がたとえば50から2000文字(50から2000バイト)程度のパターンが用いられる。
図7(a)の探索ルール150は、{aba},{bab},{bdb}の3つを探索対象のパターンとして定義する。これに対して、図7(b)の部分探索ルール151は、探索ルール150に含まれるルートおよび一部のノードからなる。図7(b)に示す例では、部分探索ルール151は、{ab},{ba},{bd}の3つを探索対象のパターンとして定義する。すなわち、部分探索ルール151が定義するそれぞれのパターンは、探索ルール150の対応するそれぞれのパターンの部分集合となっている。
前処理部120の処理要素121,122,123,124(図5)の各々は、図6に示すように、部分探索ルール151を用いて、それぞれに割当てられた入力文字列200の部分入力文字列201,202,203,204に対して探索処理を実行する。この探索処理において、部分探索ルール151および割当てられた部分入力文字列は、処理要素121,122,123,124に関連付けられたメモリ125,126,127,128(図5)に一時的に記憶される。
前処理部120の処理要素121,122,123,124による部分探索ルール151を用いた並列的な探索処理の結果についても、それぞれに関連付けられたメモリ125,126,127,128に一時的に記憶される。前処理における探索結果は、後処理で利用されるように、出力される。
図8は、本発明の実施の形態に従う文字列探索処理の前処理を説明するための図である。図8(a)は、文字列探索処理の前処理における探索処理の一例を示し、図8(b)は、文字列探索処理の前処理における探索結果の出力例を示す。
図8(a)に示すように、前処理では、部分入力文字列の別に、部分探索ルール151を用いた探索処理が実行される。図8(a)に示す例では、部分入力文字列201は、部分探索ルール151のパターン{ab}と一致する部分文字列を含む。前処理において、このパターン{ab}と一致する部分文字列が検出されると、部分入力文字列201についての探索結果としてその検出された位置が出力される。後処理では、入力文字列200の全体が探索対象となるので、部分入力文字列201,202,203,204の各々の探索結果は、部分入力文字列自身を特定するための情報を含むことが好ましい。
例えば、図8(b)に示すように、部分入力文字列201,202,203,204の各々の探索結果は、当該部分入力文字列の開始位置を示すStartAddrと、当該部分入力文字列の終了位置を示すEndAddrと、いずれかのパターンと一致した部分文字列の検出位置を示すMatchAddrとを含む。
なお、いずれのパターンとも一致しなかった場合には、MatchAddrとしては、無効値(null値)を応答してもよい。また、同一の部分入力文字列に、いずれかのパターンと一致する部分文字列が複数検出される場合もある。このような場合には、検出結果として、最初に検出された部分文字列のみを出力してもよいし、すべての部分文字列を出力してもよい。最初に検出された部分文字列のみを出力する場合には、いずれかのパターンとの一致が検出された時点で、以後の探索処理を中止してもよい。
さらに、探索結果として、一致したパターンを識別するための情報を追加的に出力してもよい。例えば、図8(b)に示すオートマトン表現における状態値、または検出されたパターン({ab}といった値そのもの)などを出力してもよい。このような一致したパターンを識別するための情報を用いることで、後処理における探索処理をより効率化できる。
ここで、入力文字列200に対して設定される部分入力文字列201,202,203,204の間でオーバラップ(重複)させる文字数について説明する。前処理では、それぞれの部分入力文字列に対して、部分探索ルール151を用いた探索処理が互いに独立して並列実行される。そのため、隣接する部分入力文字列の間にまたがって存在する部分文字列についてパターンとの一致を検出できない可能性がある。そこで、入力文字列200に対して部分入力文字列を設定する場合には、前処理に用いる部分集合の文字数N−1(Nは任意であるが、探索ルール150に対して大き過ぎない数)だけオーバラップさせることができる。このように部分入力文字列を設定することで、前処理での探索処理をより確実に実行することができる。
[e2:後処理]
後処理では、前処理による探索結果を利用しつつ、探索ルール150を用いて入力文字列200に対する探索処理が実行される。部分探索ルール151を用いた探索処理においていずれかのパターン(探索ルール150が定義するパターンの部分集合)と一致する部分文字列を含む部分入力文字列については、探索ルール150が定義するパターンと一致する部分文字列を含む可能性がある。言い換えれば、探索ルール150の部分集合である部分探索ルール151を用いた探索処理においていずれの部分パターンとも一致しなかった部分入力文字列については、探索ルール150が定義する完全パターンと一致する部分文字列を含まないと判断できる。また、部分探索ルール151を用いた探索処理において、部分探索ルール151が定義する部分パターンと一致する部分文字列が検出された部分入力文字列については、その検出された位置より前には、探索ルール150が定義する完全パターンと一致する部分文字列が存在しないと判断できる。
そこで、本実施の形態に従う後処理においては、主として、前処理における探索結果を以下のような点で利用することで、探索効率を高める。
(1) 後処理では、前処理での探索処理において、その部分集合である部分入力文字列201,202,203,204のいずれについても部分探索ルール151とは一致しなかった入力文字列200については、探索ルール150を用いた探索処理(完全な探索)の対象から除外する。
(2) 後処理では、前処理での探索処理において、部分探索ルール151と一致した部分文字列の位置を参照して、探索ルール150を用いた探索処理(完全な探索)を実行する。言い換えれば、後処理では、前処理部での探索処理において、部分探索ルール151と一致しなかった入力文字列200の部分について、探索ルール150を用いた探索処理をスキップする。
なお、これらの利用方法のうち、すべてを採用してもよいし、一方のみを採用するものであってもよい。いずれの場合であっても、探索効率を高めることができる。
上記の(1)の具体的な実装形態としては、図8(b)に示すようなそれぞれの部分入力文字列についての探索結果に含まれるMatchAddrの値を参照し、すべてのMatchAddrが無効値を有する場合には、当該入力文字列に対する後処理は行なわれず、予め定められた複数のパターンを含まないという結果を出力する。
また、上記の(2)の具体的な実装形態としては、図6に示すように、状態が0(図3のルート1002)の場合は、探索ルール151が定義するいずれかの部分パターンと一致すると判断された部分文字列の検出位置(△印)より前の部分、すなわち部分入力文字列201,202,203,204の符号211,212,213,214の部分に対する探索処理をそれぞれスキップし、それぞれの検出位置より後の部分、すなわち部分入力文字列201,202,203の符号221,222,223の部分に対してのみ探索ルール150を用いた探索処理をそれぞれ実行する。なお、図6に示す例において、部分入力文字列204では、部分探索ルール151が定義するいずれかの部分パターンと一致する部分文字列は検出されなかったものとする。
後処理部130の処理要素131は、入力文字列の符号221,222,223に対応する部分についてのみ探索処理(完全な探索)を実行するので、入力文字列200のすべてについて探索処理(完全な探索)を実行する場合に比較して、その処理時間および処理量を低減できる。
前処理において、部分探索ルール151による探索結果として、一致したパターンを識別するための情報が出力される場合には、探索ルール150を用いた探索処理(完全な探索)を初期状態(ルート)から開始するのではなく、部分探索ルール151を用いた探索処理によって既に検出されている状態値から開始してもよい。
<F.処理手順>
次に、本実施の形態に従う文字列探索処理の処理手順について説明する。図9は、本発明の実施の形態に従う文字列探索処理の処理手順を示すフローチャートである。メイン処理部110の前処理部120および後処理部130が情報処理プログラム116(図5)を実行することで、前処理部120および後処理部130が図9に示す各ステップを実行する。なお、図9に示すステップの一部または全部を専用のハードウェアで実現してもよい。
図9を参照して、メイン処理部110は、新たな処理対象の入力文字列200を受信したか否かを判断する(ステップS100)。新たな処理対象の入力文字列200を受信していなければ(ステップS100においてNOの場合)、ステップS100以下の処理が繰り返される。
新たな処理対象の入力文字列200を受信していれば(ステップS100においてYESの場合)、メイン処理部110(典型的には、前処理部120の処理要素121)は、受信した入力文字列200に対して複数の部分入力文字列201,202,203,204を設定する(ステップS102)。上述したように、部分入力文字列201,202,203,204は、互いに重複させて設定される。
続いて、前処理部120の処理要素121,122,123,124は、部分探索ルール151を用いて、それぞれに割当てられた入力文字列200の部分入力文字列201,202,203,204に対して探索処理を実行する(ステップS104)。なお、部分入力文字列201,202,203,204は、処理要素121,122,123,124に関連付けられたメモリ125,126,127,128にそれぞれ格納される。続いて、前処理部120の処理要素121,122,123,124は、それぞれの探索結果を格納する(ステップS106)。ここで、前処理部120の処理要素121,122,123,124の各々は、割当てられた部分入力文字列から部分探索ルール151で定義されるいずれかのパターンと一致する部分文字列を検出すると、その時点で、探索処理を終了してもよい。探索結果としては、上述したように、割当てられた部分入力文字列の開始位置(StartAddr)および終了位置(EndAddr)と、いずれかのパターンと一致した部分文字列の検出位置(MatchAddr)とを含む。
メイン処理部110(典型的には、後処理部130の処理要素131)は、前処理部120の処理要素121,122,123,124からのそれぞれの探索結果を集約し、部分探索ルール151が定義するいずれかのパターンと一致する部分文字列が部分入力文字列201,202,203,204のいずれかに含まれていたか否かを判断する(ステップS110)。すべての部分入力文字列201,202,203,204において部分探索ルール151が定義するパターンと一致する部分文字列が検出されなかった場合(ステップS110においてNOの場合)には、後処理はスキップされる。そして、メイン処理部110は、探索ルール150が定義する複数のパターンのいずれとも一致しないという探索結果を出力する(ステップS112)。そして、処理は終了する。
これに対して、部分入力文字列201,202,203,204のいずれかにおいて、部分探索ルール151が定義するパターンと一致する部分文字列が検出された場合(ステップS110においてYESの場合)には、後処理部130の処理要素131は、前処理の検出結果を集約して、後処理の探索範囲を決定する(ステップS114)。すなわち、状態が0(図3のルート1002)の場合は、部分入力文字列201,202,203,204のそれぞれについての部分文字列の検出位置から終了位置までの区間が、後処理の探索範囲として決定される。なお、部分探索ルールにつき検出された場合、その時点ですべての並列処理をとめることができる。
続いて、後処理部130の処理要素131は、探索ルール150を用いて、ステップS114において決定された最初の探索範囲に対して探索処理を実行する(ステップS116)。そして、後処理部130の処理要素131は、探索ルール150を用いた探索(完全探索)の結果を格納する(ステップS118)。
続いて、後処理部130の処理要素131は、ステップS114において決定されたすべての探索範囲について探索処理が完了しているか否かを判断する(ステップS120)。探索処理が完了していない探索範囲がある場合(ステップS120においてNOの場合)には、次の探索範囲を探索対象に設定し(ステップS122)、ステップS116以下の処理を繰り返す。
これに対して、すべての探索処理について探索処理が完了している場合(ステップS120においてYESの場合)には、ステップS118において格納された探索結果を出力する(ステップS124)。そして、処理は終了する。
<G.利点>
本実施の形態に従う文字列探索処理のアルゴリズムによれば、前処理において入力文字列の部分集合(部分入力文字列)に対して、探索ルールの部分集合(部分探索ルール)を用いて簡易的な探索が並列的に実行される。そして、この前処理によって、いずれのパターンとも一致しないことが明らかな入力文字列については、探索ルールを用いた探索処理(完全な探索)の対象から除外されるとともに、いずれかのパターンと一致する可能性がある入力文字列については、その可能性がある範囲のみが完全な探索(後処理)の対象となる。
このようなアルゴリズムを採用することで、関連技術として説明した文字列探索処理のアルゴリズムに比較して、より高速な探索を実現できる。これによって、専用のハードウェア回路を用いることなく、汎用的なプロセッサを用いた構成を採用したとしても、ネットワーク上を転送されるパケットに対する解析処理といった、リアルタイム性が要求される装置にも適用可能である。
ここで、本実施の形態に従う文字列探索処理のアルゴリズムによる処理時間を関連技術として説明したアルゴリズムと比較しつつ説明する。
関連技術として説明したアルゴリズムは、本実施の形態における後処理として実行される探索ルール150を用いた完全な探索を行なうので、その処理時間は、以下の(1)式のように表すことができる。
処理時間=Tafter …(1)
これに対して、本実施の形態に従う文字列探索処理のアルゴリズムによる処理時間は、以下の(2)式のように表すことができる。
処理時間=Tpre+E×Tafter×R …(2)
但し、
Tpre:前処理(部分探索)に要する時間
Tafter:後処理(完全探索)に要する時間
E:前処理による後処理における処理量の削減効果
R:前処理において部分入力文字列がいずれかのパターンと一致する確率
ここで、前処理では、部分入力文字列に対する部分探索ルールを用いた部分探索が並列実行されるので、一般的には、以下の(3)式のような関係が成立する。
Tpre<<Tafter …(3)
また、コンピュータウィルスの混入検知などに適用する場合には、多くのパケットデータは、予め定められたパターンのいずれとも一致しないので、前処理のみで終了する可能性も高い。このような場合には、以下の(4)式のような関係が成立する。
E<<1.0
R<<1.0 …(4)
上述の(3)式および(4)式の関係が成立する場合には、以下の(5)式のような関係が成立する。
Tpre+E×Tafter×R<<Tafter …(5)
すなわち、関連技術として説明したアルゴリズムに比較して、より高速に文字列探索処理を行なうことができる。
<H.変形例>
本実施の形態に従う情報処理装置10においては、前処理と後処理とは直列的に実行されるので、異なる入力文字列に対して、これらの処理を並列化してもよい。
図10は、本発明の実施の形態の変形例に従う並列化を説明するための図である。図10に示すように、入力文字列1に対して、前処理および後処理が直列的に実行される。後続の入力文字列2に対しては、入力文字列1に対する前処理が完了し、後処理が開始されるのにあわせて、前処理が実行される。すなわち、入力文字列1に対する後処理と入力文字列2に対する前処理とが並列的に実行される。さらに、後続の入力文字列3に対しても同様の手順で処理が実行される。
このように全体処理を並列化することで、文字列探索処理をより高速に行なうことができる。
<I.適用例>
本実施の形態に従う情報処理装置10は、パケット中継装置、ファイヤウォール、パケット監視装置といったネットワークに配置される装置に好適である。但し、このような装置に限定されることなく、文字列を取り扱う処理装置全般に適用可能である。そのため、膨大なデータを蓄積しているデータベースから予め定められたパターンと一致するドキュメントを探索するといった検索エンジン的な処理にも適用できる。また、ネットワーク上を転送されるデータパケットに対するオンライン(リアルタイム)の探索処理だけではなく、オフラインの探索処理にも適用できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 ネットワークシステム、2 ネットワーク、3 パーソナルコンピュータ、4 サーバ装置、10 情報処理装置、12 パケット分類エンジン、14 分類定義記憶部、14a 分類定義ファイル、16 パケット解析エンジン、18 解析定義記憶部、18a 解析定義ファイル、100,150 探索ルール、102 受信部、104 受信キュー、110 メイン処理部、112 主メモリ、114 フラッシュメモリ、116 情報処理プログラム、118 バス、120 前処理部、121,122,123,124,131 処理要素、125,126,127,128,132 メモリ、130 後処理部、140 スイッチ、142 解析処理部、144 送信部、151 部分探索ルール、1002 ルート、1004 ノード。

Claims (8)

  1. 処理対象の入力文字列に対して、予め定められた複数のパターンのいずれかと一致する部分文字列を探索する情報処理装置であって、
    前記複数のパターンを順序付けされたノードで示す木構造の探索ルールを保持する記憶部と、
    前記探索ルールに含まれるルートおよび一部のノードからなる部分探索ルールを用いて、前記入力文字列の異なる部分集合に対する探索処理をそれぞれ実行する第1の処理部と、
    前記第1の処理部による探索結果を利用しつつ、前記探索ルールを用いて前記入力文字列に対する探索処理を実行する第2の処理部とを備える、情報処理装置。
  2. 前記第1の処理部は、
    隣接する部分集合の間では少なくとも予め定められた文字数を重複させつつ、前記入力文字列に対して複数の部分集合を設定する手段と、
    前記複数の部分集合の各々に対する前記部分探索ルールを用いた探索処理を並列実行する手段とを含む、請求項1に記載の情報処理装置。
  3. 前記第2の処理部は、前記第1の処理部による探索処理において、その部分集合のいずれについても前記部分探索ルールと一致しなかった入力文字列について、前記探索ルールを用いた探索処理の対象から除外する、請求項2に記載の情報処理装置。
  4. 前記第1の処理部は、前記入力文字列に対して設定される部分集合の数と少なくとも同数の処理要素を含む、請求項2または3に記載の情報処理装置。
  5. 前記第2の処理部は、前記第1の処理部による探索処理において、前記部分探索ルールと一致した部分文字列の位置を基準として、前記探索ルールを用いた探索処理を実行する、請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記第2の処理部は、前記第1の処理部による前記部分探索ルールと一致しなかった前記入力文字列の部分について、前記探索ルールを用いた探索処理をスキップする、請求項1〜4のいずれか1項に記載の情報処理装置。
  7. 前記入力文字列は、ネットワークを転送されるパケットデータを含む、請求項1〜6のいずれか1項に記載の情報処理装置。
  8. 処理対象の入力文字列に対して、探索ルールによって予め定められた複数のパターン、のいずれかと一致する部分文字列を探索する情報処理プログラムであって、前記探索ルールは、前記複数のパターンを順序付けされたノードで示す木構造を有し、前記情報処理プログラムは、コンピュータに、
    前記探索ルールに含まれるルートおよび一部のノードからなる部分探索ルールを用いて、前記入力文字列の異なる部分集合に対する第1の探索処理をそれぞれ実行するステップと、
    前記第1の探索処理による探索結果を利用しつつ、前記探索ルールを用いて前記入力文字列に対する探索処理を実行するステップとを実行させる、情報処理プログラム。
JP2012163716A 2012-07-24 2012-07-24 情報処理装置および情報処理プログラム Expired - Fee Related JP5904045B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012163716A JP5904045B2 (ja) 2012-07-24 2012-07-24 情報処理装置および情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012163716A JP5904045B2 (ja) 2012-07-24 2012-07-24 情報処理装置および情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2014026312A JP2014026312A (ja) 2014-02-06
JP5904045B2 true JP5904045B2 (ja) 2016-04-13

Family

ID=50199929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012163716A Expired - Fee Related JP5904045B2 (ja) 2012-07-24 2012-07-24 情報処理装置および情報処理プログラム

Country Status (1)

Country Link
JP (1) JP5904045B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2825009B2 (ja) * 1989-06-15 1998-11-18 株式会社日立製作所 記号列検索方法および装置
JP3141428B2 (ja) * 1990-06-29 2001-03-05 株式会社日立製作所 数値検索装置およびその方法
JP4347087B2 (ja) * 2004-02-26 2009-10-21 日本電信電話株式会社 パターンマッチング装置および方法ならびにプログラム
US7860849B1 (en) * 2007-01-18 2010-12-28 Netlogic Microsystems, Inc. Optimizing search trees by increasing success size parameter
WO2009050797A1 (ja) * 2007-10-17 2009-04-23 Fujitsu Limited 検索装置および検索方法

Also Published As

Publication number Publication date
JP2014026312A (ja) 2014-02-06

Similar Documents

Publication Publication Date Title
US9275224B2 (en) Apparatus and method for improving detection performance of intrusion detection system
US11128642B2 (en) DFA state association in a multi-processor system
US9495479B2 (en) Traversal with arc configuration information
WO2019096308A1 (zh) 一种识别加密数据流的方法及装置
EP3266156B1 (en) Network infrastructure device to implement pre-filter rules
US7949683B2 (en) Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US8180803B2 (en) Deterministic finite automata (DFA) graph compression
RU2523917C2 (ru) Система управления связью и способ управления связью
US20130054619A1 (en) Method and apparatus for identifying application protocol
KR20150026979A (ko) 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성
EP2871814A1 (en) Apparatus, method and system for hardwae-based filtering in a cross-comain infrastructure
CN104348677A (zh) 一种深度报文检测方法、设备及协处理器
JP2004172917A (ja) パケット検索装置及びそれに用いるパケット処理検索方法並びにそのプログラム
CN113810337B (zh) 用于网络报文去重的方法、装置、以及存储介质
JP2009218743A (ja) Ipプロトコル処理装置及びその処理方法
JP5904045B2 (ja) 情報処理装置および情報処理プログラム
WO2015075862A1 (ja) ネットワーク制御装置、ネットワーク制御方法およびプログラム
WO2021095162A1 (ja) 分散深層学習システムおよびデータ転送方法
Park et al. Reinhardt: Real-time reconfigurable hardware architecture for regular expression matching in dpi
CN112437096B (zh) 加速策略查找方法及系统
CN113688289A (zh) 数据包关键字段匹配方法、装置、设备及存储介质
KR101270928B1 (ko) 안티-멀웨어 시스템 및 그의 동작 방법
CN103947158A (zh) 信息包数据提取装置、信息包数据提取装置的控制方法、控制程序、计算机可读取的记录介质
CN116366478B (zh) 一种基于fpga的数据包对比去重方法
WO2022097725A1 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

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: 20160216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160229

R150 Certificate of patent or registration of utility model

Ref document number: 5904045

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees