JP2020150335A - パケット解析プログラム、パケット解析装置およびパケット解析方法 - Google Patents

パケット解析プログラム、パケット解析装置およびパケット解析方法 Download PDF

Info

Publication number
JP2020150335A
JP2020150335A JP2019044219A JP2019044219A JP2020150335A JP 2020150335 A JP2020150335 A JP 2020150335A JP 2019044219 A JP2019044219 A JP 2019044219A JP 2019044219 A JP2019044219 A JP 2019044219A JP 2020150335 A JP2020150335 A JP 2020150335A
Authority
JP
Japan
Prior art keywords
packet
packets
candidate
trace
span
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019044219A
Other languages
English (en)
Inventor
忠翰 李
Chunghan Lee
忠翰 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019044219A priority Critical patent/JP2020150335A/ja
Priority to US16/801,216 priority patent/US20200296189A1/en
Publication of JP2020150335A publication Critical patent/JP2020150335A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】サンプリング対象のデータフローに属するパケットの推定を高速化すること。【解決手段】記憶部11は、サービスを提供し互いに通信するサービスノード20,20a,…とサービスノード20,20a,…からサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信するコレクタノード30とを含む複数のノード間で送信されるパケットを記憶する。処理部12は、パケットを収集して記憶部11に格納し、当該パケットのうち、コレクタノード30を宛先とする複数の通知パケットを特定する。処理部12は、複数の通知パケットの複数の送信元アドレスを取得し、複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出する。処理部12は、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する。【選択図】図1

Description

