(57)【特許請求の範囲】
【請求項１】
通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得する取得部と、
前記送信元および前記送信先のうち一方をサーバ、他方をクライアントとして識別し、前記サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群を前記フロー情報から抽出する抽出部と、
前記クライアントのポート番号が所定の条件を満たす前記類似フロー情報群を動的フロー情報群として識別する識別部と、
を備えることを特徴とするフロー監視装置。
【請求項２】
前記所定の条件は、前記クライアントのポート番号が所定数以上ほぼ連続することを含むことを特徴とする、請求項１に記載のフロー監視装置。
【請求項３】
前記フロー情報は、通信状態情報を含み、
前記所定の条件は、前記クライアントのポート番号がより小さい前記フロー情報では前記通信状態情報が通信の終了を示し、前記クライアントのポート番号がより大きい前記フロー情報では前記通信状態情報が通信の継続を示すことを含むことを特徴とする、請求項２に記載のフロー監視装置。
【請求項４】
前記通信の終了を示す前記通信状態情報は、通信の正常終了を示す情報であることを特徴とする、請求項３に記載のフロー監視装置。
【請求項５】
前記取得部は、時系列で前記フロー情報を取得し、
前記抽出部は、複数の時刻に取得された前記フロー情報から前記類似フロー情報群を抽出することを特徴とする、請求項１〜４のいずれか１項に記載のフロー監視装置。
【請求項６】
前記識別部は、前記複数の時刻から、前記動的フロー情報群に対応する動的フローの開始および終了の一方または両方を識別することを特徴とする、請求項５に記載のフロー監視装置。
【請求項７】
前記抽出部は、一の時刻に取得された前記フロー情報から抽出された前記類似フロー情報群が前記動的フロー情報群として識別されない場合に、別の時刻に取得された前記フロー情報から前記類似フロー情報群を抽出することを特徴とする、請求項５に記載のフロー監視装置。
【請求項８】
前記抽出部は、前記サーバのＩＰアドレスが共通するという条件に代えて、前記サーバのＩＰアドレスが所定のＩＰアドレス群に属するという条件を用いることを特徴とする、請求項１〜７のいずれか１項に記載のフロー監視装置。
【請求項９】
前記動的フロー情報群の属性の特徴についての学習データを生成する学習部と、
前記学習データに基づいて、新たに取得されたフロー情報を分類する分類部と、
をさらに備えることを特徴とする、請求項１〜８のいずれか１項に記載のフロー監視装置。
【請求項１０】
通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得するステップと、
前記送信元および前記送信先のうち一方をサーバ、他方をクライアントとして識別し、前記サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群を前記フロー情報から抽出するステップと、
前記クライアントのポート番号が所定の条件を満たす前記類似フロー情報群を動的フロー情報群として識別するステップと、
を含むことを特徴とするフロー監視方法。
【請求項１１】
通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得する処理と、
前記送信元および前記送信先のうち一方をサーバ、他方をクライアントとして識別し、前記サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群を前記フロー情報から抽出する処理と、
前記クライアントのポート番号が所定の条件を満たす前記類似フロー情報群を動的フロー情報群として識別する処理と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおいてトラフィック管理に用いられるフロー監視装置、フロー監視方法およびプログラムに関する。
【背景技術】
【０００２】
通信ネットワーク上で、あるノードから別のノードへと送信されるデータを、トラフィックという。ここで、データは、例えば文字、画像、または音声などのデジタルデータであり、ノードは、例えばサーバやクライアントとして機能するネットワーク上の機器でありうる。ネットワーク全体のパフォーマンスを維持するためには、このトラフィックを管理することが重要である。トラフィックの管理には、例えば、どのようなデータが、どのノードからどのノードへ、どれだけ送信されたかを把握することが含まれる。
【０００３】
このようなトラフィックの管理の一手法として、トラフィックに含まれるフローを単位とするトラフィックの管理が提案されている。ここで、フローは、通信プロトコル、送信元および送信先などの特徴が共通するパケットの集合である。例えば、特許文献１では、通信ネットワーク内のリンクを経由するフローのうち、分類（クラス）が既知であるフローについて、クラスとフローの特徴との関係を学習し、クラスが未知であるフローについて学習結果からクラスを推定する技術が開示されている。フローのクラスが推定されることによって、例えば、新たに検出されたフローが正常であるか異常であるかを識別することが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４２０８５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、近年、トラフィックに含まれる動的フローが増加していることによって、上記の手法によるフローのクラスの識別が難しくなってきている。動的フローは、例えば、Ｗｅｂページの取得におけるＡｊａｘ（Asynchronous  JavaScript  +  XML）などを用いた動的なＷｅｂページの取得において発生しうる。動的なＷｅｂページの取得では、例えば差分データの取得のために複数のセッションが非同期的に発生し、これらの複数のセッションのそれぞれが別個のフローを形成することによって動的フローが発生しうる。また、動的なＷｅｂページの取得では、例えばＫｅｅｐ−Ａｌｉｖｅと呼ばれる接続の継続のための制御メッセージが送信されるため、それ自体が特に意味を持たないフローが多く発生することによっても動的フローが発生しうる。このように、ユーザ体験の観点からすれば同じＷｅｂページの取得にかかわる一連のフローであるが、実態としては別個のフローであるようなフローを、ここでは動的フローという。
【０００６】
このような動的フローに対して、例えば特許文献１の技術のように個々のフローを単位とするクラスとフローの特徴との関係を学習した場合、個々のフローの関連性は学習結果に反映されない。それゆえ、例えばユーザの１つの動作に対応する動的フローが、相異なる複数のクラスに分類されてしまうといった状態が生じうる。結果として、例えば、ユーザがどのようなＷｅｂページを閲覧しているかといった、ユーザ体験の観点から有意な情報を得ることが困難になる。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、動的フローに対応してトラフィックを管理することを可能にする、新規かつ改良されたフロー監視装置、フロー監視方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得する取得部と、送信元および送信先のうち一方をサーバ、他方をクライアントとして識別し、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群をフロー情報から抽出する抽出部と、クライアントのポート番号が所定の条件を満たす類似フロー情報群を動的フロー情報群として識別する識別部とを含むことを特徴とするフロー監視装置が提供される。
【０００９】
かかる構成によれば、各フローに関するフロー情報から、同じ動的フローに含まれる動的フロー情報群を特定することができ、特定された動的フロー情報群をひとまとまりのフロー情報として扱うことによって、例えば、より適切なトラフィック管理のための情報を得ることができる。
【００１０】
上記フロー監視装置において、所定の条件は、クライアントのポート番号が所定数以上ほぼ連続することを含んでもよい。
【００１１】
上記フロー監視装置において、フロー情報は、通信状態情報を含み、所定の条件は、クライアントのポート番号がより小さいフロー情報では通信状態情報が通信の終了を示し、クライアントのポート番号がより大きいフロー情報では通信状態情報が通信の継続を示すことを含んでもよい。
【００１２】
上記フロー監視装置において、通信の終了を示す通信状態情報は、通信の正常終了を示す情報であってもよい。
【００１３】
上記フロー監視装置において、取得部は、時系列でフロー情報を取得し、抽出部は、複数の時刻に取得されたフロー情報から類似フロー情報群を抽出してもよい。
【００１４】
上記フロー監視装置において、識別部は、複数の時刻から、動的フロー情報群に対応する動的フローの開始および終了の一方または両方を識別してもよい。
【００１５】
上記フロー監視装置において、抽出部は、一の時刻に取得されたフロー情報から抽出された類似フロー情報群が動的フロー情報群として識別されない場合に、別の時刻に取得されたフロー情報から類似フロー情報群を抽出してもよい。
【００１６】
上記フロー監視装置において、抽出部は、サーバのＩＰアドレスが共通するという条件に代えて、サーバのＩＰアドレスが所定のＩＰアドレス群に属するという条件を用いてもよい。
【００１７】
上記フロー監視装置は、動的フロー情報群の属性の特徴についての学習データを生成する学習部と、学習データに基づいて、新たに取得されたフロー情報を分類する分類部とをさらに含んでもよい。
【００１８】
また、上記課題を解決するために、本発明の別の観点によれば、通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得するステップと、送信元および送信先のうち一方をサーバ、他方をクライアントとして識別し、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群をフロー情報から抽出するステップと、クライアントのポート番号が所定の条件を満たす類似フロー情報群を動的フロー情報群として識別するステップとを含むことを特徴とするフロー監視方法が提供される。
【００１９】
また、上記課題を解決するために、本発明のさらに別の観点によれば、通信ネットワーク内のリンクを経由するフローについて、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得する処理と、送信元および送信先のうち一方をサーバ、他方をクライアントとして識別し、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群をフロー情報から抽出する処理と、クライアントのポート番号が所定の条件を満たす類似フロー情報群を動的フロー情報群として識別する処理とをコンピュータに実行させることを特徴とするプログラムが提供される。
【発明の効果】
【００２０】
以上説明したように本発明によれば、動的フローに対応してトラフィックを管理することが可能になる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態に係るフロー監視装置の配置を示す図である。
【図２】本発明の第１の実施形態に係るフロー監視装置の機能構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るフロー情報の一例を示す図である。
【図４】本発明の第１の実施形態に係るフロー監視装置の動作を示すフローチャートである。
【図５】本発明の第２の実施形態に係るフロー監視装置の動作を示すフローチャートである。
【図６】本発明の第３の実施形態に係るフロー監視装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２３】
（第１の実施形態）
まず、図１〜図４を参照して、本発明の第１の実施形態について説明する。
【００２４】
（フロー監視装置の配置）
図１は、本発明の第１の実施形態に係るフロー監視装置１００の配置を示す図である。図１を参照すると、本実施形態において、フロー監視装置１００は、通信ネットワークのリンク１０上のルータ２０に接続される。
【００２５】
リンク１０は、通信ネットワーク内のリンクである。ネットワーク上のノード間のトラフィックのうちの少なくとも一部がリンク１０を経由する。例えば、リンク１０は、比較的多くのトラフィックがそこを経由する、ネットワーク内の主要なリンクであってもよい。後述するように、リンク１０を経由するトラフィックは、フロー監視装置１００を用いて解析される。
【００２６】
ルータ２０は、リンク１０上に設けられるルータである。ルータ２０は、例えばポートミラーリングの機能を有し、リンク１０を経由するパケットをコピーしてフロー監視装置１００に提供する。なお、ルータ２０に代えて、光カプラまたはタップなどの装置がリンク１０上に設けられ、リンク１０を経由するパケットをフロー監視装置１００に向けて分岐させてもよい。これらの装置はフロー監視装置１００に含まれてもよく、その場合、フロー監視装置１００は、図示されているようなリンク１０から分岐した経路上ではなく、リンク１０上に設けられてもよい。
【００２７】
フロー監視装置１００は、リンク１０を経由するトラフィックに含まれるフローを監視する装置である。上述のように、フローは、通信プロトコル、送信元および送信先などの特徴が共通するパケットの集合である。フロー監視装置１００は、ルータ２０から提供されたパケットを解析して取得されたフロー情報のうち、動的フローに対応する動的フロー情報群を識別する。フロー監視装置１００は、この動的フロー情報群を単位として、例えば、トラフィックに関する情報を出力したり、フロー情報群の特徴を学習することによって新たに取得されたフローを分類したりしてもよい。フロー監視装置１００では、このように動的フローのフロー情報が動的フロー情報群としてまとめて扱われることによって、個々のフローを単位としてフローを監視する場合に比べて、例えばユーザ体験の観点からより有意な情報を取得することが可能になる。なお、フロー監視装置１００は、動的フロー以外のフローのために、個々のフローを単位とするフロー監視の機能をあわせて有していてもよい。
【００２８】
（フロー監視装置の構成）
図２は、本発明の第１の実施形態に係るフロー監視装置１００の機能構成を示すブロック図である。図２を参照すると、フロー監視装置１００は、取得部１１０、記憶部１２０、抽出部１３０、および識別部１４０を含む。
【００２９】
なお、取得部１１０、抽出部１３０、および識別部１４０の機能は、例えば、ＣＰＵ（Central  Processing  Unit）が記憶部１２０に格納されたプログラムに従って動作することによって実現されうる。このプログラムは、記憶媒体に格納して提供され、図示しないドライバを介して記憶部１２０に読み込まれるものであってもよく、また、図示しないネットワークからダウンロードされて記憶部１２０に格納されるものであってもよい。また、上記各部の機能を実現するために、ＣＰＵに代えてＤＳＰ（Digital  Signal  Processor）が用いられてもよい。記憶部１２０は、例えば半導体メモリ、磁気ディスク、または光学ディスクなどを用いるＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）として実現されうる。
【００３０】
（取得部）
取得部１１０は、リンク１０を経由するフローについて、送信元のＩＰ（Internet  Protocol）アドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルの情報を含むフロー情報を取得する。例えば、取得部１１０は、ルータ２０から提供されたパケットのヘッダ情報を読み取ることによって、リンク１０を経由する各フローの送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレスおよびポート番号、通信プロトコル、通信状態情報などの情報を取得する。取得部１１０は、これらの情報を含むフロー情報を、例えば所定の時間ごと、または一のフローが終了したタイミングなどに、記憶部１２０に格納しうる。
【００３１】
（フロー情報の例）
ここで、図３を参照して、取得部１１０によって取得され、記憶部１２０に格納されるフロー情報の例について説明する。
【００３２】
図３は、本発明の第１の実施形態に係るフロー情報の一例を示す図である。図３を参照すると、フロー情報は、送信元のＩＰアドレス（Source）、送信先のＩＰアドレス（Destination）、送信元のポート番号（Source  Port）、送信先のポート番号（Dest  Port）、通信プロトコル（Protocol）、および通信状態情報であるＴＣＰフラグ（TCP）の情報を含む。図示された例のフロー情報は、この他に、アプリケーション層プロトコル（Application）、ＤＳＣＰ（Differentiated  Services  Code  Point）、ネクストホップ（NextHop）、パケットサイズ（Traffic  in  bytes）、およびパケット数（No.  of  packets）の情報を含む。
【００３３】
図示されている例では、トランスポート層の通信プロトコル（例えばＴＣＰ（Transmission  Control  Protocol）、ＵＤＰ（User  Datagram  Protocol）など）、送信元のＩＰアドレスおよびポート番号、ならびに送信先のＩＰアドレスおよびポート番号がそれぞれ共通するパケットの集合が１つのフローであり、フロー情報の各レコードはそれぞれ１つのフローに対応する。
【００３４】
また、図３の（ａ）および（ｂ）は、取得部１１０が時系列でフロー情報を取得する場合に、相異なる複数の時刻に取得されたフロー情報をそれぞれ示す。例えば、図３の（ａ）は時刻ｔに取得されたフロー情報であり、（ｂ）は時刻ｔ＋Δｔに取得されたフロー情報でありうる。なお、時間Δｔは、取得部１１０が時系列でフロー情報を取得する間隔である。
【００３５】
図示されたフロー情報では、送信元のＩＰアドレス、送信先のポート番号、および通信プロトコルが各レコード間で共通するのに対し、送信元のポート番号はそれぞれ異なる。また、送信先のＩＰアドレスは、一部のレコードでは共通するが、他のレコードでは異なる。送信元のポート番号や送信先のＩＰレコードが異なるパケットの集合は、互いに異なるフローとみなされるため、フロー情報の複数のレコードが取得される。
【００３６】
しかし、例えば、Ａｊａｘなどを用いた動的Ｗｅｂページの取得では、１つのＷｅｂページの取得のために、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、および通信プロトコルが共通で、クライアントのポート番号が異なる動的フローが発生しうる。このような動的フローを考慮すると、図示されたフロー情報によって示される複数のフローのうち、送信元のＩＰアドレス、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルが共通するフローは、同一の動的フローに含まれるフローである可能性がある。フロー監視装置１００は、このようなフローが動的フローに含まれるか否かを識別することによって、動的フローに対応したトラフィックのより適切な管理を実現する。
【００３７】
（記憶部）
再び図２を参照して、記憶部１２０は、トラフィック監視装置１００の処理で用いられる各種データを格納する。例えば、記憶部１２０には、上述のように、取得部１１０によって取得されたフロー情報が格納される。また、上述のように、記憶部１２０には、ＣＰＵによって実行されて取得部１１０、抽出部１３０、および識別部１４０の機能を実現するプログラムが格納されてもよい。
【００３８】
（抽出部）
抽出部１３０は、取得部１１０によって取得されて記憶部１２０に格納されたフロー情報において、送信元および送信先のうち一方をサーバ、他方をクライアントとして識別する。さらに、抽出部１３０は、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコルが共通する類似フロー情報群をフロー情報から抽出する。
【００３９】
ここで、抽出部１３０によって抽出条件として用いられる４つのキー（サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、ならびに通信プロトコル）は、例えばＩＰＱｏＳ（IP  Quality  of  Service）で用いられる５タプル（5-tuples：サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレスおよびポート番号、ならびに通信プロトコル）から、クライアントのポート番号を除いたものにあたる。本明細書では、以下、この４つのキーを４タプル（4-tuples）と呼ぶ場合がある。上述のように、動的フローには、サーバのＩＰアドレスおよびポート番号、クライアントのＩＰアドレス、および通信プロトコルが共通で、クライアントのポート番号が異なる複数のフローが含まれうる。このような複数のフローは、上記のように、４タプルをキーにした類似フロー情報群の抽出によって抽出されうる。従って、類似フロー情報群は、同じ動的フローに含まれるフローに対応するフロー情報群の候補ともいえる。
【００４０】
（サーバとクライアントの識別）
ここで、フロー情報に含まれる送信元および送信先の情報から、送信元および送信先のうちどちらがサーバで、どちらがクライアントであるかを識別する方法の例について説明する。
【００４１】
第１の方法の例として、送信元または送信先のうち、特定のポート番号で通信している方をサーバとして識別する方法がある。特定のポートは、例えば、特定のアプリケーションについて予め割り当てられたポート番号でありうる。例えば、ＴＣＰやＵＤＰでは、ｈｔｔｐ（hypertext  transfer  protocol）にはポート番号「８０」が、ｈｔｔｐｓ（http  over  secure  socket  layer）にはポート番号「４４３」が、それぞれ割り当てられている。この方法によれば、図３の例では、フロー情報の各レコードの送信先のポート番号（Dest  Port）が「８０」であるため、送信先がサーバとして識別されうる。
【００４２】
第２の方法の例として、送信元または送信先のうち、ポート番号が不定である方をクライアントとして識別する方法がある。上述のように、動的フローに含まれる各フローの間では、サーバのポート番号が共通で、クライアントのポート番号が異なる場合がある。それゆえ、例えば、フロー情報で、送信元のＩＰアドレスおよびポート番号、送信先のＩＰアドレス、ならびに通信プロトコルが共通で、送信先のポート番号が異なる複数のレコードがあれば、送信先がクライアントとして識別されうる。また、逆に、送信元のＩＰアドレス、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルが共通で、送信元のポート番号が異なる複数のレコードがあれば、送信元がクライアントとして識別されうる。この方法によれば、図３の例では、送信元のＩＰアドレス、送信先のＩＰアドレスおよびポート番号、ならびに通信プロトコルが共通で、送信元のポート番号が異なる複数のレコードがあるため、送信元がクライアントとして識別されうる。
【００４３】
抽出部１３０は、例えば、上記の第１および第２の方法の一方または両方を用いて、送信元および送信先のうち一方をサーバ、他方をクライアントとして識別する。例えば、抽出部１３０は、まず第１の方法を用い、識別できなければ第２の方法を用いてもよく、その逆でもよい。また、抽出部１３０は、第１の方法と第２の方法とを両方用いて、結果が一致するか確かめてもよい。いずれの場合でも、図３の例では、送信元がクライアント、送信先がサーバとしてそれぞれ識別されうる。
【００４４】
（識別部）
識別部１４０は、抽出部１３０によって抽出された類似フロー情報群のうち、クライアントのポート番号が所定の条件を満たすフロー情報群を動的フロー情報群として識別する。例えば、識別部１４０は、類似フロー情報群、すなわち４タプルが共通するフロー情報群について、クライアントのポート番号が所定数以上ほぼ連続する場合に、これらのフロー情報群を動的フロー情報群として識別しうる。
【００４５】
ここでいう「ポート番号がほぼ連続する」場合には、ポート番号が間断なく連続している場合に加えて、ポート番号の連続の一部が欠落している場合も含まれうる。例えば、図３の例では、４タプル（サーバのＩＰアドレス（Destination）／サーバのポート番号（Dest  Port）／クライアントのＩＰアドレス（Source）／プロトコルの順で表記。以下同様。）が（ｙｙｙ．２３３．１８３．９／８０／１９２．１６８．４．１００／ＴＣＰ）で共通するフロー情報の中で、クライアントのポート番号が１９０４，１９０５，・・・１９０９，１９１２，１９１３，１９１５のように変化している。この場合、クライアントのポート番号は、１９０４〜１９０９の間では間断なく連続しているが、１９０９〜１９１５の間では１９１０，１９１１，１９１４が欠落している。本実施形態では、このようにポート番号の連続の一部が欠落している場合も、「ポート番号がほぼ連続する」場合に含まれる。どの程度の欠落までを「ポート番号がほぼ連続する」に含めるかは、例えば、欠落したポート番号の数（上記の例では欠落したポート番号は最大で２）、連続に対する欠落の割合（上記の例では１９０４〜１９１５の間の１２のポート番号のうち３つが欠落しており、割合は３／１２＝０．２５）などについて、許容されうる値の範囲を予め設定することによって定義されうる。
【００４６】
また、ここでいう「所定数」は、フロー監視装置１００に予め設定された値でありうる。例えば、上記の例では、クライアントのポート番号が１９０４，１９０５，・・・１９０９，１９１２，１９１３，１９１５が「クライアントのポート番号が所定数以上ほぼ連続する」フロー情報群であると判定されているが、この場合、所定数は９以下の数である。
【００４７】
また、識別部１４０は、類似フロー情報群のうち、クライアントのポート番号が所定の条件を満たし、さらに、通信状態情報が所定の条件を満たすフロー情報群を動的フロー情報群として識別してもよい。例えば、識別部１４０は、類似フロー情報群のうち、クライアントのポート番号がより小さいフロー情報では通信状態情報が通信の終了を示し、クライアントのポート番号がより大きいフロー情報では通信状態情報が通信の継続を示す場合に、これらのフロー情報群を動的フロー情報群として識別してもよい。
【００４８】
ここで、本実施形態において、フロー情報に含まれる通信状態情報は、ＴＣＰフラグである。ＴＣＰフラグは、ＴＣＰのコネクションを制御するためのフラグであり、ＵＲＧ（Urgent）、ＡＣＫ（Acknowledgement）、ＰＳＨ（Push）、ＲＳＴ（Reset）、ＳＹＮ（Synchronize）、およびＦＩＮ（Fin）の６種類がある。通信が継続している場合、ＴＣＰフラグは、例えば（ＡＣＫ，ＰＳＨ）または（ＡＣＫ，ＰＳＨ，ＳＹＮ）のようになる。また、通信が正常終了した場合、ＴＣＰフラグは、例えば（ＡＣＫ，ＰＳＨ，ＦＩＮ）または（ＡＣＫ，ＰＳＨ，ＳＹＮ，ＦＩＮ）のようになる。通信が強制終了された場合、ＴＣＰフラグは、例えば（ＡＣＫ，ＲＳＴ）のようになる。
【００４９】
それゆえ、識別部１４０は、各フロー情報について、ポート番号と、ＴＣＰフラグによって示される通信の状態との関係に基づいて、動的フロー情報群を識別する。例えば、図３の（ａ）の例で、４タプルが（ｙｙｙ．２３３．１８３．９／８０／１９２．１６８．４．１００／ＴＣＰ）で共通するフロー情報のＴＣＰフラグ（TCP）は、いずれも（Ａ（ＡＣＫ），Ｐ（ＰＳＨ））または（Ａ，Ｐ，Ｓ（ＳＹＮ））であり、通信が継続していることが示されている。この場合、各フロー情報のうち、クライアントのポート番号がより小さいフロー情報でも、通信状態情報によって通信の終了が示されていない。従って、識別部１４０は、これらのフロー情報を動的フロー情報群として識別しない。
【００５０】
一方、図３の（ｂ）の例で、４タプルが（ｙｙｙ．２３３．１８３．９／８０／１９２．１６８．４．１００／ＴＣＰ）で共通するフロー情報のＴＣＰフラグ（TCP）は、クライアントのポート番号が１９０４〜１９０９のフロー情報では（Ａ，Ｐ，Ｆ（ＦＩＮ））または（Ａ，Ｐ，Ｓ，Ｆ）であり、通信が終了したことが示されている。また、クライアントのポート番号が１９１２，１９１３，１９１５のフロー情報ではＴＣＰフラグが（Ａ，Ｐ，Ｓ）であり、通信が継続していることが示されている。この場合、各フロー情報のうちクライアントのポート番号がより小さいフロー情報では通信状態情報によって通信の終了が示され、クライアントのポート番号がより大きいフロー情報では通信状態情報によって通信の継続が示されているといえるため、識別部１４０は、これらのフロー情報群を動的フロー情報群として識別しうる。
【００５１】
さらに、識別部１４０は、動的フローについての情報を記憶部１２０に格納してもよい。例えば、識別部１４０は、識別された動的フロー情報群から、動的フローのサーバのＩＰアドレス、開始から終了までの継続時間、パケット数、およびパケットサイズなどの情報を取得し、これらの情報を記憶部１２０に格納してもよい。
【００５２】
（フロー監視装置の動作）
図４は、本発明の第１の実施形態に係るフロー監視装置１００の動作を示すフローチャートである。
【００５３】
まず、取得部１１０が、フロー情報を取得し、取得したフロー情報を記憶部１２０に格納する（ステップＳ１０１）。取得部１１０は、フロー情報を、例えば一定時間ごと、または一のフローが終了したタイミングなどに取得し、記憶部１２０に格納してもよい。続くステップＳ１０３以降のステップは、例えばフロー情報の１回の取得ごとに実行されてもよいし、またはフロー情報の複数回の取得ごと、もしくは所定の時間ごとに実行されてもよい。
【００５４】
次に、抽出部１３０が、取得および格納されたフロー情報から類似フロー情報群を抽出する（ステップＳ１０３）。抽出部１３０は、フロー情報に含まれる送信元および送信先のうち一方をサーバ、他方をクライアントとして識別し、サーバおよびクライアントの情報を含む４タプルをキーにして、フロー情報から類似フロー情報群を抽出する。本実施形態において、抽出部１３０による抽出の対象になるフロー情報は、取得部１１０がある時刻ｔに取得したフロー情報でありうる。つまり、本実施形態では、時系列でフロー情報を取得する取得部１１０が一の時刻ｔに取得したフロー情報について、類似フロー情報群が抽出され、動的フロー情報群が識別されうる。
【００５５】
次に、識別部１４０が、抽出された類似フロー情報群について、クライアントのポート番号が所定数以上ほぼ連続するか否かを判定する（ステップＳ１０５）。上述のように、「ポート番号がほぼ連続する」場合には、ポート番号の連続の一部が欠落している場合も含まれうる。ここで、類似フロー情報群に含まれるクライアントのポート番号が所定数以上ほぼ連続していると判定された場合、続くステップＳ１０７が実行される。一方、類似フロー情報群に含まれるクライアントのポート番号が所定数以上ほぼ連続していないと判定された場合、識別部１４０は、動的フロー情報群に該当するフロー情報群はなかったとして処理を終了する。
【００５６】
次に、識別部１４０が、類似フロー情報群について、通信状態情報であるＴＣＰフラグが所定の条件を満たすか否かを判定する（ステップＳ１０７）。上述のように、ＴＣＰフラグの所定の条件は、「クライアントのポート番号がより小さいフロー情報では通信の終了が示され、クライアントのポート番号がより大きいフロー情報では通信の継続が示される」ことでありうる。ここで、類似フロー情報群のＴＣＰフラグが所定の条件を満たすと判定された場合、続くステップＳ１０９が実行される。一方、類似フロー情報群のＴＣＰフラグが所定の条件を満たさないと判定された場合、識別部１４０は、動的フロー情報群に該当するフロー情報群はなかったとして処理を終了する。
【００５７】
次に、識別部１４０が、類似フロー情報群を動的フロー情報群として識別する（ステップＳ１０９）。識別部１４０は、さらに、識別された動的フロー情報群の情報を記憶部１２０に格納してもよい。
【００５８】
（第１の実施形態の変形例−１）
以上で説明した本発明の第１の実施形態において、抽出部１３０は、フロー情報から類似フロー情報群を抽出するときに、サーバのＩＰアドレスが共通するという条件に代えて、サーバのＩＰアドレスが所定のＩＰアドレス群に属するという条件を用いてもよい。
【００５９】
例えば、仮想ネットワークやクラウドコンピューティングが利用される場合には、サーバのＩＰアドレスも、動的フローに含まれる各フローの間で異なりうる。抽出部１３０が、４タプルのうちサーバのＩＰアドレスについて、共通するという条件に代えて、ＩＰアドレスが所定のＩＰアドレス群に属するという条件を用いることによって、上記のような動的フローをより適切に検出することが可能になる。
【００６０】
所定のＩＰアドレス群は、例えば、例えば同じアドレス空間に含まれるＩＰアドレス群でありうる。例として、図３にある送信先のＩＰアドレス（Destination）のうち、「ｙｙｙ．２３３．１８３．１」と「ｙｙｙ．２３３．１８３．９」とは、／２４（２５５．２５５．２５５．０）のセグメントで考えれば、同じアドレス空間に含まれるＩＰアドレス群である。また、所定のＩＰアドレス群は、例えば、サービスについて予め登録されたＩＰアドレス群であってもよい。例として、図３にある送信先のＩＰアドレス（Destination）のうち、「ｚｚｚ．１２５．１９．１０」と「ｙｙｙ．２３３．１８３．１」と「ｙｙｙ．２３３．１８３．９」とが、いずれもあるサービスに用いられる仮想的なサーバのＩＰアドレスであることが知られていれば、これらのＩＰアドレスを含むＩＰアドレス群を予め登録して記憶部１２０などに格納し、抽出部１３０による抽出の条件として用いてもよい。
【００６１】
（第１の実施形態の変形例−２）
以上で説明した本発明の第１の実施形態において、識別部１４０は、類似フロー情報群に含まれるフロー情報の通信状態情報であるＴＣＰフラグが所定の条件を満たすかを判定するときに、クライアントのポート番号がより小さいフロー情報ではＴＣＰフラグが通信の正常終了を示すことを条件にしてもよい。
【００６２】
上述のように、通信が終了したことを示すＴＣＰフラグには、（ＡＣＫ，ＰＳＨ，ＦＩＮ）または（ＡＣＫ，ＰＳＨ，ＳＹＮ，ＦＩＮ）などの他に、（ＡＣＫ，ＲＳＴ）などもある。ここで、ＦＩＮによって通信の終了が示されるＴＣＰフラグは、通信の正常終了を示し、ＲＳＴによって通信の終了が示されるＴＣＰフラグは、通信の強制終了を示すものでありうる。本変形例において、識別部１４０は、これらのＴＣＰフラグのうち、ＦＩＮによって通信の終了が示されるＴＣＰフラグを、「通信の終了を示す通信状態情報」として動的フロー群の識別に用いる。
【００６３】
上記の構成は、例えば、動的フロー群として識別されるフロー情報から、ポートスキャンのための通信によって発生するフロー情報を除外するために有効な構成である。ポートスキャンのための通信は、複数のフローについて、フロー情報の４タプルが共通し、クライアント側のポート番号が連続的に変化するという点で動的フロー群と類似している。しかし、ポートスキャンのための通信における複数のフローのフロー情報におけるＴＣＰフラグでは、ＳＹＮに対してＲＳＴが多数であったり、ＦＩＮによる通信の終了が見られなかったり、特定のフラグが連続し続けたりするという特徴がある。本変形例では、動的フロー情報群で「通信の終了を示す通信状態情報」を、通信の正常終了を示すＦＩＮを含むＴＣＰフラグに限定することによって、連続フロー情報群とポートスキャンのための通信によって発生する情報とが識別されうる。
【００６４】
（第２の実施形態）
次に、図５を参照して、本発明の第２の実施形態について説明する。なお、本発明の第２の実施形態は、上述した第１の実施形態に比べて、フロー監視装置の動作について相違するが、その他の構成については、上述した第１の実施形態（変形例を含む）と略同一であるため、ここでは詳細説明を省略する。
【００６５】
（フロー監視装置の動作）
図５は、本発明の第２の実施形態に係るフロー監視装置１００の動作を示すフローチャートである。
【００６６】
まず、取得部１１０が、フロー情報を取得し、取得したフロー情報を記憶部１２０に格納する（ステップＳ２０１）。取得部１１０は、フロー情報を、例えば一定時間ごと、または一のフローが終了したタイミングなどに取得し、記憶部１２０に格納しうる。続くステップＳ２０３以降のステップは、例えばフロー情報の１回の取得ごとに実行されてもよいし、またはフロー情報の複数回の取得ごと、もしくは所定の時間ごとに実行されてもよい。
【００６７】
次に、抽出部１３０が、取得および格納されたフロー情報のうち、時刻ｔに取得されたフロー情報から、類似フロー情報群を抽出する（ステップＳ２０３）。抽出部１３０は、フロー情報に含まれる送信元および送信先のうち一方をサーバ、他方をクライアントとして識別し、サーバおよびクライアントの情報を含む４タプルをキーにして、フロー情報から類似フロー情報群を抽出する。
【００６８】
次に、識別部１４０が、抽出された類似フロー情報群について、クライアントのポート番号が所定数以上ほぼ連続するか否かを判定する（ステップＳ２０５）。上述のように、「ポート番号がほぼ連続する」場合には、ポート番号の連続の一部が欠落している場合も含まれうる。ここで、類似フロー情報群に含まれるクライアントのポート番号が所定数以上ほぼ連続していると判定された場合、続くステップＳ２０７が実行される。一方、類似フロー情報群に含まれるクライアントのポート番号が所定数以上ほぼ連続していないと判定された場合、識別部１４０は、動的フロー情報群に該当するフロー情報群はなかったとして処理を終了する。
【００６９】
次に、識別部１４０が、類似フロー情報群について、通信状態情報であるＴＣＰフラグが所定の条件を満たすか否かを判定する（ステップＳ２０７）。上述のように、ＴＣＰフラグの所定の条件は、「クライアントのポート番号がより小さいフロー情報では通信の終了が示され、クライアントのポート番号がより大きいフロー情報では通信の継続が示される」ことでありうる。
【００７０】
ステップＳ２０７において、類似フロー情報群のＴＣＰフラグが所定の条件を満たすと判定された場合、次に、識別部１４０は、類似フロー情報群を動的フロー情報群として識別する（ステップＳ２０９）。識別部１４０は、さらに、識別された動的フロー情報群の情報を記憶部１２０に格納してもよい。
【００７１】
一方、ステップＳ２０７において、類似フロー情報群のＴＣＰフラグが所定の条件を満たさないと判定された場合、次に、識別部１４０は、時刻ｔを更新する（ステップＳ２１１）。更新された時刻ｔは、例えば時刻ｔから時間Δｔ後の時刻ｔ＋Δｔでありうる。なお、時間Δｔは、取得部１１０が時系列でフロー情報を取得する間隔でありうる。続いて、更新された時刻ｔを用いて、上述のステップＳ２０３以降の処理が繰り返し実行される。
【００７２】
上記のようなフロー監視装置１００の動作によって、例えば、ある時刻ｔに取得されたフロー情報から抽出された類似フロー情報群が動的フロー情報群として識別されない場合に、別の時刻（例えば時刻ｔ＋Δｔ）に取得されたフロー情報からフロー情報から類似フロー情報群が抽出される。動的フローでは、例えば、あるタイミングでは複数のフローのほとんどで通信が継続していて、その後、クライアントのポート番号がより小さいフローから通信が終了していくような場合がある。本実施形態の構成によれば、このような場合に、一の時刻だけではなく他の時刻でも類似フロー情報群の抽出と動的フロー情報群の識別とが実行されることによって、動的フローをより確実に検出することが可能になる。
【００７３】
例えば、図３の例で、時刻ｔに（ａ）のフロー情報が取得され、時刻ｔ＋Δｔに（ｂ）のフロー情報が取得されたとする。この場合、時刻ｔに取得された（ａ）のフロー情報では、４タプルが（ｙｙｙ．２３３．１８３．９／８０／１９２．１６８．４．１００／ＴＣＰ）で共通する類似フロー情報群について、ＴＣＰフラグが通信の終了を示しているフロー情報がないため、識別部１４０はこれらのフロー情報群を動的フロー情報群として識別しない。本実施形態では、ここで、類似フロー情報群の抽出対象になる時刻ｔが更新され、例えば時刻ｔ＋Δｔに取得された（ｂ）のフロー情報が次の処理対象になる。時刻ｔ＋Δｔに取得された（ｂ）のフロー情報では、４タプルが（ｙｙｙ．２３３．１８３．９／８０／１９２．１６８．４．１００／ＴＣＰ）で共通する類似フロー情報群について、クライアントのポート番号が１９０４〜１９０９のフロー情報で、ＴＣＰフラグが（Ａ，Ｐ，Ｓ，Ｆ）または（Ａ，Ｐ，Ｆ）となり、通信の終了を示している。そこで、識別部１４０はこれらのフロー情報群を動的フロー情報群として識別する。
【００７４】
また、上記のようなフロー監視装置１００の動作によって、例えば、動的フローの開始または終了を識別することも可能になる。例えば、４タプルがある値で共通するフロー情報群について、最初のフロー情報群が検出された時点が動的フローの開始として識別されうる。また、例えば、クライアントのポート番号がより小さいフロー情報から順に通信が終了していき、ポート番号が最大のフロー情報まで通信が終了した時点が、動的フローの終了として識別されうる。動的フローの終了を識別する場合、図５のステップＳ２０９の後に、例えば「動的フローが終了した？」という判定処理が追加され、動的フローが終了したと判定されるまでステップＳ２１１およびステップＳ２０３〜Ｓ２０９の処理が繰り返されてもよい。
【００７５】
（第３の実施形態）
次に、図６を参照して、本発明の第３の実施形態について説明する。なお、本発明の第３の実施形態は、上述した第１および第２の実施形態に比べて、フロー監視装置に追加される機能構成について相違するが、その他の構成については、上述した第１および第２の実施形態（変形例を含む）と略同一であるため、ここでは詳細説明を省略する。
【００７６】
（フロー監視装置の構成）
図６は、本発明の第３の実施形態に係るフロー監視装置２００の機能構成を示すブロック図である。図６を参照すると、フロー監視装置２００は、取得部１１０、記憶部１２０、抽出部１３０、識別部１４０、学習部２５０、および分類部２６０を含む。
【００７７】
なお、学習部２５０、および分類部２６０の機能は、例えば、ＣＰＵが記憶部１２０に格納されたプログラムに従って動作することによって実現されうる。このプログラムは、図示しない記憶媒体に格納して提供されたものであってもよく、また同じく図示しないネットワークからダウンロードされたものであってもよい。また、上記各部の機能を実現するために、ＣＰＵに代えてＤＳＰが用いられてもよい。
【００７８】
また、取得部１１０、記憶部１２０、抽出部１３０、および識別部１４０は、上述した第１の実施形態に係るフロー監視装置１００における同様の部分と略同一の機能構成を有するため、ここでは詳細説明を省略する。
【００７９】
（学習部）
学習部２５０は、識別部１４０によって識別された動的フロー情報群の属性の特徴についての学習データを生成する。学習部２５０は、生成した学習データを記憶部１２０に格納してもよい。例えば、学習部２５０は、識別部１４０によって識別された動的フロー情報群から取得される動的フローのサーバのＩＰアドレス、開始から終了までの継続時間、パケット数、およびパケットサイズなどの特徴についての学習データを生成してもよい。
【００８０】
（分類部）
分類部２６０は、学習部２５０が生成した学習データに基づいて、例えば取得部１１０によって新たに取得されたフロー情報を分類する。例えば、分類部２６０は、フロー情報の分類に単純ベイズ分類器などの分類器を用いてもよい。この場合、分類部２６０は、学習部２５０によって生成された学習データを分類器の教師あり学習に用いてもよい。例えば、学習データが、サーバのＩＰアドレス、開始から終了までの持続時間、パケット数、およびパケットサイズを含む場合、分類部２６０は、新たに取得されたフロー情報について、サーバのＩＰアドレス、開始から終了までの持続時間、パケット数、およびパケットサイズが学習データと共通の特徴を示す場合に、これらのフロー情報を以前に取得された動的フロー情報群と同様の動的フローに対応するフロー情報として分類しうる。
【００８１】
上記のようなフロー監視装置２００の構成によって、例えば、フローの継続時間が長かったり、暗号化通信されたりして異常の検出が困難な動的フローについても、例えば分類部２６０によってどこにも分類されないなどの基準に基づいて異常を検出することが可能になる。
【００８２】
（補足）
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到しうることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００８３】
１０    リンク
２０    ルータ
１００，２００    フロー監視装置
１１０    取得部
１２０    記憶部
１３０    抽出部
１４０    識別部
２５０    学習部
２６０    分類部
【図１】
0005287898.tif 000002
【図２】
0005287898.tif 000003
【図３】
0005287898.tif 000004
【図４】
0005287898.tif 000005
【図５】
0005287898.tif 000006
【図６】
0005287898.tif 000007