(57)【特許請求の範囲】
【請求項１】
ネットワークにおける１つ以上のリソースから分離される仮想ネットワーク（Ｖネット）の複数のメンバ間におけるデータパケットの配信を管理するために配信システムが実行する方法であって、
少なくとも１つのデータセンタにおいて動作する複数のメンバを有する第１のＶネットを形成するステップであって、前記複数のメンバはソース側のネットワークアダプタと宛先側のネットワークアダプタとを含む、ステップと、
前記ソース側のネットワークアダプタが、前記宛先側のネットワークアダプタのターゲット識別子を含むヘッダとともに形成される１つ以上のデータパケットを、前記宛先側のネットワークアダプタへ送信しようとしていることを検出するステップと、
（ａ）前記第１のＶネットに関連する転送テーブルにアクセスし、（ｂ）前記転送テーブルに載っている宛先側の仮想マシン（ＶＭ）スイッチのロケータアドレスであって前記ターゲット識別子に対応するロケータアドレスを発見する解決処理を実行するステップであって、前記転送テーブルは、少なくとも１つの要求メッセージを利用することにより、前記ソース側のＶＭスイッチにとってアクセス可能なディレクトリサーバ内で維持され、前記解決処理は、前記少なくとも１つの要求メッセージで示された前記ディレクトリサーバへ前記ターゲット識別子を送信することを含む、ステップと、
前記宛先側のＶＭスイッチのロケータアドレスを前記ヘッダに更に含めることにより、前記１つ以上のデータパケットをカプセル化するステップと、
前記ヘッダに含まれている前記ターゲット識別子及び前記ロケータアドレスを利用して、ソース側のＶＭスイッチから前記宛先側のＶＭスイッチへ、カプセル化された１つ以上のデータパケットを送信するステップと
を有する方法。
【請求項２】
前記転送テーブルは、前記第１のＶネットの前記複数のメンバと、前記少なくとも１つのデータセンタ内のそれぞれのノードにあるＶＭスイッチとの間のマッピングを表し、前記マッピングは、前記複数のメンバ間のデータパケットのトラフィックを管理する通信ポリシーに従って決定されている、請求項１に記載の方法。
【請求項３】
前記複数のメンバのうちの何れかは、仮想マシン又は物理マシン上で動作するネットワークアダプタを有する、請求項１に記載の方法。
【請求項４】
前記宛先側のＶＭスイッチ及び前記宛先側のネットワークアダプタは、前記少なくとも１つのデータセンタの第１のノード内にあり、前記ソース側のＶＭスイッチ及び前記ソース側のネットワークアダプタは、前記少なくとも１つのデータセンタの第２のノード内にある、請求項１に記載の方法。
【請求項５】
前記ターゲット識別子は、前記宛先側のネットワークアダプタのインターネットプロトコル（ＩＰ）アドレス及びメディアアクセス制御（ＭＡＣ）アドレスを含む、請求項４に記載の方法。
【請求項６】
前記転送テーブルの一部分は、前記ソース側のＶＭスイッチで保存され、前記解決処理は、前記転送テーブルを前記ソース側のＶＭスイッチでローカルに検査することをさらに含む、請求項４に記載の方法。
【請求項７】
前記第１のＶネットを形成する複数のメンバは、第１のサービスアプリケーションに割り振られている、請求項１に記載の方法。
【請求項８】
前記方法は、前記少なくとも１つのデータセンタにおいて動作する複数のメンバを有する第２のＶネットを形成するステップを有し、前記第１のＶネットの複数のメンバのうち第１ノードに位置する何れかのメンバは、前記第２のＶネットの複数のメンバのうち前記第１ノードとは異なる第２ノードに位置する何れかのメンバに割り当てられるＩＰアドレスに一致するＩＰアドレスの割り当てを受ける、請求項１に記載の方法。
【請求項９】
前記第２のＶネットを形成する複数のメンバは、第２のサービスアプリケーションに割り振られている、請求項８に記載の方法。
【請求項１０】
前記宛先側のネットワークアダプタは、前記少なくとも１つのデータセンタに対して遠隔したエンタープライズプライベートネットワーク内に位置するノード上に存在し、前記ソース側のＶＭスイッチは、前記エンタープライズプライベートネットワークに対するルーティングのためのゲートウェイ機能を備えている、請求項１に記載の方法。
【請求項１１】
前記ゲートウェイ機能を用いて、前記カプセル化された１つ以上のデータパケットを、前記宛先側のネットワークアダプタへルーティングするステップであって、前記カプセル化された１つ以上のデータパケットにトランスポート保護処理を適用し、前記少なくとも１つのデータセンタ及び前記エンタープライズプライベートネットワークを通るセキュアトンネルをもたらす、請求項１０に記載の方法。
【請求項１２】
請求項１〜１１の何れか１項に記載の方法を配信システムに実行させるコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ネットワークに関する。
【背景技術】
【０００２】
大規模ネットワークシステムは、サービスアプリケーションを実行し、ビジネスおよび操作機能のためのデータを維持するための、様々な設定において用いられた通常のプラットフォームである。例として、データセンタ（例えば、物理的クラウドコンピューティングインフラストラクチャ）は、同時に複数の顧客のための様々なサービス（例えば、ウェブアプリケーション、電子メールサービス、検索エンジンサービスなど）を提供することができる。これらの大規模ネットワークシステムは典型的には、データセンタの全体に渡って分散された多数のリソースを含み、各リソースは、物理マシン、または、物理ホスト上で実行する仮想マシンのようである。データセンタが複数のテナント（例えば、顧客プログラム）をホストするとき、これらのリソースは、データセンタから異なるテナントへ、それらの使用要件を満たすために割り振られる。
【０００３】
データセンタの顧客は、データセンタ内のリソース上で実行されているソフトウェアと対話するために、エンタープライズプライベートネットワーク（例えば、データセンタから地理的に遠隔である顧客によって管理されたサーバ）内で実行するサービスアプリケーションを必要とすることが多い。あるテナントに割り振られたリソースを、他のテナントに割り振られたリソースから安全に分離するため、ホスティングサービスプロバイダは、専用物理ネットワークをデータセンタから切り出し、専用物理ネットワークがそのテナント専用に、かつ、多くの場合、そのテナントのエンタープライズプライベートネットワークの拡張として、セットアップされるようにすることができる。しかし、データセンタは、特定の顧客に割り振られるリソースの数を（例えば、処理負荷に基づいて）動的に増加または減少させるように構築されるので、専用物理ネットワークを切り出し、その中のリソースを個人の顧客に静的に割り当てることは、経済的に実用的ではない。
【０００４】
さらに、専用物理ネットワークをデータセンタから切り出し、その中のリソースをエンタープライズプライベートネットワークに位置するリソースと組み合わせるとき、異なる顧客によって使用されたインターネットプロトコル（ＩＰ）アドレス空間内で重複の可能性がある。また、多数のリソースを要求するかなりの計算負荷が、専用物理ネットワークに課されるとき、データセンタのために予約されたＩＰアドレスの枯渇の可能性がある。したがって、新たに出現する技術を用いて、顧客の需要を満たすために動的にサイズが変更され、かつ、ソフトウェアベースの仮想マシン（ＶＭ）スイッチを介して相互接続される、分離されたリソースのグループ（例えば、仮想ネットワーク（Ｖネット））を生成することは、ＩＰアドレス名前空間制限を回避し、データセンタ内で顧客に割り振られたリソースのスケーラビリティを高め、また、顧客のネットワーク通信を分離して顧客間の望ましくない通信を防ぐ役目を果たすであろう。
【発明の概要】
【０００５】
この概要は、詳細な説明でさらに後述される概念を、簡略化された形式で導入するために提供される。この概要は、特許請求の範囲に記載された主題の重要な特徴または本質的な特徴を識別するように意図されず、また、特許請求の範囲に記載された主題の範囲の決定を助けるものとして使用されるようにも意図されない。
【０００６】
本発明の実施形態は、クラウドコンピューティングプラットフォーム内で実行する顧客のサービスアプリケーションの整合性を保護する問題に対処する、到達可能性−分離機構（reachability-isolation mechanism）を提供し、クラウドコンピューティングプラットフォームは、複数の（例えば、１つのクラウドにつき何万もの）テナントがクラウドサービスデータセンタ内のコンピューティングリソースを共有できるように構成される。一般に、到達可能性−分離機構は、サービスアプリケーションに割り振られたネットワークアダプタをデータセンタ内の他のリソースから仮想的にパーティション分割しながら、割り振られたネットワークアダプタ間でセキュリティ保護された通信をサポートする。複数の実施形態では、仮想マシンまたは物理マシンは、そのマシン上で実行する１つまたは複数のネットワークアダプタを有する。セキュリティ保護された通信を達成するため、複数の実施形態では、到達可能性−分離機構は、そのネットワーク内のデータパケットのフローを管理するように機能し、かつ同時に、承認されていない通信を防ぐ、仮想ネットワーク（Ｖネット）を用いる。
【０００７】
例示的実施形態では、Ｖネットは、メンバとして、ファブリックコントローラによってＶネットに結合かつバインドされるネットワークアダプタのグループを含む、クラウドコンピューティングプラットフォームのデータセンタ内で確立される。Ｖネットを構成するネットワークアダプタは、物理および仮想ネットワークアダプタの任意の組み合わせを含んでもよい。典型的には、ファブリックコントローラは、データセンタ内のマシン（例えば、仮想マシンおよび物理マシン）のライフサイクルを監視かつ制御するように実装された管理コンポーネントである。Ｖネットを確立すると、ファブリックコントローラは、Ｖネットのメンバシップをディレクトリサーバへ通信し、ディレクトリサーバは、メンバネットワークアダプタの識別子を、ＶネットとＶネットによってサポートされたサービスアプリケーションとに共に関連付けられた転送テーブルに書き込む。
【０００８】
ファブリックコントローラはまた、データセンタのノード内でＶＭスイッチをインスタンス化することを担うこともでき、ノードには、サーバ、物理マシンまたはネットワークスイッチが含まれてもよい。例として、ファブリックコントローラは、Ｖネットのメンバをホストする１つまたは複数のデータセンタの各サーバ上の単一のＶＭスイッチをインスタンス化してもよい。ファブリックコントローラは、一意のロケータをＶＭスイッチの各々にさらに割り当て、転送テーブル内の記録のために、ディレクトリサーバにＶＭスイッチの存在をアラートしてもよい。
【０００９】
複数の実施形態では、ＶＭスイッチは、ブリッジとしての機能を果たして、データセンタ内のノード上に存在する、Ｖネットのこれらのメンバネットワークアダプタを、データセンタの全体に渡って、他のデータセンタ内に、または、顧客自身の構内に位置するエンタープライズプライベートネットワーク（複数可）内に分散されたノード上に存在する他のメンバネットワークアダプタと相互接続する。ＶＭスイッチは、他の機構の中でも、コードまたはハードウェアによって実現されてもよい。ＶＭスイッチは、サーバ、物理マシン、ネットワークインターフェイスカード、ネットワークスイッチ、ネットワークルータ、ネットワーク要素上で実現されてもよく、または、ＶＭスイッチの機能性は、これらの任意の組み合わせの中で分割されてもよい。ＶＭスイッチは、ディレクトリサーバと対話することによってこれらの接続を作成し、ディレクトリサーバは、Ｖネットのメンバネットワークアダプタによって生成されたデータパケットをどこへ、どのように送信するべきかを、ＶＭスイッチに指示する。動作中、ＶＭスイッチは、データパケットの修正および／またはカプセル化、ならびに送信を行い、データパケットのヘッダが変更されて、データパケットを受信するＶＭスイッチのアドレスを含めるようにする。この修正および／またはカプセル化の処理は、送信側ＶＭスイッチ（例えば、ソース側ＶＭスイッチ）と受信側ＶＭスイッチ（例えば、宛先側ＶＭスイッチ）の間のセキュアトンネルを形成することができる。セキュアトンネルは、ネットワークを介して、ならびに、潜在的には、複数のデータセンタに渡って、かつ、複数のエンタープライズプライベートネットワークに渡って接続するとき、ファイアウォールおよび他の保護手段を介して、データパケットの安全かつ直接の通過を保証する。
【００１０】
宛先側ＶＭスイッチで受信されると、データパケットが復元かつ／またはカプセル化解除され、元のヘッダが明らかにされる。データパケットは次いで、同じノード内で、ヘッダによって示されるようなＶネットのメンバネットワークアダプタに配布される。実施形態は、ターゲット識別子、ＭＡＣアドレス、ＩＰアドレス、または、ヘッダ内で搬送された情報をネットワークアダプタのリストにマップするテーブルなどの手段を通じて、どのネットワークアダプタがパケットを受信するべきであるかを決定してもよい。一実施形態では、メンバネットワークアダプタのターゲット識別子は、データパケットをノード内でローカルに渡すときに利用されるが、宛先側ＶＭスイッチのロケータは、データパケットを、ネットワークを介して渡すときに利用される。ネットワーク内で接続されたネットワークアダプタに割り当てられうるＩＰアドレスの数およびタイプに対する、ネットワーク全体の制限が外されると有利である。このように、到達可能性−分離機構は、そのネットワークのために予約された、限定された数のＩＰアドレスによって制限されることなく、ネットワーク内のネットワークアダプタのスケーラビリティを促進する。
【図面の簡単な説明】
【００１１】
本発明の実施形態については、添付の図面を参照して詳細に後述する。
【図１】本発明の実施形態の実装において使用するために適した、例示的コンピューティング環境のブロック図である。
【図２】本発明の実施形態の実装において使用するために適した、データセンタ内で仮想ネットワーク（Ｖネット）を割り振りかつ監督するように構成される、例示的クラウドコンピューティングプラットフォームを例示するブロック図である。
【図３】本発明の一実施形態による、カプセル化されていない（ｕｎｅｎｃａｐｓｕｌａｔｅｄ）か、またはカプセル化解除される、データフレームの例示的構造の概略描写である。
【図４】本発明の一実施形態による、ソース側仮想マシン（ＶＭ）スイッチによってカプセル化されるデータフレームの例示的構造の概略描写である。
【図５】本発明の一実施形態による、ディレクトリサーバ上でホストされているＶネットに関連付けられた例示的転送テーブルの概略描写である。
【図６】本発明の一実施形態による、ゲートウェイ機能性が供給されるＶＭスイッチをリンクするように確立された、セキュリティで保護されたトンネルを有する例示的分散コンピューティング環境のブロック図である。
【図７】本発明の一実施形態による、データセンタ内で他のＶネットから分離される、Ｖネットのメンバ間のデータパケットの配布を管理するための方法を示すフロー図である。
【図８】本発明の一実施形態による、データセンタ内のＶネットの拡張を監督するための方法を示すフロー図である。
【発明を実施するための形態】
【００１２】
本発明の実施形態の主題は、法定要件を満たすために、本明細書で特定性を有して説明される。しかし、その説明自体は、本特許の範囲を限定するように意図されない。むしろ、発明者は、特許請求の範囲に記載された主題がまた、他の方法でも実施されて、他の現在または将来の技術と共に、異なるステップ、または、本書に記載されたものに類似したステップの組み合わせを含むようにしてもよいことを、企図している。また、「ステップ」および／または「ブロック」という用語は、用いられる方法の異なる要素を言外に意味するように本明細書で使用されうるが、これらの用語は、個々のステップの順序が明示的に記載されない限り、かつ、明示的に記載されるときを除いて、本明細書で開示された様々なステップ間の任意の特定の順序を含意するものとして解釈されるべきではない。
【００１３】
本発明の実施形態は、仮想ネットワーク（Ｖネット）と、Ｖネットのメンバネットワークアダプタ間の保護かつ分離された相互接続をサポートする仮想マシン（ＶＭ）スイッチとを自動的に確立かつ管理するための方法、コンピュータシステム、およびコンピュータ可読メディアに関する。一態様では、本発明の実施形態は、そのメディア上で実施されるコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読メディアに関し、コンピュータ実行可能命令は、実行されるとき、データセンタ内のＶネットに属さない他のリソースから分離される、Ｖネットのメンバ間のデータパケットの配布を管理するための方法を行う。複数の実施形態では、この方法は、部分的にデータセンタ内で実行する、第１のサービスアプリケーションに割り振られた複数のメンバ（例えば、仮想マシンおよび／または物理マシン上で実行するネットワークアダプタ）を備える、第１のＶネットを提供するステップを含む。典型的には、複数のメンバは、発信元ネットワークアダプタおよび宛先ネットワークアダプタを含む。この方法は、発信元ネットワークアダプタが１つまたは複数のデータパケットを宛先ネットワークアダプタへ送信することを試行することを検出するステップをさらに含む。複数の実施形態では、図３および図４を参照してより十分に後述するように、これらのデータパケットは、宛先ネットワークアダプタをポイントするターゲット識別子（例えば、インターネットプロトコル（ＩＰ）アドレス、および／または、メディアアクセス制御（ＭＡＣ）アドレス）を含むヘッダを有して構築される。
【００１４】
データパケットの送信を検出すると、ソース側ＶＭスイッチは解決処理を行い、解決処理は、第１のＶネットに関連付けられる転送テーブルにアクセスするステップと、ターゲット識別子に対応する、転送テーブル内でリストされた、宛先側ＶＭスイッチのロケータを発見するステップとを含む。例示的実施形態では、転送テーブルは、第１のサービスアプリケーションに割り振られた複数のメンバと、データセンタ内のそれぞれのノード上にそれぞれ位置するＶＭスイッチとの間のマッピングを表し、マッピングは、複数のメンバ間のデータパケットトラフィックを管理する通信ポリシーに従って設計される。データパケットは次いでカプセル化されて、宛先側ＶＭスイッチロケータを拡張された新しいヘッダ内に含めるようにする。一般に、宛先側ＶＭスイッチは、データパケットを、データセンタの第１のノード内の宛先ネットワークアダプタに配布することを担う。
【００１５】
もう１つの態様では、本発明の実施形態は、サービスアプリケーションに割り振られるネットワークアダプタ間の通信をサポートかつ分離するためのコンピュータシステムに関する。初めに、コンピュータシステムは、発信元ネットワークアダプタ、宛先ネットワークアダプタ、ディレクトリサーバ、宛先側ＶＭスイッチ、および、ソース側ＶＭスイッチを含む。発信元ネットワークアダプタは、複数の実施形態では、ターゲット識別子を含むヘッダを有して構築された１つまたは複数のデータパケットを生成する。典型的には、ターゲット識別子は、宛先ネットワークアダプタをポイントし、宛先ネットワークアダプタおよび発信元ネットワークアダプタは、部分的に少なくとも１つのデータセンタ内で実行する１つまたは複数のサービスアプリケーションに割り振られた、Ｖネットのメンバである。さらに、宛先ネットワークアダプタは、データセンタの第１のノード上に存在するが、発信元ネットワークアダプタは、同じデータセンタまたは別のデータセンタの第２のノード上に存在する。
【００１６】
コンピュータシステムはまた、Ｖネットに関連付けられた転送テーブルを維持するディレクトリサーバをも含む。ある場合には、転送テーブルは、それぞれのＶＭスイッチのロケータにマップされた、Ｖネットのメンバの識別子が設定される（識別子によりポピュレートされる）。コンピュータシステムは、宛先側ＶＭスイッチの動作をサポートすることができ、宛先側ＶＭスイッチは、データセンタの第１のノード上に存在し、データパケットを宛先ネットワークアダプタに配布することを担う。加えて、コンピュータシステムは、ソース側ＶＭスイッチの動作をサポートすることができ、ソース側ＶＭスイッチは、データセンタの第２のノード上で発信元ネットワークアダプタと共に存在し、データパケットのヘッダを読み取り、ターゲット識別子をディレクトリサーバへ伝達する。ターゲット識別子を受信すると、ディレクトリサーバは、ターゲット識別子を転送テーブルに対して比較して、宛先側ＶＭスイッチがターゲット識別子にマップされるかどうかを判定する。そうである場合、ソース側ＶＭスイッチは、宛先側ＶＭスイッチのロケータを含むフレームを、データパケットのヘッダに追加する。フレームをヘッダに追加することに伴い、ソース側ＶＭスイッチは、パケットを宛先側ＶＭスイッチへ転送する。受信すると、宛先側ＶＭスイッチは、フレームを除去することによって、データパケットのヘッダを復元し、ターゲット識別子をディレクトリサーバに確認する。
【００１７】
さらにもう１つの態様では、本発明の実施形態は、データセンタ内でファブリックコントローラによって管理されたＶネットの拡張を監督するためのコンピュータ化された方法に関する。一実施形態では、この方法は、ルーティング情報（例えば、インターネット層（レイヤ３）ロケータ）をネットワークコンポーネントに割り当てることを含む。一般に、ネットワークコンポーネントは、データセンタのノード上に存在するソフトウェアベースのコンポーネント（例えば、ＶＭスイッチ）、または、物理ネットワークコンポーネント（例えば、トップオブラックスイッチ（top-of-rack switches）、ネットワークインターフェイスカード、物理的スイッチなど）を表す。この方法は、以下のステップをさらに含んでもよく、すなわち、サービスアプリケーションのリソース使用の増大を検出するステップ、ノード上のネットワークアダプタをインスタンス化するステップ、および、ネットワークアダプタを、Ｖネットにバインドされたメンバネットワークアダプタのグループに結合することによって、ネットワークアダプタをサービスアプリケーションに割り振るステップである。例示的実施形態では、ネットワークアダプタにはＩＰアドレスが提供される。
【００１８】
ネットワークアダプタをサービスアプリケーションに割り振ると、結合されたネットワークアダプタのＩＰアドレスは、ディレクトリサーバへ通信される。ディレクトリサーバは、ネットワークコンポーネントおよび結合されたネットワークアダプタが共通して同じノード上に存在するとき、結合されたネットワークアダプタのＩＰアドレスに関連して、ネットワークコンポーネントの割り当てられたルーティング情報を保存するように構成される。もう１つの実施形態では、結合されたネットワークアダプタには、データセンタとの関連において、結合されたネットワークアダプタを一意に識別する、メディアアクセス制御（ＭＡＣ）アドレスが提供される。ＩＰアドレスと同様に、結合されたネットワークアダプタに割り当てられたＭＡＣアドレスは、ディレクトリサーバへ通信されてもよく、ディレクトリサーバは、ネットワークコンポーネントのルーティング情報に関連して、ＭＡＣアドレスを保存する。このように、ＭＡＣアドレスは、重複するＩＰアドレス範囲をデータセンタ内の様々なＶネットに対して利用するとき、結合されたネットワークアダプタを発見することを可能にする。
【００１９】
本発明の実施形態の概観を簡単に説明したが、本発明の実施形態を実装するために適した例示的動作環境を、以下に説明する。
【００２０】
図面全体を参照し、初めに特に図１を参照すると、本発明の実施形態を実装するための例示的動作環境が図示され、全体として、コンピューティングデバイス１００として示される。コンピューティングデバイス１００は、しかし、適切なコンピューティング環境の一例であり、本発明の実施形態の使用または機能性の範囲についてのいかなる限定を示唆するようにも意図されない。コンピューティング環境１００はまた、例示されたコンポーネントのいずれか１つまたは組み合わせに関するいかなる依存性または要件を有するものとしても解釈されるべきではない。
【００２１】
本発明の実施形態は一般に、コンピュータ、または、パーソナルデータアシスタントもしくは他のハンドヘルドデバイスなど、他のマシンによって実行される、プログラムコンポーネントなど、コンピュータ実行可能命令を含む、コンピュータコードまたはマシン使用可能命令との関連で説明されうる。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムコンポーネントは、特定のタスクを行うか、または、特定の抽象データ型を実装するコードを指す。本発明の実施形態は、ハンドヘルドデバイス、消費者向け電子機器、汎用コンピュータ、専門コンピューティングデバイスなどを含む、様々なシステム構成で実施されてもよい。本発明の実施形態はまた、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが行われる、分散コンピューティング環境で実施されてもよい。
【００２２】
引き続き図１を参照すると、コンピューティングデバイス１００は、以下のデバイスを直接的または間接的に結合するバス１１０を含み、これらのデバイスは、メモリ１１２、１つまたは複数のプロセッサ１１４、１つまたは複数の提示コンポーネント１１６、入力／出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏコンポーネント１２０、および、例示的電源１２２である。バス１１０は、１つまたは複数のバスになりうるもの（アドレスバス、データバス、またはそれらの組み合わせなど）を表す。図１の様々なブロックは、明確にするために線で示されるが、実際には、様々なコンポーネントを図で表すことはそれほど明確ではなく、比喩的に、これらの線は、より正確には、どちらとも言えないので不明瞭となる。例えば、表示デバイスなど、提示コンポーネントを、Ｉ／Ｏコンポーネントであると考えることができる。また、プロセッサはメモリを有する。本発明者は、そのようなことが当技術分野の本質であると理解し、図１の図が、本発明の１つまたは複数の実施形態に関連して使用されうる例示的コンピューティングデバイスを例示するものでしかないことを繰り返し述べる。「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」などのようなカテゴリ間の区別は行われず、その理由は、すべてが図１および「コンピュータ」または「コンピューティングデバイス」への参照の範囲内で企図されるからである。
【００２３】
コンピューティングデバイス１００は典型的には、様々なコンピュータ可読メディアを含む。例として、限定ではなく、コンピュータ可読メディアには、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電子的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光もしくはホログラフィックメディア、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報をエンコードするために使用でき、かつ、コンピューティングデバイス１００によってアクセス可能な任意の他のメディアが含まれてもよい。
【００２４】
メモリ１１２には、揮発性および／または不揮発性メモリの形式のコンピュータ記憶メディアが含まれる。メモリは、リムーバブル、非リムーバブル、またはそれらの組み合わせであってもよい。例示的ハードウェアデバイスには、ソリッドステートメモリ、ハードドライブ、光ディスクドライブなどが含まれる。コンピューティングデバイス１００は、メモリ１１２またはＩ／Ｏコンポーネント１２０など、様々なエンティティからデータを読み取る、１つまたは複数のプロセッサを含む。提示コンポーネント（複数可）１１６は、ユーザまたは他のデバイスにデータ表示を提示する。例示的提示コンポーネントには、表示デバイス、スピーカ、印刷コンポーネント、振動コンポーネントなどが含まれる。Ｉ／Ｏポート１１８は、コンピューティングデバイス１００を、Ｉ／Ｏコンポーネント１２０を含む他のデバイスに論理的に結合できるようにし、Ｉ／Ｏコンポーネント１２０のうちいくつかは組み込まれてもよい。例示的コンポーネントには、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、プリンタ、ワイヤレスデバイスなどが含まれる。
【００２５】
図１および図２を参照すると、第１のノード２１１、第２のノード２１２および／または第３のノード２１３が、図１の例示的コンピューティングデバイス１００によって実装されうる。さらに、発信元ネットワークアダプタ２５０、宛先ネットワークアダプタ２４０、ネットワークアダプタ２６１、２６２、２６３、２６４および２６５、宛先側ＶＭスイッチ２２１、ＶＭスイッチ２２２、ならびに、ソース側ＶＭスイッチ２２３は、図１のメモリ１１２の部分にアクセスし、図１のプロセッサ１１４の部分において実行することができる。
【００２６】
次に図２を見ると、本発明の一実施形態による、サービスアプリケーションを構成するコンポーネントの分離された相互接続をサポートする、データセンタ２０１内で確立されたＶネットを割り振りかつ監督するように構成される、例示的クラウドコンピューティングプラットフォーム２００を示す、ブロック図が例示される。図２に示されたクラウドコンピューティングプラットフォーム２００は、１つの適切なコンピューティングシステム環境の一例でしかなく、本発明の実施形態の使用または機能性の範囲についてのいかなる限定を示唆するようにも意図されないことは理解されよう。例として、クラウドコンピューティングプラットフォーム２００は、パブリッククラウド、プライベートクラウド、または専用クラウドであってもよい。クラウドコンピューティングプラットフォーム２００はまた、その中で例示されたコンポーネントのいずれか単一のコンポーネントまたは組み合わせに関連するいかなる依存性または要件を有するものとしても解釈されるべきではない。さらに、図２の様々なブロックは、明確にするために線で示されるが、実際には、様々なコンポーネントを図で表すことはそれほど明確ではなく、比喩的に、これらの線は、より正確には、どちらとも言えないので不明瞭となる。加えて、任意の数の物理マシン、仮想マシン、データセンタ、エンドポイント、またはそれらの組み合わせが、本発明の実施形態の範囲内で所望の機能性を達成するために用いられてもよい。
【００２７】
クラウドコンピューティングプラットフォーム２００は、サービスアプリケーションおよび他のソフトウェアをホストするためのノード（例えば、ノード２１１、２１２および２１３）を備える、１つまたは複数のデータセンタ（例えば、データセンタ２０１）を含んでもよい。本発明の実施形態によって、ノード２１１、２１２および２１３は、任意の形式のコンピューティングデバイスを表し、例えば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、消費者向け電子デバイス、サーバ（複数可）、図１のコンピューティングデバイス１００、その他などである。ある場合には、ノード２１１、２１２および２１３は、データセンタ２０１の他のテナントをサポートするために切り出された他の仮想マシンを同時にホストしながら、ネットワークアダプタ２４０、２５０および２６１〜２６５をホストし、それらの動作をサポートする。本明細書で使用されるとき、「テナント」という用語は一般に、クラウドコンピューティングプラットフォーム２００の顧客によって所有されたサービスアプリケーションを指す。
【００２８】
一態様では、ネットワークアダプタ２４０、２５０および２６１〜２６５は、クラウドコンピューティングプラットフォーム２００との関連において動作し、したがって、ネットワークアダプタ２４０、２５０および２６１〜２６５の間で動的に行われた接続を通じて内部で通信し、物理的ネットワークトポロジを通じてリモートネットワークのリソース（例えば、エンタープライズプライベートネットワーク６９５のリソース６９６）へと外部で通信する。内部接続は、ネットワーク２０５を介して、データセンタ２０１の物理的リソースに渡って分散されたネットワークアダプタ２４０、２５０および２６１〜２６５を相互接続することを含んでもよい。ネットワーク２０５は、これらのリソースを相互接続して、発信元ネットワークアダプタ２５０が宛先ネットワークアダプタ２４０の場所および他のネットワークアダプタを、それらの間の通信を確立するために認識できるようにする。もう１つの実施形態では、ネットワーク２０５はリソースを相互接続して、宛先ＶＭスイッチ２２１へアドレス指定され、かつ、ネットワーク２０５へ送信されたデータのパケットが、ネットワーク２０５によって宛先ＶＭスイッチ２２１へ配信されるようにする。加えて、ネットワーク２０５は、サービスアプリケーション（複数可）のネットワークアダプタを接続するチャネル（例えば、セキュアトンネル２０６）を介して、この通信を確立してもよい。例として、チャネルには、限定なしに、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）が含まれてもよい。そのようなネットワーキング環境は、オフィス、エンタープライズ全体のコンピュータネットワーク、イントラネットおよびインターネットで通常である。したがって、ネットワークについては、本明細書でさらに説明しない。
【００２９】
クラウドコンピューティングプラットフォーム２００は、第１のサービスアプリケーションのネットワークアダプタ２４０、２６２、２６３および２５０（太線のブロックによって表される）、ならびに、第２のサービスアプリケーションのネットワークアダプタ２６１、２６４および２６５（細線のブロックによって表される）をホストし、それらの動作をサポートするように構成された、データセンタ２０１を含む。「サービスアプリケーション」という句は、本明細書で使用されるとき、データセンタ２０１、クラウドコンピューティングプラットフォーム２００内の別のデータセンタ（例えば、図６の第２のデータセンタ６７０）、顧客の社内に位置するエンタープライズプライベートネットワーク内のリソース（例えば、図６のエンタープライズプライベートネットワーク６９５のリソース６９６）、および／または、サードパーティネットワーク内のリソース（例えば、図６のサードパーティデータセンタ６８５）における、保存場所上で実行し、または、保存場所にアクセスする、任意のソフトウェアまたはソフトウェアの部分を広く指す。一実施形態では、ネットワークアダプタ２４０、２５０および２６１〜２６５のうち１つまたは複数は、ソフトウェア、コンポーネントプログラム、または、サービスアプリケーション（複数可）に参加する役割のインスタンスの部分を表してもよい。もう１つの実施形態では、ネットワークアダプタ２４０、２５０および２６１〜２６５のうち１つまたは複数は、サービスアプリケーションにとってアクセス可能である記憶データを表してもよい。図２に示されたネットワークアダプタ２４０、２５０および２６１〜２６５は、サービスアプリケーションをサポートするための適切な部分の一例でしかなく、本発明の実施形態の使用または機能性の範囲についてのいかなる限定を示唆するようにも意図されないことは理解されよう。
【００３０】
単一のデータセンタ２０１内の３つのノード２１１、２１２および２１３に渡って分散された２つのサービスアプリケーションを説明したが、様々なデータセンタまたは他の適切なデバイス内の任意の数のノード上に存在する任意の数のサービスアプリケーションが使用されてもよいこと、ならびに、本発明の実施形態は、本明細書に記載されたそれらのノード、サービスアプリケーション、および、データセンタ（複数可）に限定されないことを理解されたい。さらに、任意の数のネットワークアダプタがノード内でインスタンス化され、かつ／または、サービスアプリケーション（複数可）に割り振られてもよく、図２に例示されたネットワークアダプタ２４０、２５０および２６１〜２６５は、説明のためにのみ示される。
【００３１】
一般に、ネットワークアダプタ２４０、２５０および２６１〜２６５は、サービスアプリケーション（複数可）に課された需要（例えば、処理負荷の量）に部分的に基づいて、それらのネットワークアダプタをＶネット（複数可）のメンバとして結合することによって、サービスアプリケーション（複数可）に割り振られる。本明細書で使用されるとき、「ネットワークアダプタ」という句は、限定となるように意図されず、任意のソフトウェア、アプリケーション、オペレーティングシステム、仮想マシンのコンポーネント、または、サービスアプリケーション（複数可）の機能性の基礎となるように処理ユニットによって実行されるプログラムを指すことがある。さらに、ネットワークアダプタ２４０、２５０および２６１〜２６５は、少なくとも、第１のサービスアプリケーションおよび第２のサービスアプリケーションを適切にサポートするために、データセンタ２０１内の処理能力、保存場所および他の資産を含んでもよい。
【００３２】
例示的実施形態では、いくつかのネットワークアダプタ２４０、２５０および２６１〜２６５が、グループまたはＶネット内で共に結合されて、部分的にデータセンタ２０１内で実行するサービスアプリケーションによって行われる動作の、基になるサポートが提供される。例として、宛先ネットワークアダプタ２４０、発信元ネットワークアダプタ２５０、ネットワークアダプタ２  ２６２、および、ネットワークアダプタ３  ２６３は、第１のサービスアプリケーションの動作をサポートする第１のＶネットのメンバとして共に結合されてもよい。同様に、ネットワークアダプタ１  ２６１、ネットワークアダプタ４  ２６４、および、ネットワークアダプタ５  ２６５は、第２のサービスアプリケーションの動作をサポートする第２のＶネットのメンバとして共に結合されてもよい。本明細書で使用されるとき、「仮想ネットワーク」または「Ｖネット」という句は、限定となるように意図されず、サービスアプリケーションがデータセンタ２０１内で、またはその外部で実行できるようにする、リソース（例えば、仮想マシンおよび／または物理マシン上で実行するネットワークアダプタ）の任意のグループを含んでもよい。
【００３３】
場合によっては、Ｖネットは、ネットワーク２０５内の他のリソースから分離され、かつ、それに関連付けられた通信ポリシーに基づいて、Ｖネットローカルブロードキャストドメイン内のデータパケットのフローを制御するように機能する、ネットワークアダプタなど、レイヤ２リソースのグループを表す。他の場合では、Ｖネットは、仮想ローカルエリアネットワーク（ＶＬＡＮ）、仮想ＶＬＡＮ、真のＶＬＡＮ、またはそれらの任意の組み合わせを表してもよい。より十分に後述するように、通信ポリシーは、ディレクトリサーバ２２０の助けを介して実施される。したがって、Ｖネットは、クラウドコンピューティングプラットフォーム２００内のリソースを同時に利用する他のテナントおよび／または顧客のサービスアプリケーションから、それらのメンバを分離しながら、それらのメンバ間の到達可能性を可能にする。
【００３４】
すなわち、Ｖネットのメンバマシンは、ネットワーク２０５内のそれらの物理的場所にかかわらず、ネットワークデバイス構成なしに、または、名前空間に基づいた制限をスケーラビリティに課すことなしに、他のメンバマシンによって直接到達可能である。ある場合には、エンドホスト（例えば、ノード２１１、２１２および２１３）内で使用可能な、技術的プリミティブ（例えば、ＶＭスイッチ２２１、２２２および２２３）を、従来の、または新しいネットワーク内にインストールして、Ｖネットのメンバを直接相互接続することができる。この役割では、ＶＭスイッチは、発信元ネットワークアダプタ２５０で生成されたデータパケットをカプセル化して、宛先側ＶＭスイッチ２２１のロケータを追加のヘッダ内に含めるように構成されてもよい。このように、カプセル化は、データパケットを、宛先ネットワークアダプタ２４０が存在する第１のノード２１１へ、標準セキュリティ手段を通じてさらにセキュリティで保護されうるトンネル２０６を介して、直接ルーティングできるようにする。
【００３５】
例示的実施形態では、Ｖネットは、物理的ルータなど、基になるネットワーキングプロトコルおよびネットワーキングデバイスに無関係である、ソフトウェアベースのコンポーネント（例えば、共通または異なるネットワークアダプタ上に存在するネットワークアダプタ）からなる。したがって、Ｖネットを、あらゆる既存または新しいネットワーク上で用いることもできる。さらに、Ｖネットは、メンバマシンのそのポピュレーションに関して無限の、事実上、制限のないサイズにまで成長することができ、その理由は、より十分に後述するように、メンバマシンの間で送信された通信がＶＭスイッチに再アドレス指定されるからである。このように、以前の名前空間制限が上げられ、あるテナントによって設定されたＩＰアドレス空間は、他のテナントに割り振られたマシン間の通信を妨げないようになる。さらに、サービスアプリケーションによって規定された任意の名前付け規則が使用されてもよく、その理由は、ネットワーク２０５を介してデータパケットをルーティングするために使用される、ＶＭスイッチ２２１、２２２および２２３のロケータが、ファブリックコントローラ２０２によって制御されるからである。したがって、異なるＶネット内のネットワークアダプタの、ＩＰアドレスなど、割り当てられた識別子は、データセンタ２０１内で重複してもよい。
【００３６】
例として、宛先ネットワークアダプタ２４０にはＩＰアドレス１０．０．０．１が割り当てられるが、ネットワークアダプタ５  ２６５にもまた、ＩＰアドレス１０．０．０．１が割り当てられる。従来、これらのネットワークアダプタ２４０および２６５は共に同じデータセンタ２０１内に存在するので、この重複は、データパケットが相互のＩＰアドレス１０．０．０．１にアドレス指定されるとき、どこにルーティングされるかについて、混乱を引き起こすことになる。しかし、宛先ネットワークアダプタ２４０（太線のブロック）は、第１のサービスアプリケーションに関連付けられたＶネットに結合されるので、かつ、ネットワークアダプタ５  ２６５（細線のブロック）は、第２のサービスアプリケーションに関連付けられたＶネットに結合されるので、ディレクトリサーバ２２０は、ＶＭスイッチ２２１、２２２および２２３のうち１つまたは複数と共に、データパケットを適切なネットワークアダプタへナビゲートすることができる。
【００３７】
リソースは、様々な方法でＶネットに割り当てられてもよい。ある場合には、データセンタ２０１のアーキテクチャは、管理システム（例えば、ファブリックコントローラ２０２）、または、クラウドコンピューティングプラットフォーム２００の管理者が、分離グループ（例えば、計算／ストレージマシンの保護されたプール）を構築できるようにする。例として、ファブリックコントローラ２０２は、データセンタ２０１内で実行する新しいサービスアプリケーションの出現を検出すると、メンバリソースおよび／またはマシンのグループをアセンブルすることによって、Ｖネットを確立してもよい。加えて、ファブリックコントローラ２０２は、サービスアプリケーションのリソース使用の増大または減少を検出すると、Ｖネットのメンバシップを継続的に更新してもよい。増大が検出されるとき、ファブリックコントローラ２０２は、ノード２１１、２１２または２１３のうち１つにおけるネットワークアダプタをインスタンス化してもよい。
【００３８】
または、ファブリックコントローラ２０２は、現在既存のネットワークアダプタ２４０、２５０、２６１、２６２、２６３、２６４または２６５のうち１つを再割り振りしてもよい。例として、ファブリックコントローラ２０２は、既存のデータセンタにアクセスし、かつ、その中の任意の既存のネットワーキングデバイスを再プログラミングして、ネットワークアダプタをホストしてもよく、このように、Ｖネット内のネットワークアダプタのグループ化は、ネットワークトポロジ不可知論的（network-topology agnostic）である。この場合、現在既存のネットワークアダプタ２４０、２５０および２６１〜２６５には、ファブリックコントローラ２０２またはテナントによって割り当てられたＩＰアドレスが提供されてもよい。テナントによって割り当てられるとき、ＩＰアドレス（例えば、テナントによって設定された、レイヤ３のＩＰアドレス）は、共有された、基になる物理ネットワークに関係するトポロジ的重要性を有していない、フラットな、顧客固有の名前であってもよい。
【００３９】
ネットワークアダプタ（複数可）がサービスアプリケーションに割り振られた後、ネットワークアダプタ（複数可）は、サービスアプリケーションに関連付けられたＶネットにバインドされた、メンバネットワークアダプタのグループに結合される。この新しいメンバシップは、ファブリックコントローラ２０２が、結合されたネットワークアダプタのＩＰおよび／またはＭＡＣアドレスをディレクトリサーバ２２０に通信すると、記録される。より十分に後述するように、ディレクトリサーバ２２０は、Ｖネットおよび／またはサービスアプリケーションに関連して、新たに結合されたネットワークアダプタのＩＰおよび／またはＭＡＣアドレスを保存するように構成される。このように、サービスアプリケーションの通信ポリシーは、ディレクトリサーバ２２０によって、新たに結合されたネットワークアダプタ上で実施される。複数の実施形態では、ディレクトリサーバ２２０は、新たに結合されたネットワークアダプタがＶネット内でデータパケットの送信を試行すると、または、別のネットワークアダプタが、新たに結合されたネットワークアダプタへの通信の送信を試行すると、通信ポリシーを実施してもよい。
【００４０】
上述のように、本発明の実施形態は、クラウドコンピューティングプラットフォーム２００内で実行する顧客のサービスアプリケーションの整合性を保護する問題に対処する、到達可能性−分離機構を導入する。この保護の問題には、サービスアプリケーション（複数可）に割り振られたリソース（例えば、物理マシンおよび／または仮想マシン上で実行するネットワークアダプタ）をデータセンタ２０１内の他のリソースから仮想的にパーティション分割しながら、割り振られたリソース間で分離された通信を実装することによって対処される。分離された通信を達成するため、複数の実施形態では、到達可能性−分離機構は、協力して動作する２つの異なる技術、すなわち、ＶＭスイッチ２２１、２２２および２２３、ならびに、ディレクトリサーバ２２０によってサポートされる。
【００４１】
ＶＭスイッチ２２１、２２２および２２３は、複数の実施形態では、図６を参照してより十分に論じるように、データセンタ２０１内、または、データセンタ２０１を超えて、マシン間で分離された接続性を提供するように設けられる。本明細書で使用されるとき、「仮想マシンスイッチ」または「ＶＭスイッチ」という句は、限定となるように意図されず、データセンタ、エンタープライズプライベートネットワーク、サードパーティネットワークなどの中に存在し、かつ、Ｖネットのメンバ間でネットワークを介してデータパケットを安全にルーティングすることを担う、任意のソフトウェアベースのコンポーネントを包含してもよい。例として、ＶＭスイッチは、ネットワーク管理のためのいくつかのアプリケーションプログラミングインターフェイス（ＡＰＩ）を公開する、任意のネットワークエッジデバイス（複数可）（例えば、トップラックスイッチ（top rack switches）、ノード内の物理ネットワークインターフェイスカード、ＶＭ内の仮想インターフェイスカード、または、仮想化されていないホスト内のネットワーキングスタック）であってもよい。他の例では、ＶＭスイッチによって実行された動作（例えば、ディレクトリサーバ２２０との通信、カプセル化、カプセル化解除、パケットの修正、および、Ｖネットに結合されたネットワークアダプタの到達可能性分離に寄与する他のアクション）の全部または一部は、Ｖネットルーティングモジュールによって行われてもよい。したがって、「ＶＭスイッチ」という句の使用は、Ｖ−新しいルーティングモジュール（複数可）、ネットワークエッジデバイス（複数可）、物理的スイッチ（複数可）、ルーティングデバイス（複数可）などのうち、１つまたは複数を広く指すように意図される。
【００４２】
複数の実施形態では、ルーティングの処理は、少なくとも、データパケットの送信の試行を検出すること、解決処理を行って、データパケットの宛先に対応する、転送テーブル（例えば、図５の転送テーブル５１０および５２０）内にリストされたＶＭスイッチを発見すること、データパケットをカプセル化して、拡張ヘッダ内にＶＭスイッチロケータを含めること、および、カプセル化されたデータパケットを、ネットワーク２０５を介して送信することを含む。したがって、カプセル化されたデータパケットは、分離された方法でネットワーク２０５をトラバースし、表面上は、データパケットの所期の宛先（例えば、宛先ネットワークアダプタ２４０）をホストする同じノード（例えば、第１のノード２１１）上に存在する受信側ＶＭスイッチ（例えば、宛先側ＶＭスイッチ２２１）へデータパケットを直接搬送する、トンネル２０６を形成する。さらに、トンネルは、標準暗号セキュリティ手段を通じて、独立してセキュリティで保護されてもよい。複数の実施形態では、受信側ＶＭスイッチは、ヘッダをそれらの元のフォーマットに復元すること（すなわち、ＶＭスイッチロケータを保持するフレームを、拡張ヘッダから除去すること）によって、データパケットをカプセル化解除すること、および、データパケットを適切な宛先ネットワークアダプタに配布することを担う。
【００４３】
例示的実施形態では、ＶＭスイッチ２２１、２２２および２２３の各々は、個々のノード上にそれぞれインストールされ、データパケットをそれらの個々のノード内で受信かつカプセル化することを担う。さらに、ＶＭスイッチ２２１、２２２および２２３は、データパケットをカプセル化解除し、それらの個々のノード上に存在するネットワークアダプタに配布することを担う。図２に例示するように、宛先側ＶＭスイッチ２２１は第１のノード２１１上にインストールされ、ＶＭスイッチ２２２は第３のノード２１３上にインストールされ、ソース側ＶＭスイッチ２２３は第２のノード２１２上にインストールされる。ある場合には、ソース側ＶＭスイッチ２２３は、発信元ネットワークアダプタ２５０、ネットワークアダプタ５  ２６５、および、第２のノード２１２上に位置する任意の他のネットワークアダプタから送信された、データパケットを受信かつカプセル化することを担う。別の場合には、宛先側ＶＭスイッチ２２１は、宛先ネットワークアダプタ２４０、ネットワークアダプタ１  ２６１、ネットワークアダプタ２  ２６２、および、第１のノード２１１上に位置する任意の他のネットワークアダプタへ向けられた、データパケットをカプセル化解除かつ配布することを担う。
【００４４】
ＶＭスイッチは、ＩＰトラフィックのレート、データセンタ２０１のテナントによって消費された計算負荷、および、ノードがオンラインにされているか、オフラインにされているかなど、１つまたは複数の要因に応じて、データセンタ２０１内のノード上で動的にインスタンス化され、または、そこから切り離されてもよい。一実施形態では、ファブリックコントローラ２０２は、ＶＭスイッチをインスタンス化または切り離すことを担う。加えて、ファブリックコントローラ２０２はまた、ロケータを新しい、または現在動作中のＶＭスイッチに割り当てることを担うこともできる。これらのロケータには、重複するＶＭスイッチロケータを防ぐために、一意の、レイヤ２のメディアアクセス制御（ＭＡＣ）アドレス、イーサネット（登録商標）アドレス、および／または、データセンタ全体の名前付けスキームに準拠する、インターネット層（レイヤ３）のＩＰアドレスが含まれてもよい。他の実施形態では、ネットワーク管理者など、クラウドコンピューティングプラットフォーム２００内の別の機関が、ロケータまたは他の識別子をＶＭスイッチに割り当ててもよい。ロケータをＶＭスイッチ（複数可）に割り当てると、ファブリックコントローラ２０２または管理者は、ロケータをディレクトリサーバ２２０に通信することを担うことができ、ディレクトリサーバ２２０は、ＶＭスイッチロケータと共に転送テーブルを保存または更新するように構成される。
【００４５】
ネットワーク内でデータパケットを向かわせる従来の物理的機構（例えば、ルータおよびハードウェアベースのスイッチ）は、新しい仮想マシンがデータセンタに追加されると、ネットワークデバイスの各々を個々に再プログラミングする結果として生じる、エラーが発生しやすい再構成の問題を欠点として有する。さらに、これらの物理的機構は本質的に、データセンタ内で確立されうる同時のローカルネットワークの数を制限し、また、データセンタを通じて形成されうるブリッジの数を制限し、結果として、スケーラビリティが不十分になる。さらに、これらの物理的機構は、レイヤ２ドメインを超えて拡張することはできず、それにより、データセンタを超えたシームレスな接続性を提供することができない。これらの問題のすべては、データセンタ２０１内でソフトウェアベースのＶＭスイッチ２２１、２２２および２２３を用いることによって解決され、その理由は、ＶＭスイッチ２２１、２２２および２２３が動的にインスタンス化かつ切り離されて、ネットワークデバイスの再構成または新しいハードウェアの追加をすることなく、データセンタ２０１内で実行するテナントの需要が満たされうるからである。
【００４６】
複数の実施形態では、ディレクトリサーバ２２０は、どのネットワークアダプタがどのテナントに、よって、どのＶネットに属するかの記録を提供する、転送テーブルを維持するように構成される。上述のように、ファブリックコントローラ２０２が用いられて、Ｖネットのメンバ間の現在のＩＰアドレス関連付け、ならびに、ＶネットメンバおよびＶＭスイッチのノード場所間の関連付け（例えば、各ネットワークアダプタがデータセンタ２０１内でファブリックコントローラ２０２によってどこに物理的に位置付けられるか、および、特定のＶネット内のネットワークアダプタ間で実施されるべきであるネットワークトラフィックの通信ポリシー）により、ディレクトリサーバ２２０へ更新が送信されてもよい。この記録に基づいて、ディレクトリサーバ２２０は、どのネットワークアダプタが他のネットワークアダプタと通信できるようにされるかを制限する、通信ポリシーを実施することができる。ディレクトリサーバ２２０は、ネットワークデバイス構成、収束の遅延、または伝搬待ち時間なしに、Ｖネット（複数可）の新しいメンバを、インスタンス化に伴い使用可能として公開できるようにすると有利である。すなわち、従来の物理デバイスはルーティング制御プラン内でリストされ、ルーティング制御プランは、データパケットをどのようにルーティングするかを物理デバイスが理解するために、サービスアプリケーションに更新があると、あらゆる中間スイッチングハブに変換され、構成され、プログラムされる。ディレクトリサーバ２２０は、動的に更新される転送テーブルを、ＶＭスイッチによってアクセス可能である特定の場所で提供することによって、これらの問題を改善する。
【００４７】
例示的実施形態では、転送テーブルは、ネットワーク到達可能性を達成するために、相互接続されたネットワークアダプタ間の１つまたは複数の論理的関連付けを維持し、ネットワークアダプタに関連付けられたアクセス制御を実施する。ある場合には、論理的関連付けは、Ｖネットのメンバ間の関連付けに関係する。例として、図５を参照すると、転送テーブル５１０は、第１のサービスアプリケーションのメンバネットワークアダプタ間の論理的関連付けを含むが、転送テーブル５２０は、第２のサービスアプリケーションのメンバネットワークアダプタ間の論理的関連付けを含む。特に、転送テーブル５１０は、宛先ネットワークアダプタ２４０（ＩＰアドレス１０．０．０．１およびＭＡＣアドレスＭＡＣ−Ｏ）、ネットワークアダプタ２  ２６２（ＩＰアドレス１０．０．０．４およびＭＡＣアドレスＭＡＣ−Ｐ）、ネットワークアダプタ３  ２６３（ＩＰアドレス１０．０．０．６およびＭＡＣアドレスＭＡＣ−Ｑ）、ならびに、発信元ネットワークアダプタ２５０（ＩＰアドレス１０．０．０．７およびＭＡＣアドレスＭＡＣ−Ｒ）の識別子をリストする。さらに、転送テーブル５１０は、宛先ネットワークアダプタ２４０（ＩＰアドレス２０．１．１．２を有する宛先側ＶＭスイッチ２２１）、ネットワークアダプタ２  ２６２（ＩＰアドレス２０．１．１．２を有する宛先側ＶＭスイッチ２２１）、ネットワークアダプタ３  ２６３（ＩＰアドレス２０．１．３．２を有するＶＭスイッチ２２２）、および、発信元ネットワークアダプタ２５０（ＩＰアドレス２０．１．５．２を有するソース側ＶＭスイッチ２２３）と同じノード上に位置するＶＭスイッチのロケータ（例えば、ＩＰアドレス）をリストする。
【００４８】
実質的に類似の方法で、転送テーブル５２０は、ネットワークアダプタ５  ２６５（ＩＰアドレス１０．０．０．１およびＭＡＣアドレスＭＡＣ−Ｃ）、ネットワークアダプタ１  ２６１（ＩＰアドレス１０．０．０．７およびＭＡＣアドレスＭＡＣ−Ａ）、ならびに、ネットワークアダプタ４  ２６４（ＩＰアドレス１０．０．０．９およびＭＡＣアドレスＭＡＣ−Ｂ）の識別子をリストする。さらに、転送テーブル５２０は、ネットワークアダプタ５  ２６５（ＩＰアドレス２０．１．５．２を有するソース側ＶＭスイッチ２２３）、ネットワークアダプタ１  ２６１（ＩＰアドレス２０．１．１．２を有する宛先側ＶＭスイッチ２２１）、および、ネットワークアダプタ４  ２６４（ＩＰアドレス２０．１．３．２を有するＶＭスイッチ２２２）と同じノード上に位置するＶＭスイッチのロケータ（例えば、ＩＰアドレス）をリストする。したがって、ディレクトリサーバ２２０にクエリを行うことによって、ＶＭスイッチは、（例えば、通信ポリシーを実施するために）データパケットのストリームのターゲットがそのデータパケットストリームのソースと同じＶネット内にあるかどうか、および、（例えば、データパケットストリームを再アドレス指定またはカプセル化して、ＶＭスイッチに直接到達するために）何のＶＭスイッチがデータパケットストリームのターゲットと同じノード上に位置するかを、決定することができる。
【００４９】
上述のように、ディレクトリサーバ２２０は、転送テーブル５１０および５２０を用いて、通信ポリシーを実施し、通信ポリシーは典型的には、サービスレベルアグリーメントを経てテナントによって適所に設定される。ある場合には、通信ポリシーは、サービスアプリケーションおよび／またはＶネットに対して特に設計され、どのシステム処理がＶネットのメンバへのアクセスを許可されるかを管理する、許可のリストを含んでもよい。もう１つの実施形態では、通信ポリシーは、何の動作をこれらのメンバ上で行うことができるかを表してもよい。別の場合には、通信ポリシーは、Ｖネットメンバ上の動作を求める要求を受信すると、適用可能なエントリを求めて転送テーブル（複数可）をスキャンするセキュリティモデルとしての機能を果たし、要求された動作が認可されるかどうかを、適用可能なエントリ内の情報に基づいて判定する。さらにもう１つの場合には、通信ポリシーは、ポート番号またはネットワークアダプタに適用されたルールを表してもよく、これらのルールは、そのポート番号またはネットワークアダプタがある動作を行う（例えば、着信および発信ネットワークトラフィックを共に可能にする）ことを許可されるかどうかを確かめるために、ノードまたはデータセンタ内で使用可能である。
【００５０】
例示的動作では、ネットワークアダプタ２４０、２５０、２６２および２６３は、第１のサービスアプリケーションに割り振られる（例えば、第１のサービスアプリケーションによって課された現在の処理負荷を満たすために）。上述のように、ファブリックコントローラ２０２は、ネットワークアダプタ２４０、２５０、２６２および２６３をデータセンタ２２５内で動的に割り振ることを担うことができる。例として、ファブリックコントローラ２０２は、サービスモデル（例えば、サービスアプリケーションを所有する顧客によって設計される）に依拠して、どのように、いつ、ネットワークアダプタ２４０、２５０、２６２および２６３を割り振るべきであるかについてのガイダンスを提供してもよい。
【００５１】
第１のサービスアプリケーションの動作の一部として、発信元ネットワークアダプタ２５０は、データパケット２６０を、第１のサービスアプリケーションに関連付けられたＶネットのメンバである別のネットワークアダプタ（例えば、宛先ネットワークアダプタ２４０）に送信することを試行してもよい。この場合、発信元ネットワークアダプタ２５０には、宛先ネットワークアダプタ２４０のターゲット識別子またはターゲットＩＰアドレス２４２（１０．０．０．１）が提供される。ターゲットＩＰアドレス２４２を使用して、発信元ネットワークアダプタ２５０は、宛先ネットワークアダプタ２４０のターゲットＭＡＣアドレス２４１（ＭＡＣ−Ｏ）を取得するための要求を送信することができる。ターゲットＭＡＣアドレス２４１を獲得すると、発信元ネットワークアダプタ２５０は、ターゲット２６０のヘッダに、ターゲットＭＡＣアドレス２４１およびターゲットＩＰアドレス２４２を設定して（ターゲットＭＡＣアドレス２４１およびターゲットＩＰアドレス２４２により、データパケット２６０のヘッダをポピュレートして）、ターゲット識別子を形成することができる。さらに、ソースＭＡＣアドレス２５１（ＭＡＣ−Ｒ）および／またはソースＩＰアドレス２５２（１０．０．０．７）など、ソース識別子が発信元ネットワークアダプタ２５０に割り当てられ、かつ、発信元ネットワークアダプタ２５０によって知られてもよく、ヘッダに設定されてもよい（ヘッダにポピュレートされてもよい）。
【００５２】
図３を参照すると、本発明の一実施形態による、発信元ネットワークアダプタ２５０から送信されたような、カプセル化されていない状態である、データパケット２６０の例示的構造の概略描写が示される。例示したように、データパケット２６０は、ボディ３３０およびヘッダ３００により構築される。ボディ３３０は、ペイロード（例えば、データ）を搬送するように構成されるが、ヘッダ３００は、フレーム３１０および３２０により、ペイロードの宛先を示すように構成される。複数の実施形態では、フレーム３１０は、ソースＭＡＣアドレスおよび宛先ＭＡＣアドレスを含むが、フレーム３２０は、ソースＩＰアドレスおよび宛先ＩＰアドレスを含む。
【００５３】
図２に戻ると、データパケット２６０を送信すると、ソース側ＶＭスイッチ２２３は、ソース側ＶＭスイッチ２２３および発信元ネットワークアダプタ２５０が共に存在するノード（例えば、第２のノード２１２）から出るより前に、データパケット２６０を検出かつインターセプトする。データパケット２６０を保持した後、ソース側ＶＭスイッチ２２３は、解決処理を行って、宛先ネットワークアダプタ２４０と同じノード（例えば、第１のノード２１１）上に存在するＶＭスイッチ（例えば、宛先側ＶＭスイッチ２２１）のロケータを決定することができる。一実施形態では、解決処理は、第２のノード２１２上でホストされる、第１のサービスアプリケーションに関連付けられた転送テーブル５１０のインデックスまたは一部分を評価することを含む。ある場合には、このインデックスは、ソース側ＶＭスイッチ２２３がディレクトリサーバ２２０から予め取得している宛先ネットワークアダプタに対応する他のＶＭスイッチのロケータを書き込んでキャッシュすることによって、ソース側ＶＭスイッチ２２３によって生成されてもよい。または、別の場合には、１つまたは複数のＶＭスイッチおよびそれらの対応する宛先ネットワークアダプタのロケータを通信すると、インデックスがファブリックコントローラ２０２によって生成されてもよい。
【００５４】
ソース側ＶＭスイッチ２２３のローカルのインデックスへのアクセスに伴い、ソース側ＶＭスイッチ２２３は、インデックスを検査して、データパケット２６０のヘッダ内で設定された情報（データパケット２６０のヘッダ内でポピュレートされた情報）に対応するＶＭスイッチ（例えば、宛先側ＶＭスイッチ）のロケータを決定することができる。この決定は、ターゲット識別子（例えば、ＩＰアドレス２４２および／またはターゲットＭＡＣアドレス２４１）を、インデックス内のエントリに対して比較して、適切なＶＭスイッチロケータを発見することによって、行われてもよい。適切なＶＭスイッチロケータが決定されるとき、ロケータは、データパケット２６０のヘッダに添付されるフレームに挿入されて、拡張ヘッダが作成される。
【００５５】
図４を参照すると、本発明の一実施形態による、ソース側ＶＭスイッチ２２３によってカプセル化されるデータパケット２８０の例示的構造の概略描写が示される。このカプセル化されたデータパケット２８０は、ボディ４２０および拡張ヘッダ４００により構築される。データパケット２６０と同様に、カプセル化されたデータパケット２８０は、ペイロードをボディ４２０内で保存することができる。拡張ヘッダ４００は、フレーム３１０、３２０および４１０により、ペイロードの宛先のローカルであるＶＭスイッチを示すように構成される。複数の実施形態では、図３のデータパケット２６０のヘッダ３００と同様に、フレーム３１０は、ソースＭＡＣアドレスおよび宛先ＭＡＣアドレスを含むが、フレーム３２０は、ソースＩＰアドレスおよび宛先ＩＰアドレスを含む。フレーム４１０は、ソース側ＶＭスイッチ２２３、および、インデックスから決定された宛先側ＶＭスイッチ２２１のロケータ（例えば、ＩＰアドレス）が設定される（によってポピュレートされる）。したがって、カプセル化されたデータパケット２８０は、セキュアトンネル２０６を介して、直接、宛先ネットワークアダプタ２４０が存在する適切なノード（例えば、第１のノード２１１）まで、ネットワーク２０５をトラバースするようにアドレス指定される。
【００５６】
第２のノード２１２上でホストされたインデックスが不完全であるか、または、ソース側ＶＭスイッチ２２３での受信時にデータパケット２６０のブロードキャストを管理するために適切なルーティング−レポート情報が欠けている場合、ソース側ＶＭスイッチ２２３は、ディレクトリサーバ２２０と通信して、宛先ネットワークアダプタ２４０のローカルのＶＭスイッチ（例えば、宛先側ＶＭスイッチ２２１）のロケータを取得することができる。例として、ディレクトリサーバ２２０と通信して、宛先側ＶＭスイッチロケータを導出することは、ターゲット識別子（例えば、ＩＰアドレス２４２、ターゲットＭＡＣアドレス２４１、または両方）を含む要求メッセージ２７５を、ディレクトリサーバ２２０へ送信することによって、ディレクトリサーバ２２０内で維持される転送テーブル（例えば、第１のサービスアプリケーションに関連付けられる、図５の転送テーブル５１０）にアクセスすることを含んでもよい。このターゲット識別子およびアドレス（複数可）は、データパケット２６０のヘッダから抽出され、要求メッセージ２７５のボディにコンテンツとして組み込まれてもよい。
【００５７】
ディレクトリサーバ２２０は、要求メッセージ２７５のこれらのコンテンツを転送テーブル５１０に適用して、適切な識別子および／またはロケータを決定することができる。上述のように、転送テーブル５１０は、第１のサービスアプリケーションに割り振られた複数のＶネットメンバと、データセンタ２０１内のそれぞれのノード上にそれぞれ位置するＶＭスイッチとの間のマッピングを表す。場合によっては、マッピングは、複数のメンバ間のデータパケットトラフィックを管理する通信ポリシーに従って設計される。例として、図５の転送テーブル５１０を参照すると、要求メッセージ２７５内でパッケージ化されたコンテンツには、発信元ネットワークアダプタ２５０のネットワーク層（レイヤ３）のソースＩＰアドレス２５２（１０．０．０．７）、および／または、データリンク層（レイヤ２）のソースＭＡＣアドレス２５１（ＭＡＣ−Ｒ）が含まれうる。さらに、要求メッセージ２７５のコンテンツには、宛先ネットワークアダプタ２４０のターゲット識別子−ネットワーク層のターゲットＩＰアドレス２４２（１０．０．０．１）、および／または、データリンク層のターゲットＭＡＣアドレス２４１（ＭＡＣ−Ｏ）−が含まれうる。
【００５８】
ターゲット識別子（例えば、ターゲットＩＰアドレス２４２および／またはターゲットＭＡＣアドレス２４１）を利用して、ディレクトリサーバ２２０は、少なくとも以下の手順を行うように構成され、すなわち、データパケット２６０のソースまたはターゲットをメンバとして含むＶネットに関連付けられた、適切な転送テーブル５１０を発見すること、ターゲット識別子（ターゲットＩＰアドレス２４２および／またはターゲットＭＡＣアドレス２４１）により、転送テーブル５１０をスキャンして、マッチするエントリまたはリスティングを発見すること、ならびに、マッチするエントリまたはリスティング内のＶＭスイッチのロケータ２３１を読み取ることである。例示したように、マッチするリスティングは、ロケータ２３１（ＩＰアドレス２０．１．１．２）によって表されたＶＭスイッチロケータを含む。このマッチするロケータ２３１は、返信メッセージ２７０、または、当技術分野で知られている任意の他の形式の通信を介して、ソース側ＶＭスイッチ２２３へ返されてもよい。
【００５９】
もう１つの実施形態では、ディレクトリサービスは、マッチするエントリを求める要求の受信を待機しなくてもよい。その代わりに、ディレクトリサービスは、１つまたは複数のエントリをそのテーブルからＶＭスイッチまたは他のコンポーネントへ、それらのエントリが要求される前にプッシュしてもよい。ディレクトリサービスは、プッシュされたエントリを求める要求を行う可能性が最も高いと決定されたそれらのＶＭスイッチまたは他のコンポーネントへ、エントリをプッシュすることを選択してもよい。例えば、ディレクトリサービスは、Ｖネットのためのエントリを、ＶネットのメンバをホストするＶＭスイッチにプッシュしてもよい。他の実施形態では、ファブリックコントローラなど、もう１つのコンポーネントがエントリをプッシュしてもよい。もう１つの実施形態では、エントリ自体が、潜在的には、エントリ内で参照されたもう１つのＶＭが作成される前に、通信ポリシーに基づいて生成されてもよい。
【００６０】
ディレクトリサーバ２２０が、マッチするロケータ２３１のＩＰアドレス、または、データパケット２６０の通信に関与する他のＩＰアドレスが、ソースＩＰアドレス２５２またはターゲットＩＰアドレス２４２と衝突する（すなわち、データセンタ２０１のアドレス空間内で重複する）と決定する場合、ディレクトリサーバ２２０またはソース側ＶＭスイッチ２２３によってアクションを取り、この問題を解決することができる。これらのアクションには、一時的な識別子または他のＩＰアドレスを、発信元ネットワークアダプタ２５０および宛先ネットワークアダプタ２４０に割り当てること、一時的な識別子を暗号解読する鍵を、保存場所（例えば、ディレクトリサーバ２２０内のテーブル）に書き込むこと、ならびに、データパケット２６０のヘッダに配置された現在の識別子またはＩＰアドレス（複数可）を、一時的な識別子でそれぞれ置き換えることが含まれてもよい。このように、データパケット２６０が第１のノード２１１内のどこに一旦配信されるべきであるかについて、いかなる混乱も排除される。
【００６１】
図２に戻ると、返信メッセージ２７０を介してソース側ＶＭスイッチ２２３でロケータ２３１を取得すると、ソース側ＶＭスイッチ２２３は、他のデータパケット、またはカプセル化されたデータパケット２８０内で、データパケット２６０をカプセル化することができる。これらのカプセル化されたデータパケット２８０は典型的には、ヘッダ内の図３のＶＭスイッチロケータ２３１によりアドレス指定される。上述のように、ＶＭスイッチロケータ２３１は、宛先側ＶＭスイッチ２２１をポイントする。
【００６２】
複数の実施形態では、カプセル化は、データパケットヘッダを再フォーマットかつ修正して、ＶＭスイッチロケータ２３１を含む別のフレーム（例えば、図４の参照番号４１０を参照）を含める行為を指すことがある。または、カプセル化は、元のヘッダを、外側フレーム（図４の参照番号４１０）からなる拡張ヘッダで置き換えることを含むことがある。複数の実施形態では、外側フレームは、ソース側ＶＭスイッチ２２３および宛先側ＶＭスイッチ２２１の識別子（複数可）（例えば、ＩＰアドレスおよび／またはＭＡＣアドレス）を参照してもよい。または、カプセル化は、別のプロトコルヘッダ（例えば、ＩＰまたはイーサネット（登録商標））をデータパケット（複数可）の先頭に追加する行為を示すことがあり、このプロトコルヘッダは、宛先側ＶＭスイッチ２２１および／または宛先ネットワークアダプタ２４０をポイントする。または、カプセル化は一般に、宛先側ＶＭスイッチでデータパケット内の宛先識別子を再書き込みすることを指すことがあるが、カプセル化解除は、ソース側ＶＭスイッチでデータパケットを受信すると、再書き込みされた宛先識別子を復元することを含むことがある。カプセル化を構成する様々な異なる処理、および、カプセル化解除の優待処理を説明したが、データパケットを再アドレス指定または修正することを提供する他のタイプの適切な処理が「カプセル化」に含まれうること、および、本発明の実施形態は、本明細書に記載されたそれらの特定のタイプのカプセル化に限定されないことを理解されたい。
【００６３】
さらに、トンネル２０６（例えば、データセンタ内のトンネル）は、カプセル化されたデータパケット２８０を、ネットワーク２０５を介して保護するように渡すために確立され、セキュリティで保護されてもよい。トンネル２０６のタイプおよび属性は、部分的には、クラウドコンピューティングプラットフォーム２００の顧客と管理者の間のサービス要求契約またはサービスレベルアグリーメント（ＳＬＡ）に基づいてもよい。したがって、顧客が、秘密度の高いミッションクリティカルなデータを作成または伝達中であるとき、セキュアトンネル２０６は、強化された保護手段を含んで、カプセル化されたデータパケット２８０の安全な送信を保証してもよい。
【００６４】
カプセル化されたデータパケット２８０が形成された後、カプセル化されたデータデータパケット２８０を、第２のノード２１２でキャッシュし、かつ／または、第１のノード２１１上に存在する宛先側ＶＭスイッチ２２１へ、セキュアトンネル２０６を介してネットワーク２０５上で送信することができる。ある場合には、ソース側ＶＭスイッチ２２３は、ハブに沿って中間スイッチを介した、カプセル化されたデータパケット２８０のルートの追跡およびスケジューリングを担うことができる。別の場合には、ソース側ＶＭスイッチ２２３は、失われた／遅延されたパケットおよびネットワークの輻輳を補償する信頼性機構を用いる。
【００６５】
ソース側ＶＭスイッチ２２３は、カプセル化されたパケット２８０をカプセル化解除すること、ならびに、元のデータパケット２６０および他の通信を、データセンタ２０１の第１のノード２１１内の宛先ネットワークアダプタ２４０に配布することを担う。複数の実施形態では、宛先側ＶＭスイッチ２２１はまた、ディレクトリサーバ２２０と通信して、その中に保存された通信ポリシーを実施することもできる。例示的実施形態では、宛先側ＶＭスイッチ２２１は、カプセル化されたデータパケット２８０の拡張ヘッダを読み取り、それが適切なＶＭスイッチで受信されたかどうかを認識し、ターゲットおよびソース識別子を読み取り、ターゲット識別子および／またはソース識別子のうち１つまたは複数をディレクトリサーバ２２０へ送信して、その配信が通信ポリシーによって承認されたこと、および、転送テーブルに一致することを決定、確認するようになる。例として、確認は、確認メッセージ２９０をディレクトリサーバ２２０へ送信すること、および、適切な認証された配信が発生したかどうかを通信する返信メッセージ２９５を、ディレクトリサーバ２２０から受信することを含んでもよい。場合によっては、確認メッセージ２９０は、上述の要求メッセージ２７５内で搬送された情報を反映する情報を含んでもよい。
【００６６】
カプセル化解除中に、宛先側ＶＭスイッチ２２１は、カプセル化されたデータパケット２８０内の拡張ヘッダの外側フレーム（図４の参照番号４１０）を廃棄し、ヘッダを元のフォーマットへ復元する。カプセル化解除すると、宛先側ＶＭスイッチ２２１は、復元されたヘッダのコンテンツを使用して、ローカルの転送テーブルを検査し、データパケット２６０を、ヘッダ内のターゲット識別子（アドレス（複数可）２４１および２４２）に関連付けられた適切なネットワークアダプタ（例えば、宛先ネットワークアダプタ２４０）に配布することができる。したがって、データパケット２６０は、さらに、データパケットストリームのフローを減速させることがある余分な安全性チェックなしに、発信元ネットワークアダプタ２５０から宛先ネットワークアダプタ２４０へ、分離された方法で安全に伝達される。
【００６７】
次に図６を参照すると、本発明の一実施形態による、例示的分散コンピューティング環境６００を例示するブロック図が示され、セキュリティで保護されたトンネル６０５が、ゲートウェイ機能性が供給されるＶＭスイッチ６２３および６５１を論理的にリンクするように確立される。初めに、分散コンピューティング環境６００は、エンタープライズプライベートネットワーク６９５と、サードパーティデータセンタ６８５と、第１のデータセンタ６１０および第２のデータセンタ６７０を含む、図２を参照して論じたようなクラウドコンピューティングプラットフォームとを含む。
【００６８】
複数の実施形態では、エンタープライズプライベートネットワーク６９５、サードパーティデータセンタ６８５、第１のデータセンタ６１０、および、第２のデータセンタ６７０は、物理ネットワークを介して通信的に接続されてもよい。本明細書で使用されるとき、「物理ネットワーク」という句は、限定となるように意図されず、地理的に遠隔の場所にあるネットワークアダプタ間の通信を容易にする、有形の機構および機器（例えば、ファイバー線、回路ボックス、スイッチ、アンテナ、ＩＰルータなど）、ならびに、無形の通信および搬送波を包含してもよい。例として、物理ネットワークには、インターネット内で利用されるか、または、異なるネットワーク間の通信を促進するために使用可能な、任意のワイヤードまたはワイヤレス技術が含まれてもよい。
【００６９】
一般に、エンタープライズプライベートネットワーク６９５は、図２のクラウドコンピューティングプラットフォーム２００の顧客によって管理されるリソース６９６を含む。多くの場合、これらのリソース６９６は、顧客によって所有されたサービスアプリケーションのコンポーネントをホストし、それらの動作をサポートする。仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ６９７は、クラウドコンピューティングプラットフォーム２００内に存在するサービスアプリケーションの一部分との通信を容易にする、エンタープライズプライベートネットワーク６９５でホストされたＶＭスイッチを表し、サービスアプリケーション部分は、第１のデータセンタ６１０または第２のデータセンタ６７０内に収容されてもよい。複数の実施形態では、ＶＭスイッチ６２１、６２２、６２３、６５１、６５２および６５３は、データセンタ６１０および６７０内でインスタンス化されて、ネットワークアダプタ６３０および６７５上で実行するサービスアプリケーションの、遠隔で分散されたコンポーネントの動作がサポートされてもよい。動作中、ＶＭスイッチＩＶ６５１およびＶＰＮゲートウェイ６９７は、互いに協力して作動して、サービスアプリケーションが物理ネットワークを介して適切かつ安全に実行することを保証する。ある場合には、協力して作動することは、ＶＭスイッチＩＶ６５１とＶＰＮゲートウェイ６９７の間で、セキュアトンネル６９９を通じて、データパケットを送信することを含む。
【００７０】
複数の実施形態では、サードパーティデータセンタ６８５は、サードパーティによって管理され、かつ、サービスアプリケーションの動作または図２のクラウドコンピューティングプラットフォーム２００の動作をサポートする、外部ネットワークアダプタ６８０など、リソースを含む。多くの場合、これらのリソースは、顧客によって所有されたサービスアプリケーションのコンポーネントをホストかつサポートする。外部ネットワークアダプタ６８０は、クラウドコンピューティングプラットフォーム２００内に存在するサービスアプリケーションの一部分との通信を容易にする、サードパーティデータセンタ６８５でホストされたＶＭスイッチとして機能することができる。例として、外部ネットワークアダプタ６８０は、ＶＭスイッチＩＩＩ６２３と協力して作動して、その間でセキュアトンネル６８９を通じて、データパケットを送信することができる。
【００７１】
典型的には、ＶＭスイッチ６２１〜６２３および６５１〜６５３、ＶＰＮゲートウェイ６９７、ならびに、外部ネットワークアダプタ６８０は、ある形式のコンピューティングユニット（例えば、中央処理装置、マイクロプロセッサなど）を含むか、またはそれにリンクされて、その上で実行するサービスアプリケーションコンポーネント（複数可）の動作をサポートする。本明細書で利用されるとき、「コンピューティングユニット」という句は一般に、処理能力および記憶用メモリを有する専用コンピューティングデバイスを指し、１つもしくは複数のオペレーティングシステムまたは他の基になるソフトウェアをサポートするものである。ある場合には、コンピューティングユニットは、ＶＭスイッチ６２１〜６２３および６５１〜６５３、ＶＰＮゲートウェイ６９７、ならびに、外部ネットワークアダプタ６８０に一体化され、または動作可能に結合されて、各デバイスが様々な処理および動作を行うことができるようにする、有形のハードウェア要素またはマシンにより構成される。別の場合には、コンピューティングユニットは、ＶＭスイッチ６２１〜６２３および６５１〜６５３、ＶＰＮゲートウェイ６９７、ならびに、外部ネットワークアダプタ６８０の各々によって収容されたコンピュータ可読メディアに結合された、プロセッサ（図示せず）を包含してもよい。一般に、コンピュータ可読メディアは、プロセッサによって実行可能である複数のコンピュータソフトウェアコンポーネント（例えば、ネットワークアダプタ６３０および６７５）を、少なくとも一時的に保存する。本明細書で利用されるとき、「プロセッサ」という用語は、限定となるように意図されず、計算能力において作用するコンピューティングユニットの任意の要素を包含してもよい。そのような能力において、プロセッサは、命令を処理する有形のものとして構成されてもよい。例示的実施形態では、処理することは、命令をフェッチすること、デコード／解釈すること、実行すること、および書き戻すことを含んでもよい。
【００７２】
したがって、相互接続され、かつ、セキュアトンネル６０５、６８９および６９９を介して、社内のエンタープライズプライベートネットワーク６９５にアタッチされる、複数のリモートデータセンタ（例えば、参照番号６１０、６７０および６８５）が存在してもよい。これらのセキュアトンネル６０５、６８９および６９９は、暗号化のセキュリティ機構（例えば、トンネリングプロトコルＩＰ−ｓｅｃ、ＩＰ  ｏｖｅｒ  ＨＴＴＰＳ、Ｔｅｒｅｄｏ、ＳＳＬなど）または認可技術を使用して、保護されたデータパケット通過を提供してもよい。例として、ゲートウェイ機能性は、ＶＭスイッチＩＩＩ  ６２３、ＶＭスイッチＩＶ  ６５１、外部ネットワークアダプタ６８０、および、ＶＰＮゲートウェイ６９７のうち、１つまたは複数内で供給される。ゲートウェイ機能性は、トンネリングプロトコルの組み合わせを使用することによって、外部接続性を開始し、仲介し、セキュリティで保護する。したがって、このゲートウェイ機能性は、地理的に分散されたホスト内に存在するときでさえ、Ｖネットの場所および境界独立性を提供する。さらに、ゲートウェイ機能性は、物理ネットワークを介して到達するために、レイヤ３プロトコルを利用して、データパケットを確立かつアドレス指定することができる。これは、異なるブロードキャストドメインを介した直接通信を許可しない、レイヤ２プロトコルで通信する従来のネットワークアダプタでは、可能ではない。
【００７３】
動作中、ＶＭスイッチＩＩＩ６２３、ＶＭスイッチＩＶ６５１、外部ネットワークアダプタ６８０、および、ＶＰＮゲートウェイ６９７には、レイヤ３ロケータがそれぞれ割り当てられ、ＶＭスイッチ６２３および６５１、ならびに、外部ネットワークアダプタ６８０およびＶＰＮゲートウェイ６９７は、ソフトウェアベースのコンポーネントを表す。ゲートウェイ機能性が用いられて、カプセル化されたデータパケットが、サードパーティデータセンタ６８５におけるネットワークアダプタ、または、リソース６９６のうち１つに存在するネットワークアダプタなど、宛先ネットワークアダプタへルーティングされる。例示的実施形態では、ゲートウェイ機能性を用いることは、カプセル化されたデータパケットにトランスポート保護を適用し、それにより、データセンタ６１０および６７０、サードパーティデータセンタ６８５、ならびに、エンタープライズプライベートネットワーク６９５の間をそれぞれトラバースする、セキュアトンネル（例えば、参照番号６０５、６８９および６９９）をもたらすことを含む。したがって、上述のセキュリティ手段は、単一のデータセンタを超えて動作するように、かつ、データセンタ６１０および６７０、サードパーティデータセンタ６８５、ならびに、エンタープライズプライベートネットワーク６９５の間に直接的なレイヤ２到達可能性または可視性がないときでさえ、ネットワークアダプタ間のセキュリティで保護されたシームレスな接続性を提供するように拡張される。
【００７４】
ある場合には、ゲートウェイ機能性を提供するために、データセンタ６１０および６７０の様々なテナントによって使用された別々のＶＭスイッチがインスタンス化される。別の場合には、ゲートウェイ機能性は、データセンタ６１０および６７０内のＶＭスイッチ６２３および６５１のうち１つまたは複数にそれぞれ埋め込まれる。この場合、ＶＭスイッチ６２３および６５１には、データパケットがローカルデータセンタ内の内部で送信されているか、外部で送信されているかを、転送テーブルに基づいて判定するための機構が提供される。データパケットが外部に送信するようにアドレス指定されると判定されるとき、埋め込まれたゲートウェイ機能性が呼び出されて、あるトランスポート保護が実施され、すなわち、送信をセキュリティで保護または暗号化すること、および／または、データパケットのヘッダがリサイクルされたターゲット識別子（すなわち、ターゲットＭＡＣアドレスおよび／またはＩＰアドレス）を含むとき、データパケットのヘッダを変換することなどである。他の実施形態では、ゲートウェイ機能性は、負荷分散、キャッシング、および、ローカルブロードキャストドメイン間のデータパケットの配布を強化する他のサービスをサポートしてもよい。
【００７５】
次に図７を見ると、本発明の一実施形態による、データセンタ内で他のマシンから分離される、Ｖネットのメンバ間のデータパケットの配布を管理するための方法７００を示す、フロー図が例示される。初めに、方法７００は、ブロック７０２で示すように、部分的にデータセンタ内で実行するサービスアプリケーションに割り振られた複数のメンバ（例えば、仮想マシンおよび／または物理マシン上で実行するネットワークアダプタ）を備える、第１のＶネットを提供するステップを含む。典型的には、複数のメンバは、発信元ネットワークアダプタおよび宛先ネットワークアダプタを含む。方法７００は、ブロック７０４で示すように、発信元ネットワークアダプタが１つまたは複数のデータパケットを宛先ネットワークアダプタへ送信することを試行することを検出するステップをさらに含んでもよい。複数の実施形態では、図３および図４を参照してより十分に上述したように、データパケットは、宛先ネットワークアダプタをポイントするターゲット識別子を含むヘッダを有して構築される。
【００７６】
データパケットの送信を検出すると、ソース側ＶＭスイッチ（例えば、図２のソース側ＶＭスイッチ２２３）は、ブロック７０６で示すように、解決処理を行う。複数の実施形態では、解決処理は、任意の順序で実行される以下のステップを含んでもよく、すなわち、第１のＶネットに関連付けられる転送テーブルにアクセスするステップ（ブロック７０８を参照）、および、ターゲット識別子に対応する、転送テーブル内でリストされた、宛先側ＶＭスイッチのロケータを発見するステップ（ブロック７１０を参照）である。例示的実施形態では、転送テーブル（例えば、図５の転送テーブル５１０および５２０）は、第１のサービスアプリケーションに割り振られた複数のメンバと、データセンタ内のそれぞれのノード上にそれぞれ位置するＶＭスイッチとの間のマッピングを表し、マッピングは、複数のメンバ間のデータパケットトラフィックを管理する通信ポリシーに従って設計される。一般に、宛先側ＶＭスイッチ（例えば、図２の宛先側ＶＭスイッチ２２１）は、データパケットをデータセンタのノード内の宛先ネットワークアダプタに配布することを担う。データパケットは次いでカプセル化されて、宛先側ＶＭスイッチロケータを拡張ヘッダ内に含めるようにされ（ブロック７１２を参照）、ソース側ＶＭスイッチから宛先側ＶＭスイッチへ送信され（ブロック７１４を参照）、宛先側ＶＭスイッチは、データパケットをカプセル化解除し、ノード内の内部で宛先ネットワークアダプタに配布する。
【００７７】
次に図８を参照すると、本発明の一実施形態による、データセンタ内のＶネットの拡張を監督するための方法８００を示すフロー図が例示される。例示的実施形態では、方法８００は、ブロック８０２で示すように、インターネット層ロケータをＶＭスイッチに割り当てることを含む。一般に、ＶＭスイッチは、データセンタのノード上に存在するソフトウェアベースのコンポーネントを表す。方法８００は、以下のステップをさらに含んでもよく、すなわち、サービスアプリケーションのリソース使用の増大を検出するステップ（ブロック８０４を参照）、ノード上のネットワークアダプタをインスタンス化するステップ（ブロック８０６を参照）、および、ネットワークアダプタを、Ｖネットにバインドされたメンバネットワークアダプタのグループに結合することによって、ネットワークアダプタをサービスアプリケーションに割り振るステップ（ブロック８０８を参照）である。例示的実施形態では、ネットワークアダプタにはＩＰアドレスが提供される。ネットワークアダプタをサービスアプリケーションに割り振ると、ブロック８１０で示すように、結合されたネットワークアダプタのＩＰアドレスがディレクトリサーバへ通信される。典型的には、ディレクトリサーバ（例えば、図２のディレクトリサーバ２２０）は、ＶＭスイッチおよび結合されたネットワークアダプタが共通して同じノード上に存在するとき、ＩＰアドレスに関連して、割り当てられたロケータを保存するように構成される。
【００７８】
本発明の実施形態を特定の実施形態に関して説明したが、これらの実施形態は、あらゆる点において制限的ではなく、例示的であるように意図される。代替的実施形態は、本発明の範囲から逸脱することなく、本発明の実施形態が関係する当分野の技術者には明らかになるであろう。
【００７９】
前述から、本発明は、このシステムおよび方法にとって自明かつ固有である他の利点と共に、上記のすべての目標および目的を達成するようによく適合されたものであることは分かるであろう。ある特徴およびサブコンビネーションは、他の特徴およびサブコンビネーションに関係なく有益であり、用いられうることは理解されよう。これは、特許請求の範囲の範囲によって企図され、その範囲内である。
【図１】
0005859519.tif 000002
【図２】
0005859519.tif 000003
【図３】
0005859519.tif 000004
【図４】
0005859519.tif 000005
【図５】
0005859519.tif 000006
【図６】
0005859519.tif 000007
【図７】
0005859519.tif 000008
【図８】
0005859519.tif 000009