(57)【要約】【課題】サンプリング対象のデータフローに属するパケットの推定を高速化すること。【解決手段】記憶部１１は、サービスを提供し互いに通信するサービスノード２０，２０ａ，…とサービスノード２０，２０ａ，…からサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信するコレクタノード３０とを含む複数のノード間で送信されるパケットを記憶する。処理部１２は、パケットを収集して記憶部１１に格納し、当該パケットのうち、コレクタノード３０を宛先とする複数の通知パケットを特定する。処理部１２は、複数の通知パケットの複数の送信元アドレスを取得し、複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出する。処理部１２は、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する。【選択図】図１
2020150335.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
サービスを提供し互いに通信する複数の第１のノードと前記複数の第１のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第２のノードとを含む複数のノード間で送信されるパケットを収集し、
収集したパケットのうち、前記第２のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、
取得した前記複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する、
処理を実行させるパケット解析プログラム。
【請求項２】
前記複数の候補パケットそれぞれの送信元アドレスおよび宛先アドレスを辿ることで前記サンプリング対象のデータフローの候補である複数の候補フローを生成し、前記複数の通知パケットの送信元のノードの第１の数と、候補フローにおける候補パケットを転送するノードの第２の数との前記候補フローごとの比較に応じて、前記複数の候補フローのうち前記サンプリング対象のデータフローを特定する、
請求項１記載のパケット解析プログラム。
【請求項３】
前記第１の数と前記第２の数とが同じである前記候補フローを前記サンプリング対象のデータフローと特定する、
請求項２記載のパケット解析プログラム。
【請求項４】
前記第１の数と前記第２の数とが同じである２以上の候補フローがある場合、前記複数の通知パケットの第１のタイムスタンプと、前記２以上の候補フローそれぞれの第２のタイムスタンプとの比較に応じて、前記２以上の候補フローのうち前記サンプリング対象のデータフローを特定する、
請求項３記載のパケット解析プログラム。
【請求項５】
前記第１のタイムスタンプに最も近い前記第２のタイムスタンプに対応する前記候補フローを前記サンプリング対象のデータフローと特定する、
請求項４記載のパケット解析プログラム。
【請求項６】
サービスを提供し互いに通信する複数の第１のノードと前記複数の第１のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第２のノードとを含む複数のノード間で送信されるパケットを記憶する記憶部と、
前記複数のノード間で送信されるパケットを収集して前記記憶部に格納し、収集したパケットのうち、前記第２のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、取得した前記複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する処理部と、
を有するパケット解析装置。
【請求項７】
コンピュータが、
サービスを提供し互いに通信する複数の第１のノードと前記複数の第１のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第２のノードとを含む複数のノード間で送信されるパケットを収集し、
収集したパケットのうち、前記第２のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、
取得した前記複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する、
パケット解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケット解析プログラム、パケット解析装置およびパケット解析方法に関する。
【背景技術】
【０００２】
現在、コンピュータなどの複数の情報処理装置を含む情報処理システムが利用されている。各情報処理装置は、有線または無線でネットワークに接続され、相互に通信する。
例えば、１以上のホストコンピュータのコンテナ基盤上で複数のサービスを実行する複数のコンテナを動作させ、サービス間の連携により、あるタスクの処理を実行する情報処理システムの提案がある（例えば、特許文献１）。提案の情報処理システムは、全てのサービスの通信データを取得し、複数のサービスによって構成されるタスクに対応する、サービス間の通信のフローを基に、サービスの親子関係を推定するコンピュータを有する。当該コンピュータは、あるサービスから別のサービスへの要求の送信から応答の受信までの一連の処理を一単位としてスパンと呼び、マイクロサービスの親子関係をスパン同士の親子関係で表す。例えば、第１のサービスから第２のサービスへの通信に対応する第１のスパンが、第２のサービスから第３のサービスへの通信に対応する第２のスパンによって呼び出される場合、第１のスパンから第２のスパンが子スパンとなり、第２のスパンから第１のスパンが親スパンとする親子関係を推定する。この提案では、クライアントの要求に対し固有のトレースＩＤを振って、トレースＩＤを次の通信に順次引き継いでいくことで、サービス間の関係を把握することも考えられている。
【０００３】
なお、ネットワーク上で転送されるパケットストリームから、特定のパケットストリームを選別し、特定のパケットストリームに含まれる複数のキーワードに基づき、各キーワードのスコアを各要素とする特徴ベクトルを生成するデータフロー解析装置の提案もある（例えば、特許文献２）。提案のデータフロー解析装置は、特徴ベクトルの系列に対してキーワードの発生確率を時系列的に保持するモデルに当てはめることによって、ユーザの潜在的な興味状態の変化を系列として出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−８１４４０号公報
【特許文献２】特開２０１１−４８４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
情報処理システムにおいて、複数のノードにより提供される複数のサービスの連携による一連の処理の性能をモニタリングすることがある。ところが、情報処理システムでは、サービス間で大量のデータが通信され得る。全てのデータを取得して解析するには多くの時間を要し困難である。そこで、一部のデータフローに絞ってサンプリングすることが考えられる。サンプリングでは、各ノードにおいて、複数のサービスを跨いで通信される通信データがサンプリング対象のデータフローに属するものであることを識別可能にすることがある。
【０００６】
例えば、各ノードは、サンプリング対象のデータフローを識別可能にするため、当該データフローに属する通信データのヘッダ（例えば、ＨＴＴＰ（Hypertext Transfer Protocol）ヘッダなど）に、サンプリング対象であることを示す識別情報を挿入し得る。各ノードは、次のサービスに送る通信データへの識別情報の挿入や、受信した通信データに対する識別情報の除去を行いながら一連の処理を実行する。それとともに、各ノードは、当該識別情報を含む通信データの受信または送信を、モニタリングを行う監視ノードに通知し得る。すると、例えば監視ノードは、各ノードからの通知の受信時刻の時間差によって、複数のサービスの連携に伴う一連の処理の性能を計測し得る。
【０００７】
一方、上記のような複数のサービスの連携に伴う性能の計測結果に応じて、サンプリング対象となったデータフローに属する、通信データのプロトコルのレイヤ（例えば、ＨＴＴＰのメッセージレイヤ）よりも低いＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）のパケットレイヤにおけるパケットを解析することがある。ＴＣＰ／ＩＰのレイヤにおける通信路などの問題を分析するためである。そのために、例えば、サービス間で通信されたパケットを収集しておき、収集したパケットを基に、通信データのヘッダにおける識別情報の解析を行ってデータフローを構成するパケットを特定することが考えられる。しかし、収集される大量のパケットに対して、通信データのヘッダの構築や解析を行っていると、サンプリング対象のデータフローに属するパケットの推定に時間がかかる。
【０００８】
１つの側面では、本発明は、サンプリング対象のデータフローに属するパケットの推定を高速化できるパケット解析プログラム、パケット解析装置およびパケット解析方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、パケット解析プログラムが提供される。パケット解析プログラムは、コンピュータに、サービスを提供し互いに通信する複数の第１のノードと複数の第１のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第２のノードとを含む複数のノード間で送信されるパケットを収集し、収集したパケットのうち、第２のノードを宛先とする複数の通知パケットを特定し、特定した複数の通知パケットの複数の送信元アドレスを取得し、取得した複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する、処理を実行させる。
【００１０】
また、１つの態様では、パケット解析装置が提供される。
また、１つの態様では、パケット解析方法が提供される。
【発明の効果】
【００１１】
１つの側面では、サンプリング対象のデータフローに属するパケットの推定を高速化できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のパケット解析装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】解析装置のハードウェア例を示すブロック図である。
【図４】スパンの例を示す図である。
【図５】ＨＴＴＰヘッダに追加されるトレース情報の例を示す図である。
【図６】スパンコレクタによるスパン情報の収集例を示す図である。
【図７】パケット群に対するＨＴＴＰヘッダの例を示す図である。
【図８】パケットに含まれるヘッダの例を示す図である。
【図９】解析装置の機能例を示すブロック図である。
【図１０】フィルタテーブルの例を示す図である。
【図１１】トレース推定情報テーブルの例を示す図である。
【図１２】候補トレース管理テーブルの例を示す図である。
【図１３】スパン管理テーブルの例を示す図である。
【図１４】マッチングタイミングの予測例を示す図である。
【図１５】レイヤ間の関係を示す図である。
【図１６】情報処理システムの処理例を示す図である。
【図１７】パケット収集例を示すフローチャートである。
【図１８】パケット収集例（続き）を示すフローチャートである。
【図１９】パケット収集例（続き）を示すフローチャートである。
【図２０】パケットの特定例を示すフローチャートである。
【図２１】候補トレースのマッチングの第１の例を示す図である。
【図２２】解析シーケンスの第１の例を示す図である。
【図２３】候補トレースのマッチングの第２の例を示す図である。
【図２４】解析シーケンスの第２の例を示す図である。
【図２５】解析装置の他のハードウェア例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態のパケット解析装置を示す図である。
パケット解析装置１０は、サービスノード２０，２０ａ，２０ｂ，２０ｃ，…およびコレクタノード３０とネットワーク４０を介して接続される。サービスノード２０，２０ａ，２０ｂ，２０ｃ，…およびコレクタノード３０のそれぞれは、物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。サービスノード２０，２０ａ，２０ｂ，２０ｃ，…およびコレクタノード３０のそれぞれは、物理マシンのコンテナ基盤上のコンテナと呼ばれるコンポーネントにより実現されてもよい。
【００１５】
サービスノード２０，２０ａ，２０ｂ，２０ｃ，…それぞれは、種々のサービスを提供する。サービスノード２０，２０ａ，２０ｂ，２０ｃ，…それぞれは、ユーザの要求に応じて、複数のサービスを連携させた処理を行い、処理結果を応答する。例えば、サービスノード２０は、ゲートウェイとして機能し、ユーザが操作するクライアントコンピュータ（図示を省略している）から要求を受け付け、要求に応じて次に通信すべきサービスノードとの連携を行う。サービスノード２０，２０ａ，２０ｂ，２０ｃ，…のうちの何れのサービスノードの組が連携するかは、ユーザの要求に応じて異なる。ユーザの１つの要求に対し、当該要求に対する応答が生成されるまでに、各サービスノードの間で送受信される一連の通信データ（あるいは通信データを分割した分割データを運ぶためのパケット）の流れを、「データフロー」と呼ぶ。通信データは、例えば、ＯＳＩ（Open System Interconnection）参照モデルにおけるレイヤ７のプロトコル（例えば、ＨＴＴＰやＨＴＴＰＳ（HTTP Secure）など）により送受信され得る。
【００１６】
コレクタノード３０は、サービスノード２０，２０ａ，２０ｂ，２０ｃ，…が提供するサービスの連携による処理性能をモニタリングする。ただし、サービスノード２０，２０ａ，２０ｂ，２０ｃ，…の間では、大量の通信データが送受信されるため、サンプリング対象の一部のデータフローに絞ってモニタリングを行う。サンプリング対象のデータフローは、例えばゲートウェイであるサービスノード２０（あるいは図示を省略している他のノード）により、ユーザの所定回数の要求ごとに生じたデータフロー、または、所定の時間間隔ごとのユーザの要求に対して生じたデータフローなどのように決定される。
【００１７】
例えば、サービスノード２０は、サンプリング対象のデータフローに属する通信データのヘッダ（ＨＴＴＰヘッダなど）に、サンプリング対象であることを示す所定の識別情報を挿入する。すると、当該識別情報が挿入された通信データを受信した他のサービスノードは、当該識別情報により、受信した通信データがサンプリング対象のデータフローであると判断できる。当該他のサービスノードは、通信データのヘッダから識別情報を除去し、自ノードによる処理を実行して、処理結果を含む通信データを生成し、生成した通信データに識別情報を追加して、当該通信データを次のサービスノードに転送する。
【００１８】
サービスノード２０，２０ａ，２０ｂ，２０ｃ，…それぞれは、サンプリング対象の通信データを受信したタイミングや、次のサービスノードに通信データを送信したタイミングなどに、所定の通知パケットをコレクタノード３０に送信する。通知パケットは、サンプリング対象の通信データ（あるいはパケット）が転送されたことをコレクタノード３０に通知するためのパケットである。コレクタノード３０は、サンプリング対象のデータフローに対する各通知パケットの受信時刻を記録し、記録した受信時刻の時間差によって、サンプリング対象のデータフローに対応する一連のサービスの連携による処理性能を計測し得る。
【００１９】
このとき、計測された処理性能によっては、サンプリング対象のデータフローに対応するパケットを取得し、分析したいことがある。コレクタノード３０による上記のモニタリングでは、アプリケーションレベルでの遅延を分析し得るものの、ネットワーク４０の通信路に起因する遅延などを分析するには不十分だからである。
【００２０】
そこで、パケット解析装置１０は、サービスノード間、および、各サービスノードとコレクタノード３０との間で通信されるパケットを収集し、収集したパケットからサンプリング対象のデータフローに対応するパケット群を推定する機能を提供する。
【００２１】
記憶部１１は、ＲＡＭ（Random Access Memory）やＴＣＡＭ（Ternary Content Addressable Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１２はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００２２】
記憶部１１は、コレクタノード３０のアドレスの情報を記憶する。アドレスの情報は、例えば、コレクタノード３０のＩＰ（Internet Protocol）アドレスの情報である。また、アドレスの情報は、ＩＰアドレスに加えて、ＴＣＰのポート番号を含んでもよい。また、記憶部１１は、処理部１２により収集されたパケットを記憶する。収集されたパケットには、パケット解析装置１０への当該パケットの到着時刻を示すタイムスタンプが付与される。
【００２３】
処理部１２は、サービスノード２０，２０ａ，２０ｂ，２０ｃ，…（複数の第１のノード）とコレクタノード３０（第２のノード）とを含む複数のノード間で送信されるパケットを収集し、記憶部１１に格納する。サービスノード２０，２０ａ，２０ｂ，２０ｃ，…は、前述のように、サービスを提供し、互いに通信する。コレクタノード３０は、前述のように、各サービスノードからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する。
【００２４】
例えば、ネットワーク４０における所定のスイッチ（図示を省略している）が、サービスノード２０，２０ａ，２０ｂ，２０ｃ，…の間、および、各サービスノードとコレクタノード３０との間で送受信されるパケットを複製する。当該スイッチは、複製したパケットをパケット解析装置１０に送る。処理部１２は、スイッチにより複製されたパケットを受信し、受信したパケットに現時刻（到着時刻）の情報（タイムスタンプ）を付与して記憶部１１に格納する。
【００２５】
ここで、一例として、記憶部１１に記憶されるパケットは、データフローｆ１，ｆ２，ｆ３に対応するパケット群、および、通知パケット群ｎ１を含む。シーケンス図Ａ１は、これらのパケットの各ノードによる送受信タイミング（ただし、パケット解析装置１０により付与されたタイムスタンプによって推定される送受信タイミング）を示す。シーケンス図Ａ１の上側から下側へ向かう方向が時間の正方向である。
【００２６】
データフローｆ１は、要求ｆ１１，ｆ１２および応答ｆ１３，ｆ１４に対応するパケット群を含む。要求ｆ１１は、サービスノード２０からサービスノード２０ｂへの要求である。要求ｆ１２は、要求ｆ１１に応じて送信される、サービスノード２０ｂからサービスノード２０ｃへの要求である。応答ｆ１３は、サービスノード２０ｃからサービスノード２０ｂへの応答である。応答ｆ１４は、サービスノード２０ｂからサービスノード２０への応答である。
【００２７】
データフローｆ２は、要求ｆ２１，ｆ２２，ｆ２３および応答ｆ２４，ｆ２５，ｆ２６に対応するパケット群を含む。要求ｆ２１は、サービスノード２０からサービスノード２０ａへの要求である。要求ｆ２２は、要求ｆ２１に応じて送信される、サービスノード２０ａからサービスノード２０ｂへの要求である。要求ｆ２３は、要求ｆ２２に応じて送信される、サービスノード２０ｂからサービスノード２０ｃへの要求である。応答ｆ２４は、サービスノード２０ｃからサービスノード２０ｂへの応答である。応答ｆ２５は、サービスノード２０ｂからサービスノード２０ａへの応答である。応答ｆ２６は、サービスノード２０ａからサービスノード２０への応答である。
【００２８】
データフローｆ３は、要求ｆ３１，ｆ３２，ｆ３３および応答ｆ３４，ｆ３５，ｆ３６に対応するパケット群を含む。要求ｆ３１は、サービスノード２０からサービスノード２０ａへの要求である。要求ｆ３２は、要求ｆ３１に応じて送信される、サービスノード２０ａからサービスノード２０ｂへの要求である。要求ｆ３３は、要求ｆ３２に応じて送信される、サービスノード２０ｂからサービスノード２０ｃへの要求である。応答ｆ３４は、サービスノード２０ｃからサービスノード２０ｂへの応答である。応答ｆ３５は、サービスノード２０ｂからサービスノード２０ａへの応答である。応答ｆ３６は、サービスノード２０ａからサービスノード２０への応答である。
【００２９】
通知パケット群ｎ１は、パケットｎ１１，ｎ１２，ｎ１３，ｎ１４を含む。パケットｎ１１は、サービスノード２０からコレクタノード３０への通知パケットである。パケットｎ１２は、サービスノード２０ａからコレクタノード３０への通知パケットである。パケットｎ１３は、サービスノード２０ｂからコレクタノード３０への通知パケットである。パケットｎ１４は、サービスノード２０ｃからコレクタノード３０への通知パケットである。
【００３０】
処理部１２は、収集したパケットのうち、コレクタノード３０を宛先とする複数の通知パケットを特定する。前述のように、コレクタノード３０のアドレスの情報は、記憶部１１に予め格納されている。例えば、処理部１２は、収集したパケットのＩＰヘッダに含まれる宛先ＩＰアドレスを参照して、コレクタノード３０のアドレスを宛先アドレスとするパケットを、通知パケットと特定する。なお、パケットの宛先は、パケットの宛先ＩＰアドレスと、パケットのＴＣＰヘッダに含まれる宛先ポート番号との組み合わせによって決定されてもよい。
【００３１】
例えば、処理部１２は、シーケンス図Ａ１で示される収集パケットから、コレクタノード３０を宛先とするパケットｎ１１，ｎ１２，ｎ１３，ｎ１４それぞれを通知パケットと特定する。
【００３２】
処理部１２は、特定した複数の通知パケットの複数の送信元アドレスを取得する。例えば、処理部１２は、特定した通知パケットのＩＰヘッダに含まれる送信元アドレスを取得する。通知パケットは、サンプリング対象のデータフローに対応するパケットが転送された際に、何れかのサービスノードによって送信される。よって、ここで取得された送信元アドレスは、当該データフローに対応するパケットの転送に関与したサービスノードのアドレスを示す。
【００３３】
例えば、処理部１２は、パケットｎ１１の送信元アドレスとして、サービスノード２０のアドレスを取得する。処理部１２は、パケットｎ１２の送信元アドレスとして、サービスノード２０ａのアドレスを取得する。処理部１２は、パケットｎ１３の送信元アドレスとして、サービスノード２０ｂのアドレスを取得する。処理部１２は、パケットｎ１４の送信元アドレスとして、サービスノード２０ｃのアドレスを取得する。
【００３４】
処理部１２は、取得した複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出する。候補パケットは、サンプリング対象のデータフローに対応するパケットの候補である。前述のように、処理部１２により取得された複数の送信元アドレスは、何れもサンプリング対象のデータフローに対応するパケットの転送に関与したサービスノードのアドレスを示す。したがって、当該複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする候補パケットは、サンプリング対象のデータフローに対応するパケットである可能性があると推定される。一方、当該複数の送信元アドレス以外のアドレスを送信元または宛先とするパケットは、サンプリング対象のデータフローに対応するものではない（候補外）と推定される。
【００３５】
例えば、シーケンス図Ａ１で示される収集パケットに対して、処理部１２は、サービスノード２０，２０ａ，２０ｂ，２０ｃそれぞれのアドレスを取得する。データフローｆ１，ｆ２，ｆ３に属する各パケットは、送信元および宛先が何れも、サービスノード２０，２０ａ，２０ｂ，２０ｃのアドレスに相当する。したがって、データフローｆ１，ｆ２，ｆ３に属する各パケットは候補パケットである。
【００３６】
処理部１２は、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する。例えば、処理部１２は、候補パケットの送信元アドレスおよび宛先アドレスの組、および、候補パケットの時系列に基づいて、データフローｆ１，ｆ２，ｆ３を検出する。そして、処理部１２は、データフローｆ１，ｆ２，ｆ３のうち、パケットｎ１１，ｎ１２，ｎ１３，ｎ１４の送信元である４つのサービスノードが関与するデータフローを候補フローとし、それ以外のデータフローを候補外とする。シーケンス図Ａ１の例では、データフローｆ１は、関与するサービスノードが３つであるため、候補外となる。
【００３７】
候補フローが１つの場合、処理部１２は、当該候補フローをサンプリング対象のデータフローと決定し、当該候補フローに対応するパケットの組を、サンプリング対象のデータフローに対応するパケットの組と決定する。
【００３８】
一方、候補フローが複数の場合、処理部１２は、パケットｎ１１，ｎ１２，ｎ１３，ｎ１４（各通知パケット）の第１のタイムスタンプと、候補フローに属するパケットの第２のタイムスタンプとの比較により、候補を絞り込む。具体的には、処理部１２は、複数の候補フローのうち、第１のタイムスタンプと第２のタイムスタンプとの時間差が短い（第１のタイムスタンプに最も近い第２のタイムスタンプに対応する）候補フローを、サンプリング対象のデータフローと決定する。そして、処理部１２は、サンプリング対象のデータフローと決定した候補フローに対応するパケットの組を、サンプリング対象のデータフローに対応するパケットの組と決定する。
【００３９】
なお、第１のタイムスタンプと第２のタイムスタンプとの時間間隔を求める方法としては任意の方法を用いることができる。例えば、処理部１２は、通知パケット群ｎ１における代表パケット（例えば、最初のパケット）の第１のタイムスタンプと、候補フローの各パケットにおける代表パケット（例えば、最初のパケット）の第２のタイムスタンプとの時間差を求めてもよい。また、処理部１２は、通知パケット群ｎ１の各通知パケットのタイムスタンプの代表値（例えば、中央の時刻）を第１のタイムスタンプとし、候補フローの各パケットのタイムスタンプの代表値を第２のタイムスタンプとして時間差を求めてもよい。
【００４０】
シーケンス図Ａ１の例では、処理部１２は、候補フローであるデータフローｆ２に属する各パケットのタイムスタンプと、各通知パケットのタイムスタンプとに基づいて、第１の時間差を求める。また、処理部１２は、候補フローであるデータフローｆ３に属する各パケットのタイムスタンプと、各通知パケットのタイムスタンプとに基づいて、第２の時間差を求める。第１の時間差は、第２の時間差よりも短い。処理部１２は、第１の時間差と第２の時間差とを比較し、短い方の第１の時間差に対応するデータフローｆ２を、サンプリング対象のデータフローであると特定する。そして、処理部１２は、データフローｆ２に対応するパケットの組（要求ｆ２１，ｆ２２，ｆ２３および応答ｆ２４，ｆ２５，ｆ２６を構成するパケットの組）を、サンプリング対象のデータフローに対応するパケットの組と決定する。
【００４１】
パケット解析装置１０によれば、サービスを提供し互いに通信する複数の第１のノードと複数の第１のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第２のノードとを含む複数のノード間で送信されるパケットが収集される。収集したパケットのうち、第２のノードを宛先とする複数の通知パケットが特定される。特定した複数の通知パケットの複数の送信元アドレスが取得される。取得した複数の送信元アドレスのうちの２つのアドレスの組を送信元および宛先とする複数の候補パケットが、収集したパケットから抽出される。抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組が決定される。
【００４２】
これにより、サンプリング対象のデータフローに属するパケットの推定を高速化できる。具体的には、ＨＴＴＰヘッダなどのレイヤ７（アプリケーション層）の情報を解析しなくても、サンプリング対象のデータフローに属するパケットの組を決定でき、レイヤ７の情報の解析を行うよりも、処理を高速化できる。また、サンプリング対象のデータフローに属するパケットの組を用いたＩＰ（レイヤ３）やＴＣＰ（レイヤ４）などの解析により、ネットワーク４０における処理遅延の原因などの解析を迅速に開始できるようになる。
【００４３】
以下では、更に具体的な情報処理システムを例示して、パケット解析装置１０の機能をより詳細に説明する。
［第２の実施の形態］
次に、第２の実施の形態を説明する。
【００４４】
図２は、第２の実施の形態の情報処理システムの例を示す図である。
第２の実施の形態の情報処理システムは、解析装置１００、ゲートウェイ２００、サーバ３００，３００ａ，３００ｂ，…、スパンマネージャ４００、スパンコレクタ５００、ストアサーバ６００，６００ａ，…および管理端末７００を有する。解析装置１００、ゲートウェイ２００、サーバ３００，３００ａ，３００ｂ，…、スパンマネージャ４００、スパンコレクタ５００、ストアサーバ６００，６００ａ，…および管理端末７００は、ネットワーク５０に接続されている。ネットワーク５０は、例えば、データセンタなどにおけるＬＡＮ（Local Area Network）である。ネットワーク５０は、ネットワーク６０に接続されている。ネットワーク６０は、例えば、ＷＡＮ（Wide Area Network）やインターネットなどである。ネットワーク６０には、クライアント８００，９００，…が接続されている。
【００４５】
第２の実施の形態の情報処理システムでは、サーバ３００，３００ａ，３００ｂ，…それぞれにおけるコンテナ基盤上で、種々のサービスをコンテナと呼ばれる単位で動作させる。コンテナは、サービスのインスタンスであるとも言える。コンテナの１つのグループ（ポッド（ＰＯＤ）と呼ばれる）が１つのサービスに対応する。このように、コンテナにより、サービス（あるいは当該サービスを提供するアプリケーション）を独立して各サーバに配備し、コンテナ間を接続することでサービスの連携を可能にする仕組みは、マイクロサービスアーキテクチャと呼ばれる。ユーザは、クライアント８００，９００，…を操作して、情報処理システムが提供するサービスを利用する。
【００４６】
ここで、コンテナは、第１の実施の形態のサービスノード２０，２０ａ，２０ｂ，２０ｃ，…（第１のノード）の一例と考えることができる。ただし、サービスの提供主体は、物理マシンまたは仮想マシンでもよい。サービスの提供主体として物理マシンまたは仮想マシンを考える場合、物理マシンまたは仮想マシンを第１の実施の形態のサービスノード２０，２０ａ，２０ｂ，２０ｃ，…（第１のノード）の一例と考えることができる。
【００４７】
解析装置１００は、情報処理システムが提供する機能のモニタリングや性能の分析を行うサーバコンピュータである。解析装置１００は、情報処理システムにおいてコンテナ間で通信されるパケットを収集し、収集したパケットに基づいて、情報処理システムが提供する機能のモニタリングや性能の分析を行う。解析装置１００は、第１の実施の形態のパケット解析装置１０の一例である。
【００４８】
なお、解析装置１００は、上記のように汎用のサーバコンピュータにより実現されてもよいし、ロジックをＦＰＧＡなどによって実装可能なプログラマブル装置により実現されてもよい。また、解析装置１００は、アグリゲータ（Aggregator）と呼ばれてもよい。
【００４９】
ゲートウェイ２００は、クライアント８００，９００，…から要求を受信し、要求に応じて、サーバ３００，３００ａ，３００ｂ，…に配備されたコンテナに要求を送信するサーバコンピュータである。なお、ゲートウェイ２００の機能は、サーバコンピュータ（物理マシン）上の仮想マシンまたはコンテナによって実現されてもよい。
【００５０】
サーバ３００，３００ａ，３００ｂ，…は、それぞれがコンテナ基盤を有し、コンテナ基盤上でＰＯＤ単位にサービスを動作させるサーバコンピュータである。１つのサーバ上では１以上のＰＯＤにより１以上のサービスが動作し得る。
【００５１】
スパンマネージャ４００は、データフローのサンプリングタイミングを制御するサーバコンピュータである。ここで、比較的規模の大きな情報処理システムでは、データフローの数が多いため、トレース対象のデータフローは、例えば、所定のサンプリングアルゴリズムで決定される。サンプリングの割合は、システム管理者によってスパンマネージャ４００に予め設定される。スパンマネージャ４００は、クライアント８００，９００，…から受け付ける何番目の要求をサンプリング対象とするかを決定し、サンプリング対象の要求を示す情報をゲートウェイ２００に通知する。なお、スパンマネージャ４００の機能は、サーバコンピュータ（物理マシン）上の仮想マシンまたはコンテナによって実現されてもよい。
【００５２】
スパンコレクタ５００は、スパンに関する情報を収集するサーバコンピュータである。例えば、スパンコレクタ５００は、ゲートウェイ２００によって、サンプリング対象の要求が何れかのサーバ上のコンテナに転送され、コンテナ間の通信が発生した場合に、ゲートウェイ２００や該当のコンテナを動作させるサーバからスパンの情報を受信する。ここで、スパンは、サービスの名称や当該サービスを呼び出す他のサービスとの関係（あるいは、当該サービスが呼び出す他のサービスの関係でもよい）の情報を含むデータユニットである。スパンは、該当のサービスの処理開始時刻や実行所要時間などの情報を含み得る。スパンは、スパンＩＤ（IDentifier）によって識別される。スパンＩＤは、各サーバによりスパンごとに付与される。なお、スパンコレクタ５００の機能は、サーバコンピュータ（物理マシン）上の仮想マシンまたはコンテナによって実現されてもよい。スパンコレクタ５００は、第１の実施の形態のコレクタノード３０（第２のノード）の一例である。
【００５３】
ストアサーバ６００，６００ａ，…は、解析装置１００により収集されたパケットを記憶するサーバコンピュータである。ストアサーバ６００，６００ａ，…は、ＮＡＳ（Network Attached Storage）でもよいし、ＦＣ（Fibre Channel）などのインタフェースにより解析装置１００に接続されるストレージ装置でもよい。
【００５４】
管理端末７００は、システム管理者によって操作されるクライアントコンピュータである。管理端末７００は、解析装置１００によるパケットの解析結果を取得し、管理端末７００のディスプレイに当該解析結果を表示させる。システム管理者は、管理端末７００のディスプレイに表示された解析結果に基づいて、情報処理システムの運用管理を行う。
【００５５】
クライアント８００，９００，…は、ユーザが操作するクライアントコンピュータである。クライアント８００，９００，…それぞれは、情報処理システムにおける処理の要求を、ネットワーク６０を介して、ゲートウェイ２００に送信する。クライアント８００，９００，…それぞれは、当該要求に対する応答をゲートウェイ２００から受信する。
【００５６】
図３は、解析装置のハードウェア例を示すブロック図である。
解析装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６およびＮＩＣ（Network Interface Card）１０７，１０７ａ，…を有する。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００５７】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、解析装置１００は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００５８】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、解析装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００５９】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、解析装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００６０】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、解析装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００６１】
入力信号処理部１０５は、解析装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、解析装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００６２】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００６３】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００６４】
ＮＩＣ１０７，１０７ａ，…は、ネットワーク５０に接続され、ネットワーク５０を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ１０７，１０７ａ，…は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【００６５】
図４は、スパンの例を示す図である。
一例として、サービス間の通信は、ＨＴＴＰを用いて行われる（ただし、他のプロトコルが用いられてもよい）。Ｗｅｂフレームワーク７０は、クライアント８００，９００，…からのある要求に応じてサービス間の連携によって実現される機能の一単位である。Ｗｅｂフレームワーク７０におけるサービス間の一連の通信を１つのトレースと呼ぶ。１つのデータフロー（あるいはフロー）は、１つのトレースに対応する。例えば、Ｗｅｂフレームワーク７０は、サービス７１，７２，７３，７４，７５の連携により実現される。サービス７１，７２は、ＲＰＣ（Remote Procedure Call）サービスである。サービス７３，７４，７５は、所定のＡＰＩ（Application Programming Interface）を提供するサービス（例えば、Ｗｅｂサービス）である。
【００６６】
サービス７１は、サービス７２を呼び出す。サービス７２は、サービス７３，７４を呼び出す。サービス７４は、サービス７５を呼び出す。これらのサービス間の連携によって、所定の機能が実現される。前述のように、スパンは、あるサービスと、当該サービスから他のサービスへの呼び出し関係により定義される。例えば、第１のスパンは、サービス７２がサービス７１から呼び出されるという関係を示す。また、例えば、第２のスパンは、サービス７３がサービス７２から呼び出されるという関係を示す。この場合、第１のスパンは第２のスパンを発生させる（あるいは、第１のスパンは第２のスパンの前提となる）。したがって、第１のスパンを親スパン、第２のスパンを子スパンとする親子関係がある。
【００６７】
図５は、ＨＴＴＰヘッダに追加されるトレース情報の例を示す図である。
トレース情報８０は、サンプリング対象のデータフローの通信データのＨＴＴＰヘッダに対し、ゲートウェイ２００により追加される。
【００６８】
トレース情報８０の１行目〜３行目には、「ｔｒａｃｅＩｄ」の情報が示されている。「ｔｒａｃｅＩｄ」は、サンプリング対象のデータフロー（トレース）の識別情報（トレースＩＤ）である。２行目の「Ｓｔｒｉｎｇ  ｖａｌｕｅ」の設定値は、トレースＩＤの具体的な値を示す。
【００６９】
トレース情報８０の４行目〜６行目には、「ｎａｍｅ」の情報が示されている。「ｎａｍｅ」は、スパンに対応するサービス名である。５行目の「Ｓｔｒｉｎｇ  ｖａｌｕｅ」の設定値は、サービス名の具体的な値を示す。
【００７０】
トレース情報８０の７行目〜９行目には、「ｉｄ」の情報が示されている。「ｉｄ」は、スパンの識別情報（スパンＩＤ）である。８行目の「Ｓｔｒｉｎｇ  ｖａｌｕｅ」の設定値は、スパンＩＤの具体的な値を示す。
【００７１】
トレース情報８０の１０行目〜１２行目には、「ｐａｒｅｎｔＩｄ」の情報が示されている。「ｐａｒｅｎｔＩｄ」は、ｉｄで示されるスパンの呼び出し元のスパン（親スパン）の識別情報（親スパンＩＤ）である。１１行目の「Ｓｔｒｉｎｇ  ｖａｌｕｅ」の設定値は、親スパンＩＤの具体的な値を示す。
【００７２】
ここで、ゲートウェイ２００は、クライアント８００，９００，…からサンプリング対象の要求を受信した場合に、当該要求に対応する通信データにトレースＩＤと、自サービスに対応するスパンＩＤを付与する。なお、ゲートウェイ２００は、親スパンＩＤとして、トレースＩＤと同じ値を付与するものとする（ゲートウェイ２００が要求を受信した際には、親スパンが存在しないため）。
【００７３】
サーバ３００，３００ａ，３００ｂ，…それぞれも、ゲートウェイ２００または他のサーバから受信した通信データに対し、トレース情報８０と同様のフォーマットの情報を追加する。サーバ３００，３００ａ，３００ｂ，…は、自サーバにおけるサービスに応じた「ｎａｍｅ」、「ｉｄ」、「ｐａｒｅｎｔＩｄ」の値をトレース情報８０に設定する。
【００７４】
図６は、スパンコレクタによるスパン情報の収集例を示す図である。
スパンマネージャ４００は、サンプリング対象の要求（サンプリング対象リクエスト）を示す情報を、ゲートウェイ２００に通知する。例えば、スパンマネージャ４００は、ゲートウェイ２００が受け付けた要求の数をカウントし、カウントした数に応じて、サンプリング対象を決定してもよい。あるいは、スパンマネージャ４００は、前回サンプリング対象を通知した時刻からの経過時間を計測し、当該経過時間に基づいてサンプリング対象を決定してもよい。
【００７５】
ゲートウェイ２００は、例えば、クライアント８００から受信した第１のサンプリング対象リクエストに対して、ＨＴＴＰヘッダにトレース情報（例えば、トレース情報８０）を追加する。ゲートウェイ２００は、当該リクエストを処理するサーバ（例えば、サーバ３００）に、トレース情報を追加した第１のサンプリング対象リクエストを送信する。
【００７６】
サーバ３００（図示を省略）は、テナントのＰＯＤ３０１を有する。ＰＯＤ３０１は、プロキシ３１０およびコンテナ３２０を有する。サーバ３００ａ（図示を省略）は、テナントのＰＯＤ３０１ａを有する。ＰＯＤ３０１ａは、プロキシ３１０ａおよびコンテナ３２０ａを有する。サーバ３００ｂ（図示を省略）は、テナントのＰＯＤ３０１ｂを有する。ＰＯＤ３０１ｂは、プロキシ３１０ｂおよびコンテナ３２０ｂを有する。
【００７７】
ＰＯＤ３０１，３０１ａ，３０１ｂそれぞれは、所定のサービスを提供するコンテナのグループである。ＰＯＤ３０１，３０１ａ，３０１ｂそれぞれは、１以上のコンテナを含む。ＰＯＤ３０１の前段のサービスは、ゲートウェイ２００におけるゲートウェイサービスである。ＰＯＤ３０１の次段のサービスは、ＰＯＤ３０１ａのサービスである。ＰＯＤ３０１ａの前段のサービスは、ＰＯＤ３０１のサービスである。ＰＯＤ３０１ａの次段のサービスは、ＰＯＤ３０１ｂである。ＰＯＤ３０１ｂの前段のサービスは、ＰＯＤ３０１ａのサービスである。
【００７８】
プロキシ３１０，３１０ａ，３１０ｂそれぞれは、ＰＯＤ間の通信を中継する。プロキシ３１０，３１０ａ，３１０ｂそれぞれは、前段のＰＯＤ（あるいはプロキシ）から要求を受信して自ＰＯＤ（自プロキシに対応するコンテナ）に転送し、自ＰＯＤから受け付けた要求を次段のＰＯＤ（あるいはプロキシ）に送信する。また、プロキシ３１０，３１０ａ，３１０ｂそれぞれは、次段のＰＯＤ（あるいはプロキシ）から応答を受信すると、当該応答を自コンテナに転送し、自ＰＯＤから受け付けた応答を前段のＰＯＤ（あるいはプロキシ）に送信する。プロキシ３１０，３１０ａ，３１０ｂは、例えば、サイドカー（Sidecar）と呼ばれるコンテナによって実現され得る。サイドカーは、自ＰＯＤにおけるメインコンテナに付随する補助コンテナである。
【００７９】
プロキシ３１０は、トレース情報が付加された第１のサンプリング対象リクエストをゲートウェイ２００から受信すると、第１のサンプリング対象リクエストからトレース情報を除去して、コンテナ３２０に転送する。プロキシ３１０は、ＰＯＤ３０１から第１のサンプリング対象リクエストに応じた次段のサービスに対する第２のサンプリング対象リクエストを受け付けると、第２のサンプリング対象リクエストにトレース情報を追加して、プロキシ３１０ａに送信する。
【００８０】
プロキシ３１０ａは、トレース情報が付加された第２のサンプリング対象リクエストをプロキシ３１０から受信すると、第２のサンプリング対象リクエストからトレース情報を除去して、コンテナ３２０ａに転送する。プロキシ３１０ａは、コンテナ３２０ａから第２のサンプリング対象リクエストに応じた次段のサービスに対する第３のサンプリング対象リクエストを受け付けると、第３のサンプリング対象リクエストにトレース情報を追加して、プロキシ３１０ｂに送信する。
【００８１】
プロキシ３１０ｂは、トレース情報が付加された第３のサンプリング対象リクエストをプロキシ３１０ａから受信すると、第３のサンプリング対象リクエストからトレース情報を除去して、コンテナ３２０ｂに転送する。プロキシ３１０ｂは、コンテナ３２０ｂから第３のサンプリング対象リクエストに応じた応答を受け付けると、当該応答を、プロキシ３１０ａに送信する。応答は、送信順とは逆の順にＰＯＤを辿り、ゲートウェイ２００を介して、要求元のクライアントに転送される。
【００８２】
ゲートウェイ２００は、スパンマネージャ４００により指示されたサンプリング対象リクエストを受信すると、ゲートウェイ２００が提供するゲートウェイサービスに対応するスパンの情報（スパン情報）を、スパンコレクタ５００に送信する。プロキシ３１０，３１０ａ，３１０ｂは、トレース情報が付加されたサンプリング対象リクエストを受信すると、自ＰＯＤが提供するサービスに対応するスパン情報をスパンコレクタ５００に送信する。スパンコレクタ５００では、こうして収集されたスパン情報に基づいて、サンプリング対象のデータフローに関して、アプリケーションレベルの解析を行える。
【００８３】
一方、サンプリング対象のデータフローに関し、より低いレイヤ（例えば、ＯＳＩ参照モデルのレイヤ３やレイヤ４など）の解析を行うことで、通信路などにおけるパケットレベルでの通信品質などを計測することがある。そのために、解析装置１００は、ネットワーク５０に属する所定のスイッチから、ゲートウェイ２００およびサーバ３００，３００ａ，３００ｂ，…の間で送受信されるパケットの複製を収集する。
【００８４】
図７は、パケット群に対するＨＴＴＰヘッダの例を示す図である。
パケット群８１は、ＨＴＴＰヘッダ８２に相当する情報を含む。１つのパケットは、ＩＰヘッダ、ＴＣＰヘッダおよびペイロードを含む。ＨＴＴＰヘッダ８２の情報は、パケット群８１に含まれる複数のパケットの複数のペイロードにわたって存在している。すなわち、各パケットのペイロードは、ＨＴＴＰヘッダ８２の情報の一部を含んでいる。
【００８５】
例えば、解析装置１００が、収集した全てのパケットの中から、サンプリング対象のデータフローに対応するパケットを特定することが考えられる。この場合、解析装置１００は、パケット群８１を分析してＨＴＴＰヘッダ８２を取得し、ＨＴＴＰヘッダ８２を参照して、サンプリング対象のデータフローに対応するトレースＩＤ、スパンＩＤおよび親スパンＩＤが含まれるかを確認し得る。しかし、ＨＴＴＰヘッダ８２に基づくアプリケーションレベルの解析を行っていると、解析に時間がかかり、パケットの特定が遅延する。このため、例えば、リアルタイムでのモニタリングを行えない。
【００８６】
そこで、解析装置１００は、受信したパケット（複製されたパケット）にタイムスタンプを付与して当該パケットを記録する。解析装置１００は、パケットのタイムスタンプおよびパケットに含まれる宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート番号および送信元ポート番号の情報に基づいて、サンプリング対象のデータフローに対応するパケットを特定する。
【００８７】
図８は、パケットに含まれるヘッダの例を示す図である。
図８（Ａ）は、パケットのＩＰヘッダ９１を例示する。ＩＰヘッダ９１は、プロトコル、送信元ＩＰアドレスおよび宛先ＩＰアドレスのフィールドを含む。プロトコルは、上位層のプロトコル（ＴＣＰやＵＤＰ（User Datagram Protocol）など）を識別するための情報である。送信元ＩＰアドレスは、パケットの送信元ノードのＩＰアドレスである。宛先ＩＰアドレスは、パケットの宛先ノードのＩＰアドレスである。
【００８８】
図８（Ｂ）は、パケットのＴＣＰヘッダ９２を例示する。ＴＣＰヘッダ９２は、送信元ポート番号および宛先ポート番号のフィールドを含む。送信元ポート番号は、パケットの送信元ノードにおいて、当該パケットを処理したサービスに対応する情報である。宛先ポート番号は、パケットの宛先ノードにおいて、当該パケットを処理するサービスに対応する情報である。
【００８９】
図９は、解析装置の機能例を示すブロック図である。
解析装置１００は、フィルタ記憶部１２０、トレース推定情報記憶部１３０、候補トレース記憶部１４０、タイムスタンプ生成部１６０、スパン情報解析部１７０、候補トレース生成部１８０および通信管理部１９０を有する。
【００９０】
フィルタ記憶部１２０、トレース推定情報記憶部１３０および候補トレース記憶部１４０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域を用いて実現される。タイムスタンプ生成部１６０、スパン情報解析部１７０、候補トレース生成部１８０および通信管理部１９０は、ＲＡＭ１０２に記憶されたプログラムがＣＰＵ１０１により実行されることで実現される。
【００９１】
フィルタ記憶部１２０は、フィルタテーブルを記憶する。フィルタテーブルは、収集対象のパケットを絞り込むための情報である。収集対象のパケットは、フィルタテーブルにより、送信元や宛先が各ＰＯＤやスパンコレクタに対応するアドレスであるものに絞られる。
【００９２】
トレース推定情報記憶部１３０は、トレース推定テーブルを記憶する。トレース推定テーブルは、サンプリング対象のデータフロー（トレース）を推定するためのＩＰアドレスを示す情報である。
【００９３】
候補トレース記憶部１４０は、候補トレース管理テーブルおよびスパン管理テーブルを記憶する。候補トレース管理テーブルは、サンプリング対象のデータフロー（トレース）の候補を示す情報である。スパン管理テーブルは、サンプリング対象のデータフローの候補に属するスパンを示す情報である。
【００９４】
タイムスタンプ生成部１６０は、ネットワーク５０に属するスイッチにより複製されたパケットを受信する。タイムスタンプ生成部１６０は、時刻挿入部１６１、パケット識別部１６２およびフィルタ設定部１６３を有する。
【００９５】
時刻挿入部１６１は、受信したパケットに受信時刻を示すタイムスタンプを付与する。
パケット識別部１６２は、フィルタ記憶部１２０に記憶されたフィルタテーブルに基づいて、受信したパケットをドロップ（破棄）するか、当該パケットをスパン情報解析部１７０による処理の対象とするか否かを判定する。フィルタ設定部１６３は、通信管理部１９０により取得されたフィルタの情報に基づいて、フィルタテーブルを生成し、フィルタテーブルをフィルタ記憶部１２０に格納する。
【００９６】
スパン情報解析部１７０は、タイムスタンプ生成部１６０によるフィルタ後のパケットに基づいて、トレース推定テーブルを生成し、トレース推定情報記憶部１３０に格納する。スパン情報解析部１７０は、データ確認部１７１、スパン生成先確認部１７２およびトレース推定情報管理部１７３を有する。
【００９７】
データ確認部１７１は、ＰＯＤからのパケットがＤＡＴＡパケットであるか否かを確認する。例えば、データ確認部１７１は、パケットのＴＣＰヘッダ９２におけるＴＣＰフラグ、あるいは、シーケンス番号やＡＣＫ番号などを確認することで、当該パケットがＤＡＴＡパケットであるか否かを確認し得る。
【００９８】
スパン生成先確認部１７２は、データ確認部１７１により特定されたＤＡＴＡパケットの送信先ＩＰアドレスを確認し、送信先ＩＰアドレスがスパンコレクタ５００のＩＰアドレスであるＤＡＴＡパケットを特定し、トレース推定情報管理部１７３に供給する。
【００９９】
トレース推定情報管理部１７３は、スパン生成先確認部１７２から取得したＤＡＴＡパケットの送信元ＩＰアドレスを、タイムスタンプとともに、トレース推定情報記憶部１３０に記憶されたトレース推定情報テーブルに記録する。
【０１００】
候補トレース生成部１８０は、候補トレース管理テーブルおよびスパン管理テーブルを生成し、候補トレース記憶部１４０に格納する。候補トレース生成部１８０は、パケットトレース割当部１８１、スパンパス推定部１８２および候補トレース推定部１８３を有する。
【０１０１】
パケットトレース割当部１８１は、各パケットに基づいて、候補トレース管理テーブルおよびスパン管理テーブルを生成し、候補トレース記憶部１４０に格納する。
スパンパス推定部１８２は、パケットの通信情報（送信元ＩＰアドレス／送信元ポート番号および宛先ＩＰアドレス／宛先ポート番号）から、候補トレース管理テーブルに登録されたトレースに属するスパンの親子関係を特定する。スパンパス推定部１８２は、当該トレースに属するスパンの通信情報を、スパン管理テーブルに記録する。
【０１０２】
候補トレース推定部１８３は、トレース推定情報テーブルに基づいて、候補トレース管理テーブルおよびスパン管理テーブルで管理されるデータフローのうち、サンプリング対象のデータフローに対応するパケットを推定する。
【０１０３】
通信管理部１９０は、他のコンピュータとの通信を行う。通信管理部１９０は、通信情報整理部１９１、通信情報伝送部１９２およびサンプリング管理部１９３を有する。
通信情報整理部１９１は、フィルタの情報からＰＯＤやスパンコレクタ５００のＩＰアドレスやＴＣＰポート番号などの通信情報を取得する。
【０１０４】
通信情報伝送部１９２は、通信情報整理部１９１により取得された通信情報を、候補トレース生成部１８０に供給する。
サンプリング管理部１９３は、データフローのサンプリングが行われる期間を推定する。サンプリング管理部１９３は、推定した期間において収集されたパケットからサンプリング対象のデータフローに対応するパケットを特定するように、タイムスタンプ生成部１６０、スパン情報解析部１７０および候補トレース生成部１８０を制御する。
【０１０５】
図１０は、フィルタテーブルの例を示す図である。
フィルタテーブル１２１は、項番、フラグ、ＩＰアドレスおよびポート番号の項目を含む。
【０１０６】
項番の項目には、レコードを識別するための番号が登録される。フラグの項目には、該当のレコードがＰＯＤの情報であるかスパンコレクタ５００の情報であるかを識別するためのフラグが登録される。フラグ「Ｐ」は、ＰＯＤを示す。フラグ「Ｃ」は、スパンコレクタ５００を示す。ＩＰアドレスの項目には、該当のノード（ＰＯＤまたはスパンコレクタ５００）のＩＰアドレスが登録される。ポート番号の項目には、該当のノード（ＰＯＤまたはスパンコレクタ５００）のポート番号が登録される。
【０１０７】
例えば、フィルタテーブル１２１には、項番が「０」、フラグが「Ｐ」、ＩＰアドレスが「１０．２４．２２１．３２」、ポート番号が「４５７８９」というレコードが登録されている。
【０１０８】
図１１は、トレース推定情報テーブルの例を示す図である。
トレース推定情報テーブル１３１は、スパンインデックス、ＩＰアドレスおよびタイムスタンプの項目を含む。
【０１０９】
スパンインデックスの項目には、レコードを識別するための識別情報であるスパンインデックスが登録される。スパンインデックスは「０」から始まり、レコードが追加されるたびにインクリメントされる。ＩＰアドレスの項目には、スパンコレクタ５００を宛先とするパケットから取得された送信元ＩＰアドレスが登録される。タイムスタンプの項目には、スパンコレクタ５００を宛先とするパケットを受信した時刻を示すタイムスタンプが登録される。
【０１１０】
例えば、トレース推定情報テーブル１３１には、スパンインデックスが「０」、ＩＰアドレスが「１０．２４．２２１．３２」、タイムスタンプが「１９：２２：４３．８００１２９」というレコードが登録されている。
【０１１１】
図１２は、候補トレース管理テーブルの例を示す図である。
候補トレース管理テーブル１４１は、トレースＩＤ、ストアサーバＩＤ、候補フラグおよび終了フラグの項目を含む。
【０１１２】
トレースＩＤの項目には、トレース（データフロー）の識別情報であるトレースＩＤが登録される。ストアサーバＩＤの項目には、当該トレースＩＤに対応するパケットの保存先のストアサーバ６００，６００ａ，…の識別情報が登録される。候補フラグの項目には、サンプリング対象のデータフローであるか否かを示す候補フラグが登録される。候補フラグ「Ｔ（True）」は、サンプリング対象のデータフローであることを示す。候補フラグ「Ｆ（False）」は、サンプリング対象のデータフローでないことを示す。候補フラグの項目の初期値は、「Ｆ」である。終了フラグの項目には、該当のデータフローが終了しているか否かを示す終了フラグが登録される。「データフローが終了している」とは、要求元のクライアントに対して、ＦＩＮパケットが送信済であることを示す。終了フラグ「Ｔ」は、データフローが終了していることを示す。終了フラグ「Ｆ」は、データフローが終了していないことを示す。終了フラグの初期値は、「Ｆ」である。
【０１１３】
例えば、候補トレース管理テーブル１４１には、トレースＩＤが「０」、ストアサーバＩＤが「０」、候補フラグが「Ｔ」、終了フラグが「Ｔ」というレコードが登録されている。
【０１１４】
図１３は、スパン管理テーブルの例を示す図である。
スパン管理テーブル１４２，…，１４７は、候補トレース管理テーブル１４１のトレースＩＤごとに生成される。以下では、スパン管理テーブル１４２を主に例示して説明するが、他のスパン管理テーブルも同様のデータ構造をもつ。
【０１１５】
スパン管理テーブル１４２は、トレースＩＤ、スパンＩＤ、タイムスタンプ、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレスおよび宛先ポート番号の項目を含む。
トレースＩＤの項目には、トレースＩＤが登録される。スパンＩＤの項目には、レコードを識別する番号が登録される。スパンＩＤは「０」から始まり、スパン管理テーブル１４２にレコードが追加されるたびにインクリメントされる。タイムスタンプの項目には、該当のレコードに対応するパケットを受信した時刻を示すタイムスタンプが登録される。送信元ＩＰアドレスの項目には、当該パケットの送信元ＩＰアドレスが登録される。送信元ポート番号の項目には、当該パケットの送信元ポート番号が登録される。宛先ＩＰアドレスの項目には、当該パケットの宛先ＩＰアドレスが登録される。宛先ポート番号の項目には、当該パケットの宛先ポート番号が登録される。
【０１１６】
例えば、スパン管理テーブル１４２には、トレースＩＤが「０」、スパンＩＤが「０」、タイムスタンプが「１９：２２：４２．０００１２５」、送信元ＩＰアドレスが「１０．２４．２２１．３２」、送信元ポート番号が「４８２８」、宛先ＩＰアドレスが「１０．４．２１．３５」、宛先ポート番号が「５４９０１」というレコードが登録されている。
【０１１７】
また、スパン管理テーブル１４２によれば、トレースＩＤ「０」のデータフローには、スパンＩＤが「０」〜「４」である５つのスパンが属することが分かる。あるデータフローにおいて、あるスパンＩＤに対応する宛先ＩＰアドレスおよび宛先ポート番号は、次のスパンＩＤに対応する送信元ＩＰアドレスおよび送信元ポート番号となる。
【０１１８】
図１４は、マッチングタイミングの予測例を示す図である。
グラフＧ１は、サンプリング管理部１９３によるマッチングタイミングの予測例を示す。例えば、サンプリング管理部１９３は、データフローのサンプリング間隔を学習し、次にサンプリングされる時間間隔を予測して、直前のサンプリング時刻から当該予測した時間間隔の経過後の時刻を、スパンのマッチングタイミングとして使用する。例えば、サンプリング管理部１９３は、データフローがサンプリングされた過去の時間間隔ΔＴａ，ΔＴｂ，ΔＴｃの実績に基づいて、次のサンプリングまでの時間間隔ΔＴｄ（次のマッチングタイミング）を予測する。サンプリング管理部１９３による予測には、移動平均法、自己回帰モデルおよび自己回帰移動平均モデルなどによる解析方法を用いることができる。サンプリング管理部１９３は、例えば、予測したマッチングタイミングの前後の所定期間を、パケット収集の対象期間（スパンマッチング期間）とすることが考えられる。
【０１１９】
図１５は、レイヤ間の関係を示す図である。
図１５では、ＨＴＴＰのメッセージレイヤおよびＴＣＰ／ＩＰのパケットレイヤを例示する。例えば、ＰＯＤ３０１は、ＰＯＤ３０１ａに対して、ＨＴＴＰにより通信データを送信する。そのため、ＰＯＤ３０１は、通信データを分割したＤＡＴＡパケットをＰＯＤ３０１ａに送信し、ＤＡＴＡパケットの受信応答として、ＡＣＰパケットをＰＯＤ３０１ａから受信する。これを複数回繰り返すことで、ＰＯＤ３０１からＰＯＤ３０１ａに対する通信データの送信が行われる。ＰＯＤ３０１ａからＰＯＤ３０１ｂに対する通信データの送信についても同様である。また、ＰＯＤ３０１，３０１ａ，３０１ｂそれぞれからスパンコレクタ５００に対するスパン情報に関する通信データの送信についても同様である。
【０１２０】
図１６は、情報処理システムの処理例を示す図である。
クライアント８００，９００は、ネットワーク５０を介して、テナントのＰＯＤ群３３０が提供するサービスにアクセスする。これにより、ＰＯＤ群３３０に属するＰＯＤ間で通信が発生する。該当の通信がサンプリング対象の場合、各ＰＯＤは、スパンコレクタ５００にスパン情報を伝送する。これらＰＯＤ間の通信に伴うパケットおよびスパン情報の伝送に伴うパケット（通知パケット）を含む全パケットは、ネットワーク５０に属するスイッチにより複製（ミラー）され、解析装置１００により複製されたパケットが収集される。
【０１２１】
解析装置１００は、スパンマネージャ４００における管理コンポーネント４１０からフィルタ情報（例えば、ｉｐｔａｂｌｅｓの情報）を取得する（フィルタ情報の取得元は、スパンマネージャ４００以外のノードでもよい）。解析装置１００は、当該フィルタ情報に基づいて、受信したパケットから、クライアント８００，９００，…からのパケット、ＰＯＤ間の通信に伴うパケットおよびスパン情報の伝送に伴うパケット以外のパケット（無関係なパケット）をフィルタする。解析装置１００は、収集したパケットをストアサーバ６００，６００ａ，…に保存する。また、解析装置１００は、ストアサーバ６００に保存したパケットに基づいて、サンプリング対象のデータフローに対応するパケットを抽出し、当該パケットの解析結果を、管理端末７００に提供する。
【０１２２】
次に、解析装置１００による具体的な処理手順を説明する。
図１７は、パケット収集例を示すフローチャートである。
下記の手順は、スパンマッチング期間（次のマッチングタイミングの前後の所定期間）において、解析装置１００が複製されたパケットを受信するたびに開始される。
【０１２３】
（Ｓ１０）時刻挿入部１６１は、受信したパケットにタイムスタンプを挿入する。
（Ｓ１１）パケット識別部１６２は、フィルタ記憶部１２０に記憶されたフィルタテーブル１２１を参照して、受信したパケットの送信元ＩＰアドレス／ポート番号の組および宛先ＩＰアドレス／ポート番号の組が、何れも、フィルタテーブル１２１に登録されたＩＰアドレス／ポート番号の組に合致しているか否かを判定する。合致している場合、ステップＳ１２に処理が進む。合致していない場合、ステップＳ１４に処理が進む。
【０１２４】
（Ｓ１２）スパン生成先確認部１７２は、フィルタテーブル１２１におけるフラグを参照して、受信したパケットがスパンコレクタ５００とＰＯＤとの通信であるか否かを判定する。受信したパケットがスパンコレクタ５００とＰＯＤとの通信である場合、ステップＳ１３に処理が進む。受信したパケットがスパンコレクタ５００とＰＯＤとの通信でない場合、ステップＳ１５に処理が進む。なお、受信したパケットがスパンコレクタ５００とＰＯＤとの通信である場合、当該パケットの宛先ＩＰアドレス／宛先ポート番号の組がスパンコレクタ５００のＩＰアドレス／ポート番号を示し、送信元ＩＰアドレス／送信元ポート番号の組がＰＯＤのＩＰアドレス／ポート番号を示す。
【０１２５】
（Ｓ１３）データ確認部１７１は、受信したパケットのＴＣＰヘッダ９２におけるＴＣＰフラグ（ｆｌａｇ）がＤＡＴＡを示すか否かを判定する。ＤＡＴＡを示す場合、図１９のステップＳ２８に処理が進む。ＤＡＴＡではない場合、ステップＳ１４に処理が進む。
【０１２６】
（Ｓ１４）パケット識別部１６２（ステップＳ１１  Ｎｏの場合）またはデータ確認部１７１（ステップＳ１３  Ｎｏの場合）は、受信したパケットを破棄する。そして、今回受信したパケットに関するパケット収集処理が終了する。
【０１２７】
（Ｓ１５）データ確認部１７１は、受信したパケットのＴＣＰヘッダ９２におけるＴＣＰフラグがＳＹＮを示すか否かを判定する。ＳＹＮを示す場合、ステップＳ１６に処理が進む。ＳＹＮではない場合、ステップＳ２１に処理が進む。ここで、ＳＹＮは、クライアント８００，９００，…からゲートウェイ２００に対する要求の送信開始（データフローの開始に相当）を示す。
【０１２８】
（Ｓ１６）パケットトレース割当部１８１は、受信したパケットに対応するトレース（データフロー）の蓄積先のストアサーバ６００を選択する。例えば、ストアサーバ６００が複数の場合、ラウンドロビンや該当のパケット（ＳＹＮパケット）に含まれる情報のハッシュ値などによって蓄積先を選択することが考えられる。
【０１２９】
（Ｓ１７）パケットトレース割当部１８１は、候補トレース管理テーブルで今回受信したパケットに対応するトレース（データフロー）に対して新トレースＩＤを割当てる。
（Ｓ１８）パケットトレース割当部１８１は、新トレースＩＤに対応する終了フラグを「Ｆ」に設定する。
【０１３０】
（Ｓ１９）パケットトレース割当部１８１は、新たなスパン管理テーブルに新トレースＩＤに対応するパケットの情報を保存する。
（Ｓ２０）パケットトレース割当部１８１は、選ばれた蓄積先のストアサーバ６００に、今回受信したパケットを送信する。そして、今回受信したパケットに関するパケット収集処理が終了する。
【０１３１】
（Ｓ２１）データ確認部１７１は、受信したパケットのＴＣＰヘッダ９２におけるＴＣＰフラグがＦＩＮを示すか否かを判定する。ＦＩＮを示す場合、ステップＳ２２に処理が進む。ＦＩＮではない場合、図１８のステップＳ２３に処理が進む。ここで、ＦＩＮは、ゲートウェイ２００からクライアント８００，９００，…に対する応答の送信完了（データフローの終了に相当）を示す。
【０１３２】
（Ｓ２２）パケットトレース割当部１８１は、今回受信したＦＩＮパケットに対応するトレース（データフロー）を、候補トレース管理テーブル１４１から特定し、当該トレースの終了フラグを「Ｔ」に設定する。そして、今回受信したパケットに関するパケット収集処理が終了する。
【０１３３】
図１８は、パケット収集例（続き）を示すフローチャートである。
（Ｓ２３）スパンパス推定部１８２は、受信したパケットに対応するＰＯＤ間（ゲートウェイ２００とＰＯＤとの間を含む）の通信情報がスパン管理テーブルに登録済であるか否かを判定する。登録済の場合、ステップＳ２７に処理が進む。登録済でない場合、ステップＳ２４に処理が進む。
【０１３４】
（Ｓ２４）スパンパス推定部１８２は、受信したパケットに対して新スパンＩＤを割当てて、スパン管理テーブルに記録する。ここで、スパンパス推定部１８２は、既存の各スパン管理テーブルにおける最新のスパンＩＤに対応する宛先ＩＰアドレスおよび宛先ポート番号の第１の組と、受信したパケットの送信元ＩＰアドレスおよび送信元ポート番号の第２の組とを照合する。スパンパス推定部１８２は、第１の組と第２の組とが一致するスパン管理テーブルのトレースＩＤを、受信したパケットに対応するトレースＩＤとして特定する。
【０１３５】
（Ｓ２５）スパンパス推定部１８２は、受信したパケットの通信情報（送信元ＩＰアドレス／送信元ポート番号の組および宛先ＩＰアドレス／宛先ポート番号の組）を、パケットのトレースＩＤに対応するスパン管理テーブルに記録する。
【０１３６】
（Ｓ２６）スパンパス推定部１８２は、受信したパケットのタイムスタンプをパケットのトレースＩＤに対応するスパン管理テーブルに記録する。
（Ｓ２７）パケットトレース割当部１８１は、蓄積先のストアサーバ６００に、今回受信したパケットを送信する。そして、今回受信したパケットに関するパケット収集処理が終了する。
【０１３７】
図１９は、パケット収集例（続き）を示すフローチャートである。
（Ｓ２８）トレース推定情報管理部１７３は、トレース推定情報テーブル１３１において、新スパンインデックスを割当てる。
【０１３８】
（Ｓ２９）トレース推定情報管理部１７３は、送信元ＩＰアドレスをパケットから取得して、トレース推定情報テーブル１３１に記録する。
（Ｓ３０）トレース推定情報管理部１７３は、パケットのタイムスタンプをトレース推定情報テーブル１３１に記録する。そして、今回受信したパケットに関するパケット収集処理が終了する。
【０１３９】
以上の手順により、トレース推定情報テーブル１３１、候補トレース管理テーブル１４１およびスパン管理テーブル１４２，…が生成される。候補トレース推定部１８３は、トレース推定情報テーブル１３１、候補トレース管理テーブル１４１およびスパン管理テーブル１４２，…に基づいて、収集されたパケットのうち、サンプリング対象のデータフローに対応するパケットを特定する。
【０１４０】
図２０は、パケットの特定例を示すフローチャートである。
候補トレース推定部１８３は、スパンマッチング期間において下記の手順を実行する。
（Ｓ４０）候補トレース推定部１８３は、トレース推定情報テーブル１３１にレコードが存在するか否かを判定する。トレース推定情報テーブル１３１にレコードが存在する場合、ステップＳ４１に処理が進む。レコードが存在しない場合、ステップＳ４０に処理が進む（候補トレース推定部１８３は、トレース推定情報テーブル１３１にレコードが登録されるまで待機する）。
【０１４１】
（Ｓ４１）候補トレース推定部１８３は、トレース推定情報テーブル１３１における最後のスパンインデックス（最大のスパンインデックス）を取得する。
（Ｓ４２）候補トレース推定部１８３は、最後のスパンインデックスが増えたか（最後のスパンインデックスよりも大きなスパンインデックスのレコードがトレース推定情報テーブル１３１に登録されたか）否かを判定する。スパンインデックスが増えた場合、ステップＳ４３に処理が進む。スパンインデックスが増えない場合、ステップＳ４４に処理が進む。
【０１４２】
（Ｓ４３）候補トレース推定部１８３は、一定時間待機する。そして、ステップＳ４１に処理が進む。
（Ｓ４４）候補トレース推定部１８３は、トレース推定情報テーブル１３１でのスパン数（レコード数またはスパンインデックス＋１）と、所属スパン数が一致する候補トレースがあるか否かを判定する。候補トレースの所属スパン数は、各候補トレースに対応するスパン管理テーブル１４２のレコード数（スパンＩＤ＋１）に相当する。該当の候補トレースがある場合、ステップＳ４５に処理が進む。該当の候補トレースがない場合、サンプリング対象パケットの特定処理が終了する。なお、該当の候補トレースがない場合、サンプリング対象パケットを特定できなかったことになる。
【０１４３】
（Ｓ４５）候補トレース推定部１８３は、ステップＳ４４の判定の結果、トレース推定情報テーブル１３１でのスパン数と、所属スパン数が一致する候補トレースが複数であるか否かを判定する。該当の候補トレースが複数の場合、ステップＳ４７に処理が進む。該当の候補トレースが１つの場合、ステップＳ４６に処理が進む。
【０１４４】
（Ｓ４６）候補トレース推定部１８３は、候補トレース管理テーブル１４１における該当の候補トレースの候補フラグを「Ｔ」に設定する。すなわち、候補トレース推定部１８３は、候補フラグ「Ｔ」の候補トレースに対応するスパン管理テーブルにおける通信情報をもつパケットを、サンプリング対象のデータフローに対応するパケットと決定する。そして、パケットの特定処理が終了する。
【０１４５】
（Ｓ４７）候補トレース推定部１８３は、スパン管理テーブル１４２，…，１４７を参照して、各候補トレースの所属スパンのタイムスタンプ（代表のスパンのタイムスタンプでもよいし、タイムスタンプの代表値（例えば、中央値）でもよい）を取得する。
【０１４６】
（Ｓ４８）候補トレース推定部１８３は、該当の複数の候補トレースのうち、トレース推定情報テーブル１３１におけるタイムスタンプと最も近いタイムスタンプを持つ候補トレースを１つ選択する。トレース推定情報テーブル１３１におけるタイムスタンプも、代表の送信元のタイムスタンプでもよいし、トレース推定情報テーブル１３１に登録されたタイムスタンプの代表値（例えば、中央値）でもよい。
【０１４７】
（Ｓ４９）候補トレース推定部１８３は、候補トレース管理テーブル１４１における、選択した候補トレースの候補フラグを「Ｔ」に設定する。すなわち、候補トレース推定部１８３は、候補フラグ「Ｔ」の候補トレースに対応するスパン管理テーブルにおける通信情報をもつパケットを、サンプリング対象のデータフローに対応するパケットと決定する。そして、パケットの特定処理が終了する。
【０１４８】
このように、解析装置１００は、収集した各パケットの送信元アドレスおよび宛先アドレスを辿ることでサンプリング対象のデータフローの候補である複数のトレース（候補フロー）を生成する。解析装置１００は、スパンコレクタ５００に対する通知パケットの送信元のノードの第１の数と、当該候補フローに含まれるパケットを転送するノードの第２の数との候補フローごとの比較に応じて、複数の候補フローのうちサンプリング対象のデータフローを特定する。特に、解析装置１００は、第１の数と第２の数とが同じである候補フローをサンプリング対象のデータフローと特定する。これにより、サンプリング対象のデータフロー、および、当該データフローに対応するパケットを適切に特定できる。
【０１４９】
また、解析装置１００は、第１の数と第２の数とが同じである２以上の候補フローがある場合、複数の通知パケットの第１のタイムスタンプと、当該２以上の候補フローそれぞれの第２のタイムスタンプとの比較に応じて、当該２以上の候補フローのうちサンプリング対象のデータフローを特定する。特に、解析装置１００は、第１のタイムスタンプに最も近い第２のタイムスタンプに対応する候補フローをサンプリング対象のデータフローと特定する。これにより、適切にサンプリング対象のデータフロー、および、当該データフローに対応するパケットを適切に特定できる。
【０１５０】
なお、今回のスパンマッチング期間が終了すると、トレース推定情報テーブル１３１、候補トレース管理テーブル１４１およびスパン管理テーブル１４２，…はクリアされる。
図２１は、候補トレースのマッチングの第１の例を示す図である。
【０１５１】
例えば、解析装置１００は、スパンマッチング期間ΔＴ１１において収集したパケットに基づき、パケットトレースＹ１１，Ｙ１２を検出する。パケットトレースＹ１１は、時系列に、ＰＯＤ（Ａ）とＰＯＤ（Ｄ）との通信、および、ＰＯＤ（Ｄ）とＰＯＤ（Ｆ）との通信を含むデータフローである。パケットトレースＹ１２は、時系列に、ＰＯＤ（Ａ）とＰＯＤ（Ｄ）との通信、ＰＯＤ（Ｄ）とＰＯＤ（Ｆ）との通信、ＰＯＤ（Ｆ）とＰＯＤ（Ｇ）との通信、および、ＰＯＤ（Ｇ）とＰＯＤ（Ｈ）との通信を含むデータフローである。
【０１５２】
また、解析装置１００は、スパンマッチング期間ΔＴ１１において、スパンコレクタ５００にデータ（通知パケット）を送信したＰＯＤとして、ＰＯＤ群Ｘ１を検出したとする。ＰＯＤ群Ｘ１は、例えば、検出された時系列に、ＰＯＤ（Ｄ）、ＰＯＤ（Ａ）、ＰＯＤ（Ｇ）、ＰＯＤ（Ｈ）、ＰＯＤ（Ｆ）を含む。
【０１５３】
この場合、解析装置１００は、パケットトレースＹ１１，Ｙ１２のうち、ＰＯＤ群Ｘ１に含まれる全てのＰＯＤを含む（ＰＯＤ群Ｘ１と同じ数のＰＯＤを含む）パケットトレースＹ１２を、サンプリング対象であると判定する。その結果、解析装置１００は、パケットトレースＹ１２に対応するパケット群を、サンプリング対象のデータフローに対応するパケット群であると決定する。
【０１５４】
図２１で例示した解析装置１００の解析シーケンスの一例を示すと次のようになる。
図２２は、解析シーケンスの第１の例を示す図である。
（Ｓ５０）解析装置１００は、管理コンポーネント４１０からｉｐｔａｂｌｅｓなどにおけるＰＯＤの通信情報やサービスの規模の情報などを収集し、フィルタテーブル１２１の設定と、次のスパンマッチング期間の開始および終了のタイミングの予測とを行う。以下に示すステップＳ５１〜Ｓ６２は、スパンマッチング期間ΔＴ１１におけるステップである。
【０１５５】
（Ｓ５１）クライアント８００は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。当該要求の送信は、クライアント８００からゲートウェイ２００（図２２では図示を省略している）へのＳＹＮパケットで開始される。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００に応答する。ここでは、例えば、３つのＰＯＤ［Ａ，Ｄ，Ｆ］（ＰＯＤ（Ａ）、ＰＯＤ（Ｄ）、ＰＯＤ（Ｆ）を示す）が、この順に連携して処理を行ったとする。当該処理結果の応答は、ゲートウェイ２００からクライアント８００へのＦＩＮパケットで終了される。
【０１５６】
（Ｓ５２）ネットワーク５０に属する所定のスイッチは、ステップＳ５１におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１５７】
（Ｓ５３）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「１」のストアサーバに保存する。
【０１５８】
（Ｓ５４）クライアント８００（他のクライアントでもよい）は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００（要求元のクライアント）に応答する。ここでは、例えば、５つのＰＯＤ［Ａ，Ｄ，Ｆ，Ｇ，Ｈ］が、この順に連携して処理を行ったとする。また、ステップＳ５４における一連のデータフローは、スパンマネージャ４００によって決定されたサンプリング対象に該当するものとする。
【０１５９】
（Ｓ５５）ネットワーク５０に属する所定のスイッチは、ステップＳ５４におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１６０】
（Ｓ５６）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「３」のストアサーバに保存する。
【０１６１】
（Ｓ５７）テナントのＰＯＤ群３３０におけるＰＯＤ［Ａ，Ｄ，Ｆ，Ｇ，Ｈ］は、ネットワーク５０を介して、スパン情報をスパンコレクタ５００に送信する。
（Ｓ５８）ネットワーク５０に属する所定のスイッチは、スパン情報のパケットを複製し、複製したパケットを解析装置１００に送信する。解析装置１００は、ステップＳ５８で受信したパケットにタイムスタンプを付与し、当該パケットに基づいて、トレース推定情報（ＰＯＤ［Ｄ，Ａ，Ｇ，Ｈ，Ｆ］の情報）を、トレース推定情報テーブル１３１に記録する。
【０１６２】
（Ｓ５９）クライアント８００（他のクライアントでもよい）は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００（要求元のクライアント）に応答する。ここでは、例えば、３つのＰＯＤ［Ａ，Ｄ，Ｆ］が、この順に連携して処理を行ったとする。
【０１６３】
（Ｓ６０）ネットワーク５０に属する所定のスイッチは、ステップＳ５９におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１６４】
（Ｓ６１）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「２」のストアサーバに保存する。
【０１６５】
（Ｓ６２）解析装置１００は、トレース推定情報に新たなＰＯＤの情報が追加されないことを検出する（トレース生成終了を確認する）。解析装置１００は、トレース生成終了をスパンコレクタ５００に確認してもよい。
【０１６６】
（Ｓ６３）解析装置１００は、候補トレースの推定を行う。図２２の例では、図２１で例示したように、ステップＳ５８で生成されたトレース推定情報に対して、ステップＳ５５で収集されたパケット群に対応するトレースが選択される。
【０１６７】
（Ｓ６４）解析装置１００は、候補トレースを示す情報を管理端末７００に送信する。管理端末７００は、候補トレースを示す情報に基づいて、ストアサーバ６００にアクセスし、候補トレースに属するパケットの内容を取得することができる。
【０１６８】
図２３は、候補トレースのマッチングの第２の例を示す図である。
例えば、解析装置１００は、スパンマッチング期間ΔＴ２１において収集したパケットに基づき、パケットトレースＹ２１，Ｙ２２を検出する。パケットトレースＹ２１は、時系列に、ＰＯＤ（Ｂ）とＰＯＤ（Ｅ）との通信、および、ＰＯＤ（Ｅ）とＰＯＤ（Ｔ）との通信を含むデータフローである。パケットトレースＹ２２は、時系列に、ＰＯＤ（Ｂ）とＰＯＤ（Ｔ）との通信、および、ＰＯＤ（Ｔ）とＰＯＤ（Ｅ）との通信を含むデータフローである。
【０１６９】
また、解析装置１００は、スパンマッチング期間ΔＴ２１において、スパンコレクタ５００にデータ（通知パケット）を送信したＰＯＤとして、ＰＯＤ群Ｘ２を検出したとする。ＰＯＤ群Ｘ２は、例えば、検出された時系列に、ＰＯＤ（Ｂ）、ＰＯＤ（Ｔ）、ＰＯＤ（Ｅ）を含む。
【０１７０】
この場合、解析装置１００は、パケットトレースＹ２１，Ｙ２２の両方が、ＰＯＤ群Ｘ２に含まれる全てのＰＯＤ（ＰＯＤ群Ｘ２と同じ数のＰＯＤ）を含む。この場合、解析装置１００は、パケットトレースＹ２１，Ｙ２２のうち、ＰＯＤ群Ｘ２が検出された時刻に近い時刻で検出されたパケットトレースＹ２１をサンプリング対象であると判定する。その結果、解析装置１００は、パケットトレースＹ２１に対応するパケット群を、サンプリング対象のデータフローに対応するパケット群であると決定する。
【０１７１】
図２３で例示した解析装置１００の解析シーケンスの一例を示すと次のようになる。
図２４は、解析シーケンスの第２の例を示す図である。
（Ｓ７０）解析装置１００は、管理コンポーネント４１０からｉｐｔａｂｌｅｓなどにおけるＰＯＤの通信情報やサービスの規模の情報などを収集し、フィルタテーブル１２１の設定と、次のスパンマッチング期間の開始および終了のタイミングの予測とを行う。以下に示すステップＳ７１〜Ｓ８２は、スパンマッチング期間ΔＴ２１におけるステップである。
【０１７２】
（Ｓ７１）クライアント８００は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。当該要求の送信は、クライアント８００からゲートウェイ２００（図２４では図示を省略している）へのＳＹＮパケットで開始される。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００に応答する。ここでは、例えば、３つのＰＯＤ［Ｂ，Ｅ，Ｔ］が、この順に連携して処理を行ったとする。当該処理結果の応答は、ゲートウェイ２００からクライアント８００へのＦＩＮパケットで終了される。また、ステップＳ７１における一連のデータフローは、スパンマネージャ４００によって決定されたサンプリング対象に該当するものとする。
【０１７３】
（Ｓ７２）ネットワーク５０に属する所定のスイッチは、ステップＳ７１におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１７４】
（Ｓ７３）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「１」のストアサーバに保存する。
【０１７５】
（Ｓ７４）テナントのＰＯＤ群３３０におけるＰＯＤ［Ｂ，Ｅ，Ｔ］は、ネットワーク５０を介して、スパン情報をスパンコレクタ５００に送信する。
（Ｓ７５）ネットワーク５０に属する所定のスイッチは、スパン情報のパケットを複製し、複製したパケットを解析装置１００に送信する。解析装置１００は、ステップＳ７５で受信したパケットにタイムスタンプを付与し、当該パケットに基づいて、トレース推定情報（ＰＯＤ［Ｂ，Ｅ，Ｔ］の情報）を、トレース推定情報テーブル１３１に記録する。
【０１７６】
（Ｓ７６）クライアント８００（他のクライアントでもよい）は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００（要求元のクライアント）に応答する。ここでは、例えば、３つのＰＯＤ［Ｂ，Ｅ，Ｔ］が、この順に連携して処理を行ったとする。
【０１７７】
（Ｓ７７）ネットワーク５０に属する所定のスイッチは、ステップＳ７６におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１７８】
（Ｓ７８）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「３」のストアサーバに保存する。
【０１７９】
（Ｓ７９）クライアント８００（他のクライアントでもよい）は、テナントのＰＯＤ群３３０に含まれる一部のＰＯＤが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のＰＯＤは、ネットワーク５０を介して連携し、所定の処理を実行して、処理結果をクライアント８００（要求元のクライアント）に応答する。ここでは、例えば、３つのＰＯＤ［Ｂ，Ｅ，Ｔ］が、この順に連携して処理を行ったとする。
【０１８０】
（Ｓ８０）ネットワーク５０に属する所定のスイッチは、ステップＳ７９におけるクライアント８００のＳＹＮパケットから、クライアント８００へのＦＩＮパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置１００に送信する。
【０１８１】
（Ｓ８１）解析装置１００は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバＩＤ「２」のストアサーバに保存する。
【０１８２】
（Ｓ８２）解析装置１００は、トレース推定情報に新たなＰＯＤの情報が追加されないことを検出する（トレース生成終了を確認する）。解析装置１００は、トレース生成終了をスパンコレクタ５００に確認してもよい。
【０１８３】
（Ｓ８３）解析装置１００は、候補トレースの推定を行う。図２４の例では、図２３で例示したように、ステップＳ７５で生成されたトレース推定情報に対して、時間的に最も近いステップＳ７２で収集されたパケット群に対応するトレースが選択される。
【０１８４】
（Ｓ８４）解析装置１００は、候補トレースを示す情報を管理端末７００に送信する。管理端末７００は、候補トレースを示す情報に基づいて、ストアサーバ６００にアクセスし、候補トレースに属するパケットの内容を取得することができる。
【０１８５】
このように、解析装置１００は、ＨＴＴＰヘッダの処理（パケット群からのＨＴＴＰヘッダの構成およびＨＴＴＰヘッダの分析）を行わずに済み、サンプリング対象のトレース（データフロー）に関連するパケットの探索の所要時間を短縮できる。
【０１８６】
例えば、次のような基本条件を考える。（１）ストアサーバ６００が４台存在する。（２）１個のＨＴＴＰヘッダの処理に所要される時間が６０秒である。（３）あるストアサーバにある１つのスパンに対応するパケットの探索にかかる時間が２０秒である。（４）管理端末７００にトレース（５個のスパンを含む）の情報を伝送する時間が４０秒である。（５）トレースに含まれるスパンの数が５個である。
【０１８７】
上記基本条件に対して、比較例として、コネクション単位でパケットを収集し、ＨＴＴＰヘッダを処理してトレースを探索する方法を考える。この場合に、第１のストアサーバに２個のスパンに対応するパケットが存在し、第２，第３，第４のストアサーバにそれぞれ、１つのスパンに対応するパケットが存在するものとする。すると、ＨＴＴＰヘッダの処理の所要時間は６０秒×５＝３００秒である。別のストアサーバにある１個のスパンのパケットの探索にかかる時間は２０秒×３＝６０秒である。よって、比較例の処理による総所要時間は、３００秒＋６０秒＋４０秒（伝送時間）＝４００秒である。
【０１８８】
一方、解析装置１００によるトレースの探索において、当該トレースの全てのスパンに対応するパケットが１つのストアサーバ（例えば、第２のストアサーバ）に存在している。すると、ＨＴＴＰヘッダの処理に所要される時間がなくなり（０秒）、別のストアサーバに格納されているパケットの探索に所要される時間もなくなる（０秒）。解析装置１００による総所要時間は、０秒＋０秒＋４０秒（伝送時間）＝４０秒となる。
【０１８９】
すなわち、上記の基本条件の例では、解析装置１００によれば、比較例の方法に比べて、管理端末７００に該当のトレースのパケットを提供するための所要時間を１／１０に短縮できることになる。
【０１９０】
こうして、サービス間の連携に用いられる通信路の品質をリアルタイムで監視し、分析できるようになる。
なお、図９で例示した解析装置１００の各機能をハードウェアにより実装することもできる。
【０１９１】
図２５は、解析装置の他のハードウェア例を示す図である。
解析装置１００ａは、第２の実施の形態の情報処理システムにおいて、解析装置１００の代わりに用いられる。解析装置１００ａは、コントロールプレーンＤ１およびデータプレーンＤ２を有する。コントロールプレーンＤ１は、プログラムによる制御機能を提供する。データプレーンＤ２は、パケット処理専用の電子回路によるパケット処理機能を提供する。
【０１９２】
コントロールプレーンＤ１は、ＣＰＵ１０１およびＲＡＭ１０２を有する。ＣＰＵ１０１は、ＲＡＭ１０２に記憶されたプログラムを実行する。ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムを記憶する。例えば、解析装置１００ａにおいて、ＣＰＵ１０１は、当該プログラムを実行することで、図９で例示した通信管理部１９０に対応する通信管理部１０１ａの機能を発揮する。
【０１９３】
データプレーンＤ２は、入力ポート１１４、タイムスタンプ生成部１１５、スパン情報解析部１１６、候補トレース生成部１１７および出力ポート１１８を有する。
入力ポート１１４は、ネットワーク５０に属する所定のスイッチにより複製されたパケットを受信する通信インタフェースである。
【０１９４】
タイムスタンプ生成部１１５は、タイムスタンプ生成部１６０の機能を有するＡＳＩＣやＦＰＧＡなどのハードウェアである。タイムスタンプ生成部１１５はローカルメモリを有し、当該ローカルメモリの記憶領域をフィルタ記憶部１２０に相当する記憶部として利用する。
【０１９５】
スパン情報解析部１１６は、スパン情報解析部１７０の機能を有するＡＳＩＣやＦＰＧＡなどのハードウェアである。スパン情報解析部１１６はローカルメモリを有し、当該ローカルメモリの記憶領域をトレース推定情報記憶部１３０に相当する記憶部として利用する。
【０１９６】
候補トレース生成部１１７は、候補トレース生成部１８０の機能を有するＡＳＩＣやＦＰＧＡなどのハードウェアである。候補トレース生成部１１７はローカルメモリを有し、当該ローカルメモリの記憶領域を候補トレース記憶部１４０に相当する記憶部として利用する。
【０１９７】
このように、解析装置１００が有するタイムスタンプ生成部１６０、スパン情報解析部１７０および候補トレース生成部１８０の各機能をハードウェアにより実装した解析装置１００ａを用いてもよい。解析装置１００，１００ａの何れを用いる場合でも、例えば、タイムスタンプ生成部１１５，１６０やスパン情報解析部１１６，１７０は、受信した複数のパケットに対する解析をパイプライン制御などにより並列に実行することで、解析処理を高速化することができる。
【０１９８】
ところで、近年、マイクロサービスのモニタリングが行われている。モニタリングでは、Ｍｅｔｈｏｄ呼び出しのメッセージにＡｎｎｏｔａｔｉｏｎと呼ばれる識別情報を挿入し、Ｍｅｔｈｏｄが呼ばれるタイミングでメッセージにタイムスタンプを追加し、当該タイムスタンプによりマイクロサービス間の処理遅延を測定し得る。マイクロサービス間の呼び出し関係と処理時間の情報はスパンと呼ばれ、複数のスパンのグループはトレースと呼ばれる。しかし、このようなモニタリング手法は、レイヤ７のＨＴＴＰメッセージが対象であり、遅延が増大しても、パケットキャプチャデータがなければ実際の原因を調査することは困難である。また、トレースに対応するパケットを探すためには、ネットワークの複数のポイントからキャプチャしたパケットデータから必要なコネクションを検索後、ＨＴＴＰヘッダを再構成して文字列処理を行うことになる。一方、ＨＴＴＰヘッダの処理に係る処理時間はレイヤ４のＴＣＰ分析に比べて１０倍程度遅くなることがある。
【０１９９】
そこで、解析装置１００は、ＨＴＴＰヘッダの処理（再構成や分析）を行わずに、トレースに対応するパケットデータを抽出する。すなわち、解析装置１００は、キャプチャしたパケットを集約して収集し、全てのパケットにタイムスタンプを挿入する。また、解析装置１００は、システムの管理コンポーネントの設定情報から必要なＰＯＤの通信情報をフィルタとして設定する。解析装置１００は、フィルタされたパケットから、サービスの呼び出し関係を構成し、候補トレースを作成する。解析装置１００は、ＰＯＤとスパンコレクタ５００の間の通信に応じたトレース推定情報を基に、候補トレースの中から、実際のトレースと関連がないものを除外する。こうして、解析装置１００は、ＨＴＴＰヘッダの処理を行わずに、サンプリング対象のデータフロー（トレース）に対応するパケットデータを、高速に抽出できる。
【０２００】
なお、第１の実施の形態の情報処理は、処理部１２にプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１１３に記録できる。
【０２０１】
例えば、プログラムを記録した記録媒体１１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０２０２】
１０  パケット解析装置
１１  記憶部
１２  処理部
２０，２０ａ，２０ｂ，２０ｃ，…  サービスノード
３０  コレクタノード
４０  ネットワーク
ｆ１，ｆ２，ｆ３  データフロー
ｆ１１，ｆ１２，ｆ２１，ｆ２２，ｆ２３，ｆ３１，ｆ３２，ｆ３３  要求
ｆ１３，ｆ１４，ｆ２４，ｆ２５，ｆ２６，ｆ３４，ｆ３５，ｆ３６  応答
ｎ１  通知パケット群
ｎ１１，ｎ１２，ｎ１３，ｎ１４  パケット
【図１】
2020150335.tif 000003
【図２】
2020150335.tif 000004
【図３】
2020150335.tif 000005
【図４】
2020150335.tif 000006
【図５】
2020150335.tif 000007
【図６】
2020150335.tif 000008
【図７】
2020150335.tif 000009
【図８】
2020150335.tif 000010
【図９】
2020150335.tif 000011
【図１０】
2020150335.tif 000012
【図１１】
2020150335.tif 000013
【図１２】
2020150335.tif 000014
【図１３】
2020150335.tif 000015
【図１４】
2020150335.tif 000016
【図１５】
2020150335.tif 000017
【図１６】
2020150335.tif 000018
【図１７】
2020150335.tif 000019
【図１８】
2020150335.tif 000020
【図１９】
2020150335.tif 000021
【図２０】
2020150335.tif 000022
【図２１】
2020150335.tif 000023
【図２２】
2020150335.tif 000024
【図２３】
2020150335.tif 000025
【図２４】
2020150335.tif 000026
【図２５】
2020150335.tif 000027