(57)【要約】  仮想化ゲートウェイ機能を物理ネットワークの中にある複数のノードに分散させるコンピューター化方法、システム、およびコンピューター読み取り可能媒体を提供する。最初に、ゲートウェイ機能を実行するドライバーが、ネットワーク・ノードにおいてインスタンス化されたエンドポイントと協同するためにプロビジョニングされ、一方、仮想インターネット・プロトコル（ＩＰ）アドレスと位置依存アドレスとの間におけるマッピング、およびネットワーク内にあるエンドポイントを接続する既知の経路にしたがって変換動作を列挙する表を維持するために、ディレクトリー・サービスが実施される。動作において、ディレクトリー・サービスは、ドライバーからの要求（データー・パケットのソースおよび宛先ＩＰアドレスを伝える）に対して、適した位置依存アドレス（マッピングを利用する）および適した変換動作（１つまたは複数）（表を利用する）を回答する。変換動作（１つまたは複数）は、位置依存アドレスを含めるようにデーター・パケットのヘッダを書き換えること、データー・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化すること、またはデーター・パケットにトンネリング・プロトコルを設定することを含む。【選択図】      図３
2013533689.tif 000002
【特許請求の範囲】
【請求項１】
コンピューター実行可能命令が具体化された１つ以上のコンピューター読み取り可能媒体であって、前記命令が実行されると、エンドポイント間におけるデーター・パケットの配信を管理する方法を実行し、前記方法が、
第１エンドポイントにおいて１つ以上のデーター・パケットを検出するステップであって、前記１つ以上のデーター・パケットの各々が、ソース・アドレスおよび宛先アドレスを含むヘッダを含む、ステップと、
前記ソース・アドレスおよび前記宛先アドレスを伝える要求を、ディレクトリー・サービスに送るステップと、
転送路を伝える応答を前記ディレクトリー・サービスから受けるステップと、
前記受けた転送路に基づいて、前記１つ以上のデーター・パケットを回送することを含むルーティング決定を実行するステップと、
前記受けた転送路に基づいて、前記１つ以上の回送されたデーター・パケットを第２エンドポイントに送信するステップと、
を含む、１つ以上のコンピューター読み取り可能媒体。
【請求項２】
請求項１記載の１つ以上のコンピューター読み取り可能媒体において、前記方法が、更に、変換動作を伝える前記応答を、前記ディレクトリー・サービスから受けるステップを含む、１つ以上のコンピューター読み取り可能媒体。
【請求項３】
請求項２記載の１つ以上のコンピューター読み取り可能媒体において、ルーティング決定を実行するステップが、更に、前記受けた変換動作に基づいて、前記１つ以上のデーター・パケットを変換するステップを含む、１つ以上のコンピューター読み取り可能媒体。
【請求項４】
請求項３記載の１つ以上のコンピューター読み取り可能媒体において、前記１つ以上のデーター・パケットを変換するステップが、サービス・モデルにアクセスし、前記サービス・モデルが、前記第１エンドポイントと前記第２エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したときに行われる、１つ以上のコンピューター読み取り可能媒体。
【請求項５】
請求項１記載の１つ以上のコンピューター読み取り可能媒体において、前記第１エンドポイントが、前記１つ以上のデーター・パケットを発信したエンドポイントを表し、前記第２エンドポイントが、前記１つ以上の回送されたデーター・パケットのヘッダによって目標にされたエンドポイントを表す、１つ以上のコンピューター読み取り可能媒体。
【請求項６】
請求項１記載の１つ以上のコンピューター読み取り可能媒体において、前記転送路に基づいて前記１つ以上のデーター・パケットを回送するステップが、
前記１つ以上のデーター・パケットの前記ヘッダ内にある前記ソース・アドレスおよび前記宛先アドレスを除去するステップと、
前記ソース・アドレスおよび宛先アドレスを、物理ネットワークのそれぞれの位置依存アドレスと置き換えるステップと、
を含む、１つ以上のコンピューター読み取り可能媒体。
【請求項７】
請求項６記載の１つ以上のコンピューター読み取り可能媒体において、前記ソース・アドレスおよび宛先アドレスを置き換えるステップが、前記第１エンドポイントおよび前記第２エンドポイントが共通のデーター・センター内に存在することを確認したとき、および前記ソース・アドレスおよび前記宛先アドレスが共通の仮想空間に属することを確認したときに行われる、１つ以上のコンピューター読み取り可能媒体。
【請求項８】
請求項１記載の１つ以上のコンピューター読み取り可能媒体において、前記転送路に基づいて前記１つ以上のデーター・パケットを回送するステップが、それぞれの外部データー・パケットの中に前記１つ以上のデーター・パケットを内部データー・パケットとしてカプセル化するステップを含み、前記外部データー・パケットが、各々、物理ネットワークの位置依存アドレスを露出するヘッダを含む、１つ以上のコンピューター読み取り可能媒体。
【請求項９】
請求項８記載の１つ以上のコンピューター読み取り可能媒体において、前記１つ以上のデーター・パケットをカプセル化するステップが、前記ソース・アドレスおよび前記宛先アドレスが除去された場合、前記第２エンドポイントが前記１つ以上のデーター・パケットのヘッダを変換できないと判断したときに行われる、１つ以上のコンピューター読み取り可能媒体。
【請求項１０】
請求項１記載の１つ以上のコンピューター読み取り可能媒体において、前記第１エンドポイントがデーター・パケットを送信するための接続を作る毎に、ドライバーがルーティング決定を実行する、１つ以上のコンピューター読み取り可能媒体。
【請求項１１】
請求項１０記載の１つ以上のコンピューター読み取り可能媒体において、前記ドライバーが、前記１つ以上のデーター・パケットを受け入れて、前記１つ以上のデーター・パケットの前記ヘッダから前記ソース・アドレスおよび前記宛先アドレスを読み出すように構成されているルーティング・コンポーネントを含み、前記第１エンドポイントが前記第２エンドポイントとの接続を作ったときに、前記ドライバーが、前記ソース・アドレスおよび前記ネットワーク・アドレスを前記ディレクトリー・サービスに伝達するように構成された、１つ以上のコンピューター読み取り可能媒体。
【請求項１２】
エンドポイント間における通信をサポートし、分離するコンピューター・システムであって、
仮想インターネット・プロトコル（ＩＰ）アドレスと物理ネットワークの位置依存アドレスとの間のマッピングを維持するディレクトリー・サービスと、
ソースＩＰアドレスおよび宛先ＩＰアドレスを含むヘッダが設けられた１つ以上のデーター・パケットを生成する第１エンドポイントであって、前記ソースＩＰアドレスが前記第１エンドポイントを指し示し、前記宛先ＩＰアドレスが第２エンドポイントを指し示す、第１エンドポイントと、
前記第１エンドポイントによって作られた接続毎に、ルーティング決定を実行するドライバーと、
を含み、前記ルーティング決定の実行が、
（ａ）前記ソースＩＰアドレスおよび前記宛先ＩＰアドレスの関数として、転送路および変換動作を決定するために、前記ディレクトリー・サービスと通信し、
（ｂ）前記第１エンドポイントおよび前記第２エンドポイントが共通のデーター・センター内に存在すると判断したとき、前記ソースＩＰアドレスおよび前記宛先ＩＰアドレスを、前記転送路のそれぞれの位置依存アドレスで書き換え、
（ｃ）前記ソース・アドレスおよび前記宛先アドレスが除去された場合、前記第２エンドポイントが前記１つ以上のデーター・パケットの前記ヘッダを変換できないと判断したとき、前記１つ以上のデーター・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化し、前記外部データー・パケットが、各々、前記転送路の前記位置依存アドレスを露出するヘッダを含み、
（ｄ）前記変換動作が、前記第１エンドポイントと前記第２エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したとき、前記受けた変換動作に基づいて、前記１つ以上のデーター・パケットを変換する、
ことを含む、コンピューター・システム。
【請求項１３】
請求項１２記載のコンピューター・システムにおいて、前記ソースＩＰアドレスおよび前記宛先ＩＰアドレスが、それぞれ、前記第１エンドポイントおよび前記第２エンドポイントの露出された機能にしたがって割り当てられ、前記位置依存アドレスが、それぞれ、前記物理ネットワーク内における前記第１エンドポイントおよび前記第２エンドポイントの位置にしたがって割り当てられる、コンピューター・システム。
【請求項１４】
請求項１２記載のコンピューター・システムにおいて、前記ディレクトリー・サービスが、予め作られているトンネル、または前記第１エンドポイントおよび前記第２エンドポイントをリンクするネットワーク経路のレコードに基づいて、前記適した変換動作を前記ドライバーに分与する表を維持する、コンピューター・システム。
【請求項１５】
分散型仮想ネットワーク・ゲートウェイからの要求に応答して、ネットワーク経路および変換動作を特定するコンピューター化方法であって、
仮想インターネット・プロトコル（ＩＰ）アドレスと位置依存アドレスとの間のマッピングを維持し、更に適した変換動作を認識する表を維持するディレクトリー・サービスを設けるステップであって、前記表が、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーター・パケット・トラフィックを管理する通信ポリシーにしたがって設計される、ステップと、
受信側エンドポイントと通信する仮想ネットワーク・ゲートウェイから要求を受けるステップであって、前記要求が、前記受信側エンドポイントによって受け入れられた１つ以上のデーター・パケットのヘッダによって伝えられたソースＩＰアドレスおよび宛先ＩＰアドレスの指示を含む、ステップと、
物理ネットワークを通る前記１つ以上のデーター・パケットの転送路を構成する、対応する位置依存アドレスを特定するために、前記ソースＩＰアドレスおよび前記宛先ＩＰアドレスによって、前記マッピングを検査するステップと、
対応する変換動作を特定するために、前記転送路によって前記表を検査するステップであって、前記変換動作が、
（ａ）前記位置依存アドレスを含めるために前記１つ以上のデーター・パケットの前記ヘッダを書き換える、
（ｂ）前記１つ以上のデーター・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化し、前記外部データー・パケットが、各々、前記位置依存アドレスを伝えるヘッダを含む、または、
（ｃ）前記１つ以上のデーター・パケットにトンネリング・プロトコルを設定する、
の内少なくとも１つを含む、ステップと、
前記特定した転送路および前記特定した変換動作の指示を、前記仮想ネットワーク・ゲートウェイに伝える応答を戻すステップであって、前記仮想ネットワーク・ゲートウェイが前記応答を前記受信側エンドポイントに伝達し、前記受信側エンドポイントが、前記１つ以上のデーター・パケットをそこから送信するときに、前記特定した転送路および前記特定した変換動作を実施する、ステップと、
を含む、コンピューター化方法。
【発明の詳細な説明】
【従来技術】
【０００１】
[0001]  大規模なネットワーク接続システムは、サービス・アプリケーションを実行し、業務および動作機能のデーターを保持するための種々の設定において指しようされる一般的なプラットフォームである。例えば、データー・センター（例えば、物理的なクラウド計算インフラストラクチャー）は、複数の顧客に同時に種々のサービス（例えば、ウェブ・アプリケーション、電子メール・サービス、サーチ・エンジン・サービス等）を提供することができる。これらの大規模ネットワーク接続システムは、通例、データー・センター全体に分散された複数のリソースを含み、各リソースは、物理的ホストにおいて実行する物理装置または仮想装置に類似している。データー・センターが複数のテナント（例えば、顧客プログラム）をホストするとき、これらのリソースはデーター・センターから、これらのテナントの使用要件を満たすように、異なるテナントに割り当てられる。テナントに割り当てられる１組のリソースは、管理およびセキュリティのための分離が容易にできるように、論理サブネットまたは仮想サブネットに分類することができる。
【０００２】
[0002]  データー・センターの顧客は、多くの場合、データー・センターのリソースにおいて実行するソフトウェアと相互作用するためには、企業の私的ネットワーク（例えば、データー・センターから地理的に離れた顧客によって管理されるサーバー）または他の第三者のネットワークにおいて実行するサービス・アプリケーションを必要とする。この相互作用を実現しつつ、テナントに割り当てられたリソースを、他のテナントに割り当てられたリソースから安全に分離するために、ホスト側のサービス・プロバイダは、仮想サブネット内にあるテナントに属する全ての装置間、またはホスト・ハイパーバイザーおよびテナントのリモート・リソースによって管理されるリソース間におけるネットワーク・ゲートウェイとしての役割を果たす１つの集中ルーティング・メカニズムを採用することができる。しかしながら、集中ルーティング・メカニズムを採用するというこのアーキテクチャは、有効ではない。何故なら、動作が、このメカニズムがサーブする装置／リソースに対するこのメカニズムの物理的な近接度に依存するからである。例えば、装置／リソースがデーター・センターの異なる部分にある場合または異なる場所にある（データー・センターおよび企業の私的ネットワークに跨がる）場合、少なくとも一部の装置／リソースは、他の装置／リソースもドライバーを利用している間、このドライバーとの接続においてレイテンシーが大きくなり帯域幅が狭くなる問題に直面する。つまり、集中ルーティング・メカニズムは、特定の仮想サブネットに出入りする通信にとって慢性的な輻輳ポイントになる。更に、装置／リソースは、この集中ルーティング・メカニズムを全ての通信が通過するように制限されると、最適ではないルートを通ってデーター・パケットを送信させられることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]  したがって、物理装置（ローカル装置ネットワーク・スタックに組み込む）または仮想装置（仮想交換ネットワーク・スタックに組み込む）の中にドライバーを埋め込むことによって、仮想ネットワーク・ゲートウェイまたはドライバーをデーター・センター全域に分散させる新興技術を採用すれば、最適なネットワーク経路を発見し利用することによってデーター・パケットの送信を促進し、ゲートウェイの機能を分散させることによってネットワークの輻輳を低減し、データー・センターの顧客の通信を更に分離するのに役立つであろう。
【課題を解決するための手段】
【０００４】
[0004]  この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。
【０００５】
[0005]  本発明の実施形態は、先に述べた問題に取り組む、分散型仮想ネットワーク・ゲートウェイのアーキテクチャーを提供する。これらのゲートウェイは、ドライバーの形態をなすことができ、物理装置（ローカル装置ネットワーク・スタックに組み込む）または仮想装置（仮想交換ネットワーク・スタックに組み込む）の中にこれらのドライバーを埋め込むことによって、データー・センター全域に、ドライバーをプロビジョニングすることができる。以下で詳しく説明するが、このドライバーは、最適なネットワーク経路を発見し利用することによってデーター・パケットの送信を促進し、ゲートウェイの機能を分散させることによってネットワークの輻輳を低減し、データー・センターの顧客の通信を更に分離するように機能する。更に、このドライバーは、クラウド計算プラットフォームにおいて実行する顧客のサービスの保全性を保護する。クラウド計算プラットフォームは、複数のテナント（例えば、クラウド当たり数万箇所）がクラウド・サービス・データー・センターの中にある計算リソースを共有することを可能にする。
【０００６】
[0006]  一般に、前述のドライバーは、サービス・アプリケーションに割り当てられたエンドポイント間における通信の最も適したフォーマットおよび経路を選択しつつ、データー・センターにおける他のリソースから割り当てられたネットワーク・アダプターを仮想的に区分することをサポートする。明確化のために、エンドポイントは、仮想装置（ＶＭ）および／または物理装置にインスタンス化されているネットワーク・アダプターを含むことができる。通信の中でデーター・パケットのフォーマットおよび経路の選択を行うために、実施形態では、ドライバーはディレクトリー・サービスに働きかけ、ディレクトリー・サービスは、ドライバーがそれぞれのソース・エンドポイントおよび宛先エンドポイントに対してルーティングを決定するときに、ドライバーを補助する。ディレクトリー・サービスから戻された情報によって増強され、ドライバーはそこからのデーター・パケットのルーティングを適正に管理し、同時に、データー・パケットを適正に変換することによって、不正な通信を防止するように機能する。
【０００７】
[0007]  一実施形態例では、ドライバーは、仮想化ゲートウェイ機能を、物理ネットワークの中にあるノードの複数の仮想化エンドポイントに分散させるように動作する。最初に、ネットワーク・ノードにインスタンス化されたエンドポイントと協同するために、ドライバーがプロビジョニングされる。更に、仮想インターネット・プロトコル（ＩＰ）アドレスと位置依存アドレスとの間のマッピング、およびネットワーク内のエンドポイントを接続する既知の経路にしたがって、変換動作を列挙するテーブルを維持するために、ディレクトリー・サービスが実施される。ドライバーの各々は、中央位置においてドライバーから除去されたときに、ディレクトリー・サービスとの通信が可能であり、またドライバー内部に組み込まれたとき、ディレクトリー・サービスにローカルにアクセスすることができる。
【０００８】
[0008]  動作において、受信側エンドポイントは、特定のドライバーにリンクされており、１つ以上のデーター・パケットを受信することができる。ドライバーは、データー・パケットのヘッダを読み取って、ソースＩＰアドレスおよび宛先ＩＰアドレスを確認することができる。更に、ドライバーは、ソースおよび宛先ＩＰアドレスを、ルーティング情報要求の中にパッケージ化し、この要求をディレクトリー・サービスに、内部または外部のいずれにでも伝えることができる。ディレクトリー・サービスは、このドライバーからの要求に対して、ソースおよび宛先ＩＰアドレスによってマッピングを調べることによって、転送経路の適した位置依存アドレスを回答することができる。加えて、ディレクトリー・サービスは、転送路で表を調べることによって、この要求に対して、適した変換動作（１つまたは複数）を回答することができる。この変換動作（１つまたは複数）は、以下の内１つ以上を含むことができる。位置依存アドレスを含むようにデーター・パケットのヘッダを書き換える。位置依存アドレスを伝えるヘッダと共に組み立てられたそれぞれの外部データー・パケットの中に、内部データー・パケットとして、データー・パケットをカプセル化する。または、トンネリング・プロトコルを使用してデーター・パケットを構成する（例えば、データー・センターまたは顧客によって作られたサービス・モデルのセキュリティ・ポリシー毎に）。
【０００９】
[0009]  ドライバーにおいてルーティング情報を受信すると、このドライバーは、転送経路および変換動作を受信側エンドポイントに配信することができる。一方、受信側エンドポイントは転送路を実施し、そこからデーター・パケットを送信するときに変換動作を適用する。他の実施形態では、ドライバーは、その機能を実行することをエンドポイント（例えば、受信側エンドポイント）に頼るのではなく、適した変換動作を直接データー・パケットに対して実行することができる。
【００１０】
[0010]  したがって、ドライバーおよびディレクトリー・サービスが調和して動作してインフォームド・ルーティング決定(informed routing decision)を行ったとき、ドライバーにリンクされている受信側エンドポイントに、最適なネットワーク経路の選択肢を提供することができ、これによってネットワークの輻輳を低減し、更に適した変換動作を提供することができ、これによってデーター・センター外部における送信の分離を実現する。
【図面の簡単な説明】
【００１１】
[0011]  本発明の実施形態について、添付図面を参照しながら説明する。
【図１】図１は、本発明の実施形態を実現するときに使用するのに適した計算環境例のブロック図である。
【図２】図２は、本発明の実施形態を実現するときに使用するのに適しており、データー・センター内にドライバーをプロビジョニングしその動作をやりやすくするように構成されている、クラウド計算プラットフォーム例のブロック図である。
【図３】図３は、本発明の一実施形態にしたがって、仮想ネットワーク・アドレスを物理ネットワーク経路および変換動作に分解するアーキテクチャー例の模式図である。
【図４】図４は、本発明の一実施形態にしたがって、ディレクトリー・サービスから分散されるルーティング情報をルーティング決定に適用する判断ツリー例の模式図である。
【図５】図５は、本発明の一実施形態にしたがって、ドライバーからの要求に応答して、適した物理ネットワーク経路および変換動作を特定する方法を示す流れ図である。
【発明を実施するための形態】
【００１２】
[0017]  本発明の主題について、本明細書では、法的要件を満たすために具体性をもって説明する。しかしながら、説明自体は、本特許の範囲を限定することは意図していない。むしろ、本発明者は、特許請求する主題は、本文書において記載するステップとは異なるステップまたは同様のステップの組み合わせを含むように、他の現在または今後の技術と関連付けて、別の方法で具体化してもよいことを想定している。更に、「ステップ」および／または「ブロック」という用語は、本明細書においては、採用される方法の異なるエレメントを言外に意味するために使用することもできるが、個々のステップの順序が明示的に記載されているのでなければ、そして記載されている場合を除いて、この用語は、本明細書において開示される種々のステップ間において、いかなる特定の順序をも暗示するように解釈してはならない。  
【００１３】
[0018]  本発明の実施形態は、局在的に仮想化ゲートウェイ機能を設ける分散型ドライバーにおいてインフォームド・ルーティング決定を行う方法、コンピューター・システム、およびコンピューター読み取り可能媒体に関する。
【００１４】
[0019]  一態様では、本発明の実施形態は、コンピューター実行可能命令が具体化されている１つ以上のコンピューター読み取り可能媒体であって、前記命令が実行されると、エンドポイント間におけるデーター・パケットの配信を管理する方法を実行する１つ以上のコンピューター読み取り可能媒体に関する。実施形態では、この方法は、第１エンドポイントにおいて１つ以上のデーター・パケットを検出するステップを含む。通例、データー・パケットの各々は、ソース・アドレスおよび宛先アドレスを含むヘッダを含む。第１エンドポイントと関連のあるドライバーが、応答をディレクトリー・サービスに送ることができる。一実施形態例では、この要求は、ソース・アドレスおよび宛先アドレス、またはその何らかの指示を伝える。この要求を受けると、ディレクトリー・サービスは参照を実行して、ソース・アドレスおよび宛先アドレスを転送路および変換動作に変換する。この転送路および変換動作は、ディレクトリー・サービスからドライバーに応答の中で送ることができる。しかしながら、ドライバーおよびエンドポイントは、発信、受信側、およびターゲット・エンドポイントに関するディレクトリー・サービスにおける規則に一致しし損ねたデーター・パケットの内１つ以上を欠落させる能力も維持する。このデーター・パケットを欠落させる能力によって、ネットワーク内において分離を施行する権限をドライバーに与える。
【００１５】
[0020]  応答を受信すると、ドライバーは、ルーティング決定を実行することができる。このルーティング決定は、部分的に、第１エンドポイントが、データー・パケットの発信エンドポイントか、またはデーター・パケットをターゲット・エンドポイントに転送するように動作する受信側エンドポイントか、またはターゲット・エンドポイントかに基づく。第１エンドポイントが発信エンドポイントを表すとき（ソース・アドレスによって特定される）、ルーティング決定によって以下の変換動作の内１つ以上を行うことができる。（ａ）位置依存アドレスを含めるようにデーター・パケットのヘッダを書き換える。（ｂ）データー・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化する。外部データー・パケットは、各々、位置依存アドレスを伝えるヘッダを含む。または、（ｃ）データー・パケットにトンネリング・プロトコルを設定する。第１エンドポイントが受信側エンドポイントを表すとき、ルーティング決定によって以下の変換動作の内１つ以上を行うことができる。（ａ）他のネットワーク経路を通って、カプセル化されたデーター・パケット、またはヘッダが書き換えられたデーター・パケットを転送する。（ｂ）トンネルを介して、カプセル化されたデーター・パケット、またはヘッダが書き換えられたデーター・パケットを転送する。または、（ｃ）トンネリング・プロトコルをデーター・パケットから除去する。第１エンドポイントがターゲット・エンドポイントを表すとき（宛先アドレスによって特定される）、ルーティング決定によって以下の変換動作の内１つ以上を行うことができる。（ａ）カプセル化されたデーター・パケットを分解する。（ｂ）書き換えられたデーター・パケットのヘッダを復元する。または、（ｃ） 消費の準備をするために、データー・パケットからトンネリング・プロトコルを除去する。
【００１６】
[0021]  他の態様では、本発明の実施形態は、エンドポイント間における通信をサポートし分離するコンピューター・システムに関する。最初に、このコンピューター・システムは、ディレクトリー・サービス、第１エンドポイント、第２エンドポイント、および第１エンドポイントにローカルにプロビジョニングされたドライバーを含む。一般に、ディレクトリー・サービスは、仮想インターネット・プロトコル（ＩＰ）アドレスと物理ネットワークの位置依存アドレスとの間のマッピングを維持する。動作において、第１エンドポイントは、ソースＩＰアドレスおよび宛先ＩＰアドレスを含むヘッダと共に組み立てられた１つ以上のデーター・パケットを生成し始めることができる。この場合、ソースＩＰアドレスは第１（発信）エンドポイントを指し示し、宛先ＩＰアドレスは第２（ターゲット）エンドポイントを指し示す。
【００１７】
[0022]  第１エンドポイントがノード（例えば、物理装置または仮想装置）から第２エンドポイントにデーター・パケットを送信しようとしていることを検出すると、ドライバーはルーティング決定を実行する。一実施形態例では、第１エンドポイントによって作られた接続毎に、ドライバーによって別個のルーティング決定が呼び出され実行される。実施形態では、ルーティング決定の実行は、限定ではないが、以下のステップを伴う。ディレクトリー・サービスと通信して、部分的にソースＩＰアドレスおよび宛先ＩＰアドレスに基づいて、転送路および変換動作を決定するステップと、第１エンドポイントおよび第２エンドポイントが共通のデーター・センター内に存在するか否か判断するステップと、ソースＩＰアドレスおよび宛先ＩＰアドレスが除去されると第２エンドポイントがデーター・パケットのヘッダを変換できないか否か判断するステップ。
【００１８】
[0023]  第１エンドポイントおよび第２エンドポイントが共通のデーター・センター内に存在すると判断したとき、ドライバーはソースＩＰアドレスおよび宛先ＩＰアドレスを、転送路の位置依存アドレスでそれぞれ書き換えることができる。他の実施形態では、ドライバーは、データー・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化することができ、各外部データー・パケットは、転送路の位置依存アドレスを露出するヘッダを含む。カプセル化の変換動作を呼び出す様々なシナリオがある。一例では、ソースＩＰアドレスおよび宛先ＩＰアドレスが除去されると第２エンドポイントがデーター・パケットのヘッダを変換できないと判断したときに、カプセル化がトリガーされる。カプセル化が必要となる可能性がある他の可能なシナリオには、（ａ）ソースおよび宛先ＩＰアドレスの間に何らかの形態のネットワーク変換（ＮＡＴ）が存在することを検出する、および／または（ｂ）ソースおよび宛先ＩＰアドレスから、それらの位置依存アドレスおよびそれらの仮想ＩＰアドレスからはもはや１対１のマッピングがなくなるように、第１および第２エンドポイント（例えば、発信およびターゲット・ネットワーク・アダプター）が複数の仮想ネットワークに及ぶことを認識することを含むことができる。  
【００１９】
[0024]  変換動作が、第１エンドポイントと前記第２エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したときに、ドライバーは、受け入れた変換動作に基づいて、データー・パケットを変換することができる。一例では、この変換動作は、トンネリング・プロトコル（例えば、セキュア・ソケット・トンネリング・プロトコル（ＳＳＴＰ）またはインターネット・プロトコル・セキュリティ（ＩＰｓｅｃ））をデーター・パケットに適用することを伴う。
【００２０】
[0025]  更に他の態様では、本発明の実施形態は、分散型仮想ネットワーク・ゲートウェイからの要求に応答して、ネットワーク経路および変換動作を特定するコンピューター化方法に関する。最初に、この方法は、仮想インターネット・プロトコル（ＩＰ）アドレスと位置依存アドレスとの間のマッピングを維持するディレクトリー・サービスを設けるステップを含む。また、ディレクトリー・サービスは、適した変換動作を認識する表も維持する。一例では、この表は、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーター・パケット・トラフィックを管理する通信ポリシーにしたがって設計される。他の例では、この表は、顧客のサービス・アプリケーションをホストするデーター・センターのホストに対して作られたサービス・モデル（例えば、サービス・レベル同意（ＳＬＡ））に基づく。
【００２１】
[0026]  更に、この方法は、受信側エンドポイントと通信する仮想ネットワーク・ゲートウェイから要求を受けるステップも含むことができる。通例、この要求は、受信側エンドポイントによって受け入れられた１つ以上のデーター・パケットのヘッダによって伝えられたソースＩＰアドレスおよび宛先ＩＰアドレスの指示を含む。この要求を受けると、ディレクトリー・サービスは、以下の参照手順の内少なくとも１つを実行することができる。物理ネットワークを通るデーター・パケットの転送路を構成する、対応する位置依存アドレスを特定するために、ソースＩＰアドレスおよび宛先ＩＰアドレスによって、マッピングを検査する。または、対応する変換動作を特定するために、転送路によって表を検査する。以下で更に詳しく論じられるが、変換動作は、限定ではないが、以下の内１つ以上を伴うことができる。位置依存アドレスを含めるために１つ以上のデーター・パケットのヘッダを書き換える。１つ以上のデーター・パケットをそれぞれの外部データー・パケットの中に内部データー・パケットとしてカプセル化する。外部データー・パケットは、各々、前記位置依存アドレスを伝えるヘッダを含む。または、１つ以上のデーター・パケットにトンネリング・プロトコルを設定する。最終的に、ディレクトリー・サービスは、特定した転送路および前記特定した変換動作の指示を、仮想ネットワーク・ゲートウェイに配信する応答を戻すことができる。
【００２２】
[0027]  以上、本発明の実施形態の全体像について端的に説明したので、本発明の実施形態を実現するのに適した動作環境例について以下に説明する。
[0028]  図面全体を参照し、最初に図１を特に参照すると、本発明の実施形態を実現する動作環境例が示されており、全体的に計算デバイス１００と呼ぶことにする。計算デバイス１００は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に対して何の限定も示唆することは意図していない。また、計算デバイス１００が、図示されているコンポーネントの任意の１つまたはその組み合わせに関しても、何らかの依存性や要件も有するように解釈してはならない。
【００２３】
[0029]  本発明の実施形態は、コンピューター・コードまたは装置使用可能命令という一般的なコンテキストで説明することができる。本発明は、コンピューターあるいはパーソナル・データー・アシスタントまたはその他のハンドヘルド・デバイスのようなその他の装置によって実行される、プログラム・コンポーネントのようなコンピューター実行可能命令を含む、コンピューター・コードまたは装置使用可能命令という一般的な文脈で説明することができる。一般に、プログラム・コンポーネントは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するコード、および／または特定の抽象的データー型を実装するコードに言及する。本発明は、ハンドヘルド・デバイス、消費者用電子機器、汎用コンピューター、特殊計算デバイス等を含む、種々のシステム構成において実用化することができる。また、本発明は、分散型計算環境においても実用化することができ、その場合、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される。
【００２４】
[0030]  図１を参照すると、計算デバイス１００は、以下のデバイスを直接的または間接的に結合するバス１１０を含む。メモリー１１２、１つ以上のプロセッサー１１４、１つ以上の外部記憶コンポーネント１１６、入出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏコンポーネント１２０、および例示的な電源１２２である。バス１１０は、１系統以上のバス（アドレス・バス、データー・バス、またはその組み合わせ等）であってもよいものを表すことができる。図１の種々のブロックは、明確化のために、線で示すが、実際には、種々のコンポーネントの区分けはそれほど明確でなく、比喩的には、これらの線をもっと正確に示すとすれば、灰色で曖昧となるであろう。例えば、ディスプレイ・デバイスのようなプレゼンテーション・コンポーネントをＩ／Ｏコンポーネントであると考えることもできる。また、プロセッサーはメモリーを有する。本発明の発明者はこのようなことは技術の本質であると認識しており、図１の線図は、本発明の１つ以上の実施形態と合わせて使用することができる計算デバイスの一例を例示するに過ぎないことを繰り返しておく。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルド・デバイス」等というようなカテゴリー間では区別を行わない。これは、全てが図１の範囲に該当すると考えられ、「コンピューター」または「計算デバイス」を指すからである。
【００２５】
[0031]  計算デバイス１００は、通例、種々のコンピューター読み取り可能媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）、電子的消去可能プログラマブル・リード・オンリー・メモリー（ＥＥＰＲＯＭ）、フラッシュ・メモリーまたは他のメモリー技術、ＣＤＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）あるいは他の光学またはホログラフ媒体、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができそしてコンピューター１００によってアクセスされる他の任意の媒体も含むことができる。
【００２６】
[0032]  メモリー１１２は、揮発性および／または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。このメモリーは、リムーバブル、非リムーバブル、またはその組み合わせでもよい。ハードウェア・デバイスの例には、ソリッド・ステート・メモリー、ハード・ドライブ、光ディスク・ドライブ等が含まれる。計算デバイス１００は、メモリー１１２またはＩ／Ｏコンポーネント１２０のような種々のエンティティからデーターを読み取る１つ以上のプロセッサーを含む。プレゼンテーション・コンポーネント（１つまたは複数）１１６は、データー指示をユーザまたは他のデバイスに提示する。プレゼンテーション・コンポーネントの例には、ディスプレイ・デバイス、スピーカー、印刷コンポーネント、振動コンポーネント等が含まれる。Ｉ／Ｏポート１１８は、Ｉ／Ｏコンポーネント１２０を含む他のデバイスに計算デバイス１００を論理的に結合することを可能にする。これら他のデバイスの一部は内蔵されていてもよい。例示的なＩ／Ｏコンポーネントには、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー、プリンター、ワイヤレス・デバイス等が含まれる。
【００２７】
[0033]  図１および図２を参照すると、ノード２１１およびノード２１２は、図１の計算デバイス例１００によって実現することができる。更に、エンドポイント２０１，２０２、および２３０は、図１のメモリー１１２の一部にアクセスし、図１のプロセッサー１１４の一部において実行することができる。同様に、ドライバー２２３および２３３は、ローカル・ゲートウェイ機能をＶＭスイッチ２２２（仮想装置２７０および２７５におけるエンドポイント２０１および２０２をサポートする）の仮想スイッチ・ネットワーク・スタック内および／または物理装置（１つまたは複数）（エンドポイント２３０をサポートする）に対するローカル装置ネットワーク・スタック内に埋め込み、図１のメモリー１１２の一部にアクセスし、図１のプロセッサー１１４の一部において実行することができる。
【００２８】
[0034]  これより図２に移ると、本発明の一実施形態によるブロック図が示されており、種々の変換形態を使用してディレクトリー・サービス２２０から収集されたルーティング情報を使用することによって、ドライバー２２３および２３３においてルーティング決定を実行するように構成されているクラウド計算プラットフォーム例２００を示す。実施形態では、１つのクラウド計算プラットフォーム２００に動作可能に結合されるものとして図示されているが、ディレクトリー・サービス２２０は特定のクラウドの範囲外に存在することもできる（即ち、ディレクトリー・サービス２２０は、公衆および私的クラウド（１つまたは複数）に跨がって共有されるクラウドを表すことができる）。この種々のクラウドと共に動作する能力によって、ディレクトリー・サービスは、ネットワークが複数のクラウドに及ぶをことを可能にする。
【００２９】
[0035]  尚、図２に示されているクラウド計算プラットフォーム２００は、１つの適した計算システム環境の例に過ぎず、本発明の実施形態の使用範囲や機能に関して、何の限定をも示唆することも意図していないことは言うまでもない。例えば、クラウド計算プラットフォーム２００は、公衆クラウド、私的クラウド、または専用クラウドであってもよい。また、クラウド計算プラットフォーム２００が、図示されているコンポーネントの任意の１つまたはその組み合わせに関しても、何らかの依存性や要件も有するように解釈してはならない。更に、図２の種々のブロックは、明確化のために、線で示されているが、実際には、種々のコンポーネントの区分けはそれほど明確でなく、比喩的には、これらの線をもっと正確に示すとすれば、灰色で曖昧となるであろう。加えて、任意の数の物理装置、仮想装置、データー・センター、エンドポイント、またはその組み合わせを採用して、本発明の実施形態の範囲内で所望の機能を達成することもできる。
【００３０】
[0036]  クラウド計算プラットフォーム２００は、サービス・アプリケーションおよび他のソフトウェアをホストするノード（例えば、ノード２１１および２１２）を含む１つ以上のデーター・センター（例えば、データー・センター２２５）を含むことができる。本発明の実施形態によれば、ノード２１１および／または２１２は、例えば、パーソナル・コンピューター、デスクトップ・コンピューター、ラップトップ・コンピューター、移動体デバイス、消費者用電子デバイス、サーバー（１つまたは複数）、図１の計算デバイス１００等というような、任意の形態の計算デバイスを含む物理装置を表すことができる。他の実施形態では、ノード２１１および／または２１２は、仮想装置を表すことができ、または仮想装置２７０および２７５のような、仮想装置の動作のための基礎的サポートを行うことができる。動作において、仮想装置２７０および２７５はデーター・センター２２５のテナントの動作をサポートする。本明細書において使用される場合、「テナント」という用語は、一般に、クラウド計算プラットフォーム２００の顧客によって所有されるサービス・アプリケーションのコンポーネント・プログラム（例えば、種々の役割のインスタンス）を指す。
【００３１】
[0037]  一般に、仮想装置２７０および２７５は、サービス・アプリケーションに対して出される要求（例えば、処理負荷の量）に基づいて、サービス・アプリケーションのエンドポイント２０１および２０２に割り当てられる。本明細書において使用される場合、「仮想装置」という用語は、限定であることを意図するのではなく、エンドポイント２０１および２０２の機能の基盤を成すために演算装置によって実行される任意のソフトウェア、アプリケーション、オペレーティング・システム、またはプログラムを指すことができる。他の実施形態では、仮想装置は、データー・センター２２５のテナントをサポートするためにノードから掘り出された(carved out)処理能力およびメモリー・リソースを指す。このように、ノード２１１は、仮想装置２７０および２７５の動作をホストおよびサポートしつつ、同時に、データー・センター２２５の他のテナントをサポートするために掘り出された他の仮想装置をホストし、これらのテナントは、異なる顧客によって所有される他のサービス・アプリケーションのエンドポイントを含む。したがって、仮想装置２７０および２７５は、エンドポイント２０１および２０２を適正にサポートするために、処理能力、記憶場所、およびデーター・センター２２５内にある他のアセット(assets)を含むことができる。
【００３２】
[0038]  動作において、仮想装置２７０および２７５は、データー・センター２２５のリソース（例えば、ノード２１１）内部で動的に割り当てられ、エンドポイント（例えば、エンドポイント２０１および２０２）は、現在の処理負荷を履行するために、割り当てられた仮想装置２７０および２７５に動的に置かれる。一例では、ファブリック・コントローラー２３２が、データー・センター２２５内にエンドポイント２０１および２０２を置くために、仮想装置２７０および２７５を自動的に割り当てる役割を担う。一例として、ファブリック・コントローラー２３２は、サービス・モデル（例えば、サービス・アプリケーションを所有する顧客によって設計される）を拠り所として、どのようにそしていつ仮想装置２７０および２７５を割り当てるかについて指針を与え、そしてそこにエンドポイント２０１および２０２を設置することができる。
【００３３】
[0039]  一例では、ノード２１１および２１２は、エンドポイント２０１、２０２、および２３０の動作をホストおよびサポートする。「エンドポイント」という用語は、限定を意図しているのではなく、ノード、物理装置、またはＶＭにおいて実行するサービス・アプリケーション（即ち、データー・センター２２５のテナント）あるいはネットワーク・アダプターのプラグラム・コンポーネントを含むことができる。一態様において、エンドポイント２０１、２０２、および２３０は、クラウド計算プラットフォーム２００のコンテキストの中で動作し、したがって、それらの間に動的に作られる接続を介して内部で通信する。他の態様では、エンドポイント２０１、２０２、および２３０は、物理ネットワーク・トポロジーを介して、外部のリモート・ネットワークのリソース（例えば、図３の企業私的ネットワーク３２５のリソース３７５）に通信する。外部接続は、更に、データー・センター２２５の物理リソースに跨がって分散されたエンドポイントに、ネットワーク（図示せず）を介して相互接続することを必要とすることもある。一実施形態では、エンドポイント２３０によって示されるように、ネットワークはこれらのリソースを直接相互接続して、発信エンドポイント（データー・パケットを生成する）が受信側エンドポイント（データー・パケットをターゲット・エンドポイントに転送する）の位置またはターゲット・エンドポイント（データー・パケットを消費する）の位置を認識し、これらの間で通信を行うこともできる。他の実施形態では、ネットワークは間接的にリソースを相互接続し、それぞれ仮想装置２７０および２７５にホストされているエンドポイント２０１または２０２に宛てられたデーターのパケットが、同じノードに存在するしかるべきエンドポイントにローカルに配信される前に、ネットワークを介して導き直され、ＶＭスイッチ２２２に配信されるようにすることもできる。加えて、ネットワークは、チャネル（例えば、セキュア・トンネル）を介して通信を作ることによって、追加の保護レイヤーを実現するか、またはサービス・アプリケーション（１つまたは複数）のエンドポイント間における接続に対して標準的なセキュリティ対策を採用することもできる。一例として、チャネルは、限定ではなく、１つ以上のローカル・エリア・ネットワーク（ＬＡＮ）および／またはワイド・エリア・ネットワーク（ＷＡＮ）を含むことができる。このようなネットワーク接続環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。したがって、ネットワークについては本明細書ではこれ以上説明しない。
【００３４】
[0040]  クラウド計算プラットフォーム２００は、特定のサービス・アプリケーションに割り当てられたエンドポイント２０１、２０２、および２３０の動作をホストおよびサポートするように構成されている。「サービス・アプリケーション」という句は、本明細書において使用される場合、データー・センター２２５、クラウド計算プラットフォーム２００内にある他のデーター・センター、顧客の家屋に配置されている企業私的ネットワークにおけるリソース（例えば、図３の企業私的ネットワーク３２５のリソース３７５）、および／または第三者ネットワーク（例えば、図３の第三者ネットワーク３３５のリソース３２５）におけるリソースの上で実行する、あるいはその内部にある記憶位置にアクセスする、任意のソフトウェア、ソフトウェアの一部に広く言及する。先に論じたように、エンドポイント２０１、２０２、および２３０は、サービス・アプリケーション（１つまたは複数）に関与する役割のソフトウェアの一部、コンポーネント・プログラム、またはインスタンスを表すことができる。他の実施形態では、エンドポイント２０１、２０２、および２３０は、サービス・アプリケーションにアクセス可能な、格納されているデーターを表すこともできる。尚、図２に示されているエンドポイント２０１、２０２、および２３０は、サービス・アプリケーションをサポートするのに適した部分の一例に過ぎず、本発明の実施形態の数、使用範囲、または機能に関して何の限定も示唆する意図はないことは言うまでもないことであり、認められるであろう。
【００３５】
[0041]  １つのサービス・アプリケーションは、１つのデーター・センター２２５における２つのノード２１１および２１２に跨がって分散されているものとして説明されているが、種々のデーター・センターまたは他の適したデバイス内にある任意の数のノードに存在する任意の数のサービス・アプリケーションを使用することができ、本発明の実施形態は、ここに記載されるノード、サービス・アプリケーション、およびデーター・センター（１つまたは複数）には限定されないことは言うまでもない。更に、任意の数のエンドポイントがノード内にインスタンス化されてもよく、および／またはサービス・アプリケーション（１つまたは複数）に割り当てられてもよく、図２および図３に示されているエンドポイントは、説明の目的のみに限って示されている。
【００３６】
[0042]  一例では、データー・センター２２５のアーキテクチャーは、クラウド計算プラットフォーム２００の管理システム（例えば、ファブリック・コントローラ２３２）またはアドミニストレーターが、サービス・アプリケーションをサポートするために、新たなエンドポイントをインスタンス化することまた現在のエンドポイントを割当し直すことを可能にする。また、ファブリック・コントローラ２３２は、エンドポイント２０１、２０２、および２３０を接続するために、ネットワーク経路およびトンネルを構築および分解することもできる。更に、ファブリック・コントローラ２３２は、周期的にデーター・センター２２５のトポロジーのスナップショットを撮ることもできる。これらのスナップショットは、データー・センター・ネットワークを通って現在作られているネットワーク経路およびトンネル、ならびにエンドポイントのアドレスを記録することができる。これらのスナップショットは、ディレクトリー・サービス２２０に中継されその中に格納することもできる。実施形態では、ディレクトリー・サービス２２０は、物理ネットワークの位置依存アドレスと関連付けて仮想ＩＰアドレスを格納するように構成することもできる。更に、ディレクトリー・サービス２２０は、データー・センター・ネットワークのそれぞれのネットワーク経路およびトンネルと関連のある変換動作を格納するように構成することもできる。このように、サービス・アプリケーションのサービス・モデルのセキュリティ・ポリシーが、サービス・アプリケーションのテナント間で送信されるデーター・パケットに対して、ディレクトリー・サービス２２０によって実施される。
【００３７】
[0043]  先に論じたように、本発明の実施形態は、物理レイヤー（実線）内にあるネットワーク経路およびトンネルを利用することによって、仮想レイヤー（破線）を跨いだエンドポイント間における通信を可能にするアーキテクチャーを導入する。物理レイヤー内では、エンドポイントはリンクのネットワークを介して到達可能である。一般に、集中ルーティング・メカニズムに全ての通信を通過させるのを回避し、こうしてネットワーク輻輳を回避するために、相互作用するエンドポイントの位置に基づいて、ネットワークの適したリンクをインテリジェントに選択することが好ましい。物理レイヤー・リンクのインテリジェントな選択、および選択されたリンクを横断するデーター・パケットの適した変換を達成するために、実施形態では、調和して動作する２つの異なる技術、即ち、ドライバー２２３および２３３、ならびにディレクトリー・サービス２２０によって、アーキテクチャーがサポートされる。
【００３８】
[0044]  ドライバー２２３および２３３は、１つ以上のエンドポイントと関連付けられており、更にドライバーが補助するエンドポイントのタイプの関数として、データー・センター２２５内に埋め込まれている。エンドポイント（例えば、エンドポイント２３０）が物理装置（例えば、ノード２１２）においてホストされている場合、ドライバー２３３は、データー・パケットを直接エンドポイント間のトラフィックに入れるホスト・スイッチ（図示せず）内に実装される。この実施形態では、１つ以上のデーター・パケットがエンドポイント２３０に到着したことまたはエンドポイント２３０から発信したことを検出すると、ドライバー２３３は、ディレクトリ・サービス２２０に要求２７３を送ることによって、ルーティング情報を要請することができる。要求２７３は、データー・パケットのヘッダ内に組み込まれているソースＩＰアドレスおよび宛先ＩＰアドレスを伝える。ルーティング情報の要求２７３を受けると、ディレクトリー・サービス２２０は、応答２７４で回答することができる。応答２７４は、データー・パケットの転送路、およびこの転送路に適した変換動作を伝える。
【００３９】
[0045]  エンドポイント（例えば、エンドポイント２０１および２０２）が仮想装置（例えば、仮想装置２７０および２７５）にホストされている場合、ドライバー（例えば、ドライバー２２３）はネットワーク・スタック内に実装され、全ての既存のアダプターを隠し、ネットワークの１つの仮想化インターフェースを提示する。この実施形態では、ドライバー２２３は、独立したＶＭスイッチを表すことができ、または既存のＶＭスイッチ（例えば、ＶＭスイッチ２２２）の中に組み込むことができる。ＶＭスイッチ２２２は、実施形態では、データー・センター２２５の内部および外部エンドポイント間に、分離接続(isolated connectivity)を提供するために設けられている。これについては、図３を参照しながら更に詳しく論ずることにする。本明細書において使用される場合、「仮想装置スイッチ」、即ち、「ＶＭスイッチ」という用語は、限定を意図するのではなく、データー・センター、企業の私的ネットワーク、第三者ネットワーク等の中に存在し、サービス・アプリケーションのエンドポイント間でネットワークを跨いでデーター・パケットを安全に導く役割を担う任意のソフトウェア・ベースのコンポーネントを含むことができる。一例として、ＶＭスイッチは、ネットワーク管理のために一部のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を露出させる任意のネットワーク・エッジ・デバイス（１つまたは複数）（例えば、トップ・ラック・スイッチ、ノード内における物理ネットワーク・インタフェース・カード、ＶＭ内における仮想インターフェース・カード、または非仮想化ホスト内におけるネットワーキング・スタック）とすればよい。他の例では、ＶＭスイッチによって実行される動作の全てまたは一部（例えば、ディレクトリー・サービス２２０との通信、パケットのカプセル化、分解、変更、および他のアクション）は、ルーティング・モジュールによって実行されてもよい。したがって、ＶＭスイッチは、ルーティング・モジュール（１つまたは複数）、ネットワーク・エッジ・デバイス（１つまたは複数）、物理スイッチ（１つまたは複数）、ルーティング・デバイス（１つまたは複数）等の内１つ以上を具体化することができる。
【００４０】
[0046]  ドライバー２３３と同様、ドライバー２２３は、１つ以上のデーター・パケットがエンドポイント２０１または２０２のいずれかに到達または発信したことを検出したときに、ディレクトリ・サービス２２０に要求２７１を送ることによって、ルーティング情報を要請することができる。要求２７１は、データー・パケットのヘッダ内に組み込まれているソースＩＰアドレスおよび宛先ＩＰアドレスを伝える。ルーティング情報の要求２７１を受けると、ディレクトリー・サービス２２０は、応答２７２で回答することができる。応答２７２は、データー・パケットの転送路、およびこの転送路に適した変換動作を伝える。
【００４１】
[0047]  これより図２および図３を参照して、ドライバー２２３および２３３とディレクトリー・サービス２２０との間における追加の相互作用についてこれより論ずる。先に論じたように、ドライバーは、データー・センター２２５の複数のノード、およびデーター・センター２２５の外部にあるリソースに分散することができる。ドライバー２２３および２３３は、ＩＰトラフィックのレート、データー・センター２２５のテナントによって消費される計算ロード、およびノードがオンラインにされているかまたはオフラインにされているかというような、１つ以上の要因の関数として、データー・センター２２５内部にあるノードに動的にインスタンス化すること、およびこのノードから取り外すことができる。一実施形態では、ファブリック・コントローラ２３２が、ＶＭスイッチをインスタンス化するまたは取り外す役割を担う。
【００４２】
[0048]  動作において、ドライバー２２３および２３３は、これらそれぞれのノードの仮想ネットワーク・アダプターを表し、サービス・アプリケーションまたはサブネット内部にある特定のエンドポイントに対するゲートウェイとして機能する。この実施形態では、データー・パケットを送信するとき、どこで、どのように、そしてどの物理レイヤー・リンクを使用するかに関するルーティング決定をゲートウェイが行うトポロジーが規定される。内部および外部ノードにわたってドライバーを分散することによって、このゲートウェイ機能は今や仮想化され、ネットワークに亘って拡散されている。
【００４３】
[0049]  一実施形態例では、ルーティング決定は、常に集中サーバを介してデーター・パケットを送る必要がない転送路を決定するのに役立つ。更に、ルーティング決定は、接続毎／装置毎に特殊化することができる。一例では、ルーティング決定は、リモート・データー・センターに跨がるエンドポイントをリンクするセキュア・トンネルを採用するデーター・パケットに高位保護変換を適用することを決定することもできる。他の例では、ルーティング決定は、エンドポイントが共通のセキュア・ネットワークに共存するときに、データー・パケットのカプセル化またはヘッダの書き換えというような、一層軽量化した変換動作を採用することを決定することもできる。この例では、エンドポイントは同じサブネット内に存在することができ、データー・センター・ネットワークのサーバ間にある直接路を介して、互いに見ることができるのでもよい。したがって、ルーティング決定は、相互接続性を最適化するために、同じサブネットの中にあるエンドポイントが、共通の輻輳地点を有さない物理レイヤー・リンク上のルートを使用することができるという能力を利用することができる。これらおよびその他のルーティング決定については、図４を参照して更に詳しく説明する。
【００４４】
[0050]  実施形態では、ドライバー２２３および２３３内において、それぞれ、ルーティング／書き換えコンポーネント（ＲＣ）２２４および２３４が設けられる。動作において、ＲＣ２２４および２３４は、ノードまたはエンドポイントのオペレーティング・システムから発せられた各データー・パケット、あるいはセキュア・トンネルまたはネットワーク経路を介して送られた各データー・パケットを受け入れて、これらのデーター・パケットの内容（例えば、ヘッダ内部で伝えられる情報）に基づいて、正しい転送路と、必要であれば(if any)、変換動作とを決定することができる。一例では、ＲＣ２２４および２３４が、それが受け入れた各データー・パケットのソースＩＰアドレスおよび／または宛先ＩＰアドレスを調べて、ディレクトリー・サービス２２０にルーティング情報を求めて問い合わせる（例えば、要求２７１および２７３を介して）。ディレクトリー・サービス２２０は、要求２７１および２７３に対して、それぞれ、種々のタイプのルーティング情報を含むことができる応答２７２および２７４で回答することができる。したがって、ＲＣ２２４および２３４には、ルーティング情報に応答し、データー・パケットに対する異なる転送プロセスをサポートする複数のトンネリング／書き直しプロトコルを管理する能力がプロビジョニングされる。
【００４５】
[0051]  一般に、ディレクトリー・サービス２２０は、ネットワーク３１５の知識、ならびにネットワーク経路およびセキュア・トンネル３５０の知識を内部に保持する。一例として、この知識は、エンドポイントについての情報、どのネットワークにエンドポイントが存在するか、これらのネットワーク内にどのネットワーク経路が作られているのか、ネットワーク経路を跨ぐ特定の転送路に適した変換動作はどれか、およびどのように変換各ションが行われるかについての情報を含む。ルーティング情報を要請するＲＣ２２４および２３４に伴う動作において、ディレクトリー・サービス２２０は、このネットワーク知識を適用して、ネットワーク３１５内においてどのようにして第２エンドポイントに到達するか、第１エンドポイントに伝える。このために、ディレクトリー・サービス２２０は、仮想ＩＰアドレスと位置依存アドレスとの間のマッピング３１０を維持している。一実施形態例では、このマッピングは、相互接続されているエンドポイント間における１つ以上の論理的関連を維持し、ネットワーク到達可能性(reachability)を達成するために、これらのエンドポイントと関連のあるアクセス制御を施行する。一例では、この論理的関連は、サブネットのメンバーであるエンドポイント間における関連に関する。
【００４６】
[0052]  また、ディレクトリー・サービス２２０は、適した変換動作を認識する表３２０も維持することができる。一例では、表３２０は、通信ポリシーを施行するように設計されており、通例、顧客によってサービス・レベル契約（ＳＬＡ）によって適所に設定される。他の例では、通信ポリシーは、サービス・アプリケーションおよび／またはサブネットに対して特定的に設計され、どのシステム・プロセスにサブネットのメンバー・エンドポイントへのアクセスを付与するか、そして集中ルーティング・デバイスを伴うことなく、エンドポイントを直接接続することができるか否か管理する許可リストを含むことができる。更に他の例では、通信ポリシーは、ある種のエンドポイントに対してどのセキュリティ・レベルを施行すべきか明瞭にすることができる。他の例では、通信ポリシーは、ドライバーから要求を受けたときにマッピング３１０をスキャンして該当するエントリーを求め、この該当するエントリーの中にある情報に基づいて、生データーの送信が許可されているか否か判断するセキュリティ・モデルとして機能する。更に他の例では、通信ポリシーは、ポート番号またはネットワーク・アダプターに適用される規則を表すことができ、この規則は、ポート番号またはネットワーク・アダプターがある動作を実行することが許されているか否か確認するために、データー・センター２２５のノード内において利用することができる。
【００４７】
[0053]  ディレクトリー・サービス２２０がドライバーから要求を受けると、ディレクトリー・サービス２２０は以下の参照手順を実行することができる。ソースＩＰアドレスおよび宛先ＩＰアドレスによってマッピング３１０を検査して、物理ネットワーク３８０を介したデーター・パケットの転送路を構成する。対応する位置依存アドレスを特定する。または、転送路で表３２０を検査して、対応する変換動作を特定する。言い換えると、ディレクトリー・サービスは、データー集合（ソースＩＰアドレス、宛先ＩＰアドレス）を受信し、マッピング３１０および表３２０に対する変換によって、データー集合（転送路、変換動作）を返送する。返送データー集合は、要求元ドライバー内においてルーティング決定プロセスをサポートする。
【００４８】
[0054]  以下で更に詳しく論ずるが、変換動作は、限定ではなく、以下の内１つ以上を伴うことができる。位置依存アドレスを含めるようにデーター・パケットのヘッダを書き換える。データー・パケットをそれぞれの外部データー・パケット内に、内部データー・パケットとして、カプセル化する。各外部データー・パケットは、位置依存アドレスを伝えるヘッダを含む。または、トンネリング・プロトコルを使用してデーター・パケットをカプセル化する。最終的に、ディレクトリー・サービス２２０は、特定された転送路と特定された変換動作との指示を、要求元のドライバー（仮想ネットワーク・ゲートウェイ）に伝える応答を返送することができる。
【００４９】
[0055]  図２および図３では、情報を要求元ドライバーにプッシュする１つの集中サーバーとして図示されているが、ディレクトリー・サービス２２０の機能は、１組の装置に統合されセーブされたローカル・ファイルによって実現することもできる。または、予めプッシュ・アウトされている場合、ディレクトリー・サービス２２０の機能は、要求元ドライバーにおいて、前もってキャッシュしておくこともでき、外部要求を送るステップをなくすことができる。
【００５０】
[0056]  これより図３を参照すると、本発明の一実施形態にしたがって、仮想ネットワーク・アドレスを物理ネットワーク経路および変換動作に分解する、分散型計算環境３００のアーキテクチャ例の模式図が示されている。最初に、分散型計算環境３００は、物理ネットワーク３８０を含む。物理ネットワーク３８０は、図２を参照して論じられたように、企業の私的ネットワーク３２５、第三者ネットワーク３３５、およびクラウド計算プラットフォーム２００を含む。本明細書において使用する場合、「物理ネットワーク」という用語は、限定を意図しているのではなく、有形メカニズムおよび機器（たとえば、ファイバ線、回路ボックス、スイッチ、アンテナ、ＩＰルーター等）、ならびに地理的に離れた位置にあるエンドポイント間における通信を容易にする無形通信波および搬送波を含むことができる。一例として、物理ネットワーク３８０は、インターネット内で利用される任意の有線およびワイヤレス技術、または別個のネットワーク間における通信を促進するために利用可能な任意の有線およびワイヤレス技術を含むことができる。
【００５１】
[0057]  一般に、企業の私的ネットワーク３２５は、クラウド計算プラットフォーム２００の顧客によって管理されるリソース３７５のようなリソースを含む。多くの場合、これらのリソースは、顧客によって所有されるサービス・アプリケーションのコンポーネントの動作をホストおよびサポートする。エンドポイントＢ３８５は、このサービス・アプリケーションのコンポーネントの１つ以上を表す。実施形態では、図２の仮想装置２７０のようなリソースは、サービス・アプリケーションの離れて分散されているコンポーネントの動作をホストおよびサポートするために、図２のデーター・センター２２５内部で割り当てられる。エンドポイントＡ２１１およびＣ２１２は、サービス・アプリケーションのこれら離れて分散されているコンポーネントの内２つを表す。動作において、エンドポイントＡ２１１、Ｂ３８５、およびＣ２１２は、互いに調和して動作して、サービス・アプリケーションが適正に実行することを保証する。一例では、調和して行われる動作には、エンドポイントＡ２１１、Ｂ３８５、およびＣ２１２間における、物理ネットワーク３８０のネットワーク３１５を介したデーター・パケット３１６の送信を伴う。
【００５２】
[0058]  第三者ネットワーク３３５も、物理ネットワーク３８０内に設けられている。実施形態では、第三者ネットワーク３３５は、図３の企業の私的ネットワーク３２５でもクラウド計算プラットフォーム２００でもない任意の他のネットワークを指すことができる。一例として、第三者ネットワーク３３５は、サービス・アプリケーションによって使用される情報、またはサービス・アプリケーションの１つ以上の動作をサポートするためのソフトウェアを提供する販売業者によって使用される情報を保持するデーター・ストアを含むことができる。実施形態では、第三者ネットワーク３３５は、図６のクラウド計算プラットフォーム２００に利用可能なリソースのネットワークを表し、このリソースには、エンドポイントＤ３４５がインストールされているリソース３５５が含まれる。
【００５３】
[0059]  通例、リソース３５５および３７５、ならびにデーター・センター２２５は、そこで実行するエンドポイント（１つまたは複数）および／またはコンポーネント（１つまたは複数）の動作をサポートするために、何らかの形態の計算ユニット（例えば、中央演算装置、マイクロプロセッサー等）を含むか、または計算ユニットにリンクされている。本明細書で利用される場合、「計算ユニット」という句は、一般に、処理パワーおよび記憶メモリーを有する専用計算デバイスを指し、この専用計算デバイスは１つ以上のオペレーティング・システムまたは他の基礎ソフトウェアをサポートする。一例では、計算ユニットは、有形ハードウェア・エレメント、または装置で構成されており、これらはリソース３５５および３７５、ならびにデーター・センター２２５と統合されているか、または動作可能に結合されており、各デバイスが種々のプロセスおよび動作を実行することが可能になっている。他の例では、計算ユニットは、リソース３５５および３７５、ならびにデーター・センター２２５の各々によって収容されているコンピューター読み取り可能媒体に結合されたプロセッサー（図示せず）を含むことができる。一般に、コンピューター読み取り可能媒体は、少なくとも一時的に、プロセッサーによって実行可能な複数のコンピューター・ソフトウェア・コンポーネント（例えば、エンドポイントＡ２１１、Ｂ３８５、Ｃ２１２、およびＤ３４５）を格納する。本明細書において利用される場合、「プロセッサー」という用語は限定を意図するのではなく、計算容量(capacity)の範囲内において動作する(act)計算ユニットの任意のエレメントを含むことができる。このような容量の範囲において、プロセッサーは、命令を処理する有形品目(tangible article)として構成することができる。一実施形態例では、処理は、命令を取り出し、デコード／解釈し、実行し、そして書き戻すことを伴うこともできる。
【００５４】
[0060]  仮想ネットワーク・オーバーレイ３３０（「オーバーレイ３３０」）は、通例、サービス・アプリケーションのエンドポイント間において通信を促進し安全を確保するために、エンドポイントＡ２１１、Ｂ３８５、Ｃ２１２、およびＤ３４５を含むサービス・アプリケーションのような、１つのサービス・アプリケーション毎に作られる。一般に、オーバーレイ３３０は、物理ＩＰアドレスではなく、サービス・アプリケーションのエンドポイントを仮想的に表し、仮想表現を接続する仮想ＩＰアドレスのレイヤーを表す。他の実施形態では、オーバーレイ３３０は、サービス・アプリケーションを制御する顧客に割り当てられたリソースを含む物理ネットワーク３８０の上に構築された仮想ネットワークである。動作において、オーバーレイ３３０は、相互接続されているエンドポイントＡ２１１、Ｂ３８５、Ｃ２１２、およびＤ３４５の１つ以上の論理的関連を維持し、物理ネットワーク到達可能性(reachability)を達成するために（例えば、物理トランスポートを使用して）、エンドポイントＡ２１１、Ｂ３８５、Ｃ２１２、およびＤ３４５と関連のあるアクセス制御／セキュリティを施行することができる。
【００５５】
[0061]  これより図３および図４を参照して、種々の可能なルーティング決定についてこれより説明する。具体的には、図４は、本発明の一実施形態にしたがって、ディレクトリー・サービス２２０から配信されたルーティング情報をルーティング決定に適用する判断ツリー例４００の模式図を示す。先に論じたように、ドライバーは、部分的に、このドライバーにリンクされている対象のエンドポイントが、データー・パケットの発信エンドポイント、データー・パケットをターゲット・エンドポイントに転送するように動作する受信側エンドポイント、またはターゲット・エンドポイントのどれを表すかに基づいてルーティング決定を実行することができる。第１の例では、対象のエンドポイントが発信エンドポイント（例えば、エンドポイントＣ２１２）を表すとき、ブロック４０１に示すように、この発信エンドポイントと関連のあるドライバーは、この発信エンドポイントが、そこから生成された１つ以上のデーター・パケットを送信しようとしていることを検出することができる。次に、ブロック４０２に示すように、ドライバーは、対象のエンドポイントを指し示すソースＩＰアドレスと、宛先ＩＰアドレスとの指示を含む要求を送ることによって、ディレクトリー・サービス２２０に、参照手順を実行するように要請する。
【００５６】
[0062]  ブロック４０３に示すように、ディレクトリー・サービス２２０からドライバーに送られたルーティング情報に部分的に基づいて、ルーティング決定が実行される。このルーティング決定の結果、限定されるのではないが、以下の変換動作の内１つ以上を行うことができる。位置依存アドレスを含めるようにデーター・パケットのヘッダを書き換える（ブロック４０４参照）。データー・パケットにトンネリング・プロトコルを設定し、セキュア・トンネルを介してデーター・パケットをリディレクトする（ブロック４０５参照）。または、それぞれの外部データー・パケットの中に、データー・パケットを内部データー・パケットとしてカプセル化する（ブロック４０６参照）。外部データー・パケットは、各々、位置依存アドレスを伝えるヘッダを含む。
【００５７】
[0063]  一実施形態例では、ドライバーが、発信エンドポイントおよびターゲット・エンドポイントの双方が共通のデーター・センターまたはサブネット内に存在すると判断したとき、ルーティングの結果、ソースＩＰアドレスおよび宛先ＩＰアドレスをそれぞれの位置依存アドレスで書き換える変換動作を行うことができる。しかしながら、ドライバーが、ソースＩＰアドレスおよび宛先ＩＰアドレスが除去された場合受信側エンドポイントまたはターゲット・エンドポイントがデーター・パケットのヘッダを変換することができないと判断したとき（例えば、受信側／ターゲット・エンドポイントが、発信エンドポイントが存在するデーター・センターまたはサブネットとは異なるデーター・センターまたはサブネット内にある）、ルーティング決定の結果、データー・パケットのペイロードの中にソースおよび宛先ＩＰアドレスを保存するために、それぞれの外部データー・パケットの中にデーター・パケットを内部データー・パケットとしてカプセル化することができる。この直ぐ上の実施形態では、ドライバーは、エンドポイント間にあるネットワーク経路が実質的に十分保護されており、管理サービス・モデルのセキュリティ・ポリシーを満足することを認めることもできる。対照的に、エンドポイントの１つ以上を接続するネットワーク経路が、管理サービス・モデルによって命令された保護レベルまたは安全な接続のレベルを欠くと、ドライバーが判断した場合、ルーティング決定の結果、セキュア・トンネリング・プロトコルを含めるようにデーター・パケットを変換する変換動作を行うことができ、これによって不正な行為者によるデーター・パケットの傍受を回避しようとすることができる。
【００５８】
[0064]  ルーティング決定を実行すると、ブロック４０７に示すように、発信エンドポイントは、処理したデーター・パケットを受信側エンドポイント（例えば、エンドポイントＡ２１１またはＤ３４５）またはターゲット・エンドポイント（例えば、エンドポイントＢ３８５）に送信し始めることができる。受信側エンドポイントはここでは１つのネットワーク・ホップとして記載されているが、ネットワークの中には１つよりも多い中間ホップがある場合もあり、この場合、受信側エンドポイントが１つ以上の他の受信側エンドポイントに転送することが可能になることは認められ、理解されよう。第２の例では、対象のエンドポイントが受信側エンドポイントを表す場合、ブロック４０８に示すように、この受信側エンドポイントと関連のあるドライバーが、そこに到達した処理済みのデーター・パケットを検出することができる。次いで、ブロック４０９に示すように、ドライバーは、ソースＩＰアドレスおよび宛先ＩＰアドレスの指示を含む要求を送ることによって、参照手順を実行するようにディレクトリー・サービス２２０に要請することができる。
【００５９】
[0065]  ブロック４１０に示すように、ルーティング決定は、ディレクトリー・サービス２２０からドライバーに送られるルーティング情報に部分的に基づいて実行される。ルーティング決定によって、以下の変換動作の内１つ以上を行うことができる。ヘッダが書き換えられてカプセル化されたデーター・パケットをトンネル３５０を介してリディレクトする（ブロック４１１参照）（例えば、エンドポイントＤ３４５参照）。データー・パケットからトンネリング・プロトコルを除去する（ブロック４１２参照）。あるいは、カプセル化されたデーター・パケットまたはヘッダが書き換えられたデーター・パケットを他のネットワーク経路を経由して転送する（ブロック４１３参照）（例えば、エンドポイントＡ２１１参照）。この場合も、ネットワーク経路を経由してデーター・パケットを転送する変換動作、またはトンネルを介してデーター・パケットをリディレクトする変換動作の内どちらを呼び出すかについてのルーティング決定には、エンドポイントが安全な接続を介してリンクされていること、または保護されてないネットワーク（例えば、インターネット）に及ぶ接続を介してリンクされていることをそれぞれ確認することが必要になる。
【００６０】
[0066]  ルーティング決定を実行するとき、受信側エンドポイントは、ブロック４１４に示すように、処理したデーター・パケットをターゲット・エンドポイント（例えば、エンドポイントＢ３８５）に送信し始めることができる。第３の例では、対象のエンドポイントがターゲット・エンドポイントを表すとき、ブロック４１５に示すように、このターゲット・エンドポイントと関連のあるドライバーは、そこに到達する処理済みのデーター・パケットを検出することができる。次いで、ブロック４１６に示すように、ドライバーは、ソースＩＰアドレスおよびターゲット・エンドポイントを指し示す宛先ＩＰアドレスの指示を含む要求を送ることによって、参照手順を実行するようにディレクトリー・サービス２２０に要請することができる。
【００６１】
[0067]  ルーティング決定は、ブロック４１７に示すように、ディレクトリー・サービス２２０からドライバーに送られるルーティング情報に部分的に基づいて実行される。対象のエンドポイントがターゲット・エンドポイントを表すとき、ルーティング決定によって、以下の変換動作の内１つ以上を行うことができる。書き換えられたデーター・パケットのヘッダを復元する（ブロック４１８参照）。消費の準備をするために、データー・パケットからトンネリング・プロトコルを除去する（ブロック４１９参照）。または、カプセル化したデーター・パケットを分解する（ブロック４２０参照）。
【００６２】
[0068]  これより図５に移ると、本発明の一実施形態にしたがって、ドライバーからの要求に応答して、適した物理ネットワーク経路および変換動作を特定する方法５００を表すフローチャートが示されている。以上の論述から拾い集められる(glean)ように、方法５００のステップは、図２および図３のディレクトリー・サービス２２０の観点から書かれている。最初に、方法５００は、ブロック５１０に示すように、仮想ＩＰアドレスと位置依存アドレスとの間のマッピングを維持するディレクトリー・サービスを提供するステップを含む。また、ディレクトリー・サービスは、適した変換動作を認識する表も維持することができる。一例では、この表は、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーター・パケット・トラフィックを管理する通信ポリシーにしたがって設計される。他の例では、この表は、顧客のサービス・アプリケーションをホストするデーター・センターの顧客のために作られたサービス・モデル（例えば、サービス・レベル同意（ＳＬＡ））に基づく。
【００６３】
[0069]  方法５００は、更に、ブロック５２０に示すように、対象のエンドポイントと関連のある、またはこれとローカルに通信するために作られた仮想ネットワーク・ゲートウェイ、またはドライバーからの要求を受けるステップを含むことができる。通例、この要求は、受信側エンドポイントによって受け入れられた１つ以上のデーター・パケットのヘッダによって伝えられたソースＩＰアドレスおよび宛先ＩＰアドレスの指示を含む。この要求を受けると、ディレクトリー・サービスは、以下の参照手順を実行することができる（ブロック５３０参照）。ソースＩＰアドレスおよび宛先ＩＰアドレスによってマッピングを検査して、物理ネットワークを通るデーター・パケットの転送路を構成する、対応する位置依存アドレスを特定する（ブロック５４０参照）。および／または転送経路によって表を検査し、対応する変換動作を特定する（ブロック５５０参照）。変換動作は、限定するのではないが、以下の内１つ以上を伴うことができる。位置依存アドレスを含めるように、データー・パケットのヘッダを書き換える。この書き換えを元に戻す。それぞれの外部データー・パケットの中に、データー・パケットを内部データー・パケットとしてカプセル化する。各データー・パケットは、位置依存アドレスを伝えるヘッダを含む。カプセル化されたデーター・パケットを分解する。データー・パケットにトンネリング・プロトコルを設定する。トンネリング・プロトコルを除去する。ブロック５６０に示すように、ディレクトリー・サービスは、特定された転送路および特定された変換動作の指示を仮想ネットワークに伝える応答を返すことができる。
【００６４】
[0070]  本発明の実施形態について、特定の実施形態に関して説明してきたが、これらは、あらゆる観点において、限定ではなく例示であることを意図している。本発明の実施形態に関する技術分野の当業者には、本発明の範囲から逸脱することなく、代替実施形態も明白となろう。
【００６５】
[0071]  以上の説明から、本発明は、先に明記した全ての目標および目的を、本システムおよび方法には自明でありそして固有である他の利点と共に達成するのに相応しく構成されていることが分かるであろう。尚、ある種の特徴およびサブコンビネーションは有益であり、他の特徴およびサブコンビネーションを参照しなくても採用できることは言うまでもない。これは、請求項の範囲によって想定されていることであり、その範囲に含まれることとする。
【図１】
2013533689.tif 000003
【図２】
2013533689.tif 000004
【図３】
2013533689.tif 000005
【図４】
2013533689.tif 000006
【図５】
2013533689.tif 000007
【国際調査報告】
2013533689.tif 000008
2013533689.tif 000009
2013533689.tif 000010