本発明はパケット解析プログラム、パケット解析装置およびパケット解析方法に関する。
現在、コンピュータなどの複数の情報処理装置を含む情報処理システムが利用されている。各情報処理装置は、有線または無線でネットワークに接続され、相互に通信する。
例えば、1以上のホストコンピュータのコンテナ基盤上で複数のサービスを実行する複数のコンテナを動作させ、サービス間の連携により、あるタスクの処理を実行する情報処理システムの提案がある(例えば、特許文献1)。提案の情報処理システムは、全てのサービスの通信データを取得し、複数のサービスによって構成されるタスクに対応する、サービス間の通信のフローを基に、サービスの親子関係を推定するコンピュータを有する。当該コンピュータは、あるサービスから別のサービスへの要求の送信から応答の受信までの一連の処理を一単位としてスパンと呼び、マイクロサービスの親子関係をスパン同士の親子関係で表す。例えば、第1のサービスから第2のサービスへの通信に対応する第1のスパンが、第2のサービスから第3のサービスへの通信に対応する第2のスパンによって呼び出される場合、第1のスパンから第2のスパンが子スパンとなり、第2のスパンから第1のスパンが親スパンとする親子関係を推定する。この提案では、クライアントの要求に対し固有のトレースIDを振って、トレースIDを次の通信に順次引き継いでいくことで、サービス間の関係を把握することも考えられている。
なお、ネットワーク上で転送されるパケットストリームから、特定のパケットストリームを選別し、特定のパケットストリームに含まれる複数のキーワードに基づき、各キーワードのスコアを各要素とする特徴ベクトルを生成するデータフロー解析装置の提案もある(例えば、特許文献2)。提案のデータフロー解析装置は、特徴ベクトルの系列に対してキーワードの発生確率を時系列的に保持するモデルに当てはめることによって、ユーザの潜在的な興味状態の変化を系列として出力する。
特開2018−81440号公報 特開2011−48488号公報
情報処理システムにおいて、複数のノードにより提供される複数のサービスの連携による一連の処理の性能をモニタリングすることがある。ところが、情報処理システムでは、サービス間で大量のデータが通信され得る。全てのデータを取得して解析するには多くの時間を要し困難である。そこで、一部のデータフローに絞ってサンプリングすることが考えられる。サンプリングでは、各ノードにおいて、複数のサービスを跨いで通信される通信データがサンプリング対象のデータフローに属するものであることを識別可能にすることがある。
例えば、各ノードは、サンプリング対象のデータフローを識別可能にするため、当該データフローに属する通信データのヘッダ(例えば、HTTP(Hypertext Transfer Protocol)ヘッダなど)に、サンプリング対象であることを示す識別情報を挿入し得る。各ノードは、次のサービスに送る通信データへの識別情報の挿入や、受信した通信データに対する識別情報の除去を行いながら一連の処理を実行する。それとともに、各ノードは、当該識別情報を含む通信データの受信または送信を、モニタリングを行う監視ノードに通知し得る。すると、例えば監視ノードは、各ノードからの通知の受信時刻の時間差によって、複数のサービスの連携に伴う一連の処理の性能を計測し得る。
一方、上記のような複数のサービスの連携に伴う性能の計測結果に応じて、サンプリング対象となったデータフローに属する、通信データのプロトコルのレイヤ(例えば、HTTPのメッセージレイヤ)よりも低いTCP/IP(Transmission Control Protocol / Internet Protocol)のパケットレイヤにおけるパケットを解析することがある。TCP/IPのレイヤにおける通信路などの問題を分析するためである。そのために、例えば、サービス間で通信されたパケットを収集しておき、収集したパケットを基に、通信データのヘッダにおける識別情報の解析を行ってデータフローを構成するパケットを特定することが考えられる。しかし、収集される大量のパケットに対して、通信データのヘッダの構築や解析を行っていると、サンプリング対象のデータフローに属するパケットの推定に時間がかかる。
1つの側面では、本発明は、サンプリング対象のデータフローに属するパケットの推定を高速化できるパケット解析プログラム、パケット解析装置およびパケット解析方法を提供することを目的とする。
1つの態様では、パケット解析プログラムが提供される。パケット解析プログラムは、コンピュータに、サービスを提供し互いに通信する複数の第1のノードと複数の第1のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第2のノードとを含む複数のノード間で送信されるパケットを収集し、収集したパケットのうち、第2のノードを宛先とする複数の通知パケットを特定し、特定した複数の通知パケットの複数の送信元アドレスを取得し、取得した複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する、処理を実行させる。
また、1つの態様では、パケット解析装置が提供される。
また、1つの態様では、パケット解析方法が提供される。
1つの側面では、サンプリング対象のデータフローに属するパケットの推定を高速化できる。
第1の実施の形態のパケット解析装置を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 解析装置のハードウェア例を示すブロック図である。 スパンの例を示す図である。 HTTPヘッダに追加されるトレース情報の例を示す図である。 スパンコレクタによるスパン情報の収集例を示す図である。 パケット群に対するHTTPヘッダの例を示す図である。 パケットに含まれるヘッダの例を示す図である。 解析装置の機能例を示すブロック図である。 フィルタテーブルの例を示す図である。 トレース推定情報テーブルの例を示す図である。 候補トレース管理テーブルの例を示す図である。 スパン管理テーブルの例を示す図である。 マッチングタイミングの予測例を示す図である。 レイヤ間の関係を示す図である。 情報処理システムの処理例を示す図である。 パケット収集例を示すフローチャートである。 パケット収集例(続き)を示すフローチャートである。 パケット収集例(続き)を示すフローチャートである。 パケットの特定例を示すフローチャートである。 候補トレースのマッチングの第1の例を示す図である。 解析シーケンスの第1の例を示す図である。 候補トレースのマッチングの第2の例を示す図である。 解析シーケンスの第2の例を示す図である。 解析装置の他のハードウェア例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態のパケット解析装置を示す図である。
パケット解析装置10は、サービスノード20,20a,20b,20c,…およびコレクタノード30とネットワーク40を介して接続される。サービスノード20,20a,20b,20c,…およびコレクタノード30のそれぞれは、物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。サービスノード20,20a,20b,20c,…およびコレクタノード30のそれぞれは、物理マシンのコンテナ基盤上のコンテナと呼ばれるコンポーネントにより実現されてもよい。
サービスノード20,20a,20b,20c,…それぞれは、種々のサービスを提供する。サービスノード20,20a,20b,20c,…それぞれは、ユーザの要求に応じて、複数のサービスを連携させた処理を行い、処理結果を応答する。例えば、サービスノード20は、ゲートウェイとして機能し、ユーザが操作するクライアントコンピュータ(図示を省略している)から要求を受け付け、要求に応じて次に通信すべきサービスノードとの連携を行う。サービスノード20,20a,20b,20c,…のうちの何れのサービスノードの組が連携するかは、ユーザの要求に応じて異なる。ユーザの1つの要求に対し、当該要求に対する応答が生成されるまでに、各サービスノードの間で送受信される一連の通信データ(あるいは通信データを分割した分割データを運ぶためのパケット)の流れを、「データフロー」と呼ぶ。通信データは、例えば、OSI(Open System Interconnection)参照モデルにおけるレイヤ7のプロトコル(例えば、HTTPやHTTPS(HTTP Secure)など)により送受信され得る。
コレクタノード30は、サービスノード20,20a,20b,20c,…が提供するサービスの連携による処理性能をモニタリングする。ただし、サービスノード20,20a,20b,20c,…の間では、大量の通信データが送受信されるため、サンプリング対象の一部のデータフローに絞ってモニタリングを行う。サンプリング対象のデータフローは、例えばゲートウェイであるサービスノード20(あるいは図示を省略している他のノード)により、ユーザの所定回数の要求ごとに生じたデータフロー、または、所定の時間間隔ごとのユーザの要求に対して生じたデータフローなどのように決定される。
例えば、サービスノード20は、サンプリング対象のデータフローに属する通信データのヘッダ(HTTPヘッダなど)に、サンプリング対象であることを示す所定の識別情報を挿入する。すると、当該識別情報が挿入された通信データを受信した他のサービスノードは、当該識別情報により、受信した通信データがサンプリング対象のデータフローであると判断できる。当該他のサービスノードは、通信データのヘッダから識別情報を除去し、自ノードによる処理を実行して、処理結果を含む通信データを生成し、生成した通信データに識別情報を追加して、当該通信データを次のサービスノードに転送する。
サービスノード20,20a,20b,20c,…それぞれは、サンプリング対象の通信データを受信したタイミングや、次のサービスノードに通信データを送信したタイミングなどに、所定の通知パケットをコレクタノード30に送信する。通知パケットは、サンプリング対象の通信データ(あるいはパケット)が転送されたことをコレクタノード30に通知するためのパケットである。コレクタノード30は、サンプリング対象のデータフローに対する各通知パケットの受信時刻を記録し、記録した受信時刻の時間差によって、サンプリング対象のデータフローに対応する一連のサービスの連携による処理性能を計測し得る。
このとき、計測された処理性能によっては、サンプリング対象のデータフローに対応するパケットを取得し、分析したいことがある。コレクタノード30による上記のモニタリングでは、アプリケーションレベルでの遅延を分析し得るものの、ネットワーク40の通信路に起因する遅延などを分析するには不十分だからである。
そこで、パケット解析装置10は、サービスノード間、および、各サービスノードとコレクタノード30との間で通信されるパケットを収集し、収集したパケットからサンプリング対象のデータフローに対応するパケット群を推定する機能を提供する。
記憶部11は、RAM(Random Access Memory)やTCAM(Ternary Content Addressable Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部11は、コレクタノード30のアドレスの情報を記憶する。アドレスの情報は、例えば、コレクタノード30のIP(Internet Protocol)アドレスの情報である。また、アドレスの情報は、IPアドレスに加えて、TCPのポート番号を含んでもよい。また、記憶部11は、処理部12により収集されたパケットを記憶する。収集されたパケットには、パケット解析装置10への当該パケットの到着時刻を示すタイムスタンプが付与される。
処理部12は、サービスノード20,20a,20b,20c,…(複数の第1のノード)とコレクタノード30(第2のノード)とを含む複数のノード間で送信されるパケットを収集し、記憶部11に格納する。サービスノード20,20a,20b,20c,…は、前述のように、サービスを提供し、互いに通信する。コレクタノード30は、前述のように、各サービスノードからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する。
例えば、ネットワーク40における所定のスイッチ(図示を省略している)が、サービスノード20,20a,20b,20c,…の間、および、各サービスノードとコレクタノード30との間で送受信されるパケットを複製する。当該スイッチは、複製したパケットをパケット解析装置10に送る。処理部12は、スイッチにより複製されたパケットを受信し、受信したパケットに現時刻(到着時刻)の情報(タイムスタンプ)を付与して記憶部11に格納する。
ここで、一例として、記憶部11に記憶されるパケットは、データフローf1,f2,f3に対応するパケット群、および、通知パケット群n1を含む。シーケンス図A1は、これらのパケットの各ノードによる送受信タイミング(ただし、パケット解析装置10により付与されたタイムスタンプによって推定される送受信タイミング)を示す。シーケンス図A1の上側から下側へ向かう方向が時間の正方向である。
データフローf1は、要求f11,f12および応答f13,f14に対応するパケット群を含む。要求f11は、サービスノード20からサービスノード20bへの要求である。要求f12は、要求f11に応じて送信される、サービスノード20bからサービスノード20cへの要求である。応答f13は、サービスノード20cからサービスノード20bへの応答である。応答f14は、サービスノード20bからサービスノード20への応答である。
データフローf2は、要求f21,f22,f23および応答f24,f25,f26に対応するパケット群を含む。要求f21は、サービスノード20からサービスノード20aへの要求である。要求f22は、要求f21に応じて送信される、サービスノード20aからサービスノード20bへの要求である。要求f23は、要求f22に応じて送信される、サービスノード20bからサービスノード20cへの要求である。応答f24は、サービスノード20cからサービスノード20bへの応答である。応答f25は、サービスノード20bからサービスノード20aへの応答である。応答f26は、サービスノード20aからサービスノード20への応答である。
データフローf3は、要求f31,f32,f33および応答f34,f35,f36に対応するパケット群を含む。要求f31は、サービスノード20からサービスノード20aへの要求である。要求f32は、要求f31に応じて送信される、サービスノード20aからサービスノード20bへの要求である。要求f33は、要求f32に応じて送信される、サービスノード20bからサービスノード20cへの要求である。応答f34は、サービスノード20cからサービスノード20bへの応答である。応答f35は、サービスノード20bからサービスノード20aへの応答である。応答f36は、サービスノード20aからサービスノード20への応答である。
通知パケット群n1は、パケットn11,n12,n13,n14を含む。パケットn11は、サービスノード20からコレクタノード30への通知パケットである。パケットn12は、サービスノード20aからコレクタノード30への通知パケットである。パケットn13は、サービスノード20bからコレクタノード30への通知パケットである。パケットn14は、サービスノード20cからコレクタノード30への通知パケットである。
処理部12は、収集したパケットのうち、コレクタノード30を宛先とする複数の通知パケットを特定する。前述のように、コレクタノード30のアドレスの情報は、記憶部11に予め格納されている。例えば、処理部12は、収集したパケットのIPヘッダに含まれる宛先IPアドレスを参照して、コレクタノード30のアドレスを宛先アドレスとするパケットを、通知パケットと特定する。なお、パケットの宛先は、パケットの宛先IPアドレスと、パケットのTCPヘッダに含まれる宛先ポート番号との組み合わせによって決定されてもよい。
例えば、処理部12は、シーケンス図A1で示される収集パケットから、コレクタノード30を宛先とするパケットn11,n12,n13,n14それぞれを通知パケットと特定する。
処理部12は、特定した複数の通知パケットの複数の送信元アドレスを取得する。例えば、処理部12は、特定した通知パケットのIPヘッダに含まれる送信元アドレスを取得する。通知パケットは、サンプリング対象のデータフローに対応するパケットが転送された際に、何れかのサービスノードによって送信される。よって、ここで取得された送信元アドレスは、当該データフローに対応するパケットの転送に関与したサービスノードのアドレスを示す。
例えば、処理部12は、パケットn11の送信元アドレスとして、サービスノード20のアドレスを取得する。処理部12は、パケットn12の送信元アドレスとして、サービスノード20aのアドレスを取得する。処理部12は、パケットn13の送信元アドレスとして、サービスノード20bのアドレスを取得する。処理部12は、パケットn14の送信元アドレスとして、サービスノード20cのアドレスを取得する。
処理部12は、取得した複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出する。候補パケットは、サンプリング対象のデータフローに対応するパケットの候補である。前述のように、処理部12により取得された複数の送信元アドレスは、何れもサンプリング対象のデータフローに対応するパケットの転送に関与したサービスノードのアドレスを示す。したがって、当該複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする候補パケットは、サンプリング対象のデータフローに対応するパケットである可能性があると推定される。一方、当該複数の送信元アドレス以外のアドレスを送信元または宛先とするパケットは、サンプリング対象のデータフローに対応するものではない(候補外)と推定される。
例えば、シーケンス図A1で示される収集パケットに対して、処理部12は、サービスノード20,20a,20b,20cそれぞれのアドレスを取得する。データフローf1,f2,f3に属する各パケットは、送信元および宛先が何れも、サービスノード20,20a,20b,20cのアドレスに相当する。したがって、データフローf1,f2,f3に属する各パケットは候補パケットである。
処理部12は、抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組を決定する。例えば、処理部12は、候補パケットの送信元アドレスおよび宛先アドレスの組、および、候補パケットの時系列に基づいて、データフローf1,f2,f3を検出する。そして、処理部12は、データフローf1,f2,f3のうち、パケットn11,n12,n13,n14の送信元である4つのサービスノードが関与するデータフローを候補フローとし、それ以外のデータフローを候補外とする。シーケンス図A1の例では、データフローf1は、関与するサービスノードが3つであるため、候補外となる。
候補フローが1つの場合、処理部12は、当該候補フローをサンプリング対象のデータフローと決定し、当該候補フローに対応するパケットの組を、サンプリング対象のデータフローに対応するパケットの組と決定する。
一方、候補フローが複数の場合、処理部12は、パケットn11,n12,n13,n14(各通知パケット)の第1のタイムスタンプと、候補フローに属するパケットの第2のタイムスタンプとの比較により、候補を絞り込む。具体的には、処理部12は、複数の候補フローのうち、第1のタイムスタンプと第2のタイムスタンプとの時間差が短い(第1のタイムスタンプに最も近い第2のタイムスタンプに対応する)候補フローを、サンプリング対象のデータフローと決定する。そして、処理部12は、サンプリング対象のデータフローと決定した候補フローに対応するパケットの組を、サンプリング対象のデータフローに対応するパケットの組と決定する。
なお、第1のタイムスタンプと第2のタイムスタンプとの時間間隔を求める方法としては任意の方法を用いることができる。例えば、処理部12は、通知パケット群n1における代表パケット(例えば、最初のパケット)の第1のタイムスタンプと、候補フローの各パケットにおける代表パケット(例えば、最初のパケット)の第2のタイムスタンプとの時間差を求めてもよい。また、処理部12は、通知パケット群n1の各通知パケットのタイムスタンプの代表値(例えば、中央の時刻)を第1のタイムスタンプとし、候補フローの各パケットのタイムスタンプの代表値を第2のタイムスタンプとして時間差を求めてもよい。
シーケンス図A1の例では、処理部12は、候補フローであるデータフローf2に属する各パケットのタイムスタンプと、各通知パケットのタイムスタンプとに基づいて、第1の時間差を求める。また、処理部12は、候補フローであるデータフローf3に属する各パケットのタイムスタンプと、各通知パケットのタイムスタンプとに基づいて、第2の時間差を求める。第1の時間差は、第2の時間差よりも短い。処理部12は、第1の時間差と第2の時間差とを比較し、短い方の第1の時間差に対応するデータフローf2を、サンプリング対象のデータフローであると特定する。そして、処理部12は、データフローf2に対応するパケットの組(要求f21,f22,f23および応答f24,f25,f26を構成するパケットの組)を、サンプリング対象のデータフローに対応するパケットの組と決定する。
パケット解析装置10によれば、サービスを提供し互いに通信する複数の第1のノードと複数の第1のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第2のノードとを含む複数のノード間で送信されるパケットが収集される。収集したパケットのうち、第2のノードを宛先とする複数の通知パケットが特定される。特定した複数の通知パケットの複数の送信元アドレスが取得される。取得した複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットが、収集したパケットから抽出される。抽出した複数の候補パケットからサンプリング対象のデータフローに対応するパケットの組が決定される。
これにより、サンプリング対象のデータフローに属するパケットの推定を高速化できる。具体的には、HTTPヘッダなどのレイヤ7(アプリケーション層)の情報を解析しなくても、サンプリング対象のデータフローに属するパケットの組を決定でき、レイヤ7の情報の解析を行うよりも、処理を高速化できる。また、サンプリング対象のデータフローに属するパケットの組を用いたIP(レイヤ3)やTCP(レイヤ4)などの解析により、ネットワーク40における処理遅延の原因などの解析を迅速に開始できるようになる。
以下では、更に具体的な情報処理システムを例示して、パケット解析装置10の機能をより詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、解析装置100、ゲートウェイ200、サーバ300,300a,300b,…、スパンマネージャ400、スパンコレクタ500、ストアサーバ600,600a,…および管理端末700を有する。解析装置100、ゲートウェイ200、サーバ300,300a,300b,…、スパンマネージャ400、スパンコレクタ500、ストアサーバ600,600a,…および管理端末700は、ネットワーク50に接続されている。ネットワーク50は、例えば、データセンタなどにおけるLAN(Local Area Network)である。ネットワーク50は、ネットワーク60に接続されている。ネットワーク60は、例えば、WAN(Wide Area Network)やインターネットなどである。ネットワーク60には、クライアント800,900,…が接続されている。
第2の実施の形態の情報処理システムでは、サーバ300,300a,300b,…それぞれにおけるコンテナ基盤上で、種々のサービスをコンテナと呼ばれる単位で動作させる。コンテナは、サービスのインスタンスであるとも言える。コンテナの1つのグループ(ポッド(POD)と呼ばれる)が1つのサービスに対応する。このように、コンテナにより、サービス(あるいは当該サービスを提供するアプリケーション)を独立して各サーバに配備し、コンテナ間を接続することでサービスの連携を可能にする仕組みは、マイクロサービスアーキテクチャと呼ばれる。ユーザは、クライアント800,900,…を操作して、情報処理システムが提供するサービスを利用する。
ここで、コンテナは、第1の実施の形態のサービスノード20,20a,20b,20c,…(第1のノード)の一例と考えることができる。ただし、サービスの提供主体は、物理マシンまたは仮想マシンでもよい。サービスの提供主体として物理マシンまたは仮想マシンを考える場合、物理マシンまたは仮想マシンを第1の実施の形態のサービスノード20,20a,20b,20c,…(第1のノード)の一例と考えることができる。
解析装置100は、情報処理システムが提供する機能のモニタリングや性能の分析を行うサーバコンピュータである。解析装置100は、情報処理システムにおいてコンテナ間で通信されるパケットを収集し、収集したパケットに基づいて、情報処理システムが提供する機能のモニタリングや性能の分析を行う。解析装置100は、第1の実施の形態のパケット解析装置10の一例である。
なお、解析装置100は、上記のように汎用のサーバコンピュータにより実現されてもよいし、ロジックをFPGAなどによって実装可能なプログラマブル装置により実現されてもよい。また、解析装置100は、アグリゲータ(Aggregator)と呼ばれてもよい。
ゲートウェイ200は、クライアント800,900,…から要求を受信し、要求に応じて、サーバ300,300a,300b,…に配備されたコンテナに要求を送信するサーバコンピュータである。なお、ゲートウェイ200の機能は、サーバコンピュータ(物理マシン)上の仮想マシンまたはコンテナによって実現されてもよい。
サーバ300,300a,300b,…は、それぞれがコンテナ基盤を有し、コンテナ基盤上でPOD単位にサービスを動作させるサーバコンピュータである。1つのサーバ上では1以上のPODにより1以上のサービスが動作し得る。
スパンマネージャ400は、データフローのサンプリングタイミングを制御するサーバコンピュータである。ここで、比較的規模の大きな情報処理システムでは、データフローの数が多いため、トレース対象のデータフローは、例えば、所定のサンプリングアルゴリズムで決定される。サンプリングの割合は、システム管理者によってスパンマネージャ400に予め設定される。スパンマネージャ400は、クライアント800,900,…から受け付ける何番目の要求をサンプリング対象とするかを決定し、サンプリング対象の要求を示す情報をゲートウェイ200に通知する。なお、スパンマネージャ400の機能は、サーバコンピュータ(物理マシン)上の仮想マシンまたはコンテナによって実現されてもよい。
スパンコレクタ500は、スパンに関する情報を収集するサーバコンピュータである。例えば、スパンコレクタ500は、ゲートウェイ200によって、サンプリング対象の要求が何れかのサーバ上のコンテナに転送され、コンテナ間の通信が発生した場合に、ゲートウェイ200や該当のコンテナを動作させるサーバからスパンの情報を受信する。ここで、スパンは、サービスの名称や当該サービスを呼び出す他のサービスとの関係(あるいは、当該サービスが呼び出す他のサービスの関係でもよい)の情報を含むデータユニットである。スパンは、該当のサービスの処理開始時刻や実行所要時間などの情報を含み得る。スパンは、スパンID(IDentifier)によって識別される。スパンIDは、各サーバによりスパンごとに付与される。なお、スパンコレクタ500の機能は、サーバコンピュータ(物理マシン)上の仮想マシンまたはコンテナによって実現されてもよい。スパンコレクタ500は、第1の実施の形態のコレクタノード30(第2のノード)の一例である。
ストアサーバ600,600a,…は、解析装置100により収集されたパケットを記憶するサーバコンピュータである。ストアサーバ600,600a,…は、NAS(Network Attached Storage)でもよいし、FC(Fibre Channel)などのインタフェースにより解析装置100に接続されるストレージ装置でもよい。
管理端末700は、システム管理者によって操作されるクライアントコンピュータである。管理端末700は、解析装置100によるパケットの解析結果を取得し、管理端末700のディスプレイに当該解析結果を表示させる。システム管理者は、管理端末700のディスプレイに表示された解析結果に基づいて、情報処理システムの運用管理を行う。
クライアント800,900,…は、ユーザが操作するクライアントコンピュータである。クライアント800,900,…それぞれは、情報処理システムにおける処理の要求を、ネットワーク60を介して、ゲートウェイ200に送信する。クライアント800,900,…それぞれは、当該要求に対する応答をゲートウェイ200から受信する。
図3は、解析装置のハードウェア例を示すブロック図である。
解析装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106およびNIC(Network Interface Card)107,107a,…を有する。なお、CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、解析装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、解析装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、解析装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、解析装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部105は、解析装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、解析装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107,107a,…は、ネットワーク50に接続され、ネットワーク50を介して他のコンピュータと通信を行うインタフェースである。NIC107,107a,…は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
図4は、スパンの例を示す図である。
一例として、サービス間の通信は、HTTPを用いて行われる(ただし、他のプロトコルが用いられてもよい)。Webフレームワーク70は、クライアント800,900,…からのある要求に応じてサービス間の連携によって実現される機能の一単位である。Webフレームワーク70におけるサービス間の一連の通信を1つのトレースと呼ぶ。1つのデータフロー(あるいはフロー)は、1つのトレースに対応する。例えば、Webフレームワーク70は、サービス71,72,73,74,75の連携により実現される。サービス71,72は、RPC(Remote Procedure Call)サービスである。サービス73,74,75は、所定のAPI(Application Programming Interface)を提供するサービス(例えば、Webサービス)である。
サービス71は、サービス72を呼び出す。サービス72は、サービス73,74を呼び出す。サービス74は、サービス75を呼び出す。これらのサービス間の連携によって、所定の機能が実現される。前述のように、スパンは、あるサービスと、当該サービスから他のサービスへの呼び出し関係により定義される。例えば、第1のスパンは、サービス72がサービス71から呼び出されるという関係を示す。また、例えば、第2のスパンは、サービス73がサービス72から呼び出されるという関係を示す。この場合、第1のスパンは第2のスパンを発生させる(あるいは、第1のスパンは第2のスパンの前提となる)。したがって、第1のスパンを親スパン、第2のスパンを子スパンとする親子関係がある。
図5は、HTTPヘッダに追加されるトレース情報の例を示す図である。
トレース情報80は、サンプリング対象のデータフローの通信データのHTTPヘッダに対し、ゲートウェイ200により追加される。
トレース情報80の1行目〜3行目には、「traceId」の情報が示されている。「traceId」は、サンプリング対象のデータフロー(トレース)の識別情報(トレースID)である。2行目の「String value」の設定値は、トレースIDの具体的な値を示す。
トレース情報80の4行目〜6行目には、「name」の情報が示されている。「name」は、スパンに対応するサービス名である。5行目の「String value」の設定値は、サービス名の具体的な値を示す。
トレース情報80の7行目〜9行目には、「id」の情報が示されている。「id」は、スパンの識別情報(スパンID)である。8行目の「String value」の設定値は、スパンIDの具体的な値を示す。
トレース情報80の10行目〜12行目には、「parentId」の情報が示されている。「parentId」は、idで示されるスパンの呼び出し元のスパン(親スパン)の識別情報(親スパンID)である。11行目の「String value」の設定値は、親スパンIDの具体的な値を示す。
ここで、ゲートウェイ200は、クライアント800,900,…からサンプリング対象の要求を受信した場合に、当該要求に対応する通信データにトレースIDと、自サービスに対応するスパンIDを付与する。なお、ゲートウェイ200は、親スパンIDとして、トレースIDと同じ値を付与するものとする(ゲートウェイ200が要求を受信した際には、親スパンが存在しないため)。
サーバ300,300a,300b,…それぞれも、ゲートウェイ200または他のサーバから受信した通信データに対し、トレース情報80と同様のフォーマットの情報を追加する。サーバ300,300a,300b,…は、自サーバにおけるサービスに応じた「name」、「id」、「parentId」の値をトレース情報80に設定する。
図6は、スパンコレクタによるスパン情報の収集例を示す図である。
スパンマネージャ400は、サンプリング対象の要求(サンプリング対象リクエスト)を示す情報を、ゲートウェイ200に通知する。例えば、スパンマネージャ400は、ゲートウェイ200が受け付けた要求の数をカウントし、カウントした数に応じて、サンプリング対象を決定してもよい。あるいは、スパンマネージャ400は、前回サンプリング対象を通知した時刻からの経過時間を計測し、当該経過時間に基づいてサンプリング対象を決定してもよい。
ゲートウェイ200は、例えば、クライアント800から受信した第1のサンプリング対象リクエストに対して、HTTPヘッダにトレース情報(例えば、トレース情報80)を追加する。ゲートウェイ200は、当該リクエストを処理するサーバ(例えば、サーバ300)に、トレース情報を追加した第1のサンプリング対象リクエストを送信する。
サーバ300(図示を省略)は、テナントのPOD301を有する。POD301は、プロキシ310およびコンテナ320を有する。サーバ300a(図示を省略)は、テナントのPOD301aを有する。POD301aは、プロキシ310aおよびコンテナ320aを有する。サーバ300b(図示を省略)は、テナントのPOD301bを有する。POD301bは、プロキシ310bおよびコンテナ320bを有する。
POD301,301a,301bそれぞれは、所定のサービスを提供するコンテナのグループである。POD301,301a,301bそれぞれは、1以上のコンテナを含む。POD301の前段のサービスは、ゲートウェイ200におけるゲートウェイサービスである。POD301の次段のサービスは、POD301aのサービスである。POD301aの前段のサービスは、POD301のサービスである。POD301aの次段のサービスは、POD301bである。POD301bの前段のサービスは、POD301aのサービスである。
プロキシ310,310a,310bそれぞれは、POD間の通信を中継する。プロキシ310,310a,310bそれぞれは、前段のPOD(あるいはプロキシ)から要求を受信して自POD(自プロキシに対応するコンテナ)に転送し、自PODから受け付けた要求を次段のPOD(あるいはプロキシ)に送信する。また、プロキシ310,310a,310bそれぞれは、次段のPOD(あるいはプロキシ)から応答を受信すると、当該応答を自コンテナに転送し、自PODから受け付けた応答を前段のPOD(あるいはプロキシ)に送信する。プロキシ310,310a,310bは、例えば、サイドカー(Sidecar)と呼ばれるコンテナによって実現され得る。サイドカーは、自PODにおけるメインコンテナに付随する補助コンテナである。
プロキシ310は、トレース情報が付加された第1のサンプリング対象リクエストをゲートウェイ200から受信すると、第1のサンプリング対象リクエストからトレース情報を除去して、コンテナ320に転送する。プロキシ310は、POD301から第1のサンプリング対象リクエストに応じた次段のサービスに対する第2のサンプリング対象リクエストを受け付けると、第2のサンプリング対象リクエストにトレース情報を追加して、プロキシ310aに送信する。
プロキシ310aは、トレース情報が付加された第2のサンプリング対象リクエストをプロキシ310から受信すると、第2のサンプリング対象リクエストからトレース情報を除去して、コンテナ320aに転送する。プロキシ310aは、コンテナ320aから第2のサンプリング対象リクエストに応じた次段のサービスに対する第3のサンプリング対象リクエストを受け付けると、第3のサンプリング対象リクエストにトレース情報を追加して、プロキシ310bに送信する。
プロキシ310bは、トレース情報が付加された第3のサンプリング対象リクエストをプロキシ310aから受信すると、第3のサンプリング対象リクエストからトレース情報を除去して、コンテナ320bに転送する。プロキシ310bは、コンテナ320bから第3のサンプリング対象リクエストに応じた応答を受け付けると、当該応答を、プロキシ310aに送信する。応答は、送信順とは逆の順にPODを辿り、ゲートウェイ200を介して、要求元のクライアントに転送される。
ゲートウェイ200は、スパンマネージャ400により指示されたサンプリング対象リクエストを受信すると、ゲートウェイ200が提供するゲートウェイサービスに対応するスパンの情報(スパン情報)を、スパンコレクタ500に送信する。プロキシ310,310a,310bは、トレース情報が付加されたサンプリング対象リクエストを受信すると、自PODが提供するサービスに対応するスパン情報をスパンコレクタ500に送信する。スパンコレクタ500では、こうして収集されたスパン情報に基づいて、サンプリング対象のデータフローに関して、アプリケーションレベルの解析を行える。
一方、サンプリング対象のデータフローに関し、より低いレイヤ(例えば、OSI参照モデルのレイヤ3やレイヤ4など)の解析を行うことで、通信路などにおけるパケットレベルでの通信品質などを計測することがある。そのために、解析装置100は、ネットワーク50に属する所定のスイッチから、ゲートウェイ200およびサーバ300,300a,300b,…の間で送受信されるパケットの複製を収集する。
図7は、パケット群に対するHTTPヘッダの例を示す図である。
パケット群81は、HTTPヘッダ82に相当する情報を含む。1つのパケットは、IPヘッダ、TCPヘッダおよびペイロードを含む。HTTPヘッダ82の情報は、パケット群81に含まれる複数のパケットの複数のペイロードにわたって存在している。すなわち、各パケットのペイロードは、HTTPヘッダ82の情報の一部を含んでいる。
例えば、解析装置100が、収集した全てのパケットの中から、サンプリング対象のデータフローに対応するパケットを特定することが考えられる。この場合、解析装置100は、パケット群81を分析してHTTPヘッダ82を取得し、HTTPヘッダ82を参照して、サンプリング対象のデータフローに対応するトレースID、スパンIDおよび親スパンIDが含まれるかを確認し得る。しかし、HTTPヘッダ82に基づくアプリケーションレベルの解析を行っていると、解析に時間がかかり、パケットの特定が遅延する。このため、例えば、リアルタイムでのモニタリングを行えない。
そこで、解析装置100は、受信したパケット(複製されたパケット)にタイムスタンプを付与して当該パケットを記録する。解析装置100は、パケットのタイムスタンプおよびパケットに含まれる宛先IPアドレス、送信元IPアドレス、宛先ポート番号および送信元ポート番号の情報に基づいて、サンプリング対象のデータフローに対応するパケットを特定する。
図8は、パケットに含まれるヘッダの例を示す図である。
図8(A)は、パケットのIPヘッダ91を例示する。IPヘッダ91は、プロトコル、送信元IPアドレスおよび宛先IPアドレスのフィールドを含む。プロトコルは、上位層のプロトコル(TCPやUDP(User Datagram Protocol)など)を識別するための情報である。送信元IPアドレスは、パケットの送信元ノードのIPアドレスである。宛先IPアドレスは、パケットの宛先ノードのIPアドレスである。
図8(B)は、パケットのTCPヘッダ92を例示する。TCPヘッダ92は、送信元ポート番号および宛先ポート番号のフィールドを含む。送信元ポート番号は、パケットの送信元ノードにおいて、当該パケットを処理したサービスに対応する情報である。宛先ポート番号は、パケットの宛先ノードにおいて、当該パケットを処理するサービスに対応する情報である。
図9は、解析装置の機能例を示すブロック図である。
解析装置100は、フィルタ記憶部120、トレース推定情報記憶部130、候補トレース記憶部140、タイムスタンプ生成部160、スパン情報解析部170、候補トレース生成部180および通信管理部190を有する。
フィルタ記憶部120、トレース推定情報記憶部130および候補トレース記憶部140は、RAM102やHDD103の記憶領域を用いて実現される。タイムスタンプ生成部160、スパン情報解析部170、候補トレース生成部180および通信管理部190は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
フィルタ記憶部120は、フィルタテーブルを記憶する。フィルタテーブルは、収集対象のパケットを絞り込むための情報である。収集対象のパケットは、フィルタテーブルにより、送信元や宛先が各PODやスパンコレクタに対応するアドレスであるものに絞られる。
トレース推定情報記憶部130は、トレース推定テーブルを記憶する。トレース推定テーブルは、サンプリング対象のデータフロー(トレース)を推定するためのIPアドレスを示す情報である。
候補トレース記憶部140は、候補トレース管理テーブルおよびスパン管理テーブルを記憶する。候補トレース管理テーブルは、サンプリング対象のデータフロー(トレース)の候補を示す情報である。スパン管理テーブルは、サンプリング対象のデータフローの候補に属するスパンを示す情報である。
タイムスタンプ生成部160は、ネットワーク50に属するスイッチにより複製されたパケットを受信する。タイムスタンプ生成部160は、時刻挿入部161、パケット識別部162およびフィルタ設定部163を有する。
時刻挿入部161は、受信したパケットに受信時刻を示すタイムスタンプを付与する。
パケット識別部162は、フィルタ記憶部120に記憶されたフィルタテーブルに基づいて、受信したパケットをドロップ(破棄)するか、当該パケットをスパン情報解析部170による処理の対象とするか否かを判定する。フィルタ設定部163は、通信管理部190により取得されたフィルタの情報に基づいて、フィルタテーブルを生成し、フィルタテーブルをフィルタ記憶部120に格納する。
スパン情報解析部170は、タイムスタンプ生成部160によるフィルタ後のパケットに基づいて、トレース推定テーブルを生成し、トレース推定情報記憶部130に格納する。スパン情報解析部170は、データ確認部171、スパン生成先確認部172およびトレース推定情報管理部173を有する。
データ確認部171は、PODからのパケットがDATAパケットであるか否かを確認する。例えば、データ確認部171は、パケットのTCPヘッダ92におけるTCPフラグ、あるいは、シーケンス番号やACK番号などを確認することで、当該パケットがDATAパケットであるか否かを確認し得る。
スパン生成先確認部172は、データ確認部171により特定されたDATAパケットの送信先IPアドレスを確認し、送信先IPアドレスがスパンコレクタ500のIPアドレスであるDATAパケットを特定し、トレース推定情報管理部173に供給する。
トレース推定情報管理部173は、スパン生成先確認部172から取得したDATAパケットの送信元IPアドレスを、タイムスタンプとともに、トレース推定情報記憶部130に記憶されたトレース推定情報テーブルに記録する。
候補トレース生成部180は、候補トレース管理テーブルおよびスパン管理テーブルを生成し、候補トレース記憶部140に格納する。候補トレース生成部180は、パケットトレース割当部181、スパンパス推定部182および候補トレース推定部183を有する。
パケットトレース割当部181は、各パケットに基づいて、候補トレース管理テーブルおよびスパン管理テーブルを生成し、候補トレース記憶部140に格納する。
スパンパス推定部182は、パケットの通信情報(送信元IPアドレス/送信元ポート番号および宛先IPアドレス/宛先ポート番号)から、候補トレース管理テーブルに登録されたトレースに属するスパンの親子関係を特定する。スパンパス推定部182は、当該トレースに属するスパンの通信情報を、スパン管理テーブルに記録する。
候補トレース推定部183は、トレース推定情報テーブルに基づいて、候補トレース管理テーブルおよびスパン管理テーブルで管理されるデータフローのうち、サンプリング対象のデータフローに対応するパケットを推定する。
通信管理部190は、他のコンピュータとの通信を行う。通信管理部190は、通信情報整理部191、通信情報伝送部192およびサンプリング管理部193を有する。
通信情報整理部191は、フィルタの情報からPODやスパンコレクタ500のIPアドレスやTCPポート番号などの通信情報を取得する。
通信情報伝送部192は、通信情報整理部191により取得された通信情報を、候補トレース生成部180に供給する。
サンプリング管理部193は、データフローのサンプリングが行われる期間を推定する。サンプリング管理部193は、推定した期間において収集されたパケットからサンプリング対象のデータフローに対応するパケットを特定するように、タイムスタンプ生成部160、スパン情報解析部170および候補トレース生成部180を制御する。
図10は、フィルタテーブルの例を示す図である。
フィルタテーブル121は、項番、フラグ、IPアドレスおよびポート番号の項目を含む。
項番の項目には、レコードを識別するための番号が登録される。フラグの項目には、該当のレコードがPODの情報であるかスパンコレクタ500の情報であるかを識別するためのフラグが登録される。フラグ「P」は、PODを示す。フラグ「C」は、スパンコレクタ500を示す。IPアドレスの項目には、該当のノード(PODまたはスパンコレクタ500)のIPアドレスが登録される。ポート番号の項目には、該当のノード(PODまたはスパンコレクタ500)のポート番号が登録される。
例えば、フィルタテーブル121には、項番が「0」、フラグが「P」、IPアドレスが「10.24.221.32」、ポート番号が「45789」というレコードが登録されている。
図11は、トレース推定情報テーブルの例を示す図である。
トレース推定情報テーブル131は、スパンインデックス、IPアドレスおよびタイムスタンプの項目を含む。
スパンインデックスの項目には、レコードを識別するための識別情報であるスパンインデックスが登録される。スパンインデックスは「0」から始まり、レコードが追加されるたびにインクリメントされる。IPアドレスの項目には、スパンコレクタ500を宛先とするパケットから取得された送信元IPアドレスが登録される。タイムスタンプの項目には、スパンコレクタ500を宛先とするパケットを受信した時刻を示すタイムスタンプが登録される。
例えば、トレース推定情報テーブル131には、スパンインデックスが「0」、IPアドレスが「10.24.221.32」、タイムスタンプが「19:22:43.800129」というレコードが登録されている。
図12は、候補トレース管理テーブルの例を示す図である。
候補トレース管理テーブル141は、トレースID、ストアサーバID、候補フラグおよび終了フラグの項目を含む。
トレースIDの項目には、トレース(データフロー)の識別情報であるトレースIDが登録される。ストアサーバIDの項目には、当該トレースIDに対応するパケットの保存先のストアサーバ600,600a,…の識別情報が登録される。候補フラグの項目には、サンプリング対象のデータフローであるか否かを示す候補フラグが登録される。候補フラグ「T(True)」は、サンプリング対象のデータフローであることを示す。候補フラグ「F(False)」は、サンプリング対象のデータフローでないことを示す。候補フラグの項目の初期値は、「F」である。終了フラグの項目には、該当のデータフローが終了しているか否かを示す終了フラグが登録される。「データフローが終了している」とは、要求元のクライアントに対して、FINパケットが送信済であることを示す。終了フラグ「T」は、データフローが終了していることを示す。終了フラグ「F」は、データフローが終了していないことを示す。終了フラグの初期値は、「F」である。
例えば、候補トレース管理テーブル141には、トレースIDが「0」、ストアサーバIDが「0」、候補フラグが「T」、終了フラグが「T」というレコードが登録されている。
図13は、スパン管理テーブルの例を示す図である。
スパン管理テーブル142,…,147は、候補トレース管理テーブル141のトレースIDごとに生成される。以下では、スパン管理テーブル142を主に例示して説明するが、他のスパン管理テーブルも同様のデータ構造をもつ。
スパン管理テーブル142は、トレースID、スパンID、タイムスタンプ、送信元IPアドレス、送信元ポート番号、宛先IPアドレスおよび宛先ポート番号の項目を含む。
トレースIDの項目には、トレースIDが登録される。スパンIDの項目には、レコードを識別する番号が登録される。スパンIDは「0」から始まり、スパン管理テーブル142にレコードが追加されるたびにインクリメントされる。タイムスタンプの項目には、該当のレコードに対応するパケットを受信した時刻を示すタイムスタンプが登録される。送信元IPアドレスの項目には、当該パケットの送信元IPアドレスが登録される。送信元ポート番号の項目には、当該パケットの送信元ポート番号が登録される。宛先IPアドレスの項目には、当該パケットの宛先IPアドレスが登録される。宛先ポート番号の項目には、当該パケットの宛先ポート番号が登録される。
例えば、スパン管理テーブル142には、トレースIDが「0」、スパンIDが「0」、タイムスタンプが「19:22:42.000125」、送信元IPアドレスが「10.24.221.32」、送信元ポート番号が「4828」、宛先IPアドレスが「10.4.21.35」、宛先ポート番号が「54901」というレコードが登録されている。
また、スパン管理テーブル142によれば、トレースID「0」のデータフローには、スパンIDが「0」〜「4」である5つのスパンが属することが分かる。あるデータフローにおいて、あるスパンIDに対応する宛先IPアドレスおよび宛先ポート番号は、次のスパンIDに対応する送信元IPアドレスおよび送信元ポート番号となる。
図14は、マッチングタイミングの予測例を示す図である。
グラフG1は、サンプリング管理部193によるマッチングタイミングの予測例を示す。例えば、サンプリング管理部193は、データフローのサンプリング間隔を学習し、次にサンプリングされる時間間隔を予測して、直前のサンプリング時刻から当該予測した時間間隔の経過後の時刻を、スパンのマッチングタイミングとして使用する。例えば、サンプリング管理部193は、データフローがサンプリングされた過去の時間間隔ΔTa,ΔTb,ΔTcの実績に基づいて、次のサンプリングまでの時間間隔ΔTd(次のマッチングタイミング)を予測する。サンプリング管理部193による予測には、移動平均法、自己回帰モデルおよび自己回帰移動平均モデルなどによる解析方法を用いることができる。サンプリング管理部193は、例えば、予測したマッチングタイミングの前後の所定期間を、パケット収集の対象期間(スパンマッチング期間)とすることが考えられる。
図15は、レイヤ間の関係を示す図である。
図15では、HTTPのメッセージレイヤおよびTCP/IPのパケットレイヤを例示する。例えば、POD301は、POD301aに対して、HTTPにより通信データを送信する。そのため、POD301は、通信データを分割したDATAパケットをPOD301aに送信し、DATAパケットの受信応答として、ACPパケットをPOD301aから受信する。これを複数回繰り返すことで、POD301からPOD301aに対する通信データの送信が行われる。POD301aからPOD301bに対する通信データの送信についても同様である。また、POD301,301a,301bそれぞれからスパンコレクタ500に対するスパン情報に関する通信データの送信についても同様である。
図16は、情報処理システムの処理例を示す図である。
クライアント800,900は、ネットワーク50を介して、テナントのPOD群330が提供するサービスにアクセスする。これにより、POD群330に属するPOD間で通信が発生する。該当の通信がサンプリング対象の場合、各PODは、スパンコレクタ500にスパン情報を伝送する。これらPOD間の通信に伴うパケットおよびスパン情報の伝送に伴うパケット(通知パケット)を含む全パケットは、ネットワーク50に属するスイッチにより複製(ミラー)され、解析装置100により複製されたパケットが収集される。
解析装置100は、スパンマネージャ400における管理コンポーネント410からフィルタ情報(例えば、iptablesの情報)を取得する(フィルタ情報の取得元は、スパンマネージャ400以外のノードでもよい)。解析装置100は、当該フィルタ情報に基づいて、受信したパケットから、クライアント800,900,…からのパケット、POD間の通信に伴うパケットおよびスパン情報の伝送に伴うパケット以外のパケット(無関係なパケット)をフィルタする。解析装置100は、収集したパケットをストアサーバ600,600a,…に保存する。また、解析装置100は、ストアサーバ600に保存したパケットに基づいて、サンプリング対象のデータフローに対応するパケットを抽出し、当該パケットの解析結果を、管理端末700に提供する。
次に、解析装置100による具体的な処理手順を説明する。
図17は、パケット収集例を示すフローチャートである。
下記の手順は、スパンマッチング期間(次のマッチングタイミングの前後の所定期間)において、解析装置100が複製されたパケットを受信するたびに開始される。
(S10)時刻挿入部161は、受信したパケットにタイムスタンプを挿入する。
(S11)パケット識別部162は、フィルタ記憶部120に記憶されたフィルタテーブル121を参照して、受信したパケットの送信元IPアドレス/ポート番号の組および宛先IPアドレス/ポート番号の組が、何れも、フィルタテーブル121に登録されたIPアドレス/ポート番号の組に合致しているか否かを判定する。合致している場合、ステップS12に処理が進む。合致していない場合、ステップS14に処理が進む。
(S12)スパン生成先確認部172は、フィルタテーブル121におけるフラグを参照して、受信したパケットがスパンコレクタ500とPODとの通信であるか否かを判定する。受信したパケットがスパンコレクタ500とPODとの通信である場合、ステップS13に処理が進む。受信したパケットがスパンコレクタ500とPODとの通信でない場合、ステップS15に処理が進む。なお、受信したパケットがスパンコレクタ500とPODとの通信である場合、当該パケットの宛先IPアドレス/宛先ポート番号の組がスパンコレクタ500のIPアドレス/ポート番号を示し、送信元IPアドレス/送信元ポート番号の組がPODのIPアドレス/ポート番号を示す。
(S13)データ確認部171は、受信したパケットのTCPヘッダ92におけるTCPフラグ(flag)がDATAを示すか否かを判定する。DATAを示す場合、図19のステップS28に処理が進む。DATAではない場合、ステップS14に処理が進む。
(S14)パケット識別部162(ステップS11 Noの場合)またはデータ確認部171(ステップS13 Noの場合)は、受信したパケットを破棄する。そして、今回受信したパケットに関するパケット収集処理が終了する。
(S15)データ確認部171は、受信したパケットのTCPヘッダ92におけるTCPフラグがSYNを示すか否かを判定する。SYNを示す場合、ステップS16に処理が進む。SYNではない場合、ステップS21に処理が進む。ここで、SYNは、クライアント800,900,…からゲートウェイ200に対する要求の送信開始(データフローの開始に相当)を示す。
(S16)パケットトレース割当部181は、受信したパケットに対応するトレース(データフロー)の蓄積先のストアサーバ600を選択する。例えば、ストアサーバ600が複数の場合、ラウンドロビンや該当のパケット(SYNパケット)に含まれる情報のハッシュ値などによって蓄積先を選択することが考えられる。
(S17)パケットトレース割当部181は、候補トレース管理テーブルで今回受信したパケットに対応するトレース(データフロー)に対して新トレースIDを割当てる。
(S18)パケットトレース割当部181は、新トレースIDに対応する終了フラグを「F」に設定する。
(S19)パケットトレース割当部181は、新たなスパン管理テーブルに新トレースIDに対応するパケットの情報を保存する。
(S20)パケットトレース割当部181は、選ばれた蓄積先のストアサーバ600に、今回受信したパケットを送信する。そして、今回受信したパケットに関するパケット収集処理が終了する。
(S21)データ確認部171は、受信したパケットのTCPヘッダ92におけるTCPフラグがFINを示すか否かを判定する。FINを示す場合、ステップS22に処理が進む。FINではない場合、図18のステップS23に処理が進む。ここで、FINは、ゲートウェイ200からクライアント800,900,…に対する応答の送信完了(データフローの終了に相当)を示す。
(S22)パケットトレース割当部181は、今回受信したFINパケットに対応するトレース(データフロー)を、候補トレース管理テーブル141から特定し、当該トレースの終了フラグを「T」に設定する。そして、今回受信したパケットに関するパケット収集処理が終了する。
図18は、パケット収集例(続き)を示すフローチャートである。
(S23)スパンパス推定部182は、受信したパケットに対応するPOD間(ゲートウェイ200とPODとの間を含む)の通信情報がスパン管理テーブルに登録済であるか否かを判定する。登録済の場合、ステップS27に処理が進む。登録済でない場合、ステップS24に処理が進む。
(S24)スパンパス推定部182は、受信したパケットに対して新スパンIDを割当てて、スパン管理テーブルに記録する。ここで、スパンパス推定部182は、既存の各スパン管理テーブルにおける最新のスパンIDに対応する宛先IPアドレスおよび宛先ポート番号の第1の組と、受信したパケットの送信元IPアドレスおよび送信元ポート番号の第2の組とを照合する。スパンパス推定部182は、第1の組と第2の組とが一致するスパン管理テーブルのトレースIDを、受信したパケットに対応するトレースIDとして特定する。
(S25)スパンパス推定部182は、受信したパケットの通信情報(送信元IPアドレス/送信元ポート番号の組および宛先IPアドレス/宛先ポート番号の組)を、パケットのトレースIDに対応するスパン管理テーブルに記録する。
(S26)スパンパス推定部182は、受信したパケットのタイムスタンプをパケットのトレースIDに対応するスパン管理テーブルに記録する。
(S27)パケットトレース割当部181は、蓄積先のストアサーバ600に、今回受信したパケットを送信する。そして、今回受信したパケットに関するパケット収集処理が終了する。
図19は、パケット収集例(続き)を示すフローチャートである。
(S28)トレース推定情報管理部173は、トレース推定情報テーブル131において、新スパンインデックスを割当てる。
(S29)トレース推定情報管理部173は、送信元IPアドレスをパケットから取得して、トレース推定情報テーブル131に記録する。
(S30)トレース推定情報管理部173は、パケットのタイムスタンプをトレース推定情報テーブル131に記録する。そして、今回受信したパケットに関するパケット収集処理が終了する。
以上の手順により、トレース推定情報テーブル131、候補トレース管理テーブル141およびスパン管理テーブル142,…が生成される。候補トレース推定部183は、トレース推定情報テーブル131、候補トレース管理テーブル141およびスパン管理テーブル142,…に基づいて、収集されたパケットのうち、サンプリング対象のデータフローに対応するパケットを特定する。
図20は、パケットの特定例を示すフローチャートである。
候補トレース推定部183は、スパンマッチング期間において下記の手順を実行する。
(S40)候補トレース推定部183は、トレース推定情報テーブル131にレコードが存在するか否かを判定する。トレース推定情報テーブル131にレコードが存在する場合、ステップS41に処理が進む。レコードが存在しない場合、ステップS40に処理が進む(候補トレース推定部183は、トレース推定情報テーブル131にレコードが登録されるまで待機する)。
(S41)候補トレース推定部183は、トレース推定情報テーブル131における最後のスパンインデックス(最大のスパンインデックス)を取得する。
(S42)候補トレース推定部183は、最後のスパンインデックスが増えたか(最後のスパンインデックスよりも大きなスパンインデックスのレコードがトレース推定情報テーブル131に登録されたか)否かを判定する。スパンインデックスが増えた場合、ステップS43に処理が進む。スパンインデックスが増えない場合、ステップS44に処理が進む。
(S43)候補トレース推定部183は、一定時間待機する。そして、ステップS41に処理が進む。
(S44)候補トレース推定部183は、トレース推定情報テーブル131でのスパン数(レコード数またはスパンインデックス+1)と、所属スパン数が一致する候補トレースがあるか否かを判定する。候補トレースの所属スパン数は、各候補トレースに対応するスパン管理テーブル142のレコード数(スパンID+1)に相当する。該当の候補トレースがある場合、ステップS45に処理が進む。該当の候補トレースがない場合、サンプリング対象パケットの特定処理が終了する。なお、該当の候補トレースがない場合、サンプリング対象パケットを特定できなかったことになる。
(S45)候補トレース推定部183は、ステップS44の判定の結果、トレース推定情報テーブル131でのスパン数と、所属スパン数が一致する候補トレースが複数であるか否かを判定する。該当の候補トレースが複数の場合、ステップS47に処理が進む。該当の候補トレースが1つの場合、ステップS46に処理が進む。
(S46)候補トレース推定部183は、候補トレース管理テーブル141における該当の候補トレースの候補フラグを「T」に設定する。すなわち、候補トレース推定部183は、候補フラグ「T」の候補トレースに対応するスパン管理テーブルにおける通信情報をもつパケットを、サンプリング対象のデータフローに対応するパケットと決定する。そして、パケットの特定処理が終了する。
(S47)候補トレース推定部183は、スパン管理テーブル142,…,147を参照して、各候補トレースの所属スパンのタイムスタンプ(代表のスパンのタイムスタンプでもよいし、タイムスタンプの代表値(例えば、中央値)でもよい)を取得する。
(S48)候補トレース推定部183は、該当の複数の候補トレースのうち、トレース推定情報テーブル131におけるタイムスタンプと最も近いタイムスタンプを持つ候補トレースを1つ選択する。トレース推定情報テーブル131におけるタイムスタンプも、代表の送信元のタイムスタンプでもよいし、トレース推定情報テーブル131に登録されたタイムスタンプの代表値(例えば、中央値)でもよい。
(S49)候補トレース推定部183は、候補トレース管理テーブル141における、選択した候補トレースの候補フラグを「T」に設定する。すなわち、候補トレース推定部183は、候補フラグ「T」の候補トレースに対応するスパン管理テーブルにおける通信情報をもつパケットを、サンプリング対象のデータフローに対応するパケットと決定する。そして、パケットの特定処理が終了する。
このように、解析装置100は、収集した各パケットの送信元アドレスおよび宛先アドレスを辿ることでサンプリング対象のデータフローの候補である複数のトレース(候補フロー)を生成する。解析装置100は、スパンコレクタ500に対する通知パケットの送信元のノードの第1の数と、当該候補フローに含まれるパケットを転送するノードの第2の数との候補フローごとの比較に応じて、複数の候補フローのうちサンプリング対象のデータフローを特定する。特に、解析装置100は、第1の数と第2の数とが同じである候補フローをサンプリング対象のデータフローと特定する。これにより、サンプリング対象のデータフロー、および、当該データフローに対応するパケットを適切に特定できる。
また、解析装置100は、第1の数と第2の数とが同じである2以上の候補フローがある場合、複数の通知パケットの第1のタイムスタンプと、当該2以上の候補フローそれぞれの第2のタイムスタンプとの比較に応じて、当該2以上の候補フローのうちサンプリング対象のデータフローを特定する。特に、解析装置100は、第1のタイムスタンプに最も近い第2のタイムスタンプに対応する候補フローをサンプリング対象のデータフローと特定する。これにより、適切にサンプリング対象のデータフロー、および、当該データフローに対応するパケットを適切に特定できる。
なお、今回のスパンマッチング期間が終了すると、トレース推定情報テーブル131、候補トレース管理テーブル141およびスパン管理テーブル142,…はクリアされる。
図21は、候補トレースのマッチングの第1の例を示す図である。
例えば、解析装置100は、スパンマッチング期間ΔT11において収集したパケットに基づき、パケットトレースY11,Y12を検出する。パケットトレースY11は、時系列に、POD(A)とPOD(D)との通信、および、POD(D)とPOD(F)との通信を含むデータフローである。パケットトレースY12は、時系列に、POD(A)とPOD(D)との通信、POD(D)とPOD(F)との通信、POD(F)とPOD(G)との通信、および、POD(G)とPOD(H)との通信を含むデータフローである。
また、解析装置100は、スパンマッチング期間ΔT11において、スパンコレクタ500にデータ(通知パケット)を送信したPODとして、POD群X1を検出したとする。POD群X1は、例えば、検出された時系列に、POD(D)、POD(A)、POD(G)、POD(H)、POD(F)を含む。
この場合、解析装置100は、パケットトレースY11,Y12のうち、POD群X1に含まれる全てのPODを含む(POD群X1と同じ数のPODを含む)パケットトレースY12を、サンプリング対象であると判定する。その結果、解析装置100は、パケットトレースY12に対応するパケット群を、サンプリング対象のデータフローに対応するパケット群であると決定する。
図21で例示した解析装置100の解析シーケンスの一例を示すと次のようになる。
図22は、解析シーケンスの第1の例を示す図である。
(S50)解析装置100は、管理コンポーネント410からiptablesなどにおけるPODの通信情報やサービスの規模の情報などを収集し、フィルタテーブル121の設定と、次のスパンマッチング期間の開始および終了のタイミングの予測とを行う。以下に示すステップS51〜S62は、スパンマッチング期間ΔT11におけるステップである。
(S51)クライアント800は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。当該要求の送信は、クライアント800からゲートウェイ200(図22では図示を省略している)へのSYNパケットで開始される。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800に応答する。ここでは、例えば、3つのPOD[A,D,F](POD(A)、POD(D)、POD(F)を示す)が、この順に連携して処理を行ったとする。当該処理結果の応答は、ゲートウェイ200からクライアント800へのFINパケットで終了される。
(S52)ネットワーク50に属する所定のスイッチは、ステップS51におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S53)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「1」のストアサーバに保存する。
(S54)クライアント800(他のクライアントでもよい)は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800(要求元のクライアント)に応答する。ここでは、例えば、5つのPOD[A,D,F,G,H]が、この順に連携して処理を行ったとする。また、ステップS54における一連のデータフローは、スパンマネージャ400によって決定されたサンプリング対象に該当するものとする。
(S55)ネットワーク50に属する所定のスイッチは、ステップS54におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S56)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「3」のストアサーバに保存する。
(S57)テナントのPOD群330におけるPOD[A,D,F,G,H]は、ネットワーク50を介して、スパン情報をスパンコレクタ500に送信する。
(S58)ネットワーク50に属する所定のスイッチは、スパン情報のパケットを複製し、複製したパケットを解析装置100に送信する。解析装置100は、ステップS58で受信したパケットにタイムスタンプを付与し、当該パケットに基づいて、トレース推定情報(POD[D,A,G,H,F]の情報)を、トレース推定情報テーブル131に記録する。
(S59)クライアント800(他のクライアントでもよい)は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800(要求元のクライアント)に応答する。ここでは、例えば、3つのPOD[A,D,F]が、この順に連携して処理を行ったとする。
(S60)ネットワーク50に属する所定のスイッチは、ステップS59におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S61)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「2」のストアサーバに保存する。
(S62)解析装置100は、トレース推定情報に新たなPODの情報が追加されないことを検出する(トレース生成終了を確認する)。解析装置100は、トレース生成終了をスパンコレクタ500に確認してもよい。
(S63)解析装置100は、候補トレースの推定を行う。図22の例では、図21で例示したように、ステップS58で生成されたトレース推定情報に対して、ステップS55で収集されたパケット群に対応するトレースが選択される。
(S64)解析装置100は、候補トレースを示す情報を管理端末700に送信する。管理端末700は、候補トレースを示す情報に基づいて、ストアサーバ600にアクセスし、候補トレースに属するパケットの内容を取得することができる。
図23は、候補トレースのマッチングの第2の例を示す図である。
例えば、解析装置100は、スパンマッチング期間ΔT21において収集したパケットに基づき、パケットトレースY21,Y22を検出する。パケットトレースY21は、時系列に、POD(B)とPOD(E)との通信、および、POD(E)とPOD(T)との通信を含むデータフローである。パケットトレースY22は、時系列に、POD(B)とPOD(T)との通信、および、POD(T)とPOD(E)との通信を含むデータフローである。
また、解析装置100は、スパンマッチング期間ΔT21において、スパンコレクタ500にデータ(通知パケット)を送信したPODとして、POD群X2を検出したとする。POD群X2は、例えば、検出された時系列に、POD(B)、POD(T)、POD(E)を含む。
この場合、解析装置100は、パケットトレースY21,Y22の両方が、POD群X2に含まれる全てのPOD(POD群X2と同じ数のPOD)を含む。この場合、解析装置100は、パケットトレースY21,Y22のうち、POD群X2が検出された時刻に近い時刻で検出されたパケットトレースY21をサンプリング対象であると判定する。その結果、解析装置100は、パケットトレースY21に対応するパケット群を、サンプリング対象のデータフローに対応するパケット群であると決定する。
図23で例示した解析装置100の解析シーケンスの一例を示すと次のようになる。
図24は、解析シーケンスの第2の例を示す図である。
(S70)解析装置100は、管理コンポーネント410からiptablesなどにおけるPODの通信情報やサービスの規模の情報などを収集し、フィルタテーブル121の設定と、次のスパンマッチング期間の開始および終了のタイミングの予測とを行う。以下に示すステップS71〜S82は、スパンマッチング期間ΔT21におけるステップである。
(S71)クライアント800は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。当該要求の送信は、クライアント800からゲートウェイ200(図24では図示を省略している)へのSYNパケットで開始される。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800に応答する。ここでは、例えば、3つのPOD[B,E,T]が、この順に連携して処理を行ったとする。当該処理結果の応答は、ゲートウェイ200からクライアント800へのFINパケットで終了される。また、ステップS71における一連のデータフローは、スパンマネージャ400によって決定されたサンプリング対象に該当するものとする。
(S72)ネットワーク50に属する所定のスイッチは、ステップS71におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S73)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「1」のストアサーバに保存する。
(S74)テナントのPOD群330におけるPOD[B,E,T]は、ネットワーク50を介して、スパン情報をスパンコレクタ500に送信する。
(S75)ネットワーク50に属する所定のスイッチは、スパン情報のパケットを複製し、複製したパケットを解析装置100に送信する。解析装置100は、ステップS75で受信したパケットにタイムスタンプを付与し、当該パケットに基づいて、トレース推定情報(POD[B,E,T]の情報)を、トレース推定情報テーブル131に記録する。
(S76)クライアント800(他のクライアントでもよい)は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800(要求元のクライアント)に応答する。ここでは、例えば、3つのPOD[B,E,T]が、この順に連携して処理を行ったとする。
(S77)ネットワーク50に属する所定のスイッチは、ステップS76におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S78)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「3」のストアサーバに保存する。
(S79)クライアント800(他のクライアントでもよい)は、テナントのPOD群330に含まれる一部のPODが提供するサービス群に対する要求を送信する。要求に応じて、該当の一部のPODは、ネットワーク50を介して連携し、所定の処理を実行して、処理結果をクライアント800(要求元のクライアント)に応答する。ここでは、例えば、3つのPOD[B,E,T]が、この順に連携して処理を行ったとする。
(S80)ネットワーク50に属する所定のスイッチは、ステップS79におけるクライアント800のSYNパケットから、クライアント800へのFINパケットまでの一連のデータフローに関するパケットを複製し、複製したパケットを解析装置100に送信する。
(S81)解析装置100は、複製されたパケットを受信してタイムスタンプを付与し、受信したパケットに基づいて、当該データフローに対応するパケットのトレースを生成するとともに、当該パケットをストアサーバID「2」のストアサーバに保存する。
(S82)解析装置100は、トレース推定情報に新たなPODの情報が追加されないことを検出する(トレース生成終了を確認する)。解析装置100は、トレース生成終了をスパンコレクタ500に確認してもよい。
(S83)解析装置100は、候補トレースの推定を行う。図24の例では、図23で例示したように、ステップS75で生成されたトレース推定情報に対して、時間的に最も近いステップS72で収集されたパケット群に対応するトレースが選択される。
(S84)解析装置100は、候補トレースを示す情報を管理端末700に送信する。管理端末700は、候補トレースを示す情報に基づいて、ストアサーバ600にアクセスし、候補トレースに属するパケットの内容を取得することができる。
このように、解析装置100は、HTTPヘッダの処理(パケット群からのHTTPヘッダの構成およびHTTPヘッダの分析)を行わずに済み、サンプリング対象のトレース(データフロー)に関連するパケットの探索の所要時間を短縮できる。
例えば、次のような基本条件を考える。(1)ストアサーバ600が4台存在する。(2)1個のHTTPヘッダの処理に所要される時間が60秒である。(3)あるストアサーバにある1つのスパンに対応するパケットの探索にかかる時間が20秒である。(4)管理端末700にトレース(5個のスパンを含む)の情報を伝送する時間が40秒である。(5)トレースに含まれるスパンの数が5個である。
上記基本条件に対して、比較例として、コネクション単位でパケットを収集し、HTTPヘッダを処理してトレースを探索する方法を考える。この場合に、第1のストアサーバに2個のスパンに対応するパケットが存在し、第2,第3,第4のストアサーバにそれぞれ、1つのスパンに対応するパケットが存在するものとする。すると、HTTPヘッダの処理の所要時間は60秒×5=300秒である。別のストアサーバにある1個のスパンのパケットの探索にかかる時間は20秒×3=60秒である。よって、比較例の処理による総所要時間は、300秒+60秒+40秒(伝送時間)=400秒である。
一方、解析装置100によるトレースの探索において、当該トレースの全てのスパンに対応するパケットが1つのストアサーバ(例えば、第2のストアサーバ)に存在している。すると、HTTPヘッダの処理に所要される時間がなくなり(0秒)、別のストアサーバに格納されているパケットの探索に所要される時間もなくなる(0秒)。解析装置100による総所要時間は、0秒+0秒+40秒(伝送時間)=40秒となる。
すなわち、上記の基本条件の例では、解析装置100によれば、比較例の方法に比べて、管理端末700に該当のトレースのパケットを提供するための所要時間を1/10に短縮できることになる。
こうして、サービス間の連携に用いられる通信路の品質をリアルタイムで監視し、分析できるようになる。
なお、図9で例示した解析装置100の各機能をハードウェアにより実装することもできる。
図25は、解析装置の他のハードウェア例を示す図である。
解析装置100aは、第2の実施の形態の情報処理システムにおいて、解析装置100の代わりに用いられる。解析装置100aは、コントロールプレーンD1およびデータプレーンD2を有する。コントロールプレーンD1は、プログラムによる制御機能を提供する。データプレーンD2は、パケット処理専用の電子回路によるパケット処理機能を提供する。
コントロールプレーンD1は、CPU101およびRAM102を有する。CPU101は、RAM102に記憶されたプログラムを実行する。RAM102は、CPU101が実行するプログラムを記憶する。例えば、解析装置100aにおいて、CPU101は、当該プログラムを実行することで、図9で例示した通信管理部190に対応する通信管理部101aの機能を発揮する。
データプレーンD2は、入力ポート114、タイムスタンプ生成部115、スパン情報解析部116、候補トレース生成部117および出力ポート118を有する。
入力ポート114は、ネットワーク50に属する所定のスイッチにより複製されたパケットを受信する通信インタフェースである。
タイムスタンプ生成部115は、タイムスタンプ生成部160の機能を有するASICやFPGAなどのハードウェアである。タイムスタンプ生成部115はローカルメモリを有し、当該ローカルメモリの記憶領域をフィルタ記憶部120に相当する記憶部として利用する。
スパン情報解析部116は、スパン情報解析部170の機能を有するASICやFPGAなどのハードウェアである。スパン情報解析部116はローカルメモリを有し、当該ローカルメモリの記憶領域をトレース推定情報記憶部130に相当する記憶部として利用する。
候補トレース生成部117は、候補トレース生成部180の機能を有するASICやFPGAなどのハードウェアである。候補トレース生成部117はローカルメモリを有し、当該ローカルメモリの記憶領域を候補トレース記憶部140に相当する記憶部として利用する。
このように、解析装置100が有するタイムスタンプ生成部160、スパン情報解析部170および候補トレース生成部180の各機能をハードウェアにより実装した解析装置100aを用いてもよい。解析装置100,100aの何れを用いる場合でも、例えば、タイムスタンプ生成部115,160やスパン情報解析部116,170は、受信した複数のパケットに対する解析をパイプライン制御などにより並列に実行することで、解析処理を高速化することができる。
ところで、近年、マイクロサービスのモニタリングが行われている。モニタリングでは、Method呼び出しのメッセージにAnnotationと呼ばれる識別情報を挿入し、Methodが呼ばれるタイミングでメッセージにタイムスタンプを追加し、当該タイムスタンプによりマイクロサービス間の処理遅延を測定し得る。マイクロサービス間の呼び出し関係と処理時間の情報はスパンと呼ばれ、複数のスパンのグループはトレースと呼ばれる。しかし、このようなモニタリング手法は、レイヤ7のHTTPメッセージが対象であり、遅延が増大しても、パケットキャプチャデータがなければ実際の原因を調査することは困難である。また、トレースに対応するパケットを探すためには、ネットワークの複数のポイントからキャプチャしたパケットデータから必要なコネクションを検索後、HTTPヘッダを再構成して文字列処理を行うことになる。一方、HTTPヘッダの処理に係る処理時間はレイヤ4のTCP分析に比べて10倍程度遅くなることがある。
そこで、解析装置100は、HTTPヘッダの処理(再構成や分析)を行わずに、トレースに対応するパケットデータを抽出する。すなわち、解析装置100は、キャプチャしたパケットを集約して収集し、全てのパケットにタイムスタンプを挿入する。また、解析装置100は、システムの管理コンポーネントの設定情報から必要なPODの通信情報をフィルタとして設定する。解析装置100は、フィルタされたパケットから、サービスの呼び出し関係を構成し、候補トレースを作成する。解析装置100は、PODとスパンコレクタ500の間の通信に応じたトレース推定情報を基に、候補トレースの中から、実際のトレースと関連がないものを除外する。こうして、解析装置100は、HTTPヘッダの処理を行わずに、サンプリング対象のデータフロー(トレース)に対応するパケットデータを、高速に抽出できる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 パケット解析装置
11 記憶部
12 処理部
20,20a,20b,20c,… サービスノード
30 コレクタノード
40 ネットワーク
f1,f2,f3 データフロー
f11,f12,f21,f22,f23,f31,f32,f33 要求
f13,f14,f24,f25,f26,f34,f35,f36 応答
n1 通知パケット群
n11,n12,n13,n14 パケット

