(57)【要約】  論理通信経路が、ターゲット仮想マシン（ＶＭ）と、ＶＭと通信するホストまたはアプリケーションとの間に設けられる。ターゲットＶＭは、ハイパーバイザーおよびプロキシエージェントを有するハイパーバイザーホスト上で動作する。ハイパーバイザーは、ＶＭの実行を管理する。どのＶＭがどのホスト上で動作するのかについて示すマッピングが維持される。ホストまたはアプリケーションが、ターゲットＶＭにメッセージまたはパケットを送信することになっている場合、マッピングが参照され、ターゲットＶＭをホストするハイパーバイザーホストが識別される。ターゲットＶＭを識別することができるメッセージまたはパケットは、ハイパーバイザーホストに送信される。ハイパーバイザーホストのプロキシエージェントは、ハイパーバイザーとターゲットＶＭとの間の通信チャネルを選択する。ハイパーバイザーは、次に、メッセージまたはパケットを、選択されたチャネルを介して、ターゲットＶＭに渡す。
2014524086.tif 000002
【特許請求の範囲】
【請求項１】
第１のホスト上で動作するターゲット仮想マシン（ＶＭ）と、第２のホスト上で動作するアプリケーションとの間のネットワーク接続を提供する方法であって、
ネットワークを介して、前記第１のホストで、前記アプリケーションによって開始された接続要求を受信するステップであって、前記要求が、前記ターゲットＶＭを識別する情報を含む、ステップと、
前記ＶＭを管理するハイパーバイザーと前記ターゲットＶＭとの間の通信チャネルを形成するステップと、
前記要求を、前記チャネルを介して前記ターゲットＶＭに渡すステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記第１のホスト上の他のＶＭが、許可なく前記ターゲットＶＭと通信するために前記通信チャネルを使用することができないように、前記通信チャネルが、前記ハイパーバイザーおよび前記ターゲットＶＭにのみアクセス可能である、方法。
【請求項３】
請求項１に記載の方法であって、パケットが、インターネットプロトコルパケットを含み、前記第１のホストが、第１のインターネットプロトコル（ＩＰ）アドレスを有し、前記第２のホストが、第２のＩＰアドレスを有し、前記ターゲットＶＭが、第３のＩＰアドレスを有し、前記ネットワークが、パケットを前記第２のホストの前記第２のＩＰアドレスから前記ＶＭの前記第３のＩＰアドレスにルーティングすることができない、方法。
【請求項４】
請求項３に記載の方法であって、前記第２のホストがパケットを前記第１のＩＰアドレスにアドレッシングすることによって、前記パケットを前記第２のホストから前記第１のホストに送信するステップをさらに含む方法。
【請求項５】
請求項４に記載の方法であって、前記パケットが、アプリケーションレベルのプロトコルに準拠するペイロードを含み、前記方法が、前記パケットが通信チャネルを介して前記ＶＭに受信された後、前記ペイロードを前記ＶＭ上で動作するエージェントに配送するステップをさらに含む、方法。
【請求項６】
請求項１に記載の方法であって、前記通信チャネルが、前記ハイパーバイザーの内部ネットワークスイッチと、前記ハイパーバイザーによって提供され、前記ターゲットＶＭに割り当てられた仮想ネットワークインターフェースカードとを含む、方法。
【請求項７】
請求項１に記載の方法であって、前記第１のホスト上の前記ハイパーバイザーおよびプロキシエージェントが、前記第２のホストが標準的なネットワークプロトコルを使用して前記ターゲットＶＭと通信することを可能にするように協働する、方法。
【請求項８】
コンピュータがあるプロセスを実行することを可能にするための情報を格納する１つまたは複数のコンピュータ可読記憶媒体であって、前記プロセスが、
仮想マシン（ＶＭ）、および、前記ＶＭ上のゲストオペレーティングシステムを実行するステップであって、前記ＶＭが、ネットワークレベルのプロトコルの実装、およびトランスポートプロトコルの実装を含み、前記ＶＭの実行が、前記コンピュータ上のハイパーバイザーによって管理される、ステップと、
前記コンピュータ上のプロキシエージェントを実行するステップと、
前記コンピュータでパケットを受信するステップと
を含み、前記パケットが、プロトコルに準拠し、ネットワークプロトコルを使用して前記コンピュータのネットワークアドレスにアドレッシングされ、送信されており、前記プロキシエージェントが、前記ＶＭが前記パケットを受信することになることを判定し、それに応答して、前記ハイパーバイザーが、前記ＶＭと前記ハイパーバイザーとの間のプライベート通信チャネル（２２４）を介して、前記パケットを前記ＶＭに渡す、１つまたは複数のコンピュータ可読記憶媒体。
【請求項９】
請求項８に記載の１つまたは複数のコンピュータ可読記憶媒体であって、前記ＶＭが、前記ネットワークプロトコルを実装し、前記ネットワークプロトコルにしたがうネットワークアドレスを有し、前記ネットワークを介して前記パケットを前記コンピュータに送信したホストが、前記ネットワークおよび前記ネットワークプロトコルを介して、前記ＶＭの前記ネットワークアドレスとの直接接続を有さない、１つまたは複数のコンピュータ可読記憶媒体。
【請求項１０】
請求項８に記載の１つまたは複数のコンピュータ可読記憶媒体であって、前記プロセスが、前記コンピュータにおいて、どのＶＭが前記ハイパーバイザーによって管理されるどのＶＭに対応するのかを示すチャネル情報を維持するステップをさらに含む、１つまたは複数のコンピュータ可読記憶媒体。
【請求項１１】
方法であって、第１のホストが、前記第１のホスト上の仮想マシン（ＶＭ）の実行を管理する仮想化レイヤを含み、前記方法は、
前記仮想化レイヤと、前記第１のホスト上の前記ＶＭの１つを含むＶＭとの間の通信チャネルを確立するステップであって、前記通信チャネルが、前記仮想化レイヤ内の第１のエンドポイント、および、前記ＶＭ内の第２のエンドポイントを有する、ステップと、
前記第１のホストで、ネットワークを介して第２のホストからパケットを受信するステップと、
前記第１のホスト上で動作するプロキシエージェントが、前記仮想化レイヤに、前記通信チャネルの１つを介して前記パケットを前記ＶＭに渡させることによって、前記第２のホストと前記ＶＭとの間の間接的なネットワーク接続を可能にするステップと
を含む、方法。
【請求項１２】
請求項１１に記載の方法であって、前記方法が、前記仮想化レイヤと前記ＶＭとの間の通信チャネルをそれぞれ関連付ける関連付け情報を維持するステップをさらに含み、パケットが前記プロキシエージェントによって処理される場合、前記プロキシエージェントが、前記パケットを前記ＶＭの１つに運ぶことになる通信チャネルを選択するために、前記関連付け情報を使用する、方法。
【請求項１３】
請求項１２に記載の方法であって、前記プロキシエージェントが、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を含む、方法。
【請求項１４】
請求項１３に記載の方法であって、前記パケットが、前記ＶＭを識別する識別子を含むＨＴＴＰヘッダを含み、前記プロキシエージェントが、前記ＨＴＴＰヘッダを読み取り、前記識別子を抽出し、どのチャネルが前記パケットを受信するのかを選択するために前記識別子を使用する、方法。
【請求項１５】
請求項１１に記載の方法であって、前記ＶＭのゲストオペレーティングシステムが、前記ゲストのネットワークアドレスを介する前記ゲストオペレーティングシステムとの接続を可能にするために、トランスポートプロトコルおよびネットワークプロトコルを実装し、前記第２のホストが、前記ネットワークを介して前記ネットワークプロトコルおよび前記ネットワークアドレスを使用して前記ＶＭと直接通信することができず、前記方法が、前記第２のホストが前記第１のホストのネットワークアドレスに前記パケットをアドレッシングするステップをさらに含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]マシン仮想化の分野では、仮想マシン（ＶＭ）は、ネットワーク機能を有する。
【背景技術】
【０００２】
すなわち、ＶＭは、ネットワークを介して他のＶＭまたは物理マシンと通信するために、ネットワークプロトコルスタックを実装することができる。例えば、仮想化ホスト（例えば、Ｈｙｐｅｒ−Ｖ（登録商標）ホスト）は、ゲストＶＭをホストする仮想化ファブリックの一部を形成することができ、ここで、ファブリックコントローラは、仮想化ファブリックを管理する（この背景技術で使用される「ホスト」は、例えば、ファブリックコントローラ、または任意の他のコンピュータを指すことができる）。しかしながら、様々な理由で、ホストと、ＶＭを実行するマシン（「ＶＭホストと呼ばれる」）との間のネットワーク接続が存在しても、ネットワーク上のホストとＶＭの間のネットワーク接続が存在しない可能性がある。例えば、ＶＭは、ホストが属さない仮想プライベートネットワーク（ＶＰＮ）上にある可能性があり、ＶＭのネットワークアドレスは、ホストのネットワーク上で有効ではない可能性がある。ファイアウォールが、ＶＭホストのネットワーク上でのアクセスを可能にしながら、ホストのネットワークからＶＭへのアクセスをブロックする可能性がある。ＶＭは、単に、ＶＭと通信する必要がある可能性があるホストと異なるネットワーク上にある可能性がある。
【０００３】
[0002]いくつかの状況では、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＳＯＡＰ（簡易オブジェクトアクセスプロトコル）、ＷＭＩ（登録商標）（Ｗｉｎｄｏｗｓ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ）、ＷＳ管理プロトコル（ＨＴＴＰを介してＳＯＡＰベースのプロトコル上でＷＭＩコールを転送する）、などのような標準プロトコルを使用してＶＭと通信することが望ましい。例えば、いくつかのデーターセンターまたはクラウドでは、ＶＭは、その上で動作するネットワークエージェントまたはサービスを有する可能性があり、ネットワークエージェントまたはサービスは、（ゲストオペレーティングシステムにパッチを当てる、クラウドファブリックタスクを処理する、などのような）管理機能を、おそらく、制御（例えば、ＨＴＴＰ上のＷＭＩ）またはデータ（ＨＴＴＰを介するＢＩＴＳ）のための１つまたは複数の通信チャネルを用いて実行する。これらの管理サービスまたはエージェントは、例えば、コントローラホスト上で動作する管理アプリケーション（例えば、ファブリックコントローラ）によって制御される。管理アプリケーションは、パケット、例えば、ＨＴＴＰパケットを、ＶＭのネットワークアドレスに送信し、ＨＴＴＰパケットは、管理エージェントに配送される。管理エージェントは、パケットのペイロード内の情報に応答して機能を実行することができる。しかしながら、管理アプリケーションは、ＶＭとのネットワーク接続を持たない場合、ＶＭ上の管理エージェントを起動することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0003]ハイパーバイザーとＶＭとの間の通信チャネルを介するＶＭとの通信を可能にする技術が、以下に説明される。
【課題を解決するための手段】
【０００５】
[0004]以下の概要は、以下の詳細な説明で論じられるいくつかの概念を導入するためにのみ含まれる。この概要は、包括的ではなく、最後に提示される特許請求の範囲によって明らかにされる、特許請求される主題の範囲を線引きすることを意図するものではない。
【０００６】
[0005]論理通信経路が、ターゲット仮想マシン（ＶＭ）と、ＶＭと通信するホストまたはアプリケーションとの間に設けられる。例えば、仮想化ホストとＶＭとの間の経路。ターゲットＶＭは、ハイパーバイザーおよびプロキシエージェント（例えば、ＨＴＴＰプロキシ）を有するハイパーバイザーホスト上で動作する。ハイパーバイザーは、ＶＭの実行を管理する。どのＶＭがどのホスト上で動作するのかについて示すマッピングが維持される。ホストまたはアプリケーションが、ターゲットＶＭにメッセージまたはパケットを送信することになっている場合、マッピングが参照され、ターゲットＶＭをホストするハイパーバイザーホストが識別される。ターゲットＶＭを識別することができるメッセージまたはパケットは、ハイパーバイザーホストに送信される。ハイパーバイザーホストのプロキシエージェントは、ハイパーバイザーとターゲットＶＭとの間の通信チャネルを選択する。ハイパーバイザーは、次に、メッセージまたはパケットを、選択されたチャネルを介して、ターゲットＶＭに渡す。
【０００７】
[0006]付随する特徴の多くは、添付図面に関連して検討される以下の詳細な説明を参照して以下に説明されることになる。
[0007]本説明は、添付図面に照らして読まれる以下の詳細な説明からよりよく理解されることになり、添付の説明では、同様の参照番号は、同様の部分を指定するために使用される。
【図面の簡単な説明】
【０００８】
【図１】一例の仮想化レイヤを示す。
【図２】仮想マシンおよび仮想マシンイメージに関連する仮想化レイヤの処理および相互作用を示す。
【図３】ＶＭによってホストされるゲストオペレーティングシステム上で動作するエージェントと通信するアプリケーションの一例を示す。
【図４】アプリケーションとＶＭとの間の論理通信経路の概要を示す。
【図５】ＶＭとの接続を開始するクライアントホストを示す。
【図６】クライアントホストからのパケットを処理するハイパーバイザーホストを示す。
【発明を実施するための形態】
【０００９】
[0014]以下に説明される実施形態は、外部ネットワーク通信を可能にするために、ＶＭ／ハイパーバイザー上で内部通信チャネルを使用することに関する。説明は、仮想化技術および仮想化レイヤ（ハイパーバイザーとも呼ばれる）の概要で開始することになる。アプリケーションとＶＭとの間のネットワーク通信の一例が、次に説明されることになる。ハイパーバイザーホスト上のプライベートチャネルを使用する論理通信経路の概要が説明されることになる。最後に、通信経路の一方の端部のアプリケーション、および、通信経路の別の端部のハイパーバイザーホスト（ＶＭホスト）を含むこのような通信経路の細部が、詳細に説明される。
マシン仮想化
[0015]図１は、一例の仮想化レイヤ１００を示す。コンピュータ１０２は、中央処理装置（ＣＰＵ）１０６、メモリ１０８、ネットワークインターフェース１１０、不揮発性記憶装置１１２、および、バス、ディスプレイアダプター、などのような図示されない他の構成要素を含むハードウェア１０４を有する。仮想化レイヤ１００は、仮想マシン１１４の実行を管理し、容易にする。図１には示されないが、各仮想マシン１１４は、典型的には、関連する仮想ディスクイメージおよびゲストオペレーティングシステムを有する。簡潔にするために、仮想マシン１１４のオペレーティングシステム、および、おそらくは仮想マシン１１４のアプリケーションソフトウェアは、時には、ゲストと呼ばれることになり、ゲストは、格納され、仮想マシン１１４に関連付けられた仮想ディスクイメージから実行される。便宜のため、「ハイパーバイザー」という用語は、本明細書では、様々な形態の仮想化レイヤを指すために使用されることになる。さらに、以下に説明されるように、仮想マシン１１４は、分散アプリケーションの要素をホストするために使用される。
【００１０】
[0016]仮想化レイヤ１００は、Ｈｙｐｅｒ−Ｖサーバー、ＶＭＷａｒｅ  ＥＳＸサーバー（登録商標）、Ｘｅｎ、Ｏｒａｃｌｅ  ＶＭ（登録商標）、などのような、既知のまたは将来の実装の任意の種類のものであってよい。仮想化レイヤのアーキテクチャーは、ホストオペレーティングシステム上で動作する仮想マシンモニター（ＶＭＭ）、または、ハイパーバイザーを有するベアメタル型もしくはコンピュータ１０２のハードウェア１０４上で直接動作する同様のものを有するホステッド型であってよい。本明細書で使用される、「仮想マシン」という用語は、任意の特定のハードウェアアーキテクチャー（例えば、ｘ８６）をシミュレートし、そのハードウェアアーキテクチャのためのネイティブコードを実行することができる、システム型の仮想マシンを指し、ゲストには、仮想マシンは、ハードウェアマシンとほとんど区別がつかない可能性がある。本明細書で説明される仮想マシンは、Ｊａｖａ（登録商標）仮想マシンのような、抽象型またはプロセス型の仮想マシンではない。
【００１１】
[0017]仮想化レイヤ１００は、仮想マシン１１４の管理、並びに、自分自身および仮想マシン１１４の両方によるハードウェア１０４の共有の基本的な機能を実行する。様々な技術の任意のものが、仮想マシン１１４をハードウェア１０４から分離するために使用されてよい。一実施形態では、仮想化レイヤは、仮想マシン１１４に対応する異なる分離された環境（すなわち、パーティションまたはドメイン）を提供することができる。共有仮想デバイスドライバー、仮想マシン間通信設備、および仮想マシン管理ＡＰＩ（アプリケーションプログラミングインターフェース）のような、仮想化レイヤ１００のいくつかは、特別な特権的なパーティションまたはドメイン内で動作することができ、小型で効率的なハイパーバイザーを可能にする。他の実施形態では、仮想マシン管理およびハードウェア１０４のコヒーレントな共有に関する機能は、モノリシックなマシン上のハイパーバイザー内に存在してよい。
【００１２】
[0018]図２は、仮想マシン１１４および仮想マシンイメージ１４０に関連する仮想化レイヤ１００の処理および相互作用を示す。仮想化レイヤ１００は、おそらくは対応する仮想マシン構成パラメーターにしたがって、仮想マシン１１４を起動し、実行する処理１４２を行う。仮想マシン１１４（ＶＭ）が起動されると、仮想化レイヤは、関連する仮想マシンイメージ１４０を識別する。実際には、任意の仮想マシンイメージ１４０が、任意の仮想マシン１１４によって使用されてよい。仮想マシンイメージ１４０は、仮想化レイヤ１００のファイルシステム１４１上の特別にフォーマットされたファイル（例えば、ＶＨＤ）であってよい。仮想化レイヤ１００は、識別された仮想マシンイメージ１４０をロードする。起動された仮想マシン１１４は、仮想マシンイメージ１４０をマウントし、読み出し、おそらくは、マスターブートレコードまたは他のブート情報を探し、実行を開始するゲストオペレーティングシステムをブートする。
【００１３】
[0019]仮想化レイヤ１００は、ゲストのカーネルへの特定のコール、ハイパーコール、などを処理し、基盤となるハードウェア１０４への仮想マシン１１４のアクセスをコーディネートして、仮想マシン１１４の実行を管理する。ゲストおよびそのソフトウェアが動作するとき、仮想化レイヤ１００は、仮想ディスクイメージ１４０上のゲストの状態を維持することができ、ゲストまたはゲストによって実行されるアプリケーションが、データを「ディスク」に書き込む場合、仮想化レイヤ１００は、データを、仮想ディスクイメージ１４０のフォーマットに変換し、イメージに書き込む。
【００１４】
[0020]仮想化レイヤ１００は、仮想マシン１１４をシャットダウンするためのプロセス１４４を実行することができる。仮想マシン１１４を停止するために命令が受信されると、仮想マシン１１４およびそのゲストの状態は、仮想ディスクイメージ１４０に保存され、実行中の仮想マシン１１４のプロセス（またはパーティション）は、削除される。仮想マシン１１４の仕様は、仮想マシン１１４の後の再起動のために残ってよい。
仮想マシンとの通信の概要
[0021]図３は、ＶＭ１８６によってホストされるゲストオペレーティングシステム（ゲスト１８４）上で動作するエージェント１８２と通信するアプリケーション１８０の一例を示す。管理アプリケーションであってよいアプリケーション１８０は、例えば、クライアントホスト１８８上で動作し、クライアントホスト１８８は、ネットワーク１９０を介した通信を可能にするためにネットワークインターフェースカード（ＮＩＣ）１８９を有する、通常のコンピュータであってよい。クライアントホスト１８８は、（アプリケーション１８０によって実装される）アプリケーションプロトコル実装１９２、トランスポートプロトコル実装１９４、およびネットワークプロトコル実装１９６を含む様々なプロトコル実装から構成されたプロトコルスタックを有する。
【００１５】
[0022]ハイパーバイザーホスト１９８上のハイパーバイザー１９６がそうであるように、ゲスト１８４も、上述したプロトコルの実装を有する。ハイパーバイザーホスト１９８は、ＶＭ１８６の実行を管理するハイパーバイザー１９６を実行するコンピュータである。エージェント１８２（「ゲストエージェント１８２」とも呼ばれる）は、ゲスト１８４上に存在し、アプリケーション１８０によって実装される同じアプリケーションプロトコルを実装することができる。アプリケーション１８０およびゲストエージェント１８２は、任意の様々なソフトウェアであってよく、例えば、バックグラウンドネットワークサービス、インタラクティブアプリケーション、実行可能ファイル、より大きなアプリケーションまたはスイートの構成要素、などであってよい。一実施形態では、アプリケーション１８０は、ＶＭを管理する仮想マシン管理アプリケーションであり、エージェント１８２は、アプリケーション１８０との通信にしたがって、管理機能を実行する。
【００１６】
[0023]ＶＭ１８６の実行は、ハイパーバイザー１９６によって管理され、ハイパーバイザー１９６は、図３に示されない他のＶＭを管理することができる。クライアントホスト１８８とＶＭ１８６との間の直接接続が可能な場合には、アプリケーション１８０およびエージェント１８２は、以下のようにネットワーク１９０を介して通信する。アプリケーション１８０は、アプリケーションプロトコル１９２（例えば、ＨＴＴＰパケットまたはメッセージ）にしたがって、アプリケーションメッセージを形成する。アプリケーション１８０は、そのローカルオペレーティングシステムに、メッセージをハイパーバイザーホスト１９８のネットワークアドレス（例えば、ＨＴＴＰアドレス）に送信するように要求する。ローカルオペレーティングシステムのプロトコルスタックは、ハイパーバイザーホスト１９８への接続を開き、アプリケーション１８０のメッセージをトランスポートペイロード内にカプセル化し、トランスポートペイロードをネットワークパケット２０２内にカプセル化する。そのネットワークヘッダ（ハイパーバイザーホスト１９８のネットワークアドレスを含む）は、ネットワーク１９０を介してハイパーバイザーホスト１９８にルーティングされる。ハイパーバイザーホスト１９２は、パケット２０２をＶＭ１８６に渡すことができ、順番に、ゲスト１８４およびゲストエージェント１８２に渡すことができる。途中で、様々なペイロードが、個々のプロトコル実装によって抽出され、ゲストエージェント１８２は、送信されたアプリケーションメッセージ（例えば、「コマンドｆｏｏ」）を受信する。ゲストエージェント１８２が、アプリケーションをアプリケーション１９２に送信する場合、プロセスは、同様であるが、逆転される。
【００１７】
[0024]本明細書で使用される「クライアント」、「クライアントホスト」、「アプリケーション」、「エージェント」、「ハイパーバイザー」、および「ハイパーバイザーホスト」という用語は、それらの最も広い意味で使用される。本明細書に記載された技術を使用して通信する特定のプラットフォームおよびソフトウェアは、あまり重要ではない。実際には、特に、ネットワークを介してＶＭと通信している末端（例えば、アプリケーション１８０）で、既存のアプリケーションレベルのソフトウェアおよびプロトコルが、以下に記載される通信技術を、（もしあれば）大幅な変更なしに使用することができることは、注目に値する可能性がある。さらに、ＨＴＴＰ、ＩＰ（インターネットプロトコル）、およびＴＣＰ／ＵＤＰ（伝送制御プロトコル／ユニバーサルデータグラムプロトコル）プロトコルが、時には説明のために記載されるが、以下に記載される通信技術は、任意の標準的なネットワークプロトコルまたはそのバージョン（例えば、ＳＯＣＫＳ）と共に動作することができる。さらに、簡潔さのために、「ＨＴＴＰ」は、ＨＴＴＰ（ＨＴＴＰセキュア）と同様に、ＨＴＴＰのバージョンまたは変種を指すものとみなされるものとする。
論理通信経路、アプリケーション、およびハイパーバイザーの実施形態
[0025]図４は、アプリケーション１８０とＶＭ１８６との間の論理通信経路２２０の概要を示す。ハイパーバイザーホスト１９８上のプロキシエージェント２２２は、クライアントホスト１８８をＶＭ１８６とブリッジする。ＶＭ１８６およびクライアントホスト１８８は、通信するために必要なネットワーク構成要素（例えば、プロトコルスタック）を有するが、直接通信することはできないとみなされる可能性がある。例えば、ネットワーク１９０は、ネットワークパケットをそれらの間でルーティングすることができない可能性がある（例えば、どちらかがネットワーク１９０上でアドレス指定不可能である可能性がある）。しかしながら、クライアントホスト１８８では、ネットワークパケット２２３は、仮想化レイヤのネットワークアドレス（ハイパーバイザーホスト１９８のアドレス）に導かれ得る。パケット２２３が受信されると、プロキシエージェント２２２は、パケット２２３がＶＭ１８６によって受信されるものであると判断し、仮想化レイヤ（ハイパーバイザー）に、プライベートまたはローカル通信チャネル２２４を介してパケットをＶＭ１８６に渡させる。
【００１８】
[0026]一実施形態では、ＶＭホストマップ２２６は、どのＶＭがどのハイパーバイザーホスト上に存在するかを示す情報を含む。クライアントホスト１８８は、ＶＭホストマップ２２６内のハイパーバイザーホスト１９８のネットワークアドレスを検索するために、ＶＭ１８６の既知の識別子（おそらくは、アプリケーション１８０によって知られる）を使用することができる。識別子は、プロキシエージェント２２２によって使用するために、パケット２２３に加えられてよい。クライアントホスト１８８は、パケット２２３を、ハイパーバイザーホスト１９８の検索されたネットワークアドレスに送信し、ネットワーク１９０は、それを、パケット２２３をハイパーバイザーホスト１９８にルーティングする（２２６）ために使用する。上述したように、プロキシエージェント２２２は、（例えば、ＨＴＴＰ接続ヘッダからの）ＶＭ１８６の識別子を、仮想化レイヤにパケット２２３をＶＭ１８６に渡させるために使用する。
【００１９】
[0027]図５は、ＶＭ１８６との接続を開始するクライアントホスト１８８を示す。クライアントホスト１８８は、ＶＭホストマップ２２６へのアクセスを有する。クライアントホスト１８８は、ＶＭ１８６と通信するためのプロセス２５０を実行する。ステップ２５２では、要求２５４が、特定のＶＭ１８６と通信するために、おそらくは、アプリケーション１８０の論理の一部として受信され、または、ことによると外部実体から受信される。ステップ２５６では、ＶＭ１８６の識別子（例えば、図５中の「ＶＭ１」）が、ＶＭ１８６が存在するホスト、すなわち、ハイパーバイザーホスト１８６を検索するために使用される。検索は、ハイパーバイザーホスト１９８のネットワークアドレスまたはネットワークホスト名を返す可能性がある（本明細書で使用される「ネットワークアドレス」は、数値アドレス、並びに、数値アドレスに解読され得るホストネームの両方を含むことが想定される）。ステップ２５８では、パケット２２３が、実質的なペイロード（例えば、アプリケーションプロトコルメッセージ）を含んで形成される。ＨＴＴＰが使用される実施形態では、ステップ２５８で形成されるパケット２２３は、ＨＴＴＰパケットであり、ハイパーバイザーホストのネットワークアドレスは、ＨＴＴＰヘッダに含まれる。ステップ２６０では、パケット２２３は、ハイパーバイザーのネットワークアドレス（図５中の「ｎｅｔｗｏｒｋ  ａｄｄｒ１」、例えば、「１２８．１．２．３」）を使用して、ネットワーク１９０に送信される。
【００２０】
[0028]一実施形態では、プロセス２５０は、アプリケーション１８０によって完全にまたは部分的に実行されてよい。別の実施形態では、アプリケーション１８０は、ＶＭ１８６と通信する他のアプリケーションのためのプロキシまたはサービスとして作用することができる。これらのアプリケーションは、アプリケーション１８０にＶＭ識別子およびメッセージ本体を渡し、アプリケーション１８０は、本体のためのパケットを構築し、ＶＭ識別子を加え、パケットを対応するハイパーバイザーホストに送信する。さらに別の実施形態では、ルックアップテーブル（ＶＭホストマップ２２６）を維持するのではなく、ＶＭ識別子は、ＶＭに対応するハイパーバイザーホストのネットワークアドレスへとマッピングする（おそらくは、競合を避けるためにローカルまたは制限された範囲を持つ）ＤＮＳ（ドメイン名サービス）サーバーに登録されたグローバルに一意なホスト名であってよい。この場合、アプリケーションまたはクライアントホストが、ＶＭと通信したい場合、正確なハイパーバイザーホストのネットワークアドレスを得るために、ローカルＤＮＳサーバーを介してＶＭの識別子（例えば、「フェイク」ＤＮＳ名）を検索する。
【００２１】
[0029]ＶＭ識別子の形態は、プロキシエージェント２２２およびクライアントホスト／アプリケーションが同じ名前を共有する限り、重要ではない。システムは、ＶＭに名前を付けるための任意の規則を使用することができ、例えば、「ｈｏｓｔ＃：ｖｍ＃」のようなカスタムＵＲI（ユニフォームリソース識別子）フォーマットを使用することができる。
【００２２】
[0030]図６は、クライアントホスト１８８からのパケット２２３を処理するハイパーバイザーホスト１９８を示す。プロキシエージェント２２２は、プロセス２８０を実行するために、仮想化レイヤまたはハイパーバイザー１９２と共に動作する。ステップ２８２では、ハイパーバイザーホスト１９８は、パケット２２３を受信し、パケット２２３は、ターゲットＶＭ、すなわちＶＭ１８６のＶＭ識別子（例えば、「ＶＭ１」、「ｈｏｓｔ１：ＶＭ１」など）を含む。プロキシエージェント２２２は、ＶＭ識別子を抽出し、ステップ２８３では、チャネルテーブル２８４内のＶＭ識別子を検索する。チャネルテーブル２８３は、通信チャネル２２４、２２４Ａを、個々のＶＭ１８６、１８６Ａにマッピングする。各通信チャネル２２４、２２４Ａは、ハイパーバイザー側エンドポイント２８６およびＶＭ側エンドポイント２８８を含む１対の通信エンドポイントを有することができる（一実施形態では、ＶＭ側エンドポイント２８６は、ＶＭ１８６の仮想ＮＩＣである）。ステップ２８３が通信チャネルを発見しない場合、ステップ２９０が実行され、新しいチャネルが作成される。次に、新しいチャネルへの参照が、チャネルテーブル２８４に追加される。仮想ＮＩＣまたは管理ＮＩＣが、ホストおよびＶＭが接続された内部ネットワークスイッチに接続された仮想バスネットワークアダプターであってよく、ＶＭは、（例えば、１６９の範囲の）自動的な内部ＩＰアドレスを有することに留意されたい。一実施形態では、ゲストＶＭの各々が許可なく互いに通信するのを防ぐために、ＡＣＬ（アクセス制御リスト）が、内部ネットワークスイッチに関連して維持され、ホストとＶＭとの通信は、許可されるが、ＶＭとＶＭとの通信は、ＡＣＬでの明示的な許可なしには許可されない。
【００２３】
[0031]パケット２２３のための正しい通信チャネル２２４が識別されたら、ステップ２９２では、ハイパーバイザー１９２および／またはプロキシエージェント２２２は、パケット２２３を通信チャネル２２４に渡す。今度は、ＶＭ１８６は、プロセス２９４を実行する。ステップ２９６では、ゲスト１８４は、パケット２２３を受信する。ステップ２９８では、パケット２２３に基づいて、ゲスト１８４は、パケット２２３をゲストエージェント１８２に渡し、ゲストエージェント１８２は、パケット２２３の実質的な内容をサービスすることに移行する（例えば、「コマンドｆｏｏ」を実行する）。例えば、パケット２３３のアプリケーションプロトコルの種類（例えば、ＨＴＴＰ）は、ゲストによって、ゲストエージェント１８２がリッスンするポート番号にマッピングされてよい。すなわち、ゲストエージェント１８２は、特定のポート（例えば、管理のための指定されたＷＳ管理ポート５９８６、データのためのＢＩＴＳポート８１１４、など）をリッスンすることができる。プロキシエージェント２２２（例えば、ＨＴＴＰプロキシ）は、（ハイパーバイザーホスト１８６の）外部ＩＰアドレスの同じポート（５９８６、８１１４）をリッスンする。次に、プロキシエージェント２２２は、任意の入トラフィックをゲストＶＭの対応するポート上に転送し、したがって、ゲストＶＭ上への様々な制御およびデータトラフィックの多重化を可能にする。
【００２４】
[0032]通信チャネルに関して、一実施形態では、通信チャネルは、パケット２２３をハイパーバイザーホスト１９８に配送するために使用される同じネットワークおよび／またはトランスポートプロトコルに基づく。実際には、通信チャネルは、ハイパーバイザーホスト１９２とＶＭ１８６との間の限定されたプライベートネットワーク接続であってよい。別の実施形態では、プロキシエージェント２２２は、パケット２２３を検索し、パケット２２３をＶＭ１８６に転送する前に、ヘッダ情報を変更するか、パケット２２３を別の方法で変更することができる。
【００２５】
[0033]実際には、アプリケーション１８０およびゲストエージェント１８２の観点から、この２つは、ＶＭがクライアントホスト１８８から直接アクセス可能またはアドレス可能である場合にそれらが行い得るのと同様に、通常のネットワーク通信プロトコルおよびアドレスを使用して、アプリケーションレベルの通信を交換することができる。パケットを受信することに関して、プロキシエージェント２２２は、既知のプロキシ機能と同様に機能する。
【００２６】
[0034]上述したように通信は、ゲスト１８４またはゲストエージェント１８２内から生じてもよく、通信チャネルおよび仮想化レイヤを介して、プロキシエージェント２２２に渡されてもよい。例えば、ゲストエージェント１８２は、クライアントホスト１８８のネットワークアドレスを設定されてよい。プロキシエージェント２２２は、今度は、ゲスト由来のパケットをクライアントホスト１８８に送信する。
【００２７】
[0035]一実施形態では、ＶＭの可視性を提供するために、ハイパーバイザーホスト（ＶＭが動作するホスト）は、ＶＭが作成されるとき、ＶＭを自己登録することができる。例えば、ハイパーバイザーホストは、新しいＶＭのために、ホストおよび新しいＶＭを識別する新しいエントリを、ＶＭホストマッピングテーブル２２６に追加することができる。
結論
[0036]上述の実施形態および特徴は、揮発性または不揮発性のコンピュータまたはデバイス可読媒体に格納された情報の形態で実現され得る。これは、少なくとも、光学記憶装置（例えば、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ））、磁気媒体、フラッシュ読み出し専用メモリ（ＲＯＭ）、または、デジタル情報を格納する任意の現在のもしくは将来の手段のような媒体を含むものとみなされる。格納された情報は、マシン実行可能命令（例えば、コンパイルされた実行可能なバイナリーコード）、ソースコード、バイトコード、または、計算装置が上述の様々な実施形態を実行することを可能にするもしくは設定するために使用され得る任意の他の情報の形態であってよい。これは、また、少なくとも、実施形態を実施するプログラムの実行中、中央処理装置（ＣＰＵ）命令のような情報を格納するランダムアクセスメモリ（ＲＡＭ）のような揮発性メモリおよび／または仮想メモリ、並びに、プログラムまたは実行可能ファイルがロードまたは実行されることを可能にする情報を格納する不揮発性メモリを含むものとみなされる。実施形態および特徴は、ポータブルデバイス、ワークステーション、サーバー、モバイル無線デバイス、などを含む任意の種類の計算装置で実行されてよい。
【図１】
2014524086.tif 000003
【図２】
2014524086.tif 000004
【図５】
2014524086.tif 000005
【図３】
2014524086.tif 000006
【図４】
2014524086.tif 000007
【図６】
2014524086.tif 000008
【国際調査報告】
2014524086.tif 000009
2014524086.tif 000010