(57)【要約】【課題】ネットワーク監視システムにおいて、異常フロー（異常な通信）を少ない計算量で特定できるようにすることを目的とする。【解決手段】フロー情報処理部１１０は、収集された各フロー情報を当該フロー情報のフローＩＤに対応する１または複数の特定の異常検出部１２０に入力する。各異常検出部１２０は、入力された各フロー情報に異常フローのフロー情報が含まれているか判定し、含まれている場合には「１」を出力し、含まれていない場合には「０」を出力する。異常フロー特定部１３０は、異常検出部１２０の出力を並べて異常フローのフローＩＤを特定する。異常フロー通知部１４０は、特定されたフローＩＤに基づいて異常フローを管理者２２０に通知する。【選択図】図９
2010177733.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信それぞれの通信ＩＤを複数の部分ＩＤに区切り、部分ＩＤ毎に当該部分ＩＤが所定の値を示す各通信の通信情報を通信情報グループとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて出力する通信情報グループ出力部と、
前記通信情報グループ出力部により部分ＩＤ毎に出力された各通信情報グループが、当該通信情報グループの特徴が所定の特徴を示す正常な通信情報グループと、当該通信情報グループの特徴が所定の特徴を示さない異常な通信情報グループとのいずれであるか通信情報グループ毎にＣＰＵを用いて判定する通信情報グループ判定部と、
前記通信情報グループ判定部により判定された各異常な通信情報グループのいずれにも含まれる通信情報に対応する通信であり、前記通信情報グループ判定部により判定された各正常な通信情報グループのいずれにも含まれない通信情報に対応する通信を、異常な通信としてＣＰＵを用いて特定する異常通信特定部と
を備えたことを特徴とする通信監視装置。
【請求項２】
前記通信情報グループ出力部は、複数の通信それぞれの通信ＩＤのビット列を複数の部分ＩＤに区切り、部分ＩＤ毎に前記通信情報グループを出力する
ことを特徴とする請求項１記載の通信監視装置。
【請求項３】
前記通信情報グループ出力部は、特定のビット数で表される通信ＩＤのビット列に基づいて、複数の通信それぞれの通信ＩＤを前記特定のビット数の部分ＩＤに区切り、部分ＩＤ毎に前記通信情報グループを出力する
ことを特徴とする請求項２記載の通信監視装置。
【請求項４】
前記通信情報グループ出力部は、前記ビット列のｉ番目のビットが前記所定の値として「１」を示す各通信の通信情報をｉ番目の通信情報グループとして出力し、
前記異常通信特定部は、前記通信情報グループ判定部によりｉ番目の通信情報グループが正常な通信情報グループと判定された場合、ｉ番目のビットの値を「０」とし、前記通信情報グループ判定部によりｉ番目の通信情報グループが異常な通信情報グループと判定された場合、ｉ番目のビットの値を「１」として特定のビット列を生成し、生成したビット列に基づいて前記異常な通信を特定する
ことを特徴とする請求項３記載の通信監視装置。
【請求項５】
各通信ＩＤは、「１」を示すビットを特定数含むことを特徴とする請求項４記載の通信監視装置。
【請求項６】
前記異常通信特定部は、生成した前記特定のビット列に「１」を示すビットが前記特定数と異なる数含まれる場合、前記異常な通信を特定する代わりに、異常な通信が複数あることを特定する
ことを特徴とする請求項５記載の通信監視装置。
【請求項７】
前記通信情報グループ出力部は、複数の通信それぞれの通信ＩＤに対応する冗長情報を生成し、生成した冗長情報を当該通信ＩＤに付加した誤り訂正符号を生成し、生成した誤り訂正符号を複数の部分ＩＤに区切り、部分ＩＤ毎に前記通信情報グループを出力する
ことを特徴とする請求項１〜請求項６いずれかに記載の通信監視装置。
【請求項８】
前記通信監視装置は、さらに、
前記通信情報グループ判定部の判定結果のうち前記冗長情報の前記部分ＩＤに対応する判定結果に基づいて、前記通信情報グループ判定部の判定結果のうち前記通信ＩＤの前記部分ＩＤに対応する判定結果をＣＰＵを用いて訂正する通信情報グループ判定結果訂正部を備え、
前記異常通信特定部は、前記通信情報グループ判定結果訂正部により訂正された前記通信ＩＤ内の前記部分ＩＤに対応する判定結果に基づいて、前記異常な通信を特定する
ことを特徴とする請求項７記載の通信監視装置。
【請求項９】
通信情報グループ出力部が、複数の通信それぞれの通信ＩＤを複数の部分ＩＤに区切り、部分ＩＤ毎に当該部分ＩＤが所定の値を示す各通信の通信情報を通信情報グループとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて出力する通信情報グループ出力処理を行い、
通信情報グループ判定部が、前記通信情報グループ出力部により部分ＩＤ毎に出力された各通信情報グループが、当該通信情報グループの特徴が所定の特徴を示す正常な通信情報グループと、当該通信情報グループの特徴が所定の特徴を示さない異常な通信情報グループとのいずれであるか通信情報グループ毎にＣＰＵを用いて判定する通信情報グループ判定処理を行い、
異常通信特定部が、前記通信情報グループ判定部により判定された各異常な通信情報グループのいずれにも含まれる通信情報に対応する通信であり、前記通信情報グループ判定部により判定された各正常な通信情報グループのいずれにも含まれない通信情報に対応する通信を、異常な通信としてＣＰＵを用いて特定する異常通信特定処理を行う
ことを特徴とする通信監視装置の通信監視方法。
【請求項１０】
請求項９記載の通信監視方法を通信監視装置に実行させる通信監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、異常な通信を特定する通信監視装置、通信監視装置の通信監視方法および通信監視プログラムに関するものである。
【背景技術】
【０００２】
従来の異常検出型のネットワーク監視技術として、平常時のネットワークを流れるトラフィックフローの時系列を学習しておき、観測されたフローが統計的に平常時と大きく異なった場合に不正アクセスとみなす技術が提案されている。例えば、特許文献１では、監視対象のネットワーク上を流れるフローを観測し、送信先アドレスや送信元アドレスを基準にしてフローを分類する。さらに、フローに含まれるパケット数あるいはデータサイズを単位時間ごとに集計した時系列情報を生成し、集計量が平常時と異なる場合を閾値法を用いて検出し、集計量が平常時と異なる場合に不正アクセスが発生したとみなす。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１３５９０号公報
【特許文献２】特開２００８−１４６１５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の手法では、異常かどうかを判定したいフロー種別数をＮとしたとき、Ｎ個の時系列データを生成し、各々について監視する必要があった。例えば、１００００台のクライアントＰＣ（パーソナルコンピュータ）から特定のサーバ装置への通信を監視し、サーバ装置へ異常な通信を行っているクライアントＰＣを検出する場合を考えると次のようになる。この場合には、サーバ装置に向けたフローを送信元アドレス毎に分類して１００００個のグループを作成し、１００００個各々のグループについて時系列の変化を常時監視しなければならない。従来の手法には、Ｎに比例して時間／空間計算量が増大する、という課題があった。
【０００５】
特許文献１では、常時監視するグループ数を減らすためにＮ種類のフローを幾つか（例えば送信元ＬＡＮ毎）にまとめ、まとめられたグループ単位で時系列の変化を監視することも可能としている。しかし、あるグループで異常を検出した場合、グループ内のどのフローが異常であるかを特定するために、再度グループ内のフローを個別に分析（学習も含む）する必要がある。グループ単位で監視する場合にも、フローの特定に時間がかかる、という課題があった。
【０００６】
本発明は、例えば、ネットワーク監視システムにおいて、異常フローを少ない計算量で特定できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の通信監視装置は、複数の通信それぞれの通信ＩＤを複数の部分ＩＤに区切り、部分ＩＤ毎に当該部分ＩＤが所定の値を示す各通信の通信情報を通信情報グループとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて出力する通信情報グループ出力部と、前記通信情報グループ出力部により部分ＩＤ毎に出力された各通信情報グループが、当該通信情報グループの特徴が所定の特徴を示す正常な通信情報グループと、当該通信情報グループの特徴が所定の特徴を示さない異常な通信情報グループとのいずれであるか通信情報グループ毎にＣＰＵを用いて判定する通信情報グループ判定部と、前記通信情報グループ判定部により判定された各異常な通信情報グループのいずれにも含まれる通信情報に対応する通信であり、前記通信情報グループ判定部により判定された各正常な通信情報グループのいずれにも含まれない通信情報に対応する通信を、異常な通信としてＣＰＵを用いて特定する異常通信特定部とを備える。
【発明の効果】
【０００８】
本発明によれば、例えば、ネットワーク監視システムにおいて、異常フロー（異常な通信）を少ない計算量で特定できる。これにより、異常フローがより早く検出される。また、性能が低い通信監視装置を用いることができるため、ネットワーク監視システムのコストが低くなる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１におけるネットワーク監視システム２００の構成図。
【図２】実施の形態１におけるネットワーク監視装置１００のハードウェア資源の一例を示す図。
【図３】実施の形態１におけるネットワーク監視装置１００の異常フロー発生ホストの特定方法を示すフローチャート。
【図４】実施の形態１におけるフロー情報蓄積テーブル１９１を示す図。
【図５】実施の形態１におけるフロー管理テーブル１８１を示す図。
【図６】実施の形態１におけるフロー情報入力処理（Ｓ１１０）を示すフローチャート。
【図７】実施の形態１におけるフロー情報入力処理（Ｓ１１０）の動作原理を示す図。
【図８】実施の形態１における異常フロー特定処理（Ｓ１３０）を示すフローチャート。
【図９】実施の形態１における異常フロー発生ホストの特定方法の動作原理を示す図。
【図１０】実施の形態２におけるネットワーク監視システム２００の構成図。
【図１１】実施の形態２におけるフロー情報入力処理（Ｓ１１０）を示すフローチャート。
【図１２】実施の形態２における異常フロー特定処理（Ｓ１３０）を示すフローチャート。
【図１３】実施の形態２におけるフロー情報入力処理（Ｓ１１０）〜異常フロー特定処理（Ｓ１３０）の模式図。
【図１４】実施の形態３におけるネットワーク監視システム２００の構成図。
【図１５】実施の形態３におけるフロー管理テーブル１８１の一例を示す図。
【図１６】実施の形態３における異常フロー特定処理（Ｓ１３０）を示すフローチャート。
【発明を実施するための形態】
【００１０】
実施の形態１．
異常フローを含んだフローグループを検出すると共に、フローグループ内のいずれのフローが異常であるかをフローグループに含まれる各フローを個別に調べずに特定する形態について説明する。
【００１１】
図１は、実施の形態１におけるネットワーク監視システム２００の構成図である。
実施の形態１におけるネットワーク監視システム２００の構成について、図１に基づいて以下に説明する。
【００１２】
ネットワーク監視システム２００は、監視対象ネットワーク２０１、フロー情報収集装置２１０およびネットワーク監視装置１００（通信監視装置の一例）を備える。
ネットワーク監視システム２００は、監視対象ネットワーク２０１のトラフィック（監視対象ネットワーク２０１を介して送受信されるパケット２０２）に関するフロー情報を収集し、収集したフロー情報を一定時間間隔で集計して時系列データを生成し、時系列データに異常な変動が含まれるか調べ、時系列データに異常な変動を見つけると異常フローのフロー種別を管理者２２０に通知する。
【００１３】
「フロー」は、特定単位の通信に対応するものであり、通信、通信されたパケット２０２、パケット２０２の流れ、パケット２０２の通信順序、パケット２０２の通信経路などを意味する。例えば、特定の通信装置間の通信が一つのフローとなる。この場合、通信装置Ａと通信装置Ｂとの通信は通信装置Ａと通信装置Ｃとの通信とは異なるフローである。
【００１４】
「フロー情報」は、対応する通信に関係した１つ以上のパケット２０２の情報を集計したものであり、当該パケット２０２が送受信されたフローを特定する情報である。例えば、フロー情報には、当該フローが発生した時間（「フロー発生時間」）、送信元アドレス、送信先アドレス、プロトコル、データサイズ、パケット数等が含まれる。フロー情報の形式には、Ｎｅｔｆｌｏｗと呼ばれる業界標準の形式がある。フロー情報の形式は、Ｎｅｔｆｌｏｗ形式でも、Ｎｅｔｆｌｏｗ以外の形式でも構わない。
【００１５】
「異常フロー」とは、通信装置への不正なアクセスや通信装置の故障などが発生したフローのことである。
【００１６】
「フロー種別」は、フロー情報に対応するフローを識別する情報（例えば、グループ名）である。例えば、１００００台のＰＣからあるサーバ装置への通信を監視し、異常なフローを発生させたＰＣを特定したいのであれば、フロー種別の数はＰＣの台数と同じ「１００００」である。
【００１７】
監視対象ネットワーク２０１は、ネットワーク監視装置１００により監視される対象のネットワークである。監視対象ネットワーク２０１には複数の通信装置（例えば、クライアントＰＣ、サーバ装置）が接続され、各通信装置は監視対象ネットワーク２０１を介してパケット２０２を送受信する。
【００１８】
フロー情報収集装置２１０は、監視対象ネットワーク２０１を介して送受信される各パケット２０２を観測して監視対象ネットワーク２０１から各パケット２０２を収集し、収集した各パケット２０２からフロー情報を抽出し、抽出したフロー情報のうち監視対象となっているフロー情報をネットワーク監視装置１００に転送する。
フロー情報収集装置２１０として、このような機能を持つ市販のトラフィック監視機器を用いることができる。
【００１９】
ネットワーク監視装置１００は、フロー情報収集装置２１０から転送された各フロー情報に基づいて異常フローを特定し、特定した異常フローを管理者２２０に通知する。
ネットワーク監視装置１００は、フロー情報処理部１１０（通信情報グループ出力部の一例）、異常検出部１２０（異常通信情報グループ判定部の一例）、異常フロー特定部１３０（異常通信特定部の一例）、異常フロー通知部１４０、フロー管理部１８０およびフロー情報蓄積部１９０を備える。
【００２０】
フロー情報蓄積部１９０は、フロー情報収集装置２１０から転送されたフロー情報を受信し、受信したフロー情報をフロー情報蓄積テーブル１９１に設定して蓄積する記憶装置である。フロー情報蓄積部１９０は、十分な記憶容量を持ち、異常フローを検出する処理を実施する時間間隔（例えば、１０分）（以下、「異常検出時間間隔」という）の間にフロー情報収集装置２１０から到着する複数のフロー情報を蓄積できるものとする。
【００２１】
フロー管理部１８０は、フロー管理テーブル１８１を記憶する記憶装置である。
フロー管理テーブル１８１には、フローを識別する情報である「フローＩＤ」と、フローを識別する名称である「フロー種別名称」と、フローを識別する条件である「フロー条件」とが、フロー毎に予め設定されている。「フローＩＤ」は特定のビット数（例えば、数ビット）で表される。
【００２２】
フロー情報処理部１１０は、フロー情報蓄積部１９０から各フロー情報を取得し、取得した各フロー情報それぞれに対応するフローＩＤをフロー管理テーブル１８１に基づいて特定し、特定したフローＩＤに基づいて各フロー情報を１または複数の特定の異常検出部１２０に入力する。
フロー情報処理部１１０は、フロー情報取得部１１１、フロー情報対応ＩＤ特定部１１２およびフロー情報入力部１１３（通信情報グループ出力部の一例）を備える。
【００２３】
フロー情報取得部１１１は、フロー情報蓄積部１９０に蓄積されている各フロー情報を異常検出時間間隔毎に取得する。
【００２４】
フロー情報対応ＩＤ特定部１１２は、フロー情報取得部１１１により取得された各フロー情報それぞれに対応するフローＩＤをフロー管理テーブル１８１に基づいてＣＰＵを用いて特定する。
【００２５】
フロー情報入力部１１３は、フロー情報対応ＩＤ特定部１１２により特定されたフローＩＤに基づいて各フロー情報を１または複数の特定の異常検出部１２０に入力する。
具体的に、フロー情報入力部１１３は、フローＩＤを複数の部分ＩＤ（例えば、ビット）に区切り、部分ＩＤ毎に当該部分ＩＤが所定の値を示す各フロー情報をフロー情報グループとして特定の異常検出部１２０に入力する。
【００２６】
異常検出部１２０は、部分ＩＤ数だけ存在する。例えば、フローＩＤが３つの部分ＩＤに区切られる場合、異常検出部１２０は３個存在する。
複数ある異常検出部１２０は、フロー情報処理部１１０により部分ＩＤ毎に出力された各フロー情報グループが、当該フロー情報グループの特徴が所定の特徴を示す正常なフロー情報グループと、当該フロー情報グループの特徴が所定の特徴を示さない異常なフロー情報グループとのいずれであるかフロー情報グループ毎にＣＰＵを用いて判定する。
【００２７】
異常フロー特定部１３０は、異常検出部１２０により判定された各異常なフロー情報グループのいずれにも含まれるフロー情報に対応するフローＩＤであり、異常検出部１２０により判定された各正常なフロー情報グループのいずれにも含まれないフロー情報に対応するフローＩＤを、異常フローのフローＩＤとしてＣＰＵを用いて特定する。
【００２８】
異常フロー通知部１４０は、異常フロー特定部１３０により特定されたフローＩＤに対応するフローのフロー種別名称をフロー管理テーブル１８１に基づいて特定し、特定したフロー種別名称を異常フローの識別情報として出力装置（例えば、表示装置、スピーカー）に出力する。
【００２９】
図２は、実施の形態１におけるネットワーク監視装置１００のハードウェア資源の一例を示す図である。
図２において、ネットワーク監視装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（コンパクトディスク装置）、プリンタ装置９０６、スキャナ装置９０７、マイク９０８、スピーカー９０９、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
【００３０】
通信ボード９１５は、有線または無線により、ＬＡＮ（ローカルエリアネットワーク）、インターネット、電話回線などの通信網に接続されている。
【００３１】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
【００３２】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００３３】
ファイル群９２４には、実施の形態において、「〜部」の機能を実行した際の「〜の判定結果」、「〜の計算結果」、「〜の処理結果」などの結果データ、「〜部」の機能を実行するプログラム間で受け渡しするデータ、その他の情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。フロー管理テーブル１８１およびフロー情報蓄積テーブル１９１はファイル群９２４に含まれるものの一例である。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。これらのＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、実施の形態において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）等の記録媒体に記録される。また、データや信号値は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００３４】
また、実施の形態において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、「〜部」としてネットワーク監視装置１００（コンピュータの一例）を機能させるものである。あるいは、「〜部」の手順や方法をネットワーク監視装置１００に実行させるものである。
【００３５】
図３は、実施の形態１におけるネットワーク監視装置１００の異常フロー発生ホストの特定方法を示すフローチャートである。
実施の形態１におけるネットワーク監視装置１００の異常フロー発生ホストの特定方法（通信監視方法の一例）について、図３に基づいて以下に説明する。
ネットワーク監視装置１００の各「〜部」は、以下に説明する処理をＣＰＵを用いて実行する。
以下に説明する処理は、所定の異常検出時間間隔おきに実行される。
【００３６】
＜Ｓ１１０（通信情報グループ出力処理の一例）＞
フロー情報処理部１１０は、前回の処理（Ｓ１１０〜Ｓ１４０）以降に収集された各フロー情報をフロー情報蓄積部１９０から取得し、取得した各フロー情報に対応するフローＩＤをフロー管理部１８０に基づいて特定し、特定したフローＩＤに基づいて各フロー情報を１または複数の特定の異常検出部１２０に入力する。
以下に、Ｓ１１０の詳細について説明する。
【００３７】
図４は、実施の形態１におけるフロー情報蓄積テーブル１９１を示す図である。
フロー情報収集装置２１０により収集された各フロー情報は、図４に示すようにフロー情報蓄積テーブル１９１に設定される。フロー情報蓄積テーブル１９１の１レコード（１行）が１つのフロー情報である。
フロー情報には「フロー発生時刻」「送信元ＩＰアドレス」「送信元ポート番号」「宛先ＩＰアドレス」「宛先ポート番号」「プロトコル」「データサイズ」が含まれる。
フロー情報蓄積テーブル１９１はフロー情報蓄積部１９０に記憶されている。
【００３８】
図５は、実施の形態１におけるフロー管理テーブル１８１を示す図である。
図５に示すように、フロー管理テーブル１８１にはフロー毎に「フローＩＤ」「フロー種別名称」「フロー条件」が設定されている。フロー管理テーブル１８１の１レコードが１つのフローに関する情報を示す。
フローＩＤは、通番の符号なし整数値「１、２、・・・、Ｎ（Ｎ：フロー数）」で表される。フローＩＤのデータサイズは、「ｌｏｇ２（Ｎ＋１）ビット」（小数点以下切り上げ）である。つまり、フローＩＤのデータサイズは、２を底とした（Ｎ＋１）の対数を下回らない最小の整数値を「ｍ」とした場合、「ｍビット」である。例えば、フロー数Ｎが「５」の場合、フローＩＤのデータサイズは、「３ビット」である。
フロー種別名称は、どのようなフローであるかを人間（管理者２２０）が理解し易い文字列であることが望ましい。
フロー条件の「送信元ポート」に設定されている「＊」は、送信元ポートは何番でも構わないことを意味している。
フロー管理テーブル１８１は予め生成され、フロー管理部１８０に予め記憶される。
【００３９】
図６は、実施の形態１におけるフロー情報入力処理（Ｓ１１０）を示すフローチャートである。
実施の形態１におけるフロー情報入力処理（Ｓ１１０）について、図６に基づいて以下に説明する。
フロー情報入力処理（Ｓ１１０）では、図６に示すようにＳ１１１〜Ｓ１１８が実行される。
【００４０】
＜Ｓ１１１＞
フロー情報取得部１１１は、前回の処理以降に収集された各フロー情報をフロー情報蓄積部１９０から取得する。
以下、Ｓ１１１において取得されたフロー情報の数を「ｎ」とし、各フロー情報を「Ｆｘ（ｘ：１、２、・・・、ｎ）」と記す。
Ｓ１１１の後、処理はＳ１１２に進む。
【００４１】
＜Ｓ１１２＞
フロー情報対応ＩＤ特定部１１２は、第１のループ条件「ｋ＝１，ｎ，１」に基づいて、第１のループ処理（Ｓ１１２〜Ｓ１１８）を実行するか、または第１のループ処理を終了するか判定する。
第１のループ条件「ｋ＝１，ｎ，１」は、変数「ｋ」の初期値が「１」、ループ終了値が「ｎ」、ｋの増分値が「１」であることを示している。
以降、第１のループ処理（Ｓ１１２〜Ｓ１１８）が第１のループ条件に基づいてｎ回繰り返される。
第１のループ処理を実行する場合（ｋ≦ｎ）、処理はＳ１１３に進む。
第１のループ処理を終了する場合（ｋ＞ｎ［ｋ＝ｎ＋１］）、フロー情報入力処理（Ｓ１１０）は終了する。
【００４２】
＜Ｓ１１３＞
フロー情報対応ＩＤ特定部１１２は、フロー情報Ｆｋに対応するフローＩＤｋをフロー管理テーブル１８１に基づいて特定する。
例えば、フロー情報Ｆｋが図４に示すフロー情報蓄積テーブル１９１の１行目のレコード（フロー発生時刻：２００８／１／１  １０：２８：３０）であり、フロー管理テーブル１８１に図５に示すレコードが設定されている場合、フロー情報対応ＩＤ特定部１１２は、フロー管理テーブル１８１の１行目のレコードに設定されているフローＩＤ「１」をフロー情報Ｆｋに対応するフローＩＤｋとして特定する。フロー情報蓄積テーブル１９１の１行目のレコード（フロー情報Ｆｋ）が、フロー管理テーブル１８１の１行目のレコードのフロー条件に合致しているためである。
Ｓ１１３の後、処理はＳ１１４に進む。
【００４３】
＜Ｓ１１４＞
フロー情報入力部１１３は、第２のループ条件「ｉ＝１，ｍ，１」に基づいて、第２のループ処理（Ｓ１１４〜Ｓ１１７）を実行するか、または第２のループ処理を終了するか判定する。
第２のループ条件「ｉ＝１，ｍ，１」は、変数「ｉ」の初期値が「１」、ループ終了値が「ｍ」、ｉの増分値が「１」であることを示している。
ここで、「ｍ」は、フローＩＤのビット数を意味する。
以降、第２のループ処理（Ｓ１１４〜Ｓ１１７）が第２のループ条件に基づいてｍ回繰り返される。
第２のループ処理を実行する場合（ｉ≦ｍ）、処理はＳ１１５に進む。
第２のループ処理を終了する場合（ｉ＞ｍ［ｉ＝ｍ＋１］）、処理はＳ１１８に進む。
【００４４】
＜Ｓ１１５＞
フロー情報入力部１１３は、Ｓ１１３において特定されたフローＩＤｋのｉ番目のビットが「１」であるか判定する。
例えば、フローＩＤｋが「１」、変数ｉが「１」、ｍが「３」である場合、フローＩＤｋを２進数で表したビット列は「００１」であり、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ：最下位ビット、一番右のビット）から数えてｉ（１）番目のビットが「１」であるため、判定結果は「ＹＥＳ」となる。
フローＩＤｋのｉ番目のビットが「１」である場合（ＹＥＳ）、処理はＳ１１６に進む。
フローＩＤｋのｉ番目のビットが「１」でなく「０」である場合（ＮＯ）、処理はＳ１１７に進む。
【００４５】
＜Ｓ１１６＞
Ｓ１１５においてフローＩＤｋのｉ番目のビットが「１」の場合（ＹＥＳ）、フロー情報入力部１１３は、フロー情報Ｆｋをｉ番目の異常検出部１２０に入力する。
Ｓ１１６の後、処理はＳ１１７に進む。
【００４６】
＜Ｓ１１７＞
処理は、Ｓ１１４に戻る。
Ｓ１１４において、フロー情報入力部１１３は、変数ｉに増分値「１」を加算し、「１」加算した変数ｉとループ終了値ｍとを大小比較する。「ｉ≦ｍ」の場合に処理はＳ１１５に進み、「ｉ＞ｍ［ｉ＝ｍ＋１］」の場合に処理はＳ１１８に進む。
【００４７】
＜Ｓ１１８＞
処理は、Ｓ１１２に戻る。
Ｓ１１２において、フロー情報対応ＩＤ特定部１１２は、変数ｋに増分値「１」を加算し、「１」加算した変数ｋとループ終了値ｎとを大小比較する。「ｋ≦ｎ」の場合に処理はＳ１１３に進み、「ｋ＞ｎ［ｋ＝ｎ＋１］」の場合にフロー情報入力処理（Ｓ１１０）は終了する。
【００４８】
上記のフロー情報入力処理（Ｓ１１０）により、各フロー情報は１または複数の異常検出部１２０に入力される。
例えば、フローＩＤが「１」であるフロー情報は、フローＩＤ「１」のビット列「００１」に従って、１番目の異常検出部１２０に入力される。
また、フローＩＤが「２」であるフロー情報は、フローＩＤ「２」のビット列「０１０」に従って、２番目の異常検出部１２０に入力される。
また、フローＩＤが「３」であるフロー情報は、フローＩＤ「３」のビット列「０１１」に従って、１番目の異常検出部１２０と２番目の異常検出部１２０とに入力される。
また、フローＩＤが「７」であるフロー情報は、フローＩＤ「７」のビット列「１１１」に従って、１番目の異常検出部１２０と２番目の異常検出部１２０と３番目の異常検出部１２０とに入力される。
【００４９】
図７は、実施の形態１におけるフロー情報入力処理（Ｓ１１０）の動作原理を示す図である。
図７は、フロー情報処理部１１０がフロー情報蓄積部１９０から一つのフロー情報を入力し（Ｓ１１１）、入力したフロー情報に対応するフローＩＤ「６」をフロー管理テーブル１８１に基づいて特定し（Ｓ１１３）、取得したフローＩＤ「６」を表すビット列「１１０」に基づいてフロー情報を第２の異常検出部１２０と第３の異常検出部１２０とに入力することを示している（Ｓ１１６）。
【００５０】
図３に戻り、異常フロー発生ホストの特定方法の説明を続ける。
Ｓ１１０の後、処理はＳ１２０に進む。
【００５１】
＜Ｓ１２０（通信情報グループ判定処理の一例）＞
各異常検出部１２０は、Ｓ１１０において入力された各フロー情報（通信情報グループの一例）に異常フローのフロー情報が含まれているか、または異常フローのフロー情報が含まれていないかを判定する。
各異常検出部１２０は、判定結果を異常フロー特定部１３０に入力する。
以下、異常フローのフロー情報が含まれているという判定結果を「異常」とし、異常フローのフロー情報が含まれていないという判定結果を「正常」とする。
【００５２】
例えば、各異常検出部１２０は、入力された各フロー情報に基づいて、フロー情報の個数やフロー情報の項目の一つであるデータサイズの合計値、平均値または分散値を対象の時系列データとして算出する。
各異常検出部１２０は、対象の時系列データと、平常時の各フロー情報に基づいて予め算出される平常時の時系列データとを比較し、対象の時系列データが平常時の時系列データから乖離しているかどうかを判定する。
各異常検出部１２０は、対象の時系列データが平常時の時系列データから大きく隔離していた場合、「異常」と判定し、対象の時系列データが平常時の時系列データから大きく隔離していない場合、「正常」と判定する。
各異常検出部１２０は、判定結果を異常フロー特定部１３０に出力する。
【００５３】
対象の時系列データが平常時の時系列データから乖離しているか判定する方法として特許文献１および特許文献２が挙げられる。
特許文献１には、閾値法を用いる方法が開示されている。
特許文献２には、最近一定期間分の時系列データ（平常時の時系列データ）と新たに生成された時系列データ（対象の時系列データ）とを組み合わせて主成分分析を行い、新たに生成された時系列データの主成分得点に基づいて異常か否かを判定する方法が開示されている。
対象の時系列データが平常時の時系列データから乖離しているか判定する方法は、その他の方法であっても構わない。
【００５４】
ｉ番目の異常検出部１２０が判定結果「異常」を出力した場合、フローＩＤのｉ番目のビットが「１」であるフローのうち少なくともいずれかのフローが異常フローであることを意味する。
また、ｉ番目の異常検出部１２０が判定結果「０（正常）」を出力した場合、フローＩＤのｉ番目のビットが「１」である全てのフローが「異常フロー」の候補から外れることを意味する。
【００５５】
例えば、フローＩＤのビット数ｍが「３」、１番目の異常検出部１２０の判定結果が「異常」、２番目の異常検出部１２０の判定結果が「異常」、３番目の異常検出部１２０の判定結果が「正常」である場合、１番目のビットが「１」、２番目のビットが「１」、３番目のビットが「０」であるフローＩＤ「３」（ビット列「０１１」）が、異常フローのフローＩＤである。
【００５６】
Ｓ１２０の後、処理はＳ１３０に進む。
【００５７】
＜Ｓ１３０（異常通信特定処理の一例）＞
異常フロー特定部１３０は、Ｓ１２０において入力された判定結果に基づいて異常フローのフローＩＤを特定し、特定した異常フローのフローＩＤを異常フロー通知部１４０に入力する。
このとき、異常フロー特定部１３０は、各異常検出部１２０の判定結果を１ビット（正常「０」、異常「１」）で表して順番に並べたビット列を異常フローのフローＩＤとする。
以下に、Ｓ１３０の詳細について説明する。
【００５８】
図８は、実施の形態１における異常フロー特定処理（Ｓ１３０）を示すフローチャートである。
実施の形態１における異常フロー特定処理（Ｓ１３０）について、図８に基づいて以下に説明する。
【００５９】
＜Ｓ１３１＞
異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤに「０（全ビット「０」）」を設定して変数ｄｅｔｅｃｔＩＤを初期化する。変数ｄｅｔｅｃｔＩＤは異常フローのフローＩＤの設定に用いる符号なしの整数値用の変数であり、ビット数がフローＩＤと同じである。
Ｓ１３１の後、処理はＳ１３２に進む。
【００６０】
＜Ｓ１３２＞
異常フロー特定部１３０は、ループ条件「ｉ＝１，ｍ，１」に基づいて、ループ処理（Ｓ１３２〜Ｓ１３６）を実行するか、またはループ処理を終了するか判定する。
ループ条件「ｉ＝１，ｍ，１」は、変数「ｉ」の初期値が「１」、ループ終了値が「ｍ」、ｉの増分値が「１」であることを示している。
ここで、「ｍ」は、フローＩＤおよび変数ｄｅｔｅｃｔＩＤのビット数を意味する。
以降、ループ処理（Ｓ１３２〜Ｓ１３６）がループ条件に基づいてｍ回繰り返される。
ループ処理を実行する場合（ｉ≦ｍ）、処理はＳ１３３に進む。
ループ処理を終了する場合（ｉ＞ｍ［ｉ＝ｍ＋１］）、処理はＳ１３７に進む。
【００６１】
＜Ｓ１３３＞
異常フロー特定部１３０は、ｉ番目の異常検出部１２０の判定結果を変数ｒに設定する。
Ｓ１３３の後、処理はＳ１３４に進む。
【００６２】
＜Ｓ１３４＞
異常フロー特定部１３０は、変数ｒが「異常」を示すか判定する。
変数ｒが「異常」を示す場合（ＹＥＳ）、処理はＳ１３５に進み、変数ｒが「正常」を示す場合（ＮＯ）、処理はＳ１３６に進む。
【００６３】
＜Ｓ１３５＞
異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤのＬＳＢから数えてｉビット目に「１」を設定する。
Ｓ１３５の後、処理はＳ１３６に進む。
【００６４】
＜Ｓ１３６＞
処理は、Ｓ１３２に戻る。
Ｓ１３２において、異常フロー特定部１３０は、変数ｉに増分値「１」を加算し、「１」加算した変数ｉとループ終了値ｍとを大小比較する。「ｉ≦ｍ」の場合に処理はＳ１３３に進み、「ｉ＞ｍ［ｉ＝ｍ＋１］」の場合に処理はＳ１３７に進む。
【００６５】
ループ処理（Ｓ１３２〜Ｓ１３６）の終了時、変数ｄｅｔｅｃｔＩＤは特定のフローＩＤを示している。
例えば、「ｍ＝３」、１番目の異常検出部１２０の判定結果「異常」、２番目の異常検出部１２０の判定結果「異常」、３番目の異常検出部１２０の判定結果「正常」の場合、変数ｄｅｔｅｃｔＩＤのビット列は「０１１」となり、変数ｄｅｔｅｃｔＩＤはフローＩＤ「３」を示す。
【００６６】
＜Ｓ１３７＞
ループ処理（Ｓ１３２〜Ｓ１３６）の後、異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤが「０」以外か、つまり、変数ｄｅｔｅｃｔＩＤの少なくともいずれかのビットが「１」であるか判定する。
変数ｄｅｔｅｃｔＩＤが「０」以外、つまり、変数ｄｅｔｅｃｔＩＤの少なくともいずれかのビットが「１」の場合（ＹＥＳ）、処理はＳ１３８に進む。
変数ｄｅｔｅｃｔＩＤが「０」、つまり、変数ｄｅｔｅｃｔＩＤの全ビットが「０」の場合（ＮＯ）、異常フロー特定処理（Ｓ１３０）は終了する。
【００６７】
＜Ｓ１３８＞
異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤに設定されているフローＩＤを異常フローのフローＩＤとして異常フロー通知部１４０に出力する。
Ｓ１３８の後、異常フロー特定処理（Ｓ１３０）は終了する。
【００６８】
上記の異常フロー特定処理（Ｓ１３０）は以下のように実行されてもよい。
各異常検出部１２０は、「正常」と判定した場合にビット「０」を判定結果として出力し、「異常」と判定した場合にビット「１」を判定結果として出力する。
異常フロー特定部１３０は、各異常検出部１２０の判定結果を異常検出部１２０の順番に並べてビット列を生成し、生成したビット列を異常フローのフローＩＤを表すビット列として異常フロー通知部１４０に出力する。
例えば、フローＩＤのビット数ｍが「３」、１番目の異常検出部１２０の出力が「１」、２番目の異常検出部１２０の出力が「１」、３番目の異常検出部１２０の出力が「０」である場合、異常フロー特定部１３０は、異常フローのフローＩＤを表すビット列として「０１１」を異常フロー通知部１４０に出力する。
【００６９】
図３に戻り、異常フロー発生ホストの特定方法の説明を続ける。
Ｓ１３０の後、処理はＳ１４０に進む。
【００７０】
＜Ｓ１４０＞
異常フロー通知部１４０は、Ｓ１３０において入力された異常フローのフローＩＤに対応する異常フローのフロー種別名称をフロー管理テーブル１８１に基づいて特定し、特定した異常フローのフロー種別名称を管理者２２０に通知する。
例えば、異常フロー通知部１４０は、異常フローのフローＩＤが「３」である場合、図５に示すフロー管理テーブル１８１を参照し、異常フローのフロー種別名称「１９２．１６８．０．３からＷｅｂサーバ」を出力装置（例えば、表示装置、スピーカー）に出力して管理者２２０に通知する。
Ｓ１４０の後、異常フロー発生ホストの特定方法の処理は終了する。
【００７１】
図９は、実施の形態１における異常フロー発生ホストの特定方法の動作原理を示す図である。
異常フロー発生ホストの特定方法（Ｓ１１０〜Ｓ１４０）の動作原理について、図９に基づいて以下に説明する。
【００７２】
フローＩＤのビット数ｍが「３」である場合、フロー情報処理部１１０は、１番目の異常検出部１２０にフローＩＤの１番目のビットが「１」であるフロー情報を入力する。
また、フロー情報処理部１１０は、２番目の異常検出部１２０にフローＩＤの２番目のビットが「１」であるフロー情報を入力し、３番目の異常検出部１２０にはフローＩＤの３番目のビットが「１」であるフロー情報を入力する（Ｓ１１０）。
【００７３】
各異常検出部１２０は、入力された各フロー情報に異常フローのフロー情報が含まれているか判定し、判定結果を異常フロー特定部１３０に出力する。
ここで、１番目の異常検出部１２０は判定結果としてビット「１（異常）」を出力し、２番目の異常検出部１２０は判定結果としてビット「０（正常）」を出力し、３番目の異常検出部１２０は判定結果としてビット「１（異常）」を出力したものとする（Ｓ１２０）。
【００７４】
異常フロー特定部１３０は、各異常検出部１２０の判定結果を並べてビット列「１０１」を生成し、生成したビット列「１０１」で表されるフローＩＤ「５」を異常フロー通知部１４０に出力する（Ｓ１３０）。
【００７５】
異常フロー通知部１４０は、異常フロー特定部１３０により出力されたフローＩＤ「５」に対応するフロー種別名称「ｓｒｃＩＰ＝Ｂ、ｄｓｔＩＰ＝Ｙ」をフロー管理テーブル１８１に基づいて特定し、特定したフロー種別名称を異常フローの名称として管理者２２０に通知する（Ｓ１４０）。
【００７６】
実施の形態１において、以下のようなネットワーク監視システム２００について説明した。
ネットワーク監視システム２００は、不正アクセスや装置故障の発生を検出するネットワーク監視装置１００を備える。
ネットワーク監視装置１００は、フロー種別−ＩＤ対応管理手段（フロー管理部１８０）、フロー入力手段（フロー情報処理部１１０）、検知結果−ＩＤ変換手段（異常フロー特定部１３０）および通知手段（異常フロー通知部１４０）を備える。
フロー種別−ＩＤ対応管理手段は、フロー情報の内容に従ってあらかじめ定義されたフローＩＤを返す。
フロー入力手段は、フローＩＤを２進数表現した時のビット列に従って、選択的に複数の異常検出手段（異常検出部１２０）にフロー情報を入力する。
検知結果−ＩＤ変換手段は、複数の異常検出手段の検知結果から整数値を算出する。
通知手段は、前記整数値をＩＤとみなし、対応するフロー種別の情報を異常の発生したフローの情報として管理者２２０に通知する。
【００７７】
ネットワーク監視装置１００の動作原理を補足的に説明する。
フロー入力手段はフロー蓄積手段（フロー情報蓄積部１９０）からフロー情報を取り出すと、取り出したフロー情報をそのフロー種別に対応するフローＩＤを２進数で表現した場合に「１」が立っているビットに対応する異常検出手段に入力する。従って、もしあるフローＩＤで識別されるフロー種別に分類されるフロー上で異常が発生した場合、そのフロー情報が入力された異常検出手段、すなわちフローＩＤで「１」が立っているビットに対応する異常検出手段のみが「異常」を報告し、残りの異常検出手段は「正常」を報告することになる。そのため、検出結果−ＩＤ変換手段は、「異常」を報告した異常検出手段に対応するビットだけが「１」になっているｍビットの数値を求めることで、異常の発生したフローＩＤを再構成することができる。
【００７８】
以上のように、ネットワーク監視装置１００は、識別したいフロー種別にフローＩＤを割り当て、フロー情報をフローＩＤのビットパターンに従って選択的に複数の異常検出手段に入力する。これにより、あるフロー上で異常が発生した場合、そのフローＩＤのビットパターンに対応する異常検出手段から異常が報告される。このため、検知結果−ＩＤ変換手段は、どの異常検出手段から異常が報告されたかを集計すれば、異常を発生したフローＩＤを容易に特定できる。本方式を用いることで、ネットワーク監視システム２００は、約ｌｏｇ２Ｎ個のグループを監視するだけで、異常検出後の個別フロー分析を行うことなくＮ種類のうちのどのフローで異常が発生したかを特定することが可能となる。ネットワーク監視システム２００は、従来技術の課題であった異常検出手段数（＝常時行う監視にかかる計算量）と異常発生時のフロー特定にかかる計算量というトレードオフを解決できる、という効果を奏する。
【００７９】
上記では、フローＩＤとフロー条件とを静的に構成されたテーブル（フロー管理テーブル１８１）で対応付けてフロー情報に対応するフローＩＤを判別している。しかし、ＩＤ判別条件をプログラム内に直接実装することも可能である。例えば、フロー情報のうち、ソースＩＰアドレス（送信元ＩＰアドレス）だけでフロー種別を分類するのであれば、ＩＰアドレスを３２ｂｉｔ（ビット）のフローＩＤとみなすような方式を考えることができる。その場合、フロー種別名称もフローＩＤから動的に作成する必要があるが、与えられたフローＩＤをＩＰアドレスを表す文字列に変換するような処理などを行えば実現できる。
【００８０】
図４に示した「送信元ＩＰアドレス」「送信元ポート番号」「宛先ＩＰアドレス」「宛先ポート番号」「プロトコル」は、フローの分類に必要な情報（フロー特定情報）の一例である。また、「データサイズ」は、時系列データの生成に必要な量的データの一例である。
例えば、ポート番号まで含めた分類を行わないのであれば、「送信元ポート番号」「宛先ポート番号」をフロー特定情報に含めなくてもよい。また、時系列データの生成に必要な量的データとして「データサイズ」ではなく、「パケット数」を用いる事も考えられる。さらに極端な場合、フロー分類毎に一定時間内に発生したフローの個数を時系列データとして用いる事も考えられる。例えば、フローの個数とは、アプリケーションデータの個数やシーケンス（所定の複数の送受信）の処理回数である。この場合には、時系列データの生成に必要な量的データをフロー情報に含めなくてもよい。
【００８１】
また、ネットワーク監視装置１００の構成として複数の異常検出部１２０を備える構成を示したが、各異常検出部１２０は同時に動作する必要は全く無く、順番に動作することももちろん可能である。さらに、ネットワーク監視装置１００は、異常検出部１２０を複数ではなく１つだけ備えてもよい。例えば、フロー情報処理部１１０は、フローＩＤのｉ番目のビットが「１」である各フロー情報（上記でｉ番目の異常検出部１２０に入力した各フロー情報）をｉ番目のフロー情報グループとして纏め、各フロー情報グループを異常検出部１２０に入力する。異常検出部１２０は、ｉ番目のフロー情報グループに含まれる各フロー情報に対する判定結果をｉ番目の判定結果（上記でｉ番目の異常検出部１２０が出力した判定結果）として異常フロー特定部１３０に出力する。各異常検出部１２０固有の情報、すなわち各監視実行時に入力されたフロー情報と平常時の時系列情報とを分離して管理しておくことで、これらの情報を取り替え、一つの異常検出部１２０で複数の異常検出部１２０と同等の処理を行うことが可能である。
【００８２】
さらに、ネットワーク監視システム２００は、フロー情報収集装置２１０を複数備えてもよい。例えば、複数の監視対象ネットワーク２０１それぞれに一つずつフロー情報収集装置２１０を設置し、異なる監視対象ネットワーク２０１のフロー情報を異なるフロー情報収集装置２１０に収集させてもよい。
【００８３】
さらに、ネットワーク監視装置１００内の各「〜部」を個別の装置とし、各装置がフロー情報収集装置２１０を介してデータのやりとりを実施するような形態ももちろん可能である。逆に、フロー情報収集装置２１０とネットワーク監視装置１００とを一つの装置内に集約した形態も可能である。
【００８４】
各異常検出部１２０は、フローＩＤを表す各ビットに対応していなくても構わない。例えば、フローＩＤが「０」または「１」を並べた文字列であり、異常検出部１２０がフローＩＤを表す各文字に対応していても構わない。また例えば、フローＩＤが「ａ」「ｂ」「ｃ」を３つ組み合わせた文字列（例えば、「ａａｂ」）であり、異常検出部１２０がフローＩＤを表す各文字（１文字目「ａ」、１文字目「ｂ」、１文字目「ｃ」、２文字目「ａ」、・・・、３文字目「ｃ」）に対応して９個有っても構わない。フローＩＤが「ａａｂ」である場合、フロー情報は１文字目「ｂ」に対応する異常検出部１２０、２文字目「ａ」に対応する異常検出部１２０および３文字目「ａ」に対応する異常検出部１２０に入力される。
また、異常フローは１つに特定されず、複数の候補に絞られるだけであっても構わない。
【００８５】
実施の形態２．
異常検出処理（Ｓ１２０）において複数の異常検出部１２０から出力される複数の判定結果の中に誤った判定結果が含まれているか判定し、誤った判定結果を訂正する形態について説明する。
以下、実施の形態１と異なる事項を主に説明する。説明を省略する事項については実施の形態１と同様である。
【００８６】
図１０は、実施の形態２におけるネットワーク監視システム２００の構成図である。
図１０において、ネットワーク監視システム２００が備える異常検出部１２０の数は、フローＩＤを符号化した誤り訂正符号（後述するように、符号化のためにフローＩＤを拡張した拡張部分のビット数を除く。以下同じ）のビット数である。フローＩＤのビット数を「ｍ」、誤り訂正用ビット（冗長情報）のビット数を「ｂ」とすると、ネットワーク監視システム２００は異常検出部１２０を「ｍ＋ｂ」個備える。
例えば、フローＩＤのビット数ｍを「４」、符号化方法を「（７，４）ハミング符号」とすると、誤り訂正用ビットのビット数ｂは「３（＝７−４）」であり、誤り訂正符号のビット数は「７」である。この場合、ネットワーク監視システム２００は異常検出部１２０を７個備える。
【００８７】
フロー情報処理部１１０は誤り訂正符号化機能を有し、異常フロー特定部１３０（通信情報グループ判定結果訂正部の一例）は誤り訂正復号化機能を有する。
その他の構成は、実施の形態１（図１参照）と同じである。
【００８８】
異常フローの発生ホストの特定方法は、実施の形態１（図３参照）と同様である。但し、フローＩＤを誤り訂正符号に変換する誤り訂正符号化処理がフロー情報入力処理（Ｓ１１０）に加わり、誤り訂正符号をフローＩＤに復号する誤り訂正復号化処理が異常フロー特定処理（Ｓ１３０）に加わる。
以下、フロー情報入力処理（Ｓ１１０）に加わる誤り訂正符号化処理と異常フロー特定処理（Ｓ１３０）に加わる誤り訂正復号化処理とについて説明する。
【００８９】
図１１は、実施の形態２におけるフロー情報入力処理（Ｓ１１０）を示すフローチャートである。
実施の形態２におけるフロー情報入力処理（Ｓ１１０）について、図１１に基づいて以下に説明する。
【００９０】
図１１に示すフローチャートは、実施の形態１（図６参照）で説明したフロー情報入力処理（Ｓ１１０）に誤り訂正符号化処理（Ｓ１１９）を追加し、Ｓ１１４およびＳ１１５をＳ１１４ａおよびＳ１１５ａに変更したものである。
以下、誤り訂正符号化処理（Ｓ１１９）、Ｓ１１４ａおよびＳ１１５ａについて説明し、他の処理（Ｓ１１１〜Ｓ１１３、Ｓ１１６〜Ｓ１１８）の説明を省略する。
【００９１】
Ｓ１１３においてフロー情報Ｆｋに対応するフローＩＤｋが特定された後、処理はＳ１１９に進む。
【００９２】
＜Ｓ１１９＞
フロー情報対応ＩＤ特定部１１２は、フローＩＤｋを符号化（ｅｎｃｏｄｅ）し、符号化したフローＩＤｋ（誤り訂正符号ｋ）を変数ｖに設定する。
変数ｖに設定される誤り訂正符号ｋは、フローＩＤｋに誤り訂正用ビットを付加したものであり、フローＩＤｋのビット数ｍに誤り訂正用ビットのビット数ｂを加えた「ｍ＋ｂ」をビット数とする。
フローＩＤｋの符号化について後述する。
Ｓ１１９の後、処理はＳ１１４ａに進む。
【００９３】
＜Ｓ１１４ａ＞
フロー情報入力部１１３は、第２のループ条件「ｉ＝１，ｍ＋ｂ，１」に基づいて、第２のループ処理（Ｓ１１４ａ〜Ｓ１１７）を実行するか、または第２のループ処理を終了するか判定する。
Ｓ１１４ａは、実施の形態１（図６参照）で説明したＳ１１４の第２のループ条件を一部変更した処理である。変更点は、ループ終了値が「ｍ」から「ｍ＋ｂ」になった点である。
「ｍ＋ｂ」は、Ｓ１１９において変数ｖに設定された誤り訂正符号ｋのビット数である。
以降、第２のループ処理（Ｓ１１４ａ〜Ｓ１１７）が第２のループ条件に基づいてｍ＋ｂ回繰り返される。
【００９４】
＜Ｓ１１５ａ＞
フロー情報入力部１１３は、変数ｖのｉ番目のビットが「１」であるか判定する。
変数ｖのｉ番目のビットが「１」である場合（ＹＥＳ）、処理はＳ１１６に進む。
変数ｖのｉ番目のビットが「１」でなく「０」である場合（ＮＯ）、処理はＳ１１７に進む。
【００９５】
図１２は、実施の形態２における異常フロー特定処理（Ｓ１３０）を示すフローチャートである。
実施の形態２における異常フロー特定処理（Ｓ１３０）について、図１２に基づいて以下に説明する。
【００９６】
図１２に示すフローチャートは、実施の形態１（図８参照）で説明した異常フロー特定処理（Ｓ１３０）のＳ１３１、Ｓ１３２およびＳ１３５をＳ１３１ａ、Ｓ１３２ａおよびＳ１３５ａに変更し、誤り訂正復号化処理（Ｓ１３９）を追加したものである。
以下、Ｓ１３１ａ、Ｓ１３２ａ、Ｓ１３５ａおよび誤り訂正復号化処理（Ｓ１３９）について説明し、他の処理（Ｓ１３３、Ｓ１３４、Ｓ１３６〜Ｓ１３８）の説明を省略する。
【００９７】
＜Ｓ１３１ａ＞
異常フロー特定部１３０は、変数ｖに「０（全ビット「０」）」を設定して変数ｖを初期化する。変数ｖのビット数は、フローＩＤのビット数ｍと誤り訂正用ビットのビット数ｂとの合計値「ｍ＋ｂ」以上である。
Ｓ１３１ａの後、処理はＳ１３２ａに進む。
【００９８】
＜Ｓ１３２ａ＞
異常フロー特定部１３０は、ループ条件「ｉ＝１，ｍ＋ｂ，１」に基づいて、ループ処理（Ｓ１３２ａ〜Ｓ１３６）を実行するか、またはループ処理を終了するか判定する。
Ｓ１３２ａは、実施の形態１（図８参照）で説明したＳ１３２のループ条件を一部変更した処理である。変更点は、ループ終了値が「ｍ」から「ｍ＋ｂ」になった点である。
以降、ループ処理（Ｓ１３２ａ〜Ｓ１３６）がループ条件に基づいてｍ＋ｂ回繰り返される。
【００９９】
＜Ｓ１３５ａ＞
異常フロー特定部１３０は、変数ｖのＬＳＢから数えてｉビット目に「１」を設定する。
【０１００】
ループ処理（Ｓ１３２ａ〜Ｓ１３６）において変数ｖのｉ番目（ｉ：１〜ｍ＋ｂ）のビットにｉ番目の異常検出部１２０の判定結果に対応する値（正常「０」、異常「１」）が設定された後、処理はＳ１３９に進む。
【０１０１】
＜Ｓ１３９＞
異常フロー特定部１３０は、変数ｖを復号化（ｄｅｃｏｄｅ）し、変数ｖを復号化した値（フローＩＤ）を変数ｄｅｔｅｃｔＩＤに設定する。
変数ｖを復号化した値であり変数ｄｅｔｅｃｔＩＤに設定される値は、異常フローのフローＩＤに相当する。
変数ｖからフローＩＤへの復号化について後述する。
Ｓ１３９の後、処理はＳ１３７に進む。
【０１０２】
図１３は、実施の形態２におけるフロー情報入力処理（Ｓ１１０）〜異常フロー特定処理（Ｓ１３０）の模式図である。
誤り訂正符号化処理（Ｓ１１９）におけるフローＩＤの符号化および誤り訂正復号化処理（Ｓ１３９）におけるフローＩＤへの復号化について、図１３に基づいて以下に説明する。
ここで、フローＩＤのビット数を「６」、符号化方法を「（１５，４）ハミング符号」とする。（１５，４）ハミング符号とは、４ビットの誤り訂正符号（冗長情報）を付加して１５ビットの誤り訂正符号を生成する方法である。
【０１０３】
誤り訂正符号化処理（Ｓ１１９）において、（１５，４）ハミング符号によりフローＩＤを符号化するために、６ビットのフローＩＤに５ビットの拡張ビットが付加される。拡張ビットの各ビットの値は「０」である。拡張ビットが付加される理由は、誤り訂正符号を生成する際に、元データ長（ここでは、フローＩＤのビット数ｍ）に任意のビット長を取れないためである。例えば、ハミング符号においては、元データ長は「４」「１１」「２６」・・・「２ｎ−ｎ−１」ビットでなければならない（ｎは正整数とする）。拡張ビットが付加された１１ビットのフローＩＤが（１５，４）ハミング符号により符号化され、１５ビットの誤り訂正符号が生成される。１５ビットの誤り訂正符号は、４ビットの誤り訂正用ビット、６ビットのフローＩＤおよび５ビットの拡張ビットを含む。誤り訂正用ビットは、フローＩＤと整合性を有するビット列である。拡張ビットは破棄される。
【０１０４】
Ｓ１１６において、誤り訂正符号（拡張ビットを除く）のｉ番目のビット（ｉ：１〜１０）が「１」である各フロー情報が、ｉ番目の異常検出部１２０に入力される。
【０１０５】
誤り訂正復号化処理（Ｓ１３９）において、各異常検出部１２０の判定結果に対応する値（正常「０」、異常「１」）を並べた１０ビットのビット列に５ビットの拡張ビットが付加されて、１５ビットの誤り訂正符号が生成される。そして、１５ビットの誤り訂正符号が（１５，４）ハミング符号により復号化され、６ビットのフローＩＤと５ビットの拡張ビットとが生成される。拡張ビットは破棄される。
（１５，４）ハミング符号による復号化において、誤り訂正符号に含まれる誤り訂正用ビットとフローＩＤとの整合性が検査され、検査によりフローＩＤに含まれる誤り（異常検出部１２０の誤った判定結果）が検出され、検出されたフローＩＤの誤りが誤り訂正用ビットに基づいて訂正される。つまり、フローＩＤに対応する異常検出部１２０により誤った判定結果が得られてしまった場合、誤り訂正用ビットに対応する異常検出部１２０の判定結果に基づいてその誤った判定結果が検出され訂正される。
【０１０６】
実施の形態２において、以下のようなネットワーク監視システム２００について説明した。
ネットワーク監視システム２００は実施の形態１の改良である。フロー情報処理部１１０はフローＩＤをビット列に変換し、さらに誤り訂正用ビットを付加し、その結果得られるビット列（誤り訂正符号）に従って異常検出手段（異常検出部１２０）を選択し、選択した異常検出手段にフロー情報を入力する。
【０１０７】
これにより、ネットワーク監視システム２００は、各異常検出手段における判定誤り、つまり本来正常と判定すべき場合に異常と判定したり、逆に異常と判定すべき場合に正常と判定したりといった事が発生した場合でも、ある程度までは正しいフローＩＤを算出することができる。そして、ネットワーク監視システム２００は、フローＩＤの特定誤りの発生を抑えることで、誤ったフロー種別を管理者２２０に通知してしまう可能性を少なくすることができる。
【０１０８】
フローＩＤを符号化する機能（ｅｎｃｏｄｅ関数）および符号化されたフローＩＤを復号化する機能（ｄｅｃｏｄｅ関数）は、少なくともｍビット（ｍ：フローＩＤのビット数）のビット列に対する誤り訂正符号化関数及び復号化関数であれば本実施の形態を実現することが可能である。誤り訂正機能自体は既に数多く知られており、前述のハミング符号の他にもＢＣＨ符号、リードソロモン符号等などがある。ただし、求められる誤り訂正能力によって、利用可能な誤り訂正符号方式は限定され、また誤り訂正用ビットのビット数ｂも変化する。
【０１０９】
実施の形態３．
異常フローが１つではなく複数存在する場合に、各異常フローのフローＩＤを組み合わせたフローＩＤに基づいて正常なフローを異常フローとして管理者２２０に通知してしまうことを防ぐ形態について説明する。
以下、実施の形態１と異なる事項を主に説明する。説明を省略する事項については実施の形態１と同様である。
【０１１０】
図１４は、実施の形態３におけるネットワーク監視システム２００の構成図である。
図１４において、ネットワーク監視システム２００が備える異常検出部１２０の数は、フローＩＤのビット数ｍ’である。「ｍ’」は、フロー種別数を「Ｎ」とした場合、「ｍ’Ｃｐ≧Ｎ」（ｐ：任意の正整数）を満たす最小の正整数である。「ｘＣｙ」という表記は、ｘ個の要素からｙ個を選ぶ組み合わせ数を表している。
Ｎ個のフローＩＤそれぞれは、「１」が設定されたビットを必ずｐ個有する。
【０１１１】
図１５は、実施の形態３におけるフロー管理テーブル１８１の一例を示す図である。
例えば、フロー種別数Ｎを「１０」、各フローＩＤに含めるビット「１」の数ｐを「２」とした場合、図１５に示すように、フローＩＤのビット数ｍ’は「５」である。
各フローＩＤ（３、５、・・・、２４）はぞれぞれ、５ビットのうち２（＝ｐ）ビットに「１」が設定されている。
以下、上記ｐを「「１」ビット数ｐ」という。
【０１１２】
図１６は、実施の形態３における異常フロー特定処理（Ｓ１３０）を示すフローチャートである。
実施の形態３における異常フロー特定処理（Ｓ１３０）について、図１６に基づいて以下に説明する。
【０１１３】
図１６に示すフローチャートは、実施の形態１（図８参照）で説明した異常フロー特定処理（Ｓ１３０）のＳ１３１、Ｓ１３２、Ｓ１３５およびＳ１３７をＳ１３１ｂ、Ｓ１３２ｂ、Ｓ１３５ｂおよびＳ１３７ｂに変更し、Ｓ１３８ｂを追加したものである。
以下、Ｓ１３１ｂ、Ｓ１３２ｂ、Ｓ１３５ｂ、Ｓ１３７ｂおよびＳ１３８ｂについて説明し、他の処理（Ｓ１３２〜Ｓ１３４、Ｓ１３６〜Ｓ１３８）の説明を省略する。
【０１１４】
＜Ｓ１３１ｂ＞
異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤを「０」に初期化すると共に、変数Ｐを「０」に初期化する。変数Ｐは、変数ｄｅｔｅｃｔＩＤに設定されるビット「１」の数のカウントに用いる変数である。
Ｓ１３１ｂの後、処理はＳ１３２に進む。
【０１１５】
＜Ｓ１３２ｂ＞
異常フロー特定部１３０は、ループ条件「ｉ＝１，ｍ’，１」に基づいて、ループ処理（Ｓ１３２ｂ〜Ｓ１３６）を実行するか、またはループ処理を終了するか判定する。
Ｓ１３２ｂは、実施の形態１（図８参照）で説明したＳ１３２のループ条件を一部変更した処理である。変更点は、ループ終了値が「ｍ」から「ｍ’」になった点である。
以降、ループ処理（Ｓ１３２ｂ〜Ｓ１３６）がループ条件に基づいてｍ’回繰り返される。
【０１１６】
＜Ｓ１３５ｂ＞
異常フロー特定部１３０は、変数ｄｅｔｅｃｔＩＤのｉビット目に「１」を設定すると共に、変数Ｐに１加算する。
Ｓ１３５ｂの後、処理はＳ１３６に進む。
【０１１７】
＜Ｓ１３７ｂ＞
ループ処理（Ｓ１３２〜Ｓ１３６）の後、異常フロー特定部１３０は、変数Ｐの設定値を判定する。
変数Ｐが「０」である場合（Ｐ＝０）、異常フロー特定処理（Ｓ１３０）は終了する。
変数Ｐが「ｐ（所定の「１」ビット数）」である場合（Ｐ＝ｐ）、処理はＳ１３８に進む。
変数Ｐがそれ以外の値である場合（Ｐ≠０、ｐ）、処理はＳ１３８ｂに進む。
【０１１８】
＜Ｓ１３８ｂ＞
異常フロー特定部１３０は、複数のフローに異常が発生していることを示す所定の情報を異常フロー通知部１４０に入力する。
そして、異常フロー通知部１４０は、複数のフローに異常が発生していることを管理者２２０に通知する（Ｓ１４０）。
Ｓ１３８ｂの後、異常フロー特定処理（Ｓ１３０）は終了する。
【０１１９】
実施の形態３において、以下のようなネットワーク監視システム２００について説明した。
ネットワーク監視システム２００は実施の形態１の改良である。ネットワーク監視システム２００は各フロー種別に割り当てるフローＩＤをビット列で表した場合に、常に同数の「１」を含んでいるようにフローＩＤを割り当てるようにフロー種別−ＩＤ対応管理手段（フロー管理テーブル１８１）を備える。
【０１２０】
フローＩＤが全て同じ数だけ「１」を含んでいることにより、複数のフローで異常が発生した場合、検出結果−ＩＤ変換手段（異常フロー特定部１３０）が異常検出手段（異常検出部１２０）からの出力に基づいて特定するフローＩＤには必ずｐ＋１ビット以上の「１」が含まれる（異常の発生したフローのフローＩＤそれぞれのビット和となる）。このため、異常フロー特定部１３０は、複数のフローに異常が同時に発生したことを容易に検出できる。
【０１２１】
実施の形態３のネットワーク監視システム２００は、実施の形態２と同様に、異常検出部１２０の判定結果を検査して訂正する誤り訂正機能を有してもよい。
【符号の説明】
【０１２２】
１００  ネットワーク監視装置、１１０  フロー情報処理部、１１１  フロー情報取得部、１１２  フロー情報対応ＩＤ特定部、１１３  フロー情報入力部、１２０  異常検出部、１３０  異常フロー特定部、１４０  異常フロー通知部、１８０  フロー管理部、１８１  フロー管理テーブル、１９０  フロー情報蓄積部、１９１  フロー情報蓄積テーブル、２００  ネットワーク監視システム、２０１  監視対象ネットワーク、２０２  パケット、２１０  フロー情報収集装置、２２０  管理者、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９０８  マイク、９０９  スピーカー、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2010177733.tif 000003
【図２】
2010177733.tif 000004
【図３】
2010177733.tif 000005
【図４】
2010177733.tif 000006
【図５】
2010177733.tif 000007
【図６】
2010177733.tif 000008
【図７】
2010177733.tif 000009
【図８】
2010177733.tif 000010
【図９】
2010177733.tif 000011
【図１０】
2010177733.tif 000012
【図１１】
2010177733.tif 000013
【図１２】
2010177733.tif 000014
【図１３】
2010177733.tif 000015
【図１４】
2010177733.tif 000016
【図１５】
2010177733.tif 000017
【図１６】
2010177733.tif 000018