Claims (7)

  1. コンピュータに、
    サービスを提供し互いに通信する複数の第1のノードと前記複数の第1のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第2のノードとを含む複数のノード間で送信されるパケットを収集し、
    収集したパケットのうち、前記第2のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、
    取得した前記複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する、
    処理を実行させるパケット解析プログラム。
  2. 前記複数の候補パケットそれぞれの送信元アドレスおよび宛先アドレスを辿ることで前記サンプリング対象のデータフローの候補である複数の候補フローを生成し、前記複数の通知パケットの送信元のノードの第1の数と、候補フローにおける候補パケットを転送するノードの第2の数との前記候補フローごとの比較に応じて、前記複数の候補フローのうち前記サンプリング対象のデータフローを特定する、
    請求項1記載のパケット解析プログラム。
  3. 前記第1の数と前記第2の数とが同じである前記候補フローを前記サンプリング対象のデータフローと特定する、
    請求項2記載のパケット解析プログラム。
  4. 前記第1の数と前記第2の数とが同じである2以上の候補フローがある場合、前記複数の通知パケットの第1のタイムスタンプと、前記2以上の候補フローそれぞれの第2のタイムスタンプとの比較に応じて、前記2以上の候補フローのうち前記サンプリング対象のデータフローを特定する、
    請求項3記載のパケット解析プログラム。
  5. 前記第1のタイムスタンプに最も近い前記第2のタイムスタンプに対応する前記候補フローを前記サンプリング対象のデータフローと特定する、
    請求項4記載のパケット解析プログラム。
  6. サービスを提供し互いに通信する複数の第1のノードと前記複数の第1のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第2のノードとを含む複数のノード間で送信されるパケットを記憶する記憶部と、
    前記複数のノード間で送信されるパケットを収集して前記記憶部に格納し、収集したパケットのうち、前記第2のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、取得した前記複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する処理部と、
    を有するパケット解析装置。
  7. コンピュータが、
    サービスを提供し互いに通信する複数の第1のノードと前記複数の第1のノードそれぞれからサンプリング対象のデータフローに対応するパケットが転送されたことを示す通知パケットを受信する第2のノードとを含む複数のノード間で送信されるパケットを収集し、
    収集したパケットのうち、前記第2のノードを宛先とする複数の通知パケットを特定し、特定した前記複数の通知パケットの複数の送信元アドレスを取得し、
    取得した前記複数の送信元アドレスのうちの2つのアドレスの組を送信元および宛先とする複数の候補パケットを、収集したパケットから抽出し、抽出した前記複数の候補パケットから前記サンプリング対象のデータフローに対応するパケットの組を決定する、
    パケット解析方法。
