(57)【要約】【課題】仮想マシン間の通信フローの経路を明らかにすることを可能とする。【解決手段】本発明の一実施形態に係る通信解析装置は、複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信する受信部と、複数のフロー情報の中から、仮想マシン間の同一の通信フローを表すフロー情報の集合を特定する識別部と、フロー情報の集合およびネットワークの接続情報に基づいて、通信フローの経路を特定する解析部とを備える。【選択図】図１
2018170639.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信する受信部と、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定する識別部と、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定する解析部とを備える通信解析装置。
【請求項２】
前記フロー情報は、ＩＰ（Internet Protocol）ヘッダ、ＴＣＰ（Transmission Control Protocol）ヘッダまたはＵＤＰ（User Datagram Protocol）ヘッダに関する項目を含み、前記識別部は、前記項目に基づいて前記フロー情報の集合を特定する請求項１に記載の通信解析装置。
【請求項３】
前記識別部は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、ＩＰプロトコル番号、ＴｏＳ（Type of Service）フラグ値の組が合致するフロー情報を同一の通信フローと判断する請求項２に記載の通信解析装置。
【請求項４】
前記識別部は、前記フロー情報の集合に対して同一の識別子を付与する請求項１乃至３のいずれか１項に記載の通信解析装置。
【請求項５】
前記識別子が付与された前記複数のフロー情報を記憶する記憶部を備え、
前記解析部は、前記識別子に基づいて前記記憶部から前記フロー情報の集合を抽出する請求項４に記載の通信解析装置。
【請求項６】
前記フロー情報は、前記仮想マシン間の通信を中継する複数のノードのそれぞれにおいて収集され、収集が行われた前記ノードのＩＰアドレスおよびインターフェース番号を含み、
前記接続情報は、接続されている前記ノードのペアまたは前記ノードと前記仮想マシンのペアのそれぞれのＩＰアドレスおよびインターフェース番号を含む請求項１乃至５のいずれか１項に記載の通信解析装置。
【請求項７】
前記解析部は、前記フロー情報に含まれるインターフェース番号と前記接続情報に含まれるインターフェース番号とをマッチングさせることで前記通信フローの経路を特定する請求項６に記載の通信解析装置。
【請求項８】
前記ノードは、仮想スイッチまたは仮想ルータである請求項６または７に記載の通信解析装置。
【請求項９】
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとを備える通信解析方法。
【請求項１０】
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信解析装置、通信解析方法およびプログラムに関する。
【背景技術】
【０００２】
昨今、クラウドシステムをマルチテナント構成で運用することが増えてきている。ＩａａＳ（Infrastructure as a Service）型のクラウドシステムの場合、クラウドシステムの事業者は、仮想マシンを動作させるホストマシンを用意する。そして、ホストマシン上に複数の仮想マシンを用意し、仮想マシンを複数の利用者に貸し出すなどしてマルチテナント構成を実現している。
【０００３】
１つのテナントは複数のホストマシン上に渡って構成されることもある。すなわち、テナント内の複数の仮想マシンが、複数のホストマシン上に分散配置されることもある。この場合、対障害性を確保するためなどの目的で、１つの仮想マシンが複数のホストマシン間で自動的に移動する場合がある。このような技術には、例えばライブマイグレーションと呼ばれる既存技術がある。
【０００４】
テナントが複数のホストマシン上に渡って構成される場合、そのホストマシン群は、物理的に近い位置にいるとは限らない。例えばＶｘＬＡＮ（Virtual eXtensible Local Area Network）などのネットワークトンネリング技術により仮想ネットワークを構築し、その仮想ネットワーク上にテナントを構成することで、複数のホストマシンが物理的に離れた位置にあっても、テナント内は１つのネットワークとして通信が可能となる。
【０００５】
物理的に離れた位置にある仮想マシン間の通信は、一般にはＷＡＮ（Wide Area Network）を経由するため、ＬＡＮ（Local Area Network）内の通信よりも帯域が少なく往復時間もかかることが多く、一般的には遅くなる。そのため、同一テナント内であっても、仮想マシンが稼働するホストマシンの物理的距離が遠い場合は、仮想マシン間通信の速度が十分出ない場合も考えられる。
【０００６】
このような状況に対し、仮想マシン間の通信状況、例えば、仮想マシン間の通信がどのホストマシンで実行されているのか、その通信量はどのくらいかといった情報が可視化されると、運用における最適化計画が立てやすく、都合がよい。
【０００７】
特許文献１には、ＮｅｔＦｌｏｗ（非特許文献１）などのフロー集計の標準プロトコルを利用して、仮想マシン間の通信がどのホストマシンで実行されているのか、その通信量はどのくらいかといった情報を収集、分析する技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１５−１４２２６９号公報
【非特許文献】
【０００９】
【非特許文献１】Cisco Systems、"Cisco Systems NetFlow Services Export Version 9"、IETF、［平成２９年３月１３日検索］、インターネット＜http://www.ietf.org/rfc/rfc3954.txt＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１においては、仮想マシン間の通信量を可視化することができるが、通信フローの経路を解析して提示することはできない。同一ホストマシン内の仮想マシン間の通信が他のホストマシンに配置された仮想ルータを経由している場合、通信のエンドポイントのみから通信フローの経路を直観的に判断することは難しい。
【００１１】
本発明は上述の課題に鑑み、仮想マシン間の通信フローの経路を明らかにすることが可能な通信解析装置、通信解析方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一実施形態に係る通信解析装置は、複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信する受信部と、前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定する識別部と、前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定する解析部とを備える。
【００１３】
本発明の一実施形態に係る通信解析方法は、複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとを備える。
【００１４】
本発明の一実施形態に係るプログラムは、複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、仮想マシン間の通信フローの経路を明らかにすることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態に係る通信解析システムのブロック図である。
【図２】第１実施形態に係るフローコレクタのブロック図である。
【図３】第１実施形態に係るＩＤレコードの概念図である。
【図４】第１実施形態に係るフローレコードを説明するための図である。
【図５】第１実施形態に係る接続情報の一例である。
【図６】第１実施形態に係るフローコレクタのハードウェア構成を示すブロック図である。
【図７】第１実施形態に係るデータベース作成処理のフローチャートである。
【図８】第１実施形態に係る経路特定処理のフローチャートである。
【図９】第１実施形態に係るフローレコードの一例である。
【図１０】第２実施形態に係る通信解析システムのブロック図である。
【図１１】第２実施形態に係る接続情報の一例である。
【図１２】他の実施形態に係るフローコレクタの概略構成図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施形態を説明する。
［第１実施形態］
図１は、本実施形態に係る通信解析システムのブロック図である。通信解析システムは、いわゆるクラウドシステムであって、ホスト装置１０、ホスト装置２０、スイッチ３０、フローコレクタ４０を備えている。ホスト装置１０、２０は、物理的なサーバコンピュータであって、仮想的なネットワークを構築することができる。なお、図１には２台のホスト装置１０、２０が示されているが、通信解析システムは３台以上のホスト装置を備え得る。
【００１８】
ホスト装置１０内には、仮想マシン１１、仮想マシン１２、仮想スイッチ１３が配置されている。仮想マシン１１、仮想マシン１２、仮想スイッチ１３は、ホスト装置１０のプロセッサが実行するソフトウェアによって仮想的に実現されている。ホスト装置２０内には、仮想ルータ２１、仮想スイッチ２３が配置されている。仮想ルータ２１、仮想スイッチ２３は、ホスト装置２０のプロセッサが実行するソフトウェアによって仮想的に実現されている。ホスト装置２０内においても、ホスト装置１０内と同様に、１または複数の仮想マシンが配置され得る。
【００１９】
仮想マシン１１、１２は、サーバコンピュータであって、クラウドシステムの利用者に様々なサービスを提供することができる。仮想スイッチ１３は、インターフェース（以下ＩＦ）１０１、ＩＦ１０２、ＩＦ１０３を有している。仮想スイッチ１３には、ＩＦ１０１、１０２を介してそれぞれ仮想マシン１１、１２が接続されている。同様に、仮想スイッチ２３は、ＩＦ２０１、ＩＦ２０２を有している。仮想スイッチ２３には、ＩＦ２０１を介して仮想ルータ２１が接続されている。なお、仮想スイッチ１３、２３が有するＩＦの数は特に限定されない。
【００２０】
スイッチ３０は、物理的な接続装置であって、ホスト装置１０、ホスト装置２０、フローコレクタ４０を接続し、これらの装置間のデータ転送を行う。スイッチ３０は、ＩＦ３０１、ＩＦ３０２を有している。ＩＦ３０１は仮想スイッチ１３のＩＦ１０３と接続され、ＩＦ３０２は仮想スイッチ２３のＩＦ２０２と接続されている。スイッチ３０は、受信したデータ（パケット）の宛先を判断し、宛先のネットワーク装置に対してデータを送信するデータ中継機能を有している。
【００２１】
仮想マシン１１、１２は、仮想スイッチ１３を介して互いに通信を行うことができる。仮想マシン１１、１２間の通信は、仮想ルータ２１を経由して行われ得る。例えば、仮想マシン１１から送信されたデータは、仮想スイッチ１３、スイッチ３０、仮想スイッチ２３を通って、仮想ルータ２１により受信され、仮想ルータ２１から仮想スイッチ２３、スイッチ３０、仮想スイッチ１３を介して仮想マシン１２に送信され得る。
【００２２】
フローコレクタ４０は、通信解析装置であって、仮想スイッチ１３、２３、仮想ルータ２１、スイッチ３０を通過する通信フローについてのフロー情報を収集し、解析することができる。仮想スイッチ１３、２３、仮想ルータ２１、スイッチ３０のそれぞれは、フロー情報を収集するための機能を有している。フロー情報の収集は、ＮｅｔＦｌｏｗ、ＩＰＦＩＸ（Internet Protocol Flow Information Export）などのフロー集計プロトコルを用いて行うことができる。以下の説明においては、フロー集計プロトコルとしてＮｅｔＦｌｏｗを用いるものとする。フローコレクタ４０は、仮想スイッチ１３、２３、仮想ルータ２１、スイッチ３０のそれぞれからフロー情報を受信する。
【００２３】
図２は、本実施形態に係るフローコレクタ４０のブロック図である。フローコレクタ４０は、受信部４１、識別部４２、記憶部４３、取得部４４、解析部４５、出力部４６の機能を有している。受信部４１は、通信解析システムのネットワーク内で収集された複数のフロー情報を受信する。フロー情報は、仮想スイッチ１３、仮想スイッチ２３、仮想ルータ２１から送信され得る。識別部４２は、受信部４１によって受信された複数のフロー情報を識別し、仮想マシン１１、１２間における同一の通信フローを表すフロー情報の集合を特定することができる。
【００２４】
記憶部４３は、ＩＤ（Identification）管理データベース４３１、フロー情報データベース４３２を含んでいる。ＩＤ管理データベース４３１には、フロー同定キーと、該フロー同定キーに紐付けられたフローＩＤを含む複数のＩＤレコードが保存されている。図３に示すように、フロー同定キーは、フロー情報に含まれる「送信元ＩＰアドレス（srcaddr）」、「宛先ＩＰアドレス（dstaddr）」、「送信元ポート番号（srcport）」、「宛先ポート番号（dstport）」、「ＩＰプロトコル番号（prot）」、「ＴｏＳ（Type of Service）フラグ値（tos）」の６つの値を連結したものである。フロー同定キーは、複数のフロー情報を通信フローごとに分類するために用いられる。フローＩＤは、識別部４２によって決定され、同一の通信フローを表すフロー情報の集合に対し同一のフローＩＤが付与される。
【００２５】
フロー情報データベース４３２には、受信されたフロー情報に含まれていた情報と、各フロー情報に紐付けられたフローＩＤを含む複数のフローレコードが保存されている。例えば、図４に示すように、フローレコードには、「収集装置名」、「フローＩＤ」、「フロー収集時刻」、「ＶＬＡＮ（Virtual Local Area Network）番号」、「入力インターフェース番号」、「出力インターフェース番号」、「送信元ＩＰアドレス」、「宛先ＩＰアドレス」、「送信元ポート番号」、「宛先ポート番号」、「通信量」が含まれている。
【００２６】
収集装置名は、フロー情報を収集したネットワーク装置（ノード）名であり、フローＩＤは、通信フローが同一のものかを判定するための識別子である。収集装置名は、収集装置が識別可能なものであればよくＩＰアドレスであってもよい。フロー収集時刻は、通信フローを検知してフロー情報を収集した時刻である。ＶＬＡＮ番号は、収集装置が属するＶＬＡＮの番号である。入力インターフェース番号は、通信フローが入力されたインターフェース番号であり、出力インターフェース番号は、通信フローが出力されたインターフェース番号である。送信元ＩＰアドレス、宛先ＩＰアドレスは、それぞれ通信フローの送信元、宛先のＩＰアドレスである。送信元ポート番号、宛先ポート番号は、それぞれ通信フローの送信元、宛先のＴＣＰ（Transmission Control Protocol）ポート番号またはＵＤＰ（User Datagram Protocol）ポート番号である。通信量は、通信フローの通信量であって、パケット数、バイト数などで表され得る。フローレコードは、ＮｅｔＦｌｏｗが収集可能なすべての情報を含んでいてもよく、一部の情報（例えば図４に示す情報）のみを含んでいてもよい。
【００２７】
取得部４４は、通信解析システムが構成するネットワークの物理的な接続情報を取得し、記憶する。取得部４４は、ネットワーク管理システム（ＮＭＳ）から通信解析システム内のネットワーク装置同士の接続情報を取得することができる。接続情報には、接続の一端にある装置（ノード）のＩＰアドレスおよびインターフェース番号（ifIndex）と、該接続の対向（他端）にある装置のＩＰアドレスおよびインターフェース番号（ifIndex）とが１つのペアとして含まれている。本実施形態に係る接続情報の一例を図５に示す。
【００２８】
図２に戻り、解析部４５は、記憶部４３に記憶されたフロー情報を接続情報に基づいて解析し、通信フローの経路を特定することができる。より具体的には、解析部４５は、フロー情報データベース４３２から同一の通信フローを表すフロー情報（フローレコード）の集合を抽出し、該集合に基づいて、通信フローの経路情報を生成する。解析部４５は、経路情報などの解析結果を記憶部４３に格納してもよい。出力部４６は、解析部４５が生成した解析結果を外部装置またはフローコレクタ４０の表示装置（不図示）に出力することができる。
【００２９】
図６は、本実施形態に係るフローコレクタ４０のハードウェア構成を示すブロック図である。フローコレクタ４０は、ＣＰＵ（Central Processing Unit）４０１、ＲＯＭ（Read Only Memory）４０２、ＲＡＭ（Random Access Memory）４０３、ＨＤＤ（Hard Disk Drive）４０４、入出力ＩＦ４０５、バス４０６を備えている。ＣＰＵ４０１、ＲＯＭ４０２、ＲＡＭ４０３、ＨＤＤ４０４、入出力ＩＦ４０５は、バス４０６に接続されている。
【００３０】
ＣＰＵ４０１は、ＲＯＭ４０２、ＨＤＤ４０４から所定のプログラムを読み出し、実行することにより、フローコレクタ４０の各部の機能を実現する。また、ＣＰＵ４０１は、処理で得られたデータをＨＤＤ４０４に記憶させるとともに、入出力ＩＦ４０５を介して外部とデータの交換を行うことができる。ＲＡＭ４０３は、ＣＰＵ４０１によって実行されるプログラムの作業用メモリとして使用され、処理中のデータ、ＲＯＭ４０２、ＨＤＤ４０４から読み出されたデータなどを一時的に記憶する。
【００３１】
ＨＤＤ４０４は、フロー情報に関するデータベースの他、該データベースを作成するためのプログラム、通信フローの経路を特定するためのプログラムなど、フローコレクタ４０の機能を実現するためのプログラム、データなどを格納する。上述のＩＤ管理データベース４３１、フロー情報データベース４３２は、ＨＤＤ４０４に作成され得る。入出力ＩＦ４０５は、スイッチ３０に接続され、スイッチ３０とのデータ通信を制御する。入出力ＩＦ４０５は外部出力端子を含み、外部出力端子に接続された外部装置にデータを出力することができる。
【００３２】
フローコレクタ４０のハードウェア構成は、上述した構成に限定されるものではなく、種々の構成とすることができる。例えば、フローコレクタ４０は、ＨＤＤ４０４に代えてまたは加えてフラッシュメモリなどの不揮発性の記憶装置を備えていてもよく、メモリカードの可搬記憶媒体を着脱可能に備えていてもよい。また、フローコレクタ４０は、液晶ディスプレイなどの表示装置、キーボード、マウス、タッチパネルなどの入力装置を備えていてよい。
【００３３】
図７は、本実施形態に係るデータベース作成処理のフローチャートである。データベース作成処理は、フローコレクタ４０による通信解析方法の一部である。まず、ＣＰＵ４０１は、フロー情報を受信したか否かを判断する（ステップＳ１０１）。すなわち、ＣＰＵ４０１は、仮想スイッチ１３、２３、仮想ルータ２１、スイッチ３０のいずれかから、フロー情報を受信したか否かを判断する。フロー情報が受信されない場合（ステップＳ１０１でＮＯ）、ＣＰＵ４０１は、フロー情報が受信されるまで待機する。
【００３４】
フロー情報が受信された場合（ステップＳ１０１でＹＥＳ）、ＣＰＵ４０１は、フロー情報のキーを作成する（ステップＳ１０２）。具体的には、ＣＰＵ４０１は、受信したフロー情報に含まれる送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、ＩＰプロトコル番号、ＴｏＳフラグ値を連結することにより、フロー同定キーを作成する（図３参照）。
【００３５】
続いて、ＣＰＵ４０１は、同一のフロー同定キーが存在するか否かを判断する（ステップＳ１０３）。すなわち、ＣＰＵ４０１は、ステップＳ１０２で作成したフロー同定キーを用いてＩＤ管理データベース４３１を検索し、同一のフロー同定キーを有するＩＤレコードがＩＤ管理データベース４３１に保存されているか否かを判断する。
【００３６】
同一のフロー同定キーが存在する場合（ステップＳ１０３でＹＥＳ）、ＣＰＵ４０１は、フロー同定キーに紐付けられたフローＩＤをＩＤ管理データベース４３１から取得し、該フローＩＤを新たに作成したフローレコードに付与する（ステップＳ１０４）。
【００３７】
一方、同一のフロー同定キーが存在しない場合（ステップＳ１０３でＮＯ）、新規に払い出されたフローＩＤをフロー同定キーに紐付けて新たにＩＤレコードを作成し、ＩＤ管理データベース４３１に追加する。そして、ＣＰＵ４０１は、新規フローＩＤを新たに作成したフローレコードに付与する（ステップＳ１０５）。
【００３８】
続いて、ＣＰＵ４０１は、フロー情報に含まれていた情報をフローレコードに含めるとともに、該フローレコードをフロー情報データベース４３２に保存する(ステップＳ１０６）。ＣＰＵ４０１は、ステップＳ１０１に戻り、新たなフロー情報を待機する。
【００３９】
図８は、本実施形態に係る経路特定処理のフローチャートである。経路特定処理は、フローコレクタ４０による通信解析方法の一部である。まず、ＣＰＵ４０１は、ＮＭＳからネットワークの接続情報を取得する（ステップＳ２０１）。ＣＰＵ４０１は、取得した接続情報をＲＡＭ４０３に一時的に記憶してもよく、ＨＤＤ４０４に格納してもよい。また、ＣＰＵ４０１は、接続情報を定期的に取得してＨＤＤ４０４に格納しておき、ステップＳ２０１において、ＨＤＤ４０４から読み出すようにしてもよい。
【００４０】
続いて、ＣＰＵ４０１は、経路の特定対象となるフロー情報の集合を取得する（ステップＳ２０２）。すなわち、ＣＰＵ４０１は、フロー情報データベース４３２を検索し、ユーザにより指示された所定の条件に合致するフローレコードを取得する。ユーザは、所定の条件として、通信フローを解析したい仮想マシン名（ＩＰアドレス）、収集時刻の範囲などを指示することができる。ステップＳ２０２において、ＣＰＵ４０１は、図９に示すフローレコードの集合を取得したものとする。なお、ステップＳ２０１とステップＳ２０２の処理順は任意であり、並行して処理が実行されてもよい。
【００４１】
次に、ＣＰＵ４０１は、フロー情報の集合の中から任意のフロー情報を選択する（ステップＳ２０３）。すなわち、ＣＰＵ４０１は、ステップＳ２０２において取得した複数のフローレコードの中から１つのフローレコードを選択する。例えば、ＣＰＵ４０１は、図９のフローレコード５０１を選択する。
【００４２】
続いて、ＣＰＵ４０１は、通信フローが出力されたインターフェース番号を取得する（ステップＳ２０４）。すなわち、ＣＰＵ４０１は、フローレコード５０１の出力インターフェース番号１０３を取得する。そして、ＣＰＵ４０１は、取得したインターフェース番号の接続先が通信のエンドポイントか否か、すなわち仮想マシンか否かを判断する（ステップＳ２０５）。
【００４３】
例えば、ＣＰＵ４０１は、図５に示す接続情報から、インターフェース１０３の接続先がスイッチ３０であると判断する。この場合（ステップＳ２０５でＮＯ）、ＣＰＵ４０１は、接続先のインターフェース番号を取得する（ステップＳ２０６）。すなわち、ＣＰＵ４０１は、スイッチ３０のインターフェース番号３０１を取得する。
【００４４】
続いて、ＣＰＵ４０１は、ステップＳ２０６において取得したインターフェース番号から入力された通信フローを特定する（ステップＳ２０７）。すなわち、ＣＰＵ４０１は、図９のフローレコードの集合を検索し、入力インターフェース番号が３０１のフローレコード５０６を取得する。
【００４５】
ＣＰＵ４０１は、ステップＳ２０４に戻り、ステップＳ２０７において特定した通信フローが出力されたインターフェース番号を取得する。すなわち、ＣＰＵ４０１は、フローレコード５０６の出力インターフェース番号３０２を取得する。そして、ＣＰＵ４０１は、図５に示す接続情報から、インターフェース３０２の接続先が仮想スイッチ２３であると判断する。この時点で、ＣＰＵ４０１は、フローＩＤ１によって表される通信フローが、仮想スイッチ１３、スイッチ３０、仮想スイッチ２３を通過していることを特定することができる。
【００４６】
ＣＰＵ４０１は、このようなインターフェース番号のマッチング処理（ステップＳ２０４〜ステップＳ２０７の処理）を繰り返し実行することで、仮想マシン１２までの通信フローの経路を特定することができる。すなわち、仮想スイッチ１３、スイッチ３０、仮想スイッチ２３、仮想ルータ２１、仮想スイッチ２３、スイッチ３０、仮想スイッチ１３、仮想マシン１２の順で経路が特定される。ＣＰＵ４０１は、インターフェース番号の接続先が仮想マシンであると判断した場合（ステップＳ２０５でＹＥＳ）、特定した経路情報をＨＤＤ４０４に格納する。
【００４７】
さらに、ＣＰＵ４０１は、ステップＳ２０４〜ステップＳ２０７と同様の処理を繰り返し実行することで、ステップＳ２０３において選択したフロー情報の入力側の経路を特定する。すなわち、ＣＰＵ４０１は、ステップＳ２０４において、通信フローが入力されたインターフェース番号を取得し、ステップＳ２０７において、取得したインターフェース番号から出力された通信フローを特定する。これにより、仮想マシン１１から仮想スイッチ１３まで通信フローの経路が特定される。ＣＰＵ４０１は、仮想マシン１１から仮想マシン１２までの全体の経路をＨＤＤ４０４に格納するとともに、表示装置、記憶媒体などに出力する（ステップＳ２０８）。
【００４８】
本実施形態によれば、複数のネットワーク装置で収集されたフロー情報の中から、同一の通信フローに関するフロー情報を識別し、該フロー情報とネットワークの接続情報に基づいて、通信フローの経路を特定することが可能となる。これにより、システム上を流れる通信フローの経路、経路に関する統計量などの情報を可視化することができる。また、フロー情報の識別は、フロー情報に含まれるＩＰヘッダ、ＴＣＰヘッダまたはＵＤＰヘッダに関する項目に基づいて行われ、複数箇所で収集された異なる通信フローを表す複数のフロー情報を、通信フローごとに一意に同定することができる。
【００４９】
［第２実施形態］
上述の実施形態における通信解析システムでは、システム上のすべてのネットワーク装置（ノード）においてフロー情報が収集できる構成であったが、フロー情報が収集できないノードが部分的に含まれていてもよい。本実施形態における通信解析システムについて、第１実施形態に係る通信解析システムと異なる構成を中心に説明する。
【００５０】
図１０は、本実施形態に係る通信解析システムのブロック図である。図１０には、通信解析システムのネットワークの一部が示されており、フローコレクタ４０およびその他のネットワーク装置は図示されていない。通信解析システムは、仮想マシン１４、仮想スイッチ１５、仮想マシン１６、仮想スイッチ１７、スイッチ３１〜３３を備えている。
【００５１】
仮想スイッチ１５はＩＦ１５１〜１５３を有し、ＩＦ１５１〜１５３は、それぞれスイッチ３１、仮想マシン１４、スイッチ３３に接続されている。仮想スイッチ１７はＩＦ１７１〜１７３を有し、ＩＦ１７１〜１７３は、それぞれスイッチ３２、仮想マシン１６、スイッチ３３に接続されている。仮想スイッチ１５、１７は、スイッチ３３を経由するルートと、スイッチ３１、３２を経由するルートの２つのルートで接続されている。なお、スイッチ３１〜３３が有するＩＦの図示は省略されている。
【００５２】
スイッチ３１〜３３においては、フロー集計プロトコルは動作しておらず、フロー情報を取得することができない。この場合、取得部４４は、ＮＭＳから取得した接続情報を、仮想スイッチ１５、１７がスイッチ３１〜３３を経由することなく直接接続されているように書き換える。これにより、スイッチ３１〜３３の部分をブラックボックスとして解析することが可能となる。仮想スイッチ１５、１７に関する接続情報の一例を図１１に示す。
【００５３】
図１１の接続情報によれば、仮想スイッチ１５、１７間の詳細な経路、すなわちスイッチ３１〜３３の接続情報は不明であるが、スイッチ３１〜３３の部分を除くネットワーク全体のフロー経路を解析することができる。このように、本実施形態の接続情報は、ネットワーク全体のフロー経路の理解に充分に役立つ情報となり得る。また、本実施形態の手法を応用することで、例えばＶｘＬＡＮ（Virtual eXtensible Local Area Network）のような通信経路の途中でトンネリングを行う通信に対する解析においても、トンネル内の詳細経路以外は経路の可視化が可能である。
【００５４】
［他の実施形態］
図１２は、上述の実施形態におけるフローコレクタ（通信解析装置）４０の概略構成図である。通信解析装置４０は、受信部４１、識別部４２、解析部４５を備えている。受信部４１は、複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信する。識別部は、複数のフロー情報の中から、仮想マシン間の同一の通信フローを表すフロー情報の集合を特定する。解析部４５は、フロー情報の集合およびネットワークの接続情報に基づいて、通信フローの経路を特定する。
【００５５】
本発明は、上述の実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲において適宜変更可能である。例えば、フロー同定キーは、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、ＩＰプロトコル番号、ＴｏＳフラグ値の６つの値に限定されない、例えば、ＶＬＡＮのＩＤを追加してもよい。これにより、仮想マシン１１と仮想マシン１２が互いに異なるＶＬＡＮに属している場合に発生し得るＩＰアドレスの重複を排除することができる。また、フロー同定キーを用いてフロー情報を識別する際に、収集時刻を考慮してもよい。例えば、収集時刻の差が、所定の通信遅延時間の範囲内に無い場合には、同一の通信フローではないと判断することができる。
【００５６】
上述の実施形態の機能を実現するように該実施形態の構成を動作させるプログラム（より具体的には、図７、図８に示す方法をコンピュータに実行させるプログラム）を記録媒体に記録させ、該記録媒体に記録されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も各実施形態の範疇に含まれる。すなわち、コンピュータ読取可能な記録媒体も各実施形態の範囲に含まれる。また、上述のプログラムが記録された記録媒体はもちろん、そのプログラム自体も各実施形態に含まれる。
【００５７】
該記録媒体としては例えばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性メモリカード、ＲＯＭを用いることができる。また該記録媒体に記録されたプログラム単体で処理を実行しているものに限らず、他のソフトウェア、拡張ボードの機能と共同して、ＯＳ上で動作して処理を実行するものも各実施形態の範疇に含まれる。
【００５８】
上述の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５９】
（付記１）
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信する受信部と、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定する識別部と、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定する解析部とを備える通信解析装置。
【００６０】
（付記２）
前記フロー情報は、ＩＰ（Internet Protocol）ヘッダ、ＴＣＰ（Transmission Control Protocol）ヘッダまたはＵＤＰ（User Datagram Protocol）ヘッダに関する項目を含み、前記識別部は、前記項目に基づいて前記フロー情報の集合を特定する付記１に記載の通信解析装置。
【００６１】
（付記３）
前記識別部は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、ＩＰプロトコル番号、ＴｏＳ（Type of Service）フラグ値の組が合致するフロー情報を同一の通信フローと判断する付記２に記載の通信解析装置。
【００６２】
（付記４）
前記識別部は、前記フロー情報の集合に対して同一の識別子を付与する付記１乃至３のいずれかに記載の通信解析装置。
【００６３】
（付記５）
前記識別子が付与された前記複数のフロー情報を記憶する記憶部を備え、
前記解析部は、前記識別子に基づいて前記記憶部から前記フロー情報の集合を抽出する付記４に記載の通信解析装置。
【００６４】
（付記６）
前記フロー情報は、前記仮想マシン間の通信を中継する複数のノードのそれぞれにおいて収集され、収集が行われた前記ノードのＩＰアドレスおよびインターフェース番号を含み、
前記接続情報は、接続されている前記ノードのペアまたは前記ノードと前記仮想マシンのペアのそれぞれのＩＰアドレスおよびインターフェース番号を含む付記１乃至５のいずれかに記載の通信解析装置。
【００６５】
（付記７）
前記解析部は、前記フロー情報に含まれるインターフェース番号と前記接続情報に含まれるインターフェース番号とをマッチングさせることで前記通信フローの経路を特定する付記６に記載の通信解析装置。
【００６６】
（付記８）
前記ノードは、仮想スイッチまたは仮想ルータである付記６または７に記載の通信解析装置。
【００６７】
（付記９）
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとを備える通信解析方法。
【００６８】
（付記１０）
複数の仮想マシンを含むネットワーク内で収集された複数のフロー情報を受信するステップと、
前記複数のフロー情報の中から、前記仮想マシン間の同一の通信フローを表すフロー情報の集合を特定するステップと、
前記フロー情報の集合および前記ネットワークの接続情報に基づいて、前記通信フローの経路を特定するステップとをコンピュータに実行させるプログラム。
【符号の説明】
【００６９】
１０  ホスト装置
１１、１２  仮想マシン
１３  仮想スイッチ
１０１、１０２、１０３  インターフェース
２０  ホスト装置
２１  仮想ルータ
２３  仮想マシン
２３  仮想スイッチ
２０１、２０２  インターフェース
３０  スイッチ
３０１、３０２  インターフェース
４０  フローコレクタ
４１  受信部
４２  識別部
４３  記憶部
４３１  ＩＤ管理データベース
４３２  フロー情報データベース
４４  取得部
４５  解析部
４６  出力部
５０１〜５０７  フローレコード
【図１】
2018170639.tif 000003
【図２】
2018170639.tif 000004
【図３】
2018170639.tif 000005
【図４】
2018170639.tif 000006
【図５】
2018170639.tif 000007
【図６】
2018170639.tif 000008
【図７】
2018170639.tif 000009
【図８】
2018170639.tif 000010
【図９】
2018170639.tif 000011
【図１０】
2018170639.tif 000012
【図１１】
2018170639.tif 000013
【図１２】
2018170639.tif 000014