(57)【要約】【課題】近年の大規模・複雑化した情報システムをフロー監視する際、断片化されたコンポネント間通信のフローを高精度で集約できない。【解決手段】  フローを一意に特定するフロー情報を取得する取得部と、フロー情報から集約ポートを検出する検出部と、集約ポートに基づいてフローを集約する集約部と、フロー集約装置を制御する制御情報を記憶する記憶部と、御情報基づいてフロー集約装置を制御する制御部と備え、検出部は、ポートの接続関係をもとに集約ポートを検出する接続構造探索部と、集約ポート間の親和性をもとに集約ポートを検出する親和性探索部と、を有し、制御部は、検出部に集約ポートを検出させ、集約部にフローを集約させ集約フロー情報を作成させる。【選択図】  図３
2018022966.tif 000002
【特許請求の範囲】
【請求項１】
フローを一意に特定するフロー情報を取得する取得部と、
前記フロー情報から集約ポートを検出する検出部と、
前記集約ポートに基づいて前記フローを集約する集約部と、
装置を制御する制御情報を記憶する記憶部と、
前記制御情報基づいて当該装置を制御する制御部と備え、
前記検出部は、
ポートの接続関係をもとに前記集約ポートを検出する接続構造探索部と、
集約ポート間の親和性をもとに集約ポートを検出する親和性探索部と、を有し、
前記制御部は、前記検出部に前記集約ポートを検出させ、前記集約部に前記フローを集約させ集約フロー情報を作成させることを特徴とするフロー集約装置。
【請求項２】
請求項１に記載のフロー集約装置であって、
前記検出部は、前記集約ポートが有するポートの連続性により前記集約ポートか否かを判断し前記集約ポートを検出する連続性探索部とを備えることを特徴とするフロー集約装置。
【請求項３】
請求項２に記載のフロー集約装置であって、
前記記憶部は、ＩＰアドレスペア、集約ポート、ランダムポート最大重複数を対応付けて記憶するＩＰ別集約ポート管理情報を記憶し、
前記連続性探索部は、前記ＩＰ別集約ポート管理情報を参照し、過去の前記集約ポートの値および前記ランダムポート最大重複数に基づき予め定めた閾値により前記連続性を判定し、前記集約ポートを検出することを特徴とするフロー集約装置。
【請求項４】
請求項１〜３のいずれか１つに記載のフロー集約装置であって、
前記接続構造探索部は、ポートの接続関係を分析し、前記分析の結果に基づき作成されたグラフ構造の端点から再帰的に探索をすることで、集約ポートを検出することを特徴とするフロー集約装置。
【請求項５】
請求項４に記載のフロー集約装置であって、
前記接続構造探索部は、前記探索により前記集約ポートを検出する場合、検出済みの前記集約ポートと前記検出済みの集約ポートに接続するランダムポートとの接続を切断することにより、複数の前記集約ポートに重複して接続するポート番号の接続を切断する処理を実行することを特徴とするフロー集約装置。
【請求項６】
請求項５に記載のフロー集約装置であって、
前記接続構造探索部は、前記重複して接続するランダムポートとの接続を切断した後、前記グラフ構造から、ポートの接続数が所定の閾値より多いポートを集約ポートとして検出することを特徴とするフロー集約装置。
【請求項７】
請求項１〜６のいずれか１つに記載のフロー集約装置であって、
前記記憶部は、集約ポート、同時観測集約ポート、観測回数を対応付けて記憶する同時観測集約ポート管理情報を記憶し、
前記親和性探索部は、前記ポートの接続関係を所定の接続形状となるように加工し、前記同時観測集約ポート管理情報に基づいて親和度を求め、加工した前記ポートの親和度が所定の閾値と比較し集約ポートに該当するか否かを判断することを特徴とするフロー集約装置。
【請求項８】
請求項７に記載のフロー集約装置であって、
前記親和性探索部は、前記比較の結果、前記集約ポートと判定できなかった場合、前記集約ポートと接続する相手側ポートが短命ポート領域に割り当てられているか否かを判定することを特徴とするフロー集約装置。
【請求項９】
フローを一意に特定するフロー情報を取得する取得部と、前記フロー情報から集約ポートを検出する検出部と、前記集約ポートに基づいて前記フローを集約する集約部と、前記フロー集約装置を制御する制御情報を記憶する記憶部と、前記制御情報基づいて前記フロー集約装置を制御する制御部と備えるフロー集約装置のフロー集約方法であって、
前記制御部は、
ポートの接続関係をもとに集約ポートを検出する接続構造探索ステップと集約ポート間の親和性をもとに集約ポートを検出する親和性探索ステップとを前記検出部に実行させ、
検出させた前記集約ポートに基づいて、前記フローを集約させる集約フロー情報を集約部に作成させるステップを実行することを特徴とするフロー集約装置のフロー集約方法。
【請求項１０】
請求項９に記載のフロー集約方法であって、
前記制御部は、前記集約ポートが有するポートの連続性に基づき前記集約ポートか否かを判断する連続性探索ステップを前記検出部に実行させることを特徴とするフロー集約方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フローベース分析を行う際、ランダムポートの影響で分割されたフローを集約する技術に関する。
【背景技術】
【０００２】
企業の情報システムが大規模・複雑になるにつれ、開発の迅速化や保守性の向上を目的として、情報システムを複数のコンポネントで構成し、各コンポネントを通信により相互連携させることで機能を実現させる形態が増えてきた。このようなシステムはコンポネント間の通信に異常が起きるとシステム全体に悪影響を及ぼすため、フロー監視により情報システムの安定性が図ることが望ましい。
【０００３】
フロー監視とは、各フローの通信量やパケット数といった時系列データを取得し、ベースライン分析や相関分析によりフローの時系列変化が正常の範囲内か監視する手法である。
【０００４】
なお、一般的にフローとは宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル、宛先ポート番号、送信元ポート番号が共通するパケットの集合を指す。ただし、本明細書においては、フローを一意に特定するための情報、つまり宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル、宛先ポート番号、送信元ポート番号の組合せ自体をフローとして扱う場合がある。
【０００５】
フロー分析でコンポネント間通信を監視するには、複数のフローに断片化されたコンポネント間通信の時系列データを１つに集約する必要がある。コンポネント間通信の実態であるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）は、一般にセッションのたびに通信の起点側のポート番号がランダムに付与（以下このようなポート番号をランダムポートと呼称）するため、同一コンポネント間の通信がセッションのたびに異なるフローとして扱われるためである。
【０００６】
しかし、例えば、特定のアプリケーションサーバから特定のＤＢ（Ｄａｔａｂａｓｅ）サーバへのＤＢアクセスの様な１つの時系列データとして扱われるべきコンポネント間通信が、通常のフロー監視では、ＤＢアクセスのたびに異なるフローとして扱われ、一貫した時系列データが得られない。そのため、フローの集約は、ランダムポート以外のフローの要素、すなわち宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル、ランダムポートの対向側ポート番号（以下このポート番号を集約ポートと呼称）が一致するフローを１つとみなすことで可能となる。
【０００７】
ここで、フローに含まれる二つのポート番号（宛先ポート番号、送信元ポート番号）をランダムポートと集約ポートに識別する手法として、以下のような先行技術が存在する。
【０００８】
特開２０１２−１７５３３８号公報（特許文献１）では、特定の値で通信している方を集約ポートと判定する、もしくはポート番号が不定である方をランダムポートと判定する方法が開示されている。
【０００９】
また、米国特許公開公報ＵＳ２００８／０１５９１６５（特許文献２）では、対向ポートの数やポート番号の値に基づいて、ポート番号が集約ポートかランダムポートか判定する方法が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−１７５３３８号公報
【特許文献２】米国特許出願公開第２００８／０１５９１６５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以下に、従来技術の課題を説明する。
【００１２】
特許文献１は下記（１）（２）、特許文献２は下記（１）（２）（３）に基づき集約ポート番号とランダムポート番号を識別している。
【００１３】
（１）ポート番号が特定の値である（辞書ベース）、もしくは対向ポート番号より値が小さいなどの特定条件を満たす（ルールベース）場合に、当該ポート番号を集約ポートとする。
（２）ランダムポート番号は不定に変化するが、集約ポート番号は変化しない特徴を利用し、複数のフローに出現するポート番号を集約ポートとする。
（３）ＴＣＰ通信においてＡＣＫなどのフラグ情報をもとに集約ポートを判断する。
【００１４】
しかし、上記（１）〜（３）の何れか、もしくはそれら組み合わせても、近年の大規模・複雑化した情報システムのコンポネント間通信のフロー監視を目的として、断片化されたコンポネント間通信を集約するために、高精度で集約ポートを検出することはできない。以下、その理由を説明する。
【００１５】
まず、（１）に関して、辞書ベースにおける辞書は一般に手動で作成されるが、近年ではオープンソース、商用製品問わず、日々様々なソフトウェアが登場するため、手動では網羅的な辞書作成ができない。更に、辞書ベースでは、ポート番号と集約ポートを１対１で紐付けるため、特定のソフトウェアでは集約ポートとなる値が、別のソフトウェアではランダムポートの１つとして使われる場合、ランダムポートを集約ポートと誤検出し、誤集約を起こす。また、ルールベースの問題点は、近年のオープンソースソフトウェアの中には、集約ポートのルールを満たさないものが増えており、集約ポートをランダムポートと誤認することで集約漏れが発生する。
【００１６】
また、（２）に関して、近年の複雑なシステムにおいては、データ取得期間中セッションが一度も切れず、集約ポートでも１つのフローにしか出現しないシステムがある一方（図６における１−１接続４４）、セッションが多く同じ値のランダムポートが使いまわされることで、ランダムポートが複数フローに出現するシステムもある（図６における重複したポート番号４１−２）。このため、フローの出現回数で集約ポートとランダムポートを判別すると集約ポートの検出漏れや、ランダムポートを集約ポートと誤認することにより誤集約が多発し、フロー監視の精度が低下する。
【００１７】
また、（３）に関して、一般にコンポネント間通信はＴＣＰ以外にＵＤＰも用いられるが、ＵＤＰはフラグ情報を持たず本手法が適用できない。
【００１８】
以上から、特許文献１、特許文献２の手法では、フロー分析を行うためにフロー集約を行うことはできない。
【００１９】
そこで、本発明では高精度でフローを集約する機能を備えたフロー集約装置およびフロー集約方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記課題を解決するために、代表的な本発明のフロー集約装置の一つは、フローを一意に特定するフロー情報を取得する取得部と、フロー情報から集約ポートを検出する検出部と、集約ポートに基づいてフローを集約する集約部と、フロー集約装置を制御する制御情報を記憶する記憶部と、御情報基づいてフロー集約装置を制御する制御部と備え、検出部は、ポートの接続関係をもとに集約ポートを検出する接続構造探索部と、集約ポート間の親和性をもとに集約ポートを検出する親和性探索部と、を有し、制御部は、検出部に集約ポートを検出させ、集約部にフローを集約させ集約フロー情報を作成させるものである。
【発明の効果】
【００２１】
本発発明によれば、ポート番号の値に基づくルールを用いずに高精度でフローを集約できる。上記した以外の課題、構成および効果は、以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００２２】
【図１】システムのフロー監視に関わる全体像を示す図である。
【図２】フロー集約装置１のシステム構成例を示す図である。
【図３】フロー集約装置１のハードウェア構成例を示す図である。
【図４】ポート番号の接続関係を示す模式図である。
【図５】フロー情報２０、および集約フロー情報２１の一例を示す図である。
【図６】ＩＰ別集約ポート管理テーブル１３の一例を示す図である。
【図７】同時観測集約ポート管理テーブル１４の一例を示す図である。
【図８】フロー集約装置１処理全体の一例を示すフローチャートである。
【図９】連続性に基づく集約ポート探索Ｓ１１の一例を示すフローチャートである。
【図１０】接続関係に基づく集約ポート判定Ｓ１３の一例を示すフローチャートである。
【図１１】親和性に基づく集約ポート判定Ｓ１４の一例を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下図面について、本発明の一実施の形態を詳述する。
【００２４】
Ａ．フロー監視全体像
図１は、システムのフロー監視に関わる全体の構成を示す図である。フロー監視は監視対象１５０、フロー監視システム１６０、通知先１４０で構成される。
【００２５】
監視対象１５０は１台以上の電子計算機１１０と、１台以上の通信装置２０と、を有し、データネットワーク１００を介して通信可能に接続された１つまたは複数の情報システムである。電子計算機１１０は、たとえば、物理サーバやパーソナルコンピュータ又は物理サーバ上に構築された仮想マシンであり、データネットワーク１００を介して相互に通信可能である。情報システムは１台又は複数の電子計算機１１０を用いて構築される。
【００２６】
通信装置１２０は、たとえば、ＬＡＮスイッチやルータのような中継装置である。通信装置１２０は、データネットワーク１００に接続された１つ以上のインタフェースと、制御ネットワーク１０１に接続されたインタフェースとを備え、通信装置１２０と、監視システム１６０内のフロー収集装置１３０とは制御ネットワーク１０１を介して通信可能に接続される。なお、通信装置１２０はハードウェアに限らず、電子計算機１１０上のソフトウェアとして実装されても良い。また、データネットワーク１００と制御ネットワーク１０１は同一のネットワークでも良い。
【００２７】
通信装置１２０は、転送機能１２１と、フロー統計通知機能１２２を有する。転送機能１２１は、例えばＬＡＮスイッチやルータのスイッチング機能であり、通信装置１２０の任意のインタフェースを介して受信したフローを解析し、解析により得られたフロー特性情報に基づいて、予め定められた規則に従って当該フローを出力すべきインタフェースを決定し、決定したインタフェースからフローを出力する。
【００２８】
フロー統計通知機能１２２は、例えばｓＦｌｏｗ（登録商標）やＩＰＦＩＸ（ＩＰ  Ｆｌｏｗ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｘｐｏｒｔ）、ポートミラーリング機能であり、通信装置１２０を通過するフローに関する所定の情報をフロー統計情報１７０として制御ネットワーク１０１を介してフロー収集装置１３０に通知する。
【００２９】
フロー監視システム１６０はフロー収集装置１３０、フロー集約装置１、フロー監視装置１３１を有する。フロー収集装置１３０は、フロー集約装置１およびフロー監視装置１３１に接続される。この接続は、直接でも良いし制御ネットワーク１０１を介していても良い。
【００３０】
フロー収集装置１３０は一定時間おき（例えば1時間おき）にフロー統計情報を集計し、フロー情報２０をフロー集約装置１に送付する。フロー集約装置１はフロー情報２０をコンポネント間通信の単位に集約し、集約フロー情報２１としてフロー収集装置１３０に出力する。フロー情報２０および集約フロー情報２１は図５で、フロー集約装置１は図３でそれぞれ詳述する。
【００３１】
フロー収集装置１３０は集約フロー情報２１をもとに集約フローの時系列データを作成し、フロー監視装置１３１に集約フローの時系列データを送付する。フロー監視装置１３１は、集約フローの時系列データの変化を監視し、監視対象に異常が無いか監視する。
【００３２】
なお、本実施例において集約フローとは、宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル、集約ポートが共通のパケットの集合、もしくは宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル、集約ポートの一意の組合せとする。集約フローはコンポネント間通信を表す。
【００３３】
通知先１４０は、たとえば、システム管理者１４３が操作するクライアント端末１４２や、システムの運用管理装置１４１である。通知先１４０はフロー監視情報１３１から監視対象の異常の通知を受け、原因調査や障害対応を行う。
【００３４】
Ｂ．フロー集約システムの構成
図２は、フロー集約装置１のシステム構成例を示す図である。フロー集約装置１はフロー情報２０を入力されると、コンポネント間通信の単位でフローを集約し、集約フロー情報２１を出力する装置である。
【００３５】
フロー集約装置１は取得部１５、検出部１６、集約部１７、ＩＰ別集約ポート管理テーブル１３、同時観測集約ポート管理テーブル１４を有する。検出部１６は、連続性探索部１０、接続構造探索部１１、親和性探索部１２を有する。ただし、本構成は様々な実施形態を包含するように記載されており、ある実施形態においてはそれぞれのプログラムや保存情報、または、その情報の一部のカラムを必ずしも備える必要はない。
【００３６】
取得部１５はフロー収集装置１３０からフロー情報２０を入力されると、フローをＩＰアドレスペアごとに分類し、検出部１６に送付する。
【００３７】
ＩＰアドレスペアとは、フロー内に含まれる二つのＩＰアドレス（宛先ＩＰアドレス、送信元ＩＰアドレス）およびプロトコルの一意の組である。注意すべき点として、ＩＰアドレスペアは、宛先・送信元を区別しない。このため例えば、宛先ＩＰアドレスが Ｘで、送信元ＩＰアドレスがＹ、プロトコルがＴＣＰのフローと、宛先ＩＰアドレスがＹで、送信元ＩＰアドレスがＸ、プロトコルがＴＣＰのフローのＩＰアドレスペアは同一となる。ＩＰ別集約ポート管理テーブル１３は図５で詳述する。
【００３８】
検出部１６は、連続性探索部１０、接続構造探索部１１、親和性探索部１２の処理により、各ＩＰアドレスペアの集約ポートを検出する。
【００３９】
以下、検出部１６の各検出機能を説明する。連続性探索部１０は、集約ポートの連続性をもとに集約ポートを探索する機能である。接続構造探索部１１は、集約ポートの接続関係の構造をもとに集約ポートを探索する機能である。親和性探索部１２は集約ポート間の親和性をもとに集約ポートを探索する機能である。連続性探索部は図９で、接続構造探索部１１は図１０で、親和性探索部１２は図１１でそれぞれ詳述する。また集約ポートの接続関係は図７で詳述する。
【００４０】
集約部１７は、検出部１６で検出された集約ポートおよびフロー情報２０を用いてフローを集約し、集約フロー情報２１を作成する。
【００４１】
ＩＰ別集約ポート管理テーブル１３は、ＩＰアドレスペアごとに観測された集約ポートの情報を保持するテーブルであり、連続性探索部１０の処理で使用される。
【００４２】
同時観測集約ポート管理テーブル１４は、同時に観測された集約ポート番号の情報を保持するテーブルであり、親和性探索部１３の処理で使用される。同時観測集約ポート管理テーブル１４は図６で詳述する。
【００４３】
フロー情報２０は、監視対象１５０を流れるフローの情報で、フロー収集装置１３０から送付される。集約フロー情報２１は、フロー情報２０をフロー集約装置１がコンポネント間通信の単位に集約した情報であり、フロー収集装置１３０へと送付される。なお、フロー収集装置１３０がフロー情報２０をフロー集約装置１に送付する際や、フロー集約装置１が集約フロー情報２１をフロー収集装置１３０に送付する際に使用するプロトコルは、たとえば、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のような公知のプロトコルでよいし、プロプライエタリなものでもよい。また、フロー情報２０および集約フロー情報２１のデータフォーマットは、たとえば、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）やＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）のような公知のものでもよいし、プロプライエタリなものでもよい。フロー情報２０、および集約フロー情報はそれぞれ図４で詳述する。
【００４４】
図３は、フロー集約装置１のハードウェア構成例を示すブロック図である。フロー集約装置１は、プロセッサ３２、外部記憶デバイス３３、主記憶デバイス３４、通信制御デバイス３１を有する。これらは、内部バス３６を介して相互に接続される。なお、本明細書においては、プロセッサ３２を制御部と呼称する場合がある。また、外部記憶デバイス３３および主記憶デバイス３４を記憶部と呼称する場合がある。
【００４５】
プロセッサ３２は、フロー集約装置１全体の動作制御を司るハードウェアである。外部記憶デバイス３３は、大容量の記憶容量を有する記憶デバイスであり、たとえばハードディスク装置やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。外部記憶デバイス３３は、ＩＰ別集約ポート管理テーブル１３および、同時観測集約ポート管理テーブル１４を保持するほか、各種プログラムの実行ファイルを保持する。
【００４６】
主記憶デバイス３４は、たとえば、半導体メモリから構成され、各種プログラムやテーブルから呼び出されたデータを一時的に保持する。主記憶デバイス３４は、図２で示した取得部１５、検出部１６、集約部１７のプログラム群を備える。また、各種テーブルへのアクセスを高速にするため、外部記憶デバイス３３の代わりに、主記憶デバイス３４へＩＰ別集約ポート管理テーブル１３や同時観測集約ポート管理テーブル１４を保持しても良い。外部記憶デバイス３３および主記憶デバイス３４は、プロセッサ３２からアクセス可能である。
【００４７】
なお、本実施例では取得部１５、検出部１６、集約部１７をプログラムとして説明するが、これらはハードウェアによって同等の機能が構成されるとしてもよいし、ソフトウェアとハードウェアとによって構成されていてもよい。また、本実施例では各種テーブルをテーブルとして説明をしているが、テーブル以外(例えばリスト)によって構成されていてもよい。また、テーブルを情報と言い替えることもできる（例えば、ＩＰ別集約ポート管理情報）。
【００４８】
通信制御デバイス３１は、外部との通信を制御する機能を有するハードウェアであり、インタフェース３０を介してフロー収集装置１３０、もしくは制御ネットワーク１０１に接続される。フロー情報２０や集約フロー情報２１はインタフェース３０を介してフロー収集装置１３０とやり取りされる。
【００４９】
図４はフロー集約装置１の入出力データである、フロー情報２０および集約フロー情報２１の構成例を示す図である。フロー情報２０は宛先ＩＰアドレス５０、送信元ＩＰアドレス５１、プロトコル５２、宛先ポート番号５３、送信元ポート番号５４のカラム（列）を有する。フロー情報２０は各レコード（行）がそれぞれ監視対象１５０を流れるフローを表す。このため、一回の処理で入力されるフロー情報２０において、各レコードはユニークである。換言すると、全カラムの値が同一であるレコードは存在しない。また、フロー情報２０は一定時間おきに何度もフロー収集装置から送付される。
【００５０】
なお、フロー情報２０は、上記カラム以外にもＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）識別子のようなカラムを設け、フローを更に細かく分類しても良い。フロー情報２０にＶＬＡＮ識別子のような新しいカラムが設けられた場合、フロー集約装置１はそのカラムを前述のＩＰアドレスペアの一部として扱う。例えば、ＶＬＡＮ識別子が追加された場合、ＩＰアドレスペアはフロー内に含まれる二つのＩＰアドレス（宛先ＩＰアドレス、送信元ＩＰアドレス）およびプロトコルおよびＶＬＡＮ識別子の組合せが一致する組となる。
【００５１】
集約フロー情報２１も、カラム構成はフロー情報２０と同様で、宛先ＩＰアドレス６０、送信元ＩＰアドレス６１、プロトコル６２、宛先ポート番号６３、送信元ポート番号６４となる。ＶＬＡＮ識別子のようなカラムを設け、フローを更に細かく分類しても良いという点も同様である。集約フロー情報２１は各レコードが集約フローを表す。
【００５２】
フロー情報２０と集約フロー情報２１の違いは、フロー情報２０の各レコード（フロー）は宛先ポート番号５３と送信元ポート番号５４の両方の値が格納されているが、集約フロー情報２１の各レコード（集約フロー）は宛先ポート番号６３と送信元ポート番号６４のうち、集約ポートに相当するポート番号のカラムのみ値が格納され、ランダムポートにあたるポート番号のカラムは空欄となっている。図４に例示されるように、宛先ポート番号６３が集約ポートになる場合もあれば、送信元ポート番号が集約ポートになる場合もある。
【００５３】
図５はＩＰ別集約ポート管理テーブル１３の構成例を示す図である。ＩＰ別集約ポート管理テーブル１３は、ＩＰアドレスペア毎に観測された集約ポートの情報を保持するためのテーブルで、連続性探索部１０にて使用される。ＩＰ別集約ポート管理テーブル１３は、ＩＰアドレスＡ７０、ＩＰアドレスＢ７１、プロトコル７２、集約ポートＡ７３、集約ポートＢ７４、ランダムポート最大超複数７５のカラムを有する。
【００５４】
ＩＰアドレスＡ７０、ＩＰアドレスＢ７１、プロトコル７２はＩＰアドレスペア７６を表す。集約ポートＡ７３、集約ポートＢ７４はＩＰアドレスペア７６間で観測された集約ポートを表し、集約ポートＡ７３はＩＰアドレスＡに対応する集約ポート、集約ポートＢ７４はＩＰアドレスＢに対応する集約ポートを表す。ランダムポート最大超複数７４はＩＰアドレスペア７６間で観測されたランダムポートの最大重複数である。なお、ＩＰアドレスと集約ポートの対応、およびランダムポートの重複は図７で詳述する。
【００５５】
図６は同時観測集約ポート管理テーブル１４の構成例を示す図である。同時観測集約ポート管理テーブル１４は、過去にどのような集約ポートが同タイミングに観測されたかという情報を保持するテーブルで、親和性探索部１２にて使用される。同時観測集約ポート管理テーブル１４は、集約ポート８０、同時観測集約ポート８１、観測回数８２のカラムを有する。集約ポート８０は、レコードが対象とする集約ポートの値である。同時観測集約ポート８１は、集約ポート８０と同一のＩＰアドレスペア間で検出された集約ポートの値である。観測回数８２は集約ポート８０と同時観測集約ポート８１が同時に観測された回数を表す。集約ポート８０の１レコードが、複数の同時観測集約ポート８１と観測回数８２は複数レコードを保持する場合がある。ただし、同時観測集約ポート８１と観測回数８２のレコード数は同じである。同時観測集約ポート管理テーブル１４は、環境依存の情報でないため、図３のインタフェース３０を通じ、外部からデータを入力されても良い。
【００５６】
Ｃ．ポートの接続関係
図７は特定ＩＰアドレスペア間のフローに含まれるポート番号の接続関係をグラフ構造で示した図である。本図を用いて、フロー集約装置１の処理の前提となる集約ポートの特徴を説明し、フロー集約装置１の各部（連続性探索部１０、接続構造探索部１１、親和性探索部１２）の処理の目的を説明する。
【００５７】
図７では、例としてＩＰ Ｘ、ＩＰ ＹおよびＴＣＰから構成されるＩＰアドレスペアを対象とし、ＩＰアドレスペア間のフローを辺、フローに含まれる二つのポート番号（宛先ポート番号、送信元ポート番号）を頂点とするグラフ構造を表現している。なお、本実施例ではポート番号間におけるセッションが存在し、ポート番号が辺で結ばれていることを「接続している」と呼称する。
【００５８】
ここで、各ポート番号はＩＰ ＸのポートとＩＰ Ｙのポートに分けられる。これは、フローに含まれるＩＰアドレスとポート番号の対応関係で分けられている。例えば、送信元ＩＰアドレスがＩＰ Ｘのとき、送信元ポート番号がポート番号Ｘだったとすると、ポート番号ＸはＩＰ Ｘのポートとなる。同様に宛先ＩＰアドレスがＩＰ Ｘのとき、宛先ポート番号がポート番号Ｘだったとすると、ポート番号ＸはＩＰ Ｘのポートとなる。このため、同一の値のポート番号がＩＰ ＸのポートとＩＰ Ｙのポートそれぞれに現れる場合がある。
【００５９】
図７を用いて集約ポートの特徴を説明する。特定ＩＰアドレス間のフローを一定期間（例えば１時間）収集し、上記のグラフ構造を作成すると、集約ポートとランダムポートの接続関係は大きく２種類の構造を取る。１つ目は、１個の集約ポートに対し無数（数十〜数万個）のランダムポートが接続する１−Ｎ接続４２である。２つ目は１つの集約ポートに対し１つのランダムポートもしくは１つの集約ポートが接続する１−１接続４４である。図７では集約ポート４０−１が１−Ｎ接続４２の集約ポートで、集約ポート４０−４が１−１接続４４の集約ポートとなる。
【００６０】
１−Ｎ接続４２は、一定期間（上記する特定ＩＰアドレス間のフローを収集する一定期間と同じ時間）内にコンポネント間通信のセッションが切られ、集約ポートに接続するランダムポートが変化する通信において現れる。
【００６１】
一方、１−１接続４４は一定期間内にセッションが切れなかった、若しくは、ポート番号がランダムに変化しない情報システムの通信に現れる。ここで、ポート番号がランダムに変化しない通信は、二つのポート番号の両方が集約ポートであるとする。
【００６２】
また、１−Ｎ接続４２の変形として、接続する全てのランダムポートが他の集約ポートと重複した重複１−Ｎ接続４３がある。重複１−Ｎ接続４３は計測時間が長い、または監視対象１５０がセッションを大量に発生させる特性を持つなどの理由によりグラフ内のセッション数が極めて多い場合に発生する。集約ポート４０−２、３が重複１−Ｎ接続４３の集約ポートとなる。
【００６３】
一般に、ＴＣＰ通信の集約ポートはほとんどの場合１−Ｎ接続４２で、重複１−Ｎ接続４３や１−１接続４４は特定のコンポネント間通信にのみ現れる。ＵＤＰ通信では、ＴＣＰに比べ１−１接続４４を取る通信が多いが、重複１−Ｎ接続４３の通信はＴＣＰと同様ほとんど無い。
【００６４】
ここで、上記の構造は必ずしも個別に独立しておらず、複数の構造が複雑に繋がることがしばしばある。例えば、１−Ｎ接続４２同士や、１−Ｎ接続４２と１−１接続４４などが繋がることがある。これは、ランダムポート同士、もしくはランダムポートと集約ポートの値が複数の構造の間で重複することで発生する（図７の４１−２）。ポート番号の値がしばしば重複する理由は、ポート番号が取りうる値が６５５３５種であることに対し、通信の多いシステムでは、１−Ｎ接続４２もしくは重複１−Ｎ接続４３において、１つの集約ポートに対し数千から数万のランダムポートが接続するためである。
【００６５】
先行文献のようなポート番号の複数回出現するポート番号を集約ポートとする判別法では、このような重複したポート番号４１−２と集約ポートとを区別できず誤集約を起こす。また、重複したポート番号４１−２が接続する集約ポート（本実施例では集約ポート４０−１、２、３）の数は、ＩＰアドレスペアごとに大きくばらつき、時として集約ポートに接続するランダムポートの数を上回ることもあるため、先行文献の拡張として、一定回数以上出現したポート番号集約ポートとするような閾値判定を行ったとしても集約ポートとランダムポートは区別できない。
【００６６】
そこで、フロー集約装置１は接続構造探索部１１にて、ポートの接続関係をもとに１−Ｎ接続４２および重複１−Ｎ接続４３の集約ポートを検出し、同時に構造間の接続を切断する。次に、フロー集約装置１は親和性探索部１２にて、接続構造から集約ポートが判断できない１−１接続４４の集約ポートを集約ポート間の親和性をもとに検出する。
【００６７】
基本的な判別は上記２つの処理で実現可能だが、ポートの接続関係の探索は計算量が多く、ポート集約に時間を要する場合がある。そこで、高速化のために集約ポートの連続性に基づき、連続性探索部１０にて明らかな集約ポートを検出してしまうことで、接続構造探索部１１の探索範囲を削減する。
【００６８】
Ｄ．フローチャート
図８は、フロー集約装置１処理全体の流れを示すフローチャートである。ただし、本実施例で説明をする処理は様々な実施形態を包含するように記載されており、ある実施形態においては必ずしも全ての処理を行う必要はなく、必要な処理を組み合わせ実施することもできる。
【００６９】
フロー集約装置１はフロー情報２０を入力されると、取得部１５にて、フローをＩＰアドレスペアごとに分類し、検出部１６へと送付する（Ｓ１０）。以後の処理（Ｓ１１〜Ｓ１５）はそれぞれのＩＰアドレスペアごとに実施される。
【００７０】
フロー集約装置１は検出部１５の連続性探索部１０において、ＩＰアドレスペア間の集約ポートを集約ポートの連続性に基づき探索する（Ｓ１１）。本処理は図９にて詳述する。本処理で集約ポートとランダムポートの判別が付かなかったフローのみが以降の処理に回される。
【００７１】
フロー集約装置１は検出部１５の接続構造探索部１１において、ポート番号の接続関係を分析し、図７のようなＩＰアドレスペア間のポート番号のグラフ構造を作成する（Ｓ１２）。次に、フロー集約装置１は検出部１５の接続構造探索部１１において、ポート番号の接続関係に基づいて集約ポートを探索する（Ｓ１３）。Ｓ１２で作成したグラフ構造は本処理で使用される。その詳細は図１０にて説明する。本処理で集約ポートとランダムポートの判別が付かなかったフローのみが以降の処理に回される。
【００７２】
その後、フロー集約装置１は検出部１５の親和性探索部１２において、集約ポート間の親和性に基づいて集約ポートを探索する（Ｓ１４）。本処理は図１１にて詳述する。
【００７３】
その後、フロー集約装置１は、上記Ｓ１０〜Ｓ１４の処理により検出された集約ポートなどの情報を、ＩＰ別集約ポート管理テーブル１３および同時観測集約ポート管理テーブル１４に保存する（Ｓ１５）。これら保存された情報は、次回のポート集約時に活用される。
【００７４】
具体的には、フロー集約装置１はＩＰ別集約ポート管理テーブル１３に対し、当該ＩＰアドレスペアの情報および、検出した集約ポート、およびランダムポートの最大重複数を登録する。このとき、ＩＰアドレスペアが既に登録済みの場合は、集約ポートとランダムポートの最大重複数を上書きする。また、検出した集約ポートが複数ある場合、同時観測集約ポート管理テーブル１４に対し、集約ポートごとに同時に検出した集約ポートの値を登録する。このとき、新規登録の場合は、観測回数カラム８２を１と設定し、既に同値が登録されている場合は観測回数カラム８２の値に１加算した値を登録する。
【００７５】
なお、同時観測集約ポート管理テーブル１４の集約ポートカラム８０には集約ポートの値以外にプロトコル情報も記述する。ただし、図７で示した集約ポートとＩＰアドレスの対応関係は登録しない。
【００７６】
最後に、フロー集約装置１は、集約部１７にてフロー情報２０および検出された集約ポートを用いて集約フロー情報を作成する（Ｓ１６）。具体的に、集約部１７はフロー情報２０の各レコードの宛先ポート番号５３と送信元ポート番号５４のうち、集約ポートに含まれるポート番号を残し、その対向側のポート番号を空値に置き換え、その後、重複したレコードを除外することで集約フロー情報を構成する。注意点として、図７で前述のように、集約ポートにはＩＰアドレスとの対応関係がある。このため、ＩＰアドレスペアＸとＹのうち、集約ポートＺはＩＰアドレスＸにとっては集約ポートだが、ＩＰアドレスＹにとっては集約ポートではないということがある。また、宛先ポート番号、送信元ポート番号が両方とも集約ポートである場合は、宛先ポート番号を空値としたレコードと送信元ポート番号を空値としたレコードの２個のレコードを作成する。
【００７７】
図９は、フロー集約装置１の連続性探索部１０にて実施される、連続性に基づく集約ポート探索Ｓ１１の一例を示すフローチャートである。本処理は、同一ＩＰペア間で観測された集約ポートが次回集約時も同一の値となることが多いという特徴に基づき、集約ポート番号の連続性をもとに集約ポートを探索する。本処理で判別が容易な集約ポートを予め判別してしまうことにより、接続構造探索部１１における探索範囲を縮小し、フロー集約の処理速度を向上させる効果がある。本処理では、ＩＰ別集約ポート管理テーブル１３の情報を用いる。
【００７８】
具体的な処理を述べる前に、集約ポートの連続性と本処理の目的について説明する。フロー集約装置１は一定時間（例えば１時間）おきに、フロー収集装置１３０からフロー情報２０を受け取り、フローを集約する。このとき、各ＩＰアドレスペア間で観測される集約ポートは、毎回同じ値となることが多い。これを本実施例では集約ポートの連続性と呼称する。集約ポートが連続性を持つ理由は、集約ポートが監視対象１５０の各コンポネントがサーバ機能として通信を待ち受けている際に使用するポート番号であるためである。他から通信を待ち受ける都合上、通常、コンポネントが待ち受けに使用するポート番号（集約ポート）は変化しないことが多い。このため、監視対象１５０の構成が変更されない限り、ＩＰアドレスペア間の集約ポートは同じ値が使用されつづける。
【００７９】
本処理ではＩＰアドレスペア間で過去に観測された集約ポートの値を持つポート番号が観測された場合、当該ポート番号は集約ポートの可能性が高いと判定する。ただし、構成変更により集約ポートが変化し、かつその値が偶然ランダムポートとして使われている可能性があるため、当該ポート番号を無条件に集約ポートと扱うことはできない。そこで本処理では、当該ポート番号の出現回数の閾値判定を設け、集約ポートの誤検出を抑制する。
【００８０】
なお、図７で述べたように、単純なポートの出現回数の閾値判定のみでは誤検出が多いが、本処理では集約ポートの連続性を基に判定対象を予め集約ポートの可能性が高いものに絞っている上、閾値として過去に観測されたランダムポートの最大重複数を用いることで、誤検出を抑制している。
【００８１】
以下、具体的な処理手順の例を説明する。まず、連続性探索部１０は、あるＩＰアドレスペア間のフロー情報を入力されると、ＩＰ別集約ポート管理テーブル１３（図４）にアクセスし、ＩＰアドレスペア７６の各カラムが当該ＩＰアドレスペアと等しいレコードを検索し、集約ポートＡ７３、集約ポートＢ７４、ランダムポート最大出現数７５の値を取得する。
【００８２】
その後、連続性探索部１０は、入力されたフロー情報から、ポート番号の値がＩＰアドレスの対応関係含めて集約ポートＡ７３もしくは集約ポートＢ７４と一致するレコードを抽出する。レコードが抽出された場合、過去に集約ポートと判定されたポート番号の値が今回も存在したと判定し、Ｓ２１へ移行する。抽出されたレコードが無い場合、もしくはＩＰ別集約ポート管理テーブル１３において、ＩＰアドレスペア７６の各カラムが当該ＩＰアドレスペアと等しいレコードが無かった場合（Ｓ２０：ＮＯ）は処理を終了し、入力されたフロー情報をそのまま後続の処理（Ｓ１２）へと送付する。一方、過去に集約ポートと判定されたポート番号の値が今回も存在する場合（Ｓ２０：ＹＥＳ）、連続性探索部１０は、過去に集約ポートと判定されたポート番号の値を持つフロー情報のレコードの数を集約ポートごとにカウントし、その数がＩＰ別集約ポート管理テーブル１３（図４）から取得したランダムポート最大重複数７４より大きいか判定する（Ｓ２１）。当該判定でレコード数がランダムポート最大重複数７４より大きいポート番号があれば、それを集約ポートとして主記憶装置に一時的に記憶する（Ｓ２２）。
【００８３】
以上の処理を連続性探索部１０で実施することで、ポートの接続関係の探索は計算量が多くポート集約に時間を要する場合に、高速化のために集約ポートの連続性に基づき、明らかな集約ポートを検出してしまうことで、後述する接続構造探索部１１の探索範囲を削減することができる。
【００８４】
図１０は、フロー集約装置１の接続構造探索部１１にて実施される、接続関係に基づく集約ポート判定Ｓ１３の一例を示すフローチャートである。本処理は、集約ポートの接続関係の特徴を利用し、図７における１−Ｎ接続４２と重複１−Ｎ接続４３の集約ポート番号を検出するとともに、構造（１−Ｎ接続４２、多重１−Ｎ接続４３、１−１接続４４）間の接続を大まかに切断する。
【００８５】
具体的な処理を述べる前に、図７を用いて、ポートの接続関係の特徴と本処理の目的について説明する。
【００８６】
まず、１−Ｎ接続４２は１つの集約ポートに無数のランダムポート（４１−１、４１−２）が付くため、一部のランダムポート（４１−２）で重複が起きても、他の大多数のランダムポート（４１−１）は重複しないまま集約ポートに接続する特徴がある。
【００８７】
１−Ｎ接続４２において重複していないランダムポート（４１−１）は集約ポートのみと接続し、その接続数（グラフ表現における次数に相当）は１となる。このような接続数１のポート番号を本実施例では「端点」と呼称する。ポートの接続関係における端点は、この１−Ｎ接続４２の重複していないランダムポートか、１−１接続４４のポートである。ここで、１−１接続４４は端点同士の接続であることから、端点が複数接続しているポート番号は１−Ｎ接続４２の集約ポート（４０−１）と判断することができる。
【００８８】
ここで、１つの集約ポートに無数のランダムポートが接続するという１−Ｎ接続４２の特徴から、ポート番号４０−１が１−Ｎ接続４２の集約ポートと判別できると、ポート番号４１−２は、二つ以上の構造間で値が重複したポート番号であると判別できる。このため、検出済みの１−Ｎ接続４２の集約ポート４０−１とランダムポート（４１−１、４１−２）の接続を切ることで、重複したポート番号４１−２の重複を無くすことができる。
【００８９】
これにより、複数の構造間の接続が切られ、今までは重複したポート番号の影響で端点を検出できなかった１−Ｎ接続４２が新たに判別できるようになる。本処理は、１−Ｎ接続４２の集約ポート検出と、接続の切断を繰り返すことで、複数の構造が複雑に繋がったポートの接続関係でも、１−Ｎ接続４２の集約ポートを高精度で検出する。
【００９０】
ＴＣＰ・ＵＤＰ通信においては、構造間の接続は大多数が１−Ｎ接続４２のランダムポートが重複することに起因する。このため、前述の１−Ｎ接続４２の集約ポート検出により、１−Ｎ接続４２に起因する複数構造の接続が切断されると、ほとんどの場合において各構造は独立する。なお、１−１接続４４同士が接続している場合もありうるが、発生する確率はかなり低いため本実施例では考慮しない。
【００９１】
前述の１−Ｎ接続４２の集約ポート検出が終わると、１−Ｎ接続４２に起因する重複したポート番号４１−２が無くなる。そこで、ポート番号の出現数から重複１−Ｎ接続４３の集約ポート（４０−２、４０−３）を検出できる。換言すると、重複したポート番号４１−２の影響が排除できているため、ポート番号の出現回数で判定しても先行文献のように誤集約が起きないため、集約ポートを検出することができる。
【００９２】
重複１−Ｎ接続４３は各集約ポート（４０−２、４０−３）に対し重複したポート番号４１−３が接続するため、出現回数が他に比べて突出して多いポート番号は重複１−Ｎ接続４３の集約ポートと判断できる。なお、判断のためには所定の閾値を設け、その閾値よりも出現回数が多いものを重複１−Ｎ接続４３の集約ポートとしてもよい。
【００９３】
また、重複１−Ｎ接続４３の集約ポート（４０−２、４０−３）が検出できると、１−Ｎ接続４２のときと同様、その集約ポート（４０−２、４０−３）に接続するポート番号はランダムポート（４１−３）と判断できる。このため、集約ポート（４０−２、４０−３）とランダムポート（４１−２、４１−３）の接続を切ることにより、重複１−Ｎ接続４３に起因する重複したポート番号４１−２の重複を無くすことができ、重複したポート番号４１−２の影響で端点を検出できなかった１−Ｎ接続４２があれば、それを新たに判別できるようになる。このため、重複１−Ｎ接続４３の集約ポートが検出された場合、その接続の切断し、１−Ｎ接続４２の場合と同様に集約ポートの検出判定を繰り返す。
【００９４】
図９に戻り、接続関係に基づく集約ポート判定Ｓ１３の具体的な処理手順の例を説明する。まず、接続構造探索部１１は、あるＩＰアドレスペア間のポートの接続関係（グラフ構造のデータ）を入力されると、接続数が１の端点を抽出する（Ｓ３０）。その後、接続構造探索部１１は２個以上の端点と接続しているポート番号を集約ポートとして判別する（Ｓ３１）。この集約ポートは一度に複数個検出されることがあり、その場合Ｓ３２−Ｓ３４の処理はそれぞれの集約ポートに対して実施される。
【００９５】
ここで、集約ポートが検出されると（Ｓ３２：ＹＥＳ）次ループのためＳ３３に移行する。Ｓ３３において接続構造探索部１１は、Ｓ３１で検出された集約ポートが接続するポート番号を当該集約ポートに対するランダムポートとして抽出する。その後、接続構造探索部１１は、Ｓ３１で検出された集約ポートとＳ３３で抽出したランダムポート間の接続を切断し（Ｓ３４）、Ｓ３０から再び処理を行う。このとき、接続数が０のポート番号（検出済み集約ポートとそのランダムポートのうち重複が無いもの）は今後の探索に関係無いものとしてグラフ構造から除外しても良い。
【００９６】
一方、集約ポート番号が検出されなければ（Ｓ３２：ＮＯ）、現状で検出可能な集約ポートは無いと判断してＳ３５に移行する。Ｓ３５において接続構造探索部１１は、接続数が突出して多いポート番号を重複１−N接続４３の集約ポートとして検出する。接続数が突出して多いポート番号とは、例えば各ポートの接続数をカウントし、接続数の降順でポート番号を並べた後、ポートの並び順をｘ、接続数のカウントをｆ(ｘ)としたときに、（数式１）を満たすｘで表されるポート番号である。
【００９７】
【数１】
2018022966.tif 000003
【００９８】
なお、上記の式におけるａｒｇｍｉｎ関数は、対象の関数（数式２）が最小値を取る際の変数ｘの値を出力する処理である。
【００９９】
【数２】
2018022966.tif 000004
【０１００】
なお、（数式２）におけるＮは１−１接続４４のポートを誤って集約ポートとして検出しないよう、管理者１４３によって入力される任意の値である。任意の値は、例えば５などでよい。上記の式は、重複１−Ｎ接続４３のポート番号は数十から数万の接続数を持つことに対し、ランダムポートは重複数が多い場合でもせいぜい５〜１０程度である特徴を活用し、ポート番号を接続数順で並べたときの変化の差分が最も大きい点を集約ポートの接続数とランダムポートの境界として抽出することを目的としている。ただし、単純にｆ(ｘ)の微分のみでこの境界を求めると、重複１−Ｎ接続４３の集約ポートの接続数間で数に開きがある場合に、その開きの部分が境界として求められることから、上記の式は対数の微分値を取得する。例えば、ある集約ポートは数万の接続数を持つ一方、他の集約ポートは数十の接続数しか無い場合が該当する。
【０１０１】
Ｓ３５において新規に集約ポートが検出されると（Ｓ３６：ＹＥＳ）、接続構造探索部１１はＳ３３に処理を戻し、再帰処理を再開する。一方、新規に集約ポートが検出されなければ、接続構造探索部１１は構造探索で判定可能な集約ポートは既に探索済みと判断し、接続構造探索部１１にて検出した集約ポートを主記憶装置に一時的に記憶する（Ｓ３７）。その後、未だに接続数が０ではないポート番号（１−１接続４４のポート）および連続性探索部１０および接続構造探索部１１で検出した集約ポートを親和性探索部１２に送付し処理を終了する。
【０１０２】
本処理により、図７における１−Ｎ接続４２と重複１−Ｎ接続４３の集約ポート番号を検出するとともに、グラフ構造（１−Ｎ接続４２、多重１−Ｎ接続４３、１−１接続４４）間の接続を切断することができ、後述する親和性探索部１２の処理により１−１接続４４の集約ポートを検出することができる。
【０１０３】
図１１は、フロー集約装置１の親和性探索部１２にて実施される、親和性に基づく集約ポート判定Ｓ１４の一例を示すフローチャートである。本処理は、集約ポート間の親和性を利用し、図７における１−１接続４４の集約ポートを検出する。また、１−Ｎ接続４２や重複１−Ｎ接続４３の集約ポートを連続性探索部１０および接続構造探索部１１で検出し損ねていても、本処理により集約ポート番号を検出できる可能性がある。
【０１０４】
具体的な処理を述べる前に、集約ポート間の親和性と本処理の目的について説明する。まず、集約ポート間の親和性を説明する。これは、ソフトウェアごとに、もしくは同時に使われることが多い複数ソフトウェア（例えばMEANスタックに含まれるMongoDB、Express、AngularJS、Node.js）の組合せごとに、使用する集約ポートの値の組合せは定型化しているため、一部の集約ポートの値が判明すれば、残りの集約ポートの値が推測できる場合が多いという特徴を表す。
【０１０５】
次に本処理の目的としては、集約ポート間の親和性を基に、連続性探索部１０および接続構造探索部１１で検出した集約ポートの情報を、過去の集約ポート情報に照らし合わせることで１−１接続４４の集約ポートを判別するものである。また、過去情報では判別不可能な一部ポート番号については、対向ポートの値を基に集約ポートを判別することで誤集約を抑制する。
【０１０６】
本処理は（発明が解決しようとする課題）に挙げた、辞書ベースやルールベースによる集約ポート判別に類似しているように見えるが、本処理は、辞書ベースやルールベースの課題を解決している。以下その特徴を説明する。
【０１０７】
まず、辞書ベースでは「網羅的な辞書作成が困難で集約ポートの検出漏れがおきる」と、「集約ポートとして辞書に登録されているポート番号が別のソフトウェアではランダムポートとして使われる」という２つの課題があるが、第一の課題について、本処理では集約ポートかランダムポートか判別できないポート番号は集約ポートとして扱うため、集約ポートの情報が欠落しない。この処理ではランダムポートを集約ポートとして検出される誤検知が多い問題点があるように思えるが、ほとんどのランダムポートは１−Ｎ接続４２や重複１−Ｎ接続４３に現れるため、接続構造探索１１でこれら構造のランダムポートを除外されている状態では、集約ポートとして扱われるランダムポートは極少量となる。
【０１０８】
第二の課題について、本処理は、複数の集約ポートの組合せ情報を基に判別するため、単一のポート番号を基に集約ポートを判別する辞書ベース判定のようにランダムポートの値が偶然集約ポートの値として登録されていてもランダムポートを集約ポートとして誤認することが無い。
【０１０９】
また、ルールベースでは、「ルールを満たさない集約ポートがあり、集約ポートの検出漏れがおきる」という課題があるが、本処理では、ポート番号の接続関係においてランダムポート同士は接続しないという特徴を活かし、対向ポート番号がランダムポートかという判定を基に自身が集約ポートか判定する。このためルールを満たさない集約ポートも検出可能である。
【０１１０】
以下、本実施例においての具体的な処理手順の例を図１１を用いて説明する。まず、親和性探索部１２は、接続構造探索部１１で集約ポートとランダムポートの判別が付かなかったポートの接続関係（グラフ構造のデータ）、および先の処理で検出された集約ポート（複数の場合もある）を入力されると、ポートの接続関係を全て１−１接続４４となるように接続を加工する（Ｓ４０）。例えば、ポート番号Ａ、Ｂ、Ｃが「Ａ−Ｂ−Ｃ」のように接続している場合、これを「Ａ−Ｂ」、「Ｂ−Ｃ」のように加工する。以降の処理（Ｓ４１−Ｓ４４）は１−１接続４４のポート番号の組それぞれで実施される。
【０１１１】
その後、入力データ中に検出済み集約ポートがあればＳ４２に移行し（Ｓ４１：ＹＥＳ）、なければＳ４４に移行する（Ｓ４１：ＮＯ）。なお、この検出済み集約ポートは、本処理（親和性に基づく集約ポート探索Ｓ１４）中に検出された集約ポートを含んでも良い。
【０１１２】
Ｓ４２において親和性探索部１２は、同時出現集約ポート管理テーブル１４（図６）にアクセスし、集約ポートカラム８０の値が、検出済み集約ポートに等しいレコードを全て取得する。その後、１−１接続４４が含む二つのポート番号それぞれに対して親和度を算出し、親和度が大きいポート番号を集約ポートと判断する。親和度は、ポート番号の値と同時観測集約ポート８１の値とが等しいレコードを抽出し、抽出したレコードの観測回数８２を合算することで算出される。
【０１１３】
なお、レコードが抽出されなかったポート番号は親和度０と扱う。親和度の値が同値の場合は集約ポートを判定せず次ステップに進む。ここで、両者とも親和度が小さい（例えば５以下）場合は、親和度判定では集約ポートを判定できないとして、集約ポートを判定せず次ステップに進んでも良い。また、両者の値が共に大きい（例えば１０以上）場合は両者を集約ポートと判定しても良い。
【０１１４】
Ｓ４２にて集約ポートが判定できた場合は、この１−１接続４４の判定を終える（Ｓ４３：ＹＥＳ）。一方、判定できなかった場合はＳ４４に移行する（Ｓ４３：ＮＯ）。
【０１１５】
Ｓ４４において親和性探索部１２は、１−１接続４４の二つのポート番号の値が短命ポート領域か判定し、接続相手が短命ポート領域の値ならば、自身を集約ポートと判定する。ここで、短命ポート領域とは、一般に通信する際に、ランダムポートとして割り振られる値の領域で、通常は３２７６８〜６５５３５の範囲を取る。ただし、この範囲は管理者１４３により変更されても良い。
【０１１６】
Ｓ４４にて集約ポートを判定できた場合は（Ｓ４５：ＹＥＳ）、この１−１接続４４の判定を終える。一方、判定できなかった場合は（Ｓ４３：ＮＯ）、両者を集約ポートと判断する（Ｓ４６）。
【０１１７】
本処理を実行することで、１−１接続４４の集約ポートを判別することができ、また、過去情報では判別不可能な一部ポート番号については、対向ポートの値を基に集約ポートを判別することで誤集約を抑制することができる。
【０１１８】
以上の構成を備えることで、フロー集約装置１は高精度で集約ポートを検出し、フローを集約することが可能となる。
【０１１９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【符号の説明】
【０１２０】
１：フロー集約装置、１０：連続性探索部、１１：接続構造探索部、１２：親和性探索部、
１３：ＩＰ別集約ポート管理テーブル、１４：同時観測集約ポート管理テーブル、２０：フロー情報、２１：集約フロー情報、１００：データネットワーク、１０１：制御ネットワーク、１１０：電子計算機、１２０：通信装置、１２１：転送機能、１２２：フロー統計通知機能、１３０：フロー収集装置、１３１：フロー監視装置、１４０：通知先、１４１：運用管理装置、１４３：システム管理者、１４２：クライアント端末、１５０：監視対象、１６０：フロー監視システム、１７０：フロー統計情報
【図１】
2018022966.tif 000005
【図２】
2018022966.tif 000006
【図３】
2018022966.tif 000007
【図４】
2018022966.tif 000008
【図５】
2018022966.tif 000009
【図６】
2018022966.tif 000010
【図７】
2018022966.tif 000011
【図８】
2018022966.tif 000012
【図９】
2018022966.tif 000013
【図１０】
2018022966.tif 000014
【図１１】
2018022966.tif 000015