"コンピューター実行可能命令が具体化された1つ以上のコンピューター読み取り可能媒体であって、前記命令が実行されると、エンドポイント間におけるデーターパケットの配信を管理する方法を実行し、前記方法が、第1エンドポイントにおいて1つ以上のデーターパケットを検出するステップであって、前記1つ以上のデーターパケットの各々が、ソースアドレスおよび宛先アドレスを含むヘッダを含む、ステップと、前記ソースアドレスおよび前記宛先アドレスを伝える要求を、ディレクトリーサービスに送るステップと、転送路を伝える応答を前記ディレクトリーサービスから受けるステップと、前記受けた転送路に基づいて、前記1つ以上のデーターパケットを回送することを含むルーティング決定を実行するステップと、前記受けた転送路に基づいて、前記1つ以上の回送されたデーターパケットを第2エンドポイントに送信するステップと、を含む、1つ以上のコンピューター読み取り可能媒体。請求項1記載の1つ以上のコンピューター読み取り可能媒体において、前記方法が、更に、変換動作を伝える前記応答を、前記ディレクトリーサービスから受けるステップを含む、1つ以上のコンピューター読み取り可能媒体。請求項2記載の1つ以上のコンピューター読み取り可能媒体において、ルーティング決定を実行するステップが、更に、前記受けた変換動作に基づいて、前記1つ以上のデーターパケットを変換するステップを含む、1つ以上のコンピューター読み取り可能媒体。請求項3記載の1つ以上のコンピューター読み取り可能媒体において、前記1つ以上のデーターパケットを変換するステップが、サービスモデルにアクセスし、前記サービスモデルが、前記第1エンドポイントと前記第2エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したときに行われる、1つ以上のコンピューター読み取り可能媒体。請求項1記載の1つ以上のコンピューター読み取り可能媒体において、前記第1エンドポイントが、前記1つ以上のデーターパケットを発信したエンドポイントを表し、前記第2エンドポイントが、前記1つ以上の回送されたデーターパケットのヘッダによって目標にされたエンドポイントを表す、1つ以上のコンピューター読み取り可能媒体。請求項1記載の1つ以上のコンピューター読み取り可能媒体において、前記転送路に基づいて前記1つ以上のデーターパケットを回送するステップが、前記1つ以上のデーターパケットの前記ヘッダ内にある前記ソースアドレスおよび前記宛先アドレスを除去するステップと、前記ソースアドレスおよび宛先アドレスを、物理ネットワークのそれぞれの位置依存アドレスと置き換えるステップと、を含む、1つ以上のコンピューター読み取り可能媒体。請求項6記載の1つ以上のコンピューター読み取り可能媒体において、前記ソースアドレスおよび宛先アドレスを置き換えるステップが、前記第1エンドポイントおよび前記第2エンドポイントが共通のデーターセンター内に存在することを確認したとき、および前記ソースアドレスおよび前記宛先アドレスが共通の仮想空間に属することを確認したときに行われる、1つ以上のコンピューター読み取り可能媒体。請求項1記載の1つ以上のコンピューター読み取り可能媒体において、前記転送路に基づいて前記1つ以上のデーターパケットを回送するステップが、それぞれの外部データーパケットの中に前記1つ以上のデーターパケットを内部データーパケットとしてカプセル化するステップを含み、前記外部データーパケットが、各々、物理ネットワークの位置依存アドレスを露出するヘッダを含む、1つ以上のコンピューター読み取り可能媒体。請求項8記載の1つ以上のコンピューター読み取り可能媒体において、前記1つ以上のデーターパケットをカプセル化するステップが、前記ソースアドレスおよび前記宛先アドレスが除去された場合、前記第2エンドポイントが前記1つ以上のデーターパケットのヘッダを変換できないと判断したときに行われる、1つ以上のコンピューター読み取り可能媒体。請求項1記載の1つ以上のコンピューター読み取り可能媒体において、前記第1エンドポイントがデーターパケットを送信するための接続を作る毎に、ドライバーがルーティング決定を実行する、1つ以上のコンピューター読み取り可能媒体。請求項10記載の1つ以上のコンピューター読み取り可能媒体において、前記ドライバーが、前記1つ以上のデーターパケットを受け入れて、前記1つ以上のデーターパケットの前記ヘッダから前記ソースアドレスおよび前記宛先アドレスを読み出すように構成されているルーティングコンポーネントを含み、前記第1エンドポイントが前記第2エンドポイントとの接続を作ったときに、前記ドライバーが、前記ソースアドレスおよび前記ネットワークアドレスを前記ディレクトリーサービスに伝達するように構成された、1つ以上のコンピューター読み取り可能媒体。エンドポイント間における通信をサポートし、分離するコンピューターシステムであって、仮想インターネットプロトコルIPアドレスと物理ネットワークの位置依存アドレスとの間のマッピングを維持するディレクトリーサービスと、ソースIPアドレスおよび宛先IPアドレスを含むヘッダが設けられた1つ以上のデーターパケットを生成する第1エンドポイントであって、前記ソースIPアドレスが前記第1エンドポイントを指し示し、前記宛先IPアドレスが第2エンドポイントを指し示す、第1エンドポイントと、前記第1エンドポイントによって作られた接続毎に、ルーティング決定を実行するドライバーと、を含み、前記ルーティング決定の実行が、a前記ソースIPアドレスおよび前記宛先IPアドレスの関数として、転送路および変換動作を決定するために、前記ディレクトリーサービスと通信し、b前記第1エンドポイントおよび前記第2エンドポイントが共通のデーターセンター内に存在すると判断したとき、前記ソースIPアドレスおよび前記宛先IPアドレスを、前記転送路のそれぞれの位置依存アドレスで書き換え、c前記ソースアドレスおよび前記宛先アドレスが除去された場合、前記第2エンドポイントが前記1つ以上のデーターパケットの前記ヘッダを変換できないと判断したとき、前記1つ以上のデーターパケットをそれぞれの外部データーパケットの中に内部データーパケットとしてカプセル化し、前記外部データーパケットが、各々、前記転送路の前記位置依存アドレスを露出するヘッダを含み、d前記変換動作が、前記第1エンドポイントと前記第2エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したとき、前記受けた変換動作に基づいて、前記1つ以上のデーターパケットを変換する、ことを含む、コンピューターシステム。請求項12記載のコンピューターシステムにおいて、前記ソースIPアドレスおよび前記宛先IPアドレスが、それぞれ、前記第1エンドポイントおよび前記第2エンドポイントの露出された機能にしたがって割り当てられ、前記位置依存アドレスが、それぞれ、前記物理ネットワーク内における前記第1エンドポイントおよび前記第2エンドポイントの位置にしたがって割り当てられる、コンピューターシステム。請求項12記載のコンピューターシステムにおいて、前記ディレクトリーサービスが、予め作られているトンネル、または前記第1エンドポイントおよび前記第2エンドポイントをリンクするネットワーク経路のレコードに基づいて、前記適した変換動作を前記ドライバーに分与する表を維持する、コンピューターシステム。分散型仮想ネットワークゲートウェイからの要求に応答して、ネットワーク経路および変換動作を特定するコンピューター化方法であって、仮想インターネットプロトコルIPアドレスと位置依存アドレスとの間のマッピングを維持し、更に適した変換動作を認識する表を維持するディレクトリーサービスを設けるステップであって、前記表が、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーターパケットトラフィックを管理する通信ポリシーにしたがって設計される、ステップと、受信側エンドポイントと通信する仮想ネットワークゲートウェイから要求を受けるステップであって、前記要求が、前記受信側エンドポイントによって受け入れられた1つ以上のデーターパケットのヘッダによって伝えられたソースIPアドレスおよび宛先IPアドレスの指示を含む、ステップと、物理ネットワークを通る前記1つ以上のデーターパケットの転送路を構成する、対応する位置依存アドレスを特定するために、前記ソースIPアドレスおよび前記宛先IPアドレスによって、前記マッピングを検査するステップと、対応する変換動作を特定するために、前記転送路によって前記表を検査するステップであって、前記変換動作が、a前記位置依存アドレスを含めるために前記1つ以上のデーターパケットの前記ヘッダを書き換える、b前記1つ以上のデーターパケットをそれぞれの外部データーパケットの中に内部データーパケットとしてカプセル化し、前記外部データーパケットが、各々、前記位置依存アドレスを伝えるヘッダを含む、または、c前記1つ以上のデーターパケットにトンネリングプロトコルを設定する、の内少なくとも1つを含む、ステップと、前記特定した転送路および前記特定した変換動作の指示を、前記仮想ネットワークゲートウェイに伝える応答を戻すステップであって、前記仮想ネットワークゲートウェイが前記応答を前記受信側エンドポイントに伝達し、前記受信側エンドポイントが、前記1つ以上のデーターパケットをそこから送信するときに、前記特定した転送路および前記特定した変換動作を実施する、ステップと、を含む、コンピューター化方法。0003したがって、物理装置ローカル装置ネットワークスタックに組み込むまたは仮想装置仮想交換ネットワークスタックに組み込むの中にドライバーを埋め込むことによって、仮想ネットワークゲートウェイまたはドライバーをデーターセンター全域に分散させる新興技術を採用すれば、最適なネットワーク経路を発見し利用することによってデーターパケットの送信を促進し、ゲートウェイの機能を分散させることによってネットワークの輻輳を低減し、データーセンターの顧客の通信を更に分離するのに役立つであろう。0004この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。0005本発明の実施形態は、先に述べた問題に取り組む、分散型仮想ネットワークゲートウェイのアーキテクチャーを提供する。これらのゲートウェイは、ドライバーの形態をなすことができ、物理装置ローカル装置ネットワークスタックに組み込むまたは仮想装置仮想交換ネットワークスタックに組み込むの中にこれらのドライバーを埋め込むことによって、データーセンター全域に、ドライバーをプロビジョニングすることができる。以下で詳しく説明するが、このドライバーは、最適なネットワーク経路を発見し利用することによってデーターパケットの送信を促進し、ゲートウェイの機能を分散させることによってネットワークの輻輳を低減し、データーセンターの顧客の通信を更に分離するように機能する。更に、このドライバーは、クラウド計算プラットフォームにおいて実行する顧客のサービスの保全性を保護する。クラウド計算プラットフォームは、複数のテナント例えば、クラウド当たり数万箇所がクラウドサービスデーターセンターの中にある計算リソースを共有することを可能にする。0006一般に、前述のドライバーは、サービスアプリケーションに割り当てられたエンドポイント間における通信の最も適したフォーマットおよび経路を選択しつつ、データーセンターにおける他のリソースから割り当てられたネットワークアダプターを仮想的に区分することをサポートする。明確化のために、エンドポイントは、仮想装置VMおよび/または物理装置にインスタンス化されているネットワークアダプターを含むことができる。通信の中でデーターパケットのフォーマットおよび経路の選択を行うために、実施形態では、ドライバーはディレクトリーサービスに働きかけ、ディレクトリーサービスは、ドライバーがそれぞれのソースエンドポイントおよび宛先エンドポイントに対してルーティングを決定するときに、ドライバーを補助する。ディレクトリーサービスから戻された情報によって増強され、ドライバーはそこからのデーターパケットのルーティングを適正に管理し、同時に、データーパケットを適正に変換することによって、不正な通信を防止するように機能する。0007一実施形態例では、ドライバーは、仮想化ゲートウェイ機能を、物理ネットワークの中にあるノードの複数の仮想化エンドポイントに分散させるように動作する。最初に、ネットワークノードにインスタンス化されたエンドポイントと協同するために、ドライバーがプロビジョニングされる。更に、仮想インターネットプロトコルIPアドレスと位置依存アドレスとの間のマッピング、およびネットワーク内のエンドポイントを接続する既知の経路にしたがって、変換動作を列挙するテーブルを維持するために、ディレクトリーサービスが実施される。ドライバーの各々は、中央位置においてドライバーから除去されたときに、ディレクトリーサービスとの通信が可能であり、またドライバー内部に組み込まれたとき、ディレクトリーサービスにローカルにアクセスすることができる。0008動作において、受信側エンドポイントは、特定のドライバーにリンクされており、1つ以上のデーターパケットを受信することができる。ドライバーは、データーパケットのヘッダを読み取って、ソースIPアドレスおよび宛先IPアドレスを確認することができる。更に、ドライバーは、ソースおよび宛先IPアドレスを、ルーティング情報要求の中にパッケージ化し、この要求をディレクトリーサービスに、内部または外部のいずれにでも伝えることができる。ディレクトリーサービスは、このドライバーからの要求に対して、ソースおよび宛先IPアドレスによってマッピングを調べることによって、転送経路の適した位置依存アドレスを回答することができる。加えて、ディレクトリーサービスは、転送路で表を調べることによって、この要求に対して、適した変換動作1つまたは複数を回答することができる。この変換動作1つまたは複数は、以下の内1つ以上を含むことができる。位置依存アドレスを含むようにデーターパケットのヘッダを書き換える。位置依存アドレスを伝えるヘッダと共に組み立てられたそれぞれの外部データーパケットの中に、内部データーパケットとして、データーパケットをカプセル化する。または、トンネリングプロトコルを使用してデーターパケットを構成する例えば、データーセンターまたは顧客によって作られたサービスモデルのセキュリティポリシー毎に。0009ドライバーにおいてルーティング情報を受信すると、このドライバーは、転送経路および変換動作を受信側エンドポイントに配信することができる。一方、受信側エンドポイントは転送路を実施し、そこからデーターパケットを送信するときに変換動作を適用する。他の実施形態では、ドライバーは、その機能を実行することをエンドポイント例えば、受信側エンドポイントに頼るのではなく、適した変換動作を直接データーパケットに対して実行することができる。0010したがって、ドライバーおよびディレクトリーサービスが調和して動作してインフォームドルーティング決定を行ったとき、ドライバーにリンクされている受信側エンドポイントに、最適なネットワーク経路の選択肢を提供することができ、これによってネットワークの輻輳を低減し、更に適した変換動作を提供することができ、これによってデーターセンター外部における送信の分離を実現する。0017本発明の主題について、本明細書では、法的要件を満たすために具体性をもって説明する。しかしながら、説明自体は、本特許の範囲を限定することは意図していない。むしろ、本発明者は、特許請求する主題は、本文書において記載するステップとは異なるステップまたは同様のステップの組み合わせを含むように、他の現在または今後の技術と関連付けて、別の方法で具体化してもよいことを想定している。更に、ステップおよび/またはブロックという用語は、本明細書においては、採用される方法の異なるエレメントを言外に意味するために使用することもできるが、個々のステップの順序が明示的に記載されているのでなければ、そして記載されている場合を除いて、この用語は、本明細書において開示される種々のステップ間において、いかなる特定の順序をも暗示するように解釈してはならない。0018本発明の実施形態は、局在的に仮想化ゲートウェイ機能を設ける分散型ドライバーにおいてインフォームドルーティング決定を行う方法、コンピューターシステム、およびコンピューター読み取り可能媒体に関する。0019一態様では、本発明の実施形態は、コンピューター実行可能命令が具体化されている1つ以上のコンピューター読み取り可能媒体であって、前記命令が実行されると、エンドポイント間におけるデーターパケットの配信を管理する方法を実行する1つ以上のコンピューター読み取り可能媒体に関する。実施形態では、この方法は、第1エンドポイントにおいて1つ以上のデーターパケットを検出するステップを含む。通例、データーパケットの各々は、ソースアドレスおよび宛先アドレスを含むヘッダを含む。第1エンドポイントと関連のあるドライバーが、応答をディレクトリーサービスに送ることができる。一実施形態例では、この要求は、ソースアドレスおよび宛先アドレス、またはその何らかの指示を伝える。この要求を受けると、ディレクトリーサービスは参照を実行して、ソースアドレスおよび宛先アドレスを転送路および変換動作に変換する。この転送路および変換動作は、ディレクトリーサービスからドライバーに応答の中で送ることができる。しかしながら、ドライバーおよびエンドポイントは、発信、受信側、およびターゲットエンドポイントに関するディレクトリーサービスにおける規則に一致しし損ねたデーターパケットの内1つ以上を欠落させる能力も維持する。このデーターパケットを欠落させる能力によって、ネットワーク内において分離を施行する権限をドライバーに与える。0020応答を受信すると、ドライバーは、ルーティング決定を実行することができる。このルーティング決定は、部分的に、第1エンドポイントが、データーパケットの発信エンドポイントか、またはデーターパケットをターゲットエンドポイントに転送するように動作する受信側エンドポイントか、またはターゲットエンドポイントかに基づく。第1エンドポイントが発信エンドポイントを表すときソースアドレスによって特定される、ルーティング決定によって以下の変換動作の内1つ以上を行うことができる。a位置依存アドレスを含めるようにデーターパケットのヘッダを書き換える。bデーターパケットをそれぞれの外部データーパケットの中に内部データーパケットとしてカプセル化する。外部データーパケットは、各々、位置依存アドレスを伝えるヘッダを含む。または、cデーターパケットにトンネリングプロトコルを設定する。第1エンドポイントが受信側エンドポイントを表すとき、ルーティング決定によって以下の変換動作の内1つ以上を行うことができる。a他のネットワーク経路を通って、カプセル化されたデーターパケット、またはヘッダが書き換えられたデーターパケットを転送する。bトンネルを介して、カプセル化されたデーターパケット、またはヘッダが書き換えられたデーターパケットを転送する。または、cトンネリングプロトコルをデーターパケットから除去する。第1エンドポイントがターゲットエンドポイントを表すとき宛先アドレスによって特定される、ルーティング決定によって以下の変換動作の内1つ以上を行うことができる。aカプセル化されたデーターパケットを分解する。b書き換えられたデーターパケットのヘッダを復元する。または、c消費の準備をするために、データーパケットからトンネリングプロトコルを除去する。0021他の態様では、本発明の実施形態は、エンドポイント間における通信をサポートし分離するコンピューターシステムに関する。最初に、このコンピューターシステムは、ディレクトリーサービス、第1エンドポイント、第2エンドポイント、および第1エンドポイントにローカルにプロビジョニングされたドライバーを含む。一般に、ディレクトリーサービスは、仮想インターネットプロトコルIPアドレスと物理ネットワークの位置依存アドレスとの間のマッピングを維持する。動作において、第1エンドポイントは、ソースIPアドレスおよび宛先IPアドレスを含むヘッダと共に組み立てられた1つ以上のデーターパケットを生成し始めることができる。この場合、ソースIPアドレスは第1発信エンドポイントを指し示し、宛先IPアドレスは第2ターゲットエンドポイントを指し示す。0022第1エンドポイントがノード例えば、物理装置または仮想装置から第2エンドポイントにデーターパケットを送信しようとしていることを検出すると、ドライバーはルーティング決定を実行する。一実施形態例では、第1エンドポイントによって作られた接続毎に、ドライバーによって別個のルーティング決定が呼び出され実行される。実施形態では、ルーティング決定の実行は、限定ではないが、以下のステップを伴う。ディレクトリーサービスと通信して、部分的にソースIPアドレスおよび宛先IPアドレスに基づいて、転送路および変換動作を決定するステップと、第1エンドポイントおよび第2エンドポイントが共通のデーターセンター内に存在するか否か判断するステップと、ソースIPアドレスおよび宛先IPアドレスが除去されると第2エンドポイントがデーターパケットのヘッダを変換できないか否か判断するステップ。0023第1エンドポイントおよび第2エンドポイントが共通のデーターセンター内に存在すると判断したとき、ドライバーはソースIPアドレスおよび宛先IPアドレスを、転送路の位置依存アドレスでそれぞれ書き換えることができる。他の実施形態では、ドライバーは、データーパケットをそれぞれの外部データーパケットの中に内部データーパケットとしてカプセル化することができ、各外部データーパケットは、転送路の位置依存アドレスを露出するヘッダを含む。カプセル化の変換動作を呼び出す様々なシナリオがある。一例では、ソースIPアドレスおよび宛先IPアドレスが除去されると第2エンドポイントがデーターパケットのヘッダを変換できないと判断したときに、カプセル化がトリガーされる。カプセル化が必要となる可能性がある他の可能なシナリオには、aソースおよび宛先IPアドレスの間に何らかの形態のネットワーク変換NATが存在することを検出する、および/またはbソースおよび宛先IPアドレスから、それらの位置依存アドレスおよびそれらの仮想IPアドレスからはもはや1対1のマッピングがなくなるように、第1および第2エンドポイント例えば、発信およびターゲットネットワークアダプターが複数の仮想ネットワークに及ぶことを認識することを含むことができる。0024変換動作が、第1エンドポイントと前記第2エンドポイントとの間における安全な接続に保護レイヤーを設けることを命令すると判断したときに、ドライバーは、受け入れた変換動作に基づいて、データーパケットを変換することができる。一例では、この変換動作は、トンネリングプロトコル例えば、セキュアソケットトンネリングプロトコルSSTPまたはインターネットプロトコルセキュリティIPsecをデーターパケットに適用することを伴う。0025更に他の態様では、本発明の実施形態は、分散型仮想ネットワークゲートウェイからの要求に応答して、ネットワーク経路および変換動作を特定するコンピューター化方法に関する。最初に、この方法は、仮想インターネットプロトコルIPアドレスと位置依存アドレスとの間のマッピングを維持するディレクトリーサービスを設けるステップを含む。また、ディレクトリーサービスは、適した変換動作を認識する表も維持する。一例では、この表は、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーターパケットトラフィックを管理する通信ポリシーにしたがって設計される。他の例では、この表は、顧客のサービスアプリケーションをホストするデーターセンターのホストに対して作られたサービスモデル例えば、サービスレベル同意SLAに基づく。0026更に、この方法は、受信側エンドポイントと通信する仮想ネットワークゲートウェイから要求を受けるステップも含むことができる。通例、この要求は、受信側エンドポイントによって受け入れられた1つ以上のデーターパケットのヘッダによって伝えられたソースIPアドレスおよび宛先IPアドレスの指示を含む。この要求を受けると、ディレクトリーサービスは、以下の参照手順の内少なくとも1つを実行することができる。物理ネットワークを通るデーターパケットの転送路を構成する、対応する位置依存アドレスを特定するために、ソースIPアドレスおよび宛先IPアドレスによって、マッピングを検査する。または、対応する変換動作を特定するために、転送路によって表を検査する。以下で更に詳しく論じられるが、変換動作は、限定ではないが、以下の内1つ以上を伴うことができる。位置依存アドレスを含めるために1つ以上のデーターパケットのヘッダを書き換える。1つ以上のデーターパケットをそれぞれの外部データーパケットの中に内部データーパケットとしてカプセル化する。外部データーパケットは、各々、前記位置依存アドレスを伝えるヘッダを含む。または、1つ以上のデーターパケットにトンネリングプロトコルを設定する。最終的に、ディレクトリーサービスは、特定した転送路および前記特定した変換動作の指示を、仮想ネットワークゲートウェイに配信する応答を戻すことができる。0027以上、本発明の実施形態の全体像について端的に説明したので、本発明の実施形態を実現するのに適した動作環境例について以下に説明する。0028図面全体を参照し、最初に図1を特に参照すると、本発明の実施形態を実現する動作環境例が示されており、全体的に計算デバイス100と呼ぶことにする。計算デバイス100は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に対して何の限定も示唆することは意図していない。また、計算デバイス100が、図示されているコンポーネントの任意の1つまたはその組み合わせに関しても、何らかの依存性や要件も有するように解釈してはならない。0029本発明の実施形態は、コンピューターコードまたは装置使用可能命令という一般的なコンテキストで説明することができる。本発明は、コンピューターあるいはパーソナルデーターアシスタントまたはその他のハンドヘルドデバイスのようなその他の装置によって実行される、プログラムコンポーネントのようなコンピューター実行可能命令を含む、コンピューターコードまたは装置使用可能命令という一般的な文脈で説明することができる。一般に、プログラムコンポーネントは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するコード、および/または特定の抽象的データー型を実装するコードに言及する。本発明は、ハンドヘルドデバイス、消費者用電子機器、汎用コンピューター、特殊計算デバイス等を含む、種々のシステム構成において実用化することができる。また、本発明は、分散型計算環境においても実用化することができ、その場合、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される。0030図1を参照すると、計算デバイス100は、以下のデバイスを直接的または間接的に結合するバス110を含む。メモリー112、1つ以上のプロセッサー114、1つ以上の外部記憶コンポーネント116、入出力I/Oポート118、I/Oコンポーネント120、および例示的な電源122である。バス110は、1系統以上のバスアドレスバス、データーバス、またはその組み合わせ等であってもよいものを表すことができる。図1の種々のブロックは、明確化のために、線で示すが、実際には、種々のコンポーネントの区分けはそれほど明確でなく、比喩的には、これらの線をもっと正確に示すとすれば、灰色で曖昧となるであろう。例えば、ディスプレイデバイスのようなプレゼンテーションコンポーネントをI/Oコンポーネントであると考えることもできる。また、プロセッサーはメモリーを有する。本発明の発明者はこのようなことは技術の本質であると認識しており、図1の線図は、本発明の1つ以上の実施形態と合わせて使用することができる計算デバイスの一例を例示するに過ぎないことを繰り返しておく。ワークステーション、サーバー、ラップトップ、ハンドヘルドデバイス等というようなカテゴリー間では区別を行わない。これは、全てが図1の範囲に該当すると考えられ、コンピューターまたは計算デバイスを指すからである。0031計算デバイス100は、通例、種々のコンピューター読み取り可能媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、ランダムアクセスメモリーRAM、リードオンリーメモリーROM、電子的消去可能プログラマブルリードオンリーメモリーEEPROM、フラッシュメモリーまたは他のメモリー技術、CDROM、ディジタルバーサタイルディスクDVDあるいは他の光学またはホログラフ媒体、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができそしてコンピューター100によってアクセスされる他の任意の媒体も含むことができる。0032メモリー112は、揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。このメモリーは、リムーバブル、非リムーバブル、またはその組み合わせでもよい。ハードウェアデバイスの例には、ソリッドステートメモリー、ハードドライブ、光ディスクドライブ等が含まれる。計算デバイス100は、メモリー112またはI/Oコンポーネント120のような種々のエンティティからデーターを読み取る1つ以上のプロセッサーを含む。プレゼンテーションコンポーネント1つまたは複数116は、データー指示をユーザまたは他のデバイスに提示する。プレゼンテーションコンポーネントの例には、ディスプレイデバイス、スピーカー、印刷コンポーネント、振動コンポーネント等が含まれる。I/Oポート118は、I/Oコンポーネント120を含む他のデバイスに計算デバイス100を論理的に結合することを可能にする。これら他のデバイスの一部は内蔵されていてもよい。例示的なI/Oコンポーネントには、マイクロフォン、ジョイスティック、ゲームパッド、衛星ディッシュ、スキャナー、プリンター、ワイヤレスデバイス等が含まれる。0033図1および図2を参照すると、ノード211およびノード212は、図1の計算デバイス例100によって実現することができる。更に、エンドポイント201,202、および230は、図1のメモリー112の一部にアクセスし、図1のプロセッサー114の一部において実行することができる。同様に、ドライバー223および233は、ローカルゲートウェイ機能をVMスイッチ222仮想装置270および275におけるエンドポイント201および202をサポートするの仮想スイッチネットワークスタック内および/または物理装置1つまたは複数エンドポイント230をサポートするに対するローカル装置ネットワークスタック内に埋め込み、図1のメモリー112の一部にアクセスし、図1のプロセッサー114の一部において実行することができる。0034これより図2に移ると、本発明の一実施形態によるブロック図が示されており、種々の変換形態を使用してディレクトリーサービス220から収集されたルーティング情報を使用することによって、ドライバー223および233においてルーティング決定を実行するように構成されているクラウド計算プラットフォーム例200を示す。実施形態では、1つのクラウド計算プラットフォーム200に動作可能に結合されるものとして図示されているが、ディレクトリーサービス220は特定のクラウドの範囲外に存在することもできる即ち、ディレクトリーサービス220は、公衆および私的クラウド1つまたは複数に跨がって共有されるクラウドを表すことができる。この種々のクラウドと共に動作する能力によって、ディレクトリーサービスは、ネットワークが複数のクラウドに及ぶをことを可能にする。0035尚、図2に示されているクラウド計算プラットフォーム200は、1つの適した計算システム環境の例に過ぎず、本発明の実施形態の使用範囲や機能に関して、何の限定をも示唆することも意図していないことは言うまでもない。例えば、クラウド計算プラットフォーム200は、公衆クラウド、私的クラウド、または専用クラウドであってもよい。また、クラウド計算プラットフォーム200が、図示されているコンポーネントの任意の1つまたはその組み合わせに関しても、何らかの依存性や要件も有するように解釈してはならない。更に、図2の種々のブロックは、明確化のために、線で示されているが、実際には、種々のコンポーネントの区分けはそれほど明確でなく、比喩的には、これらの線をもっと正確に示すとすれば、灰色で曖昧となるであろう。加えて、任意の数の物理装置、仮想装置、データーセンター、エンドポイント、またはその組み合わせを採用して、本発明の実施形態の範囲内で所望の機能を達成することもできる。0036クラウド計算プラットフォーム200は、サービスアプリケーションおよび他のソフトウェアをホストするノード例えば、ノード211および212を含む1つ以上のデーターセンター例えば、データーセンター225を含むことができる。本発明の実施形態によれば、ノード211および/または212は、例えば、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、移動体デバイス、消費者用電子デバイス、サーバー1つまたは複数、図1の計算デバイス100等というような、任意の形態の計算デバイスを含む物理装置を表すことができる。他の実施形態では、ノード211および/または212は、仮想装置を表すことができ、または仮想装置270および275のような、仮想装置の動作のための基礎的サポートを行うことができる。動作において、仮想装置270および275はデーターセンター225のテナントの動作をサポートする。本明細書において使用される場合、テナントという用語は、一般に、クラウド計算プラットフォーム200の顧客によって所有されるサービスアプリケーションのコンポーネントプログラム例えば、種々の役割のインスタンスを指す。0037一般に、仮想装置270および275は、サービスアプリケーションに対して出される要求例えば、処理負荷の量に基づいて、サービスアプリケーションのエンドポイント201および202に割り当てられる。本明細書において使用される場合、仮想装置という用語は、限定であることを意図するのではなく、エンドポイント201および202の機能の基盤を成すために演算装置によって実行される任意のソフトウェア、アプリケーション、オペレーティングシステム、またはプログラムを指すことができる。他の実施形態では、仮想装置は、データーセンター225のテナントをサポートするためにノードから掘り出された処理能力およびメモリーリソースを指す。このように、ノード211は、仮想装置270および275の動作をホストおよびサポートしつつ、同時に、データーセンター225の他のテナントをサポートするために掘り出された他の仮想装置をホストし、これらのテナントは、異なる顧客によって所有される他のサービスアプリケーションのエンドポイントを含む。したがって、仮想装置270および275は、エンドポイント201および202を適正にサポートするために、処理能力、記憶場所、およびデーターセンター225内にある他のアセットを含むことができる。0038動作において、仮想装置270および275は、データーセンター225のリソース例えば、ノード211内部で動的に割り当てられ、エンドポイント例えば、エンドポイント201および202は、現在の処理負荷を履行するために、割り当てられた仮想装置270および275に動的に置かれる。一例では、ファブリックコントローラー232が、データーセンター225内にエンドポイント201および202を置くために、仮想装置270および275を自動的に割り当てる役割を担う。一例として、ファブリックコントローラー232は、サービスモデル例えば、サービスアプリケーションを所有する顧客によって設計されるを拠り所として、どのようにそしていつ仮想装置270および275を割り当てるかについて指針を与え、そしてそこにエンドポイント201および202を設置することができる。0039一例では、ノード211および212は、エンドポイント201、202、および230の動作をホストおよびサポートする。エンドポイントという用語は、限定を意図しているのではなく、ノード、物理装置、またはVMにおいて実行するサービスアプリケーション即ち、データーセンター225のテナントあるいはネットワークアダプターのプラグラムコンポーネントを含むことができる。一態様において、エンドポイント201、202、および230は、クラウド計算プラットフォーム200のコンテキストの中で動作し、したがって、それらの間に動的に作られる接続を介して内部で通信する。他の態様では、エンドポイント201、202、および230は、物理ネットワークトポロジーを介して、外部のリモートネットワークのリソース例えば、図3の企業私的ネットワーク325のリソース375に通信する。外部接続は、更に、データーセンター225の物理リソースに跨がって分散されたエンドポイントに、ネットワーク図示せずを介して相互接続することを必要とすることもある。一実施形態では、エンドポイント230によって示されるように、ネットワークはこれらのリソースを直接相互接続して、発信エンドポイントデーターパケットを生成するが受信側エンドポイントデーターパケットをターゲットエンドポイントに転送するの位置またはターゲットエンドポイントデーターパケットを消費するの位置を認識し、これらの間で通信を行うこともできる。他の実施形態では、ネットワークは間接的にリソースを相互接続し、それぞれ仮想装置270および275にホストされているエンドポイント201または202に宛てられたデーターのパケットが、同じノードに存在するしかるべきエンドポイントにローカルに配信される前に、ネットワークを介して導き直され、VMスイッチ222に配信されるようにすることもできる。加えて、ネットワークは、チャネル例えば、セキュアトンネルを介して通信を作ることによって、追加の保護レイヤーを実現するか、またはサービスアプリケーション1つまたは複数のエンドポイント間における接続に対して標準的なセキュリティ対策を採用することもできる。一例として、チャネルは、限定ではなく、1つ以上のローカルエリアネットワークLANおよび/またはワイドエリアネットワークWANを含むことができる。このようなネットワーク接続環境は、事務所、企業規模のコンピューターネットワーク、イントラネット、およびインターネットでは極普通である。したがって、ネットワークについては本明細書ではこれ以上説明しない。0040クラウド計算プラットフォーム200は、特定のサービスアプリケーションに割り当てられたエンドポイント201、202、および230の動作をホストおよびサポートするように構成されている。サービスアプリケーションという句は、本明細書において使用される場合、データーセンター225、クラウド計算プラットフォーム200内にある他のデーターセンター、顧客の家屋に配置されている企業私的ネットワークにおけるリソース例えば、図3の企業私的ネットワーク325のリソース375、および/または第三者ネットワーク例えば、図3の第三者ネットワーク335のリソース325におけるリソースの上で実行する、あるいはその内部にある記憶位置にアクセスする、任意のソフトウェア、ソフトウェアの一部に広く言及する。先に論じたように、エンドポイント201、202、および230は、サービスアプリケーション1つまたは複数に関与する役割のソフトウェアの一部、コンポーネントプログラム、またはインスタンスを表すことができる。他の実施形態では、エンドポイント201、202、および230は、サービスアプリケーションにアクセス可能な、格納されているデーターを表すこともできる。尚、図2に示されているエンドポイント201、202、および230は、サービスアプリケーションをサポートするのに適した部分の一例に過ぎず、本発明の実施形態の数、使用範囲、または機能に関して何の限定も示唆する意図はないことは言うまでもないことであり、認められるであろう。00411つのサービスアプリケーションは、1つのデーターセンター225における2つのノード211および212に跨がって分散されているものとして説明されているが、種々のデーターセンターまたは他の適したデバイス内にある任意の数のノードに存在する任意の数のサービスアプリケーションを使用することができ、本発明の実施形態は、ここに記載されるノード、サービスアプリケーション、およびデーターセンター1つまたは複数には限定されないことは言うまでもない。更に、任意の数のエンドポイントがノード内にインスタンス化されてもよく、および/またはサービスアプリケーション1つまたは複数に割り当てられてもよく、図2および図3に示されているエンドポイントは、説明の目的のみに限って示されている。0042一例では、データーセンター225のアーキテクチャーは、クラウド計算プラットフォーム200の管理システム例えば、ファブリックコントローラ232またはアドミニストレーターが、サービスアプリケーションをサポートするために、新たなエンドポイントをインスタンス化することまた現在のエンドポイントを割当し直すことを可能にする。また、ファブリックコントローラ232は、エンドポイント201、202、および230を接続するために、ネットワーク経路およびトンネルを構築および分解することもできる。更に、ファブリックコントローラ232は、周期的にデーターセンター225のトポロジーのスナップショットを撮ることもできる。これらのスナップショットは、データーセンターネットワークを通って現在作られているネットワーク経路およびトンネル、ならびにエンドポイントのアドレスを記録することができる。これらのスナップショットは、ディレクトリーサービス220に中継されその中に格納することもできる。実施形態では、ディレクトリーサービス220は、物理ネットワークの位置依存アドレスと関連付けて仮想IPアドレスを格納するように構成することもできる。更に、ディレクトリーサービス220は、データーセンターネットワークのそれぞれのネットワーク経路およびトンネルと関連のある変換動作を格納するように構成することもできる。このように、サービスアプリケーションのサービスモデルのセキュリティポリシーが、サービスアプリケーションのテナント間で送信されるデーターパケットに対して、ディレクトリーサービス220によって実施される。0043先に論じたように、本発明の実施形態は、物理レイヤー実線内にあるネットワーク経路およびトンネルを利用することによって、仮想レイヤー破線を跨いだエンドポイント間における通信を可能にするアーキテクチャーを導入する。物理レイヤー内では、エンドポイントはリンクのネットワークを介して到達可能である。一般に、集中ルーティングメカニズムに全ての通信を通過させるのを回避し、こうしてネットワーク輻輳を回避するために、相互作用するエンドポイントの位置に基づいて、ネットワークの適したリンクをインテリジェントに選択することが好ましい。物理レイヤーリンクのインテリジェントな選択、および選択されたリンクを横断するデーターパケットの適した変換を達成するために、実施形態では、調和して動作する2つの異なる技術、即ち、ドライバー223および233、ならびにディレクトリーサービス220によって、アーキテクチャーがサポートされる。0044ドライバー223および233は、1つ以上のエンドポイントと関連付けられており、更にドライバーが補助するエンドポイントのタイプの関数として、データーセンター225内に埋め込まれている。エンドポイント例えば、エンドポイント230が物理装置例えば、ノード212においてホストされている場合、ドライバー233は、データーパケットを直接エンドポイント間のトラフィックに入れるホストスイッチ図示せず内に実装される。この実施形態では、1つ以上のデーターパケットがエンドポイント230に到着したことまたはエンドポイント230から発信したことを検出すると、ドライバー233は、ディレクトリサービス220に要求273を送ることによって、ルーティング情報を要請することができる。要求273は、データーパケットのヘッダ内に組み込まれているソースIPアドレスおよび宛先IPアドレスを伝える。ルーティング情報の要求273を受けると、ディレクトリーサービス220は、応答274で回答することができる。応答274は、データーパケットの転送路、およびこの転送路に適した変換動作を伝える。0045エンドポイント例えば、エンドポイント201および202が仮想装置例えば、仮想装置270および275にホストされている場合、ドライバー例えば、ドライバー223はネットワークスタック内に実装され、全ての既存のアダプターを隠し、ネットワークの1つの仮想化インターフェースを提示する。この実施形態では、ドライバー223は、独立したVMスイッチを表すことができ、または既存のVMスイッチ例えば、VMスイッチ222の中に組み込むことができる。VMスイッチ222は、実施形態では、データーセンター225の内部および外部エンドポイント間に、分離接続を提供するために設けられている。これについては、図3を参照しながら更に詳しく論ずることにする。本明細書において使用される場合、仮想装置スイッチ、即ち、VMスイッチという用語は、限定を意図するのではなく、データーセンター、企業の私的ネットワーク、第三者ネットワーク等の中に存在し、サービスアプリケーションのエンドポイント間でネットワークを跨いでデーターパケットを安全に導く役割を担う任意のソフトウェアベースのコンポーネントを含むことができる。一例として、VMスイッチは、ネットワーク管理のために一部のアプリケーションプログラミングインターフェースAPIを露出させる任意のネットワークエッジデバイス1つまたは複数例えば、トップラックスイッチ、ノード内における物理ネットワークインタフェースカード、VM内における仮想インターフェースカード、または非仮想化ホスト内におけるネットワーキングスタックとすればよい。他の例では、VMスイッチによって実行される動作の全てまたは一部例えば、ディレクトリーサービス220との通信、パケットのカプセル化、分解、変更、および他のアクションは、ルーティングモジュールによって実行されてもよい。したがって、VMスイッチは、ルーティングモジュール1つまたは複数、ネットワークエッジデバイス1つまたは複数、物理スイッチ1つまたは複数、ルーティングデバイス1つまたは複数等の内1つ以上を具体化することができる。0046ドライバー233と同様、ドライバー223は、1つ以上のデーターパケットがエンドポイント201または202のいずれかに到達または発信したことを検出したときに、ディレクトリサービス220に要求271を送ることによって、ルーティング情報を要請することができる。要求271は、データーパケットのヘッダ内に組み込まれているソースIPアドレスおよび宛先IPアドレスを伝える。ルーティング情報の要求271を受けると、ディレクトリーサービス220は、応答272で回答することができる。応答272は、データーパケットの転送路、およびこの転送路に適した変換動作を伝える。0047これより図2および図3を参照して、ドライバー223および233とディレクトリーサービス220との間における追加の相互作用についてこれより論ずる。先に論じたように、ドライバーは、データーセンター225の複数のノード、およびデーターセンター225の外部にあるリソースに分散することができる。ドライバー223および233は、IPトラフィックのレート、データーセンター225のテナントによって消費される計算ロード、およびノードがオンラインにされているかまたはオフラインにされているかというような、1つ以上の要因の関数として、データーセンター225内部にあるノードに動的にインスタンス化すること、およびこのノードから取り外すことができる。一実施形態では、ファブリックコントローラ232が、VMスイッチをインスタンス化するまたは取り外す役割を担う。0048動作において、ドライバー223および233は、これらそれぞれのノードの仮想ネットワークアダプターを表し、サービスアプリケーションまたはサブネット内部にある特定のエンドポイントに対するゲートウェイとして機能する。この実施形態では、データーパケットを送信するとき、どこで、どのように、そしてどの物理レイヤーリンクを使用するかに関するルーティング決定をゲートウェイが行うトポロジーが規定される。内部および外部ノードにわたってドライバーを分散することによって、このゲートウェイ機能は今や仮想化され、ネットワークに亘って拡散されている。0049一実施形態例では、ルーティング決定は、常に集中サーバを介してデーターパケットを送る必要がない転送路を決定するのに役立つ。更に、ルーティング決定は、接続毎/装置毎に特殊化することができる。一例では、ルーティング決定は、リモートデーターセンターに跨がるエンドポイントをリンクするセキュアトンネルを採用するデーターパケットに高位保護変換を適用することを決定することもできる。他の例では、ルーティング決定は、エンドポイントが共通のセキュアネットワークに共存するときに、データーパケットのカプセル化またはヘッダの書き換えというような、一層軽量化した変換動作を採用することを決定することもできる。この例では、エンドポイントは同じサブネット内に存在することができ、データーセンターネットワークのサーバ間にある直接路を介して、互いに見ることができるのでもよい。したがって、ルーティング決定は、相互接続性を最適化するために、同じサブネットの中にあるエンドポイントが、共通の輻輳地点を有さない物理レイヤーリンク上のルートを使用することができるという能力を利用することができる。これらおよびその他のルーティング決定については、図4を参照して更に詳しく説明する。0050実施形態では、ドライバー223および233内において、それぞれ、ルーティング/書き換えコンポーネントRC224および234が設けられる。動作において、RC224および234は、ノードまたはエンドポイントのオペレーティングシステムから発せられた各データーパケット、あるいはセキュアトンネルまたはネットワーク経路を介して送られた各データーパケットを受け入れて、これらのデーターパケットの内容例えば、ヘッダ内部で伝えられる情報に基づいて、正しい転送路と、必要であれば、変換動作とを決定することができる。一例では、RC224および234が、それが受け入れた各データーパケットのソースIPアドレスおよび/または宛先IPアドレスを調べて、ディレクトリーサービス220にルーティング情報を求めて問い合わせる例えば、要求271および273を介して。ディレクトリーサービス220は、要求271および273に対して、それぞれ、種々のタイプのルーティング情報を含むことができる応答272および274で回答することができる。したがって、RC224および234には、ルーティング情報に応答し、データーパケットに対する異なる転送プロセスをサポートする複数のトンネリング/書き直しプロトコルを管理する能力がプロビジョニングされる。0051一般に、ディレクトリーサービス220は、ネットワーク315の知識、ならびにネットワーク経路およびセキュアトンネル350の知識を内部に保持する。一例として、この知識は、エンドポイントについての情報、どのネットワークにエンドポイントが存在するか、これらのネットワーク内にどのネットワーク経路が作られているのか、ネットワーク経路を跨ぐ特定の転送路に適した変換動作はどれか、およびどのように変換各ションが行われるかについての情報を含む。ルーティング情報を要請するRC224および234に伴う動作において、ディレクトリーサービス220は、このネットワーク知識を適用して、ネットワーク315内においてどのようにして第2エンドポイントに到達するか、第1エンドポイントに伝える。このために、ディレクトリーサービス220は、仮想IPアドレスと位置依存アドレスとの間のマッピング310を維持している。一実施形態例では、このマッピングは、相互接続されているエンドポイント間における1つ以上の論理的関連を維持し、ネットワーク到達可能性を達成するために、これらのエンドポイントと関連のあるアクセス制御を施行する。一例では、この論理的関連は、サブネットのメンバーであるエンドポイント間における関連に関する。0052また、ディレクトリーサービス220は、適した変換動作を認識する表320も維持することができる。一例では、表320は、通信ポリシーを施行するように設計されており、通例、顧客によってサービスレベル契約SLAによって適所に設定される。他の例では、通信ポリシーは、サービスアプリケーションおよび/またはサブネットに対して特定的に設計され、どのシステムプロセスにサブネットのメンバーエンドポイントへのアクセスを付与するか、そして集中ルーティングデバイスを伴うことなく、エンドポイントを直接接続することができるか否か管理する許可リストを含むことができる。更に他の例では、通信ポリシーは、ある種のエンドポイントに対してどのセキュリティレベルを施行すべきか明瞭にすることができる。他の例では、通信ポリシーは、ドライバーから要求を受けたときにマッピング310をスキャンして該当するエントリーを求め、この該当するエントリーの中にある情報に基づいて、生データーの送信が許可されているか否か判断するセキュリティモデルとして機能する。更に他の例では、通信ポリシーは、ポート番号またはネットワークアダプターに適用される規則を表すことができ、この規則は、ポート番号またはネットワークアダプターがある動作を実行することが許されているか否か確認するために、データーセンター225のノード内において利用することができる。0053ディレクトリーサービス220がドライバーから要求を受けると、ディレクトリーサービス220は以下の参照手順を実行することができる。ソースIPアドレスおよび宛先IPアドレスによってマッピング310を検査して、物理ネットワーク380を介したデーターパケットの転送路を構成する。対応する位置依存アドレスを特定する。または、転送路で表320を検査して、対応する変換動作を特定する。言い換えると、ディレクトリーサービスは、データー集合ソースIPアドレス、宛先IPアドレスを受信し、マッピング310および表320に対する変換によって、データー集合転送路、変換動作を返送する。返送データー集合は、要求元ドライバー内においてルーティング決定プロセスをサポートする。0054以下で更に詳しく論ずるが、変換動作は、限定ではなく、以下の内1つ以上を伴うことができる。位置依存アドレスを含めるようにデーターパケットのヘッダを書き換える。データーパケットをそれぞれの外部データーパケット内に、内部データーパケットとして、カプセル化する。各外部データーパケットは、位置依存アドレスを伝えるヘッダを含む。または、トンネリングプロトコルを使用してデーターパケットをカプセル化する。最終的に、ディレクトリーサービス220は、特定された転送路と特定された変換動作との指示を、要求元のドライバー仮想ネットワークゲートウェイに伝える応答を返送することができる。0055図2および図3では、情報を要求元ドライバーにプッシュする1つの集中サーバーとして図示されているが、ディレクトリーサービス220の機能は、1組の装置に統合されセーブされたローカルファイルによって実現することもできる。または、予めプッシュアウトされている場合、ディレクトリーサービス220の機能は、要求元ドライバーにおいて、前もってキャッシュしておくこともでき、外部要求を送るステップをなくすことができる。0056これより図3を参照すると、本発明の一実施形態にしたがって、仮想ネットワークアドレスを物理ネットワーク経路および変換動作に分解する、分散型計算環境300のアーキテクチャ例の模式図が示されている。最初に、分散型計算環境300は、物理ネットワーク380を含む。物理ネットワーク380は、図2を参照して論じられたように、企業の私的ネットワーク325、第三者ネットワーク335、およびクラウド計算プラットフォーム200を含む。本明細書において使用する場合、物理ネットワークという用語は、限定を意図しているのではなく、有形メカニズムおよび機器たとえば、ファイバ線、回路ボックス、スイッチ、アンテナ、IPルーター等、ならびに地理的に離れた位置にあるエンドポイント間における通信を容易にする無形通信波および搬送波を含むことができる。一例として、物理ネットワーク380は、インターネット内で利用される任意の有線およびワイヤレス技術、または別個のネットワーク間における通信を促進するために利用可能な任意の有線およびワイヤレス技術を含むことができる。0057一般に、企業の私的ネットワーク325は、クラウド計算プラットフォーム200の顧客によって管理されるリソース375のようなリソースを含む。多くの場合、これらのリソースは、顧客によって所有されるサービスアプリケーションのコンポーネントの動作をホストおよびサポートする。エンドポイントB385は、このサービスアプリケーションのコンポーネントの1つ以上を表す。実施形態では、図2の仮想装置270のようなリソースは、サービスアプリケーションの離れて分散されているコンポーネントの動作をホストおよびサポートするために、図2のデーターセンター225内部で割り当てられる。エンドポイントA211およびC212は、サービスアプリケーションのこれら離れて分散されているコンポーネントの内2つを表す。動作において、エンドポイントA211、B385、およびC212は、互いに調和して動作して、サービスアプリケーションが適正に実行することを保証する。一例では、調和して行われる動作には、エンドポイントA211、B385、およびC212間における、物理ネットワーク380のネットワーク315を介したデーターパケット316の送信を伴う。0058第三者ネットワーク335も、物理ネットワーク380内に設けられている。実施形態では、第三者ネットワーク335は、図3の企業の私的ネットワーク325でもクラウド計算プラットフォーム200でもない任意の他のネットワークを指すことができる。一例として、第三者ネットワーク335は、サービスアプリケーションによって使用される情報、またはサービスアプリケーションの1つ以上の動作をサポートするためのソフトウェアを提供する販売業者によって使用される情報を保持するデーターストアを含むことができる。実施形態では、第三者ネットワーク335は、図6のクラウド計算プラットフォーム200に利用可能なリソースのネットワークを表し、このリソースには、エンドポイントD345がインストールされているリソース355が含まれる。0059通例、リソース355および375、ならびにデーターセンター225は、そこで実行するエンドポイント1つまたは複数および/またはコンポーネント1つまたは複数の動作をサポートするために、何らかの形態の計算ユニット例えば、中央演算装置、マイクロプロセッサー等を含むか、または計算ユニットにリンクされている。本明細書で利用される場合、計算ユニットという句は、一般に、処理パワーおよび記憶メモリーを有する専用計算デバイスを指し、この専用計算デバイスは1つ以上のオペレーティングシステムまたは他の基礎ソフトウェアをサポートする。一例では、計算ユニットは、有形ハードウェアエレメント、または装置で構成されており、これらはリソース355および375、ならびにデーターセンター225と統合されているか、または動作可能に結合されており、各デバイスが種々のプロセスおよび動作を実行することが可能になっている。他の例では、計算ユニットは、リソース355および375、ならびにデーターセンター225の各々によって収容されているコンピューター読み取り可能媒体に結合されたプロセッサー図示せずを含むことができる。一般に、コンピューター読み取り可能媒体は、少なくとも一時的に、プロセッサーによって実行可能な複数のコンピューターソフトウェアコンポーネント例えば、エンドポイントA211、B385、C212、およびD345を格納する。本明細書において利用される場合、プロセッサーという用語は限定を意図するのではなく、計算容量の範囲内において動作する計算ユニットの任意のエレメントを含むことができる。このような容量の範囲において、プロセッサーは、命令を処理する有形品目として構成することができる。一実施形態例では、処理は、命令を取り出し、デコード/解釈し、実行し、そして書き戻すことを伴うこともできる。0060仮想ネットワークオーバーレイ330オーバーレイ330は、通例、サービスアプリケーションのエンドポイント間において通信を促進し安全を確保するために、エンドポイントA211、B385、C212、およびD345を含むサービスアプリケーションのような、1つのサービスアプリケーション毎に作られる。一般に、オーバーレイ330は、物理IPアドレスではなく、サービスアプリケーションのエンドポイントを仮想的に表し、仮想表現を接続する仮想IPアドレスのレイヤーを表す。他の実施形態では、オーバーレイ330は、サービスアプリケーションを制御する顧客に割り当てられたリソースを含む物理ネットワーク380の上に構築された仮想ネットワークである。動作において、オーバーレイ330は、相互接続されているエンドポイントA211、B385、C212、およびD345の1つ以上の論理的関連を維持し、物理ネットワーク到達可能性を達成するために例えば、物理トランスポートを使用して、エンドポイントA211、B385、C212、およびD345と関連のあるアクセス制御/セキュリティを施行することができる。0061これより図3および図4を参照して、種々の可能なルーティング決定についてこれより説明する。具体的には、図4は、本発明の一実施形態にしたがって、ディレクトリーサービス220から配信されたルーティング情報をルーティング決定に適用する判断ツリー例400の模式図を示す。先に論じたように、ドライバーは、部分的に、このドライバーにリンクされている対象のエンドポイントが、データーパケットの発信エンドポイント、データーパケットをターゲットエンドポイントに転送するように動作する受信側エンドポイント、またはターゲットエンドポイントのどれを表すかに基づいてルーティング決定を実行することができる。第1の例では、対象のエンドポイントが発信エンドポイント例えば、エンドポイントC212を表すとき、ブロック401に示すように、この発信エンドポイントと関連のあるドライバーは、この発信エンドポイントが、そこから生成された1つ以上のデーターパケットを送信しようとしていることを検出することができる。次に、ブロック402に示すように、ドライバーは、対象のエンドポイントを指し示すソースIPアドレスと、宛先IPアドレスとの指示を含む要求を送ることによって、ディレクトリーサービス220に、参照手順を実行するように要請する。0062ブロック403に示すように、ディレクトリーサービス220からドライバーに送られたルーティング情報に部分的に基づいて、ルーティング決定が実行される。このルーティング決定の結果、限定されるのではないが、以下の変換動作の内1つ以上を行うことができる。位置依存アドレスを含めるようにデーターパケットのヘッダを書き換えるブロック404参照。データーパケットにトンネリングプロトコルを設定し、セキュアトンネルを介してデーターパケットをリディレクトするブロック405参照。または、それぞれの外部データーパケットの中に、データーパケットを内部データーパケットとしてカプセル化するブロック406参照。外部データーパケットは、各々、位置依存アドレスを伝えるヘッダを含む。0063一実施形態例では、ドライバーが、発信エンドポイントおよびターゲットエンドポイントの双方が共通のデーターセンターまたはサブネット内に存在すると判断したとき、ルーティングの結果、ソースIPアドレスおよび宛先IPアドレスをそれぞれの位置依存アドレスで書き換える変換動作を行うことができる。しかしながら、ドライバーが、ソースIPアドレスおよび宛先IPアドレスが除去された場合受信側エンドポイントまたはターゲットエンドポイントがデーターパケットのヘッダを変換することができないと判断したとき例えば、受信側/ターゲットエンドポイントが、発信エンドポイントが存在するデーターセンターまたはサブネットとは異なるデーターセンターまたはサブネット内にある、ルーティング決定の結果、データーパケットのペイロードの中にソースおよび宛先IPアドレスを保存するために、それぞれの外部データーパケットの中にデーターパケットを内部データーパケットとしてカプセル化することができる。この直ぐ上の実施形態では、ドライバーは、エンドポイント間にあるネットワーク経路が実質的に十分保護されており、管理サービスモデルのセキュリティポリシーを満足することを認めることもできる。対照的に、エンドポイントの1つ以上を接続するネットワーク経路が、管理サービスモデルによって命令された保護レベルまたは安全な接続のレベルを欠くと、ドライバーが判断した場合、ルーティング決定の結果、セキュアトンネリングプロトコルを含めるようにデーターパケットを変換する変換動作を行うことができ、これによって不正な行為者によるデーターパケットの傍受を回避しようとすることができる。0064ルーティング決定を実行すると、ブロック407に示すように、発信エンドポイントは、処理したデーターパケットを受信側エンドポイント例えば、エンドポイントA211またはD345またはターゲットエンドポイント例えば、エンドポイントB385に送信し始めることができる。受信側エンドポイントはここでは1つのネットワークホップとして記載されているが、ネットワークの中には1つよりも多い中間ホップがある場合もあり、この場合、受信側エンドポイントが1つ以上の他の受信側エンドポイントに転送することが可能になることは認められ、理解されよう。第2の例では、対象のエンドポイントが受信側エンドポイントを表す場合、ブロック408に示すように、この受信側エンドポイントと関連のあるドライバーが、そこに到達した処理済みのデーターパケットを検出することができる。次いで、ブロック409に示すように、ドライバーは、ソースIPアドレスおよび宛先IPアドレスの指示を含む要求を送ることによって、参照手順を実行するようにディレクトリーサービス220に要請することができる。0065ブロック410に示すように、ルーティング決定は、ディレクトリーサービス220からドライバーに送られるルーティング情報に部分的に基づいて実行される。ルーティング決定によって、以下の変換動作の内1つ以上を行うことができる。ヘッダが書き換えられてカプセル化されたデーターパケットをトンネル350を介してリディレクトするブロック411参照例えば、エンドポイントD345参照。データーパケットからトンネリングプロトコルを除去するブロック412参照。あるいは、カプセル化されたデーターパケットまたはヘッダが書き換えられたデーターパケットを他のネットワーク経路を経由して転送するブロック413参照例えば、エンドポイントA211参照。この場合も、ネットワーク経路を経由してデーターパケットを転送する変換動作、またはトンネルを介してデーターパケットをリディレクトする変換動作の内どちらを呼び出すかについてのルーティング決定には、エンドポイントが安全な接続を介してリンクされていること、または保護されてないネットワーク例えば、インターネットに及ぶ接続を介してリンクされていることをそれぞれ確認することが必要になる。0066ルーティング決定を実行するとき、受信側エンドポイントは、ブロック414に示すように、処理したデーターパケットをターゲットエンドポイント例えば、エンドポイントB385に送信し始めることができる。第3の例では、対象のエンドポイントがターゲットエンドポイントを表すとき、ブロック415に示すように、このターゲットエンドポイントと関連のあるドライバーは、そこに到達する処理済みのデーターパケットを検出することができる。次いで、ブロック416に示すように、ドライバーは、ソースIPアドレスおよびターゲットエンドポイントを指し示す宛先IPアドレスの指示を含む要求を送ることによって、参照手順を実行するようにディレクトリーサービス220に要請することができる。0067ルーティング決定は、ブロック417に示すように、ディレクトリーサービス220からドライバーに送られるルーティング情報に部分的に基づいて実行される。対象のエンドポイントがターゲットエンドポイントを表すとき、ルーティング決定によって、以下の変換動作の内1つ以上を行うことができる。書き換えられたデーターパケットのヘッダを復元するブロック418参照。消費の準備をするために、データーパケットからトンネリングプロトコルを除去するブロック419参照。または、カプセル化したデーターパケットを分解するブロック420参照。0068これより図5に移ると、本発明の一実施形態にしたがって、ドライバーからの要求に応答して、適した物理ネットワーク経路および変換動作を特定する方法500を表すフローチャートが示されている。以上の論述から拾い集められるように、方法500のステップは、図2および図3のディレクトリーサービス220の観点から書かれている。最初に、方法500は、ブロック510に示すように、仮想IPアドレスと位置依存アドレスとの間のマッピングを維持するディレクトリーサービスを提供するステップを含む。また、ディレクトリーサービスは、適した変換動作を認識する表も維持することができる。一例では、この表は、ネットワーク内部においてエンドポイントを接続する経路全域におけるデーターパケットトラフィックを管理する通信ポリシーにしたがって設計される。他の例では、この表は、顧客のサービスアプリケーションをホストするデーターセンターの顧客のために作られたサービスモデル例えば、サービスレベル同意SLAに基づく。0069方法500は、更に、ブロック520に示すように、対象のエンドポイントと関連のある、またはこれとローカルに通信するために作られた仮想ネットワークゲートウェイ、またはドライバーからの要求を受けるステップを含むことができる。通例、この要求は、受信側エンドポイントによって受け入れられた1つ以上のデーターパケットのヘッダによって伝えられたソースIPアドレスおよび宛先IPアドレスの指示を含む。この要求を受けると、ディレクトリーサービスは、以下の参照手順を実行することができるブロック530参照。ソースIPアドレスおよび宛先IPアドレスによってマッピングを検査して、物理ネットワークを通るデーターパケットの転送路を構成する、対応する位置依存アドレスを特定するブロック540参照。および/または転送経路によって表を検査し、対応する変換動作を特定するブロック550参照。変換動作は、限定するのではないが、以下の内1つ以上を伴うことができる。位置依存アドレスを含めるように、データーパケットのヘッダを書き換える。この書き換えを元に戻す。それぞれの外部データーパケットの中に、データーパケットを内部データーパケットとしてカプセル化する。各データーパケットは、位置依存アドレスを伝えるヘッダを含む。カプセル化されたデーターパケットを分解する。データーパケットにトンネリングプロトコルを設定する。トンネリングプロトコルを除去する。ブロック560に示すように、ディレクトリーサービスは、特定された転送路および特定された変換動作の指示を仮想ネットワークに伝える応答を返すことができる。0070本発明の実施形態について、特定の実施形態に関して説明してきたが、これらは、あらゆる観点において、限定ではなく例示であることを意図している。本発明の実施形態に関する技術分野の当業者には、本発明の範囲から逸脱することなく、代替実施形態も明白となろう。0071以上の説明から、本発明は、先に明記した全ての目標および目的を、本システムおよび方法には自明でありそして固有である他の利点と共に達成するのに相応しく構成されていることが分かるであろう。尚、ある種の特徴およびサブコンビネーションは有益であり、他の特徴およびサブコンビネーションを参照しなくても採用できることは言うまでもない。これは、請求項の範囲によって想定されていることであり、その範囲に含まれることとする。"