(57)【要約】【課題】異なる複数の周期での統計情報の取得を効率的に行う。【解決手段】解析装置１０の更新手段１２は、ネットワークを介して通信されたパケットを検出するごとに、記憶手段内の連続の記憶領域に格納されており、ネットワークの第１の周期内での通信状況を示す統計情報を更新する。次に第１の処理手段１３は、第１の周期で記憶手段１１から統計情報３ａ，３ｂ，・・・を読み出して該統計情報を処理すると共に、記憶手段１１内の統計情報ａ，３ｂ，・・・を初期化する。第２の処理手段１４は、第１の周期よりも短い第２の周期で、統計情報３ａの一部である部分統計情報３ａ−２を記憶手段１１から読み出してその部分統計情報３ａ−２を処理すると共に、記憶手段１１内の部分統計情報を初期化する。【選択図】図１
2015089014.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ネットワークを介して通信されたパケットを検出するごとに、記憶手段内の連続の記憶領域に格納されており、前記ネットワークの第１の周期内での通信状況を示す統計情報を更新し、
前記第１の周期で前記記憶手段から該統計情報を読み出して該統計情報を処理すると共に、前記記憶手段内の該統計情報を初期化し、
前記第１の周期よりも短い第２の周期で、該統計情報の一部である部分統計情報を前記記憶手段から読み出して該部分統計情報を処理すると共に、前記記憶手段内の該部分統計情報を初期化する、
処理を実行させる解析プログラム。
【請求項２】
部分統計情報の読み出しでは、読み出した部分統計情報を前記連続の記憶領域とは別の記憶領域にコピーし、コピーされた部分統計情報を用いて処理を行うことを特徴とする請求項１記載の解析プログラム。
【請求項３】
前記統計情報は、前記ネットワークを介して確立されたコネクションごとに前記記憶手段に格納されており、
前記コンピュータに、さらに、コネクションごとの通信の異常を検出する処理を実行させ、
部分統計情報の読み出しでは、前記記憶手段から、異常が検出されたコネクションの部分統計情報を読み出す、
ことを特徴とする請求項１または２に記載の解析プログラム。
【請求項４】
通信の異常の検出では、コネクションごとの部分統計情報内の変数値を閾値と比較して、異常の有無を判断することを特徴とする請求項３記載の解析プログラム。
【請求項５】
異常を検出したコネクションの数に応じて閾値を変更することを特徴とする請求項４記載の解析プログラム。
【請求項６】
異常の検出では、バーストトラフィックの発生を検出することを特徴とする請求項３乃至５のいずれかに記載の解析プログラム。
【請求項７】
統計情報には、前記第２の周期ごとの期間における、現在の期間と、過去の直近の期間との部分統計情報が含まれており、
統計情報の更新では、前記現在の期間に対応する部分統計情報を更新し、
部分統計情報の読み出しでは、前記過去の直近の期間の部分統計情報を読み出す、
ことを特徴とする請求項１乃至６のいずれかに記載の解析プログラム。
【請求項８】
前記コンピュータに、さらに、
部分統計情報を処理した結果、前記ネットワーク上の通信の障害を検出した場合、警告のメッセージを出力する処理を実行させることを特徴とする請求項１乃至７のいずれかに記載の解析プログラム。
【請求項９】
コンピュータが、
ネットワークを介して通信されたパケットを検出するごとに、記憶手段内の連続の記憶領域に格納されており、前記ネットワークの第１の周期内での通信状況を示す統計情報を更新し、
前記第１の周期で前記記憶手段から該統計情報を読み出して該統計情報を処理すると共に、前記記憶手段内の該統計情報を初期化し、
前記第１の周期よりも短い第２の周期で、該統計情報の一部である部分統計情報を前記記憶手段から読み出して該部分統計情報を処理すると共に、前記記憶手段内の該部分統計情報を初期化する、
解析方法。
【請求項１０】
ネットワークを介して通信されたパケットを検出するごとに、記憶手段内の連続の記憶領域に格納されており、前記ネットワークの第１の周期内での通信状況を示す統計情報を更新する更新手段と、
前記第１の周期で前記記憶手段から該統計情報を読み出して該統計情報を処理すると共に、前記記憶手段内の該統計情報を初期化する第１の処理手段と、
前記第１の周期よりも短い第２の周期で、該統計情報の一部である部分統計情報を前記記憶手段から読み出して該部分統計情報を処理すると共に、前記記憶手段内の該部分統計情報を初期化する第２の処理手段と、
を有する解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介した通信状況を解析する解析プログラム、解析方法、および解析装置に関する。
【背景技術】
【０００２】
ネットワークを通してサービスを提供する機会が増えている。ネットワークを介したサービスのサービス提供者は、サービスの品質を維持するために、ネットワーク品質を監視している。
【０００３】
ネットワーク品質の監視は、大別すると解析機能と統計機能とによって実現される。解析機能はパケットが到着するごとに、パケットヘッダの情報を解析することでパケットをコネクションごとに、各種統計情報（送受信パケット数／バイト数、パケットロス数、遅延時間など）をほぼリアルタイムに解析して、統計テーブルに保存する。統計機能は一定の統計周期ごとに、統計テーブルの情報を集計し、集計結果に関する統計的な処理を行い、その結果を統計情報ＤＢに書込む。統計情報の統計周期は短いものでも１分間隔であり、長いものだと１日単位といったシステムも存在する。
【０００４】
サービスの品質を維持するには、瞬間的なネットワーク品質劣化についても、検出できることが重要である。例えばネットワークでは、トラフィック量が突発的に増加することがある。このように、瞬間的にトラフィック量が突出して増加することを、バーストトラフィックと言う。
【０００５】
バーストトラフィックを検出するためには、少なくともミリ秒オーダの周期で統計情報を集計し、統計を出すことになる。既存のパケット解析の統計周期を早くすることは計算コストや解析に必要なパケットサンプル数の肥大化を招き、統計周期ごとのすべての統計情報を記録することは困難である。例えば１０ミリ秒ごとに統計情報を蓄積すると、１分間隔で統計情報を蓄積する場合に比べ６０００倍のデータ量となる。これほどの量の統計情報を生成、蓄積するには、処理負荷が重く、現実的ではない。
【０００６】
そこで、例えば微少な時間ごとにリンク内を流れるトラフィック量を計測し、この計測結果があらかじめ定められた閾値を超える場合にのみ、もしくは上位所定数のデータについてのみ、計測結果を記憶する技術が考えられている。また、第１統計情報を保持する第１メモリと、第２統計情報を保持する第２メモリとを設け、第１および第２統計情報を所定の時間単位で分割して取得すると共に、第１統計情報を第１メモリに保持させ、第２統計情報を第２メモリに保持させる技術も考えられている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−１１８５５６号公報
【特許文献２】特開２０１２−１９９７０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、微小時間単位の統計情報のうちの、ある条件を満たした時間帯の統計情報のみを保存することとすると、従来通りの比較的長い時間間隔での統計を採ることができない。微小な時間単位での統計情報の取得によりバーストトラフィックの発生が検出できたとしても、比較的長い時間間隔でのネットワーク監視による品質管理が疎かになったのでは、ネットワークの品質を適切に維持することが困難である。
【０００９】
そこで微小時間単位での統計情報の保存機能と、比較的長い時間間隔での統計情報の保存機能とを併存することが考えられる。その場合、微小時間単位での統計情報保存用のデータテーブル（短周期統計テーブル）と、比較的長い時間単位での統計情報保存用のデータテーブル（長周期統計テーブル）とが用意される。すると、パケット到着ごとに、短周期統計テーブルと長周期統計テーブルとの両方にデータアクセスが発生する。計算機の特性上、連続でない異なるメモリ領域へのアクセスが行われると処理コストが大きくなり、解析機能の処理性能が劣化する。例えば、メインメモリへのアクセスは通常の四則演算などの１００〜３００倍の時間がかかる。そのため微小時間単位での統計情報の保存機能と、比較的長い時間間隔での統計情報の保存機能とを併存させると、計算機にかかる処理負荷が過大となる。
【００１０】
１つの側面では、本件は、異なる複数の周期での統計情報の取得を効率的に行うことを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、コンピュータに以下の処理を実行させる解析プログラムが提供される。解析プログラムに従ってコンピュータは、まず、ネットワークを介して通信されたパケットを検出するごとに、記憶手段内の連続の記憶領域に格納されており、ネットワークの第１の周期内での通信状況を示す統計情報を更新する。次にコンピュータは、第１の周期で記憶手段から該統計情報を読み出して該統計情報を処理すると共に、記憶手段内の該統計情報を初期化する。そしてコンピュータは、第１の周期よりも短い第２の周期で、記憶手段から該統計情報の一部である部分統計情報を読み出して該部分統計情報を処理すると共に、記憶手段内の該部分統計情報を初期化する。
【発明の効果】
【００１２】
１態様によれば、異なる複数の周期での統計情報の取得を効率的に行うことができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】本実施の形態に用いるネットワーク監視装置のハードウェアの一構成例を示す図である。
【図４】ネットワーク監視装置の機能の一例を示すブロック図である。
【図５】コネクション管理ＤＢのデータ構造の一例を示す図である。
【図６】統計情報ＤＢのデータ構造の一例を示す図である。
【図７】バースト統計情報ＤＢのデータ構造の一例を示す図である。
【図８】バーストコネクションＤＢのデータ構造の一例を示す図である。
【図９】解析処理の手順の一例を示すフローチャートである。
【図１０】バースト統計処理の手順の一例を示すフローチャートである。
【図１１】デフォルトバースト閾値の更新処理の手順を示すフローチャートである。
【図１２】第２の実施の形態に係る処理の適用の有無による処理効率の違いについて説明する図である。
【図１３】バースト統計情報のコピー動作の一例を示す図である。
【図１４】データの不整合の抑止処理の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。第１の実施の形態は、ネットワークを介した通信に関する、異なる複数の周期での統計情報の取得を、効率的に行うものである。
【００１５】
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。解析装置１０は、記憶手段１１、更新手段１２、第１の処理手段１３、および第２の処理手段１４を有している。
【００１６】
記憶手段１１は、ネットワーク１の第１の周期内での通信状況を示す統計情報３ａ，３ｂ，・・・を格納している。統計情報３ａ，３ｂ，・・・は、例えばネットワーク１を介して確立されたコネクションごとに設けられている。また統計情報３ａ，３ｂ，・・・は、それぞれ連続の記憶領域に格納されている。
【００１７】
さらに統計情報３ａ，３ｂ，・・・は、その一部に部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を含んでいる。部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・は、第１の周期よりも短い第２の周期の期間内での通信状況を示している。例えば第１の周期が１分、第２の周期が１０ミリ秒である。なお統計情報３ａ，３ｂ，・・・は、複数の部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を含むこともできる。例えば第２の周期ごとの期間における、現在の期間と、過去の直近の期間との部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・が含まれる。この場合、現在の期間の部分統計情報３ａ−１，３ｂ−１，・・・が更新手段１２からの更新対象となり、過去の直近の期間の部分統計情報３ａ−２，３ｂ−２，・・・が第２の処理手段１４からの読み出し候補となる。更新対象の部分統計情報３ａ−１，３ｂ−１，・・・は、第２の周期の現在の期間が終了すると、読み出し候補に変更される。また読み出し候補の部分統計情報３ａ−２，３ｂ−２，・・・は、第２の周期の現在の期間が終了すると、更新対象に変更される。
【００１８】
更新手段１２は、ネットワーク１を介して通信されたパケット２を検出するごとに、記憶手段１１内の統計情報３ａ，３ｂ，・・・を更新する。なお統計情報３ａ，３ｂ，・・・内に複数の部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・が含まれる場合、例えば第２の周期ごとの期間における現在の期間の部分統計情報３ａ−１，３ｂ−１，・・・を更新する。
【００１９】
また更新手段１２は、コネクションごとの通信の異常を検出してもよい。例えば更新手段１２は、コネクションごとの更新対象の部分統計情報３ａ−１，３ｂ−１，・・・内の変数値を閾値と比較して、異常の有無を判断する。比較対象の変数値が、コネクションを介した通信のデータ転送量の場合、例えば更新手段１２は、その変数値が閾値以上となったときに、そのコネクションに異常が発生したものと判断する。更新手段１２は、異常を検出した場合、異常が発生したコネクションを第２の処理手段１４に通知する。
【００２０】
第１の処理手段１３は、第１の周期で記憶手段１１から統計情報３ａ，３ｂ，・・・を読み出して、その統計情報３ａ，３ｂ，・・・を処理すると共に、記憶手段１１内の統計情報３ａ，３ｂ，・・・を初期化する。例えば第１の処理手段１３は、３ａ，３ｂ，・・・を集計し、統計処理を施す。そして第１の処理手段１３は、例えば処理結果５を１つのファイルとして出力する。
【００２１】
第２の処理手段１４は、第１の周期よりも短い第２の周期で、記憶手段１１から部分統計情報３ａ−２，３ｂ−２，・・・を読み出して、その部分統計情報３ａ−２，３ｂ−２，・・・を処理する。また第２の処理手段１４は、記憶手段１１内の読み出した部分統計情報３ａ−２，３ｂ−２，・・・を初期化する。例えば第２の処理手段１４は、第２の周期ごとの期間が終了すると、その期間で異常が検出されたコネクションの部分統計情報のみを読み出す。なお異常が検出されたコネクションの統計情報３ａ内に複数の部分統計情報３ａ−１，３ａ−２が含まれる場合、第２の処理手段１４は、過去の直近の部分統計情報３ａ−２を読み出す。例えば第２の処理手段１４は、読み出した部分統計情報３ａ−２を記憶手段１１内の別の記憶領域にコピーする。そして第２の処理手段１４は、コピーした部分統計情報４を用いて、例えば情報の集計や、統計処理を施す。第２の処理手段１４は、部分統計情報を処理した結果、ネットワーク１上の通信の障害を検出した場合、例えば警告メッセージ６を出力する。なお第２の処理手段１４は、異常が検出されたコネクションの部分統計情報のみを読み出した場合であっても、読み出し後にすべての統計情報３ａ，３ｂ，・・・の読み出し候補の部分統計情報３ａ−２，３ｂ−２，・・・を初期化する。その後、部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・の更新対象と読み出し候補が変更される。
【００２２】
このような解析装置１０によれば、ネットワーク１を介して通信されたパケット２に基づいて、更新手段１２により統計情報３ａ，３ｂ，・・・が更新される。このとき、更新対象となっている部分統計情報３ａ−１，３ｂ−１，・・・についても同時に更新される。更新された部分統計情報３ａ−１，３ｂ−１，・・・内の所定の変数値が閾値を超えた場合、更新手段１２により異常が検出される。異常が検出された場合、更新手段１２から第２の処理手段１４へ、異常が発生したコネクションの識別子が通知される。以下の説明では、「コネクション＃１」において異常が検出されたものとする。
【００２３】
統計情報３ａ，３ｂ，・・・は、第１の処理手段１３と第２の処理手段１４とにより、読み出される。例えば１分間隔程度の第１の周期で、第１の処理手段１３により、統計情報３ａ，３ｂ，・・・が読み出され、統計処理が施される。そして処理結果５が出力される。また１０ミリ秒程度の第２の周期で、第２の処理手段１４により、例えば、異常が検出されたコネクションに対応する統計情報３ａ中の、読み出し候補の部分統計情報３ａ−２が読み出される。読み出された部分統計情報３ａ−２は、記憶手段１１内の別の記憶領域にコピーされ、コピーされた部分統計情報４に対して第２の処理手段１４により統計処理が行われる。統計処理により、ネットワーク１の障害が検出されると、第２の処理手段１４により、警告メッセージ６が出力される。
【００２４】
このようにして、第１の周期と第２の周期という異なる複数の周期での統計処理を効率的に行うことができる。すなわち、パケット２を取得する際に更新するのは、連続した記憶領域に格納された１つの統計情報でよい。そのため異なる複数の周期での統計処理を行うからといって、個別の記憶領域に格納された複数の統計情報に対する複数回の更新処理を行わずにすむ。その結果、処理が効率的となる。処理が効率的となったことで、第２の周期を、非常に短周期にすることが可能となる。例えばネットワークの異常検出としてバーストトラフィックの検出を行えば、突発的な転送データ量の増加を即座に検出することができる。
【００２５】
しかも、第２の処理手段１４が使用する部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・については、第２の周期で数周期分の部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を格納できる記憶領域があればよい。そのため、メモリ消費量が節約できる。すなわち第１の周期の期間だけ、第２の周期の部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を記憶しておき、第１の周期の期間満了時に、纏めて統計処理することも考えられるが、そうすると、使用するメモリ容量が膨大となる。例えば第１の周期が１分、第２の周期が１０ミリ秒であれば、第２の周期で分割した期間ごとの部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を、６０００個分保存することとなる。コネクションごとに統計情報を保存するのであれば、さらに大容量のメモリを用意することとなる。大規模なシステムで１０万個のコネクションが同時接続される場合もあり、そうなると、使用するメモリ容量が膨大となり、ネットワークの監視を１台のコンピュータで行うのが困難となる。一方、図１に示すように、第２の周期で数周期分の部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を格納できればよいのであれば、１台のコンピュータでも十分に実現可能となる。
【００２６】
さらに、第２の処理手段１４が、異常と判定されたコネクションの部分統計情報３ａ−２のみを読み出すようにしたことで、対象となる統計処理や保存対象となるコネクション数が削減され、使用メモリと処理量が低減される。例えば第２の処理手段１４を用いてバーストトラフィックを検出するのであれば、ネットワーク品質の劣化の原因となるようなトラフィックパターンのみを検出できればよく、すべてのコネクションに対する瞬間的なトラフィックの統計情報を処理することまでは要求されない。そのため、異常と判定されたコネクションの部分統計情報３ａ−２のみを読み出して処理しても、十分に有用なネットワーク監視が可能である。
【００２７】
なお、第２の処理手段１４が非常に短周期で部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・を読み出す。そのため、第２の処理手段１４が読み出すタイミングと、更新手段１２が統計情報を更新するタイミングとが重なる可能性が高くなる。第２の処理手段１４は、部分統計情報３ａ−２を読み出すと、その後、読み出し候補であった部分統計情報３ａ−２，３ｂ−２を初期化する。そのため、読み出しと書き込みを同時に行うと、データの整合性が保証できなくなる。このとき、排他制御を行ったのでは処理負荷が増加してしまう。そこで第１の実施の形態の解析装置１０では、統計情報３ａ，３ｂ，・・・それぞれに第２の周期で取得する部分統計情報３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・の格納領域を複数設け、更新対象と読み出し候補とを第２の周期ごとに切り替えることができる。これにより１つの部分統計情報に対して第２の処理手段１４の読み出しと、更新手段１２による更新とが同時に発生しないようになり、データの整合性が保証される。
【００２８】
なお、更新手段１２、第１の処理手段１３、および第２の処理手段１４は、例えば解析装置１０が有するプロセッサにより実現することができる。また、記憶手段１１は、例えば解析装置１０が有するメモリにより実現することができる。
【００２９】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、多数のノード相互間の通信について、コネクション単位で統計情報を収集するようにしたものである。
【００３０】
図２は、第２の実施の形態のシステム構成の一例を示す図である。複数のノード３１，３２，３３，・・・は、スイッチ２０を介して互いに接続されている。スイッチ２０は、ポートミラーリング機能を有している。ポートミラーリングとは、あるポートで送受信するデータのコピーを、別のポート（ミラーポート）から送出する機能である。スイッチ２０のミラーポートには、ネットワーク監視装置１００が接続されている。ネットワーク監視装置１００は、例えばコンピュータによって実現される。
【００３１】
ネットワーク監視装置１００は、ミラーポートから出力されたデータを受信し、ネットワークの通信状況を監視する。ネットワーク監視装置１００は、１分以上の間隔で統計情報の集計（基本統計処理）と、ミリ秒オーダの周期で統計情報の集計（バースト統計処理）との両方を並行して実行する。
【００３２】
図３は、本実施の形態に用いるネットワーク監視装置のハードウェアの一構成例を示す図である。ネットワーク監視装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３３】
メモリ１０２は、ネットワーク監視装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３４】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３５】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ネットワーク監視装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００３６】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３７】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３８】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３９】
機器接続インタフェース１０７は、ネットワーク監視装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４０】
ネットワークインタフェース１０８は、スイッチ２０に接続されている。ネットワークインタフェース１０８は、スイッチ２０を介して、他のネットワーク監視装置または通信機器との間でデータの送受信を行う。
【００４１】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、通信を行う各ノード３１，３２，３３，・・・についても、ネットワーク監視装置１００と同様のハードウェアにより実現できる。さらに、第１の実施の形態に示した解析装置１０も、図３に示したネットワーク監視装置１００と同様のハードウェアにより実現することができる。
【００４２】
ネットワーク監視装置１００は、例えばネットワーク監視装置を読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。ネットワーク監視装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ネットワーク監視装置１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またネットワーク監視装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４３】
図４は、ネットワーク監視装置の機能の一例を示すブロック図である。ネットワーク監視装置１００は、情報を記憶するために、コネクション管理ＤＢ（データベース）１１０、統計情報ＤＢ１２０、バースト統計情報ＤＢ１３０、バーストコネクションＤＢ１４０、および処理結果ＤＢ１５０を有している。これらのＤＢのうち、コネクション管理ＤＢ１１０、統計情報ＤＢ１２０、バースト統計情報ＤＢ１３０、およびバーストコネクションＤＢ１４０については、メモリ１０２内に設けられる。また処理結果ＤＢ１５０については、ＨＤＤ１０３内に設けられる。
【００４４】
コネクション管理ＤＢ１１０は、通信が検出されたコネクションを示す情報が登録されたＤＢである。統計情報ＤＢ１２０は、コネクションごとのパケットを解析することで得られた統計情報が登録されたＤＢである。バースト統計情報ＤＢ１３０は、バースト統計用の統計情報が登録されたＤＢである。バーストコネクションＤＢ１４０は、バーストトラフィックが検出されたコネクションの情報が登録されたＤＢである。処理結果ＤＢ１５０は、基本統計処理によって集計された情報が格納されたＤＢである。コネクション管理ＤＢ１１０、統計情報ＤＢ１２０、バースト統計情報ＤＢ１３０、およびバーストコネクションＤＢ１４０の詳細は後述する（図５〜図７参照）。処理結果ＤＢ１５０は、例えば１分以上の間隔で集計した統計情報に基づいて検出されたトラフィックの状態に関する情報が格納される。例えば統計周期の間に発生したトラフィックの量が過大となっている時間帯があれば、その時間帯と、トラフィックを大量に発生させたコネクションの情報などが、処理結果ＤＢ１５０に登録される。
【００４５】
通信インタフェース１６１は、スイッチ２０のミラーポートから送出するパケットを取得する。これにより、スイッチ２０を介して通信されたパケットがネットワーク監視装置１００でキャプチャされる。通信インタフェース１６１は、取得したパケットをコネクション管理部１６２に渡す。
【００４６】
コネクション管理部１６２は、取得したパケットに基づいてコネクションを識別し、各コネクションにコネクションＩＤを付与し、コネクションの情報をコネクション管理ＤＢ１１０に格納する。またコネクション管理部１６２は、パケット受信時に、そのパケットを通信したコネクションの識別子と共に、パケットを解析部１６３に送信する。
【００４７】
解析部１６３は、パケットが受信されるごとに、コネクション管理部１６２から通知されたコネクションＩＤに基づいて、コネクションごとの統計情報を統計情報ＤＢ１２０に格納する。また解析部１６３は、格納した統計情報に基づいて、突発的な異常の有無を判断する。突発的な異常を検出した場合、解析部１６３は、バーストコネクションＤＢ１４０に、異常が発生したコネクションのＩＤを登録する。
【００４８】
統計処理部１６４は、定期的に統計情報ＤＢ１２０を参照し、一定期間内の統計情報を集計し、統計処理を施す。そして統計処理部１６４は、統計処理の結果を処理結果ＤＢ１５０に格納する。統計処理部１６４は、統計処理が完了すると、統計情報ＤＢ１２０に格納されている統計情報を初期化し、次の周期の統計情報を格納できるようにする。以下、統計処理部１６４が統計情報を集計する周期を、基本統計周期と呼ぶ。基本統計周期は、例えば１分間隔である。
【００４９】
バースト統計処理部１６５は、所定の周期（バースト統計周期）で統計情報ＤＢ１２０を参照し、統計情報のうちの、バーストトラフィックの統計処理に利用する統計情報（バースト統計情報）を集計し、統計処理を施す。例えばバースト統計処理部１６５は、バーストコネクションＤＢ１４０を参照し、バーストトラフィックが検出されたコネクションを判断する。そしてバースト統計処理部１６５は、統計情報ＤＢ１２０から、１周期の期間が満了した直近のバースト統計周期における、トラフィックが検出されたコネクションに関するバースト統計情報を、バースト統計情報ＤＢ１３０にコピーする。バースト統計処理部１６５は、該当するすべてのバースト統計情報のコピー完了後、統計情報ＤＢ１２０内の直近のバースト統計周期のバースト統計情報を初期化し、以後のバースト統計周期におけるバースト統計情報を格納できるようにする。そしてバースト統計処理部１６５は、バースト統計情報ＤＢ１３０にコピーしたバースト統計情報を集計し、統計的に処理する。バースト統計処理部１６５は、バースト統計情報を統計的に処理した結果、深刻な問題を検出した場合、警告のメッセージ（アラート）を出力する。なおバースト統計周期は、統計処理部１６４が行う基本統計周期よりも短い周期である。例えばバースト統計処理部１６５は、１０ミリ秒ごとに統計情報を集計する。
【００５０】
出力インタフェース１６６は、処理結果ＤＢ１５０の内容やバースト統計処理部１６５が出力したアラートを、モニタ２１に表示する。
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。図４に示した各要素は、図１に示した解析装置１０の各要素を実現する手段の一例である。例えばコネクション管理ＤＢ１１０、コネクション管理部１６２、および解析部１６３を合わせた機能は、図１に示す更新手段１２の一例である。統計情報ＤＢ１２０、バースト統計情報ＤＢ１３０、バーストコネクションＤＢ１４０は、図１に示す記憶手段１１の一例である。統計処理部１６４は、図１に示す第１の処理手段１３の一例である。バースト統計処理部１６５は、図１に示す第２の処理手段１４の一例である。
【００５１】
このような機能を有するネットワーク監視装置１００により、ネットワークの状態が監視される。次に、図５〜図７を参照し、各ＤＢのデータ構造について説明する。
図５は、コネクション管理ＤＢのデータ構造の一例を示す図である。コネクション管理ＤＢ１１０には、コネクション管理テーブル１１１と例外閾値テーブル１１２とが格納されている。コネクション管理テーブル１１１は、認識したコネクションの情報が登録されたデータテーブルである。例外閾値テーブル１１２は、バーストトラフィックの検出する閾値に関する例外事項を定義したデータテーブルである。
【００５２】
コネクション管理テーブル１１１には、コネクションＩＤ、プロトコル、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、および宛先ポート番号の欄が設けられている。コネクションＩＤの欄には、コネクションの識別子（コネクションＩＤ）が設定される。プロトコルの欄には、対応するコネクションで通信したパケットが準拠している、ＯＳＩ参照モデルにおけるトランスポート層（第４層）のプロトコルが設定される。トランスポート層のプロトコルには、例えばＴＣＰ（Transmission Control Protocol）やＵＤＰ（User Datagram Protocol）がある。送信元ＩＰアドレスの欄には、対応するコネクションで通信したパケットの送信元のノードのＩＰアドレスが設定される。送信元ポート番号の欄には、対応するコネクションで通信したパケットの送信元のＩＰポート番号が設定される。宛先ＩＰアドレスの欄には、対応するコネクションで通信したパケットの宛先のＩＰアドレスが設定される。宛先ポート番号の欄には、対応するコネクションで通信したパケットの宛先のＩＰポート番号が設定される。
【００５３】
例外閾値テーブル１１２には、条件と例外閾値との欄が設けられている。条件の欄には、バーストトラフィック検出の閾値についての例外を適用する条件が設定される。例えば、特定のＩＰアドレスのノードから送信された、特定のプロトコルのコネクションについて例外的な閾値を適用することが、条件の欄に設定される。例外閾値の欄には、条件が満たされたコネクションについて適用する閾値が設定される。
【００５４】
図６は、統計情報ＤＢのデータ構造の一例を示す図である。統計情報ＤＢ１２０には、統計情報テーブル１２１とグローバル制御テーブル１２２とが格納されている。統計情報テーブル１２１は、バーストトラフィック検出用の統計情報と、バーストトラフィック以外の障害などを検出するための統計情報とを纏めて登録するためのデータテーブルである。グローバル制御テーブル１２２は、バースト統計情報の管理に用いるグローバル変数を格納するデータテーブルである。
【００５５】
統計情報テーブル１２１には、コネクションＩＤ、バースト登録フラグ、バースト閾値、バースト統計情報、前回のパケット到着時刻、およびその他の統計情報の欄が設けられている。統計情報テーブル１２１の各レコードは、メモリ１０２内の連続した記憶領域に格納される。
【００５６】
コネクションＩＤの欄には、パケットの通信に使用されたコネクションのコネクションＩＤが設定される。
バースト登録フラグの欄には、対応するコネクションにおいてバーストトラフィックが検出されたか否かを示すフラグ（バースト登録フラグ）が設定される。例えばバーストトラフィックが検出された場合、バースト登録フラグ「１」が設定され、バーストトラフィックが検出されていなければ、バースト登録フラグ「０」が設定される。
【００５７】
バースト閾値の欄には、対応するコネクションに適用する、バーストトラフィック検出の閾値（バースト閾値）が設定される。例えば図５に示した例外閾値テーブル１１２の条件を満たすコネクションについては、適合した条件に対応付けられた例外閾値が、バースト閾値として設定される。また例外閾値テーブル１１２の条件を満たさないコネクションについては、デフォルトのバースト閾値を適用することを示す値（例えば「−１」）が、バースト閾値の欄に設定される。
【００５８】
バースト統計情報の欄には、バーストトラフィック検出に使用するバースト統計情報が設定される。例えばバースト統計情報は、コネクションごとの短期保存テーブル１２１−１，１２１−２に格納される。短期保存テーブル１２１−１，１２１−２内の記憶領域は、複数の制御面に分かれている。そして複数の制御面の格納領域に、バースト統計周期ごとのバースト統計情報が順番に格納される。
【００５９】
短期保存テーブル１２１−１，１２１−２には、コネクションＩＤ、制御面ＩＤ、Ｃ→Ｓパケット数、Ｃ→Ｓバイト数、Ｃ→Ｓロス数、Ｓ→Ｃパケット数、Ｓ→Ｃバイト数、およびＳ→Ｃロス数の欄が設けられている。コネクションＩＤの欄には、通信を行ったコネクションのコネクションＩＤが設定される。制御面ＩＤの欄には、制御面の識別情報（制御面ＩＤ）が設定される。Ｃ→Ｓパケット数の欄には、クライアントからサーバへのパケット数が設定される。例えばリクエストメッセージを含むパケットは、クライアントからサーバへのパケットであると判断される。Ｃ→Ｓバイト数の欄には、クライアントからサーバに送られたデータ量（バイト数）が設定される。Ｃ→Ｓロス数の欄には、クライアントからサーバへのパケットのうち、消失したパケットの数が設定される。Ｓ→Ｃパケット数の欄には、サーバからクライアントへのパケット数が設定される。例えばリクエストに対するレスポンスメッセージを含むパケットは、サーバからクライアントへのパケットであると判断される。Ｓ→Ｃバイト数の欄には、サーバからクライアントに送られたデータ量（バイト数）が設定される。Ｓ→Ｃロス数の欄には、サーバからクライアントへのパケットのうち、消失したパケットの数が設定される。
【００６０】
なお、バースト統計情報には、例えば、遅延時間や帯域情報など、他のネットワーク品質の推定値を含めることもできる。
前回のパケット到着時刻の欄には、対応するコネクションにおける最後に通信されたパケットを、ネットワーク監視装置１００で受信した時刻が設定される。
【００６１】
他の統計情報の欄には、バースト統計情報以外の、基本統計周期で集計する対象の各種統計情報が設定される。
グローバル制御テーブル１２２には、グローバル変数と値との欄が設けられている。グローバル変数の欄には、グローバル変数の名称が設定される。値の欄には、グローバル変数の値が設定される。グローバル変数としては、書き込み面、読み込み面、前回までの計測時刻、デフォルトバースト閾値、および登録されたバースト統計数がある。書き込み面は、解析部１６３がバースト統計情報を書き込むときの、書き込み先の制御面の番号を示している。読み込み面は、バースト統計処理部１６５がバースト統計情報をコピーする際の、コピー元の制御面を示している。前回までの計測時刻は、前回のバースト統計情報の更新完了時刻を示している。デフォルトバースト閾値は、デフォルトのバースト閾値である。登録されたバースト統計数は、バーストトラフィックが発生したと判断されたコネクションの数である。
【００６２】
図６に示すように、統計情報ＤＢ１２０内は、長期に統計情報を保存する統計情報テーブル１２１内に、短期間だけバースト統計情報を保存する短期保存テーブル１２１−１，１２１−２，・・・が含まれる構成となっている。このうち、短期保存テーブル１２１−１，１２１−２，・・・だけが、バースト統計情報ＤＢ１３０へのコピー対象となる。そして、少なくとも同一コネクションＩＤの同一制御面の統計情報については、メモリ１０２内の連続する記憶領域に格納される。こうすることで統計情報の更新（パケット到着ごとのメモリアクセス）は複数の領域にアクセスすることなく、統計情報テーブル１２１の１レコードにアクセスするだけですみ、処理が効率化される。さらに、バースト統計周期ごとに、短期保存テーブル１２１−１，１２１−２，・・・内の更新が終了した直近の制御面を参照し、バースト統計情報ＤＢ１３０にコピーすることで、バースト統計情報ＤＢ１３０へのアクセス回数も削減される。
【００６３】
図７は、バースト統計情報ＤＢのデータ構造の一例を示す図である。バースト統計情報ＤＢ１３０には、バースト統計情報テーブル１３１が格納されている。バースト統計情報テーブル１３１には、バーストトラフィックが検出されたバースト統計情報が登録される。バースト統計情報テーブル１３１には、統計情報テーブル１２１（図６参照）内のバースト統計情報のコピーに加え、バースト統計情報ごとに、計測開始時刻および計測終了時刻が設定されている。計測開始時刻は、バースト統計情報に示される情報の計測を開始した時刻である。計測終了時刻は、バースト統計情報に示される情報の計測を終了した時刻である。
【００６４】
図８は、バーストコネクションＤＢのデータ構造の一例を示す図である。バーストコネクションＤＢ１４０には、バーストコネクションテーブル１４１が設けられている。バーストコネクションテーブル１４１には、制御面ＩＤとコネクションＩＤとの欄が設けられている。制御面ＩＤの欄には、バーストトラフィックが検出されたバースト統計情報が格納されている制御面の識別番号が設定される。コネクションＩＤの欄には、バーストトラフィックが検出されたコネクションの識別子（コネクションＩＤ）が設定される。
【００６５】
以上のような内容のＤＢを用いて、統計処理を用いたネットワーク監視が行われる。ネットワーク監視は、解析処理と統計処理に分かれる。解析処理は、パケットのキャプチャから統計情報の格納までの処理である。統計処理は、統計情報を集計し、統計を採る処理である。以下、解析処理と統計処理との手順を詳細に説明する。
【００６６】
図９は、解析処理の手順の一例を示すフローチャートである。
［ステップＳ１０１］通信インタフェース１６１が、パケットをキャプチャする。パケットのキャプチャにより、パケットごとの解析処理が開始される。キャプチャしたパケットは、コネクション管理部１６２に転送される。
【００６７】
［ステップＳ１０２］コネクション管理部１６２は、キャプチャしたパケットが、未登録のコネクションで通信されたパケットか否かを判断する。例えばコネクション管理部１６２は、キャプチャしたパケットのヘッダ情報とコネクション管理テーブル１１１の登録情報とを照合する。そしてコネクション管理部１６２は、キャプチャしたパケットの送受信を行った２台のノードと同じ組み合わせのノードによる、同じプロトコルでの通信に関するコネクションの情報が、コネクション管理テーブル１１１に登録されているか否かを判断する。この際、送信元と宛先が入れ替わっただけのコネクションに関する情報についても、キャプチャしたパケットを通信したコネクションの情報と判断される。該当するコネクションの情報が登録されていなければ、今回キャプチャしたパケットは、未登録のコネクションを介して転送されたものと判断される。未登録のコネクションで通信されたパケットであると判断された場合、処理がステップＳ１０３に進められる。登録済みのコネクションで通信されたパケットであると判断された場合、コネクション管理部１６２は、キャプチャしたパケットをコネクションごとに分類し、処理をステップＳ１０５に進める。
【００６８】
［ステップＳ１０３］未登録のコネクションで通信されたパケットを受信した場合、コネクション管理部１６２は、今回受信したパケットに応じたコネクションの情報を示す新たなレコードをコネクション管理テーブル１１１に追加登録する。この際、解析部１６３は、コネクション管理部１６２から新たなコネクションのコネクションＩＤを取得し、そのコネクションＩＤに対応する新たなレコードを、統計情報テーブル１２１に追加する。
【００６９】
［ステップＳ１０４］解析部１６３は、新たに認識したコネクションのバースト閾値を設定する。例えば解析部１６３は、新たに認識したコネクションの情報（パケットのヘッダ情報）と、例外閾値テーブル１１２に設定されている条件とを照合する。合致する条件がある場合、解析部１６３は、その条件に対応付けられた例外閾値を、新たに認識したコネクションのバースト閾値に決定する。合致する条件がなければ、解析部１６３は、グローバル制御テーブル１２２内のデフォルトバースト閾値を、新たに認識したコネクションのバースト閾値に決定する。例外閾値をバースト閾値にすると決定した場合、解析部１６３は、決定した例外閾値の値を、統計情報テーブル１２１における新たに認識したコネクションのバースト閾値の欄にコピーする。デフォルトバースト閾値をバースト閾値にすると決定した場合、解析部１６３は、統計情報テーブル１２１における新たに認識したコネクションのバースト閾値の欄に、デフォルトバースト閾値を示す値「−１」を設定する。
【００７０】
これにより、バースト閾値として、基本的にはグローバル制御テーブル１２２に保存されているデフォルト閾値が使用される。ただし、一部のバースト統計情報を常に取得するコネクションや、逆にバースト統計情報を常に取得しないコネクションに関しては、例外閾値テーブル１１２に事前に設定された例外閾値が、バースト閾値として適用される。例えば異常検知に使用する変数値をパケット数やバイト数とし、その変数値がバースト閾値を超えたときに異常判定する場合がある。この場合、例外閾値を「０」に設定すれば、常にバースト統計情報を取得できる。他方、例外閾値を変数の最大値に設定すれば、どんなトラフィック状況でもバースト統計情報が登録されることはない。
【００７１】
［ステップＳ１０５］解析部１６３は、バースト統計周期（Ｔ［ミリ秒］）間隔で生成されるバースト統計情報のうちの、直近のバースト統計情報を更新する（Ｔは、正の実数）。例えば解析部１６３は、まずグローバル制御テーブル１２２に設定されている前回までの計測時刻を確認する。また解析部１６３は、受信したパケットを通信したコネクションにおける前回のパケット到着時刻を、統計情報テーブル１２１により確認する。解析部１６３は、前回のパケット到着時刻が前回までの計測時刻よりも前であった場合、該当するコネクションに関する統計情報テーブル１２１のバースト登録フラグを「０」にリセットする。
【００７２】
次に解析部１６３は、グローバル制御テーブル１２２の書き込み面の値を参照し、直近のバースト統計情報のどのレコードを更新するかを判断する。例えば、書き込み面の値が「１」の場合、解析部１６３は、制御面ＩＤが「１」のレコードの情報を更新する。例えば解析部１６３は、クライアントからサーバへのパケットを受信した場合、クライアントからサーバへの送信パケット数（Ｃ→Ｓパケット数）、バイト数（Ｃ→Ｓバイト数）を更新する。なお解析部１６３は、パケットのシーケンス番号などの解析により、パケットロスを検出した場合、クライアントからサーバへの送信パケットについてのパケットロス数（Ｃ→Ｓロス数）を更新する。また解析部１６３は、サーバからクライアントへのパケットを受信した場合、サーバからクライアントへの送信パケット数（Ｓ→Ｃパケット数）、バイト数（Ｓ→Ｃバイト数）を更新する。解析部１６３は、パケットのシーケンス番号などの解析により、パケットロスを検出した場合、サーバからクライアントへの送信パケットについての、パケットロス数（Ｓ→Ｃロス数）を更新する。
【００７３】
その後、ステップＳ１０６〜Ｓ１０８の処理により、受信したパケットを通信したコネクション（以下、判断対象のコネクションと呼ぶ）において、バーストトラフィックが発生したかどうが判断される。
【００７４】
［ステップＳ１０６］解析部１６３は、判断対象のコネクションにおけるバーストトラフィックの発生がすでに検出されているかどうかを判断する。例えば解析部１６３は、統計情報テーブル１２１の中のバースト登録フラグの値を参照して判断する。バースト登録フラグが「０」の場合、まだバーストトラフィックは検出されておらず、バースト登録フラグが「１」の場合はもうすでにバーストトラフィックが検出された後である。バーストトラフィックが検出されていない場合、処理がステップＳ１０７に進められる。バーストトラフィックがすでに検出されている場合、処理がステップＳ１０９に進められる。
【００７５】
［ステップＳ１０７］異常が検出されていない場合、解析部１６３は、判断対象のコネクションにバーストトラフィックが発生したかどうかを判断する。例えば解析部１６３は、判定に使用する閾値が「０」以上ならその値をそのまま使用し、「−１」であった場合は、グローバル制御テーブル１２２のデフォルト閾値を使用する。例えばバースト閾値として、送受信したバイト数の閾値が設定されているものとする。この場合、以下の式１の条件を満たした場合にバーストトラフィックが検出される。
Ｃ→Ｓバイト数＋Ｓ→Ｃバイト数＞バースト閾値    ・・・（１）
なお、バースト閾値として、バイト数以外のネットワーク品質の値の閾値を用いることもできる。判断対象のコネクションのバーストトラフィックが検出された場合、処理がステップＳ１０８に進められる。バーストトラフィックが検出されなければ、処理がステップＳ１０９に進められる。
【００７６】
［ステップＳ１０８］解析部１６３は、バーストトラフィックを検出した場合、判断対象のコネクションを、バーストコネクションテーブル１４１に登録する。例えば解析部１６３は、判断対象のコネクションＩＤを、グローバル制御テーブル１２２の書き込み面の値に対応付けてバーストコネクションテーブル１４１に登録する。また以降、バーストトラフィック判定の二度手間をなくすため、解析部１６３は、統計情報テーブル１２１における解析対象コネクションのバースト登録フラグを「１」にセットする。これで解析部１６３によるバーストトランザクションの有無の判断が終了し、処理がステップＳ１０９に進められる。
【００７７】
［ステップＳ１０９］解析部１６３は、バーストトランザクション検出以外のパケット解析を行う。例えば解析部１６３は、パケットロスの判定やパケット遅延時間の推定、ネットワーク帯域の推定などのネットワーク品質の推定を行う。その後、処理がステップＳ１０１に進められる。
【００７８】
このようにして、パケットがキャプチャされるごとに、統計情報の登録、およびバーストトラフィックの検出が行われる。そして、バースト統計周期ごとに、バースト統計処理が実行される。
【００７９】
図１０は、バースト統計処理の手順の一例を示すフローチャートである。
［ステップＳ１２１］バースト統計処理部１６５は、前回のバースト統計処理実行から、バースト統計周期Ｔ［ミリ秒」の時間が経過したか否かを判断する。バースト統計周期の時間が経過していれば、処理がステップＳ１２２に進められる。バースト統計周期の時間が経過していなければ、ステップＳ１２１の処理が繰り返される。
【００８０】
［ステップＳ１２２］バースト統計処理部１６５は、制御面の用途切り替えを行う。例えば、制御面が表面と裏面との２面構成の場合、バースト統計処理部１６５は、書き込み面と読み込み面とを入れ替える。すなわち書き込み面として使用されていた制御面は読み込み面に変更され、読み込み面として使用されていた制御面は書き込み面に変更される。具体的には、バースト統計処理部１６５は、グローバル制御テーブル１２２の書き込み面と読み込み面との値を変更する。このようにバースト統計情報の書き込み面と読み込み面を切り替えることで、読み込まれる前にデータが更新されることを防ぎデータの整合性を保証することができる。この仕組みによれば、以下の式２の時間だけ、データの整合性が保証される。
（制御面の数−１）×バースト統計周期（Ｔ［ミリ秒］）    ・・・（２）
なお制御面の切り替え時には、読み込み面として使用されている制御面に対応する、短期保存テーブル１２１−１，１２１−２，・・・内の変数値（バケット数、バイト数、ロス数など）は、バースト統計処理部１６５によって値が初期化される。例えばパケット数、バイト数、ロス数の値が「０」に変更される。
【００８１】
［ステップＳ１２３］バースト統計処理部１６５は、すべてのバースト統計情報のコピーが完了したか否かを判断する。例えばバースト統計処理部１６５は、複数のバーストコネクションテーブル１４１において、読み込み面の制御面ＩＤに対応づけられたコネクションＩＤを取得する。そしてバースト統計処理部１６５は、取得したコネクションＩＤで示されるコネクションすべてについて、バースト統計情報をコピーしたか否かを判断する。バースト統計情報をコピーしていないコネクションがある場合、処理がステップＳ１２４に進められる。すべてのバースト統計情報のコピーが完了していれば、処理がステップＳ１２５に進められる。
【００８２】
［ステップＳ１２４］バースト統計処理部１６５は、まだコピーをしていないバースト統計情報を１つ選択し、コピーする。例えばバースト統計処理部１６５は、選択したバースト統計情報を、統計情報テーブル１２１から読み出し、バースト統計情報テーブル１３１に格納する。その後、処理がステップＳ１２３に進められる。
【００８３】
ステップＳ１２３，Ｓ１２４の処理により、バーストトラフィックが検出されたすべてのコネクションのバースト統計情報が、バースト統計情報テーブル１３１にコピーされる。なおバースト統計情報テーブル１３１は、例えば、基本統計周期の間に生じたバースト統計情報を保存できる程度の記憶領域が確保されている。
【００８４】
なお、前述したように、式２に示した時間だけデータの整合性が保証されている。すなわち、その時間内にバースト統計情報のコピーを完了すれば、データの不整合を生じさせずにすむ。そこでバースト統計情報の量が増えすぎた場合、後述するデフォルトバースト閾値の更新処理により、バースト統計情報の量を削減することで、データの整合性が保証される。
【００８５】
［ステップＳ１２５］バースト統計処理部１６５は、バースト統計情報のコピーが完了すると、Ｔ［ミリ秒］分のデータの統計処理を行う。統計処理としては、例えばＴ［ミリ秒］の間に登録されたバースト統計情報数（バーストトラフィックが検出されたコネクション数に等しい）のカウントが行われる。また統計処理において、バーストトラフィック検出に使用した変数の（例えば送受信したバイト数）により、バースト統計情報をソートすることも考えられる。バースト統計情報をソートすることで、例えば、バースト統計情報が異常の度合で順位付けされる。
【００８６】
［ステップＳ１２６］バースト統計処理部１６５は、統計処理が終わると、今回異常を検出したコネクションの中に深刻な問題がないかどうかを判断する。深刻な問題かどうかは、例えばパケットロスの発生度合いが、所定値以上かどうかで判断される。図７の例では、最初の計測時間帯のコネクションＩＤ「１」のコネクションにおいて、サーバからクライアントへのパケット送信において、パケットロスが１０％も起きている。１０％ものパケットがロスするというのは、深刻な問題である。深刻な問題が発生している場合は処理がステップＳ１２７に進められる。深刻な問題が発生していなければ、処理がステップＳ１２８に進められる。
【００８７】
［ステップＳ１２７］深刻な問題が発生している場合、バースト統計処理部１６５は、アラートを発信する。例えばバースト統計処理部１６５は、以下のようなアラート信号を発信しネットワーク品質の低下を、ただちに通知する。
“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"
発信されたアラートは、例えばネットワーク監視装置１００のモニタ２１に表示される。これにより、管理者は、問題の発生を迅速に認識することができる。
【００８８】
［ステップＳ１２８］バースト統計処理部１６５は、デフォルトバースト閾値を更新する。デフォルトバースト閾値の更新後、バースト統計処理部１６５は、グローバル制御テーブル１２２の前回までの計測時刻を書換え、処理をステップＳ１２１に進める。
【００８９】
次に、デフォルトバースト閾値の更新処理について、詳細に説明する。
図１１は、デフォルトバースト閾値の更新処理の手順を示すフローチャートである。
［ステップＳ１３１］バースト統計処理部１６５は、バーストトラフィックが検出されたコネクション数を、既定範囲と比較する。既定範囲は、範囲の上限値と下限値によってあらかじめ指定されている。既定範囲の上限値は、例えばバースト統計情報の保存領域の限界に基づいて設定される。既定範囲の下限値は、例えば出力すべき順位数が足りているかに基づいて設定される。例えば少なくとも上位２００件のバースト統計情報を出力することを目標とした場合、下限値が２００に設定される。既定範囲は、例えば式２に示した、データの整合性が保証される時間に応じて設定される場合もある。すなわち、データの整合性が保証される時間内にコピー可能なバースト統計情報数の上限が、既定範囲の上限値に設定される。
【００９０】
バーストトラフィックが検出されたコネクション数が、既定範囲の下限値以下であれば、処理がステップＳ１３２に進められる。またバーストトラフィックが検出されたコネクション数が既定範囲の上限値以上であれば、処理がステップＳ１３３に進められる。さらにバーストトラフィックが検出されたコネクション数が、既定範囲内（下限値より多く、上限値未満）であれば、処理が終了する。
【００９１】
［ステップＳ１３２］バーストトラフィックが検出されたコネクション数が、既定範囲の下限値以下の場合、バースト統計処理部１６５は、デフォルトバースト閾値の値を増加させ、処理を終了する。このように、バーストコネクションテーブルに登録されたコネクション数が少なすぎる場合、その数を増やすため、バーストトラフィックであるとの判定が緩くなるようにデフォルトバースト閾値が変更される。例えば以下の式３によりバースト閾値のデフォルト値が１倍以上２倍以下の間で変更される。
ＴＳdef=（１＋（Ｎmin−ｘ）／Ｎmin）×ＴＳdef    ・・・（３）
ここでＴＳdefは、デフォルトバースト閾値である。Ｎminは、出力するコネクション数である。ｘは、実際に登録されたコネクション数である。
【００９２】
［ステップＳ１３３］バーストトラフィックが検出されたコネクション数が、既定範囲の上限値以上の場合、バースト統計処理部１６５は、デフォルトバースト閾値の値を減少させ、処理を終了する。このように、バーストコネクションテーブルに登録されていたコネクション数が多すぎる場合、その数を減らすために、バーストトラフィックであるとの判定が厳しくなるように、デフォルトバースト閾値が変更される。
【００９３】
例えばバースト統計処理部１６５は、バーストトラフィックが検出されたコネクションをバーストトラフィック検出に用いた変数値（例えば送信されたデータ量）でのソート結果を参照する。バースト統計処理部１６５は、ソート結果から、既定範囲の下限値の順位のコネクションと上限値の順位のコネクションとを特定する。そして、バースト統計処理部１６５は、下限値の順位と上限値の順位との真ん中の順位のコネクションの変数値を、バースト閾値のデフォルト値に設定する。これは、ソート後の順番が下限値から上限値までの範囲に含まれるコネクションの集合に関する、変数値の中央値である。例えばバーストトラフィックの検出に使用する変数がパケットの転送量であるものとする。また出力するコネクション数の目標は上位２００件であり、バースト統計周期１０ミリ秒あたりに登録できる最大コネクション数が１０００件であるものとする。この場合、バケット転送量の多い順でソートしたときの、２００番目と１０００番目との真ん中の順位である、６００番目に転送量が多いコネクションの転送量が、デフォルトバースト閾値に設定される。
【００９４】
このようにして、適切な量のバースト統計情報を抽出し、統計解析を行うことができる。すなわち、トラフィックの状況により、バーストトラフィックが検出されるコネクションの数が変動する。検出されるコネクション数が過大になると使用メモリ量も大量になり、メモリの領域が確保できずにプログラムがハングすることが考えらえる。また計測しているネットワークの帯域が狭かった場合、帯域がひっ迫しているのに１コネクションも異常コネクションとして登録されない可能性もある。そこでバーストコネクションテーブルに登録されたコネクション数を元にデフォルト閾値を適宜変更することで、バーストトラフィックとして検出されるコネクション数の変動が抑止される。
【００９５】
以上説明したように、第２の実施の形態によれば、短い周期での統計情報の取得と長い周期での統計情報の取得とを効率的に行い、バーストトラフィックの発生を検出することができる。
【００９６】
すなわち基本統計処理によりバーストトラフィックを検出しようとする、統計情報をミリ秒オーダの間隔で、例えばＣＳＶ（Comma Separated Values ）ファイルに纏め、データベース（ＤＢ）に格納することとなる。ＤＢは、ＨＤＤ内に設けられる。コンピュータの特性上ＨＤＤへのアクセスは、メモリアクセスに比べて時間がかかり、ＨＤＤへのアクセスが多いほど、処理負荷が重くなる。そのため基本統計処理で処理対象とする統計情報を、ミリ秒オーダの間隔でＤＢに書き込むのは困難である。
【００９７】
ＨＤＤに統計情報を書き込めなければ、統計情報をメモリ中に保持することが考えられる。例えば基本統計周期と統計情報のＤＢへの書込み周期とを共に１分間隔、バースト統計周期を１０ミリ秒間隔と設定した場合を考える。この場合、基本統計処理により保存する統計情報の６０００倍のデータ量をメモリに保持することになる。しかし、既存の６０００倍のデータ量を１台のコンピュータのメモリに保存するのには無理がある。
【００９８】
なお、バーストトラフィック検出用の統計情報に最適化されたバースト統計専用テーブルを、既存のパケット解析で使用する統計テーブルとは別に設計し、メモリに保持させることも考えられる。その場合、パケット到着ごとに、既存の統計情報格納用の統計情報テーブルとバースト統計専用テーブルとの両方に、統計情報格納のアクセスが発生する。コンピュータの特性上、連続でない複数のメモリ領域へのアクセスは時間がかかる。そのため複数のテーブルへ統計情報を格納するようにすると、処理性能が劣化する。なおパケットの解析を、既存の統計情報格納用と、バースト検出用とで、個別のプロセスで並列して行うことで、メモリアクセス処理の効率化を図ることも考えられる。しかし、統計情報をコネクションごとに格納するには、パケットをコネクションごとに分類することとなる。この分類を異なるプロセスで個別に行うと、処理が増加してしまい、結局のところ処理効率が悪化する。
【００９９】
そこで第２の実施の形態では、パケットキャプチャごとの統計情報の書き込み先を１つの統計情報テーブル１２１で済ませている。そのため処理が効率化される。
図１２は、第２の実施の形態に係る処理の適用の有無による処理効率の違いについて説明する図である。図１２中の左側に、統計処理を行う統計周期ごとの統計情報テーブル１２１ａ，１２１ｂを設けた例を示している。図１２中の右側に、１つの統計情報テーブル１２１のみを設けた例を示している。
【０１００】
統計処理を行う統計周期ごとの統計情報テーブル１２１ａ，１２１ｂを設けた場合、統計情報の書き込みを行う解析部１６３ａは、キャプチャしたパケットを受信するごとに、両方の統計情報テーブル１２１ａ，１２１ｂに書き込みを行う。例えば統計情報テーブル１２１ａ，１２１ｂがメモリ内にあったとしても、ＣＰＵの動作クロックにおいて、１回の書き込みに１００〜３００クロックの時間がかかる。すると２つの統計情報テーブル１２１ａ，１２１ｂに書き込みを完了するには、２００〜６００クロックの時間を要する。
【０１０１】
他方、第２の実施の形態では、バースト統計情報は、統計情報全体の一部である。そのため、解析部１６３は、基本統計処理用の統計情報と、バースト統計処理用の統計情報とを纏めてメモリ内の統計情報テーブル１２１に書き込めばよい。このように統計情報の書き込み先を１つの統計情報テーブル１２１にすれば、解析部１６３は、１００〜３００クロックの時間で書き込みを完了できる。従って、書き込みに要する時間が半減する。
【０１０２】
なお、統計情報テーブル１２１には、バースト統計情報以外にも、１分ごとに実施する基本統計処理で使用する統計情報も書き込まれる。そのため、統計情報テーブル１２１内には、基本的には１分間分の統計情報が保持され、１分ごとに新たな統計周期の統計情報に書き換えられる。ただし、バースト統計情報までも１分間分保持したのでは、データ量が膨大になる。そこで、第２の実施の形態では、バースト統計情報を１０ミリ秒ごとに別の領域にコピーし、１０ミリ秒単位で統計情報テーブル１２１内のバースト統計情報を更新する。これにより統計情報テーブル１２１内のバースト統計情報の格納領域を節約できる。
【０１０３】
図１３は、バースト統計情報のコピー動作の一例を示す図である。スイッチ２０を介して通信されるネットワーク２１ａ上のパケットがキャプチャされると、解析部１６３により、パケットの到着ごとに、統計情報テーブル１２１に統計情報が格納される。そのとき、解析部１６３により、バースト統計情報に示されるデータ転送量などの変数値に基づいて、バーストトラフィックの検出が行われる。そしてバーストトラフィックが検出されれば、解析部１６３により、バーストトラフィックが発生したコネクションのコネクションＩＤが、バーストコネクションテーブル１４１に登録する。
【０１０４】
統計処理としては、統計処理部１６４により、基本統計処理が例えば１分周期で行われ、統計処理結果が処理結果ＤＢ１５０に出力される。処理結果ＤＢ１５０は例えばＨＤＤ１０３内に設けられる。ＨＤＤ１０３へ書き込みは時間がかかるが、１分周期であれば全体の処理効率に与える悪影響は少なくて済む。
【０１０５】
他方、バースト統計処理部１６５によるバースト統計処理は、例えば１０ミリ秒周期で行われる。このときバースト統計処理部１６５は、バーストコネクションテーブル１４１を参照し、バーストトラフィックが発生したコネクションのバースト統計情報のみを、バースト統計情報テーブル１３１にコピーする。そしてバースト統計情報テーブル１３１にコピーしたバースト統計情報に基づいて、バースト統計処理部１６５によってバースト統計処理が行われ、例えば重大な障害の発生の有無が判断される。
【０１０６】
このように、１０ミリ秒ごとにバースト統計情報をコピーすることで、統計情報テーブル１２１の記憶容量の増加を抑止できる。しかも、バーストトラフィックが発生したコネクションに関するバースト統計情報のみをコピーするようにしたことで、コピーするデータ量が抑制され、処理効率が向上する。
【０１０７】
さらに第２の実施の形態では、重大な障害の発生が検出された場合、即座にアラートが出力される。このような迅速なアラートの出力は、サーバの仮想化技術の進歩に伴って、重要度が増している。すなわち、近年、サーバ仮想化に追随してネットワーク設定を通信の状況に応じて動的に各種設定が可能な、ネットワークの仮想化技術が登場している。このような技術として、例えばOpenFlow（OpenFlowスイッチングコンソーシアム提唱のネットワーク制御技術）がある。以前のネットワーク設定はネットワーク管理者が手動で行うものであった。そのため１分間隔での異常検出・通知で間に合っていた。しかし、ネットワーク設定を動的に制御する場合、１分周期程度での異常検出・通知では遅すぎる。第２の実施の形態によれば、１０ミリ秒程度の周期で異常検出・通知を行うことができ、極めて迅速な異常通知が可能である。
【０１０８】
ところで、図１２の右側に示すように、統計情報テーブル１２１内のバースト統計情報に直接アクセスして、バースト統計処理を行うようにすると、統計情報テーブル１２１へ異なる複数の機能からアクセスが発生する。例えば、統計情報テーブル１２１に対し、解析部１６３、バースト統計処理部１６５、およびＣＳＶに纏めて統計処理結果を処理結果ＤＢ１５０に出力するための統計処理部１６４が、読み書きのアクセスを行う。異なる機能が共通のテーブルの読込と書込を実行すると、データの読込中にデータが書き換えられ、データの整合性を保証できなくなってしまう可能性がある。
【０１０９】
特に銀行のＡＴＭ（Automated Teller Machine）などデータの整合性を保証しなければならないシステムでは、ロック機能により、１つのプロセスのみデータにアクセスできるようにしている。ロック機能は、書込みや読込が行われている間は他のプロセスがデータへアクセスできないよう制限する。ロック機能を用いたアクセス制限により、データの整合性が保証されている。しかし、ロック機能はアクセスが制限されている間他のプロセスの処理が止まってしまうので処理性能が著しく劣化する。
【０１１０】
近年のネットワークは１００Ｇｂｐｓで通信することもできる。このような高速な通信ネットワークを監視する場合に、アクセス制限されている間プロセスの処理が止まってしまうと、処理が間に合わなくなりネットワーク品質の推定ができなくなる。
【０１１１】
そこで、第２の実施の形態では、統計情報テーブル１２１内のバースト統計情報の格納領域として、複数の制御面を設け、各制御面に１０ミリ秒ずつ順番にバースト統計情報を格納するようにした。これにより、ロック機構を用いずに、データの整合性を保つことが可能となる。
【０１１２】
図１４は、データの不整合の抑止処理の一例を示す図である。図１４では、上段に、データの不整合の発生状況が示されており、下段に、データの不整合の抑止処理を示している。
【０１１３】
まず、データの不整合の発生状況について説明する。例えば統計情報テーブル１２１ｃ内に、バースト統計情報の格納領域として、バースト統計周期の１周期分の領域しか設けられていない場合を想定する。この場合、解析部１６３が統計情報テーブル１２１ｃのバースト統計情報の格納領域の値を、パケット到着ごとに更新する。例えば、転送されたパケット数をカウントアップし、新たに転送されたデータ長の分だけ、転送されたデータ量の値を増加させる。他方バースト統計処理部１６５は、１０ミリ秒周期で統計情報テーブル内のバースト統計情報の記憶領域からバースト統計情報を読み出す。このとき解析部１６３がバースト統計情報を更新する直前にバースト統計処理部１６５が読み出すと、更新前の情報を読み出すこととなる。ロック機構を用いていなければ、直後に解析部１６３がバースト統計情報を更新する。そうすると、バースト統計処理部１６５が読み出したバースト統計情報と、解析部１６３が更新したバースト統計情報との間に不整合が生じる。しかもバースト統計処理部１６５は、バースト統計情報を読み取った後、次のバースト統計周期のバースト統計情報取得用に、統計情報テーブル１２１ｃ内のバースト統計情報を初期化してしまう。その結果、解析部１６３が最後に取得したパケットに関する情報が、いずれの周期のバースト統計情報にも反映されなくなる。
【０１１４】
そこで第２の実施の形態では、バースト統計情報の格納領域として、複数の制御面を設けている。図１４の例では、制御面として、表面と裏面との２面が設けられている。パケットが到着した際には、解析部１６３は、一方の制御面（例えば表面）にバースト統計情報を書き込む。その間、バースト統計処理部１６５は、前のバースト統計周期で格納されたバースト統計情報を、他方の制御面（例えば裏面）から読み出し、バースト統計情報テーブル１３１に書き込む。このように、同じ時間帯で解析部１６３とバースト統計処理部１６５とが共通のバースト統計情報にアクセスすることを抑止することができる。その結果、バースト統計情報の不整合が抑止される。
【０１１５】
また解析部１６３は、バーストトラフィックが発生したコネクションのコネクションＩＤを、現在バースト統計情報の書き込み対象となっている制御面（例えば表面）に対応付けて、バーストコネクションテーブル１４１に書き込む。そしてバースト統計処理部１６５は、バーストコネクションテーブル１４１を参照し、バースト統計情報の読み出し対象の制御面（例えば裏面）に対応付けて登録されたコネクションＩＤに基づいて、読み出すバースト統計情報を判断する。このように、バーストコネクションテーブル１４１において、バーストトラフィックが発生したコネクションのコネクションＩＤが、制御面に対応付けて管理される。その結果、複数の制御面を設けた場合でも、各制御面からバーストトラフィックが発生したコネクションのバースト統計情報のみを正しく読み出すことができる。
【０１１６】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１７】
１  ネットワーク
２  パケット
３ａ，３ｂ，・・・  統計情報
３ａ−１，３ａ−２，３ｂ−１，３ｂ−２，・・・，４  部分統計情報
５  処理結果
６  警告メッセージ
１０  解析装置
１１  記憶手段
１２  更新手段
１３  第１の処理手段
１４  第２の処理手段
【図１】
2015089014.tif 000003
【図２】
2015089014.tif 000004
【図３】
2015089014.tif 000005
【図４】
2015089014.tif 000006
【図５】
2015089014.tif 000007
【図６】
2015089014.tif 000008
【図７】
2015089014.tif 000009
【図８】
2015089014.tif 000010
【図９】
2015089014.tif 000011
【図１０】
2015089014.tif 000012
【図１１】
2015089014.tif 000013
【図１２】
2015089014.tif 000014
【図１３】
2015089014.tif 000015
【図１４】
2015089014.tif 000016