以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、ネットワークを介した通信に関する、異なる複数の周期での統計情報の取得を、効率的に行うものである。
図1は、第1の実施の形態に係る装置の機能構成例を示す図である。解析装置10は、記憶手段11、更新手段12、第1の処理手段13、および第2の処理手段14を有している。
記憶手段11は、ネットワーク1の第1の周期内での通信状況を示す統計情報3a,3b,・・・を格納している。統計情報3a,3b,・・・は、例えばネットワーク1を介して確立されたコネクションごとに設けられている。また統計情報3a,3b,・・・は、それぞれ連続の記憶領域に格納されている。
さらに統計情報3a,3b,・・・は、その一部に部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を含んでいる。部分統計情報3a−1,3a−2,3b−1,3b−2,・・・は、第1の周期よりも短い第2の周期の期間内での通信状況を示している。例えば第1の周期が1分、第2の周期が10ミリ秒である。なお統計情報3a,3b,・・・は、複数の部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を含むこともできる。例えば第2の周期ごとの期間における、現在の期間と、過去の直近の期間との部分統計情報3a−1,3a−2,3b−1,3b−2,・・・が含まれる。この場合、現在の期間の部分統計情報3a−1,3b−1,・・・が更新手段12からの更新対象となり、過去の直近の期間の部分統計情報3a−2,3b−2,・・・が第2の処理手段14からの読み出し候補となる。更新対象の部分統計情報3a−1,3b−1,・・・は、第2の周期の現在の期間が終了すると、読み出し候補に変更される。また読み出し候補の部分統計情報3a−2,3b−2,・・・は、第2の周期の現在の期間が終了すると、更新対象に変更される。
更新手段12は、ネットワーク1を介して通信されたパケット2を検出するごとに、記憶手段11内の統計情報3a,3b,・・・を更新する。なお統計情報3a,3b,・・・内に複数の部分統計情報3a−1,3a−2,3b−1,3b−2,・・・が含まれる場合、例えば第2の周期ごとの期間における現在の期間の部分統計情報3a−1,3b−1,・・・を更新する。
また更新手段12は、コネクションごとの通信の異常を検出してもよい。例えば更新手段12は、コネクションごとの更新対象の部分統計情報3a−1,3b−1,・・・内の変数値を閾値と比較して、異常の有無を判断する。比較対象の変数値が、コネクションを介した通信のデータ転送量の場合、例えば更新手段12は、その変数値が閾値以上となったときに、そのコネクションに異常が発生したものと判断する。更新手段12は、異常を検出した場合、異常が発生したコネクションを第2の処理手段14に通知する。
第1の処理手段13は、第1の周期で記憶手段11から統計情報3a,3b,・・・を読み出して、その統計情報3a,3b,・・・を処理すると共に、記憶手段11内の統計情報3a,3b,・・・を初期化する。例えば第1の処理手段13は、3a,3b,・・・を集計し、統計処理を施す。そして第1の処理手段13は、例えば処理結果5を1つのファイルとして出力する。
第2の処理手段14は、第1の周期よりも短い第2の周期で、記憶手段11から部分統計情報3a−2,3b−2,・・・を読み出して、その部分統計情報3a−2,3b−2,・・・を処理する。また第2の処理手段14は、記憶手段11内の読み出した部分統計情報3a−2,3b−2,・・・を初期化する。例えば第2の処理手段14は、第2の周期ごとの期間が終了すると、その期間で異常が検出されたコネクションの部分統計情報のみを読み出す。なお異常が検出されたコネクションの統計情報3a内に複数の部分統計情報3a−1,3a−2が含まれる場合、第2の処理手段14は、過去の直近の部分統計情報3a−2を読み出す。例えば第2の処理手段14は、読み出した部分統計情報3a−2を記憶手段11内の別の記憶領域にコピーする。そして第2の処理手段14は、コピーした部分統計情報4を用いて、例えば情報の集計や、統計処理を施す。第2の処理手段14は、部分統計情報を処理した結果、ネットワーク1上の通信の障害を検出した場合、例えば警告メッセージ6を出力する。なお第2の処理手段14は、異常が検出されたコネクションの部分統計情報のみを読み出した場合であっても、読み出し後にすべての統計情報3a,3b,・・・の読み出し候補の部分統計情報3a−2,3b−2,・・・を初期化する。その後、部分統計情報3a−1,3a−2,3b−1,3b−2,・・・の更新対象と読み出し候補が変更される。
このような解析装置10によれば、ネットワーク1を介して通信されたパケット2に基づいて、更新手段12により統計情報3a,3b,・・・が更新される。このとき、更新対象となっている部分統計情報3a−1,3b−1,・・・についても同時に更新される。更新された部分統計情報3a−1,3b−1,・・・内の所定の変数値が閾値を超えた場合、更新手段12により異常が検出される。異常が検出された場合、更新手段12から第2の処理手段14へ、異常が発生したコネクションの識別子が通知される。以下の説明では、「コネクション#1」において異常が検出されたものとする。
統計情報3a,3b,・・・は、第1の処理手段13と第2の処理手段14とにより、読み出される。例えば1分間隔程度の第1の周期で、第1の処理手段13により、統計情報3a,3b,・・・が読み出され、統計処理が施される。そして処理結果5が出力される。また10ミリ秒程度の第2の周期で、第2の処理手段14により、例えば、異常が検出されたコネクションに対応する統計情報3a中の、読み出し候補の部分統計情報3a−2が読み出される。読み出された部分統計情報3a−2は、記憶手段11内の別の記憶領域にコピーされ、コピーされた部分統計情報4に対して第2の処理手段14により統計処理が行われる。統計処理により、ネットワーク1の障害が検出されると、第2の処理手段14により、警告メッセージ6が出力される。
このようにして、第1の周期と第2の周期という異なる複数の周期での統計処理を効率的に行うことができる。すなわち、パケット2を取得する際に更新するのは、連続した記憶領域に格納された1つの統計情報でよい。そのため異なる複数の周期での統計処理を行うからといって、個別の記憶領域に格納された複数の統計情報に対する複数回の更新処理を行わずにすむ。その結果、処理が効率的となる。処理が効率的となったことで、第2の周期を、非常に短周期にすることが可能となる。例えばネットワークの異常検出としてバーストトラフィックの検出を行えば、突発的な転送データ量の増加を即座に検出することができる。
しかも、第2の処理手段14が使用する部分統計情報3a−1,3a−2,3b−1,3b−2,・・・については、第2の周期で数周期分の部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を格納できる記憶領域があればよい。そのため、メモリ消費量が節約できる。すなわち第1の周期の期間だけ、第2の周期の部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を記憶しておき、第1の周期の期間満了時に、纏めて統計処理することも考えられるが、そうすると、使用するメモリ容量が膨大となる。例えば第1の周期が1分、第2の周期が10ミリ秒であれば、第2の周期で分割した期間ごとの部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を、6000個分保存することとなる。コネクションごとに統計情報を保存するのであれば、さらに大容量のメモリを用意することとなる。大規模なシステムで10万個のコネクションが同時接続される場合もあり、そうなると、使用するメモリ容量が膨大となり、ネットワークの監視を1台のコンピュータで行うのが困難となる。一方、図1に示すように、第2の周期で数周期分の部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を格納できればよいのであれば、1台のコンピュータでも十分に実現可能となる。
さらに、第2の処理手段14が、異常と判定されたコネクションの部分統計情報3a−2のみを読み出すようにしたことで、対象となる統計処理や保存対象となるコネクション数が削減され、使用メモリと処理量が低減される。例えば第2の処理手段14を用いてバーストトラフィックを検出するのであれば、ネットワーク品質の劣化の原因となるようなトラフィックパターンのみを検出できればよく、すべてのコネクションに対する瞬間的なトラフィックの統計情報を処理することまでは要求されない。そのため、異常と判定されたコネクションの部分統計情報3a−2のみを読み出して処理しても、十分に有用なネットワーク監視が可能である。
なお、第2の処理手段14が非常に短周期で部分統計情報3a−1,3a−2,3b−1,3b−2,・・・を読み出す。そのため、第2の処理手段14が読み出すタイミングと、更新手段12が統計情報を更新するタイミングとが重なる可能性が高くなる。第2の処理手段14は、部分統計情報3a−2を読み出すと、その後、読み出し候補であった部分統計情報3a−2,3b−2を初期化する。そのため、読み出しと書き込みを同時に行うと、データの整合性が保証できなくなる。このとき、排他制御を行ったのでは処理負荷が増加してしまう。そこで第1の実施の形態の解析装置10では、統計情報3a,3b,・・・それぞれに第2の周期で取得する部分統計情報3a−1,3a−2,3b−1,3b−2,・・・の格納領域を複数設け、更新対象と読み出し候補とを第2の周期ごとに切り替えることができる。これにより1つの部分統計情報に対して第2の処理手段14の読み出しと、更新手段12による更新とが同時に発生しないようになり、データの整合性が保証される。
なお、更新手段12、第1の処理手段13、および第2の処理手段14は、例えば解析装置10が有するプロセッサにより実現することができる。また、記憶手段11は、例えば解析装置10が有するメモリにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数のノード相互間の通信について、コネクション単位で統計情報を収集するようにしたものである。
図2は、第2の実施の形態のシステム構成の一例を示す図である。複数のノード31,32,33,・・・は、スイッチ20を介して互いに接続されている。スイッチ20は、ポートミラーリング機能を有している。ポートミラーリングとは、あるポートで送受信するデータのコピーを、別のポート(ミラーポート)から送出する機能である。スイッチ20のミラーポートには、ネットワーク監視装置100が接続されている。ネットワーク監視装置100は、例えばコンピュータによって実現される。
ネットワーク監視装置100は、ミラーポートから出力されたデータを受信し、ネットワークの通信状況を監視する。ネットワーク監視装置100は、1分以上の間隔で統計情報の集計(基本統計処理)と、ミリ秒オーダの周期で統計情報の集計(バースト統計処理)との両方を並行して実行する。
図3は、本実施の形態に用いるネットワーク監視装置のハードウェアの一構成例を示す図である。ネットワーク監視装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、ネットワーク監視装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、ネットワーク監視装置100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、ネットワーク監視装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、スイッチ20に接続されている。ネットワークインタフェース108は、スイッチ20を介して、他のネットワーク監視装置または通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、通信を行う各ノード31,32,33,・・・についても、ネットワーク監視装置100と同様のハードウェアにより実現できる。さらに、第1の実施の形態に示した解析装置10も、図3に示したネットワーク監視装置100と同様のハードウェアにより実現することができる。
ネットワーク監視装置100は、例えばネットワーク監視装置を読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ネットワーク監視装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ネットワーク監視装置100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またネットワーク監視装置100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
図4は、ネットワーク監視装置の機能の一例を示すブロック図である。ネットワーク監視装置100は、情報を記憶するために、コネクション管理DB(データベース)110、統計情報DB120、バースト統計情報DB130、バーストコネクションDB140、および処理結果DB150を有している。これらのDBのうち、コネクション管理DB110、統計情報DB120、バースト統計情報DB130、およびバーストコネクションDB140については、メモリ102内に設けられる。また処理結果DB150については、HDD103内に設けられる。
コネクション管理DB110は、通信が検出されたコネクションを示す情報が登録されたDBである。統計情報DB120は、コネクションごとのパケットを解析することで得られた統計情報が登録されたDBである。バースト統計情報DB130は、バースト統計用の統計情報が登録されたDBである。バーストコネクションDB140は、バーストトラフィックが検出されたコネクションの情報が登録されたDBである。処理結果DB150は、基本統計処理によって集計された情報が格納されたDBである。コネクション管理DB110、統計情報DB120、バースト統計情報DB130、およびバーストコネクションDB140の詳細は後述する(図5〜図7参照)。処理結果DB150は、例えば1分以上の間隔で集計した統計情報に基づいて検出されたトラフィックの状態に関する情報が格納される。例えば統計周期の間に発生したトラフィックの量が過大となっている時間帯があれば、その時間帯と、トラフィックを大量に発生させたコネクションの情報などが、処理結果DB150に登録される。
通信インタフェース161は、スイッチ20のミラーポートから送出するパケットを取得する。これにより、スイッチ20を介して通信されたパケットがネットワーク監視装置100でキャプチャされる。通信インタフェース161は、取得したパケットをコネクション管理部162に渡す。
コネクション管理部162は、取得したパケットに基づいてコネクションを識別し、各コネクションにコネクションIDを付与し、コネクションの情報をコネクション管理DB110に格納する。またコネクション管理部162は、パケット受信時に、そのパケットを通信したコネクションの識別子と共に、パケットを解析部163に送信する。
解析部163は、パケットが受信されるごとに、コネクション管理部162から通知されたコネクションIDに基づいて、コネクションごとの統計情報を統計情報DB120に格納する。また解析部163は、格納した統計情報に基づいて、突発的な異常の有無を判断する。突発的な異常を検出した場合、解析部163は、バーストコネクションDB140に、異常が発生したコネクションのIDを登録する。
統計処理部164は、定期的に統計情報DB120を参照し、一定期間内の統計情報を集計し、統計処理を施す。そして統計処理部164は、統計処理の結果を処理結果DB150に格納する。統計処理部164は、統計処理が完了すると、統計情報DB120に格納されている統計情報を初期化し、次の周期の統計情報を格納できるようにする。以下、統計処理部164が統計情報を集計する周期を、基本統計周期と呼ぶ。基本統計周期は、例えば1分間隔である。
バースト統計処理部165は、所定の周期(バースト統計周期)で統計情報DB120を参照し、統計情報のうちの、バーストトラフィックの統計処理に利用する統計情報(バースト統計情報)を集計し、統計処理を施す。例えばバースト統計処理部165は、バーストコネクションDB140を参照し、バーストトラフィックが検出されたコネクションを判断する。そしてバースト統計処理部165は、統計情報DB120から、1周期の期間が満了した直近のバースト統計周期における、トラフィックが検出されたコネクションに関するバースト統計情報を、バースト統計情報DB130にコピーする。バースト統計処理部165は、該当するすべてのバースト統計情報のコピー完了後、統計情報DB120内の直近のバースト統計周期のバースト統計情報を初期化し、以後のバースト統計周期におけるバースト統計情報を格納できるようにする。そしてバースト統計処理部165は、バースト統計情報DB130にコピーしたバースト統計情報を集計し、統計的に処理する。バースト統計処理部165は、バースト統計情報を統計的に処理した結果、深刻な問題を検出した場合、警告のメッセージ(アラート)を出力する。なおバースト統計周期は、統計処理部164が行う基本統計周期よりも短い周期である。例えばバースト統計処理部165は、10ミリ秒ごとに統計情報を集計する。
出力インタフェース166は、処理結果DB150の内容やバースト統計処理部165が出力したアラートを、モニタ21に表示する。
なお、図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。図4に示した各要素は、図1に示した解析装置10の各要素を実現する手段の一例である。例えばコネクション管理DB110、コネクション管理部162、および解析部163を合わせた機能は、図1に示す更新手段12の一例である。統計情報DB120、バースト統計情報DB130、バーストコネクションDB140は、図1に示す記憶手段11の一例である。統計処理部164は、図1に示す第1の処理手段13の一例である。バースト統計処理部165は、図1に示す第2の処理手段14の一例である。
このような機能を有するネットワーク監視装置100により、ネットワークの状態が監視される。次に、図5〜図7を参照し、各DBのデータ構造について説明する。
図5は、コネクション管理DBのデータ構造の一例を示す図である。コネクション管理DB110には、コネクション管理テーブル111と例外閾値テーブル112とが格納されている。コネクション管理テーブル111は、認識したコネクションの情報が登録されたデータテーブルである。例外閾値テーブル112は、バーストトラフィックの検出する閾値に関する例外事項を定義したデータテーブルである。
コネクション管理テーブル111には、コネクションID、プロトコル、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、および宛先ポート番号の欄が設けられている。コネクションIDの欄には、コネクションの識別子(コネクションID)が設定される。プロトコルの欄には、対応するコネクションで通信したパケットが準拠している、OSI参照モデルにおけるトランスポート層(第4層)のプロトコルが設定される。トランスポート層のプロトコルには、例えばTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)がある。送信元IPアドレスの欄には、対応するコネクションで通信したパケットの送信元のノードのIPアドレスが設定される。送信元ポート番号の欄には、対応するコネクションで通信したパケットの送信元のIPポート番号が設定される。宛先IPアドレスの欄には、対応するコネクションで通信したパケットの宛先のIPアドレスが設定される。宛先ポート番号の欄には、対応するコネクションで通信したパケットの宛先のIPポート番号が設定される。
例外閾値テーブル112には、条件と例外閾値との欄が設けられている。条件の欄には、バーストトラフィック検出の閾値についての例外を適用する条件が設定される。例えば、特定のIPアドレスのノードから送信された、特定のプロトコルのコネクションについて例外的な閾値を適用することが、条件の欄に設定される。例外閾値の欄には、条件が満たされたコネクションについて適用する閾値が設定される。
図6は、統計情報DBのデータ構造の一例を示す図である。統計情報DB120には、統計情報テーブル121とグローバル制御テーブル122とが格納されている。統計情報テーブル121は、バーストトラフィック検出用の統計情報と、バーストトラフィック以外の障害などを検出するための統計情報とを纏めて登録するためのデータテーブルである。グローバル制御テーブル122は、バースト統計情報の管理に用いるグローバル変数を格納するデータテーブルである。
統計情報テーブル121には、コネクションID、バースト登録フラグ、バースト閾値、バースト統計情報、前回のパケット到着時刻、およびその他の統計情報の欄が設けられている。統計情報テーブル121の各レコードは、メモリ102内の連続した記憶領域に格納される。
コネクションIDの欄には、パケットの通信に使用されたコネクションのコネクションIDが設定される。
バースト登録フラグの欄には、対応するコネクションにおいてバーストトラフィックが検出されたか否かを示すフラグ(バースト登録フラグ)が設定される。例えばバーストトラフィックが検出された場合、バースト登録フラグ「1」が設定され、バーストトラフィックが検出されていなければ、バースト登録フラグ「0」が設定される。
バースト閾値の欄には、対応するコネクションに適用する、バーストトラフィック検出の閾値(バースト閾値)が設定される。例えば図5に示した例外閾値テーブル112の条件を満たすコネクションについては、適合した条件に対応付けられた例外閾値が、バースト閾値として設定される。また例外閾値テーブル112の条件を満たさないコネクションについては、デフォルトのバースト閾値を適用することを示す値(例えば「−1」)が、バースト閾値の欄に設定される。
バースト統計情報の欄には、バーストトラフィック検出に使用するバースト統計情報が設定される。例えばバースト統計情報は、コネクションごとの短期保存テーブル121−1,121−2に格納される。短期保存テーブル121−1,121−2内の記憶領域は、複数の制御面に分かれている。そして複数の制御面の格納領域に、バースト統計周期ごとのバースト統計情報が順番に格納される。
短期保存テーブル121−1,121−2には、コネクションID、制御面ID、C→Sパケット数、C→Sバイト数、C→Sロス数、S→Cパケット数、S→Cバイト数、およびS→Cロス数の欄が設けられている。コネクションIDの欄には、通信を行ったコネクションのコネクションIDが設定される。制御面IDの欄には、制御面の識別情報(制御面ID)が設定される。C→Sパケット数の欄には、クライアントからサーバへのパケット数が設定される。例えばリクエストメッセージを含むパケットは、クライアントからサーバへのパケットであると判断される。C→Sバイト数の欄には、クライアントからサーバに送られたデータ量(バイト数)が設定される。C→Sロス数の欄には、クライアントからサーバへのパケットのうち、消失したパケットの数が設定される。S→Cパケット数の欄には、サーバからクライアントへのパケット数が設定される。例えばリクエストに対するレスポンスメッセージを含むパケットは、サーバからクライアントへのパケットであると判断される。S→Cバイト数の欄には、サーバからクライアントに送られたデータ量(バイト数)が設定される。S→Cロス数の欄には、サーバからクライアントへのパケットのうち、消失したパケットの数が設定される。
なお、バースト統計情報には、例えば、遅延時間や帯域情報など、他のネットワーク品質の推定値を含めることもできる。
前回のパケット到着時刻の欄には、対応するコネクションにおける最後に通信されたパケットを、ネットワーク監視装置100で受信した時刻が設定される。
他の統計情報の欄には、バースト統計情報以外の、基本統計周期で集計する対象の各種統計情報が設定される。
グローバル制御テーブル122には、グローバル変数と値との欄が設けられている。グローバル変数の欄には、グローバル変数の名称が設定される。値の欄には、グローバル変数の値が設定される。グローバル変数としては、書き込み面、読み込み面、前回までの計測時刻、デフォルトバースト閾値、および登録されたバースト統計数がある。書き込み面は、解析部163がバースト統計情報を書き込むときの、書き込み先の制御面の番号を示している。読み込み面は、バースト統計処理部165がバースト統計情報をコピーする際の、コピー元の制御面を示している。前回までの計測時刻は、前回のバースト統計情報の更新完了時刻を示している。デフォルトバースト閾値は、デフォルトのバースト閾値である。登録されたバースト統計数は、バーストトラフィックが発生したと判断されたコネクションの数である。
図6に示すように、統計情報DB120内は、長期に統計情報を保存する統計情報テーブル121内に、短期間だけバースト統計情報を保存する短期保存テーブル121−1,121−2,・・・が含まれる構成となっている。このうち、短期保存テーブル121−1,121−2,・・・だけが、バースト統計情報DB130へのコピー対象となる。そして、少なくとも同一コネクションIDの同一制御面の統計情報については、メモリ102内の連続する記憶領域に格納される。こうすることで統計情報の更新(パケット到着ごとのメモリアクセス)は複数の領域にアクセスすることなく、統計情報テーブル121の1レコードにアクセスするだけですみ、処理が効率化される。さらに、バースト統計周期ごとに、短期保存テーブル121−1,121−2,・・・内の更新が終了した直近の制御面を参照し、バースト統計情報DB130にコピーすることで、バースト統計情報DB130へのアクセス回数も削減される。
図7は、バースト統計情報DBのデータ構造の一例を示す図である。バースト統計情報DB130には、バースト統計情報テーブル131が格納されている。バースト統計情報テーブル131には、バーストトラフィックが検出されたバースト統計情報が登録される。バースト統計情報テーブル131には、統計情報テーブル121(図6参照)内のバースト統計情報のコピーに加え、バースト統計情報ごとに、計測開始時刻および計測終了時刻が設定されている。計測開始時刻は、バースト統計情報に示される情報の計測を開始した時刻である。計測終了時刻は、バースト統計情報に示される情報の計測を終了した時刻である。
図8は、バーストコネクションDBのデータ構造の一例を示す図である。バーストコネクションDB140には、バーストコネクションテーブル141が設けられている。バーストコネクションテーブル141には、制御面IDとコネクションIDとの欄が設けられている。制御面IDの欄には、バーストトラフィックが検出されたバースト統計情報が格納されている制御面の識別番号が設定される。コネクションIDの欄には、バーストトラフィックが検出されたコネクションの識別子(コネクションID)が設定される。
以上のような内容のDBを用いて、統計処理を用いたネットワーク監視が行われる。ネットワーク監視は、解析処理と統計処理に分かれる。解析処理は、パケットのキャプチャから統計情報の格納までの処理である。統計処理は、統計情報を集計し、統計を採る処理である。以下、解析処理と統計処理との手順を詳細に説明する。
図9は、解析処理の手順の一例を示すフローチャートである。
[ステップS101]通信インタフェース161が、パケットをキャプチャする。パケットのキャプチャにより、パケットごとの解析処理が開始される。キャプチャしたパケットは、コネクション管理部162に転送される。
[ステップS102]コネクション管理部162は、キャプチャしたパケットが、未登録のコネクションで通信されたパケットか否かを判断する。例えばコネクション管理部162は、キャプチャしたパケットのヘッダ情報とコネクション管理テーブル111の登録情報とを照合する。そしてコネクション管理部162は、キャプチャしたパケットの送受信を行った2台のノードと同じ組み合わせのノードによる、同じプロトコルでの通信に関するコネクションの情報が、コネクション管理テーブル111に登録されているか否かを判断する。この際、送信元と宛先が入れ替わっただけのコネクションに関する情報についても、キャプチャしたパケットを通信したコネクションの情報と判断される。該当するコネクションの情報が登録されていなければ、今回キャプチャしたパケットは、未登録のコネクションを介して転送されたものと判断される。未登録のコネクションで通信されたパケットであると判断された場合、処理がステップS103に進められる。登録済みのコネクションで通信されたパケットであると判断された場合、コネクション管理部162は、キャプチャしたパケットをコネクションごとに分類し、処理をステップS105に進める。
[ステップS103]未登録のコネクションで通信されたパケットを受信した場合、コネクション管理部162は、今回受信したパケットに応じたコネクションの情報を示す新たなレコードをコネクション管理テーブル111に追加登録する。この際、解析部163は、コネクション管理部162から新たなコネクションのコネクションIDを取得し、そのコネクションIDに対応する新たなレコードを、統計情報テーブル121に追加する。
[ステップS104]解析部163は、新たに認識したコネクションのバースト閾値を設定する。例えば解析部163は、新たに認識したコネクションの情報(パケットのヘッダ情報)と、例外閾値テーブル112に設定されている条件とを照合する。合致する条件がある場合、解析部163は、その条件に対応付けられた例外閾値を、新たに認識したコネクションのバースト閾値に決定する。合致する条件がなければ、解析部163は、グローバル制御テーブル122内のデフォルトバースト閾値を、新たに認識したコネクションのバースト閾値に決定する。例外閾値をバースト閾値にすると決定した場合、解析部163は、決定した例外閾値の値を、統計情報テーブル121における新たに認識したコネクションのバースト閾値の欄にコピーする。デフォルトバースト閾値をバースト閾値にすると決定した場合、解析部163は、統計情報テーブル121における新たに認識したコネクションのバースト閾値の欄に、デフォルトバースト閾値を示す値「−1」を設定する。
これにより、バースト閾値として、基本的にはグローバル制御テーブル122に保存されているデフォルト閾値が使用される。ただし、一部のバースト統計情報を常に取得するコネクションや、逆にバースト統計情報を常に取得しないコネクションに関しては、例外閾値テーブル112に事前に設定された例外閾値が、バースト閾値として適用される。例えば異常検知に使用する変数値をパケット数やバイト数とし、その変数値がバースト閾値を超えたときに異常判定する場合がある。この場合、例外閾値を「0」に設定すれば、常にバースト統計情報を取得できる。他方、例外閾値を変数の最大値に設定すれば、どんなトラフィック状況でもバースト統計情報が登録されることはない。
[ステップS105]解析部163は、バースト統計周期(T[ミリ秒])間隔で生成されるバースト統計情報のうちの、直近のバースト統計情報を更新する(Tは、正の実数)。例えば解析部163は、まずグローバル制御テーブル122に設定されている前回までの計測時刻を確認する。また解析部163は、受信したパケットを通信したコネクションにおける前回のパケット到着時刻を、統計情報テーブル121により確認する。解析部163は、前回のパケット到着時刻が前回までの計測時刻よりも前であった場合、該当するコネクションに関する統計情報テーブル121のバースト登録フラグを「0」にリセットする。
次に解析部163は、グローバル制御テーブル122の書き込み面の値を参照し、直近のバースト統計情報のどのレコードを更新するかを判断する。例えば、書き込み面の値が「1」の場合、解析部163は、制御面IDが「1」のレコードの情報を更新する。例えば解析部163は、クライアントからサーバへのパケットを受信した場合、クライアントからサーバへの送信パケット数(C→Sパケット数)、バイト数(C→Sバイト数)を更新する。なお解析部163は、パケットのシーケンス番号などの解析により、パケットロスを検出した場合、クライアントからサーバへの送信パケットについてのパケットロス数(C→Sロス数)を更新する。また解析部163は、サーバからクライアントへのパケットを受信した場合、サーバからクライアントへの送信パケット数(S→Cパケット数)、バイト数(S→Cバイト数)を更新する。解析部163は、パケットのシーケンス番号などの解析により、パケットロスを検出した場合、サーバからクライアントへの送信パケットについての、パケットロス数(S→Cロス数)を更新する。
その後、ステップS106〜S108の処理により、受信したパケットを通信したコネクション(以下、判断対象のコネクションと呼ぶ)において、バーストトラフィックが発生したかどうが判断される。
[ステップS106]解析部163は、判断対象のコネクションにおけるバーストトラフィックの発生がすでに検出されているかどうかを判断する。例えば解析部163は、統計情報テーブル121の中のバースト登録フラグの値を参照して判断する。バースト登録フラグが「0」の場合、まだバーストトラフィックは検出されておらず、バースト登録フラグが「1」の場合はもうすでにバーストトラフィックが検出された後である。バーストトラフィックが検出されていない場合、処理がステップS107に進められる。バーストトラフィックがすでに検出されている場合、処理がステップS109に進められる。
[ステップS107]異常が検出されていない場合、解析部163は、判断対象のコネクションにバーストトラフィックが発生したかどうかを判断する。例えば解析部163は、判定に使用する閾値が「0」以上ならその値をそのまま使用し、「−1」であった場合は、グローバル制御テーブル122のデフォルト閾値を使用する。例えばバースト閾値として、送受信したバイト数の閾値が設定されているものとする。この場合、以下の式1の条件を満たした場合にバーストトラフィックが検出される。
C→Sバイト数+S→Cバイト数>バースト閾値 ・・・(1)
なお、バースト閾値として、バイト数以外のネットワーク品質の値の閾値を用いることもできる。判断対象のコネクションのバーストトラフィックが検出された場合、処理がステップS108に進められる。バーストトラフィックが検出されなければ、処理がステップS109に進められる。
[ステップS108]解析部163は、バーストトラフィックを検出した場合、判断対象のコネクションを、バーストコネクションテーブル141に登録する。例えば解析部163は、判断対象のコネクションIDを、グローバル制御テーブル122の書き込み面の値に対応付けてバーストコネクションテーブル141に登録する。また以降、バーストトラフィック判定の二度手間をなくすため、解析部163は、統計情報テーブル121における解析対象コネクションのバースト登録フラグを「1」にセットする。これで解析部163によるバーストトランザクションの有無の判断が終了し、処理がステップS109に進められる。
[ステップS109]解析部163は、バーストトランザクション検出以外のパケット解析を行う。例えば解析部163は、パケットロスの判定やパケット遅延時間の推定、ネットワーク帯域の推定などのネットワーク品質の推定を行う。その後、処理がステップS101に進められる。
このようにして、パケットがキャプチャされるごとに、統計情報の登録、およびバーストトラフィックの検出が行われる。そして、バースト統計周期ごとに、バースト統計処理が実行される。
図10は、バースト統計処理の手順の一例を示すフローチャートである。
[ステップS121]バースト統計処理部165は、前回のバースト統計処理実行から、バースト統計周期T[ミリ秒」の時間が経過したか否かを判断する。バースト統計周期の時間が経過していれば、処理がステップS122に進められる。バースト統計周期の時間が経過していなければ、ステップS121の処理が繰り返される。
[ステップS122]バースト統計処理部165は、制御面の用途切り替えを行う。例えば、制御面が表面と裏面との2面構成の場合、バースト統計処理部165は、書き込み面と読み込み面とを入れ替える。すなわち書き込み面として使用されていた制御面は読み込み面に変更され、読み込み面として使用されていた制御面は書き込み面に変更される。具体的には、バースト統計処理部165は、グローバル制御テーブル122の書き込み面と読み込み面との値を変更する。このようにバースト統計情報の書き込み面と読み込み面を切り替えることで、読み込まれる前にデータが更新されることを防ぎデータの整合性を保証することができる。この仕組みによれば、以下の式2の時間だけ、データの整合性が保証される。
(制御面の数−1)×バースト統計周期(T[ミリ秒]) ・・・(2)
なお制御面の切り替え時には、読み込み面として使用されている制御面に対応する、短期保存テーブル121−1,121−2,・・・内の変数値(バケット数、バイト数、ロス数など)は、バースト統計処理部165によって値が初期化される。例えばパケット数、バイト数、ロス数の値が「0」に変更される。
[ステップS123]バースト統計処理部165は、すべてのバースト統計情報のコピーが完了したか否かを判断する。例えばバースト統計処理部165は、複数のバーストコネクションテーブル141において、読み込み面の制御面IDに対応づけられたコネクションIDを取得する。そしてバースト統計処理部165は、取得したコネクションIDで示されるコネクションすべてについて、バースト統計情報をコピーしたか否かを判断する。バースト統計情報をコピーしていないコネクションがある場合、処理がステップS124に進められる。すべてのバースト統計情報のコピーが完了していれば、処理がステップS125に進められる。
[ステップS124]バースト統計処理部165は、まだコピーをしていないバースト統計情報を1つ選択し、コピーする。例えばバースト統計処理部165は、選択したバースト統計情報を、統計情報テーブル121から読み出し、バースト統計情報テーブル131に格納する。その後、処理がステップS123に進められる。
ステップS123,S124の処理により、バーストトラフィックが検出されたすべてのコネクションのバースト統計情報が、バースト統計情報テーブル131にコピーされる。なおバースト統計情報テーブル131は、例えば、基本統計周期の間に生じたバースト統計情報を保存できる程度の記憶領域が確保されている。
なお、前述したように、式2に示した時間だけデータの整合性が保証されている。すなわち、その時間内にバースト統計情報のコピーを完了すれば、データの不整合を生じさせずにすむ。そこでバースト統計情報の量が増えすぎた場合、後述するデフォルトバースト閾値の更新処理により、バースト統計情報の量を削減することで、データの整合性が保証される。
[ステップS125]バースト統計処理部165は、バースト統計情報のコピーが完了すると、T[ミリ秒]分のデータの統計処理を行う。統計処理としては、例えばT[ミリ秒]の間に登録されたバースト統計情報数(バーストトラフィックが検出されたコネクション数に等しい)のカウントが行われる。また統計処理において、バーストトラフィック検出に使用した変数の(例えば送受信したバイト数)により、バースト統計情報をソートすることも考えられる。バースト統計情報をソートすることで、例えば、バースト統計情報が異常の度合で順位付けされる。
[ステップS126]バースト統計処理部165は、統計処理が終わると、今回異常を検出したコネクションの中に深刻な問題がないかどうかを判断する。深刻な問題かどうかは、例えばパケットロスの発生度合いが、所定値以上かどうかで判断される。図7の例では、最初の計測時間帯のコネクションID「1」のコネクションにおいて、サーバからクライアントへのパケット送信において、パケットロスが10%も起きている。10%ものパケットがロスするというのは、深刻な問題である。深刻な問題が発生している場合は処理がステップS127に進められる。深刻な問題が発生していなければ、処理がステップS128に進められる。
[ステップS127]深刻な問題が発生している場合、バースト統計処理部165は、アラートを発信する。例えばバースト統計処理部165は、以下のようなアラート信号を発信しネットワーク品質の低下を、ただちに通知する。
“Warning!! Packet loss has occurred in large quantities. s#time=0, e#time=10, proto=TCP, s#ip=192.168.3.100, d#ip=192.168.4.100, s#port=443, d#port=400, c2s#cnt=20, c2s#byte=2000, c2s#loss=0, s2c#cnt=50, s2c#byte=60000, s2c#loss=5"
発信されたアラートは、例えばネットワーク監視装置100のモニタ21に表示される。これにより、管理者は、問題の発生を迅速に認識することができる。
[ステップS128]バースト統計処理部165は、デフォルトバースト閾値を更新する。デフォルトバースト閾値の更新後、バースト統計処理部165は、グローバル制御テーブル122の前回までの計測時刻を書換え、処理をステップS121に進める。
次に、デフォルトバースト閾値の更新処理について、詳細に説明する。
図11は、デフォルトバースト閾値の更新処理の手順を示すフローチャートである。
[ステップS131]バースト統計処理部165は、バーストトラフィックが検出されたコネクション数を、既定範囲と比較する。既定範囲は、範囲の上限値と下限値によってあらかじめ指定されている。既定範囲の上限値は、例えばバースト統計情報の保存領域の限界に基づいて設定される。既定範囲の下限値は、例えば出力すべき順位数が足りているかに基づいて設定される。例えば少なくとも上位200件のバースト統計情報を出力することを目標とした場合、下限値が200に設定される。既定範囲は、例えば式2に示した、データの整合性が保証される時間に応じて設定される場合もある。すなわち、データの整合性が保証される時間内にコピー可能なバースト統計情報数の上限が、既定範囲の上限値に設定される。
バーストトラフィックが検出されたコネクション数が、既定範囲の下限値以下であれば、処理がステップS132に進められる。またバーストトラフィックが検出されたコネクション数が既定範囲の上限値以上であれば、処理がステップS133に進められる。さらにバーストトラフィックが検出されたコネクション数が、既定範囲内(下限値より多く、上限値未満)であれば、処理が終了する。
[ステップS132]バーストトラフィックが検出されたコネクション数が、既定範囲の下限値以下の場合、バースト統計処理部165は、デフォルトバースト閾値の値を増加させ、処理を終了する。このように、バーストコネクションテーブルに登録されたコネクション数が少なすぎる場合、その数を増やすため、バーストトラフィックであるとの判定が緩くなるようにデフォルトバースト閾値が変更される。例えば以下の式3によりバースト閾値のデフォルト値が1倍以上2倍以下の間で変更される。
TSdef=(1+(Nmin−x)/Nmin)×TSdef ・・・(3)
ここでTSdefは、デフォルトバースト閾値である。Nminは、出力するコネクション数である。xは、実際に登録されたコネクション数である。
[ステップS133]バーストトラフィックが検出されたコネクション数が、既定範囲の上限値以上の場合、バースト統計処理部165は、デフォルトバースト閾値の値を減少させ、処理を終了する。このように、バーストコネクションテーブルに登録されていたコネクション数が多すぎる場合、その数を減らすために、バーストトラフィックであるとの判定が厳しくなるように、デフォルトバースト閾値が変更される。
例えばバースト統計処理部165は、バーストトラフィックが検出されたコネクションをバーストトラフィック検出に用いた変数値(例えば送信されたデータ量)でのソート結果を参照する。バースト統計処理部165は、ソート結果から、既定範囲の下限値の順位のコネクションと上限値の順位のコネクションとを特定する。そして、バースト統計処理部165は、下限値の順位と上限値の順位との真ん中の順位のコネクションの変数値を、バースト閾値のデフォルト値に設定する。これは、ソート後の順番が下限値から上限値までの範囲に含まれるコネクションの集合に関する、変数値の中央値である。例えばバーストトラフィックの検出に使用する変数がパケットの転送量であるものとする。また出力するコネクション数の目標は上位200件であり、バースト統計周期10ミリ秒あたりに登録できる最大コネクション数が1000件であるものとする。この場合、バケット転送量の多い順でソートしたときの、200番目と1000番目との真ん中の順位である、600番目に転送量が多いコネクションの転送量が、デフォルトバースト閾値に設定される。
このようにして、適切な量のバースト統計情報を抽出し、統計解析を行うことができる。すなわち、トラフィックの状況により、バーストトラフィックが検出されるコネクションの数が変動する。検出されるコネクション数が過大になると使用メモリ量も大量になり、メモリの領域が確保できずにプログラムがハングすることが考えらえる。また計測しているネットワークの帯域が狭かった場合、帯域がひっ迫しているのに1コネクションも異常コネクションとして登録されない可能性もある。そこでバーストコネクションテーブルに登録されたコネクション数を元にデフォルト閾値を適宜変更することで、バーストトラフィックとして検出されるコネクション数の変動が抑止される。
以上説明したように、第2の実施の形態によれば、短い周期での統計情報の取得と長い周期での統計情報の取得とを効率的に行い、バーストトラフィックの発生を検出することができる。
すなわち基本統計処理によりバーストトラフィックを検出しようとする、統計情報をミリ秒オーダの間隔で、例えばCSV(Comma Separated Values )ファイルに纏め、データベース(DB)に格納することとなる。DBは、HDD内に設けられる。コンピュータの特性上HDDへのアクセスは、メモリアクセスに比べて時間がかかり、HDDへのアクセスが多いほど、処理負荷が重くなる。そのため基本統計処理で処理対象とする統計情報を、ミリ秒オーダの間隔でDBに書き込むのは困難である。
HDDに統計情報を書き込めなければ、統計情報をメモリ中に保持することが考えられる。例えば基本統計周期と統計情報のDBへの書込み周期とを共に1分間隔、バースト統計周期を10ミリ秒間隔と設定した場合を考える。この場合、基本統計処理により保存する統計情報の6000倍のデータ量をメモリに保持することになる。しかし、既存の6000倍のデータ量を1台のコンピュータのメモリに保存するのには無理がある。
なお、バーストトラフィック検出用の統計情報に最適化されたバースト統計専用テーブルを、既存のパケット解析で使用する統計テーブルとは別に設計し、メモリに保持させることも考えられる。その場合、パケット到着ごとに、既存の統計情報格納用の統計情報テーブルとバースト統計専用テーブルとの両方に、統計情報格納のアクセスが発生する。コンピュータの特性上、連続でない複数のメモリ領域へのアクセスは時間がかかる。そのため複数のテーブルへ統計情報を格納するようにすると、処理性能が劣化する。なおパケットの解析を、既存の統計情報格納用と、バースト検出用とで、個別のプロセスで並列して行うことで、メモリアクセス処理の効率化を図ることも考えられる。しかし、統計情報をコネクションごとに格納するには、パケットをコネクションごとに分類することとなる。この分類を異なるプロセスで個別に行うと、処理が増加してしまい、結局のところ処理効率が悪化する。
そこで第2の実施の形態では、パケットキャプチャごとの統計情報の書き込み先を1つの統計情報テーブル121で済ませている。そのため処理が効率化される。
図12は、第2の実施の形態に係る処理の適用の有無による処理効率の違いについて説明する図である。図12中の左側に、統計処理を行う統計周期ごとの統計情報テーブル121a,121bを設けた例を示している。図12中の右側に、1つの統計情報テーブル121のみを設けた例を示している。
統計処理を行う統計周期ごとの統計情報テーブル121a,121bを設けた場合、統計情報の書き込みを行う解析部163aは、キャプチャしたパケットを受信するごとに、両方の統計情報テーブル121a,121bに書き込みを行う。例えば統計情報テーブル121a,121bがメモリ内にあったとしても、CPUの動作クロックにおいて、1回の書き込みに100〜300クロックの時間がかかる。すると2つの統計情報テーブル121a,121bに書き込みを完了するには、200〜600クロックの時間を要する。
他方、第2の実施の形態では、バースト統計情報は、統計情報全体の一部である。そのため、解析部163は、基本統計処理用の統計情報と、バースト統計処理用の統計情報とを纏めてメモリ内の統計情報テーブル121に書き込めばよい。このように統計情報の書き込み先を1つの統計情報テーブル121にすれば、解析部163は、100〜300クロックの時間で書き込みを完了できる。従って、書き込みに要する時間が半減する。
なお、統計情報テーブル121には、バースト統計情報以外にも、1分ごとに実施する基本統計処理で使用する統計情報も書き込まれる。そのため、統計情報テーブル121内には、基本的には1分間分の統計情報が保持され、1分ごとに新たな統計周期の統計情報に書き換えられる。ただし、バースト統計情報までも1分間分保持したのでは、データ量が膨大になる。そこで、第2の実施の形態では、バースト統計情報を10ミリ秒ごとに別の領域にコピーし、10ミリ秒単位で統計情報テーブル121内のバースト統計情報を更新する。これにより統計情報テーブル121内のバースト統計情報の格納領域を節約できる。
図13は、バースト統計情報のコピー動作の一例を示す図である。スイッチ20を介して通信されるネットワーク21a上のパケットがキャプチャされると、解析部163により、パケットの到着ごとに、統計情報テーブル121に統計情報が格納される。そのとき、解析部163により、バースト統計情報に示されるデータ転送量などの変数値に基づいて、バーストトラフィックの検出が行われる。そしてバーストトラフィックが検出されれば、解析部163により、バーストトラフィックが発生したコネクションのコネクションIDが、バーストコネクションテーブル141に登録する。
統計処理としては、統計処理部164により、基本統計処理が例えば1分周期で行われ、統計処理結果が処理結果DB150に出力される。処理結果DB150は例えばHDD103内に設けられる。HDD103へ書き込みは時間がかかるが、1分周期であれば全体の処理効率に与える悪影響は少なくて済む。
他方、バースト統計処理部165によるバースト統計処理は、例えば10ミリ秒周期で行われる。このときバースト統計処理部165は、バーストコネクションテーブル141を参照し、バーストトラフィックが発生したコネクションのバースト統計情報のみを、バースト統計情報テーブル131にコピーする。そしてバースト統計情報テーブル131にコピーしたバースト統計情報に基づいて、バースト統計処理部165によってバースト統計処理が行われ、例えば重大な障害の発生の有無が判断される。
このように、10ミリ秒ごとにバースト統計情報をコピーすることで、統計情報テーブル121の記憶容量の増加を抑止できる。しかも、バーストトラフィックが発生したコネクションに関するバースト統計情報のみをコピーするようにしたことで、コピーするデータ量が抑制され、処理効率が向上する。
さらに第2の実施の形態では、重大な障害の発生が検出された場合、即座にアラートが出力される。このような迅速なアラートの出力は、サーバの仮想化技術の進歩に伴って、重要度が増している。すなわち、近年、サーバ仮想化に追随してネットワーク設定を通信の状況に応じて動的に各種設定が可能な、ネットワークの仮想化技術が登場している。このような技術として、例えばOpenFlow(OpenFlowスイッチングコンソーシアム提唱のネットワーク制御技術)がある。以前のネットワーク設定はネットワーク管理者が手動で行うものであった。そのため1分間隔での異常検出・通知で間に合っていた。しかし、ネットワーク設定を動的に制御する場合、1分周期程度での異常検出・通知では遅すぎる。第2の実施の形態によれば、10ミリ秒程度の周期で異常検出・通知を行うことができ、極めて迅速な異常通知が可能である。
ところで、図12の右側に示すように、統計情報テーブル121内のバースト統計情報に直接アクセスして、バースト統計処理を行うようにすると、統計情報テーブル121へ異なる複数の機能からアクセスが発生する。例えば、統計情報テーブル121に対し、解析部163、バースト統計処理部165、およびCSVに纏めて統計処理結果を処理結果DB150に出力するための統計処理部164が、読み書きのアクセスを行う。異なる機能が共通のテーブルの読込と書込を実行すると、データの読込中にデータが書き換えられ、データの整合性を保証できなくなってしまう可能性がある。
特に銀行のATM(Automated Teller Machine)などデータの整合性を保証しなければならないシステムでは、ロック機能により、1つのプロセスのみデータにアクセスできるようにしている。ロック機能は、書込みや読込が行われている間は他のプロセスがデータへアクセスできないよう制限する。ロック機能を用いたアクセス制限により、データの整合性が保証されている。しかし、ロック機能はアクセスが制限されている間他のプロセスの処理が止まってしまうので処理性能が著しく劣化する。
近年のネットワークは100Gbpsで通信することもできる。このような高速な通信ネットワークを監視する場合に、アクセス制限されている間プロセスの処理が止まってしまうと、処理が間に合わなくなりネットワーク品質の推定ができなくなる。
そこで、第2の実施の形態では、統計情報テーブル121内のバースト統計情報の格納領域として、複数の制御面を設け、各制御面に10ミリ秒ずつ順番にバースト統計情報を格納するようにした。これにより、ロック機構を用いずに、データの整合性を保つことが可能となる。
図14は、データの不整合の抑止処理の一例を示す図である。図14では、上段に、データの不整合の発生状況が示されており、下段に、データの不整合の抑止処理を示している。
まず、データの不整合の発生状況について説明する。例えば統計情報テーブル121c内に、バースト統計情報の格納領域として、バースト統計周期の1周期分の領域しか設けられていない場合を想定する。この場合、解析部163が統計情報テーブル121cのバースト統計情報の格納領域の値を、パケット到着ごとに更新する。例えば、転送されたパケット数をカウントアップし、新たに転送されたデータ長の分だけ、転送されたデータ量の値を増加させる。他方バースト統計処理部165は、10ミリ秒周期で統計情報テーブル内のバースト統計情報の記憶領域からバースト統計情報を読み出す。このとき解析部163がバースト統計情報を更新する直前にバースト統計処理部165が読み出すと、更新前の情報を読み出すこととなる。ロック機構を用いていなければ、直後に解析部163がバースト統計情報を更新する。そうすると、バースト統計処理部165が読み出したバースト統計情報と、解析部163が更新したバースト統計情報との間に不整合が生じる。しかもバースト統計処理部165は、バースト統計情報を読み取った後、次のバースト統計周期のバースト統計情報取得用に、統計情報テーブル121c内のバースト統計情報を初期化してしまう。その結果、解析部163が最後に取得したパケットに関する情報が、いずれの周期のバースト統計情報にも反映されなくなる。
そこで第2の実施の形態では、バースト統計情報の格納領域として、複数の制御面を設けている。図14の例では、制御面として、表面と裏面との2面が設けられている。パケットが到着した際には、解析部163は、一方の制御面(例えば表面)にバースト統計情報を書き込む。その間、バースト統計処理部165は、前のバースト統計周期で格納されたバースト統計情報を、他方の制御面(例えば裏面)から読み出し、バースト統計情報テーブル131に書き込む。このように、同じ時間帯で解析部163とバースト統計処理部165とが共通のバースト統計情報にアクセスすることを抑止することができる。その結果、バースト統計情報の不整合が抑止される。
また解析部163は、バーストトラフィックが発生したコネクションのコネクションIDを、現在バースト統計情報の書き込み対象となっている制御面(例えば表面)に対応付けて、バーストコネクションテーブル141に書き込む。そしてバースト統計処理部165は、バーストコネクションテーブル141を参照し、バースト統計情報の読み出し対象の制御面(例えば裏面)に対応付けて登録されたコネクションIDに基づいて、読み出すバースト統計情報を判断する。このように、バーストコネクションテーブル141において、バーストトラフィックが発生したコネクションのコネクションIDが、制御面に対応付けて管理される。その結果、複数の制御面を設けた場合でも、各制御面からバーストトラフィックが発生したコネクションのバースト統計情報のみを正しく読み出すことができる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。