(58)【調査した分野】(Int.Cl.,DB名)
上記分析対象データ保持手段は、上記収容されているデータ処理モジュールのアンインストールの要求があった場合、上記データ処理モジュール管理手段に登録されている当該データ処理モジュールのデータ処理利用情報に基づいてアンインストールの可否を判断することを特徴とする請求項2に記載のネットワーク分析システム。
複数のデータ処理エンジンと、ネットワークに接続され、上記データ処理エンジンを収容し、上記データ処理エンジンを用いて、上記ネットワークに関する分析処理を行うネットワーク分析装置とを備えるネットワーク分析システムにおいて、
上記ネットワーク分析装置は、
上記ネットワークに関する分析対象データと、上記分析対象データの処理を一部又は全部の上記データ処理エンジンを用いて行う工程を定義したデータ処理定義情報に基づいて、所定のデータ処理エンジンに対してデータ処理を実行させるための所定の形式のデータ処理フレームを生成するエンジン連携処理部と、
上記データ処理フレームに基づいて、上記データ処理を上記データ処理エンジンに実行させて、そのデータ処理結果を得るエンジン共通駆動部とを有し、
それぞれの上記データ処理エンジンは、
上記ネットワーク分析装置と接続するインタフェース部と、
上記ネットワーク分析装置からの要求に応じたデータ処理を上記データ処理フレームに基づいて行うデータ処理部とを有し、
上記エンジン連携処理部は上記複数のデータ処理エンジンを利用したデータ処理を定義した一つのデータ処理フレームを生成し、
上記エンジン共通駆動部が上記一つのデータ処理フレームに基づいて、上記複数のデータ処理エンジンを用いたデータ処理を実行させ、
上記エンジン連携処理部が生成する上記データ処理フレームには、データ処理に利用する上記複数のデータ処理エンジン、上記複数のデータ処理エンジンにデータ処理させる場合の処理順序及び、各データ処理エンジンにデータ処理をさせる際に指定するパラメータが記述されており、
それぞれの上記データ処理エンジンは、上記データ処理フレームに基づいて所定のデータ処理を行う場合、対象の上記データ処理エンジンの上記データ処理部が当該データ処理を実行後、当該データ処理フレームのデータを当該データ処理後のデータに置換したうえで、当該データ処理フレームに記述された処理順序中の当該データ処理エンジンの要素を削除する
ことを特徴とするネットワーク分析システム。
【発明を実施するための形態】
【0020】
(A)主たる実施形態
以下、本発明によるネットワーク分析システ
ムの一実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータ処理モジュールはエンジンである。
【0021】
(A−1)実施形態の構成
図1は、この実施形態のネットワーク分析システム10の機能的構成を示すブロック図である。
【0022】
この実施形態のネットワーク分析システム10は、内部ネットワークN1と外部ネットワークN2との間に配置されたルータ400に流れるトラフィックに基づいて、ネットワークに関する分析(例えば、利用状況や動作状況等の分析)を行い、その分析結果を出力する。なお、ネットワーク分析システム10が分析の対象とするトラフィックは限定されないものである。そして、ネットワーク分析システム10は、分析結果について、必要に応じてオペレーティングサーバ(OPS)30へ出力する。内部ネットワークN1は、例えば、通信キャリア(例えば、ISP事業者等)のネットワークが該当し、外部ネットワークN2はインターネット等のグローバルなネットワークが該当する。そして、ネットワーク分析システム10が、分析に必要なトラフィックのデータを取得する対象となるルータ400は、内部ネットワークN1を外部ネットワークN2に接続させるためのネットワーク装置であるものとする。そして、OPS300としては、例えば、内部ネットワークN1について運用・監視等を行うオペレータが使用する端末が該当する。
【0023】
次に、ルータ400の構成について説明する。
【0024】
ルータ400は、インタフェース410、インタフェース420、パケット処理部430、及びエクスポート処理部440を有している。
【0025】
インタフェース420は、内部ネットワークN1と接続するためのインタフェースであるものとする。また、インタフェース410は、外部ネットワークN2に接続するためのインタフェースであるものとする。内部ネットワークN1及び外部ネットワークN2のインタフェースの種類は限定されないものであるが、例えば、10ギガビット・イーサネット(登録商標)や、ギガビット・イーサネット等のインタフェースを適用することができる。
【0026】
そして、パケット処理部430は、インタフェース410、420で送受信するパケットの処理(ルーティング処理等)を行うものである。なお、パケット処理部430は、既存のルータと同様の構成を提供することができる。なお、ネットワーク分析システム10では、インタフェース410で送受信及び観測されるトラフィック(IPパケット)に関する分析が行われるものとして説明する。
【0027】
エクスポート処理部440は、ネットワーク分析システム10からの制御に応じて、分析に必要なデータを収集し、必要に応じて加工してから転送するエクスポータ(エージェント)の機能を担っている。エクスポート処理部440では、ネットワーク分析システム10に出力するデータに関するルール(以下、「出力ルール」と呼ぶ)を定義した情報を格納する出力ルール格納部441を備えている。エクスポート処理部440は、ネットワーク分析システム10からの制御に応じて、出力ルール格納部441の定義内容を変更する。そして、エクスポート処理部440は、出力ルール格納部441に格納された情報に従って、データ収集を行って、必要に応じて加工してネットワーク分析システム10に供給する。以下では、ネットワーク分析システム10で、ルータ400(エクスポート処理部440)から供給されるデータを、「レポートデータ」と呼ぶものとする。また、ルータ400(エクスポート処理部440)から送出されるレポートデータが挿入されたパケットをレポートパケットと呼ぶものとする。
【0028】
エクスポート処理部440の具体的な処理構成としては、例えば、NetFlow(参考文献1(IETF RFC3954)参照)、IPFIX(参考文献2(IETF RFC5101)参照)、sFlow(参考文献3(IETF RFC3176)参照)等の従来技術における、エクスポータ(エージェント)の処理構成を適用することができるので詳しい説明を省略する。
【0029】
次に、ネットワーク分析システム10の構成について説明する。
【0030】
ネットワーク分析システム10は、システムのプラットフォームとして機能するネットワーク分析装置100と、ネットワーク分析装置100(プラットフォーム)上で動作し、データ処理を行うエンジン200(200−1〜200−6)とを有している。なお、エンジン200の数は限定されないものである。
【0031】
ネットワーク分析装置100は、ルータ400から供給されたトラフィックに関するデータ(レポートデータ)を、一部又は全部のエンジン200を用いて処理し、主として、ネットワーク(内部ネットワークN1及び外部ネットワークN2)に関する利用状況や動作状態に関する分析処理を行う。すなわち、ネットワーク分析システム10において、各エンジン200は、レポートデータ等のデータ処理を行うためのデータ処理モジュールとして機能するものである。そして、ネットワーク分析装置100は、一部又は全部のエンジン200を組み合わせて利用し、ネットワークに関する利用状況や動作状態に関する分析を行う。
【0032】
ネットワーク分析装置100は、エンジン連携処理部110、エンジン共通駆動部120、処理ルール格納部130、出力ルール設定部140及びログ蓄積部150を有している。
【0033】
ネットワーク分析装置100は、例えば、CPU、ROM、RAM、EEPROM、ハードディスクなどのプログラムの実行構成、及び、ネットワークに接続するためのインタフェースを有する装置に、実施形態のネットワーク分析プログラム等をインストールすることにより構築するようにしても良く、その場合でも、機能的構成は
図1のように示すことができる。また、ネットワーク分析装置100について、一部又は全部をハードウェア(例えば、専用チップ等)により構築するようにしても良い。
【0034】
エンジン連携処理部110は、ルータ400から送出されたレポートパケットを受信してレポートデータを抽出する。なお、エンジン連携処理部110がレポートパケットを受信してレポートデータを抽出する処理構成としては、例えば、上述の参考文献1〜参考文献3等の従来技術におけるエクスポータ(エージェント)に対応するコレクタ(マネージャ)と同様の構成を適用することができる。
【0035】
そして、エンジン連携処理部110は、抽出したレポートデータについて、処理ルール格納部130に格納された処理ルールに従って、そのレポートデータの処理を、エンジン200に実行させる。エンジン連携処理部110は、エンジン200に対する制御や処理を依頼する等、エンジン200に対する入出力を行う場合には、エンジン共通駆動部120を介した通信を行う。
【0036】
エンジン共通駆動部120は、各エンジン200、エンジン連携処理部110及びログ蓄積部150と接続し、各構成要素の間の通信処理(スイッチ処理)等を行う機能を担っている。すなわち、エンジン共通駆動部120は、ネットワーク分析装置100において、各エンジン200を収容する機能を担っている。
【0037】
また、ここでは、エンジン200−1〜200−6に対してそれぞれ1〜6という識別子(以下、「エンジンID」と呼ぶ)が付与されているものとして以下の説明を行う。例えば、エンジン200−1の識別子は1となり、エンジン200−2の識別子は2となる。
【0038】
処理ルール格納部130には、エンジン連携処理部110がエンジン200を用いたデータ処理を行う場合の処理工程等に関するルール(以下、「処理ルール」と呼ぶ)を定義したデータが格納されている。処理ルールの詳細については後述する。
【0039】
そして、処理ルール格納部130に格納された各処理ルールについては、エンジン連携処理部110の処理ルール管理テーブル111で管理されている。処理ルール管理テーブル111には、各処理ルールに関する情報(例えば、入力するレポートデータの形式や、処理に用いるエンジン200等)が管理されている。処理ルール管理テーブル111の詳細については後述する。
【0040】
出力ルール設定部140は、処理ルール管理テーブル111で管理されている情報に従って、各処理ルールで必要とするレポートデータが取得できるように、ルータ400(エクスポート処理部440)へ、レポートデータの送信内容・条件設定を依頼する。出力ルール設定部140が、ルータ400(エクスポート処理部440)へ、レポートデータの送信内容・条件設定を依頼する構成については、例えば、上述の参考文献1〜参考文献3に記載されたエクスポータ(エージェント)に対応するコレクタ(マネージャ)と同様の構成を適用することができる。
【0041】
そして、ルータ400(エクスポート処理部440)から送出されたレポートデータは、上述の通り、エンジン連携処理部110で取得されることになる。すなわち、ネットワーク分析装置100では、出力ルール設定部140及びエンジン連携処理部110により、ルータ400(エクスポート処理部440)から、レポートデータ(ネットワーク分析装置100で分析対象となるデータ)を保持する処理が行われる。
【0042】
ログ蓄積部150は、エンジン共通駆動部120に接続しており、各エンジン200の処理に関するログを蓄積するものである。ログ蓄積部150には、エンジン200ごとの、入力データ及び又は出力データや、データ処理の中間データ等が格納される。エンジン共通駆動部120は、例えば、各エンジン200で入出力されるデータや、各エンジン200からの依頼に基づくデータを、ログ蓄積部150に供給し、ログ蓄積部150では供給されたデータを、エンジン200ごとに分類して蓄積するものとする。
【0043】
次に、処理ルール格納部130に格納される処理ルールの具体的な内容について説明する。ここでは、処理ルール格納部130には、2つの処理ルールR1、R2が格納されているものとする。
【0044】
図2は、処理ルール格納部130に格納される処理ルールの定義内容の例について示した説明図である。
【0045】
図2(a)は、処理ルールR1の内容について示しており、
図2(b)は、処理ルールR2の内容について示している。
【0046】
処理ルールを定義する記述形式については限定されないものであるが、ここでは、
図2に示すような、C言語タイプのスクリプト形式で記述されるものとする。
【0047】
処理ルールは、おおまかに、入力データとして用いるレポートデータに関する定義を行うステップ(以下、「入力データ定義ステップ」とよぶ)(
図2(a)のステップS101、
図2(b)のステップS201)と、エンジン200を用いたデータ処理を定義するステップ(以下、「データ処理定義ステップ」と呼ぶ)(
図2(a)のステップS102、
図2(b)のステップS202)と、当該処理ルールで出力するデータに関する定義を行うステップ(以下、「出力データ定義ステップ」と呼ぶ)(
図2(a)のステップS103、
図2(b)のステップS203)の3つのステップを有している。
【0048】
まず、入力データ定義ステップ(ステップS101、ステップS201)について説明する。この実施形態では、処理ルールで用いられる入力データ(レポートデータ)の形式は、インタフェースで観測されるトラフィックをダンプしたpcap形式のようなトラフィックデータ(所定のインターバルの間に発生したIPパケット列のバイナリーデータ)、又はインタフェースで観測されたトラフィックを設定されたサンプリング間隔で抽出してnetflow/sflo/ipfixなどのようなフロー情報として出力するフローレコード(所定のインターバルの間に発生したIPパケット列に係る所定項目の統計情報)のいずれか,あるいは双方であるものとする。入力データ(レポートデータ)の形式については、さらに細かく分類して定義するようにしても良いが、この実施形態では説明を簡易にするための上述の2種類のみであるものとして説明する。
【0049】
そして、処理ルールR1の入力データ定義ステップ(ステップS101)では、「input1=trafficdata;」と記述されており、「input1」(処理ルールR1の第1の入力データの形式)は、「trafficdata」(トラフィックデータ)の形式であることを示している。
【0050】
一方、処理ルールR2の入力データ定義ステップ(ステップS102)では、「input1=flow_record;」と記述されており、「input1」(処理ルールR2の第1の入力データの形式)は、「flow_record」(フローレコード)の形式であることを示している。なお、入力データ定義ステップでは、例えば「input2=…」というような記述で、複数の入力データに関する定義を行うようにしても良い。
【0051】
次に、処理ルールを構成するデータ処理定義ステップ(ステップS102、ステップS202)について説明する。
図2に示すように、処理ルールR1のデータ処理定義ステップ(ステップS102)は、3つのサブステップS102−1〜S102−3を有している。また、処理ルールR2のデータ処理定義ステップ(ステップS202)は、3つのサブステップS202−1〜S202−3を有している。
【0052】
データ処理定義ステップでは、「EngineN」(Nは、当該エンジン200の識別子(1〜6のいずれか))を名称(クラス名)とした関数(クラス)を用いて、各エンジン200に実行させる処理を定義するものとする。データ処理定義ステップで、任意のエンジン200(識別子がEngineNのエンジン200)に、任意の入力データ(inputdata)について、任意のパラメータ(parameter)(例えば、データ処理を行う際の閾値等)を指定して処理を実行させ、任意の出力形式(output_type)でデータを出力させる場合には、「EngineN(inputdata,output_type,parameter)」という記述で表すことができるものとする。データ処理定義ステップの記述形式は限定されないものであり、複数の記述形式に対応するようにしても良いが、ここでは説明を簡易にするために、ネットワーク分析装置100では、上述の形式について対応するものとして説明する。なお、データ処理定義ステップにおいて、inputdata以外のパラメータ(output_type及びparameter)については、明示的に指定する必要が無い場合には、記述を省略するようにしても良い。なお、以下では、inputdata以外のパラメータについて「付加パラメータ」と呼ぶものとする。また、
図2では、「output_type」及び「parameter」について、説明を簡易にするために「output_type1」や「parameter1」といった記述をしているが、実際にはエンジン連携処理部110でそれらのパラメータに対して、具体的な内容を定義(define)したデータ(図示せず)が保持されているものとする。
【0053】
例えば、処理ルールR1のデータ処理定義ステップ(ステップS102)を構成するステップS102−1では、「Engine1(input1,output_type1,parameter1)」と記述されているが、これは、「Engine1」(エンジン200−1)に対して、「input1」(ステップS101で定義された入力データ)について、「parameter1」というパラメータを指定して処理を実行させ、「output_type1」の出力形式の出力データを得ることを意味している。
【0054】
次に、処理ルールR1のデータ処理定義ステップ(ステップS102)の内容について説明する。
【0055】
ステップS102−1の内容については、上述の通りである。
【0056】
そして、ステップS102−1に続くステップS102−2では、「Analyze2 = Engine2(analyze1, output_type2, parameter2);」と記述されているので、「Engine2」(エンジン200−2)に対して、ステップS102−1で得た「Analyze1」を入力としたデータ処理を実行させ、その結果を「Analyze2」という変数に代入させる処理を意味している。
【0057】
さらに、ステップS102−2に続くステップS102−3では、「Analyze3 = Engine3(analyze2, output_type3, parameter3);」と記述されているので、「Engine3」(エンジン200−3)に対して、ステップS102−1で得た「Analyze2」を入力としたデータ処理を実行させ、その結果を「Analyze3」という変数に代入させる処理を意味している。
【0058】
すなわち、処理ルールR1のデータ処理定義ステップ(ステップS102)では、入力データ(input1)について、まず、エンジン200−1(Engine1)に処理させ、さらにその処理結果をエンジン200−2(Engine2)に処理させ、さらにその処理結果をエンジン200−3(Engine3)に処理させるという入れ子の構造(構文)で記述されている。言い換えると、処理ルールR1のデータ処理定義ステップ(ステップS102)では、エンジン200−1(Engine1)、エンジン200−2(Engine2)、エンジン200−3(Engine3)の順で直列的に、入力データ(input1)を処理させる構造(構文)となっている。
【0059】
次に、処理ルールR1のデータ処理定義ステップ(ステップS102)の具体的な処理(エンジン200−1〜200−3の具体的な処理)の例について説明する。
【0060】
処理ルールR1では、ルータ400を流れる音声や動画等のリアルタイム通信に関するトラフィックを分析するものとする。具体的には、処理ルールR1は、RTP/RTCP(Real−time Transport Protocol/RTP Control Protocol)通信のパケット(特にRTCPのパケット)を抽出した分析を行うものとする。
【0061】
まず、ステップS102−1で、エンジン200−1(Engine1)に入力データ(input1)として、トラフィックデータ(全てのIPパケットのデータ)を入力し、RTCPパケットだけを抽出させたデータ(Analyze1)を得る。そして、エンジン200−1(Engine1)で得た、RTCPパケットのデータ(Analyze1)を、エンジン200−2(Engine2)に入力して、RTCPパケットに含まれる品質値(遅延,パケットロス等)をもとに通信品質が有意に劣化していると考えられるフローのIPアドレスの組合せ(RTCPパケットの送信元及び送信先のIPアドレスの組合せ)から,所定の回数(Parameter2で指定)以上出現しているIPアドレスの組み合わせを抽出し、それらのIPアドレスの組合せのデータ及び、当該組合せに係るRTCPパケットに含まれる通信品質に関するパラメータ値のデータ(複数存在する場合には平均値を用いるようにしても良い)を含むデータ(Analyze2)を得る。そして、エンジン200−2(Engine2)で得た、IPアドレスの組合せ及び、当該組合せに係るパラメータ値のデータ(Analyze2)を、エンジン200−3(Engine3)に入力して、一定時間内に発生した品質劣化の回数が閾値を越えた場合にネットワーク異常と判定し、その判定結果とIPアドレスの組み合わせをAnalyze3として得る。エンジン200−3(Engine3)から出力される判定結果(Analyze3)は、一定時間内にネットワーク品質劣化が発生したと判断されたIPアドレスの対を返すか,品質劣化が無い場合は0を返す。この実施形態において、処理ルールR1では、以上のような流れで、入力データ(input1:trafficdata)について、エンジン200−1〜200−3に直列的にデータ処理を実行させ、ネットワーク異常の有無を判定することができる。
【0062】
次に、処理ルールR2のデータ処理定義ステップ(ステップS202)の内容について説明する。
【0063】
処理ルールR1では、上述の通り、入力データ(input1)を複数のエンジンで直列的に処理させているが、処理ルールR2では並列的に処理を行う。
【0064】
具体的には、処理ルールR2のステップS202−1では、入力データ(input1)についてエンジン200−4(Engine4)で処理を行わせて、その結果を、「Analyze1」という変数に代入させている。また、処理ルールR2のステップS202−2では、入力データ(input1)についてエンジン200−5(Engine5)で処理を行わせて、その結果を、「Analyze2」という変数に代入させている。さらに、処理ルールR2のステップS202−3では、入力データ(input1)についてエンジン200−6(Engine6)で処理を行わせて、その結果を、「Analyze3」という変数に代入させている。
【0065】
次に、処理ルールR2のデータ処理定義ステップ(ステップS202)の具体的な処理(エンジン200−4〜200−6の具体的な処理)の例について説明する。
【0066】
エンジン200−4〜200−6は、フローレコードの形式の入力データを蓄積し、過去に蓄積したデータと、最新に取得したフローレコード形式のデータとに基づいて、それぞれ異なるアルゴリズムで、現在のネットワーク異常の有無を判定する処理を行い、その判定結果をAnalyze1〜Analyze3として得る。ここでは、例として、エンジン200−4は、特許文献1の記載技術のように傾向変化度を利用して、一定割合以上(parameter1で指定)のエラー要因となっているIPアドレス若しくは経路を得た場合に、ネットワーク異常が発生したと判定するものとする。また、エンジン200−5は、特許文献3の記載技術のように、RF法を用いた判定により、現在のネットワークの異常(ネットワークの品質劣化)の有無を判定するものとする。さらに、エンジン200−6は、特許文献4の記載技術のように、ニューラルネットワーク(ニューロ)を用いた学習機を利用して、現在のネットワークの異常(ネットワークの品質劣化)の有無を判定するものとする。
【0067】
エンジン200−4〜200−6(Engine4〜Engine6)から出力される判定結果(Analyze1〜Analyze3)は、ネットワーク異常と判定した場合には「1」、ネットワーク異常はないと判定した場合は「0」の値を取るものとする。この実施形態において、処理ルールR2では、以上のような流れで、入力データ(input1:flow_record)について、エンジン200−4〜200−6に並列的にデータ処理を実行させ、それぞれ異なるアルゴリズムで、ネットワーク障害に関する判定結果を取得することができる。
【0068】
次に、処理ルールを構成する出力データ定義ステップ(ステップS103、ステップS203)について説明する。
【0069】
処理ルールR1の出力データ定義ステップ(ステップS103)では、
図2(a)に示すように、単に「Return analyze3;」と記述されており、処理ルールR1の処理結果として「analyze3」という変数を戻り値のデータとして出力することを示している。エンジン連携処理部110では、各処理ルールについて、「Return」という関数により、戻り値として出力されたデータを取得し、当該処理ルールによる分析結果として、出力する処理を行う。
【0070】
この実施形態の処理ルールを構成する出力データ定義ステップでは、分析処理の結果、ネットワークの利用状況や動作状態に関して異常を検知した場合には戻り値として「1」を出力し、異常が無い場合(正常の場合)には戻り値として「0」を出力するものとする。
【0071】
一方、処理ルールR2の出力データ定義ステップ(ステップS103)では、
図2(a)に示すように、「If((analyze1+analyze2+analyze3)>2)return 1;Else return 0;」と記述されており、If文を用いた構文となっている。ここでは、「analyze1」、「analyze2」、「analyze3」のそれぞれは、上述の通り、0又は1が代入される。そうすると、上述のIf文を用いた構文では、「analyze1」、「analyze2」、「analyze3」のうち2つ以上で1が代入された場合に、Ifの条件が成立し処理ルールR2の戻り値として1が出力されることになる。一方、If文の条件が成立しなかった場合(「1」を出力したエンジン200が2つ未満だった場合)には、処理ルールR2の戻り値として0が出力されることになる。
【0072】
上述の通り、エンジン200−4〜200−6では、それぞれ異なるアルゴリズムで、ネットワークに関する障害の有無を判定している。したがって、処理ルールR2の出力データ定義ステップ(ステップS203)では、エンジン200−4〜200−6のうち2つ以上でネットワーク異常が検知された場合(多数決でネットワーク異常を検知したエンジン200が多かった場合)にのみ、最終的な判定結果をネットワーク異常有りと判定していると言える。以上のように、処理ルールR2では、複数のエンジン200の判定結果を総合して、最終的なネットワーク異常の判定を行っている。
【0073】
以上の通り、エンジン連携処理部110では、各処理ルールのスクリプトが実行される。そして、エンジン連携処理部110は、各処理ルールのスクリプトを実行した結果、異常検出を意味する「1」が戻り値として取得された場合、当該処理ルールにより異常を検知したことをOPS300に対して通知する処理(例えば、SNMPのTrap等を用いた通知処理)を行う。エンジン連携処理部110が、ネットワーク異常の発生を通知する際には、処理ルールごとに対応するメッセージ(例えば、異常の原因を示すメッセージ)を合わせて通知するようにしても良い。エンジン連携処理部110が、OPS300に対して通知するメッセージについては、例えば、処理ルール管理テーブル111管理で、項目を追加して管理するようにしても良いし、出力データ定義ステップの中で記述するようにしても良い。
【0074】
なお、エンジン連携処理部110が分析結果を出力する方式は限定されないものであり、例えば、内部にログ(履歴)として蓄積するようにしても良いし、OPS300ではなく自装置でディスプレイ等に表示出力するようにしても良い。
【0075】
そして、OPS300では、エンジン連携処理部110から異常通知があった場合(例えば、SNMPによりTrap通知等があった場合)には、その旨の警報を発して、オペレータにネットワークで異常が発生したことを知らせる。OPS300により警報を発生させる方式は限定されないものであるが、例えば、図示しないディスプレイに表示出力したり、図示しないスピーカによりアラーム音を音声出力したり、図示しないランプを発光させる等の種々の方式を適用することができる。OPS300の具体的な構成については限定されないものであるが、例えば既存のSNMPに対応したネットワーク監視装置(SNMPマネージャ)等を適用することができる。
【0076】
次に、エンジン連携処理部110で保持される処理ルール管理テーブル111の内容例について説明する。
【0077】
図3は、処理ルール管理テーブル111の内容例について示した説明図である。
図3では、上述の
図2の処理ルールR1、R2が、処理ルール格納部130に格納された場合の処理ルール管理テーブル111の内容について示している。
【0078】
図3に示すように、処理ルール管理テーブル111には、ルールID、使用エンジン、インターバル、入力データ形式の項目の情報が登録されている。
図3では、1行で、一つの処理ルールに関する情報が管理されている。
【0079】
「ルールID」の項目は、各処理ルールの識別子を示す項目である。ここでは、処理ルールR1のルールIDを「1」、処理ルールR2のルールIDを「2」であるものとして説明する。
【0080】
「使用エンジン」の項目は、当該処理ルールの「データ処理定義ステップ」で使用されるエンジン200について管理するための項目である。使用エンジンの項目では、
図3に示すように各エンジンのエンジンIDごとに「1」又は「0」の値が設定される。使用エンジンの項目において、エンジンIDに対する値が0の場合は、当該処理ルールではそのエンジンIDのエンジン200は使用されないことを意味している。一方、使用エンジンの項目において、エンジンIDに対する値が1の場合は、当該処理ルールではそのエンジンIDのエンジン200は使用されることを意味している。例えば、処理ルールR1(ルールID:1)では、エンジンIDが1〜3のエンジン200−1〜200−3が使用されることを示している。
【0081】
「インターバル」の項目は、当該処理ルールのスクリプトを実行するインターバル(間隔)について示している。インターバルは、時間を単位として示しても良いし、パケットの発生数(ルータ400から供給されるレポートデータに含まれるパケットの数)で示しても良い。また、「入力データ形式」の項目は、当該処理ルールの入力データ定義ステップで定義される入力データの形式を示している。
【0082】
図3では、処理ルールR1(ルールID:1)のインターバルは「10000パケット」、入力データ形式は「trafficdata」となっている。したがって、エンジン連携処理部110は、前回処理ルールR1を実行してから、パケットの発生数(ルータ400から供給されるレポートデータに含まれるパケットの数)が10000個に達した時点で、その10000個分のパケットのデータを含むトラフィックデータ形式のレポートデータを入力として、処理ルールR1の実行を開始することを示している。
【0083】
また、
図3では、処理ルールR2(ルールID:2)のインターバルは「10秒」、入力データ形式は「flow_record」となっている。したがって、エンジン連携処理部110は、前回処理ルールR2を実行してから、10秒経過すると、その間に供給されたフローレコードの形式のレポートデータを入力として、処理ルールR2の実行を開始することを示している。
【0084】
処理ルール管理テーブル111の内容は、ユーザの操作に応じた内容を登録するようにしても良いし、エンジン連携処理部110が、処理ルール格納部130に追加された処理ルールの内容に応じて更新するようにしても良い。
【0085】
エンジン連携処理部110が、各処理ルールについて、処理ルール管理テーブル111の各項目の情報を把握する手段については限定されないものである。例えば、処理ルール格納部130で処理ルールのデータと共に、処理ルール管理テーブル111の各項目の情報についても格納しておき、エンジン連携処理部110に読み込ませるようにしても良い。また、エンジン連携処理部110が、処理ルール格納部130に格納された処理ルールのスクリプトの内容を参照して、処理ルール管理テーブル111に反映させるようにしても良い。例えば、処理ルール格納部130に新たな処理ルールが追加された場合に、エンジン連携処理部110が、その処理ルールを構成する入力データ定義ステップの内容を読み取って、当該処理ルールの入力データの形式を確認(trafficdata又はflow_record)を把握して、入力データ形式の項目に反映するようにしても良い。また、例えば、処理ルール格納部130に新たな処理ルールが追加された場合に、エンジン連携処理部110が、その処理ルールを構成するデータ処理定義ステップの内容を読み取って、当該処理ルールで使用するエンジン200(エンジンID)を把握して、使用エンジンの項目に反映するようにしても良い。
【0086】
次に、エンジン連携処理部110で保持されるエンジン管理テーブル112の内容例について説明する。
【0087】
図4は、エンジン管理テーブル112の内容例について示した説明図である。
図4では、エンジン200−1〜200−6(エンジンID:1〜6)が、エンジン共通駆動部120に接続されている場合のエンジン管理テーブル112の内容について示している。
【0088】
図4に示すように、エンジン管理テーブル112には、エンジンID、IF番号、エンジン名、処理概要の項目の情報が登録されている。
図4では、1行で、一つの処理ルールに関する情報が管理されている。
【0089】
エンジンIDの項目は、当該エンジン200に付与されているエンジンID(処理ルールの定義等で用いられるID)を示している。
【0090】
IF番号の項目は、当該エンジン200が、エンジン共通駆動部120上でインストールされているインタフェースの番号(論理的又は物理的なインタフェースの識別子)を示している。
図4では、それぞれのエンジン200について、エンジンIDとIF番号は別項目として記述しているが、内容が一致する場合には一つの項目にまとめて記述するようにしても良い。
【0091】
エンジン名の項目は当該エンジン200の名称について示している。また、処理概要の項目は、当該エンジン200の処理の概要について示している。なお、エンジン名及び処理概要の項目については、エンジン管理テーブル112において必須の項目ではなく省略するようにしても良い。
【0092】
エンジン連携処理部110は、新たにエンジン200がインストール(エンジン共通駆動部120に接続)された場合や、既にインストールされているエンジン200がアンインストール(エンジン共通駆動部120から切断)された場合に、エンジン管理テーブル112の内容を更新するが、その処理については、後述する動作説明の項で説明する。
【0093】
次に、エンジン200(200−1〜200−6)の内部構成について説明する。
【0094】
ここでは、各エンジン200の基本的な構成(フレームワーク)については、全て同じであり、実行するデータ処理の内容が異なっているだけであるものとして説明する。
【0095】
図5は、各エンジン200の機能的構成について示したブロック図である。
【0096】
各エンジン200は、ネットワーク分析装置100とは別個のハードウェア(コンピュータ)に、実施形態のデータ処理プログラムをインストールすることにより構築しても良いし、ネットワーク分析装置100のコンピュータ上で動作する1つのプログラム(実施形態のデータ処理プログラム)として構築するようにしても良い。そして、いずれの場合でもネットワーク分析装置100の機能的構成は、
図5のように示すことができる。
【0097】
エンジン200は、インタフェース部210、データ処理部220、及びインストール処理部230を有している。
【0098】
インタフェース部210は、エンジン共通駆動部120と接続するためのインタフェースの機能を担っている。エンジン200がエンジン共通駆動部120とは別個のハードウェア(コンピュータ)を用いて構築されている場合には、インタフェース部210は、物理的にネットワーク分析装置100(エンジン共通駆動部120)へ接続するためのインタフェースを備える必要がある。エンジン200がエンジン共通駆動部120とハードウェア的に接続する場合のインタフェースについては限定されないものであるが、例えば、イーサネット等のLANインタフェースや、ファイバチャネル等の種々のインタフェースを適用することができる。
【0099】
データ処理部220は、エンジン連携処理部110からの依頼に基づいてデータ処理を行う機能を担っている。データ処理部220が行う具体的なデータ処理の内容については、当該エンジン200の仕様によって異なっている。データ処理部220が、データ処理を行う場合のワークメモリや、詳細な動作ログについては、内部で管理するようにしても良いし、一部又は全部について、ログ蓄積部150上に確保された領域に記憶するようにしても良い。その場合、各エンジン200は、エンジン共通駆動部120を介してログ蓄積部150に蓄積されたデータの読み書きが可能な構成とする必要がある。
【0100】
インストール処理部230は、ネットワーク分析装置100へ接続して当該エンジン200をインストールさせる処理や、ネットワーク分析装置100へ接続(インストール)された状態から切断(アンインストール)させる処理を行うものである。インストール処理部230のインストール処理、及び、アンインストール処理については、例えば、ユーザの操作に応じて実行するようにしても良い。エンジン200が、ソフトウェア的にプログラム(実施形態のデータ処理プログラム)により構成されている場合には、そのプログラムを構成するサブプログラムとして、インストール処理部230は構成されることになる。そして、ユーザによりインストール処理部230に相当するサブプログラムの実行(例えば、所定のコマンド操作等)が行われた場合に、インストール又はアンインストールの処理が開始される。エンジン200が、ネットワーク分析装置100とは別個のハードウェアである場合には、ユーザにエンジン200(インストール処理部230)を直接操作(例えば、図示しないボタン等のインタフェースによる操作)させるようにしても良いし、ネットワーク分析装置100を介してエンジン200(インストール処理部230)を操作させるようにしても良い。
【0101】
インストール処理部230が、インストール又はアンインストールの処理を開始すると、エンジン連携処理部110と連携してその処理を行う。インストール処理部230の処理の具体的なシーケンスについては、後述する動作説明の項で説明する。
【0102】
(A−2)実施形態の動作
次に、以上のような構成を有するこの実施形態のネットワーク分析システム10の動作を説明する。
【0103】
(A−2−1)エンジンのインストール
まず、ネットワーク分析システム10に、新規のエンジンがインストールされる場合の動作について、
図6のシーケンス図を用いて説明する。
【0104】
ここでは、
図6では、ネットワーク分析装置100上に、エンジン200−1〜200−6がインストールされた状態で、新規にエンジン200−7がインストールされる動作について示している。また、
図6のフローチャートの初期状態として、処理ルール管理テーブル111及びエンジン管理テーブル112の内容は、それぞれ
図3、
図4の状態であるものとして説明する。
【0105】
まず、ユーザの操作により、エンジン200−7が、エンジン共通駆動部120にアクセス可能な状態に置かれ、エンジン200−7のインストール処理部230が起動されたものとする(S301)。エンジン200が、ソフトウェア的にプログラム(実施形態のデータ処理プログラム)により構成されている場合には、例えば、エンジン200−7を構成するプログラムのファイルが、ネットワーク分析装置100を構成するコンピュータに展開され実行可能な状態になると、エンジン200−7はエンジン共通駆動部120にアクセス可能な状態になる。また、エンジン200が、ネットワーク分析装置100とは別個のハードウェア(コンピュータ)により構築されている場合には、例えば、エンジン200−7のハードウェア(モジュール)を、ネットワーク分析装置100に接続(例えば、ケーブルやソケット等のインタフェースにより接続)すると、エンジン200−7はエンジン共通駆動部120にアクセス可能な状態になる。
【0106】
エンジン200−7のインストール処理部230が起動されると、インストール処理部230から、エンジン共通駆動部120を介して、エンジン連携処理部110へ、インストール要求が通知される(S302)。
【0107】
そして、インストール要求の通知を受信すると、エンジン連携処理部110は、エンジン200−7へ、管理情報(エンジン管理テーブル112に登録する情報)の送信要求を通知する(S303)。
【0108】
そして、管理情報の送信要求を受信すると、エンジン200−7のインストール処理部230は、自身の管理情報をエンジン連携処理部110に返答する(S304)。
【0109】
そして、管理情報を受信すると、エンジン連携処理部110は、エンジン200−7に対してエンジンIDを付与する。そして、エンジン連携処理部110は、受信した管理情報及び付与したエンジンIDに基づいて、エンジン200−7に関する情報を、エンジン管理テーブル112に追加する。さらに、エンジン連携処理部110は、エンジン200−7のエンジンIDの項目を、処理ルール管理テーブル111の使用エンジンの項目に追加する(S305)。
【0110】
図7は、上述のステップS305の処理で更新された後の処理ルール管理テーブル111及びエンジン管理テーブル112の状態について示している。
【0111】
エンジン連携処理部110は、新たにインストールされるエンジン200に対して、エンジンIDを付与する場合には、エンジン管理テーブル112を確認し、空いているエンジンIDを付与する。ここでは、エンジン連携処理部110は、エンジン200−7に対して、空いているエンジンIDのうち最も小さい番号を付与するものとする。上述の通り、ステップS305以前のエンジン管理テーブル112の状態は、上述の
図4に示す状態であるので、エンジン連携処理部110は、エンジン200−7に対して、エンジンIDとして「7」が付与されることになる。なお、新規にインストールするエンジン200に付与するエンジンIDについては、ユーザの操作に応じた番号や、エンジン200に固定的に設定されているID等を付与するようにしても良い。そして、エンジン連携処理部110は、エンジン200−7のエンジンIDを7として、エンジン管理テーブル112に、エンジン200−7の情報を追加登録し、エンジン管理テーブル112は
図7(b)に示す状態となる。そして、エンジン連携処理部110は、処理ルール管理テーブル111の使用エンジンの項目に、エンジン200−7に対応する項目(エンジンIDが7の項目)を追加し、処理ルール管理テーブル111は
図7(a)に示す状態となる。処理ルール管理テーブル111において、エンジン200−7に対応する項目(エンジンIDが7の項目)が追加された当初は、エンジン200−7はいずれの処理ルールにも使用されていないので、「0」の値が設定される。
【0112】
そして、エンジン連携処理部110は、各テーブル(処理ルール管理テーブル111及びエンジン管理テーブル112)の更新が完了すると、インストール終了の通知と共に、付与したエンジンID(7)を、エンジン200−7に通知する(S306)。
【0113】
以降、エンジン200−7は、ネットワーク分析装置100上で、データ処理を行うことが可能となる。
【0114】
(A−2−2)エンジンのアンインストール
次に、ネットワーク分析システム10に、既にインストール(接続)されているエンジン200がアンインストールされる場合の動作について説明する。
【0115】
エンジン連携処理部110では、エンジン200(インストール処理部230)からアンインストールの要求があった場合には、当該エンジン200についてアンインストールによる影響度を確認し、その確認結果に基づいて、当該エンジン200についてアンインストールの可否を判定する。具体的には、エンジン連携処理部110は、エンジン200(インストール処理部230)からアンインストールの要求があった場合には、処理ルール管理テーブル111を参照し、当該エンジン200を利用する処理ルールが無い場合には、当該エンジン200をアンインストールしても影響が無いと判断し、当該エンジン200のアンインストールを許可する。一方、当該エンジン200を利用する処理ルールがあった場合には、エンジン連携処理部110は、当該エンジン200のアンインストールを許可しない。
【0116】
ここでは、まず、エンジン連携処理部110が、エンジン200からのアンインストール要求を可と判定する場合の動作について
図8を用いて説明する。
【0117】
図8では、上述の
図6で新規にエンジン200−7がインストールされた直後の状態で、エンジン200−7のアンインストールを行う動作について示している。すなわち、
図8のフローチャートでは、処理ルール管理テーブル111及びエンジン管理テーブル112の初期状態が、上述の
図7に示す状態となっているものとする。
【0118】
まず、エンジン200−7が、ネットワーク分析装置100上にインストールされた状態で、ユーザの操作により、エンジン200−7のインストール処理部230が起動されたものとする(S401)。
【0119】
エンジン200−7のインストール処理部230が起動されると、インストール処理部230から、エンジン共通駆動部120を介して、エンジン連携処理部110へ、アンインストール要求が通知される(S402)。
【0120】
そして、アンインストール要求の通知を受信すると、エンジン連携処理部110は、処理ルール管理テーブル111の内容を確認し、エンジン200−7のアンインストールの可否を判定する(S403)。
【0121】
処理ルール管理テーブル111の内容は、上述の通り、上述の
図7の状態となっている。そして、
図7に示されるように、エンジン200−7に対応する項目(エンジンIDが7の項目)は、全ての処理ルールについて「0」の値(使用されていないことを示す値)が設定されている。したがって、エンジン連携処理部110は、エンジン200−7は、どの処理ルールにも使用されていないため、アンインストールしても影響が無く、エンジン200−7のアンインストールは可と判定することになる。
【0122】
そして、エンジン連携処理部110は、エンジン200−7のアンインストールを可と判定すると、最終的なアンインストールの確認(ACK)要求を通知する(S404)。
【0123】
そして、アンインストールの確認(ACK)要求の通知を受信すると、エンジン200−7のインストール処理部230は、アンインストールの確認(ACK)を返答する(S405)。
【0124】
そして、アンインストールの確認(ACK)の通知を受信すると、エンジン連携処理部110は、処理ルール管理テーブル111及びエンジン管理テーブル112に対して、エンジン200−7に関する情報の削除を実行する(S406)。
【0125】
エンジン連携処理部110は、エンジン管理テーブル112から、エンジン200−7(エンジンID:7)の情報を削除し、エンジン管理テーブル112は上述の
図4に示す状態となる。また、エンジン連携処理部110は、処理ルール管理テーブル111の使用エンジンの項目から、エンジン200−7に対応する項目(エンジンIDが7の項目)を削除し、処理ルール管理テーブル111は上述の
図3に示す状態となる。
【0126】
そして、エンジン連携処理部110は、エンジン200−7にアンインストール処理が完了した旨の通知を送信する(S407)。以上のシーケンスの動作で、ネットワーク分析システム10では、エンジン200−7のアンインストール処理が終了し、エンジン200−7について、ファイルの消去や取り外しが可能となる。
【0127】
次に、エンジン連携処理部110が、エンジン200からのアンインストール要求を不可と判定する場合の動作について
図9を用いて説明する。
図9のフローチャートにおいても、処理ルール管理テーブル111及びエンジン管理テーブル112の初期状態が、上述の
図7に示す状態となっているものとして説明する。
【0128】
まず、エンジン200−6が、ネットワーク分析装置100上にインストールされた状態で、ユーザの操作により、エンジン200−6のインストール処理部230が起動されたものとする(S501)。
【0129】
エンジン200−6のインストール処理部230が起動されると、インストール処理部230から、エンジン共通駆動部120を介して、エンジン連携処理部110へ、アンインストール要求が通知される(S502)。
【0130】
そして、アンインストール要求の通知を受信すると、エンジン連携処理部110は、処理ルール管理テーブル111の内容を確認し、エンジン200−6のアンインストールの可否を判定する(S503)。
【0131】
処理ルール管理テーブル111の内容は、上述の通り、上述の
図7の状態となっている。そして、
図7に示されるように、エンジン200−6に対応する項目(エンジンIDが6の項目)では、処理ルールR2の行(ルールIDが2の行)で「1」の値(使用されていることを示す値)が設定されている。したがって、エンジン連携処理部110は、エンジン200−6は、使用している処理ルールが存在するため、アンインストールをすると影響が有り、エンジン200−6のアンインストールは不可と判定することになる。
【0132】
そして、エンジン連携処理部110が、エンジン200−6のアンインストールを不可と判定すると、アンインストールを不許可とする通知がエンジン200−6に送信され(S504)、アンインストールの処理は中止される。
【0133】
(A−2−3)処理ルールに関するデータ処理
次に、エンジン連携処理部110が、処理ルールのスクリプト(データ処理定義ステップ)に基づいて、各エンジン200にデータ処理を実行させる具体的な動作(シーケンス)について説明する。
【0134】
まず、最初に、エンジン連携処理部110が、処理ルールR1(上述の
図2(a)参照)のデータ処理定義ステップに基づいて、エンジン200−1〜200−3にデータ処理を実行させる動作について
図10、
図11を用いて説明する。
【0135】
まず、エンジン連携処理部110は、処理ルールR1(上述の
図2(a)参照)について構文解析を行い、エンジン200−1〜200−3に対して解析した構文に基づくデータ処理を実行させるための所定の形式のフレーム(以下、「データ処理フレーム」と呼ぶ)F101を生成して、エンジン共通駆動部120に供給する(S601)。
【0136】
ステップS601で、エンジン連携処理部110が生成するデータ処理フレームF101は、例えば、
図11(a)に示すような構成となる。
図11に示すように、それぞれのデータ処理フレームは、処理指定ヘッダ部とデータ部のフィールドを有するフレームである。なお、ここでは、説明を簡易にするために、データ処理フレームは1つのフレームで1つの入力データに関する処理を行うものとして説明するが、1つの入力データに関して複数フレームに分割して処理するようにしても良い。
【0137】
データ部は、当該データ処理フレームで処理の対象となる入力データが挿入されるフィールドである。データ処理フレームF101のデータ部には、エンジン連携処理部110からの入力データ(input1)が設定されることになる。
【0138】
処理指定ヘッダ部は、当該データ処理フレームをエンジン200にデータ処理させる場合の処理順序及び、データ処理をさせる際に指定するパラメータ(付加パラメータ)について記述するフィールドである。処理指定ヘッダ部は、例えば、
図11(a)に示すように、エンジンIDと付加パラメータの組が処理順序に従って配列されたリストで示される。
【0139】
処理ルールR1のデータ処理定義ステップ(ステップS102)では、上述の通り、入力データ(input1)について、まず、エンジン200−1(Engine1)に処理させ、さらにその処理結果をエンジン200−2(Engine2)に処理させ、さらにその処理結果をエンジン200−3(Engine3)に処理させるという入れ子の構造(構文)で記述され、直列的な処理が求められる。そのため、処理指定ヘッダ部では、単純な記述で、上述のような直列的な処理を実現するために、エンジンIDと付加パラメータの組が処理順序に従って配列されたリストで記述することに対応している。
【0140】
例えば、データ処理フレームF101の処理指定ヘッダ部は、「1(output_type1,parameter1),2(output_type2,parameter2),3(output_type3,parameter3);」と記述されている。データ処理フレームF101の処理指定ヘッダ部のリストの先頭に「1(output_type1,parameter1)」が、記述されているということは、データ処理フレームF101については、最初にエンジンIDが1のエンジン200−1で処理されることを示している。すなわち、「1(output_type1,parameter1)」という記述は、上述の
図2(a)に示すステップS102−1と対応する内容となっている。また、データ処理フレームF101の処理指定ヘッダ部のリストの2番目には、上述の
図2(a)に示すステップS102−2と対応する「2(output_type2,parameter2)」が記述されている。さらに、データ処理フレームF101の処理指定ヘッダ部のリストの3番目には、上述の
図2(a)に示すステップS102−3と対応する「3(output_type3,parameter3)」が記述されている。さらにまた、データ処理フレームF101の処理指定ヘッダ部の最後尾にはリストの末尾を示す記号として「;」が記述されている。
【0141】
エンジン連携処理部110は、データ処理定義ステップの構文解析で、上述のような入れ子の構造(構文)を検出した場合には、上述のように、データ処理定義ステップを構成するサブステップの内容に基づいて、処理指定ヘッダ部に投入するリストを作成する。
【0142】
次に、以上のような構造のデータ処理フレームF101が引き渡されると、エンジン共通駆動部120は、データ処理フレームF101を構成する処理指定ヘッダ部のリストの先頭の要素である「1(output_type1,parameter1)」を参照し、データ処理フレームF101の転送先がエンジン200−1(エンジンID:1)であることを認識する。そして、エンジン共通駆動部120は、データ処理フレームF101を、エンジン200−1に引き渡す(S602)。
【0143】
そして、エンジン200−1は、データ処理フレームF101のデータ部の入力データ(input1)と、処理指定ヘッダ部のリストの先頭の要素に付加された付加パラメータ(output_type1,parameter1)を抽出する。そして、エンジン200−1は、抽出した入力データ(input1)について、付加パラメータ(output_type1,parameter1)を用いたデータ処理を行って、処理後のデータ(Analyze1)を得る。そして、エンジン200−1は、データ処理フレームF101について、データ部を処理後のデータ(Analyze1)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素「1(output_type1,parameter1)」を削除したデータ処理フレームF102(
図11(b)参照)を生成する(S603)。
【0144】
そして、エンジン200−1は、データ処理フレームF102を、エンジン共通駆動部120に引き渡す(S604)。
【0145】
次に、データ処理フレームF102が引き渡されると、エンジン共通駆動部120は、データ処理フレームF102を構成する処理指定ヘッダ部のリストの先頭の要素である「2(output_type2,parameter2)」を参照し、データ処理フレームF102の転送先がエンジン200−2(エンジンID:2)であることを認識する。そして、エンジン共通駆動部120は、データ処理フレームF102を、エンジン200−2に引き渡す(S605)。
【0146】
そして、エンジン200−2は、データ処理フレームF102のデータ部の入力データ(Analyze1)と、処理指定ヘッダ部のリストの先頭の要素に付加された付加パラメータ(output_type2,parameter2)を抽出する。そして、エンジン200−2は、抽出した入力データ(Analyze1)について、付加パラメータ(output_type2,parameter2)を用いたデータ処理を行って、処理後のデータ(Analyze2)を得る。そして、エンジン200−2は、データ処理フレームF102について、データ部を処理後のデータ(Analyze2)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素「2(output_type2,parameter2)」を削除したデータ処理フレームF103(
図11(c)参照)を生成する(S606)。
【0147】
そして、エンジン200−2は、データ処理フレームF103を、エンジン共通駆動部120に引き渡す(S607)。
【0148】
次に、データ処理フレームF103が引き渡されると、エンジン共通駆動部120は、データ処理フレームF103を構成する処理指定ヘッダ部のリストの先頭の要素である「3(output_type3,parameter3)」を参照し、データ処理フレームF103の転送先がエンジン200−3(エンジンID:3)であることを認識する。そして、エンジン共通駆動部120は、データ処理フレームF103を、エンジン200−3に引き渡す(S608)。
【0149】
そして、エンジン200−3は、データ処理フレームF103のデータ部の入力データ(Analyze2)と、処理指定ヘッダ部のリストの先頭の要素に付加された付加パラメータ(output_type3,parameter3)を抽出する。そして、エンジン200−3は、抽出した入力データ(Analyze2)について、付加パラメータ(output_type3,parameter3)を用いたデータ処理を行って、処理後のデータ(Analyze3)を得る。そして、エンジン200−3は、データ処理フレームF103について、データ部を処理後のデータ(Analyze3)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素「3(output_type3,parameter3)」を削除したデータ処理フレームF104(
図11(d)参照)を生成する(S609)。
【0150】
そして、エンジン200−3は、データ処理フレームF104を、エンジン共通駆動部120に引き渡す(S610)。
【0151】
次に、データ処理フレームF104が引き渡されると、エンジン共通駆動部120は、データ処理フレームF104を構成する処理指定ヘッダ部を参照する。この時点で、データ処理フレームF104を構成する処理指定ヘッダ部のリストは空(リストの末尾を示す記号である「;」のみが記述された状態)となるため、エンジン共通駆動部120は、データ処理フレームF104については、エンジン200ではなくエンジン連携処理部110へ送信する(S611)。
【0152】
上述のように、データ処理フレームを構成する処理指定ヘッダ部のリストが空の場合には、エンジン共通駆動部120は、当該データ処理フレームをエンジン連携処理部110に送信するものとする。このように、処理指定ヘッダ部のリストを用いてデータ処理フレームを流通させることにより、各エンジン200で処理が終了するたびに、中継処理のためだけにエンジン連携処理部110へ処理が戻されることが無くなり、効率的な処理を行うことができる。また、エンジン共通駆動部120の処理については、処理指定ヘッダ部のリストを参照して送信先を判断するという単純な処理(スイッチング処理)だけで良いため、高速処理を実現しやすくなる(例えば、構築する際のハードウェア比率を高めることが容易となる)。
【0153】
以上のように、エンジン連携処理部110では、処理ルールR1のデータ処理定義ステップに従って、データ処理フレームF101を生成して、エンジン共通駆動部120に引き渡すだけで、エンジン200−1〜200−3の処理を経た結果(Analyze3)を取得することができる。
【0154】
次に、エンジン連携処理部110が、処理ルールR2(上述の
図2(b)参照)のデータ処理定義ステップに基づいて、エンジン200−4〜200−6にデータ処理を実行させる動作について
図12、
図13を用いて説明する。
【0155】
まず、エンジン連携処理部110は、処理ルールR2(上述の
図2(b)参照)について構文解析を行い、エンジン200−4〜200−6に対して解析した構文に基づくデータ処理フレームF221、F221、F231(
図13(a)、
図13(b)、
図13(c)参照)を生成して、エンジン共通駆動部120に引き渡す(S701〜S703)。
【0156】
処理ルールR2のデータ処理定義ステップ(ステップS202)では、処理ルールR1とは異なり、複数のエンジン200に対して直列的にデータ処理をさせる入れ子の構造にはなっていないため、個別にエンジン200−4〜200−6のそれぞれにデータ処理を依頼するデータ処理フレームF211、F221、F231が生成される。
【0157】
そして、データ処理フレームF211、F221、F231が引き渡されると、エンジン共通駆動部120は、それぞれのデータ処理フレームについて、送信先のエンジン200−4〜200−6へ引き渡す(S704〜S706)。
【0158】
そして、データ処理フレームF211が引き渡されたエンジン200−4は、データ処理フレームF211のデータ部の入力データ(input1)を処理して、処理後のデータ(Analyze1)を得る。そして、エンジン200−4は、データ処理フレームF211について、データ部を処理後のデータ(Analyze1)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素を削除したデータ処理フレームF212(
図13(d)参照)を生成して(S707)、エンジン共通駆動部120に引き渡す(S710)。
【0159】
そして、データ処理フレームF221が引き渡されたエンジン200−5は、データ処理フレームF221のデータ部の入力データ(input1)を処理して、処理後のデータ(Analyze2)を得る。そして、エンジン200−5は、データ処理フレームF221について、データ部を処理後のデータ(Analyze2)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素を削除したデータ処理フレームF222(
図13(e)参照)を生成して(S708)、エンジン共通駆動部120に引き渡す(S711)。
【0160】
そして、データ処理フレームF231が引き渡されたエンジン200−6は、データ処理フレームF231のデータ部の入力データ(input1)を処理して、処理後のデータ(Analyze3)を得る。そして、エンジン200−6は、データ処理フレームF231について、データ部を処理後のデータ(Analyze3)に置換え、さらに、処理指定ヘッダ部のリストの先頭の要素を削除したデータ処理フレームF232(
図13(f)参照)を生成して(S709)、エンジン共通駆動部120に引き渡す(S712)。
【0161】
そして、データ処理フレームF212、F222、F232(全て処理指定ヘッダ部の内容は空)が引き渡されると、エンジン共通駆動部120は、データ処理フレームF212、F222、F232のそれぞれを、エンジン連携処理部110に引き渡す(S713〜715)。
【0162】
以上のように、エンジン連携処理部110では、処理ルールR2のデータ処理定義ステップに従って、データ処理フレームF211、F221、F231を生成して、エンジン共通駆動部120に引き渡すだけで、エンジン200−4〜200−6の処理を経た結果(Analyze1、Analyze2、Analyze3)を取得することができる。
【0163】
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
【0164】
ネットワーク分析システム10では、ネットワーク分析装置100上に、エンジン200を搭載し、さらに、ネットワーク分析装置100とエンジン200との間のデータ処理プロトコル(データ処理フレームを用いたやりとり)を明確にしている。これにより、ネットワーク分析装置100上で、エンジン200の単位で差し替えや仕様変更(バージョンアップ)等を行うことが容易となる。
【0165】
また、ネットワーク分析装置100では、処理ルール管理テーブル111及びエンジン管理テーブル112を設けて、処理ルールごとに使用する各エンジン200を管理している。これにより、エンジン200についてアンインストールした場合でも、システム全体の正常動作を保つことができる。
【0166】
さらに、エンジン連携処理部110と、各エンジン200の間では、データ処理フレームを用いた単純なやりとりのみで通信しているため、より高速なデータ処理を実現することができる。
【0167】
さらにまた、ネットワーク分析システム10では、複数の処理ルール間でエンジン200を共有することも可能であるため、効率的なシステム構築を行うことが容易となる。
【0168】
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0169】
(B−1)上記の実施形態では、ログ蓄積部150は、単にログデータを蓄積するだけであるが、OPS300等からアクセス可能なデータベースとして構成するようにしても良い。例えば、ネットワーク分析装置100からOPS300へネットワーク異常発生が通知された場合に、オペレータがOPS300を用いて、データベース(ログ蓄積部150)にアクセスし、発生したネットワーク異常の詳細について確認が可能なインタフェースをネットワーク分析装置100上に設けるようにしても良い。具体的には、例えば、OPS300からの操作に応じて、データベース(ログ蓄積部150)の内容の検索を行うことができるエンジン200を別途備えるようにしても良い。
【0170】
(B−2)上記の実施形態では、ネットワーク分析装置100は、ルータを流れるトラフィックを分析しているが、ルータに限定されずその他のネットワーク装置(例えば、各種サーバやファイアウォール等)に流れるトラフィックを取得して分析するようにしても良い。
【0171】
(B−3)上記の実施形態では、各エンジン200は全てことなるデータ処理を行うものとして説明したが、同一のデータ処理を行うエンジン200を複数備えて、不可分散させるように構成しても良い。その場合には、エンジン連携処理部110で、データ処理フレームを生成する際に、複数のエンジン200に同一内容の処理を振り分ける(例えば、ラウンドロビン方式等により振り分ける)処理を行わせる必要がある。
【0172】
(B−4)上記の実施形態では、エンジン連携処理部110と各エンジン200との間のデータの授受はデータ処理フレームを用いて行っているが、データの授受を行うことができれば、そのデータの構造については限定されないものである。
【0173】
(B−5)上記の実施形態では、特定のエンジン200のアンインストールの要求があった場合に、当該エンジン200を利用する処理ルールが無いことを確認することができるが、新規な処理ルールを登録した際に、その処理ルールがすでに備えられているエンジン200のみで実行可能か判断し、実行できない場合は、実行すべき処理の属性等を定義して、適切なエンジン200をOPS300等からインスルトールするような構成とすることもできる。
【0174】
(B−6)上記の実施形態では、OPS300に1つのネットワーク分析システム10が接続されているが、OPS300に複数のネットワーク分析システム10を接続してコントロールすることも可能である。このような構成の場合、たとえばOPS300が、各ネットワーク分析システム10が備えているエンジン200の種別を識別して、各ネットワーク分析システム10が実行可能な処理ルールに基づいて各ネットワーク分析システム10の役割分担を決定して、連携処理を行わせることも考えられる。
【0175】
(B−7)上記の実施形態では、ルータ400のエクスポート処理部440から送出されるレポートデータは、内部ネットワークN1を介して、レポートパケットとしてネットワーク分析システム10に入力される構成となっているが、エクスポート処理部440とネットワーク分析システム10を、内部ネットワークN1を介さずに直接接続する構成としても良い。
【0176】
(B−8)上記の実施形態で、ではルータ400に設けられたエクスポート処理部440からレポートデータを取得する構成となっているが、ネットワーク内に別途フローエクスポータ(エクスポート処理部440の機能のみを備えたネットワーク装置)を付加して、レポートデータを取得する構成としても良い。
【0177】
(B−9)上記の実施形態では、データ処理定義情報に関する情報の管理とデータ処理モジュールの管理を、テーブル形式の処理ルール管理テーブル111及びエンジン管理テーブル112を用いて行っているが、同様の機能を実行することができる構成であるなら、テーブル形式である必要は無く、例えば、データベースの形式等他の形式としても良い。