JP2019044219A 2019-03-11 2019-03-11 パケット解析プログラム、パケット解析装置およびパケット解析方法 Pending JP2020150335A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019044219A JP2020150335A (ja) 2019-03-11 2019-03-11 パケット解析プログラム、パケット解析装置およびパケット解析方法
US16/801,216 US20200296189A1 (en) 2019-03-11 2020-02-26 Packet analysis apparatus, packet analysis method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019044219A JP2020150335A (ja) 2019-03-11 2019-03-11 パケット解析プログラム、パケット解析装置およびパケット解析方法

Publications (1)

Publication Number Publication Date
JP2020150335A true JP2020150335A (ja) 2020-09-17

Family

ID=72423217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019044219A Pending JP2020150335A (ja) 2019-03-11 2019-03-11 パケット解析プログラム、パケット解析装置およびパケット解析方法

Country Status (2)

Country Link
US (1) US20200296189A1 (ja)
JP (1) JP2020150335A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114884844B (zh) * 2022-06-14 2023-12-26 上海幻电信息科技有限公司 流量录制方法及系统

Also Published As

Publication number Publication date
US20200296189A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
US10917322B2 (en) Network traffic tracking using encapsulation protocol
US8266097B2 (en) System analysis program, system analysis method, and system analysis apparatus
CN108028778B (zh) 生成信息传输性能警告的方法、系统和装置
US10033602B1 (en) Network health management using metrics from encapsulation protocol endpoints
US7607049B2 (en) Apparatus and method for detecting network failure location
US20090248803A1 (en) Apparatus and method of analyzing service processing status
EP3854033B1 (en) Packet capture via packet tagging
CN108632111A (zh) 一种基于日志的服务链路监控方法
EP3364627B1 (en) Adaptive session intelligence extender
CN109600261A (zh) 网络修复方法、云端服务器、用户终端及网络修复系统
US20210336861A1 (en) Detection method and detection device for detecting quality of service of bgp anycast cluster
CN111064780B (zh) 一种多任务内容更新方法、装置、设备及介质
JP2020150335A (ja) パケット解析プログラム、パケット解析装置およびパケット解析方法
JP3943581B1 (ja) 負荷分散システムを検出する装置および方法。
CN116346649A (zh) 负载均衡设备的虚服务抓包方法及装置
Zhang et al. Efficient online surveillance video processing based on spark framework
KR20220001606A (ko) 대용량 네트워크 모니터링을 위한 실시간 패킷 데이터 저장 방법 및 장치
WO2023012928A1 (ja) デバイス推定システム、デバイス推定装置、パケット解析モデル学習装置、波形解析モデル学習装置、および、プログラム
KR20090124944A (ko) 애플리케이션 토폴러지를 식별하기 위한 시스템 및 방법
JP2016096416A (ja) パケット解析プログラム、及びパケット解析方法
JP5440164B2 (ja) 分析プログラム、及び制御プログラム
JP2004280649A (ja) 情報収集方法及びクライアント処理実行方法及びサーバ及びクライアント
JP2006092358A (ja) トレースデータの採取方法、採取プログラム、およびその採取装置
CN110972158B (zh) 基站侧网络数据的监测装置和方法
JP5287703B2 (ja) メッセージ判別プログラム、メッセージ判別装置及びメッセージ判別方法