(57)【要約】【課題】  通信解析のためのパケットを収集する場合に、特定の通信のパケットが通信回路に転送されてしまい、他の通信のパケットが転送されにくいことがある。この場合、通信解析の精度を保つためのパケット数を確保するためには、パケットを長時間収集することになってしまう。【解決手段】  コンピュータが、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されたパケット数のパケットを、前記通信回路に転送する。【選択図】  図３
2014086927.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送する
ことを特徴とする情報処理方法。
【請求項２】
前記複数の通信毎に決定される前記パケット数は、前記コンピュータによって、前記複数の通信毎のパケット数が揃うように決定される
ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記コンピュータは、前記複数の通信の数が変わる場合に、前記複数の通信毎に決定されるパケット数を算出する
ことを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
前記複数の通信の数は、前記コンピュータによって実行される仮想マシンが他の通信を代行することによって変わり、
前記コンピュータは、前記他の通信が代行される仮想マシンの通信量に基づいて、前記他の通信を代行する仮想マシンの通信量を算出し、
前記複数の通信毎に決定されるパケット数は、前記コンピュータによって前記算出された通信量に基づいて算出される
ことを特徴とする請求項３に記載の情報処理方法。
【請求項５】
前記複数の通信は、通信のプロトコル、宛先アドレス、又は送信元アドレスに基づく通信解析の単位に基づいてソートされた複数の通信である
ことを特徴とする請求項１〜４の何れか１項に記載の情報処理方法。
【請求項６】
前記通信回路は、前記コンピュータが外部装置にパケットを送信するための他の通信回路に接続されたバスに接続された通信回路であって、前記パケット転送量の上限は、前記他の通信回路の通信量に応じて設定される
ことを特徴とする請求項１〜５の何れか１項に記載の情報処理方法。
【請求項７】
前記通信解析に対応するパケット数は、前記通信解析の処理内容に応じて設定される
ことを特徴とする請求項１〜６の何れか１項に記載の情報処理方法。
【請求項８】
コンピュータに、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送させる
ことを特徴とするプログラム。
【請求項９】
通信回路と、
複数の通信の通信量及び前記通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送させる処理部と
を含むことを特徴とする情報処理装置。
【請求項１０】
通信解析を実行する解析装置と、
複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて前記通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送するコンピュータと
を含むことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理方法、プログラム、情報処理装置、及び情報処理システムに関する。
【背景技術】
【０００２】
データセンタでは、クライアントから要求された処理が仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）により実行され、実行された処理の結果がクライアントに送信される。また、複数の仮想マシンが互いに情報を通信しあうことで連携し、特定の処理を分散して処理する。これらの仮想マシンによる通信がフローとよばれることがあり、データセンタを利用したシステムを管理するために、フロー毎に通信状況が監視される。
【０００３】
図１に、関連技術が示される。データセンタ１は、サーバ２、仮想マシン管理サーバ（ＶＭマシン管理サーバ）３、及び解析装置４を含む。サーバ２は、仮想マシン５、仮想マシン６、仮想スイッチ（ｖＳＷ：ｖｉｒｔｕａｌ  ＳＷｉｔｃｈ）７、及びＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）８―１０、及びＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）バス１１を含む。仮想スイッチ７は、バッファ１２を含む。
【０００４】
仮想マシン５及び６は、ネットワーク１３を介してクライアントから処理の要求を受信すると、割り当てられた物理リソースを使用することで要求された処理を実行し、クライアントに処理結果を送信する。仮想マシン５及び６毎の処理タイミングに応じて送信される処理結果は、仮想スイッチ７に含まれるバッファ１２に順次バッファリングされた後に、通信回路であるＮＩＣ８に転送され、クライアントに送信される。なお、サーバ２内で仮想マシン５及び６に割り当てられる物理リソースは、ＶＭ管理サーバ３からＮＩＣ９を介してサーバ２に送信される管理情報に従って割り当てられる。
【０００５】
他方で、仮想マシン５及び６による通信を解析するために、ネットワーク１３に送信されるパケットが収集される。パケットを収集するために、バッファ１２に順次バッファリングされたパケットがＮＩＣ１０を介して解析装置４に送信される。解析装置４では、送信されたパケットを収集し、通信解析に必要なパケット数のパケットが収集された後に仮想マシン５及び６の通信解析が実行される。
【０００６】
ところで、複数のサーバに分散配置されて互いに通信しあっている仮想マシンを特定のサーバに集約させて、複数のサーバ間のネットワークにかかる通信負荷を減らす技術が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１８０８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
通信解析のためのパケットを収集する場合に、特定の通信のパケットばかりが通信回路に転送されてしまい、他の通信のパケットが転送されにくいことがある。この場合、通信解析の精度を保つためのパケット数を確保するためには、パケットを長時間収集することになってしまう。
【０００９】
本願は、通信回路に対するパケットの転送量の上限内で、通信解析に必要なパケットを
通信毎に効率よく収集させるための情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
開示の情報処理方法によれば、コンピュータが、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に対応するパケット数以上になるように前記複数の通信毎に決定されたパケット数のパケットを、前記通信回路に転送する。
【発明の効果】
【００１１】
本開示の一側面によれば、通信回路に対するパケットの転送量の上限内で、通信解析に必要なパケットを通信毎に効率よく収集できる。
【図面の簡単な説明】
【００１２】
【図１】関連技術が示される。
【図２】実施例のサーバのハードウェア構成が示される。
【図３】実施例の情報処理システムの例が示される。
【図４】実施例のソータの機能ブロックの例が示される。
【図５】実施例のパケット情報及び通信特定情報の例が示される。
【図６】実施例のソータによって実行される処理の例が示される。
【図７】パケットが格納された実施例のキューの例が示される。
【図８】実施例のアナライザの機能ブロックの例が示される。
【図９】実施例のサンプリング情報の例が示される。
【図１０】実施例のアナライザによって実行される処理の例が示される。
【図１１】実施例の解析装置が収集した情報の解析の例が示される。
【図１２】実施例の情報処理システムの他の例が示される。
【図１３】実施例のＶＭ管理サーバのハードウェア構成の例が示される。
【図１４】実施例のＶＭ管理サーバの機能ブロックの例が示される。
【図１５】実施例のＶＭ管理サーバが管理する管理情報が示される。
【図１６】実施例のＶＭ管理サーバによって実行される処理の例が示される。
【図１７】実施例のＶＭ管理サーバによって実行される処理の例が示される。
【図１８】実施例のロードバランサのハードウェア構成の例が示される。
【図１９】実施例のロードバランサの機能ブロックの例が示される。
【図２０】実施例のロードバランサによって実行される処理の例が示される。
【図２１】実施例のアナライザによって実行される処理の他の例が示される。
【図２２】実施例の情報処理システムで実行される処理の例が示される。
【発明を実施するための形態】
【００１３】
図１に示される仮想マシン５及び６がクライアントに処理結果を送信するために、処理結果であるパケットがＮＩＣ８を介してネットワーク１３に送信されるのに対して、それらのパケット全てがＮＩＣ１０を介して解析装置４に送信されないことがある。
【００１４】
ＮＩＣ８及びＮＩＣ１０はＩＯバス１１に接続されており、ＮＩＣ８及びＮＩＣ１０に同時にパケットを転送できないため、ＩＯバス１１の占有期間がシェアされることで、バッファ１２にバッファリングされたパケットがＮＩＣ８及びＮＩＣ１０の各々に順次転送される。ＮＩＣ１０にパケットを転送する処理は通信解析のために実行される処理であるため、クライアントへの処理結果の送信に不要な遅延が生じないよう、ＮＩＣ８へパケットを転送するためのＩＯバス１１の占有時間に影響を与えない範囲で、ＮＩＣ１０へパケットを転送するためのＩＯバスの占有時間が確保される。
【００１５】
また、ＮＩＣ１０にパケットを転送する処理は通信解析のために実行される処理である
ため、ＮＩＣ１０へのパケット転送に割り当てられるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理量が抑えられ、仮想マシン５及び６の実行、仮想マシン５及び６間の通信、及びデータセンタ１の外部との通信などの他の各種処理にＣＰＵリソースが割り当てられる。
【００１６】
仮想マシン５及び６からバッファ１２にパケットが転送される場合には、バッファ１２として機能するメモリに対してＣＰＵがメモリバスを介してデータを転送する。例えば、動作速度が４ＧＨｚのＣＰＵによって、動作速度が１ＧＨｚのメモリに対してバス幅が１２８ビットのメモリバスを介してデータが転送される。他方で、バッファ１２からＮＩＣ８及び１０へのパケットの転送処理は、例えば、ＣＰＵによって、バス幅が３２ビットのＩＯバスを介して５０ＭＨｚの転送速度で実行される。つまり、ＮＩＣ８及び１０への転送処理は、バッファ１２として機能するメモリへの転送処理に対して、ＣＰＵを占有する時間がオーダーで２桁程度長くなってしまう。また、ＮＩＣ８及び１０がネットワーク１３にパケットを送信する際の転送能力にも制約があるため、その転送能力を超えてしまっている場合には、ＮＩＣ８及び１０へのパケット転送にかかるＣＰＵの処理が待たされることがある。
【００１７】
このように、メモリへのデータの転送処理に割り当てられるＣＰＵの占有時間よりもＮＩＣ８及び１０へのデータの転送処理に割り当てられるＣＰＵの占有時間が相対的に大きくなる。とりわけ、ＮＩＣ８及び１０へのデータの転送処理に割り当てられるＣＰＵリソースが、ＣＰＵリソース全体に対して大きく占めてしまう。そこで、有限であるＣＰＵリソースが通信解析のための処理以外に割り当てられるようにされることが望まれる。
【００１８】
以上に述べた理由のために、バッファ１２にバッファリングされたパケットがＮＩＣ１０に転送される際の転送量の上限に制約条件を課して、この転送量の上限内でＩＯバス１１を占有する時間や、パケット転送にかかるＣＰＵの処理量が割り当てられる。例えば、バッファ１２にバッファリングされたパケットがＮＩＣ１０に転送される際に間引かれることで、ＮＩＣ１０に転送されるパケット数が制限され、ＩＯバス１１を占有する時間や、パケット転送にかかるＣＰＵの処理量が減らされる。
【００１９】
また、ＮＩＣ１０へ転送されるパケットが間引かれる場合に、パケットがランダムに間引かれることがある。ランダムにパケットが間引かれる理由は、仮想マシン５及び６が間欠的にパケットを送信しているため、定まった間隔でパケットが間引かれると、特定のパケットばかりが間引かれる可能性があるからである。ランダムにパケットが間引かれることで、解析装置４に送信されるパケットの種類に偏りが生じなくなる。なお、ＮＩＣ１０へ転送されるパケットが間引かれる場合、解析装置４ではパケットの収集をしないことになるため、ある程度の時間をかけて通信解析のためのパケット量を確保することとなる。
【００２０】
また、解析装置４には、図示されていないが、複数のサーバから通信解析のためのパケットが送信される。そのため、各サーバが何の制約もなくパケットを解析装置４に送信してしまうと、解析装置４の受信能力を超えたパケットが送信されてしまう可能性がある。また、システムのコストを下げるために、解析装置４と複数のサーバとの間の回線の性能を抑え、帯域の狭い回線とせざるをえない場合もある。このような場合でも、通信回路であるＮＩＣ１０に転送されるパケットの転送量の上限に制約条件が課され、解析装置４に送信されるパケット数を制限させるために、ＮＩＣ１０に転送されるパケットが間引かれることがある。
【００２１】
しかし、複数の通信のパケットがバッファリングされ、通信回路への転送量の上限の制約条件を満たすためにバッファリングされたパケットが間引かれ、通信回路に転送されるパケット数が制限されると、特定の通信のパケットばかりが通信回路に転送されてしまい
、他の通信のパケットが転送されにくいことがある。
【００２２】
例えば、複数の通信の通信量に差がある場合、通信量が少ない通信のパケットが間引かれると、通信回路に転送されるパケット数が少なくなり、通信解析の精度を保つためのパケット数を確保できない。この場合、通信解析の精度を保つためのパケット数を確保するためには、パケットを長時間収集することになってしまい、通信解析が待たされる。
【００２３】
他方で、通信量の少ない通信のパケットが通信回路に転送される確率を上げるために、パケットを間引く量を減らしてしまうと、通信解析のために割り当てるバスの占有時間やＣＰＵの処理量が増えてしまうというジレンマがある。
【００２４】
後述される実施例によれば、複数の通信の通信量及び通信回路に対するパケット転送量の上限に応じて、通信解析が可能な数以上になるように通信毎に決定されたパケット数を通信回路に転送する事で、解析に必要なパケットを制約内で効率よく収集できる。
【００２５】
図２に、実施例のサーバのハードウェア構成が示される。実施例が適用されたサーバは、ＣＰＵ２００、メモリコントローラ２０１、メモリ２０２及び２０３、メモリバス２０４、ＩＯバスコントローラ２０５、ＮＩＣ２０６−２０８、記憶装置２０９、及びＩＯバス２１０を含む。
【００２６】
メモリバス２０４に接続されたメモリ２０２及び２０３の少なくとも何れか一方には、サーバの各種処理を実行するためのプログラムが格納されている。ＣＰＵ２００は、メモリコントローラ２０１を介して、メモリ２０２及び２０３からプログラムを読み出し、各種処理を実行する。ＣＰＵ２００によって実行される各種処理に伴い、メモリ２０２及び２０３に対するデータの書き込み及び読み出しがメモリコントローラ２０１を介して実行される。
【００２７】
ＣＰＵ２００は、ＩＯバスコントローラ２０５を介して、ＩＯバス２１０に接続されたＮＩＣ２０６―２０８にサーバから送信されるデータやパケットを転送し、また、サーバに対して送信されたデータやパケットを受信する。ＣＰＵ２００は、ＩＯバスコントローラ２０５を介して、ＩＯバス２１０に接続された記憶装置２０９からデータを読み出し、また記憶装置２０９にデータを書き込む。
【００２８】
ＣＰＵ２００は、各種処理を実行するための１以上のＣＰＵコアを含んでいてよい。また、各ＣＰＵコアは１以上のプロセッサを含んでいてもよい。メモリ２０２及び２０３は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのＲＡＭである。記憶装置２０９は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。なお、ＣＰＵ２００、メモリコントローラ２０１、メモリ２０２及び２０３、ＮＩＣ２０６−２０８、及び、記憶装置２０９が同じバスに接続された構成を実施例に適用してもよい。図２に示されるサーバのハードウェア構成によって、後述されるサーバの処理及び機能ブロックが実現される。
【００２９】
図３に、実施例の情報処理システムの例が示される。データセンタ３００が情報処理システムの例である。ネットワーク３０５に接続されたデータセンタ３００は、サーバ３１０、サーバ３５０、ロードバランサ３７０、ＶＭ管理サーバ３８０、及び解析装置３９０を含む。サーバ３１０は、仮想マシン３１１−３１３、仮想スイッチ３１４、バッファ３１５及び３２５、ＮＩＣ３１６−３１８、ソータ３２０、キュー３２１−３２３、及び、アナライザ３２４を含む。ＮＩＣ３１６−３１８の各々には、図２に示されるＮＩＣ２０６−２０８で例示される通信回路が適用されればよい。サーバ３５０は、仮想マシン３５
１及び３５２、仮想スイッチ３５４、バッファ３５５及び３６５、ＮＩＣ３５６−３５８、ソータ３６０、キュー３６１及び３６２、及び、アナライザ３６４を含む。ＮＩＣ３５６−３５８の各々には、図２に示されるＮＩＣ２０６−２０８で例示される通信回路が適用されればよい。なお、サーバ３１０及びサーバ３５０が、図２に示されるハードウェア構成を含むとして後述するが、サーバ３１０及びサーバ３５０のハードウェア構成は図２に示されるハードウェア構成に限定されず、サーバ３１０及びサーバ３５０のハードウェア構成にはコンピュータとしての処理を実行可能なハードウェア構成を適用すればよい。
【００３０】
仮想マシン３１１−３１３、仮想スイッチ３１４、仮想マシン３５１及び３５２、及び仮想スイッチ３５４は、各々サーバ３１０及び３５０において、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることにより機能する。なお、各サーバ３１０及び３５０内において、仮想スイッチ３１４、仮想マシン３５１及び３５２、及び仮想スイッチ３５４には、ＶＭ管理サーバ３８０からＮＩＣ３１７及び３５７を介して各サーバ３１０及び３５０に送信される管理情報に従って物理リソースが割り当てられる。
【００３１】
ネットワーク３０５に接続されたクライアントからデータセンタ３００に処理の要求に送信されると、処理の要求がロードバランサ３７０によって受信される。ロードバランサ３７０は、要求される処理の内容やクライアントが指定した宛先に従って、サーバ３１０又はサーバ３５０に処理の要求を送信する。
【００３２】
ここで、クライアントから要求された処理が、サーバ３１０で実行される仮想マシン３１１で処理される場合に沿って例示する。サーバ３１０では、ＮＩＣ３１６を介してクライアントからの処理の要求を受信する。受信した要求をＮＩＣ３１６から受け取った仮想スイッチ３１４が、要求される処理の内容やクライアントが指定した宛先を判定し、判定の結果に従って、仮想マシン３１１によって要求された処理が実行される。仮想マシン３１１によって実行された処理の結果は、仮想スイッチ３１４内のバッファ３１５でバッファリングされる。なお、バッファ３１５はメモリ２０２、メモリ２０３、又はレジスタなどに記憶領域を使用すればよい。バッファ３１５でバッファリングされた処理結果が、ＩＯバスを介してＮＩＣ３１６に転送され、ロードバランサ３７０を介してネットワーク３０５に接続されたクライアントに送信される。
【００３３】
また、データセンタ３００内では、仮想マシン３１１−３１３、仮想マシン３５１及び３５２が互いに情報を通信しあうことで連携し、特定の処理を分散して処理する。
【００３４】
以上に述べた、仮想マシンによる通信がフローとよばれることがあり、データセンタ３００を利用したシステムを管理するために、複数のフロー毎に通信状況が監視される。なお、フローは、仮想マシン毎や、仮想マシンによって実行されているアプリケーションの種類や、通信されるパケットの送信元アドレスや宛先アドレスや、通信されるパケットのプロトコルなどで分類される。また、ひとつの仮想マシンが複数のクライアントと通信しあう場合には、ひとつの仮想マシンに対して複数のフローが存在する場合がある。
【００３５】
ここで、各サーバ３１０及び３５０内で実行される仮想スイッチによる動作を、仮想スイッチ３１４に沿って例示する。
【００３６】
仮想マシン３１１−３１３が送信するパケットが、仮想スイッチ３１４のバッファ３１５にバッファリングされる。バッファ３１５にバッファリングされたパケットが、ネットワーク３０５に送信されるためにＮＩＣ３１６に転送される。他方で、バッファ３１５の出力がソータ３２０に転送される。なお、図示されていないがバッファ３１５の入力をソ
ータ３２０に転送してもよい。ソータ３２０は、受け取ったパケットのヘッダ情報に基づいてパケットをソートする。例えば、パケットのヘッダにある送信元アドレスや宛先アドレス、プロトコルの種類、又は仮想マシンのＩＤに基づいて、パケットをソートする。ソータ３２０によるパケットをソートする際のソート基準は、例えば、パケットを収集して通信の解析をする際の解析ポリシーに従い、パケットをどの種類の単位で解析するかによって決めればよく、通信解析の対象となる粒度に合わせればよい。
【００３７】
ソータ３２０は、ソート基準に従って、パケットをソート基準毎に設けられたキュー３２１−３２３に格納する。キュー３２１−３２３に格納されたパケットは、後述されるアナライザ３２４によって決定されたパケット数がバッファ３２５に転送されるように一部のパケットが廃棄されることで間引かれて、間引かれずに残されたパケットが通信解析のためにサンプリングされたパケットとしてバッファ３２５に転送される。なお、パケットを間引く場合には、仮想マシン３１１−３１３が間欠的にパケットを送信しており、定まった間隔でパケットが間引かれると、間欠的に送信されている特定のパケットばかりが間引かれる可能性があるため、ランダムにパケットが間引くことで、サンプリングされるパケットの種類に偏りが生じないようにしてもよい。ソータ３２０及び３６０の詳細な例が、図４〜６に沿って後述される。
【００３８】
キュー３２１−３２３においてサンプリングされたパケットが格納されたバッファ３２５から、サンプリングされたパケットがＮＩＣ３１８に転送される。ＮＩＣ３１８は、転送されたパケットを、パケットに基づく通信解析をするためにパケットを収集する解析装置３９０に送信する。なお、キュー３２１−３２３、及びバッファ３２５には、メモリ２０２、メモリ２０３、又はレジスタなどに記憶領域を使用すればよい。
【００３９】
ここで、図３に沿って上述したが、バッファ３２５からＮＩＣ３１８へ転送されるパケットの転送量の上限には制約条件が設定されることがある。それは、ＮＩＣ３１８がネットワーク３０５にパケットを送信するためのＮＩＣ３１６と同じＩＯバスに接続されているため、ＮＩＣ３１６へのパケット転送のために占有されるＩＯバスの占有時間に影響を与えない範囲で、通信解析の目的であるＮＩＣ３１８にパケットを転送するための占有時間が確保されるようにするためである。
【００４０】
ところで、ネットワーク３０５に送信されるパケットの通信量は、クライアントからの要求頻度や送信するパケットの種類に依存し、例えば、動画データが配信される場合には定常的に比較的大きな通信量の通信が行われるものの、アプリケーションへのログインのための認証処理などではクライアントから要求されたタイミングで認証処理の応答が通信されるため通信量が比較的少ない。また、複数のクライアントから同時期に要求された処理に対して応答する場合には、通信量が増えることがある。すなわち、ネットワーク３０５に送信されるパケットの通信量は変動する。
【００４１】
そこで、ネットワーク３０５に送信されるパケットの通信量の変動、すなわち、ＮＩＣ３１６に転送されるパケットの転送量の変動に合わせて、ＮＩＣ３１８に転送されるパケットの転送量の上限を決めてもよい。また、ＮＩＣ３１６に転送されるパケットの転送量が変動するものの、その転送量が最大となる場合に占有されるＩＯバスの占有時間に対して影響を与えないように、ＮＩＣ３１８へのパケット転送量の上限を設定してもよい。例えば、ＮＩＣ３１６に転送されるパケット数の５１２分の１の割合や１０２４分の１の割合といった固定値を、ＮＩＣ３１８に転送されるパケット数の上限として設定してもよい。
【００４２】
アナライザ３２４は、ＮＩＣ３１８に転送されるパケットの転送量の上限内で、バッファ３２５に転送されるパケット数をキュー３２１−３２３毎に決定する。これは、キュー
３２１−３２３に格納されるパケットが、解析装置３９０に収集されたパケットに基づく通信解析の単位に応じた通信毎にソータ３２０によってソートされたパケットであるため、アナライザ３２４によって、バッファ３２５に転送されるパケット数が通信毎に決定されているともいえる。なお、各通信のパケット数の合計がＮＩＣ３１８に転送されるパケットの転送量の上限内にするために、各通信においてパケットが間引かれて残ったパケット数が、アナライザ３２４によって決定されたパケット数となるようにサンプリングされ、サンプリングされたパケット数は通信毎の通信解析に要求されるパケット数以上であるようにアナライザ３２４によって決定される。アナライザ３２４及び３６４の詳細な例が、図８〜１０に沿って後述される。
【００４３】
図４に、実施例のソータの機能ブロックの例が示される。ソータ３２０および３６０の各々では、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることにより、特定部４００、判定部４１０、割り当て部４２０、及び、転送部４３０として機能する。各機能ブロックにより実行される処理は、図６に示される処理に対応させて後述される。
【００４４】
図５に、実施例のパケット情報及び通信特定情報の例が示される。ここでは、図３に示されるサーバ３１０で実行される仮想スイッチ３１４内のソータ３２０に沿って例示する。なお、サーバ３５０で実行される仮想スイッチ３５４内のソータ３６０も、ソータ３２０で例示した動作を実行可能である。
【００４５】
図５Ａに、ソータ３２０が受信したパケットのヘッダ情報に基づいて、メモリ２０２又は２０３に格納されるパケット情報の例が示される。パケット情報では、パケットを受信した受信時刻、及び、パケットのヘッダ情報に基づく宛先アドレス、送信元アドレス、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のポート番号、及び、パケットのペイロードの情報が互いに関連付けられている。例えば、時刻が“３”の時に、宛先アドレスが“００−９０−２７−ＡＡ−７４−Ｅ０”、送信元アドレスが“００−９０−２７−ＢＢ−８６−Ｅ３”、ポート番号が“８０”の情報がヘッダ情報として格納され、ペイロード情報として“ｇｅｔ  ｉｎｄｅｘ.ｈｔｍｌ”が格納されたパケットがソータ３２０によって受信されたことが示される。
【００４６】
なお、ソータ３２０は、受信したパケット順にソート処理を実行するものとして、受信時刻を監視しなくてもよい。また、ペイロードの情報を図５Ａに示されるパケット情報で管理しなくてもよく、例えば、パケットを収集して通信の解析をする際の解析ポリシーに従い、パケットをどの種類の単位でソートするかに従ってパケット情報で管理する情報を決めればよい。また、宛先アドレス及び送信元アドレスは、通信の宛先となる物理サーバや仮想マシン、ネットワーク内スイッチやルータに割り当てられたＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスやＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスを使用すればよい。
【００４７】
図５Ｂに、メモリ２０２又は２０３に格納される通信特定情報の例が示される。図５Ｂに示される通信特定情報は、ソータ３２０がソート処理を実行する際にソータ３２０によって参照される情報である。図５Ｂに示される通信特定情報では、ＴＣＰのポート番号、ＴＣＰのポート番号に関するコメント、及び、フローＩＤが互いに関連付けられている。例えば、ポート番号が“８０”である“ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）”のパケットに対して“０”のフローＩＤが関連付けられている。また、ポート番号が“２０”及び“２１”である“ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）”のパケットに対して“２”のフローＩＤが関連付けられている。このように、通信解析の解析対象がポート番号に対応するプロトコル毎である場合には
、通信がポート番号毎に応じてソートされるために、ポート番号に対して通信の種類を特定するためのフローＩＤが関連付けられる。なお、ＴＣＰのポート番号に関するコメントは、情報処理システムを管理する管理者らが情報を参照する場合には参考とされる情報であるため、通信特定情報で管理されなくてもよい。
【００４８】
図５Ｃに、メモリ２０２又は２０３に格納される通信特定情報の他の例が示される。図５Ｃに示される通信特定情報は、ソータ３２０がソート処理を実行する際に参照される情報である。図５Ｃに示される通信特定情報では、送信元アドレス、及び、フローＩＤが互いに関連付けられている。例えば、送信元アドレスが“００−９０−２７−ＢＢ−８６−Ｅ３”であるパケットに対して“１０”のフローＩＤが関連付けられている。このように、通信解析の解析対象が送信元アドレス毎である場合には、通信が送信元アドレスに応じてソートされるために、送信元アドレスに対して通信の種類を特定するためのフローＩＤが関連付けられる。なお、図５Ｃに示される通信特定情報では、送信元アドレスに代えて、宛先アドレス毎にフローＩＤを関連付けてもよい。この場合には、宛先アドレス毎の通信が解析される。また、送信元アドレスに代えて、送信元アドレス及び宛先アドレスの組み合わせ毎にフローＩＤを関連付けてもよい。この場合には、送信元アドレス及び宛先アドレスの組み合わせ毎の通信が解析される。また、送信元アドレス、宛先アドレス、及びポート番号の全て又は何れかの組み合わせ毎にフローＩＤを関連付けてもよい。この場合には、より複雑な単位で通信が解析される。
【００４９】
ソータ３２０は、受信したパケットの情報に基づいて図５Ａで示されるようにパケット情報を管理し、受信したパケットの情報と図５Ｂ及び５Ｃの通信特定情報とに基づいてパケットをソートとして、フローＩＤに従った通信毎のパケットを、フローＩＤ毎に割り当てられたキュー３２１−３２３の何れかの対応するキューに転送する。
【００５０】
図６に、実施例のソータによって実行される処理の例が示される。ここで示される処理の例は、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることで、図３に示されるソータ３２０及びソータ３６０によって処理される処理の例である。ここではソータ３２０により処理が実行されるとして例示するが、ソータ３６０でも同様の処理が実行される。仮想マシン３１１−３１３が送信したパケットを受信すると、パケットをソートする処理を開始するための処理６００が、ソータ３２０によって実行される。
【００５１】
受信したパケットの情報に基づきフローを特定する処理６１０が、特定部４００によって実行される。処理６１０では、図５Ａに示されるように、パケットのヘッダ情報に基づく宛先アドレス、送信元アドレス、ＴＣＰのポート番号、及び、パケットのペイロードの情報に基づいてパケット情報が管理される。また、処理６１０では、図５Ｂや図５Ｃに示される通信特定情報に従ってフローが特定される。通信特定情報において、送信元アドレス、宛先アドレス、及びポート番号の何れか、又はそれらの全ての組み合わせもしくはそれらの何れかの組み合わせ毎に、フローＩＤが関連付けられているので、その関連付けに従い、受信したパケットに含まれるヘッダ情報やペイロードの情報に基づいてフローＩＤが特定される。
【００５２】
処理６１０によって特定されたフローにキューが割り当てられているか否かを判定する処理６２０が、判定部４１０によって実行される。フローにキューが割り当てられていると判定された場合には、処理６４０に移る。フローにキューが割り当てられていないと判定された場合には、処理６３０に移る。
【００５３】
フローに対してキューを割り当てる処理６３０が、割り当て部４２０によって実行され
る。処理６３０によって、メモリ２０２又は２０３におけるメモリ空間の何れかが、フローのパケットを格納するためのキューとして割り当てられる。ソータ３２０は、フローＩＤとキュー番号との関連付けを管理しており、処理６３０によってフローＩＤとキュー番号との新しい関連付けが発生した場合に、管理している関連付けの情報を更新し、メモリ２０２又は２０３に保存する。なお、一定時間パケットが格納されないキューがある場合には、ソータ３２０及びソータ３６０によって、メモリ２０２や２０３においてキューとして割り当てられていたメモリ空間からその割り当てが解除されてもよい。
【００５４】
特定されたフローに割り当てられたキューに対して受信したパケットを転送する処理６４０が、転送部４３０によって実行される。処理６４０によって転送されたパケットがキュー３２１−３２３の何れかに格納される。処理６４０によってパケットが転送されると、特定されたパケットをキューに転送する処理を終えるために、処理６５０がソータ３２０によって実行されて処理を終える。
【００５５】
図７に、実施例のパケットが格納されたキューの例が示される。図７に示される例は、ソータ３２０によって図６に示される処理が実行された結果、仮想マシン３１１−３１３が送信したパケットがソートされて、対応するキュー３２１−３２３の何れかに格納された様子を示す例である。ここでは、サーバ２００に含まれるバッファ３１５、ソータ３２０、及び、キュー３２１−３２３に沿って例示する。例えば、図５Ａに示されるパケット情報にあるように、受信時刻であるｔが“３”、“４”及び“１１”であるパケットのポート番号がともに“８０”である。ソータ３２０は、処理６１０によって、それらのパケットの通信を図５Ｂに示される通信特定情報に基づいて“０”のフローＩＤとして特定し、処理６４０によって“０”のフローＩＤに対応するキュー３２１にパケットを転送する。キュー３２１には、図７に示されるように、受信時刻であるｔが“３”、“４”及び“１１”のパケットが格納されている。同様の処理に従って、受信時刻であるｔが“１０”のパケットがキュー３２２に格納され、受信時刻であるｔが“１５”のパケットがキュー３２３に格納されている。
【００５６】
図７に示されるように、フロー毎にパケットをキューに格納した場合には、フロー毎に通信量が異なっていると、格納されるパケット数がキュー毎に異なることがある。格納されたパケットのパケット数が異なるキューからバッファ３１５に転送される際には、後述されるアナライザ３２４によってフロー毎に決定されたパケット数のパケットが転送されることで、フロー単位の通信毎に決定されたパケット数のパケットがバッファ３１５に格納されることとなる。
【００５７】
図８に、実施例のアナライザの機能ブロックの例が示される。アナライザ３２４および３６４の各々は、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることにより、モニタ部８００、算出部８０１、更新部８０２、取得部８０３、設定部８０４、判定部８０５、サンプリング部８０６、及び、転送部８０７として機能する。各機能ブロックにより実行される処理は、図１０に示される処理に対応させて後述される。
【００５８】
図９に、実施例のサンプリング情報の例が示される。サンプリング情報はメモリ２０２又は２０３に格納される情報であり、アナライザ３２４やアナライザ３６４によって更新される情報である。サンプリング情報では、キュー番号（フローＩＤ）、フローの通信量、対応するキューに格納されたパケットがサンプリングされる場合のキュー毎のサンプリング比、及び、サンプリングされるパケットのサンプリング数が互いに関連付けられている。
【００５９】
キュー番号である“ｎ”は、図面に付された符号ではなく、図５Ｂ及び５Ｃに示される通信特定情報に従って特定される“ｎ”番目のフローＩＤに対応した“ｎ”番目のキューを識別するための番号である。
【００６０】
通信量である“Ｔｎ”は、“ｎ”番目のキューに対応した通信である“ｎ”番目のフローの通信量である。後述されるように、アナライザ３２４やアナライザ３６４によって、キュー毎に格納されるパケット数が監視されることで測定され、サンプリング情報において更新される。
【００６１】
サンプリング比である“Ｒｎ”は、“ｎ”番目のキューに格納されたパケットがサンプリングされる場合のサンプリング比である。各キューのサンプリング比の総和であるΣＲｎは“１”になるように設定されており、Ｒｎ＝１／（Ｔｎ＊Σ（１／Ｔｎ））で表される。
【００６２】
サンプリング数である“Ｓｎ”は、“ｎ”番目のキューに格納されたパケットがサンプリングされる場合のサンプリング数であり、解析装置に接続されたＮＩＣへ転送するためのパケットをバッファリングするためのバッファに対して各キューから転送されるパケット数である。サンプリング数は、Ｓｎ＝Ｔｎ＊ｃ＊Ａｎ＊Ｒｎで表される。各キューのサンプリング数の総和であるΣＳｎが、解析装置に接続されたＮＩＣへのパケット転送量の上限以下になるように設定されている。
【００６３】
変数“ｃ”は、解析装置に接続されたＮＩＣへのパケット転送量の上限に従って決定される変数であり、例えば、パケット転送量の上限が小さく設定されている場合に変数“ｃ”の値も小さく設定される。ただし、ΣＳｎが、解析装置に接続されたＮＩＣへのパケット転送量の上限以下になるように変数“ｃ”は調整される。
【００６４】
変数“Ａｎ”は、フロー毎に転送されるパケット数に重み付けをつける際に設定される変数である。ただし、ΣＳｎが、解析装置に接続されたＮＩＣへのパケット転送量の上限以下になるように変数“Ａｎ”が調整される。
【００６５】
例えば、全てのキューに対するＡｎが“１”に設定された場合には、各キューから転送されるパケット数が揃う。この場合には、フロー毎の通信量に差があったとしても、所定の時間で転送されるパケット数が各フローで揃う。従って、所定の時間で収集されるパケット数に基づいた通信解析が実行される場合に、例えば、通信量の少ない通信に関して収集されるパケットのパケット数も確保することができるので、通信解析の精度を保つことができる。また、この場合、通信毎の通信解析の精度を揃えることとなる。他方で、通信解析に必要とされるパケット数がフロー毎に異なる場合には、変数“Ａｎ”に差をつけることによって、ＮＩＣへのパケット転送量の上限内において、フロー毎の通信解析に必要なパケット数以上になるようにパケットを確保することができる。
【００６６】
以上に説明したように、実施例によれば、キューに格納されたパケット全てが転送されるのではなく、ＮＩＣへのパケット転送量の上限内で、通信毎の通信解析に必要なパケット数以上になるように、アナライザによって決定されるフロー毎のサンプリング数に従ったパケット数のパケットが転送される。
【００６７】
図１０に、実施例のアナライザによって実行される処理の例が示される。ここで示される処理の例は、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることで、図３に示されるアナライザ３２４及びアナライザ３６４によって処理される処理の例である。ここではアナライザ３２４により
処理が実行されるとして例示するが、アナライザ３６４でも同様の処理が実行される。
【００６８】
フロー毎の通信のサンプリング数を決定するための処理の実行が指示されると、図１０に示される処理を開始させるための処理１０００がアナライザ３２４によって実行される。
【００６９】
各キューに格納されるパケットをモニターする処理１００１が、モニタ部８００によって実行される。処理１００１によって、ソータ３２０からキュー３２１−３２３の各々に転送されるパケットがモニターされる。なお、図６に示される処理６３０に従ってキューが増えた場合には、ソータ３２０からその増えたキューに転送されるパケットもモニターされるようになる。他方で、所定時間パケットが転送されなかったキューが消去された場合には、モニタ部８００はその消去されたキューに対するモニターを停止するようにしてもよい。
【００７０】
モニターされたパケットに基づきｎ番目のフローの通信量Ｔｎをキュー毎に算出する処理１００２が、算出部８０１によって実行される。処理１００２によって、例えば、単位時間当たりにソータ３２０からキュー３２１に転送されたパケット数やパケットのデータ量に基づいて、キュー３２１に対応するフローの通信量が算出される。なお、処理１００２によるフロー毎の通信量の算出では、定期的に繰り返して単位時間当たりの通信量が算出されるようにしてもよい。
【００７１】
算出された通信量Ｔｎに基づきパケット情報を更新する処理１００３が、更新部８０２によって実行される。処理１００３によって、処理１００２により算出された通信量に基づいて、図９に示されるサンプリング情報の通信量Ｔｎが更新される。
【００７２】
所定時間経過したか否かを判定する処理１００４が、モニタ部８００によって実行される。所定時間が経過していないと判定された場合には、処理１００１に移る。所定時間が経過したと判定された場合には、処理１００５に移る。処理１００５では、処理１００２によって算出された通信量に基づいて各キューに対するサンプリング数が算出されるが、このサンプリング数の算出を処理１００２による通信量の算出の度に実行する場合には、処理１００４を省略してもよい。処理１００４によって、処理１００２が実行されるタイミングとは異なるタイミングでサンプリング数を算出する処理が実行されるように設定できるため、サンプリング数の算出に割り当てる処理負荷に応じて処理１００４の所定時間が設定されてもよい。
【００７３】
キュー毎（フローＩＤ毎）のサンプリング比であるＲｎ＝１／（Ｔｎ＊Σ（１／Ｔｎ））を算出する処理１００５が、算出部８０１によって実行される。処理１００５によって、処理１００２により算出された通信量Ｔｎに基づいてキュー毎（フローＩＤ毎）のサンプリング比Ｒｎが算出されて、図９に示されるサンプリング情報のサンプリング比Ｒｎが更新される。
【００７４】
転送量の上限に基づく変数“ｃ”及び重み付け変数“Ａｎ”を取得する処理１００６が、取得部８０３によって実行される。処理１００６によって、図９に沿って説明された変数“ｃ”及び変数“Ａｎ”がメモリ２０２又は２０３から読み出されることにより、取得部８０３によって取得される。
【００７５】
キュー番号（フローＩＤ番号）であるｎを初期値に設定する処理１００７が、設定部８０４によって実行される。処理１００７では、例えば、ｎの初期値として“０”が設定される。
【００７６】
設定されたｎ番目のキューにパケットが格納されているか否かが判定される処理１００８が、判定部８０５によって実行される。パケットが格納されていないと判定された場合には処理１００９に移り、パケットが格納されていると判定された場合には処理１０１０に移る。
【００７７】
キュー番号（フローＩＤ番号）であるｎの値を再設定する処理１００９が、設定部８０４によって実行される。処理１００９では、例えば、すでに設定されているｎの値を１つ増やす処理が実行される。なお、実施例は処理１００９に限定されず、キュー毎（フロー毎）にサンプリング数が決定されるように各キューが選択されるようなアルゴリズムを適用すればよい。
【００７８】
設定されたｎ番目のキューからＴｎ＊ｃ＊Ａｎ＊Ｒｎ個のパケットをサンプリングする処理１０１０が、サンプリング部８０６によって実行される。Ｔｎは、処理１００２により算出されたｎ番目のフローの通信量である。“ｃ”は、処理１００６によって取得された、解析装置に接続されたＮＩＣへのパケット転送量の上限に従って決定される変数である。“Ａｎ”は、処理１００６によって取得された、フロー毎に転送されるパケット数に重み付けをつける際に設定される変数である。“Ｒｎ”は、処理１００５により算出されたｎ番目のキューに対するサンプリング比である。処理１０１０によって、キュー毎に決定されたサンプリング数であるＴｎ＊ｃ＊Ａｎ＊Ｒｎ個のパケットがサンプリングされる。なお、Ｔｎ＊ｃ＊Ａｎ＊Ｒｎ個のパケットがサンプリングされればよいので、キューに格納されたパケットからＴｎ＊ｃ＊Ａｎ＊Ｒｎ個のパケットがランダムにサンプリングされてもよく、ランダムにサンプリングされた場合には、間欠的に転送されてキューに格納されたパケットから偏りなくパケットがサンプリングされる。
【００７９】
サンプリングされたパケットをバッファに転送する処理１０１１が、転送部８０７によって実行される。処理１０１１によって、処理１０１０によりｎ番目のキューからサンプリングされたＴｎ＊ｃ＊Ａｎ＊Ｒｎ個のパケットが、図３に示されるバッファ３１５に転送される。なお、処理１０１１は、処理１０１０の直後に実行される場合に限定されず、２以上のキューに対するパケットのサンプリングが完了してから、サンプリングされたパケットをまとめてバッファに転送するようにしてもよい。
【００８０】
全てのキューに対して処理１０１０及び１０１１が済んでいるか否かを判定する処理１０１２が、判定部８０５によって実行される。処理済みでないと判定された場合には、処理１００９に移る。処理済みであると判定された場合には、処理１０１３に移る。
【００８１】
各キューに格納されたパケットを消去する処理１０１３が、更新部８０２によって実行される。処理１０１３により、各キューからデータが消去される。処理１０１４がアナライザ３２４によって実行されることにより、フロー毎の通信のサンプリング数を決定するための処理が終了される。なお、図１０に示された処理が継続される場合には、処理１０１３の後に処理１００１に移ればよい。
【００８２】
図１１に、実施例の解析装置が収集した情報の解析の例が示される。図１１に示される解析の例は、解析装置３９０が、図１０に示される処理に従って、収集されたパケットに基づいて通信解析を実行した場合の例であり、複数の業務用アプリケーション毎の通信頻度が解析されている。
【００８３】
図１１Ａ、Ｂ及びＣには、通信解析が実行される際に使用されたパケット数が異なる例が示されており、図１１Ａには解析に用いられたパケット数が最も多い例が、図１１Ｃには解析に用いられたパケット数が最も少ない例が、そして、図１１Ｂには解析に用いられたパケット数がそれらの間である例が示されている。なお、図１１Ａ、Ｂ及びＣに示され
る例は、互いに異なる期間内に通信されるパケットをサンプリングした場合の例ではなく、同じ期間内でサンプリングした例であり、仮に同じ期間内でサンプリングしたとしてもサンプリング数の違いによって解析精度に差が生じることを説明するための例である。
【００８４】
図１１Ａでは、通信解析の結果として、業務Ａ用のアプリケーションに関する通信が４６．９％、業務Ｂ用のアプリケーションに関する通信が３５．０％、業務Ｃ用のアプリケーションに関する通信が１８．１％の内訳で実行されることが示されている。図１１Ｂでは、通信解析の結果として、業務Ａ用のアプリケーションに関する通信が４７．０％、業務Ｂ用のアプリケーションに関する通信が３５．０％、業務Ｃ用のアプリケーションに関する通信が１８．０％の内訳で実行されることが示されている。図１１Ａ及びＢにより、通信解析においてある程度のパケット数が収集されていると、解析結果が収束することが示される。
【００８５】
他方で、図１１Ｃでは、通信解析の結果として、業務Ａ用のアプリケーションに関する通信が７０％、業務Ｂ用のアプリケーションに関する通信が２０％、業務Ｃ用のアプリケーションに関する通信が１０％の内訳で実行されることが示されている。図１１Ｃに示されるように、仮に同じ期間内でサンプリングしたとしても、通信解析に用いられるパケット数が少ないと、図１１Ａ及びＢに示されるような解析結果の収束値から乖離しており、解析精度が悪くなる。
【００８６】
上述された実施例によれば、通信回路に対するパケットの転送量の上限に制約があり、通信の単位であるフロー毎の通信量に差があったとしても、通信解析用に通信回路に転送されるパケットのパケット数がフロー毎に決定されるため、通信解析に必要なパケット数以上のパケットを解析装置に送信させることができる。例えば、図１１に示された通信解析の対象の通信の通信量が少ない場合であっても、通信量が多い他の通信のパケットが多く間引かれるようにサンプリングされることで、通信解析に必要なパケット数を確保することができる。
【００８７】
それは、図１１に沿って上述したように、通信解析の精度が、ある一定以上のパケット数が確保できれば、通信解析の種類に応じて収束するからである。通信解析の精度として要求される精度が決定されれば、決定された精度を実現するパケット数以上のパケットの収集は冗長な収集となるため、例えば、通信量の多いフローに関してサンプリングされるパケットは、通信解析に必要なパケット数を下回らなければサンプリングされるパケット数を少なくしてもよく、その少なくした分を通信量の少ないパケットのサンプリングにあてがってもよいといえる。とりわけ、通信量が少ない通信は、通信解析用パケットを収集するのに数分のオーダーの時間がかかってしまうことがあるため、通信量の少ないパケットのサンプリング数を増やせると、精度の高い通信解析が速やかに実行されることとなる。
【００８８】
また、例えば、ＨＴＴＰ通信であって、業務アプリの使用頻度、及びその業務アプリに対するアクセス頻度を、ログインＩＤ毎に調査するといった詳細な通信解析をする場合には、通信解析に必要なパケット数が多くなる。そこで、通信回路に対するパケットの転送量の上限に制約内において上述された変数Ａｎを通信毎に変え、通信解析に内容に合わせて、通信解析に必要なパケット数が多いフローに対してはサンプリング数を他のサンプリング数からあてがい、転送されるパケット数が多くなるようしてもよい。
【００８９】
また、例えば、上述された変数Ａｎが通信毎に“１”とされることで、サンプリングされるパケット数を通信毎に揃え、所定期間内でサンプリンされるパケットに基づく通信解析の精度を通信毎に揃えるようにしてもよい。
【００９０】
図１２に、実施例の情報処理システムの他の例が示される。図３に示される構成と同様の構成については、同じ符号が付けられている。図３との違いは、サーバ３１０で実行されている仮想マシン３１３による複数の通信の一部が、負荷分散のために、サーバ３５０で新たに実行された仮想マシン３５３に移されたことである。図１２に示された例は、例えば、仮想マシン３１３による処理量が増えることでサーバ３１０内のＣＰＵ使用率が増加した場合に、サーバ３１０の負荷を監視していたＶＭ管理サーバ３８０がデータセンタ３００内の負荷を分散させるためにサーバ３５０に新たな仮想マシン３５３を配備させ、ＶＭ管理サーバ３８０から通知を受信したロードバランサ３７０が仮想マシン３１３に対してクライアントが要求した処理を仮想マシン３５３に送信し、仮想マシン３５３がクライアントから要求された処理を実行する例である。また、図３との他の違いは、仮想マシン３５３が行う通信がサーバ３５０において新たに発生したことで、図６に示される処理６３０に従って、仮想スイッチ３５４内に新たなキュー３６３が割り当てられたことである。なお、ＶＭ管理サーバ３８０及びロードバランサ３７０によって実行される処理及び機能ブロックなどが後述される。
【００９１】
図１３に、実施例のＶＭ管理サーバのハードウェア構成の例が示される。実施例が適用されたＶＭ管理サーバ３８０は、ＣＰＵ１３００、メモリコントローラ１３０１、メモリ１３０２及び１３０３、メモリバス１３０４、ＩＯバスコントローラ１３０５、ＮＩＣ１３０６−１３０８、記憶装置１３０９、及びＩＯバス１３１０を含む。
【００９２】
メモリバス１３０４に接続されたメモリ１３０２及び１３０３の少なくとも何れか一方には、ＶＭ管理サーバ３８０の各種処理を実行するためのプログラムが格納されている。ＣＰＵ１３００は、メモリコントローラ１３０１を介して、メモリ１３０２及び１３０３からプログラムを読み出し、各種処理を実行する。ＣＰＵ１３００によって実行される各種処理に伴い、メモリ１３０２及び１３０３に対するデータの書き込み及び読み出しがメモリコントローラ１３０１を介して実行される。
【００９３】
ＣＰＵ１３００は、ＩＯバスコントローラ１３０５を介して、ＩＯバス１３１０に接続されたＮＩＣ１３０６―１３０８にＶＭ管理サーバ３８０から送信されるデータやパケットを転送し、また、ＶＭ管理サーバ３８０に対して送信されたデータやパケットを受信する。ＣＰＵ１３００は、ＩＯバスコントローラ１３０５を介して、ＩＯバス１３１０に接続された記憶装置１３０９からデータを読み出し、また記憶装置１３０９にデータを書き込む。
【００９４】
ＣＰＵ１３００は、各種処理を実行するための１以上のＣＰＵコアを含んでいてよい。また、各ＣＰＵコアは１以上のプロセッサを含んでいてもよい。メモリ１３０２及び１３０３は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのＲＡＭである。記憶装置１３０９は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。なお、ＣＰＵ１３００、メモリコントローラ１３０１、メモリ１３０２及び１３０３、ＮＩＣ１３０６−１３０８、及び、記憶装置１３０９が同じバスに接続された構成を実施例に適用してもよい。図１３に示されるハードウェア構成によって、後述されるように、ＶＭ管理サーバ３８０の処理及び機能ブロックが実現される。
【００９５】
図１４に、実施例のＶＭ管理サーバの機能ブロックの例が示される。ＶＭ管理サーバ３８０では、記憶装置１３０９に格納されたプログラムがワーキングメモリとして使用されるメモリ１３０２及び１３０３にロードされ、メモリ１３０２及び１３０３にロードされたプログラムがＣＰＵ１３００によって実行されることにより、モニタ部１４００、判定部１４０１、算出部１４０２、取得部１４０３、選択部１４０４、及び、指示部１４０５
として機能する。各機能ブロックにより実行される処理は、図１６及び１７に示される処理に対応させて後述される。
【００９６】
図１５に、実施例のＶＭ管理サーバが管理する管理情報が示される。図１５Ａ、Ｂ及びＣに示される情報を含む管理情報は、メモリ１３０２又は１３０３に格納される情報であり、ここでは、図１２に示されるサーバ３１０で実行される仮想スイッチ３１３に沿って説明する。
【００９７】
図１５Ａには、仮想マシンのＩＤと仮想マシンが使用しているＣＰＵコアの使用率とが関連付けられた情報が示されている。例えば、ＶＭ管理サーバ３８０では、仮想マシン３１３が“２”のＩＤで管理されており、ＶＭ管理サーバ３８０がサーバ３１０から収集した仮想マシンの動作情報において仮想スイッチ３１３のサーバ３１０におけるＣＰＵコアの使用率が“９０％”であったため、“２”のＩＤに“９０％”が関連付けられて管理されている。後述するが、ＶＭ管理サーバ３８０では、ＣＰＵコアの使用率の閾値が設定されており、この閾値を超えたＣＰＵコアを使用している仮想マシンの負荷分散が可能かどうかの判定が実行される。ここでは、ＣＰＵコアの使用率が“９０％”となった仮想マシン３１３の負荷分散が実行される場合に沿って例示する。
【００９８】
図１５Ｂには、ＣＰＵコアの使用率が閾値を超えた仮想マシンが実行している通信の種類と、その通信に使用されているＣＰＵコアの使用率とが関連付けられた情報が示されている。例えば、ＣＰＵコアの使用率が“９０％”となった仮想マシン３１３が実行している通信のうち、例えばネットワーク３０５に接続されたクライアントとの通信のようなロードバランサ３７０を経由する通信に使用されているＣＰＵコアの使用率が“３０％である。他方で、仮想マシン３１３が、サーバ３１０内において他の仮想マシン３１１や３１２に対して通信するようなロードバランサ３７０を経由しない通信に使用されているＣＰＵコアの使用率が“６０％”である。これらのＣＰＵ使用率の割合は、ＶＭ管理サーバ３８０がサーバ３１０から取得する仮想マシンの動作情報に基づいて判定すればよい。
【００９９】
図１５Ｃには、トラフィック番号、送信元ＭＡＣアドレス、通信量、フローＩＤ、及び、ＣＰＵ使用率が関連付けられた情報が示される。トラフィック番号は、ＣＰＵコアの使用率が閾値を超えた仮想マシンが実行している通信のうち、ロードバランサ３７０を経由する通信を識別するために付けられている番号である。その通信を識別するためのトラフィック番号毎に、送信元アドレスが関連付けられている。これは後述されるように、ＶＭ管理サーバ３８０がロードバランサ３７０に対して負荷分散をするための通信の切り替えをさせるために関連付けられている。
【０１００】
さらに、図１５Ｃに示されるように、トラフィック番号毎に通信量が関連付けられている。また、トラフィック番号毎に、図５Ｂや図５Ｃに示されるような通信解析のための通信の分類ポリシーに従って特定されたフローＩＤが関連付けられおり、後述されるように、サーバ３５０に新たな仮想マシン３５３が配備される際のキュー管理のために使用される。また、トラフィック番号毎の通信に使用されるＣＰＵコアの使用率が関連付けられており、この情報もキュー管理のために使用される。
【０１０１】
図１６に、実施例のＶＭ管理サーバによって実行される処理の例が示される。ここで示される処理の例は、記憶装置１３０９に格納されたプログラムがワーキングメモリとして使用されるメモリ１３０２及び１３０３にロードされ、メモリ１３０２及び１３０３にロードされたプログラムがＣＰＵ１３００によって実行されることで、図１２に示されるＶＭ管理サーバ３８０によって処理される処理の例である。負荷分散のための通信の切り替えの処理を開始させるための処理１６００が、ＶＭ管理サーバ３８０によって実行される。
【０１０２】
仮想マシン毎のＣＰＵコアの使用率をモニターする処理１６０１が、モニタ部１４００によって実行される。処理１６０１によってモニターされたＣＰＵコアの使用率に従って、図１５Ａに示される情報が更新される。
【０１０３】
ＣＰＵコアの使用率が閾値を超えている仮想マシンがいるか否かを判定する処理１６０２が、判定部１４０１によって実行される。処理１６０２では、判定部１４０１が図１５Ａに示される情報に基づいて、設定された閾値を超えてＣＰＵコアを使用しているか否かを判定する。閾値を超えている仮想マシンがいないと判定された場合には処理１６０１に移り、仮想マシン毎のＣＰＵコアの使用率のモニターを継続する。閾値を超えている仮想マシンがいる判定された場合には、処理１６０３に移る。例えば、閾値が“８０％”と設定されている場合であると、図１５Ａに示されるように、ＩＤが“２”である仮想マシンのＣＰＵコアの使用率が“９０％”であり閾値を超えているため、処理１６０２によって、ＩＤが“２”である仮想マシンが特定される。
【０１０４】
閾値を超える仮想マシンの負荷状況を算出する処理１６０３が、算出部１４０２によって実行される。処理１６０３では、処理１６０２により閾値を超えてＣＰＵコアを使用していると判定された仮想マシンが実行している通信のうち、例えばネットワーク３０５に接続されたクライアントとの通信のようなロードバランサ３７０を経由する通信に使用されているＣＰＵコアの使用率、及び、サーバ内において他の仮想マシンに対して通信するようなロードバランサ３７０を経由しない通信に使用されているＣＰＵコアの使用率が算出される。算出された情報に基づいて図１５に示される管理情報が更新される。例えば、処理１６０２によって特定されたＩＤが“２”である仮想マシンが実行している通信のうち、図１５Ｂに示されるように、ロードバランサ３７０を経由する通信に使用されているＣＰＵコアの使用率が“３０％”、ロードバランサ３７０を経由しない通信に使用されているＣＰＵコアの使用率が“６０％”であると算出される。
【０１０５】
ロードバランスによってＣＰＵコアの使用率が閾値を下回るか否かを判定する処理１６０４が、判定部１４０１によって実行される。処理１６０４では、処理１６０３により算出された、ロードバランサ３７０を経由する通信に使用されているＣＰＵコアの使用率に基づき、ロードバランサ３７０を経由する通信が他の仮想マシンが実行されるように切り替えられた場合に、ＣＰＵコアの使用率が閾値を下回るか否かが判定される。上述したように、例えば、図１５Ａ及びＢに示された場合でＣＰＵコアの使用率の閾値が８０％に設定されているとすると、図１５Ａに示されるようにＩＤが“２”である仮想マシン３１３のＣＰＵコアの使用率が“９０％”で閾値８０％を超えているため処理１６０３が実行される。その結果、図１５Ｂに示されるように、ロードバランサ３７０を経由して仮想マシン３１３が実行している通信に使用されているＣＰＵコアの使用率が“３０％”と算出される。この場合、処理１６０４では、ロードバランサ３７０を経由して仮想マシン３１３が実行している通信が他の仮想マシンが実行されるように切り替えられれば、仮想マシン３１３のＣＰＵコアの使用率が“９０％”から“６０％”に減少し、閾値８０％を下回ると判定される。処理１６０４において、ＣＰＵコアの使用率が閾値を下回ると判定された場合には処理１６０５に移り、ＣＰＵコアの使用率が閾値を下回らないと判定された場合には、仮想マシンのＣＰＵコアの使用率のモニターを継続するために、処理１６０１に移る。
【０１０６】
閾値を超える仮想マシンの通信状況をロードバランサから取得する処理１６０５が、取得部１４０３によって実行される。ロードバランサ３７０は、ロードバランサ３７０を経由して実行されている通信状況を管理しているため、例えば、仮想マシン３１３がロードバランサ３７０を経由して実行している各通信もロードバランサ３７０によってトラフィックとして管理されている。処理１６０５により、ＶＭ管理サーバ３８０は、仮想マシン
３１３に関連するトラフィックの通信相手のアドレスや通信量を通信状況として取得する。
【０１０７】
トラフィック毎のＣＰＵコア使用率を算出する処理１６０６が、算出部１４０２によって実行される。処理１６０６では、処理１６０３により算出された、ロードバランサを経由して仮想マシンが実行している通信のＣＰＵコア使用率が、処理１６０５により取得したトラフィック毎の通信量によって例えば按分されることで、トラフィック毎のＣＰＵコア使用率が算出される。例えば、ロードバランサ３７０を経由して仮想マシン３１３が実行している通信に使用されているＣＰＵコアの使用率が“３０％”であり、仮想マシン３１３による通信状況が図１５Ｃに示される通信状況の場合には、通信量が１Ｇｂｐｓであるトラフィック番号“１”のトラフィックのＣＰＵコア使用率が按分によって“７．５％”であると算出される。処理１６０５によって取得された情報及び処理１６０６によって算出された情報に従って、図１５Ｃに示される情報が更新される。
【０１０８】
閾値を下回るようにロードバランスさせるトラフィックを選択する処理１６０７が、選択部１４０４によって実行される。処理１６０７では、例えば、図１５Ｃに示されるＣＰＵコア使用率に基づいて、どのトラフィックが仮想マシン３１３ではなく他の仮想マシンに実行されるようにすれば、仮想マシン３１３のＣＰＵコアの使用率“９０％”が閾値８０％を下回るかが判定される。例えば、トラフィック番号が“０”及び“１”の両方のトラフィックが他の仮想マシンに実行されるようにすれば、仮想マシン３１３のＣＰＵコアの使用率“９０％”から“７５％”になると判定されて、トラフィック番号が“０”及び“１”のトラフィックがロードバランスさせるトラフィックとして選択される。他方で、トラフィック番号が“２”のトラフィックが他の仮想マシンに実行されるようにすれば、仮想マシン３１３のＣＰＵコアの使用率“９０％”から“７５％”になると判定されて、トラフィック番号が“２”のトラフィックがロードバランスの対象のトラフィックとして選択されてもよい。また、トラフィック番号が“０”及び“２”の両方のトラフィックが他の仮想マシンに実行されるようにすれば、仮想マシン３１３のＣＰＵコアの使用率“９０％”から“６７．５％”になると判定されて、トラフィック番号が“０”及び“２”の両方のトラフィックがロードバランスの対象のトラフィックとして選択されてもよい。また、ロードバランサを経由しない通信に使用されるＣＰＵコアの使用率を確保したり、上昇することが予測されたりする場合には、トラフィック番号が“０”、“１”及び“２”の全てのトラフィックがロードバランスの対象のトラフィックとして選択されてもよい。
【０１０９】
以上に述べたように、図１６に示された処理によって、仮想マシンのＣＰＵコアの使用率がモニターされて、負荷を分散させるために、どのトラフィックを移すかの選択が実行される。
【０１１０】
図１７に、実施例のＶＭ管理サーバによって実行される処理の例が示される。ここで示される処理の例は、記憶装置１３０９に格納されたプログラムがワーキングメモリとして使用されるメモリ１３０２及び１３０３にロードされ、メモリ１３０２及び１３０３にロードされたプログラムがＣＰＵ１３００によって実行されることで、図１２に示されるＶＭ管理サーバ３８０によって処理される処理の例であり、図１６に示された処理１６０７に次いで実行される処理である。
【０１１１】
ロードバランスを受け入れ可能な仮想マシンがあるか否かを判定する処理１７００が、判定部１４０１によって実行される。処理１７００では、処理１６０７により選択されたトラフィックを代りに実行可能な他の仮想マシンがあるか否かが判定される。例えば、ＶＭ管理サーバ３８０によって管理されている他の仮想マシンのＣＰＵコア使用率に対して、処理１６０６で算出されたＣＰＵコアの使用率が加算されても、ＣＰＵコアの使用率の閾値を上回らなければ、その他の仮想マシンはロードバランスを受け入れ可能であると判
定される。受け入れ可能な仮想マシンがないと判定された場合には処理１７０１に移り、受け入れ可能な仮想マシンがあると判定された場合には処理１７０２に移る。
【０１１２】
新規の仮想マシンの配備を指示するための処理１７０１が、指示部１４０５によって実行される。処理１７０１によって、処理１６０７により選択されたトラフィックを代りに実行する他の仮想マシンが、データセンタ３００内のサーバにより新たに実行される。例えば、ＶＭ監視サーバ３８０によって、新規に仮想マシン３５３を実行させることがサーバ３５０に指示され、サーバ３１０内で実行されている仮想マシン３１３によるトラフィックを仮想マシン３５３が代りに実行することとなる。
【０１１３】
トラフィックの移動をロードバランサに指示する処理１７０２が、指示部１４０５によって実行される。処理１７０２により、処理１６０７により選択されたトラフィックの宛先が、トラフィックを代りに実行する他の仮想マシンとなるように、トラフィックの移動元の仮想マシンのアドレス及びトラフィックを代りに実行する他の仮想マシンのアドレスの通知と併せて、トラフィックの移動がロードバランサ３７０に対して指示がされる。後述するが、ロードバランサ３７０はトラフィックの移動元の仮想マシンを宛先アドレスとしたパケットを受信すると、宛先アドレスを他の仮想マシンのアドレスに変換し、パケットを他の仮想マシンに送信する。
【０１１４】
トラフィックが移動されるサーバにトラフィックに対応するフローの移動前の通信量を通知する処理１７０３が、指示部１４０５によって実行される。処理１７０３では、トラフィックの移動前に実測されていた通信量が、トラフィックを代りに実行する仮想マシンが配備されるサーバに対して通知される。処理１７０３によって、移動されるトラフィックの通信量が移動先のサーバにおいて新たに実測する前であっても、通知された通信量を予測値として使用することができるため、通信量の実測を待たなくても、図１０に沿って上述されたように、通信解析の単位であるフロー毎のサンプリング量を予測値に基づいて決定することができる。
【０１１５】
なお、処理１７０３では、トラフィックを実行していた仮想マシンに割り当てられていた物理リソースと、トラフィックを代りに実行する仮想マシンに割り当てられる物理リソースとの差分に応じて、通知される通信量が補正されてもよい。例えば、トラフィックを代りに実行する仮想マシンに割り当てられる物理リソースに制限がある場合には、物理リソースの割り当ての割合の減少分に比例して通信量を少なく見積もるように補正してもよい。この場合には、より確からしい通信量を予測値として使用することができる。
【０１１６】
処理１７０３を終了した後、仮想マシン毎のＣＰＵコア使用率のモニターを継続しない場合には、図１６及び１７に示された処理を終えるための処理１７０４が、ＶＭ管理サーバ３８０によって実行される。
【０１１７】
図１８に、実施例のロードバランサのハードウェア構成の例が示される。施例が適用されたロードバランサ３７０は、ＣＰＵ１８００、メモリコントローラ１８０１、メモリ１８０２及び１８０３、メモリバス１８０４、ＩＯバスコントローラ１８０５、ＮＩＣ１８０６−１８０８、記憶装置１８０９、及びＩＯバス１８１０を含む。
【０１１８】
メモリバス１８０４に接続されたメモリ１８０２及び１８０３の少なくとも何れか一方には、ロードバランサ３７０の各種処理を実行するためのプログラムが格納されている。ＣＰＵ１８００は、メモリコントローラ１８０１を介して、メモリ１８０２及び１８０３からプログラムを読み出し、各種処理を実行する。ＣＰＵ１８００によって実行される各種処理に伴い、メモリ１８０２及び１８０３に対するデータの書き込み及び読み出しがメモリコントローラ１８０１を介して実行される。
【０１１９】
ＣＰＵ１８００は、ＩＯバスコントローラ１８０５を介して、ＩＯバス１８１０に接続されたＮＩＣ１８０６―１８０８にロードバランサ３７０から送信されるデータやパケットを転送し、また、ロードバランサ３７０に対して送信されたデータやパケットを受信する。ＣＰＵ１８００は、ＩＯバスコントローラ１８０５を介して、ＩＯバス１８１０に接続された記憶装置１８０９からデータを読み出し、また記憶装置１８０９にデータを書き込む。
【０１２０】
ＣＰＵ１８００は、各種処理を実行するための１以上のＣＰＵコアを含んでいてよい。また、各ＣＰＵコアは１以上のプロセッサを含んでいてもよい。メモリ１８０２及び１８０３は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのＲＡＭである。記憶装置１８０９は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。なお、ＣＰＵ１８００、メモリコントローラ１８０１、メモリ１８０２及び１８０３、ＮＩＣ１８０６−１８０８、及び、記憶装置１８０９が同じバスに接続された構成を実施例に適用してもよい。図１８に示されるハードウェア構成によって、後述されるように、ロードバランサ３７０の処理及び機能ブロックが実現される。
【０１２１】
図１９に、実施例のロードバランサの機能ブロックの例が示される。記憶装置１８０９に格納されたプログラムがワーキングメモリとして使用されるメモリ１８０２及び１８０３にロードされ、メモリ１８０２及び１８０３にロードされたプログラムがＣＰＵ１８００によって実行されることにより、通知部１９００、更新部１９０１、判定部１９０２、及び、変換部１９０３として機能する。各機能ブロックにより実行される処理は、図２０に示される処理に対応させて後述される。
【０１２２】
図２０に、実施例のロードバランサによって実行される処理の例が示される。ロードバランサ３７０では、記憶装置１８０９に格納されたプログラムがワーキングメモリとして使用されるメモリ１８０２及び１８０３にロードされ、メモリ１８０２及び１８０３にロードされたプログラムがＣＰＵ１８００によって実行されることにより、図１２に示されるロードバランサ３７０によって処理される処理の例である。
【０１２３】
通信状況の問い合わせを受信すると、指定された仮想マシンの通信状況を通知する処理２００１が、通知部１９００によって実行される。ロードバランサ３７０では、データセンタ３００外のクライアントとデータセンタ３００内のサーバ３１０及び３５０との通信状況を管理しており、処理２００１では、ＶＭ管理サーバ３８０が処理１６０５に関連して通信状況の問い合わせを受信すると、指定された仮想マシンに関連するトラフィック毎の通信量を通信状況としてＶＭ管理サーバ３８０に通知する。
【０１２４】
通知された情報に基づきアドレス変換情報を更新する処理２００２が、更新部１９０１によって実行される。処理２００２により、ＶＭ管理サーバ３８０が処理１７０２によって指示するトラフィックの移動に基づいて、アドレス変換情報を更新する。ＶＭ管理サーバ３８０は、トラフィックの移動元及び移動先の仮想マシンのアドレスを処理１７０２によりロードバランサ３７０に指示するため、ロードバランサ３７０では処理２００２により移動元アドレスを宛先アドレスとする要求をクライアントから受信した際に移動先アドレスの仮想マシンに要求を処理させるために、その宛先アドレスを移動先アドレスに変換できるように、アドレスの関連付けを管理するアドレス変換情報を更新する。
【０１２５】
アドレス変換が必要なパケットを受信したか否かを判定する処理２００３が、判定部１９０２によって実行される。判定部１９０２では、受信したパケットの宛先アドレスが、
アドレス変換情報にあるアドレス変換が必要な宛先であるか否かを判定する。アドレス変換が必要だと判定されると処理２００４に移り、アドレス変換が必要でないと判定されると処理２００５に移る。
【０１２６】
アドレス変換情報に基づいてアドレス変換する処理２００４が、変換部１９０３によって実行される。処理２００４では、処理２００２で更新されるアドレス変換情報に基づいて、ロードバランサ３７０が受信したパケットの宛先アドレスが変換される。次いで、宛先アドレスに基づいてパケットを送信する処理２００５が送信部によって実行される。
【０１２７】
図２１に、実施例のアナライザによって実行される処理の他の例が示される。ここで示される処理の例は、記憶装置２０９に格納されたプログラムがワーキングメモリとして使用されるメモリ２０２及び２０３にロードされ、メモリ２０２及び２０３にロードされたプログラムがＣＰＵ２００によって実行されることで、図３に示されるアナライザ３２４及びアナライザ３６４によって処理される処理の例である。ここではアナライザ３６４により処理が実行されるとして例示するが、アナライザ３２４でも同様の処理が実行される。
【０１２８】
ＶＭ管理サーバ３８０から処理１７０１によって新規の仮想マシン３５３の配備が通知されたサーバ３５０内のアナライザ３６４によって、図２１に示される処理を開始させるための処理２１００が実行される。処理２１００は、図１０に示されたアナライザの処理とは非同期に実行が開始されてよい。
【０１２９】
処理１００５を開始し、移動させられるフローについては、通知された通信量に基づきサンプリング比：Ｒｎ＝１／（Ｔｎ＊Σ（１／Ｔｎ））を計算させる処理２１０１が実行される。処理２１０１は、処理１７０３に基づき通知された通信量を予測値として、サンプリング比：Ｒｎ＝１／（Ｔｎ＊Σ（１／Ｔｎ））を再計算させるための処理であり、図１０に示される処理１００４の判定を待たずに処理１００５以降の処理を実行させることができる。
【０１３０】
図２２に、実施例の情報処理システムで実行される処理の例が示される。図２２に示される例は、上述されたロードバランスのために、サーバ３５０内に仮想マシン３５３が新規に配備され、通知された通信量を予測値として、キューのサンプリング量がアナライザ３６４によって決定される場合の例である。
【０１３１】
ＶＭ管理サーバ３８０によって、サーバ３１０及びサーバ３５０に対してＣＰＵコアの使用率の問い合わせをする通信Ｃ１が実行される。この通信Ｃ１の応答として、サーバ３１０及びサーバ３５０によって、各サーバ内で実行される仮想マシン毎のＣＰＵコア使用率を返信する通信Ｃ２が実行される。通信Ｃ１及びＣ２は、図１６に示される処理１６０１に対応する。通信Ｃ２によって取得した仮想マシン毎のＣＰＵコアの使用率は、ＶＭ管理サーバ３８０によって、図１５Ａに示される情報として管理される。ここで、通知Ｃ２によって取得した情報に基づき、処理１６０２によってサーバ３１０で実行されている仮想マシン３１３のＣＰＵコア使用率が閾値を超えていると判定され、仮想マシン３１３によって実行されていたトラフィックが、処理１７０２によってサーバ３５０で新たに実行される仮想マシン３５３に移されるとする。
【０１３２】
ＶＭ管理サーバ３８０によってロードバランサ３７０に対して仮想マシン３１３の通信状況の問い合わせをする通信Ｃ３が実行され、ロードバランサ３７０によって通信状況の返信する通信Ｃ４が実行される。なお、通信Ｃ４が図２０に示される処理２００１に対応し、図１６の処理１６０５に示されるように、この通信Ｃ４によってＶＭ管理サーバ３８０が仮想マシン３１３の通信状況を取得する。
【０１３３】
ＶＭ管理サーバ３８０からサーバ３５０に対して、仮想マシン３５３を実行させるための指示をする通信Ｃ５が実行される。通信Ｃ５は、図１７に示される１７０１に対応する。
【０１３４】
ＶＭ管理サーバ３８０からサーバ３５０に対して、仮想マシン３１３が実行していたフロー毎の通信量をサーバ３１０からサーバ３５０に送信させるための指示をする通信Ｃ６が実行される。この指示を受信したサーバ３１０によって、処理１００１−１００３によって算出された仮想マシン３１３の通信量をサーバ３５０に送信する通信Ｃ７が実行される。通知Ｃ７によって通信量の情報を受け取ったサーバ３５０は、受け取った通信量を予測値として、仮想マシン３１３のフローを代りに実行する仮想マシン３５３のフローに対応するキューのサンプリング比の算出を処理２１０１により実行し、図１０に示される、例えば処理１００５〜１０１３が実行されることとなる。
【０１３５】
ＶＭ管理サーバ３８０によって、処理１７０２に対応して、アドレス変換情報を指示するための通信Ｃ８が実行される。アドレス変換情報を受信したロードバランサ３７０によって宛先アドレスが変換された結果、サーバ３１０に対してではなく、サーバ３５０内で実行される仮想マシン３５３に対してロードバランスされた通信Ｃ９及びロードバランスされた他の通信Ｃ１０が実行される。
【０１３６】
図２２に示されるように、通信Ｃ５によって仮想マシン３５３が実行されると、通信Ｃ７により取得した通信量を予測値として、図１０及び２１に示される処理に従ったサンプリング量がアナライザ３６４によって再決定される。そのため、通信Ｃ９及びＣ１０の通信量の実測を待たなくても、より確からしいサンプリング量によって、通信Ｃ９及びＣ１０の通信解析が実行可能となる。なお、図１０に示される処理１００１−１００３によって、通信量の実測が完了した後は、図１０に示される処理１００５以降の処理に従って実測に基づくサンプリング値が決定され、このサンプリング値に基づいて通信解析のためのサンプリングが実行されればよい。
【０１３７】
実施例によれば、ロードバランスをさせる際に、ロードバランス前の通信量を利用することで、ロードバランス後の通信量の実測を待っている期間に、予測値に基づいたサンプリング値が再決定されるので、より確からしいサンプリング値に基づいて速やかに通信解析のためのパケットのサンプリングを開始させることができる。
【０１３８】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）  コンピュータが、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に使用されるパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送することを特徴とする情報処理方法。
（付記２）  前記複数の通信毎に決定される前記パケット数は、前記コンピュータによって、前記複数の通信毎のパケット数が揃うように決定されることを特徴とする付記１に記載の情報処理方法。
（付記３）  前記コンピュータは、前記複数の通信の数が変わる場合に、前記複数の通信毎に決定されるパケット数を算出することを特徴とする付記１又は２に記載の情報処理方法。
（付記４）  前記複数の通信の数は、前記コンピュータによって実行される仮想マシンが他の通信を代行することによって変わり、前記コンピュータは、前記他の通信が代行される仮想マシンの通信量に基づいて、前記他の通信を代行する仮想マシンの通信量を算出し、前記複数の通信毎に決定されるパケット数は、前記コンピュータによって前記算出された通信量に基づいて算出されることを特徴とする付記３に記載の情報処理方法。
（付記５）  前記コンピュータは、前記他の通信を代行する仮想マシンに割り当てられる通信量に基づいて、前記算出された通信量を補正することを特徴とする付記４に記載の情報処理方法。
（付記６）  前記他の通信が代行される仮想マシンの通信量は、前記他の通信が代行される仮想マシンが前記通信回路を介して行う通信の通信量であることを特徴とする付記４又は５に記載の情報処理方法。
（付記７）  前記複数の通信は、仮想マシン毎の通信であることを特徴とする付記１〜６の何れか１つに記載の情報処理方法。
（付記８）  前記他の通信が代行される仮想マシンによる処理負荷を分散させるために、前記コンピュータによって実行される仮想マシンが他の通信を代行することを特徴とする付記４〜７の何れか１つに記載の情報処理方法。
（付記９）  前記複数の通信毎に決定されるパケット数のパケットを所定期間収集して、通信解析を実行することを特徴とする付記１〜８の何れか１つに記載の情報処理方法。
（付記１０）  前記コンピュータは、前記パケットを前記通信回路に転送する場合に、前記複数の通信毎に決定される前記パケット数に基づいて、前記複数の通信毎にパケットを間引くことを特徴とする付記１〜９の何れか１つに記載の情報処理方法。
（付記１１）  前記複数の通信は、通信のプロトコル、宛先アドレス、又は送信元アドレスに基づく通信解析の単位に基づいてソートされた複数の通信であることを特徴とする付記１〜１０の何れか１つに記載の情報処理方法。
（付記１２）  前記通信回路は、前記コンピュータが外部装置にパケットを送信するための他の通信回路に接続されたバスに接続された通信回路であって、前記パケット転送量の上限は、前記他の通信回路の通信量に応じて設定されることを特徴とする付記１〜１１の何れか１つに記載の情報処理方法。
（付記１３）  前記通信解析に対応するパケット数は、前記通信解析の処理内容に応じて設定されることを特徴とする付記１〜１２の何れか１つに記載の情報処理方法。
（付記１４）  コンピュータに、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に使用されるパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送させることを特徴とするプログラム。
（付記１６）  通信回路と、複数の通信の通信量及び前記通信回路に対する前記複数の通信のパケット転送量の上限に応じて通信解析に使用されるパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送させる処理部とを含むことを特徴とする情報処理装置。
（付記１７）  通信解析を実行する解析装置と、複数の通信の通信量及び通信回路に対する前記複数の通信のパケット転送量の上限に応じて前記通信解析に使用されるパケット数以上になるように前記複数の通信毎に決定されるパケット数のパケットを、前記通信回路に転送するコンピュータとを含むことを特徴とする情報処理システム。
【符号の説明】
【０１３９】
１、３００                                              データセンタ
２、３１０、３５０                                      サーバ
３、３８０                                              ＶＭ管理サーバ
４、３９０                                              解析装置
５、６、３１１、３１２、３１３、３５１、３５２、３５３  仮想マシン（ＶＭ）
７、３１４、３５４                                      仮想スイッチ（ｖＳＷ）
８、９、１０、２０６、２０７、２０８、３１６、３１７、３１８、３５６、３５７、３５８、１３０６、１３０７、１３０８、１８０６、１８０７、１８０８  通信回路（ＮＩＣ）
１１                                                    ＩＯバス
１２、３１５、３２５、３５５、３６５                    バッファ
１３、３０５                                            ネットワーク
２００、１３００、１８００                              ＣＰＵ
２０１、１３０１、１８０１                              メモリコントローラ
２０２、２０３、１３０２、１３０３、１８０２、１８０３  メモリ
２０４、１３０４、１８０４                              メモリバス
２０５、１３０５、１８０５                              ＩＯバスコントローラ
２０９、１３０９、１８０９                              記憶装置
２１０、１３１０、１８１０                              ＩＯバス
３２０、３６０                                          ソータ
３２１、３２２、３２３、３６１、３６２、３６３          キュー
３２４、３６４                                          アナライザ
３７０                                                  ロードバランサ
４００                                                  特定部
４１０、８０５、１４０１、１９０２                      判定部
４２０                                                  割り当て部
４３０、８０７                                          転送部
８００、１４００                                        モニタ部
８０１、１４０２                                        算出部
８０２、１９０１                                        更新部
８０３、１４０３                                        取得部
８０４                                                  設定部
８０６                                                  サンプリング部
１４０４                                                選択部
１４０５                                                指示部
１９００                                                通知部
１９０３                                                変換部
【図１】
2014086927.tif 000003
【図２】
2014086927.tif 000004
【図３】
2014086927.tif 000005
【図４】
2014086927.tif 000006
【図５】
2014086927.tif 000007
【図７】
2014086927.tif 000008
【図８】
2014086927.tif 000009
【図９】
2014086927.tif 000010
【図１０】
2014086927.tif 000011
【図１１】
2014086927.tif 000012
【図１２】
2014086927.tif 000013
【図１３】
2014086927.tif 000014
【図１４】
2014086927.tif 000015
【図１５】
2014086927.tif 000016
【図１６】
2014086927.tif 000017
【図１７】
2014086927.tif 000018
【図１８】
2014086927.tif 000019
【図１９】
2014086927.tif 000020
【図２０】
2014086927.tif 000021
【図２１】
2014086927.tif 000022
【図２２】
2014086927.tif 000023
【図６】
2014086927.tif 000024