(57)【特許請求の範囲】
【請求項１】
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出し、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む
処理を含み、コンピュータにより実行されるパケット収集方法。
【請求項２】
更に、
前記二次異常が生じたコネクションに係る前記グループ及び前記二次異常が生じなかったコネクションに係るグループを、前記第１記憶領域から消去する
処理を含む、請求項１記載のパケット収集方法。
【請求項３】
前記一次異常は、同一のコネクションに関して、前記二次異常の検出より前に検出される異常である
請求項１又は２記載のパケット収集方法。
【請求項４】
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出し、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む
処理をコンピュータに実行させるパケット収集プログラム。
【請求項５】
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納する格納処理部と、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付ける対応付け部と、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出する第１検出部と、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶する記憶処理部と、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出する第２検出部と、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む書き込み部と
を有するパケット収集装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークからキャプチャしたＰＤＵ（Protocol Data Unit）の収集技術に関する。
【背景技術】
【０００２】
ある特許文献には、スイッチを通過するパケットをミラーリングによってキャプチャし、ネットワークの状態を監視するネットワーク監視装置が開示されている。
【０００３】
このネットワーク監視装置は、キャプチャしたパケットの各々に対して、ＩＳＯ（International Organization for Standardization）のＯＳＩ（Open Systems Interconnection）参照モデルにおける第４層（以下、Ｌ４という。）に関する解析を行い、Ｌ４の解析で異常であると判定されたコネクションに係るパケットを収集する。
【０００４】
しかし、このように異常コネクションに係るパケットを収集するためには、多くの資源を要する。仮に不要なパケットも記憶すると、記憶領域を無駄遣いすることになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２６１８０４号公報
【特許文献２】特開２０１５−９５７８５号公報
【特許文献３】特開２０１５−１１５８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、一側面では、異常コネクションに係るパケットを、より少ない資源で収集することである。
【課題を解決するための手段】
【０００７】
一態様に係るパケット収集方法は、（Ａ）ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、（Ｂ）第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、（Ｃ）バッファに格納したパケットの各々を解析して一次異常が生じているコネクションを検出し、（Ｄ）一次異常が生じたコネクション毎に、当該コネクションの第２識別子が対応付けられた第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、（Ｅ）サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、（Ｆ）第１記憶領域に記憶されたグループのうち、二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む処理を含む。
【発明の効果】
【０００８】
一側面としては、異常コネクションに係るパケットを、より少ない資源で収集することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、バッファリングの例を示す図である。
【図２】図２は、一次異常が発生する例を示す図である。
【図３】図３は、オブジェクトを生成する例を示す図である。
【図４】図４は、オブジェクトを生成する例を示す図である。
【図５】図５は、二次異常が発生する例を示す図である。
【図６】図６は、一次異常が発生し、二次異常が発生しない例を示す図である。
【図７】図７は、一次異常が発生しない例を示す図である。
【図８】図８は、ネットワーク監視システムの構成例を示す図である。
【図９】図９は、コネクションテーブルの例を示す図である。
【図１０】図１０は、インデックステーブルの例を示す図である。
【図１１】図１１は、一次異常テーブルの例を示す図である。
【図１２】図１２は、テーブルリスト及び二次異常テーブルの例を示す図である。
【図１３】図１３は、割り当て処理フローを示す図である。
【図１４】図１４は、解析部のモジュール構成例を示す図である。
【図１５】図１５は、解析処理フローを示す図である。
【図１６】図１６は、解析処理フローを示す図である。
【図１７Ａ】図１７Ａは、一次異常登録処理フローを示す図である。
【図１７Ｂ】図１７Ｂは、一次異常登録処理フローを示す図である。
【図１８】図１８は、格納処理部のモジュール構成例を示す図である。
【図１９】図１９は、オブジェクトの構成例を示す図である。
【図２０】図２０は、メタデータの例を示す図である。
【図２１】図２１は、収集データの例を示す図である。
【図２２】図２２は、生成処理フローを示す図である。
【図２３】図２３は、分別処理フローを示す図である。
【図２４】図２４は、統計部のモジュール構成例を示す図である。
【図２５】図２５は、統計処理フローを示す図である。
【図２６】図２６は、保存データの例を示す図である。
【図２７Ａ】図２７Ａは、書き込み処理フローを示す図である。
【図２７Ｂ】図２７Ｂは、書き込み処理フローを示す図である。
【図２８】図２８は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
本実施の形態に係るネットワーク監視装置は、監視対象ネットワークで伝送されるパケットをキャプチャし、バッファリングする。図１に、バッファリングの例を示す。横軸は、パケットをキャプチャした受信時刻を示している。この例は、パケットＡ乃至パケットＮがキャプチャされる様子を示している。時刻Ｔａ乃至時刻Ｔｎは、パケットＡ乃至パケットＮの受信時刻である。
【００１１】
キャプチャされたパケットは、ネットワーク監視装置のパケットバッファに格納される。この例では、パケットＬをキャプチャした時刻Ｔｌに、パケットＬがパケットバッファに格納される。このとき、パケットバッファには、パケットＡ乃至パケットＬが格納されている。
【００１２】
次に、パケットＭをキャプチャした時刻Ｔｍに、パケットＭがパケットバッファに格納される。このとき、パケットバッファの容量を超えるので、最も古いパケットＡが削除される。
【００１３】
次に、パケットＮをキャプチャした時刻Ｔｎに、パケットＮがパケットバッファに格納される。このとき、パケットバッファの容量を超えるので、最も古いパケットＢが削除される。このように、パケットバッファの容量を超える場合には、最も古いパケットが破棄される。
【００１４】
図２に、パケットバッファに格納されているパケットとコネクションの関係を示す。図示したパケットのうち、パケットＡ、パケットＣ、パケットＧ、パケットＩ、パケットＬ、パケットＮ、パケットＱ及びパケットＳは、コネクションＸに係るパケットである。同じく、パケットＢ、パケットＨ、パケットＭ及びパケットＲは、コネクションＹに係るパケットである。
【００１５】
コネクションは、パケットのヘッダに含まれる送信元ＩＰ（Internet Protocol）アドレス、送信元ポート番号、送信先ＩＰアドレス及び送信先ポート番号によって特定される。
【００１６】
そして、本実施の形態では、各パケットについてＬ４解析を行う。Ｌ４解析は、Ｌ４に関する解析である。Ｌ４解析によって、例えばロス増加、ＲＴＴ（Round Trip Time）増加又はサーバ遅延増加などの異常が生じたコネクションが検出される。本実施の形態では、Ｌ４解析によって検出された異常を、一次異常ということがある。
【００１７】
この例では、コネクションＹに係るパケットについては、いずれもＬ４解析において異常は検出されない。また、コネクションＸに係るパケットのうちパケットＡ乃至パケットＬについては、いずれもＬ４解析において異常は検出されない。但し、同じくパケットＮ乃至パケットＳについては、いずれもＬ４解析において異常が検出される。
【００１８】
本実施の形態では、Ｌ４解析で異常が検出されたパケットが収集され、これらのパケットを含むオブジェクトが生成される。これらのパケットは、事後的にコネクションの異常を分析する際に用いられる。
【００１９】
図３及び図４に、オブジェクトを生成する例を示す。図２に示したように時刻ＴｌにキャプチャしたパケットＬに対するＬ４解析結果は、正常である。Ｌ４解析結果が正常であれば、当該パケットを含むオブジェクトは生成されない。
【００２０】
同じく時刻ＴｍにキャプチャしたパケットＭに対するＬ４解析結果も正常であるので、オブジェクトは生成されない。
【００２１】
一方、時刻ＴｎにキャプチャしたパケットＮに対するＬ４解析結果は、異常である。パケットＮによって特定されるコネクションＸが、一次異常コネクションとして登録される。そして、一次異常コネクションであるコネクションＸに関するオブジェクトが生成される。このオブジェクトには、コネクションＸに係るパケットが順次加えられる。このように、オブジェクトは、一次異常コネクション毎に生成され、一次異常コネクションに係るパケットをグループとしてまとめる。
【００２２】
図示するように、パケットＮよりも前にキャプチャされたパケットＣがオブジェクトに加えられる。つまり、一次異常を検出したパケットから遡って同じコネクションに係るパケットが記録される。このように、異常が発生した時点よりも前のパケットを保存すれば、異常の前兆を分析することができる。尚、遡る時間を、以下では所定時間或いは遅延時間ということがある。
【００２３】
図４の説明に移る。時刻ＴｑにキャプチャしたパケットＱに対するＬ４解析結果も、異常である。前述の通り、所定時間だけ遡ってパケットＧがオブジェクトに加えられる。
【００２４】
時刻ＴｒにキャプチャしたパケットＲに対するＬ４解析結果は、正常であるので、オブジェクトは生成されない。
【００２５】
時刻ＴｓにキャプチャしたパケットＳに対するＬ４解析結果は、異常である。前述の通り、所定時間だけ遡ってパケットＩがオブジェクトに加えられる。
【００２６】
この後も、最後に異常が検出されたパケットＳがオブジェクトに加えられるまで、コネクションＸを一次異常コネクションとして管理する。そして、パケットＳがオブジェクトに加えられると、コネクションＸは一次異常コネクションから外される。このようにすれば、一次異常が発生したパケットを残らずオブジェクトに含めることができる。
【００２７】
上述したオブジェクトは、一時的にメモリ領域に設けられる。次に、メモリ領域に生成されたオブジェクトを、保存領域に書き込む動作について説明する。
【００２８】
本実施の形態では、Ｌ４解析処理とは別にＬ４統計処理を行う。Ｌ４統計処理は、周期的に行われる。Ｌ４統計処理では、周期をサンプリング期間として、同じコネクションに係るパケットについて、送受信パケット数及びバイト数、パケットのロス数、ＲＴＴ等の統計処理を行う。本実施の形態では、Ｌ４統計処理によって検出される異常を、二次異常ということがある。二次異常を検出した場合に、当該二次異常を起こしたコネクションに関するオブジェクトを保存領域に書き込む。
【００２９】
図５に、二次異常が発生する例を示す。この例では、Ｌ４統計処理の周期は、１分である。具体的には、１０：００：００、１０：０１：００及び１０：０２：００に、Ｌ４統計処理が行われる。
【００３０】
１０：００：００におけるＬ４統計処理で、異常は検出されない。その後、図２乃至図４に示したように、コネクションＸに係るパケットのうちパケットＮ乃至パケットＳにおいて一次異常が発生する。上述した通り、パケットＮが一次異常となった時点で、パケットＣを含むコネクションＸのオブジェクトが生成される。パケットＮは、遅延時間だけ経過した時点でオブジェクトに加えられる。
【００３１】
１０：０１：００におけるＬ４統計処理で、コネクションＸに関する異常が検出される。但し、二次異常を検出した時点では、未だオブジェクトを書き込まない。１０：０１：００にキャプチャされたパケットＯがオブジェクトに加えられた時点で、オブジェクトを書き込む。つまり、Ｌ４統計処理から遅延時間だけ経過した後に、オブジェクトの書き込みを行う。
【００３２】
このように、オブジェクトは周期単位で書き込まれる。この例では、１０：００：００乃至１０：０１：００の周期に対応する、コネクションＸのオブジェクトを、オブジェクトＸ１と記す。１０：０１：００乃至１０：０２：００の周期に対応する、コネクションＸのオブジェクトを、オブジェクトＸ２と記す。
【００３３】
１０：０２：００におけるＬ４統計処理でも、コネクションＸに関する異常が検出される。そして、同様に遅延時間が経過した時点で、コネクションＸのオブジェクトＸ２の書き込みが行われる。
【００３４】
尚、保存領域に対するオブジェクトの書き込みが済むと、メモリ領域の当該オブジェクトは消去される。この例では、オブジェクトＸ１の書き込みが行われた時点でメモリ領域のオブジェクトＸ１は消される。そして、新たにオブジェクトＸ２が生成される。オブジェクトＸ２の書き込みが行われた時点でメモリ領域のオブジェクトＸ２は消される。このようにすれば、メモリ領域の容量は少なくて済む。
【００３５】
図６に、一次異常が発生し、二次異常が発生しない例を示す。本実施の形態では、二次異常が発生しなければ、オブジェクトの書き込みを行わない。
【００３６】
図５の場合と同様に、コネクションＸに係るパケットに関して一次異常が検出される。但し、１０：０１：００におけるＬ４統計処理で、コネクションＸについて二次異常が検出されない。Ｌ４解析処理における異常が誤りであれば、Ｌ４統計処理において同じコネクションに関して異常が検出されないことがある。
【００３７】
Ｌ４統計処理におけるサンプル数が、Ｌ４解析処理におけるサンプル数よりも多ければ、このような現象が生じることがある。また、Ｌ４統計処理における判定の種類や基準が、Ｌ４解析処理における判定の種類や基準と異なる場合にも、このような現象が生じることがある。この例では、Ｌ４統計処理による異常判定の確度の方が、Ｌ４解析処理による異常判定の確度よりも高いものと想定する。そして、二次異常が生じたコネクションに関して、事後的な分析を行うことを想定する。従って、一次異常のみに係るコネクションについてのオブジェクトは、不要であるものとする。
【００３８】
図示したように、１０：０１：００におけるＬ４統計処理においてコネクションＸは正常であると判定される。従って、遅延時間が経過した時点でオブジェクトＸ１の書き込みは行われない。そして、メモリ領域のオブジェクトＸ１は、そのまま破棄される。
【００３９】
同じく１０：０２：００におけるＬ４統計処理においてもコネクションＸは正常であると判定される。この場合も、遅延時間が経過した時点でオブジェクトＸ２の書き込みは行われない。そして、メモリ領域のオブジェクトＸ２も、そのまま破棄される。
【００４０】
このようにすれば、メモリ領域及び保存領域の使用量が抑制される。
【００４１】
次に、一次異常が発生しない場合について説明する。図７に、一次異常が発生しない例を示す。図２に示したように、コネクションＹに係るパケットについてはＬ４解析において異常が検出されない。従って、コネクションＹに関するオブジェクトは、生成されない。
【００４２】
また、１０：０１：００におけるＬ４統計処理によってコネクションＹに関する異常は検出されない。従って、１０：０１：００から遅延時間だけ経過した時点で、コネクションＹに関する処理は行われない。
【００４３】
同じく１０：０２：００におけるＬ４統計処理によってコネクションＹに関する異常は検出されない。同じく、１０：０１：００から遅延時間だけ経過した時点で、コネクションＹに関する処理は行われない。
【００４４】
このようにすれば、メモリ領域の使用量が抑制される。以上で、本実施の形態における概要の説明を終える。
【００４５】
図８に、ネットワーク監視システムの構成例を示す。ネットワーク監視装置８０１は、ネットワークタップ８０５を介して監視対象ネットワーク８０３に接続している。監視対象ネットワーク８０３は、例えばＬＡＮ（Local Area Network）である。ネットワーク監視装置８０１は、監視対象ネットワーク８０３で伝送されているパケットをキャプチャする。例えば、監視対象ネットワーク８０３のスイッチを通過するパケットをミラーポートに複製してキャプチャする。あるいは、タップを使用してキャプチャするようにしてもよい。尚、パケットは、ＰＤＵの例である。
【００４６】
ネットワーク監視装置８０１は、ＮＩＣ（Network Interface Card）８１１、ドライバ８１３、パケットバッファ８１５、解析部８１７、統計部８１９、コネクションテーブル記憶部８２１、インデックスバッファ８２３、一次異常記憶部８２５、格納処理部８２７及び二次異常記憶部８２９を有している。
【００４７】
ＮＩＣ８１１は、ネットワークに接続するためのインターフェースカードである。ドライバ８１３は、パケットを抽出し、抽出したパケットをパケットバッファ８１５に格納すると共に、抽出したパケットに識別子（ＩＤ）を割り当てる。パケットバッファ８１５は、パケットを格納する。
【００４８】
解析部８１７は、主にパケットを解析し、異常が発生したコネクションを特定するとともに、パケットをコネクション毎に分別するためのインデックスレコードを生成する。インデックスレコードを設けることによって、パケットを収集する処理の負荷が軽減される。解析部８１７は、Ｌ４解析部８３１とＬ７解析部８３３とを有している。Ｌ４解析部８３１は、ＩＳＯのＯＳＩ参照モデルにおける第４層に関する解析を行う。Ｌ７解析部８３３は、ＩＳＯのＯＳＩ参照モデルにおける第７層（以下、Ｌ７という。）に関する解析を行う。
【００４９】
統計部８１９は、解析結果に基づき統計処理を行う。統計部８１９は、Ｌ４統計部８３５とＬ７統計部８３７とを有している。Ｌ４統計部８３５は、Ｌ４に関する統計処理を行う。具体的には、Ｌ４統計部８３５は、送受信パケット数及びバイト数、パケットのロス数、ＲＴＴ等の統計値によりネットワーク状態を診断する。Ｌ７統計部８３７は、Ｌ７に関する統計処理を行う。
【００５０】
コネクションテーブル記憶部８２１は、パケットから抽出したコネクションに関するコネクションテーブルを記憶する。インデックスバッファ８２３は、パケットとコネクションとを対応付けるインデックステーブルを記憶する。インデックステーブルは、例えばリングバッファ形式でインデックスレコードを管理する。一次異常記憶部８２５は、一次異常が発生しているコネクションを特定するための一次異常テーブルを記憶する。二次異常記憶部８２９は、二次異常が発生しているコネクションを特定するための二次異常テーブル及び二次異常テーブルを管理するテーブルリストを記憶する。
【００５１】
ネットワーク監視装置８０１は、伝送ネットワーク８０７を介してストレージ装置８０９に接続している。ストレージ装置８０９は、統計データ記憶部８４１と保存データ記憶部８４３とを有している。統計データ記憶部８４１は、統計部８１９における統計処理の結果を記憶する。保存データ記憶部８４３は、ネットワーク監視装置８０１から送られる保存データを記憶する。伝送ネットワーク８０７は、監視対象ネットワーク８０３と同じネットワークであってもよい。
【００５２】
上述したドライバ８１３、解析部８１７、統計部８１９、格納処理部８２７、Ｌ４解析部８３１、Ｌ７解析部８３３、Ｌ４統計部８３５及びＬ７統計部８３７は、ハードウエア資源（例えば、図２８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００５３】
上述したパケットバッファ８１５、コネクションテーブル記憶部８２１、インデックスバッファ８２３、一次異常記憶部８２５及び二次異常記憶部８２９は、ハードウエア資源（例えば、図２８）を用いて実現される。
【００５４】
次に、コネクションテーブルについて説明する。図９に、コネクションテーブルの例を示す。コネクションテーブルには、コネクション毎に、コネクションを定義するデータが設定されている。
【００５５】
コネクションテーブルは、コネクション毎のレコードを有している。レコードは、コネクションＩＤを設定するためのフィールドと、送信元ＩＰアドレスを設定するためのフィールドと、送信元ポート番号を設定するためのフィールドと、送信先ＩＰアドレスを設定するためのフィールドと、送信先ポート番号を設定するためのフィールドと、プロトコル番号を設定するためのフィールドとを有している。
【００５６】
コネクションＩＤは、コネクションを特定するための識別子である。送信元ＩＰアドレスは、当該パケットの送信元であるホスト装置のＩＰアドレスである。送信元ポート番号は、当該パケットの送信元であるホスト装置において当該パケットを送出するポートの番号である。送信先ＩＰアドレスは、当該パケットの送信先に相当するホスト装置のＩＰアドレスである。送信先ポート番号は、当該パケットの送信先に相当するホスト装置において当該パケットを受け入れるポートの番号である。プロトコル番号は、ＩＳＯのＯＳＩ参照モデルにおける第４層のプロトコルを識別する番号である。プロトコル番号「６」は、ＴＣＰ（Transmission Control Protocol）を示し、プロトコル番号「１７」は、ＵＤＰ（User Datagram Protocol）を示している。
【００５７】
この例における第１レコードは、コネクションＩＤ「ＣＮ−０００１」が割り振られたコネクションについて、ＩＰアドレス「１０．２０．３０．４０」のホスト装置におけるポート番号「２０００」が送信元に相当し、ＩＰアドレス「１０．２０．３０．５０」のホスト装置におけるポート番号「２０」が送信先に相当することを示している。また、第１レコードは、このコネクションにおける第４層のプロトコルが、ＴＣＰであることも示している。
【００５８】
この例における第２レコードは、コネクションＩＤ「ＣＮ−０００２」が割り振られたコネクションについて、ＩＰアドレス「２０．３０．４０．５０」のホスト装置におけるポート番号「３０００」が送信元に相当し、ＩＰアドレス「１０．２０．３０．６０」のホスト装置におけるポート番号「８０」が送信先に相当することを示している。また、第２レコードは、このコネクションにおける第４層のプロトコルが、ＴＣＰであることも示している。
【００５９】
この例における第３レコードは、コネクションＩＤ「ＣＮ−０００３」が割り振られたコネクションについて、ＩＰアドレス「３０．４０．５０．６０」のホスト装置におけるポート番号「４０００」が送信元に相当し、ＩＰアドレス「４０．５０．６０．７０」のホスト装置におけるポート番号「３０００」が送信先に相当することを示している。また、第３レコードは、このコネクションにおける第４層のプロトコルが、ＵＤＰであることも示している。
【００６０】
次に、インデックステーブルについて説明する。図１０に、インデックステーブルの例を示す。インデックステーブルは、ヘッダ部を有している。ヘッダ部には、ライトポインタを設定するためのフィールドと、リードポインタを設定するためのフィールドとが設けられている。ライトポインタは、書き込まれるインデックスレコードを特定する。リードポインタは、読み取られるインデックスレコードを特定する。
【００６１】
インデックステーブルのデータ本体は、パケット毎のインデックスレコードを有している。レコードは、パケットＩＤを設定するためのフィールドと、コネクションＩＤを設定するためのフィールドと、受信日時を設定するためのフィールドとを有している。パケットＩＤは、キャプチャされたパケットにシーケンシャルに付与される識別子である。コネクションＩＤは、パケットのヘッダによって特定されるコネクションを識別する。受信日時は、キャプチャした時点を特定する。これらのインデックスレコードは、最後のインデックスレコードの次に最初のインデックスレコードへ続くように環状で管理される。
【００６２】
この例は、次に７番目のインデックスレコードに新たなデータが設定される状態を示している。同じく、次に５番目のインデックスレコードに設定されているデータが読み取られる状態を示している。
【００６３】
次に、一次異常テーブルについて説明する。図１１に、一次異常テーブルの例を示す。この例で、一次異常テーブルは、例えばロス増加、ＲＴＴ増加又はサーバ遅延増加などの異常が発生しているコネクション毎のレコードを有している。レコードは、一次異常が発生しているコネクションに係るコネクションＩＤを設定するためのフィールドと、最終日時を設定するためのフィールドとを有している。最終日時は、当該コネクションにおける一次異常が最後に検出された時点を特定する。
【００６４】
この例における第１レコードは、コネクションＩＤ「ＣＮ−０００１」で特定されるコネクションにおいて一次異常が発生し、最後に一次異常が検出された時点が４月１日の１０時００分００．０００秒であることを示している。
【００６５】
同様にこの例における第２レコードは、コネクションＩＤ「ＣＮ−０００４」で特定されるコネクションにおいても一次異常が発生し、最後に一次異常が検出された時点が４月１日の１０時００分０１．０００秒であることを示している。
【００６６】
次に、テーブルリスト及び二次異常テーブルについて説明する。図１２に、テーブルリスト及び二次異常テーブルの例を示す。二次異常テーブルは、各周期において生成される。テーブルリストは、各周期における二次異常テーブルに対応するレコードを有している。テーブルポインタは、当該二次異常テーブルの格納位置を特定する。二次異常テーブルには、当該周期におけるＬ４統計処理で二次異常を検出したコネクションのＩＤが設定される
【００６７】
以下、ネットワーク監視装置８０１における処理について説明する。まず、ドライバ８１３による割り当て処理について説明する。図１３に、割り当て処理フローを示す。ドライバ８１３は、監視対象ネットワーク８０３からキャプチャしたパケットの各々にパケットＩＤを割り当てると共に、受信日時を付して当該パケットの各々をパケットバッファ８１５に格納する。
【００６８】
具体的には、ドライバ８１３は、待機して、ＮＩＣ８１１からパケットを受ける（Ｓ１３０１）。ＮＩＣ８１１からパケットを受けると、ドライバ８１３は受けたパケットにパケットＩＤを割り当てる（Ｓ１３０３）。パケットＩＤは、シーケンシャルに割り当てられる。そして、ドライバ８１３は、受信日時を付してパケットをパケットバッファ８１５に格納する（Ｓ１３０５）。また、ドライバ８１３は、パケットＩＤとパケットヘッダのアドレスと受信日時とを含む通知を解析部８１７に渡す（Ｓ１３０７）。そして、Ｓ１３０１の処理に戻る。
【００６９】
次に、解析部８１７のモジュール構成について説明する。図１４に、解析部８１７のモジュール構成例を示す。解析部８１７は、Ｌ４解析部８３１とＬ７解析部８３３との他に、記憶部１４０１、受付部１４０３、コネクションテーブル生成部１４０５、インデックス生成部１４０７及び第１登録部１４０９を有している。
【００７０】
記憶部１４０１は、解析部８１７の内部で用いるデータを記憶する。受付部１４０３は、ドライバ８１３から通知を受け付ける。コネクションテーブル生成部１４０５は、コネクションテーブルを生成する。インデックス生成部１４０７は、インデックステーブルを生成する。第１登録部１４０９は、一次異常テーブルに一次異常コネクションを登録する。
【００７１】
上述した受付部１４０３、コネクションテーブル生成部１４０５、インデックス生成部１４０７及び第１登録部１４０９は、ハードウエア資源（例えば、図２８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００７２】
上述した記憶部１４０１は、ハードウエア資源（例えば、図２８）を用いて実現される。
【００７３】
次に、解析部８１７による解析処理について説明する。図１５及び図１６に、解析処理フローを示す。受付部１４０３がドライバ８１３から通知を受けると（Ｓ１５０１）、インデックス生成部１４０７は、通知から得られるパケットＩＤと受信日時とを、ライトポインタが指すインデックスレコードに書く（Ｓ１５０３）。尚、インデックス生成部１４０７は、パケットバッファ８１５においてパケットに付されている受信日時を読み取るようにしてもよい。
【００７４】
Ｌ４解析部８３１は、通知に含まれるアドレスによってパケットヘッダを特定する（Ｓ１５０５）。Ｌ４解析部８３１は、当該パケットのプロトコルが所定のプロトコルに該当するか否かを判定する（Ｓ１５０７）。所定のプロトコルは、例えばＴＣＰ及びＵＤＰである。所定のプロトコルは、例えば記憶部１４０１に記憶されるプロトコルテーブルに設定されるようにしてもよい。当該パケットのプロトコルが所定のプロトコルに該当しないと判定した場合には、端子Ｂを介して図１６のＳ１５１７の処理に移る。このとき、新しいレコードにおけるコネクションＩＤのフィールドは、未設定のままである。
【００７５】
一方、当該パケットのプロトコルが所定のプロトコルに該当すると判定した場合には、Ｌ４解析部８３１は、パケットヘッダからコネクションデータを抽出する（Ｓ１５０９）。コネクションデータには、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号及びプロトコル番号が含まれる。コネクションテーブル生成部１４０５は、コネクションデータが既にコネクションテーブルに登録されているか否かを判定する（Ｓ１５１１）。コネクションデータが既にコネクションテーブルに登録されていると判定した場合には、端子Ａを介して図１６のＳ１５１５の処理に移る。
【００７６】
コネクションデータが未だコネクションテーブルに登録されていないと判定した場合には、コネクションテーブル生成部１４０５は、コネクションテーブルにレコードを追加する（Ｓ１５１３）。新たなレコードには、新たなコネクションＩＤと当該コネクションデータが設定される。具体的には、コネクションＩＤ、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号及びプロトコル番号が設定される。Ｓ１５１３の処理を終えると、端子Ａを介して図１６のＳ１５１５の処理に移る。
【００７７】
図１６の処理に移って、インデックス生成部１４０７は、当該インデックスレコードにコネクションＩＤを書く（Ｓ１５１５）。コネクションＩＤは、コネクションテーブルに基づいて特定される。
【００７８】
インデックス生成部１４０７は、ライトポインタに１を加える（Ｓ１５１７）。ライトポインタが最終のレコード番号を指している場合には、インデックス生成部１４０７は、ライトポインタを先頭のレコード番号に戻す。
【００７９】
続いて、Ｌ４解析部８３１は、Ｌ４解析処理を実行する（Ｓ１５１９）。Ｌ４解析処理において、Ｌ４解析部８３１は、異常が生じているコネクションを検出する。この例のＬ４解析部８３１は、ロス増加が生じたコネクション、ＲＴＴ増加が生じたコネクション及びサーバ遅延増加が生じたコネクションを検出する。Ｌ４解析部８３１は、検出結果として異常が生じているコネクションのＩＤを出力する。Ｌ４解析処理は、従来の処理と同様であるので、これ以上説明しない。
【００８０】
第１登録部１４０９は、一次異常登録処理を実行する（Ｓ１５２１）。図１７Ａ及び図１７Ｂに、一次異常登録処理フローを示す。第１登録部１４０９は、一次異常テーブルに一次異常コネクションが登録されているか否かを判定する（Ｓ１７０１）一次異常テーブルに一次異常コネクションが登録されていないと判定した場合には、端子Ｄを介して図１７ＢのＳ１７１１に示した処理に移る。
【００８１】
一方、一次異常テーブルに一次異常コネクションが登録されていると判定した場合には、第１登録部１４０９は、一次異常テーブルに登録されている一次異常コネクションのうち、未処理の一次異常コネクションを１つ特定する（Ｓ１７０３）。第１登録部１４０９は、一次異常テーブルに設定されているコネクションＩＤを順次特定するようにしてもよい。
【００８２】
第１登録部１４０９は、最終日時（当該一次異常が最後に検出された日時）から所定時間（遅延時間に相当する。）が経過したか否かを判定する（Ｓ１７０５）。
【００８３】
最終日時から所定時間が経過したと判定した場合には、第１登録部１４０９は、当該一次異常コネクションをクリアする（Ｓ１７０７）。具体的には、一次異常テーブルのレコードにおける各フィールドを未設定の状態にする。そして、Ｓ１７０９に示した処理に移る。
【００８４】
一方、最終日時から所定時間が経過していないと判定した場合には、そのままＳ１７０９の処理に移る。
【００８５】
第１登録部１４０９は、未処理の一次異常コネクションがあるか否かを判定する（Ｓ１７０９）。未処理の一次異常コネクションがあると判定した場合には、Ｓ１７０３に戻って、第１登録部１４０９は、上述した処理を繰り返す。
【００８６】
未処理の一次異常コネクションがないと判定した場合には、端子Ｄを介して図１７ＢのＳ１７１１に示した処理に移る。
【００８７】
図１７Ｂの説明に移る。図１５のＳ１５１９に示したＬ４解析処理において一次異常コネクションを検出したか否かを判定する（Ｓ１７１１）。一次異常コネクションを検出していないと判定した場合には、そのまま一次異常登録処理を終える。
【００８８】
一方、一次異常コネクションを検出したと判定した場合には、第１登録部１４０９は、検出された一次異常コネクションが登録されているか否かを判定する（Ｓ１７１３）。第１登録部１４０９は、一次異常コネクションのＩＤが既に一次異常テーブルに設定されている場合に、当該一次異常コネクションが登録されていると判定する。当該一次異常コネクションが登録されていると判定した場合には、Ｓ１７１７に示した処理に移る。
【００８９】
当該一次異常コネクションが登録されていないと判定した場合には、第１登録部１４０９は、当該一次異常コネクションを一次異常テーブルに登録する（Ｓ１７１５）。具体的には、第１登録部１４０９は、一次異常テーブルにおいて未設定のレコードを特定し、当該レコードに当該一次異常コネクションのＩＤを設定する。
【００９０】
第１登録部１４０９は、当該レコードの最終日時を更新する（Ｓ１７１７）。具体的には、更に、第１登録部１４０９は、当該レコードの最終日時のフィールドに、当日の日付と現在時刻とを設定する。そして、一次異常登録処理を終え、図１６に示したＳ１５２３の処理に移る。
【００９１】
図１６の説明に戻る。Ｌ７解析部８３３は、Ｌ７解析処理を実行する（Ｓ１５２３）。Ｌ７解析処理は、従来の処理と同様であるので、これ以上説明しない。
【００９２】
図１６に示した処理を終えると、端子Ｃを介して図１５に示したＳ１５０１の処理に戻って、上述した処理を繰り返す。
【００９３】
続いて、格納処理部８２７について説明する。図１８に、格納処理部８２７のモジュール構成例を示す。格納処理部８２７は、生成部１８００、オブジェクト記憶部１８０７及び書き込み部１８１１を有している。生成部１８００は、オブジェクトを生成する。生成部１８００は、読み込み部１８０１、記憶部１８０３及び分別部１８０５を有している。読み込み部１８０１は、インデックスバッファ８２３からインデックスを読み込む。記憶部１８０３は、読み込まれたインデックスを一時的に記憶する。分別部１８０５は、インデックスに基づいて、パケットを分別する。
【００９４】
オブジェクト記憶部１８０７は、オブジェクト（収集データ及び収集データに関するメタデータ）を記憶する。書き込み部１８１１は、保存データ（テーブルリスト、二次異常テーブル及びオブジェクト）を保存データ記憶部８４３に書き込む。
【００９５】
上述した読み込み部１８０１、分別部１８０５及び書き込み部１８１１は、ハードウエア資源（例えば、図２８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００９６】
上述した記憶部１８０３及びオブジェクト記憶部１８０７は、ハードウエア資源（例えば、図２８）を用いて実現される。
【００９７】
次に、オブジェクト記憶部１８０７に記憶されるオブジェクトについて説明する。図１９に、オブジェクトの構成例を示す。この例におけるオブジェクト１９０１は、メタデータ１９０３と収集データ１９０５とを含んでいる。収集データ１９０５は、分別されたパケットを収集したデータである。メタデータ１９０３は、分別のキーとなったコネクションに関するデータ及び収集データ１９０５に関するデータを含んでいる。
【００９８】
図２０に、メタデータ１９０３の例を示す。メタデータ１９０３は、収集データ１９０５に対応付けて設けられる。メタデータ１９０３は、ヘッダ部とテーブル部とを有している。
【００９９】
ヘッダ部には、コネクションＩＤを設定するためのフィールドと、コネクションデータを設定するためのフィールドとが設けられている。コネクションデータを設定するためのフィールドには、送信元ＩＰアドレスを設定するためのフィールドと、送信元ポート番号を設定するためのフィールドと、送信先ＩＰアドレスを設定するためのフィールドと、送信先ポート番号を設定するためのフィールドと、プロトコル番号を設定するためのフィールドとが含まれている。
【０１００】
この例のヘッダ部は、このメタデータ１９０３が、コネクションＩＤ「ＣＮ−０００１」のコネクションに係るパケットの収集データ１９０５に対応することを示している。また、この例のヘッダ部は、このコネクションについて、ＩＰアドレス「１０．２０．３０．４０」のホスト装置におけるポート番号「２０００」が送信元に相当し、ＩＰアドレス「１０．２０．３０．５０」のホスト装置におけるポート番号「２０」が送信先に相当することを示している。また、この例のヘッダ部は、このコネクションにおける第４層のプロトコルは、ＴＣＰであることも示している。
【０１０１】
テーブル部には、収集データ１９０５に含まれるパケット毎のレコードが設けられている。レコードには、パケットＩＤを設定するためのフィールドと、オフセットを設定するためのフィールドとが設けられている。この例のテーブル部において、１番目のパケットは、パケットＩＤ「ＰＣ−０００００１」で特定され、オフセット「０」を先頭に格納されている。２番目のパケットは、パケットＩＤ「ＰＣ−０００００６」で特定され、オフセット「６２４」を先頭に格納されている。
【０１０２】
図２１に、収集データ１９０５の例を示す。この例における収集データ１９０５は、同じコネクションに係るパケットを連結している。収集データ１９０５は、コネクションＩＤ「ＣＮ−０００１」に係るパケットを３個連結している。１番目のパケットの先頭オフセットが「０」であり、２番目のパケットの先頭オフセットが「６２４」である。
【０１０３】
次に、生成部１８００による生成処理について説明する。図２２に、生成処理フローを示す。読み込み部１８０１は、インデックステーブルにおいて、リードポインタが指すインデックスレコードを特定する（Ｓ２２０１）。読み込み部１８０１は、インデックスレコードに設定されている受信日時から所定時間（遅延時間に相当する。）を経過しているか否かを判定する（Ｓ２２０３）。
【０１０４】
受信日時から所定時間を経過していないと判定した場合には、読み込み部１８０１は、受信日時から所定時間だけ経過するタイミングを待つ（Ｓ２２０５）。そして、当該タイミングに至ると、Ｓ２２０１に示した処理に移る。
【０１０５】
一方、受信日時から所定時間を経過していると判定した場合には、読み込み部１８０１は、インデックスレコードをリードして（Ｓ２２０７）、リードポインタに１を加える（Ｓ２２０９）。リードポインタが最終のレコード番号を指している場合には、読み込み部１８０１は、リードポインタを先頭のレコード番号に戻す。
【０１０６】
分別部１８０５は、インデックスレコードに設定されているコネクションＩＤが、一次異常コネクションに該当するか否かを判定する（Ｓ２２１１）。具体的には、分別部１８０５は、当該コネクションＩＤが、一次異常テーブルに設定されているいずれかの一次異常コネクションのＩＤと一致する場合に、一次異常コネクションに該当すると判定する。
【０１０７】
当該コネクションＩＤが一次異常コネクションに該当しないと判定した場合には、Ｓ２２０１に示した処理に戻って上述した処理を繰り返す。
【０１０８】
一方、当該コネクションＩＤが一次異常コネクションに該当すると判定した場合には、分別部１８０５は、分別処理を実行する（Ｓ２２１３）。
【０１０９】
図２３に、分別処理フローを示す。分別部１８０５は、インデックスレコードに設定されているパケットＩＤで特定されるパケットをパケットバッファ８１５から取得する（Ｓ２３０１）。更に、分別部１８０５は、インデックスレコードのコネクションＩＤを読む（Ｓ２３０３）。
【０１１０】
分別部１８０５は、当該コネクションＩＤに相当するメタデータ１９０３が設定済みであるか否かを判定する（Ｓ２３０５）。具体的には、分別部１８０５は、オブジェクト記憶部１８０７に記憶されているメタデータ１９０３のいずれかに当該コネクションＩＤが設定されているか否かを判定する。
【０１１１】
当該コネクションＩＤに相当するメタデータ１９０３が設定されていないと判定した場合に、分別部１８０５は、まずオブジェクト記憶部１８０７に新たな収集データ１９０５の予約領域を設定し、その領域の先頭に当該パケットを格納する（Ｓ２３０７）。
【０１１２】
続いて、分別部１８０５は、オブジェクト記憶部１８０７に当該収集データ１９０５のメタデータ１９０３を生成する。メタデータ１９０３のヘッダ部には、当該コネクションＩＤと、コネクションテーブルから取得されたコネクションデータが設定される。また、分別部１８０５は、メタデータ１９０３のテーブル部に最初のレコードを設定する（Ｓ２３０９）。レコードには、パケットＩＤと当該パケットの先頭を指すオフセットとが設定される。分別処理を終えると、生成処理に復帰する。
【０１１３】
一方、Ｓ２３０５に示した処理において、当該コネクションＩＤに相当するメタデータ１９０３が設定されていると判定した場合には、既に当該コネクションＩＤに係る収集データ１９０５とメタデータ１９０３が存在する。この場合、分別部１８０５は、既存の収集データ１９０５の予約領域にパケットを追加する（Ｓ２３１１）。また、既存のメタデータ１９０３のテーブル部にレコードを追加する（Ｓ２３１３）。レコードには、パケットＩＤと当該パケットの先頭を指すオフセットとが設定される。分別処理を終えると、生成処理に復帰する。
【０１１４】
書き込み部１８１１について説明する前に、統計部８１９について説明する。図２４に、統計部８１９のモジュール構成例を示す。統計部８１９は、Ｌ４統計部８３５とＬ７統計部８３７との他に、制御部２４０１、第２登録部２４０３及び記憶部２４０５を有している。
【０１１５】
制御部２４０１は、統計部８１９における制御を行う。第２登録部２４０３は、二次異常コネクションを二次異常テーブルに登録する。記憶部２４０５は、統計部８１９の内部で用いるデータを記憶する。
【０１１６】
上述した制御部２４０１及び第２登録部２４０３は、ハードウエア資源（例えば、図２８）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【０１１７】
上述した記憶部２４０５は、ハードウエア資源（例えば、図２８）を用いて実現される。
【０１１８】
統計部８１９による統計処理について説明する。図２５に、統計処理フローを示す。制御部２４０１は、Ｌ４統計処理のタイミングを待つ（Ｓ２５０１）。つまり、制御部２４０１は、周期に相当する時間の経過を待つ。Ｌ４統計部８３５は、Ｌ４統計処理を実行する（Ｓ２５０３）。Ｌ４統計処理では、前回のＬ４統計処理の時点以降にキャプチャしたパケットをサンプルとして、送受信パケット数及びバイト数、パケットのロス数、ＲＴＴ等の統計値によりネットワーク状態を診断する。尚、各パケットに対する解析結果は、Ｌ４解析部８３１から得られる。Ｌ４統計処理では、各パケットに対する解析結果を統計的に処理し、統計値に基づいてより確度の高い異常判定を行う。
【０１１９】
第２登録部２４０３は、当該周期に対応する二次異常テーブルを生成する（Ｓ２５０５）。上述したように、周期毎に二次異常テーブルが設けられる。
【０１２０】
第２登録部２４０３は、一次異常テーブルに設定されている一次異常コネクションを１つ特定する（Ｓ２５０７）。尚、一次異常テーブルに一次異常コネクションが設定されていない場合には、そのままＳ２５１５に示した処理に移る。
【０１２１】
第２登録部２４０３は、当該一次異常コネクションがＬ４統計処理において異常と判定されたか否かによって処理を分岐させる（Ｓ２５０９）。当該一次異常コネクションがＬ４統計処理において異常と判定されていない場合には、Ｓ２５１３に示した処理に移る。
【０１２２】
一方、当該一次異常コネクションがＬ４統計処理においても異常と判定されている場合には、第２登録部２４０３は、当該一次異常コネクションを二次異常コネクションとして二次異常テーブルに登録する（Ｓ２５１１）。
【０１２３】
第２登録部２４０３は、未処理の一次異常コネクションがあるか否かを判定する（Ｓ２５１３）。未処理の一次異常コネクションがあると判定した場合には、Ｓ２５０７に示した処理に戻って、上述した処理を繰り返す。
【０１２４】
一方、未処理の一次異常コネクションがないと判定した場合には、第２登録部２４０３は、二次異常テーブルをテーブルリストの管理対象に加える（Ｓ２５１５）。具体的には、第２登録部２４０３は、テーブルリストの新たなレコードに、Ｌ４統計処理の日時と、二次異常テーブルのアドレスを設定する。Ｌ４統計処理の日時は、周期を特定する。但し、Ｌ４統計処理の日時に代えて、周期番号によって周期を特定するようにしてもよい。
【０１２５】
Ｌ７統計部８３７は、Ｌ７統計処理を実行する（Ｓ２５１７）。Ｌ７統計処理は、従来技術と同様であるので、説明を省く。そして、Ｓ２５０１に示した処理に戻る。以上で、統計処理についての説明を終える。
【０１２６】
最後に、書き込み部１８１１について説明する。図２６に、書き込み部１８１１によって書き込まれる保存データの例を示す。保存データには、図１２に例示したテーブルリスト及び二次異常テーブルが含まれる。但し、テーブルポインタは、書き換えられる場合もある。また、二次異常テーブルには、二次異常コネクションのオブジェクト１９０１の格納位置を特定するオブジェクトポインタのためのフィールドが付加される。図示したように、保存データは、各周期における二次異常コネクションに関するオブジェクト１９０１も含んでいる。
【０１２７】
図２７Ａ及び図２７Ｂに、書き込み処理フローを示す。書き込み部１８１１は、未だ特定対象となっていないＬ４統計処理の時点を特定する。具体的には、書き込み部１８１１は、現在から所定時間（遅延時間に相当する）だけ遡った時以後に行われたＬ４統計処理の時点を特定する（Ｓ２７０１）。
【０１２８】
そして、書き込み部１８１１は、Ｌ４統計処理の時点から上記所定時間だけ経過するまで待つ（Ｓ２７０３）。
【０１２９】
Ｌ４統計処理の時点から上記所定時間だけ経過すると、書き込み部１８１１は、更に、インデックステーブルにおけるリードポインタが指すインデックスレコードに設定されている受信日時がＬ４統計処理の時点を超えたか否かを判定する（Ｓ２７０５）。
【０１３０】
当該受信日時がＬ４統計処理の時点を超えていないと判定した場合には、Ｓ２７０５に示した処理を繰り返す。
【０１３１】
当該受信日時がＬ４統計処理の時点を超えたと判定した場合には、書き込み部１８１１は、オブジェクト記憶部１８０７に記憶しているテーブルリストと二次異常テーブルとを保存データ記憶部８４３に書き込む（Ｓ２７０７）。このとき、書き込み部１８１１は、更新された内容のみを書き込むようにしてもよい。
【０１３２】
端子Ｅを介して、図２７ＢのＳ２７０９に示した処理に移る。書き込み部１８１１は、オブジェクト記憶部１８０７に記憶されているオブジェクト１９０１を１つ特定する（Ｓ２７０９）。
【０１３３】
書き込み部１８１１は、特定されたオブジェクト１９０１のコネクションが、今回のＬ４統計処理における二次異常コネクションに該当するか否かを判定する（Ｓ２７１１）。具体的には、書き込み部１８１１は、当該オブジェクト１９０１のメタデータ１９０３のヘッダに設定されているコネクションＩＤが、最新の二次異常テーブルにおけるいずれかの二次異常コネクションのＩＤと一致する場合に、特定されたオブジェクト１９０１のコネクションが、今回のＬ４統計処理における二次異常コネクションに該当すると判定する。
【０１３４】
Ｓ２７０９において特定されたオブジェクト１９０１のコネクションが、今回のＬ４統計処理における二次異常コネクションに該当すると判定した場合には、Ｓ２７１５に示した処理に移る。
【０１３５】
一方、Ｓ２７０９において特定されたオブジェクト１９０１のコネクションが、今回のＬ４統計処理における二次異常コネクションに該当しないと判定した場合には、書き込み部１８１１は、更に、当該コネクションが、前回のＬ４統計処理における二次異常コネクションに該当するか否かを判定する（Ｓ２７１３）。具体的には、書き込み部１８１１は、当該オブジェクト１９０１のメタデータ１９０３のヘッダに設定されているコネクションＩＤが、最新の一つ前の二次異常テーブルにおけるいずれかの二次異常コネクションのＩＤと一致する場合に、特定されたオブジェクト１９０１のコネクションが、前回のＬ４統計処理における二次異常コネクションに該当すると判定する。
【０１３６】
Ｓ２７０９において特定されたオブジェクト１９０１のコネクションが、前回のＬ４統計処理における二次異常コネクションに該当すると判定した場合には、Ｓ２７１５に示した処理に移る。Ｓ２７０９において特定されたオブジェクト１９０１のコネクションが、前回のＬ４統計処理における二次異常コネクションに該当しないと判定した場合には、Ｓ２７１９に示した処理に移る。
【０１３７】
Ｓ２７１５において、書き込み部１８１１は、当該オブジェクト１９０１を保存データ記憶部８４３に書き込む。書き込み部１８１１は、書き込んだオブジェクト１９０１へのポインタを、該当回（最新回又は前回）の二次異常テーブルの該当二次異常コネクションのレコードに設定する（Ｓ２７１７）。
【０１３８】
Ｓ２７１９において、書き込み部１８１１は、オブジェクト記憶部１８０７に記憶している当該オブジェクト１９０１を消去する。
【０１３９】
書き込み部１８１１は、未処理のオブジェクト１９０１があるか否かを判定する（Ｓ２７２１）。未処理のオブジェクト１９０１があると判定した場合には、Ｓ２７０９に示した処理に戻って上述した処理を繰り返す。一方、未処理のオブジェクト１９０１がないと判定した場合には、端子Ｆを介して、図２７ＡのＳ２７０１に示した処理に戻って、次の周期における処理を行う。
【０１４０】
このように、前回のＬ４統計処理における二次異常コネクションのオブジェクト１９０１も書き込むようにすれば、二次異常が途中で解消した場合であっても、二次異常を最後に検出した周期におけるパケットも収集することができる。但し、前回のＬ４統計処理における二次異常コネクションのオブジェクト１９０１を書き込まないようにしてもよい。
【０１４１】
本実施の形態によれば、異常コネクションに係るパケットを、より少ない資源で収集できる。
【０１４２】
また、一旦オブジェクト記憶部１８０７にオブジェクト１９０１を生成するので、パケットバッファ８１５の容量が少なくて済むという面がある。
【０１４３】
また、不要になったオブジェクト１９０１を消去するので、オブジェクト記憶部１８０７の容量が少なくて済むという面がある。
【０１４４】
また、二次異常が生じていないコネクションのオブジェクト１９０１を保存しないので、保存データ記憶部８４３の容量が少なくて済むという面がある。
【０１４５】
更に、データの書き込み、読み取り及び消去などの処理に係る負荷が少ないという面もある。
【０１４６】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１４７】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０１４８】
なお、上で述べたネットワーク監視装置８０１は、コンピュータ装置であって、図２８に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４９】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１５０】
本実施の形態に係るパケット収集方法は、（Ａ）ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、（Ｂ）第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、（Ｃ）バッファに格納したパケットの各々を解析して一次異常が生じているコネクションを検出し、（Ｄ）一次異常が生じたコネクション毎に、当該コネクションの第２識別子が対応付けられた第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、（Ｅ）サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、（Ｆ）第１記憶領域に記憶されたグループのうち、二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む処理を含む。
【０１５１】
このようにすれば、異常コネクションに係るパケットを、より少ない資源で収集できる。
【０１５２】
更に、二次異常が生じたコネクションに係るグループ及び二次異常が生じなかったコネクションに係るグループを、第１記憶領域から消去する処理を含むようにしてもよい。
【０１５３】
このようにすれば、第１記憶領域の容量が少なくて済む。
【０１５４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１５５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５６】
（付記１）
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出し、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む
処理を含み、コンピュータにより実行されるパケット収集方法。
【０１５７】
（付記２）
更に、
前記二次異常が生じたコネクションに係る前記グループ及び前記二次異常が生じなかったコネクションに係るグループを、前記第１記憶領域から消去する
処理を含む、付記１記載のパケット収集方法。
【０１５８】
（付記３）
前記一次異常は、同一のコネクションに関して、前記二次異常の検出より前に検出される異常である
付記１又は２記載のパケット収集方法。
【０１５９】
（付記４）
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納し、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付け、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出し、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶し、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出し、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む
処理をコンピュータに実行させるパケット収集プログラム。
【０１６０】
（付記５）
ネットワークからキャプチャしたパケットの各々に第１識別子を割り当てると共に、当該パケットの各々をバッファに格納する格納処理部と、
前記第１識別子の各々に、当該第１識別子に係るパケットのコネクションを特定する第２識別子を対応付ける対応付け部と、
前記バッファに格納した前記パケットの各々を解析して一次異常が生じているコネクションを検出する第１検出部と、
前記一次異常が生じたコネクション毎に、当該コネクションの前記第２識別子が対応付けられた前記第１識別子が割り当てられたパケットのグループを第１記憶領域に記憶する記憶処理部と、
サンプリング期間にキャプチャしたパケットの解析結果に関する統計値に基づき、二次異常が生じているコネクションを検出する第２検出部と、
前記第１記憶領域に記憶された前記グループのうち、前記二次異常が生じたコネクションに係るグループを第２記憶領域に書き込む書き込み部と
を有するパケット収集装置。
【符号の説明】
【０１６１】
８０１  ネットワーク監視装置    ８０３  監視対象ネットワーク
８０５  ネットワークタップ    ８０７  伝送ネットワーク
８０９  ストレージ装置    ８１１  ＮＩＣ
８１３  ドライバ    ８１５  パケットバッファ
８１７  解析部    ８１９  統計部
８２１  コネクションテーブル記憶部    ８２３  インデックスバッファ
８２５  一次異常記憶部    ８２７  格納処理部
８２９  二次異常記憶部    ８３１  Ｌ４解析部
８３３  Ｌ７解析部    ８３５  Ｌ４統計部
８３７  Ｌ７統計部    ８４１  統計データ記憶部
８４３  保存データ記憶部    １４０１  記憶部
１４０３  受付部    １４０５  コネクションテーブル生成部
１４０７  インデックス生成部    １４０９  第１登録部
１８００  生成部    １８０１  読み込み部
１８０３  記憶部    １８０５  分別部
１８０７  オブジェクト記憶部    １８１１  書き込み部
１９０１  オブジェクト    １９０３  メタデータ
１９０５  収集データ    ２４０１  制御部
２４０３  第２登録部    ２４０５  記憶部
【図１】
0006672751.tif 000002
【図２】
0006672751.tif 000003
【図３】
0006672751.tif 000004
【図４】
0006672751.tif 000005
【図５】
0006672751.tif 000006
【図６】
0006672751.tif 000007
【図７】
0006672751.tif 000008
【図８】
0006672751.tif 000009
【図９】
0006672751.tif 000010
【図１０】
0006672751.tif 000011
【図１１】
0006672751.tif 000012
【図１２】
0006672751.tif 000013
【図１３】
0006672751.tif 000014
【図１４】
0006672751.tif 000015
【図１５】
0006672751.tif 000016
【図１６】
0006672751.tif 000017
【図１７Ａ】
0006672751.tif 000018
【図１７Ｂ】
0006672751.tif 000019
【図１８】
0006672751.tif 000020
【図１９】
0006672751.tif 000021
【図２０】
0006672751.tif 000022
【図２１】
0006672751.tif 000023
【図２２】
0006672751.tif 000024
【図２３】
0006672751.tif 000025
【図２４】
0006672751.tif 000026
【図２５】
0006672751.tif 000027
【図２６】
0006672751.tif 000028
【図２７Ａ】
0006672751.tif 000029
【図２７Ｂ】
0006672751.tif 000030
【図２８】
0006672751.tif 000031