(57)【特許請求の範囲】
【請求項１】
仮想マシン（１３０、１３５、１４０、１４５）を複製するための方法であって、
ネットワーク要素によって、仮想マシンに関連するデータパケットに対応するクラスを判定するステップ（Ｓ５２０、Ｓ６２５）と、
判定されたクラスに基づいて、データパケットをバッファするステップ（Ｓ５３０、Ｓ６３５）およびデータパケットを送信するステップ（Ｓ５３５、Ｓ６４０）のうちの１つと
を含み、
クラスが、データパケットのタイプに基づいて判定され、
データパケットは、制御メッセージを含むタイプのデータパケットまたは、制御メッセージを含まずにデータのみを含む他のタイプのデータパケットのいずれかである、
方法。
【請求項２】
クラス判定するステップが、データパケットのタイプを、クラスをデータパケットのタイプに関連づける複数のルールを含むルールセットと比較することを含む、請求項１に記載の方法。
【請求項３】
制御メッセージを含むデータパケットがバッファされ、データのみを含むデータパケットが送信される、請求項２に記載の方法。
【請求項４】
ネットワーク要素がネットワークスイッチである、請求項１に記載の方法。
【請求項５】
ネットワークスイッチによって、仮想マシンをホストする制御モジュールから制御メッセージおよびプロトコルメッセージを受信するステップ（Ｓ６１５）と、
ネットワークスイッチによって、仮想マシンをホストする制御モジュールからデータパケットを受信するステップ（Ｓ６２０）であって、制御メッセージおよびプロトコルメッセージが、データパケットに対応するクラスを判定するために使用される、ステップと
をさらに含む、請求項４に記載の方法。
【請求項６】
仮想マシンのホストに関連する制御モジュール（１５０）であって、
データパケットをバッファするように構成されたメモリ（２２５）と、
仮想マシンに関連するデータパケットに対応するクラスを判定するように構成され、判定されたクラスに基づいて、メモリにデータパケットをバッファすること、およびデータパケットを送信することのうちの１つを行うように構成されたパケット分類器（２１５）と
を含み、
クラスが、パケットのタイプに基づいて判定され、
データパケットは、制御メッセージを含むタイプのデータパケットまたは、制御メッセージを含まずにデータのみを含む他のタイプのデータパケットのいずれかである、
制御モジュール。
【請求項７】
制御メッセージを含むデータパケットがバッファされ、
データのみを含むデータパケットが送信される、
請求項６に記載の制御モジュール。
【請求項８】
仮想マシンをホストする制御モジュールから、仮想マシンに関連するデータパケットに対応するプロトコル情報および制御情報を含むメッセージを受信するように構成されたモジュール（４１０）と、
プロトコル情報および制御情報に基づいてクラスを判定するように構成され、判定されたクラスに基づいて、データパケットをバッファすること、およびデータパケットを送信することのうちの１つを行うように構成されたパケット分類器（４２５）と
を含み、
クラスが、データパケットのタイプに基づいて判定され、
データパケットは、制御メッセージを含むタイプのデータパケットまたは、制御メッセージを含まずにデータのみを含む他のタイプのデータパケットのいずれかである、
ネットワークスイッチ（１１０）。
【請求項９】
制御メッセージを含むデータパケットがバッファされ、
データのみを含むデータパケットが送信される、
請求項８に記載のネットワークスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、仮想マシンの非同期複製に関する。
【背景技術】
【０００２】
電話通信サービスを提供するために使用されるものなどのコンピューティングインフラの仮想化は、コンピューティング環境を介してそのようなサービスを提供することを必要とする。
【０００３】
仮想化は、物理マシン、サーバおよび仮想マシンの使用を含み得る。物理マシンまたはサーバは、物理エンティティである。仮想マシンは、同じ物理マシン上でエミュレートされ得る他の仮想マシンとは別個の独立したマシンをエミュレートする、物理マシン上で実行するソフトウェアを含む。単一の物理マシンは、複数の仮想マシンをホストすることができる。「サーバ」という用語は、文脈に基づいて、物理マシンまたは仮想マシンのいずれかを指し得る。
【０００４】
仮想マシンは、２つの方法のうちの１つを使用して複製され得る。１つ目は同期仮想マシン複製であり、２つ目は非同期仮想マシン複製である。同期仮想マシン複製は遅すぎるので、実際は、高データレートアプリケーションには有用でない。非同期仮想マシン複製は、同期ソリューションよりもかなり良いものであるが、送信トラフィックに課す制約（すべての送信されたパケットを長期間バッファする必要があり、かなりの帯域幅減少をもたらす）により、高データレートアプリケーションに直接適用可能ではない。
【０００５】
非同期複製は、障害に関係なく、外部クライアントが複製されたシステムを一貫して把握することを保証する。プライマリおよびバックアップは、一定の間隔でしか同期しない。すべてのデータパケット送信が以前の時間間隔において作成されたデータパケットに対して行われる場合、以前の間隔はバックアップに正常にコミットされているので、一貫性が保証される。
【０００６】
知られている非同期方法では、すべてのデータパケットがバッファされるので、パケットはデフォルトの時間間隔（Ｔｅｐｏｃｈ）毎にしか送信されず、したがって、間隔の期間に比例する係数で有効帯域幅を低減する。さらに、知られている非同期方法では、外のクライアントは、バッファ解放の間の非常に高いネットワークトラフィックの短い期間が続くパケットバッファリングの間、無活動の期間を経験する。さらに、知られている非同期方法では、複製された仮想マシンからの応答は、平均してＴｅｐｏｃｈ／２だけ遅れる。
【発明の概要】
【課題を解決するための手段】
【０００７】
例示的な実施形態は、仮想マシンの非同期複製に関する。
【０００８】
一実施形態は、仮想マシンを複製するための方法を含む。方法は、仮想マシンに関連するデータパケットに対応するクラスを判定するステップと、判定されたクラスに基づいて、パケットをバッファするステップおよびパケットを送信するステップのうちの１つとを含む。
【０００９】
別の実施形態は、仮想マシンのホストに関連する制御モジュールを含む。制御モジュールは、データパケットをバッファするように構成されたメモリを含む。制御モジュールは、仮想マシンに関連するパケットに対応するクラスを判定するように構成され、判定されたクラスに基づいて、メモリにパケットをバッファすること、およびパケットを送信することのうちの１つを行うように構成されたパケット分類器を含む。
【００１０】
別の実施形態は、ネットワークスイッチを含む。ネットワークスイッチは、仮想マシンをホストする制御モジュールから、仮想マシンに関連するパケットに対応するプロトコル情報および制御情報を含むメッセージを受信するように構成されたモジュールを含む。ネットワークスイッチは、プロトコル情報および制御情報に基づいてクラスを判定するように構成され、判定されたクラスに基づいて、パケットをバッファすること、およびパケットを送信することのうちの１つを行うように構成されたパケット分類器をさらに含む。
【００１１】
本発明は、本明細書において以下に与えられる詳細な説明および添付の図面から、より完全に理解されるようになる。同様の要素は同様の参照番号によって表され、これは例示として与えられるものであるに過ぎず、したがって、本発明を限定するものではない。
【図面の簡単な説明】
【００１２】
【図１】例示的な実施形態によるネットワークを示す図である。
【図２】例示的な実施形態による制御モジュール１５０を示す図である。
【図３】例示的な実施形態による代替の制御モジュール１５５を示す図である。
【図４】例示的な実施形態によるスイッチ１１０を示す図である。
【図５】例示的な実施形態による非同期仮想マシン複製のための方法を示す図である。
【図６】例示的な実施形態による非同期仮想マシン複製のための方法を示す図である。
【発明を実施するための形態】
【００１３】
これらの図面は、いくつかの例示的な実施形態で利用される方法、構造および／または材料の一般的な特性を示し、以下に提供される説明を補足することを意図するものであることに留意されたい。ただし、これらの図面は縮尺通りではなく、任意の所与の実施形態の正確な構造またはパフォーマンス特性を正確に反映しないことがあり、例示的な実施形態によって包含される値の範囲または性質を定義するまたは限定するものとして解釈されるべきではない。例えば、分子、層、領域および／または構造要素の相対的な厚さおよび位置付けは、明確にするために縮小されるか、誇張され得る。様々な図面における類似または同一の参照番号の使用は、類似または同一の要素または特徴の存在を示すことを意図するものである。
【００１４】
例示的な実施形態は様々な修正形態および代替の形態が可能であるが、その実施形態は図面において実施例として示され、本明細書において詳細に説明される。ただし、例示的な実施形態を開示された特定の形態に限定する意図はなく、逆に、例示的な実施形態は、特許請求の範囲の範囲内に入るすべての修正形態、等価形態、および代替形態を網羅するものであることを理解されたい。同様の番号は、図面の説明全体を通して同様の要素を指す。
【００１５】
例示的な実施形態についてより詳細に述べる前に、いくつかの例示的な実施形態はフローチャートに図示されたプロセスまたは方法として説明されることに留意されたい。フローチャートは連続したプロセスとしての動作を説明するが、動作の多くは並行して、または同時に（ｃｏｎｃｕｒｒｅｎｔｌｙ  ｏｒ  ｓｉｍｕｌｔａｎｅｏｕｓｌｙ）実行され得る。加えて、動作の順序を並べ替えることができる。プロセスは、その動作が完了したときに終了し得るが、図に含まれない追加のステップも有し得る。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。
【００１６】
いくつかがフローチャートによって示される以下に述べる方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによって実施され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実施されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、ストレージ媒体などのマシンまたはコンピュータ可読媒体に記憶される。（１つまたは複数の）プロセッサは必要なタスクを実行する。
【００１７】
本明細書に開示される特定の構造上および機能上の詳細は、本発明の例示的な実施形態を説明する目的を表すものにすぎない。ただし、この発明を多くの代替の形態で具体化することができ、本明細書に記載の実施形態のみに限定されるものとして解釈されるべきではない。
【００１８】
第１の（ｆｉｒｓｔ）、第２の（ｓｅｃｏｎｄ）などの用語は本明細書において様々な要素を説明するために使用され得るが、これらの要素はこれらの用語によって限定されるべきではないことを理解されたい。これらの用語は、ある要素を別の要素と区別するためのみに使用される。例えば、例示的な実施形態の範囲を逸脱することなく、第１の要素を第２の要素と称することができ、同様に、第２の要素を第１の要素と称することができる。本明細書において使用される場合、「および／または」という用語は、関連する列挙された項目の１つまたは複数の任意のおよびすべての組合せを含む。要素が別の要素に「接続されて」いるまたは「結合されて」いると言われるとき、この要素を他方の要素に直接接続するまたは結合することができるか、介在要素が存在する場合があることを理解されたい。対照的に、要素が別の要素に「直接接続されて」いるまたは「直接結合されて」いると言われるとき、介在要素は存在しない。要素間の関係を説明するために使用される他の語は、同様の方法（例えば、「間に」対「直接間に」、「隣接した」対「直接隣接した」など）で解釈されるべきである。
【００１９】
本明細書において使用される専門用語は、特定の実施形態を説明することのみを目的とするものであり、例示的な実施形態を限定することを意図するものではない。本明細書において使用される場合、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈がそうではないことを明確に示さない限り、複数形も含むことを意図する。用語「含む」（「ｃｏｍｐｒｉｓｅｓ」、「ｃｏｍｐｒｉｓｉｎｇ」、「ｉｎｃｌｕｄｅｓ」および／または「ｉｎｃｌｕｄｉｎｇ」）という用語は、本明細書において使用されるとき、述べられた特徴、整数、ステップ、動作、要素および／または構成要素の存在を明記するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素および／またはこれらのグループの存在または追加を除外しないことをさらに理解されたい。
【００２０】
いくつかの代替実装形態では、示された機能／行為は図に示された順序ではない順序で行われ得ることにも留意されたい。例えば、連続して示された２つの図は、実際には、関与する機能性／行為に応じて、同時に実行され得るか、時として逆の順序で実行され得る。
【００２１】
別途定義されていない限り、本明細書において使用されるすべての用語（技術用語および科学用語を含む）は、例示的な実施形態が属する当業者によって一般的に理解されるものと同じ意味を有する。用語、例えば、一般的に使用される辞書に定義される用語は、関連分野の文脈における意味と一致する意味を有するものとして解釈されるべきであり、本明細書においてそのように明確に定義されていない限り、理想化されたまたは過度に形式的な意味で解釈されないことをさらに理解されたい。
【００２２】
例示的な実施形態の部分および対応する詳細な説明は、ソフトウェア、またはコンピュータメモリ内のデータビット上での動作のアルゴリズムおよび記号表現の観点で提示される。これらの説明および表現は、当業者が自分の作業の内容を他の当業者に効率的に伝えるものである。アルゴリズムは、この用語がここで使用されるとき、また、この用語が一般的に使用されるとき、所望の結果をもたらす自己矛盾のない一連のステップであるものと考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、必ずではないが、これらの量は、記憶、伝送、結合、比較、およびそうでなければ操作することが可能な光信号、電気信号、または磁気信号の形をとる。主に共通使用の理由から、これらの信号をビット、値、要素、シンボル、文字、項、数字などと呼ぶことが時には好都合であることが証明されている。
【００２３】
以下の説明では、特定のタスクを実行し、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含めて、プログラムモジュールまたは機能プロセスとして実装することができ、既存のネットワーク要素で既存のハードウェアを使用して実施される行為および動作の記号表現（例えば、フローチャートの形）を参照しながら、例示的な実施形態ついて説明される。そのような既存のハードウェアは、１つまたは複数の中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンピュータなどの少なくとも１つを含む。
【００２４】
ただし、これらの用語および類似の用語のすべては、適切な物理量に関連するものであり、これらの量に適用される便利なラベルにすぎないことを念頭においておくべきである。そうではないことが具体的に述べられていない限り、または説明から明らかなように、「処理する（ｐｒｏｃｅｓｓｉｎｇ）」または「計算する（ｃｏｍｐｕｔｉｎｇ）」または「算出する（ｃａｌｃｕｌａｔｉｎｇ）」または「表示（ｄｉｓｐｌａｙｉｎｇ）」を「判定する（ｄｅｔｅｒｍｉｎｉｎｇ）」などの用語は、コンピュータシステムのレジスタおよびメモリ内の物理的な電子量として表されるデータを操作し、コンピュータシステムメモリもしくはレジスタまたは他のそのような情報記憶デバイス、送信デバイスもしくはディスプレイデバイス内の物理量として同様に表される他のデータに変換する、コンピュータシステムまたは類似の電子コンピューティングデバイスのアクションおよびプロセスを指す。
【００２５】
例示的な実施形態のソフトウェア実施態様は、典型的には、何らかの形のプログラム／非一時的記憶媒体上で符号化されるか、何らかのタイプの送信媒体を介して実施されることにも留意されたい。プログラム記憶媒体は、磁気（例えば、フロッピーディスクまたはハードドライブ）または光学（例えば、コンパクトディスク読取り専用メモリ、すなわち「ＣＤ  ＲＯＭ」）であってもよく、読取り専用またはランダムアクセスであってもよい。同様に、送信媒体は、ツイストワイヤペア、同軸ケーブル、光ファイバ、または当技術分野で知られている何らかの他の適切な送信媒体であってもよい。例示的な実施形態は、任意の所与の実装形態のこれらの態様によって限定されない。
【００２６】
本明細書において使用される場合、「クライアント」という用語を、モバイル、モバイルユニット、移動局、ユーザ機器、リモート局、アクセス端末、受信機などと同義とみなすことができ、この用語は、以降では時折、モバイル、モバイルユニット、移動局、ユーザ機器、リモート局、アクセス端末、受信機などと呼ばれることがあり、通信ネットワークにおける有線または無線リソースのリモートユーザを説明することがある。
【００２７】
本明細書において使用される場合、「物理マシン」という用語を、サーバ、ネットワークデバイス、ネットワークコンピュータなどと同義とみなすことができ、この用語は、以降では時折、サーバ、ネットワークデバイス、ネットワークコンピュータなどと呼ばれることがあり、有線または無線通信ネットワークの、仮想マシンをホストするように構成された物理コンピューティングデバイスを説明することがある。
【００２８】
図１は、例示的な実施形態によるネットワークを示す。図１に示されるように、クライアント１０５は、スイッチ１１０（以下の図４に関連してより詳細に説明される）と相互接続され得る。１つのクライアントだけが示されているが、例示的な実施形態は１つのクライアント１０５に限定されないことを理解されたい。スイッチ１１０は、ネットワーク環境１１５に含まれる。
【００２９】
ネットワーク環境１１５は、１つまたは複数の物理マシン１２０、１２５を含む。物理マシン１２０、１２５は、制御モジュール１５０、１５５を含み得る。物理マシン１２０、１２５は、１つまたは複数の仮想マシン１３０、１３５、１４０、１４５を含み得る。例えば、物理マシン１２０は制御モジュール１５０および単一の仮想マシン１３０を含み、物理マシン１２５は制御モジュール１５５および３つの仮想マシン１３５、１４０、１４５を含む。
【００３０】
制御モジュール１５０、１５５は、例えば、ハイパーバイザまたは仮想マシンマネージャ（ＶＭＭ）として当業者に知られていることがある。制御モジュール１５０、１５５は、１つまたは複数の仮想マシン１３０、１３５、１４０、１４５をホストするように構成され得る。以下の図２および図３に関連して、制御モジュール１５０、１５５がより詳細に説明される。
【００３１】
当業者に知られているように、仮想マシン１３０、１３５、１４０、１４５は、仮想マシン１３０、１３５、１４０、１４５が物理マシンであるかのようにソフトウェアを実行するマシンのソフトウェア実装である。複数の仮想マシン１３０、１３５、１４０、１４５は、物理マシン１２０、１２５上で実行され得る。複数のプログラムが物理マシン１２０、１２５上で同時に実行することをオペレーティングシステムがどのように可能にし得るかに類似して、制御モジュール１５０、１５５またはハイパーバイザは、複数の仮想マシン１３０、１３５、１４０、１４５が物理マシン１２０、１２５上で同時に実行することを可能にし得る。簡潔にするために、仮想マシン１３０、１３５、１４０、１４５の一般的な動作はさらに説明されない。
【００３２】
ネットワーク環境１１５は当業者に知られている。一般的に、ネットワーク環境１１５は、互いに通信し、クライアント１０５にサービスを提供するように機能する複数の構成要素（例えば、サーバ、データベース、ルータおよびマルチプレクサ）からなる。サービスとしては、例えば、音声、メディア、アプリケーション、コンピューティングリソースなどが挙げられる。ネットワーク環境１１５は、柔軟なコンピューティングリソースを多くのクライアント１０５に提供する。当業者に知られているように、ネットワーク環境１１５は、パブリックネットワーク、プライベートネットワークおよび／またはハイブリッド（パブリック／プライベート）ネットワークであってもよい。
【００３３】
図２は、例示的な実施形態による制御モジュール１５０を示す。図２に示されるように、制御モジュール１５０は、仮想マシンインターフェース２１０、パケット分類器２１５、ルールセットデータベース２２０、送信バッファ２２５およびネットワークインターフェース２３０を含み得る。仮想マシンインターフェース２１０は、１つまたは複数の仮想マシンに送信され、１つまたは複数の仮想マシンから受信されるパケットおよび信号用のインターフェースとして機能する。ネットワークインターフェース２３０は、１つまたは複数のネットワーク要素（例えば、ルータ、スイッチ、クライアントなど）に送信され、１つまたは複数のネットワーク要素から受信されるパケットおよび信号用のインターフェースとして機能する。インターフェース（例えば、仮想マシンインターフェース２１０およびネットワークインターフェース２３０）は当業者に知られており、簡潔にするために、さらに説明されない。
【００３４】
パケット分類器２１５は、入力として、仮想マシンインターフェース２１０を介して仮想マシン（例えば、仮想マシン１３０）から受信されたデータパケットを受信し、データパケットに対応する判定されたクラスおよび仮想マシンの状態に基づいてデータパケットを転送することができる。データパケットは、判定に基づいて送信バッファ２２５またはネットワークインターフェース２３０のいずれかに転送される。送信バッファ２２５は、メモリ（例えば、ＲＯＭ、ＲＡＭ、ＳＤＲＡＭ、ＤＤＲなど）であってもよい。
【００３５】
例えば、パケット分類器２１５は、複製された仮想マシンの外部から見える状態を変更しないいずれのデータパケットもバッファされないように、複製された仮想マシンに関連するデータパケットが（例えば、送信バッファ２２５で）バッファされるべきかどうかを判定する。一方、複製された仮想マシンの外部から見える状態を変更するデータパケットは、バッファされる。外部から見える状態は、クライアントに見える仮想マシン状態であってもよい。
【００３６】
複製された仮想マシンの外部から見える状態を変更しないデータパケットは、例えば、転送されたデータパケット（例えば、仮想マシンから発信されたものではないデータパケット）およびデータのみを含むデータパケットであってもよい。複製された仮想マシンの外部から見える状態を変更するデータパケットは、例えば、制御メッセージを含むデータパケットであってもよい。
【００３７】
ルールセットデータベース２２０は、例えば、データパケットのタイプ（例えば、データまたは制御）をクラスに関連付けるデータテーブルを含み得る。それぞれのクラスは、データパケットがバッファされるべきかどうかを定義し得る。ルールセットデータベース２２０をいつでも変更することができ、制御モジュール１５０に関連するアプリケーションおよび／または仮想マシンに関連するアプリケーションによって制御することができる。
【００３８】
例えば、制御モジュール１５０が仮想マシン１３０から２つのデータパケットを受信し、その仮想マシン１３０が複製された仮想マシンであると仮定する。第１のデータパケットはクラス１に関連し、第２のデータパケットはクラス２に関連する。ルールセットデータベース２２０は、クラス１がデータのみのデータパケットであり、クラス２が制御メッセージを含むデータパケットであるような関連付けを含む。
【００３９】
パケット分類器２１５は、ルールセットデータベース２２０からの関連付けを使用して、データのみのデータパケットであって、複製された仮想マシン１３０の外部から見える状態を変更しないデータパケットであるクラス１の関連付けに基づいて、第１のデータパケットがバッファされるべきではないと判定する。パケット分類器２１５は、ルールセットデータベース２２０からの関連付けを使用して、制御メッセージを含むデータパケットであって、複製された仮想マシン１３０の外部から見える状態を変更するデータパケットであるクラス２の関連付けに基づいて、第２のデータパケットがバッファされるべきであると判定する。したがって、パケット分類器２１５は、第１のデータパケットをネットワークインターフェース２３０に直接転送し、第２のデータパケットを送信バッファ２２５に転送する。
【００４０】
図３は、例示的な実施形態による代替の制御モジュール１５５を示す。図３に示されるように、制御モジュール１５５は、仮想マシンインターフェース３１０、制御インターフェース３１５、制御およびプロトコルモジュール３２０ならびにネットワークインターフェース３２５を含み得る。仮想マシンインターフェース３１０は、１つまたは複数の仮想マシンに送信され、１つまたは複数の仮想マシンから受信される信号用のインターフェースとして機能する。制御インターフェース３１５は、１つまたは複数のスイッチ（例えば、スイッチ１１０）に送信され、１つまたは複数のスイッチから受信されるパケットおよび信号用のインターフェースとして機能する。ネットワークインターフェース３２５は、１つまたは複数のネットワーク要素（例えば、ルータ、スイッチ、クライアントなど）に送信され、１つまたは複数のネットワーク要素から受信されるパケットおよび信号用のインターフェースとして機能する。インターフェース（例えば、仮想マシンインターフェース３１０、制御インターフェース３１５およびネットワークインターフェース３２５）は当業者に知られており、簡潔にするために、さらに説明されない。
【００４１】
制御およびプロトコルモジュール３２０は、制御モジュール１５５を介して送信されたデータパケットを監視する。制御およびプロトコルモジュール３２０はデータパケットを監視して、データパケットに関連する情報を判定する。例えば、制御およびプロトコルモジュール３２０は、パケットを監視して、データパケットが制御メッセージを含むデータパケットかどうかを判定し得る。例えば、制御およびプロトコルモジュール３２０は、パケットを監視して、データパケットに関連するプロトコルを判定し得る。
【００４２】
制御およびプロトコルモジュール３２０は、情報を制御インターフェース３１５に通信する。制御インターフェース３１５は、この情報を別のネットワーク要素（例えば、スイッチ１１０）に通信する。
【００４３】
図４は、例示的な実施形態によるスイッチ１１０を示す。図４に示されるように、スイッチ１１０は、制御モジュールインターフェース４１０、制御インターフェース４１５、制御およびプロトコルモジュール４２０、パケット分類器４２５、ルールセットデータベース４３０、送信バッファ４３５ならびにネットワークインターフェース４４０を含み得る。制御モジュールインターフェース４１０は、１つまたは複数の制御モジュール（例えば、制御モジュール１５５）に送信され、１つまたは複数の制御モジュールから受信されるパケットおよび信号用のインターフェースとして機能する。制御インターフェース４１５は、１つまたは複数の制御モジュール（例えば、制御モジュール１５５）に送信され、１つまたは複数の制御モジュールから受信される信号用のインターフェースとして機能する。ネットワークインターフェース４４０は、１つまたは複数のネットワーク要素（例えば、ルータ、スイッチ、クライアントなど）に送信され、１つまたは複数のネットワーク要素から受信されるパケットおよび信号用のインターフェースとして機能する。インターフェース（例えば、制御モジュールインターフェース４１０、制御インターフェース４１５およびネットワークインターフェース４４０）は当業者に知られており、簡潔にするために、さらに説明されない。
【００４４】
制御およびプロトコルモジュール４２０は、データパケットに関連するパケット情報を受信し得る。データパケットは、制御モジュールインターフェース４１０を介して制御モジュール（例えば、制御モジュール１５５）から受信され得る。パケット情報は、制御インターフェース４１５を介して制御モジュール（例えば、制御モジュール１５５）から受信され得る。制御およびプロトコルモジュール４２０は、パケット情報に基づいて、データパケットが制御メッセージを含むデータパケットかどうか、データパケットがデータのみを含むデータパケットかまたはデータパケットに関連するプロトコルかを判定し得る。制御およびプロトコルモジュール４２０は、判定をパケット分類器４２５および送信バッファ４３５に通信し得る。
【００４５】
パケット分類器４２５は、入力として、制御モジュールインターフェース４１０を介して制御モジュール（例えば、制御モジュール１５５）から受信されたデータパケットを受信することができ、パケット分類器４２５は、データパケットに対応する判定されたクラスおよび仮想マシンの状態に基づいて、データパケットを転送することができる。データパケットは、判定に基づいて送信バッファ４３５またはネットワークインターフェース４４０のいずれかに転送される。
【００４６】
例えば、パケット分類器４２５は、複製された仮想マシンの外部から見える状態を変更しないいずれのデータパケットもバッファされないように、複製された仮想マシンに関連するデータパケットが（例えば、送信バッファ４３５で）バッファされるべきかどうかを判定する。一方、複製された仮想マシンの外部から見える状態を変更するデータパケットは、バッファされる。送信バッファ４３５は、メモリ（例えば、ＲＯＭ、ＲＡＭ、ＳＤＲＡＭ、ＤＤＲなど）であってもよい。
【００４７】
複製された仮想マシンの外部から見える状態を変更しないデータパケットは、例えば、転送されたデータパケット（例えば、仮想マシンから発信されたものではないデータパケット）およびデータのみを含むデータパケットであってもよい。複製された仮想マシンの外部から見える状態を変更するデータパケットは、例えば、制御メッセージを含むデータパケットであってもよい。
【００４８】
ルールセットデータベース４３０は、例えば、データパケットのタイプ（例えば、データまたは制御）をクラスに関連付けるデータテーブルを含み得る。それぞれのクラスは、データパケットがバッファされるべきかどうかを定義し得る。ルールセットデータベース４３０をいつでも変更することができ、スイッチ１１０に関連するアプリケーションおよび／または仮想マシン（例えば、仮想マシン１３５）に関連するアプリケーションによって制御することができる。
【００４９】
例えば、スイッチ１１０が制御モジュール（例えば、制御モジュール１５５）から２つのデータパケットを受信し、その仮想マシン１３５が複製された仮想マシンであると仮定する。第１のデータパケットはクラス１に関連し、第２のデータパケットはクラス２に関連する。ルールセットデータベース４３０は、クラス１がデータのみのデータパケットであり、クラス２が制御メッセージを含むデータパケットであるような関連付けを含む。
【００５０】
制御およびプロトコルモジュール４２０は、第１のデータパケットおよび第２のデータパケットに関連する第１のパケット情報を受信する。制御およびプロトコルモジュール４２０は、仮想マシン１３０が第１のデータパケットおよび第２のデータパケットのソースであることを示す第２のパケット情報も受信する。第１のパケット情報は、少なくとも、第１のデータパケットがクラス１に関連し、第２のデータパケットがクラス２に関連するという指示を含む。第２のパケット情報は、少なくとも、仮想マシン１３０が複製された仮想マシンであるという指示を含む。制御およびプロトコルモジュール４２０は、第１のおよび第２のパケット情報（またはクラスおよび複製についての判定）をパケット分類器４２５に通信する。
【００５１】
パケット分類器４２５は、ルールセットデータベース４３０からの関連付けを使用して、データのみのデータパケットであって、複製された仮想マシン１３５の外部から見える状態を変更しないデータパケットであるクラス１の関連付けに基づいて、第１のデータパケットがバッファされるべきではないと判定する。パケット分類器４２５は、ルールセットデータベース４３０からの関連付けを使用して、制御メッセージを含むデータパケットであって、複製された仮想マシン１３５の外部から見える状態を変更するデータパケットであるクラス２の関連付けに基づいて、第２のデータパケットがバッファされるべきであると判定する。したがって、パケット分類器は、第１のデータパケットをネットワークインターフェース４４０に直接転送し、第２のデータパケットを送信バッファ４３５に転送する。
【００５２】
図５は、例示的な実施形態による非同期仮想マシン複製のための方法を示す。図５に関連する方法のステップについて説明する際、図１のネットワークおよび図２の制御モジュール１５０を参照する。
【００５３】
図５を参照すると、ステップＳ５０５で、仮想マシンをホストする制御モジュールは、仮想マシンが複製されるべきであると判定する。ステップＳ５１０で、制御モジュールは、仮想マシンの複製を開始する。仮想マシンが複製されるべきであると判定し、仮想マシンの複製を開始することは当業者に知られており、簡潔にするために、さらに説明されない。
【００５４】
ステップＳ５１５で、制御モジュールは、複製された仮想マシンからデータパケットを受信する。例えば、制御モジュール１５０は、仮想マシン１３０（仮想マシン１３０は複製された仮想マシンであると仮定する）からデータパケットを受信し得る。図２に示されるように、制御モジュール１５０は、仮想マシンインターフェース２１０を介してデータパケットを受信し得る。
【００５５】
ステップＳ５２０で、制御モジュール１５０は、データパケットに関連するクラスを判定する。例えば、パケット分類器２１５は、複製された仮想マシンの外部から見える状態を変更しないいずれのデータパケットもバッファされないように、複製された仮想マシンに関連するデータパケットが（例えば、送信バッファ２２５で）バッファされるべきかどうかに基づいて、データパケットに関連するクラスを判定し得る。一方、複製された仮想マシンの外部から見える状態を変更するデータパケットは、バッファされる。
【００５６】
複製された仮想マシンの外部から見える状態を変更しないデータパケットは、例えば、転送されたデータパケット（例えば、仮想マシンから発信されたものではないデータパケット）およびデータのみを含むデータパケットであってもよい。複製された仮想マシンの外部から見える状態を変更するデータパケットは、例えば、制御メッセージを含むデータパケットであってもよい。
【００５７】
例えば、上記に説明されたように、ルールセットデータベース２２０は、データパケットのタイプ（例えば、データまたは制御）をクラスに関連付けるデータテーブルを含み得る。それぞれのクラスは、データパケットがバッファされるべきかどうかを定義し得る。パケット分類器２１５は、ステップＳ５２０で、データパケットとクラスとの間の関連付けを使用して、複製された仮想マシンに関連するデータパケットがバッファされるべきかどうかを判定し得る。
【００５８】
ステップＳ５２５で、制御モジュール１５０は、クラスが状態変更を引き起こす（例えば、データパケットが制御メッセージを含む）かどうかを判定する。クラスが状態変更を引き起こす場合、ステップＳ５３０で、データパケットが（例えば、送信バッファ２２５で）バッファされる。そうでなければ、ステップＳ５３５で、データパケットが（例えば、ネットワークインターフェース２３０を介して）送信される。図２に関連して上記に説明されたように、ステップＳ５２０およびＳ５２５は、パケット分類器２１５によって実行され得る。
【００５９】
ステップＳ５４０で、制御モジュール１５０は、複製が完了したかどうかを判定する。複製が完了していない場合、処理はステップＳ５１５に戻る。そうでない場合、ステップＳ５４５で、データパケットは通常の（知られている）処理を使用して処理される。複製が完了したかどうかを判定することおよびデータパケットの通常の処理は当業者に知られており、簡潔にするために、さらに説明されない。
【００６０】
図６は、例示的な実施形態による非同期仮想マシン複製のための方法を示す。図６に関連する方法のステップについて説明する際、図１のネットワーク、図３の制御モジュール１５５および図４のスイッチ１１０を参照する。
【００６１】
図６を参照すると、ステップＳ６０５で、仮想マシンをホストする制御モジュールは、仮想マシンが複製されるべきであると判定する。ステップＳ６１０で、制御モジュールは、仮想マシンの複製を開始する。仮想マシンが複製されるべきであると判定し、仮想マシンの複製を開始することは当業者に知られており、簡潔にするために、さらに説明されない。
【００６２】
ステップＳ６１５で、スイッチ１１０は、制御モジュール（例えば、制御モジュール１５５）からメッセージを受信する。メッセージは、データパケットに関連するプロトコルおよび制御情報を含む。プロトコルおよび制御情報は、データパケットに関連するプロトコル、データパケットに関連する（上記に説明された）クラス、データパケットに関連する制御メッセージ情報および／またはデータパケットに関連するデータタイプ情報を含み得る。
【００６３】
例えば、図３に関連して上記に説明されたように、制御モジュール１５５はプロトコルおよび制御情報を判定することができる。制御モジュール１１５は、制御インターフェース３１５を介してシグナリングメッセージをスイッチ１１０に送信し得る。次いで、図４に関連して上記に説明されたように、スイッチ１１０は制御インターフェース４１５を介してシグナリングメッセージを受信することができ、制御およびプロトコルモジュール４２０はシグナリングメッセージを処理する。
【００６４】
ステップＳ６２０で、スイッチ１１０は、複製された仮想マシンをホストする制御モジュール（例えば、制御モジュール１５５）からデータパケットを受信する。例えば、スイッチ１１０は、仮想マシン１３５（仮想マシン１３５は複製された仮想マシンであると仮定する）からデータパケットを受信し得る。データパケットは制御モジュール１５５を介して受信され得る。図４に示されるように、スイッチ１１０は、制御モジュールインターフェース４１０を介してデータパケットを受信し得る。
【００６５】
ステップＳ６２５で、スイッチ１１０は、データパケットに関連するクラスを判定する。例えば、パケット分類器４２５は、複製された仮想マシンの外部から見える状態を変更しないいずれのデータパケットもバッファされないように、複製された仮想マシンに関連するデータパケットが（例えば、送信バッファ４３５で）バッファされるべきかどうかに基づいて、データパケットに関連するクラスを判定し得る。一方、複製された仮想マシンの外部から見える状態を変更するデータパケットは、バッファされる。
【００６６】
複製された仮想マシンの外部から見える状態を変更しないデータパケットは、例えば、転送されたデータパケット（例えば、仮想マシンから発信されたものではないデータパケット）およびデータのみを含むデータパケットであってもよい。複製された仮想マシンの外部から見える状態を変更するデータパケットは、例えば、制御メッセージを含むデータパケットであってもよい。
【００６７】
例えば、上記に説明されたように、ルールセットデータベース２２０は、データパケットのタイプ（例えば、データまたは制御）をクラスに関連付けるデータテーブルを含み得る。それぞれのクラスは、データパケットがバッファされるべきかどうかを定義し得る。パケット分類器２１５は、ステップＳ６２５で、データパケットとクラスとの間の関連付けを使用して、複製された仮想マシンに関連するデータパケットがバッファされるべきかどうかを判定し得る。
【００６８】
ステップＳ６３０で、スイッチ１１０は、クラスが状態変更を引き起こす（例えば、データパケットが制御メッセージを含む）かどうかを判定する。クラスが状態変更を引き起こす場合、ステップＳ６３５で、データパケットが（例えば、送信バッファ４３５で）バッファされる。そうでなければ、ステップＳ６４０で、データパケットが（例えば、ネットワークインターフェース４４０を介して）送信される。図４に関連して上記に説明されたように、ステップＳ６２５およびＳ６３０は、パケット分類器４２５によって実行され得る。
【００６９】
ステップＳ６４５で、スイッチ１１０は、複製が完了したかどうかを判定する。複製が完了していない場合、処理はステップＳ６１５に戻る。そうでない場合、ステップＳ６５０で、データパケットは通常の（知られている）処理を使用して処理される。複製が完了したかどうかを判定することおよびデータパケットの通常の処理は当業者に知られており、簡潔にするために、さらに説明されない。
【００７０】
例示的な実施形態は、非同期仮想マシン複製の間にデータパケットをバッファすることを含む新しい方法（例えば、図５および図６）を説明しているが、例示的な実施形態はこれに限定されない。例えば、仮想マシンを複製して、バックアップまたはスタンバイ仮想マシンを作成することができる。バックアップまたはスタンバイ仮想マシンに関連するデータパケットは、上記に説明されたものと同じ方法を使用して、また、同じ装置を使用して、処理され得る。
【００７１】
例えば、図５の方法は、プライマリ仮想マシンおよびプライマリ仮想マシンのバックアップである仮想マシンの観点から実行され得る。この例では、複製された仮想マシンはプライマリ仮想マシンになり、ステップＳ５４０はバックアップ仮想マシンを使用し続けるかどうかを尋ねることに置き換えられる。類似の代替の例示的な実施形態は、図６に基づき得る。
【００７２】
本発明の代替実施形態は、コンピュータシステムとともに使用するためのコンピュータプログラム製品、例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、または固定ディスクなどの、有形または非一時的データ記録媒体（コンピュータ可読媒体）に記憶された一連のコンピュータ命令、コードセグメントまたはプログラムセグメントであるコンピュータプログラム製品として実施されるか、有形媒体または無線媒体、例えば、マイクロ波または赤外線を介して送信されるコンピュータデータ信号で具体化され得る。一連のコンピュータ命令、コードセグメントまたはプログラムセグメントは、上記に説明された例示的な実施形態の方法の機能のすべてまたは一部を構成することができ、また、半導体、磁気、光学または他のメモリデバイスなどの、揮発性または不揮発性の任意のメモリデバイスに記憶され得る。
【００７３】
知られている方法では、すべてのデータパケットが複製された仮想マシンからバッファされるので、例示的な実施形態は、仮想マシンの非同期複製のための改善された解決策を提供する。知られている方法では、すべてのデータパケットがバッファされるので、パケットはデフォルト時間間隔（Ｔｅｐｏｃｈ）毎にしか送信されず、したがって、間隔の期間に比例する係数で有効帯域幅を低減する。さらに、知られている方法では、外のクライアントは、バッファ解放の間の非常に高いネットワークトラフィックの短い期間が続くパケットバッファリングの間、無活動の期間を経験する。さらに、知られている方法では、複製された仮想マシンからの応答は、平均してＴｅｐｏｃｈ／２だけ遅れる。
【００７４】
例示的な実施形態を特に示し、説明してきたが、特許請求の範囲の趣旨および範囲から逸脱することなく、形態および詳細における変形が実施形態においてなされ得ることが当業者に理解されよう。
【００７５】
本発明はこのように説明されているが、本発明が様々な方法で変化し得ることは明らかであろう。そのような変形形態は本発明を逸脱するものとしてみなされるべきではなく、すべてのそのような修正形態は、本発明の範囲内に含まれることを意図するものである。
【図１】
0005710779.tif 000002
【図２】
0005710779.tif 000003
【図３】
0005710779.tif 000004
【図４】
0005710779.tif 000005
【図５】
0005710779.tif 000006
【図６】
0005710779.tif 000007