(57)【要約】ある実施の形態は、リモートデバイス管理（ＲＤＭ）システムからのデータメッセージ属性に基づいて、ネットワークにおいて、リモートデバイスデータメッセージを処理する新規な方法を提供する。例えば、ある実施の形態の方法は、データメッセージに関連付けられたＲＤＭ属性の集合を特定し、特定されたＲＤＭ属性集合に基づいてひとつ以上のサービス動作を行う。【選択図】図１
2018532300.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに入るリモートデバイスデータメッセージを処理するためのプログラムを保持する非一時的機械可読媒体であって、前記プログラムは、
前記リモートデバイスによって送信されたデータメッセージを受信することと、
前記受信されたデータメッセージに関連付けられたリモートデバイス管理（ＲＤＭ）属性の集合を特定することと、
前記ＲＤＭ属性集合に基づいて、前記ネットワーク内の特定のネットワーク要素にトンネルを介して前記データメッセージを転送し、前記トンネルのヘッダに前記特定されたＲＤＭ属性集合を挿入することと、を行うためのインストラクションの集合を備え、
前記トンネルのヘッダに挿入された前記ＲＤＭ属性集合は、前記データメッセージに対して実行すべきサービス動作を特定するためのものである非一時的機械可読媒体。
【請求項２】
前記リモートデバイスのデータメッセージを受信するためのインストラクションの集合は、前記リモートデバイスと前記ネットワークとを接続するトンネルを通じて前記リモートデバイスによって送信された前記データメッセージを受信するためのインストラクションの集合を含む請求項１に記載の非一時的機械可読媒体。
【請求項３】
前記特定のネットワーク要素は、前記特定されたＲＤＭ属性集合に基づいて、前記転送されたデータメッセージに対して、ミドルボックスサービス動作を行うデバイスである請求項１に記載の非一時的機械可読媒体。
【請求項４】
前記デバイスは、前記転送されたデータメッセージに対して行うべき前記サービス動作を指定するサービスルールを、前記挿入されたＲＤＭ属性集合を用いて、特定することによって、前記ミドルボックスサービス動作を行う請求項３に記載の非一時的機械可読媒体。
【請求項５】
前記特定のネットワーク要素は、前記特定されたＲＤＭ属性集合に基づいて、前記転送されたデータメッセージに対して、ミドルボックスサービス動作を行うミドルボックスサービスノードを実行する請求項１に記載の非一時的機械可読媒体。
【請求項６】
前記ミドルボックスサービス動作は、前記挿入されたＲＤＭ属性集合に基づく、前記データメッセージに対する、ファイヤウォール動作、負荷分散動作、ロジカルネットワークセグメンテーション動作、および宛先ネットワークアドレス変換動作のうちのひとつを含む請求項５に記載の非一時的機械可読媒体。
【請求項７】
前記サービスノードは、前記挿入されたＲＤＭ属性集合を用いて前記挿入されたＲＤＭ属性集合にマッチするＲＤＭ属性集合でサービスルールを特定することによって、前記ミドルボックスサービス動作を実行し、
前記特定されたサービスルールが、前記転送されたデータメッセージに対して行うべき前記サービス動作を指定する請求項５に記載の非一時的機械可読媒体。
【請求項８】
前記トンネルが第１トンネルであり、
前記プログラムがさらに、前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを、仮想専用ネットワーク（ＶＰＮ）ゲートウエイにおいて、受信するためのインストラクションの集合を含み、
前記ＶＰＮゲートウエイが前記データメッセージを前記第１トンネルに沿って前記特定のノードへ転送する請求項１に記載の非一時的機械可読媒体。
【請求項９】
前記プログラムがさらに、複数のサービスネットワーク要素のなかから前記サービス動作を行う前記特定のネットワーク要素を選択するための負荷分散動作を、前記ＶＰＮゲートウエイにおいて、行うためのインストラクションの集合を含み、
前記ＶＰＮゲートウエイが、データメッセージを少なくとも二つの異なるサービスネットワーク要素へ少なくとも二つの異なるトンネルに沿って転送する請求項８に記載の非一時的機械可読媒体。
【請求項１０】
前記トンネルが第１トンネルであり、
前記プログラムがさらに、
前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを、仮想専用ネットワーク（ＶＰＮ）ゲートウエイにおいて、受信することと、
前記ＶＰＮゲートウエイが前記データメッセージを前記ネットワーク内の宛先へ転送する際に前記ＶＰＮゲートウエイの出口パスから前記データメッセージを傍受することと、
前記第１トンネルのトンネルヘッダで前記データメッセージをカプセル化することで、前記傍受されたデータメッセージを前記第１トンネルに沿って前記特定のノードへ転送することと、を行うためのインストラクションの集合を含む請求項１に記載の非一時的機械可読媒体。
【請求項１１】
前記トンネルが第１トンネルであり、
前記プログラムがさらに、前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを、仮想専用ネットワーク（ＶＰＮ）ゲートウエイにおいて、受信するためのインストラクションの集合を含み、
前記特定のネットワーク要素および前記ＶＰＮゲートウエイが二つの異なる物理デバイス上で動作する請求項１に記載の非一時的機械可読媒体。
【請求項１２】
前記トンネルが第１トンネルであり、
前記プログラムがさらに、
前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを、仮想専用ネットワーク（ＶＰＮ）ゲートウエイにおいて、受信することと、
前記第２トンネルのヘッダ内の前記ＲＤＭ属性集合の少なくとも部分集合を受信することと、を行うためのインストラクションの集合を含む請求項１に記載の非一時的機械可読媒体。
【請求項１３】
前記トンネルが第１トンネルであり、
前記プログラムがさらに、
前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを、仮想専用ネットワーク（ＶＰＮ）ゲートウエイにおいて、受信することと、
ＲＤＭサーバからの前記ＲＤＭ属性集合の少なくとも部分集合を受信することであって、前記ＶＰＮゲートウエイが前記ＲＤＭサーバを用いて前記第２トンネルを通じたＶＰＮセッションを確立するための前記リモートデバイスからの要求を認証する、受信することと、を行うためのインストラクションの集合を含む請求項１に記載の非一時的機械可読媒体。
【請求項１４】
前記ＲＤＭ属性部分集合を受信するためのインストラクションの前記集合は、前記ＲＤＭサーバからの認証許可の一部として前記ＲＤＭ属性部分集合を受信するためのインストラクションの集合を含む請求項１３に記載の非一時的機械可読媒体。
【請求項１５】
前記プログラムはさらに、前記ＲＤＭサーバからの認証許可を受信するためのインストラクションの集合を含み、前記ＲＤＭ属性部分集合を受信するためのインストラクションの前記集合が、前記認証許可とは別個の前記ＲＤＭサーバからの通信において前記ＲＤＭ属性部分集合を受信するためのインストラクションの集合を含む請求項１３に記載の非一時的機械可読媒体。
【請求項１６】
複数のネットワーク要素を備えるネットワークに入るリモートデバイスデータメッセージを処理する方法であって、
前記リモートデバイスによって送信されたデータメッセージを受信することと、
前記受信されたデータメッセージに関連付けられたリモートデバイス管理（ＲＤＭ）属性の集合を特定することと、
前記ＲＤＭ属性集合に基づいて、前記ネットワーク内の特定のネットワーク要素にトンネルを介して前記データメッセージを転送し、前記トンネルのヘッダに前記特定されたＲＤＭ属性集合を挿入することと、を含み、
前記トンネルのヘッダに挿入された前記ＲＤＭ属性集合は、前記データメッセージに対して実行すべきサービス動作を特定するためのものである方法。
【請求項１７】
前記リモートデバイスのデータメッセージを受信することは、前記リモートデバイスと前記ネットワークとを接続するトンネルを通じて前記リモートデバイスによって送信された前記データメッセージを受信することを含む請求項１６に記載の方法。
【請求項１８】
前記特定のネットワーク要素は、前記転送されたデータメッセージに対して行うべき前記サービス動作を指定するサービスルールを、前記挿入されたＲＤＭ属性集合を用いて、特定することによって、前記転送されたデータメッセージに対して前記ミドルボックスサービス動作を行う請求項１６に記載の方法。
【請求項１９】
前記トンネルが第１トンネルであり、
前記方法はさらに、
前記リモートデバイスと前記ネットワークとを接続する第２トンネルを通じて前記リモートデバイスによって送信された前記データメッセージを受信することと、
前記データメッセージから、前記第２トンネルのトンネルヘッダを除去することと、
前記第１トンネルのトンネルヘッダで前記データメッセージをカプセル化することで、前記データメッセージを前記第１トンネルに沿って前記特定のノードへ転送することと、を含む請求項１６に記載の方法。
【請求項２０】
前記トンネルが第１トンネルであり、
前記方法はさらに、前記第２トンネルのヘッダ内の前記ＲＤＭ属性集合の少なくとも部分集合を受信することを含む請求項１６に記載の方法。
【請求項２１】
前記トンネルが第１トンネルであり、
前記方法はさらに、ＲＤＭサーバから前記ＲＤＭ属性集合の別の部分集合を受信することであって、前記ＲＤＭサーバを用いて前記第２トンネルを通じたＶＰＮセッションを確立するための前記リモートデバイスからの要求を認証する、受信することを含む請求項２０に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
セキュアなリモートアクセスは、今日の商用ネットワークのうちの多くで共通の特徴となっている。そのようなアクセスにより、出張中の従業員（例えば、ローミングを行うセールスマン）や家で仕事をする在宅勤務の従業員が、例えばＬ３仮想専用ネットワーク（ＶＰＮ）を通じて、商用ネットワークにアクセスすることが可能となる。セキュアソケットレイヤ（ＳＳＬ）やインターネットプロトコルセキュリティ（ＩＰＳｅｃ）などの共用ネットワークインフラストラクチャを通じたＬ２のＶＰＮを用いることで、マルチサイトプロバイダのデータセンタを縫い合わせる（stitch together）ために、セキュアリモートアクセスが用いられる。
【０００２】
多くの場合、インターネットに面するネットワークの周辺部にＶＰＮゲートウエイをインストールすることによって、セキュアリモートアクセスが提供される。ＶＰＮゲートウエイにより、外部のデバイス／ネットワークは、ＳＳＬ／ＤＴＬＳやＩＫＥ／ＩＰＳｅｃなどのトンネルメカニズムを介して商用内部ネットワークに接続することができる。トンネルエンドポイントは、出て行くトラフィックを転送用に暗号化し、かつ、入来トラフィックを解読してそれを対応するネットワークへ供給する。ルーティングおよびポリシーベース転送（ＰＢＦ）は、関心対象のトラフィックを、内部ネットワークからローカルトンネルエンドポイントへ、転送のために導き、そこでそのトラフィックはリモートネットワークへの正しいトンネルを見つけるためにブリッジングやＰＢＦを用いてさらに処理される。認証され、専用ネットワークへのアクセスを得た後、外部クライアントは、その専用ネットワークの中にある他のクライアントと同じように、そのネットワークのリソースへのアクセスを得る。
【０００３】
今日、外部クライアントから入来するトラフィックに対して行使されるポリシーは多くない。今日、エンドユーザデバイスのアプリケーションレベルで分割およびセキュリティを行う種々の技術が存在する。いくつかのモバイルデバイス管理（ＭＤＭ）プラットフォーム（例えば、AirWatch / iOS）は、リモートアプリケーションに、全てのネットワークリソースに指定されたＶＰＮを介してアクセスすること、またはユーザの識別性に基づいて公開または専用のそのアプリケーションの態様（posture for the application）を維持すること、を要求する。
【０００４】
しかしながら、既存のプラットフォームは、同じ粒度のプロファイルベースのアクセスのネットワーク側と調和しない。データセンタ内の所定のリソースへのデバイスのアクセスを制限するために、今日の既存のプラットフォームは静的なファイヤウォールルールを用いるが、これは、潜在的に存在しうる膨大な数のプロファイルのためにルールが膨大になることの他に、提供や管理が難しいものとなりうる。これはまた、領域に跨がるデバイスモビリティも、ＤＮＳ名などのアプリケーションアクセスプロビジョニングも、考慮しないものであり、すなわち、同じＵＲＩを有する異なるユーザ／デバイスに異なるアプリをいかに提供またはルーティングするか、を考慮しないものである。
【発明の概要】
【０００５】
ある実施の形態は、リモートデバイス管理（ＲＤＭ）システムからのデータメッセージ属性に基づいて、ネットワークにおいて、リモートデバイスデータメッセージを処理する新規な方法を提供する。例えば、ある実施の形態の方法はソースネットワークアドレストランスレーション（ＳＮＡＴ）動作を行う。これは、受信したデータメッセージに関連付けられたＲＤＭ属性集合に基づいて、受信したリモートデバイスデータメッセージのヘッダに、新たなソースネットワークアドレス（例えば、新たなソースインターネットプロトコル（ＩＰ）アドレスおよび／または新たなソースポート）を挿入するものである。方法は、次いで、ネットワーク内のメッセージの宛先へデータメッセージを転送する。メッセージがネットワークを通じてその宛先へと進んでいくにつれて、ネットワークのひとつ以上のネットワーク要素は、メッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて、ネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。これらの動作の例は、ルーティング動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【０００６】
他の実施の形態の方法は、データメッセージに関連付けられたＲＤＭ属性集合に直接的に基づいて、受信したリモートデバイスデータメッセージに対する他のネットワーク動作を行う。例えば、ある実施の形態では、ネットワーク要素は、データメッセージのＲＤＭ属性集合を解析することによって解決されたネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。そのようなネットワーク要素の一例はファイヤウォールデバイスであり、それは受信したメッセージのＲＤＭ属性集合に基づいてファイヤウォール動作を行う。ある実施の形態では、ファイヤウォールデバイスは、他のメッセージヘッダ値（例えば、Ｌ２−Ｌ７ヘッダ値）と共にＲＤＭ属性集合について定義されうるファイヤウォールルールを課す。
【０００７】
ある実施の形態では、ネットワーク要素は、受信したリモートデバイスデータメッセージに関連付けられたＲＤＭ属性集合を参照して定義可能な他のミドルボックスサービスルールを課す他のミドルボックス要素である。例えば、ある実施の形態のネットワーク要素は、データメッセージフローに関連付けられたＲＤＭ属性集合に基づいて、データメッセージフロー（すなわち、同じパケットヘッダ値を有するデータメッセージの集合）に対してＤＮＳ（ドメインネームシステム）動作を行う。ある実施の形態では、ネットワーク要素は、データメッセージをその宛先までルーティングするために、データメッセージのＲＤＭ属性集合に基づいて、ＤＮＡＴ（宛先ネットワークアドレス変換）動作を行う。ある実施の形態は，ＤＮＳ動作またはＤＮＡＴ動作を用いることで、第１地理的位置（例えば、ある国）に関連付けられたリモートデバイスが第１地理的位置のネットワークにのみ、または、第１地理的位置のデバイス用に分離された第２地理的位置（例えば、別の国）のサブネットワークにのみ、アクセスすることを確かなものとする。例えば、欧州の企業の従業員のリモートデバイスが米国内で仮想専用ネットワーク（ＶＰＮ）接続を試みる場合、そのリモートデバイスが、欧州内のサーバにのみ、またはその企業の欧州従業員による使用のために分離された米国データセンタ内のサーバにのみ、アクセスすることができることを確実にするために、そのようなアプローチを用いることができる。
【０００８】
ある実施の形態では、ひとつ以上のネットワークコントローラの集合は、ひとつ以上のＲＤＭサーバの集合から、（１）種々のＲＤＭ属性の定義と、（２）これらのＲＤＭ属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。ＲＤＭ属性定義は、ＲＤＭ属性およびこれらのＲＤＭ属性について可能な値を定義する辞書の一部として提供される。ネットワークコントローラの集合は次いで、受信したＲＤＭ属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび／またはルール（例えば、ミドルボックス要素用のサービスルールや、ルータ用のルーティングルールなど）をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合のユーザインタフェースまたはアプリケーションプログラミングインタフェース（ＡＰＩ）の集合を通じて、サービスポリシーおよび／またはサービスルールをプログラムすることができる。
【０００９】
ネットワークコントローラの集合は、ひとつ以上のネットワーク要素にＲＤＭベースのポリシーまたはルールを分配する（例えば、ネットワーク要素にポリシー／ルールをプッシュする、またはネットワーク要素がこれらのポリシー／ルールをプルすることを可能にする）。ある実施の形態では、ネットワーク要素は、ＲＤＭベースのポリシーを、該ネットワーク要素が執行するＲＤＭベースのルールに変換する。ＶＰＮトンネルゲートウエイは、ネットワークコントローラの集合からＲＤＭベースのポリシーまたはルールを受信できるネットワーク要素の一例である。そのようなゲートウエイはリモートデバイスとトンネルを確立し、該トンネルはＶＰＮ接続を通じてネットワークと接続する。言い換えると、ＶＰＮゲートウエイはリモートデバイスに、（１）そのゲートウエイを通じてネットワークとＶＰＮトンネル接続を確立すること、（２）リモートデバイスがＶＰＮトンネルを通じて送信するパケットペイロードを暗号化すること、および（３）リモートデバイスがＶＰＮトンネルを通じて受信するパケットペイロードを解読すること、を要求することによって、ネットワークのリソース（例えば、サーバ等）へのリモートデバイスのアクセスを制限する。ある実施の形態では、ＶＰＮゲートウエイは、（１）内部ネットワークからリモートデバイスへ送られたパケットをトンネルヘッダでカプセル化し、（２）それがリモートデバイスから受信するパケットから、そのパケットを内部ネットワークのネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化する。
【００１０】
リモートデバイスがネットワークとのＶＰＮトンネル接続の確立を試行する場合、リモートデバイスの要求はＶＰＮトンネルゲートウエイに渡される（例えば、ネットワークの負荷分散器によって）。ある実施の形態では、ＶＰＮトンネルゲートウエイは次いで、ＶＰＮ要求を認証するために、それがリモートデバイスから得たＶＰＮ資格情報集合をＲＤＭサーバ集合に渡す。ある実施の形態では、リモートデバイスの資格情報集合を認証する際、ＲＤＭサーバ集合は、ＶＰＮ接続を要求しているリモートデバイス、ユーザおよび／またはアプリケーションのひとつ以上のＲＤＭ属性を提供する。
【００１１】
ＶＰＮゲートウエイは、提供されたＲＤＭ属性と、それがその後ＶＰＮ接続を通じて受信するデータメッセージと、を関連付ける。また、ある実施の形態では、ＶＰＮ接続が確立されると、リモートデバイスは、それが送信するデータメッセージのひとつ以上のＲＤＭ属性を、ＶＰＮトンネルヘッダに、埋め込む。ＶＰＮゲートウエイは、それがＲＤＭサーバ集合やリモートデバイスから受信するＲＤＭ属性と、ＶＰＮ接続を通じてリモートデバイスによって送信されるデータメッセージと、を関連付ける。
【００１２】
関連ＲＤＭ属性集合に基づいて、ＶＰＮゲートウエイは、それがトンネルを通じてリモートデバイスから受信するデータメッセージに対するひとつ以上の動作を実行する。ある実施の形態では、関連ＲＤＭ属性集合は、ＶＰＮゲートウエイが執行するデータ処理ルールを処理するためのコンテキストを提供する。そのような動作の例は、上述の、ＲＤＭ−属性ベースＳＮＡＴおよびファイヤウォール動作を含む。
【００１３】
トンネルを通じて受信されたリモートデバイスデータメッセージに関連付けられたＲＤＭ属性集合に基づいてある実施の形態のＶＰＮゲートウエイが行う他の処理動作の一例は、ネットワークマイクロセグメンテーションである。ある実施の形態は、ネットワークのネットワーク要素（例えば、転送要素、ミドルボックス要素、ホストなど）の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子（例えば、仮想ネットワーク識別子、ＶＮＩ）を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【００１４】
ある実施の形態では、ＶＰＮゲートウエイのネットワークマイクロセグメンテーション動作は、ＶＰＮゲートウエイが、リモートデバイスからのデータメッセージと、論理ネットワークと、をそのデータメッセージの関連ＲＤＭ属性集合に基づいて関連付けることを含む。例えば、ある実施の形態では、ＶＰＮゲートウエイは複数のマイクロセグメンテーションルールを処理し、各ルールはＲＤＭ属性の集合と論理ネットワーク識別子とで指定されうる。これらの実施の形態では、ＶＰＮゲートウエイは、データメッセージのＲＤＭ属性集合と、マイクロセグメンテーションルールのうちのひとつのＲＤＭ属性集合と、をマッチし、マッチングルールの論理ネットワーク識別子をデータメッセージの論理ネットワーク識別子として用いることができる。そのような状況において、ＶＰＮゲートウエイはトンネルのトンネルヘッダに論理ネットワーク識別子を挿入する。ゲートウエイはそのトンネルヘッダを用いてデータメッセージを、論理ネットワークに関連付けられた転送要素またはミドルボックス要素へ転送する。
【００１５】
ある実施の形態では、ＶＰＮゲートウエイは、それがリモートデバイスのデータメッセージに関連付けたＲＤＭ属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はＲＤＭ属性集合に基づいてひとつ以上の動作を行うことができる。そのような動作の例は、ＲＤＭ属性ベースのファイヤウォール動作と、ＤＮＳ動作と、ＤＮＡＴ動作と、および／または他のミドルボックス動作や転送動作と、を含む。ある実施の形態では、ＶＰＮゲートウエイは、リモートデバイスのＲＤＭ属性集合をネットワークの内部転送要素および／またはミドルボックス要素に、ＶＰＮゲートウエイとその要素とを接続するトンネルのトンネルヘッダを通じて、渡す。例えば、ある実施の形態では、ＶＰＮゲートウエイはＧｅｎｅｖｅまたはＶＸＬＡＮトンネルを通じてネットワーク要素に接続する。このトンネルプロトコルは、ＶＰＮゲートウエイが、トンネルヘッダにフローベースのメタデータ（これはそのフローについてのＲＤＭ属性集合を含む）を挿入することを可能とする。
【００１６】
ある実施の形態では、ＶＰＮゲートウエイは、ひとつ以上の他の仮想マシンと共にホストコンピュータ上で実行される仮想マシンとして実装されてもよい。これらの実施の形態のうちのいくつかでは、ＶＰＮゲートウエイのＲＤＭベースの処理動作（例えば、ソースネットワークアドレス変換やファイヤウォール動作等）は、ＶＰＮ  ＶＭのホストコンピュータ上で実行されるサービスモジュールによって行われる。サービスモジュールは、ＶＰＮ  ＶＭがリモートデバイスデータメッセージを脱カプセル化する際にそのメッセージを取得し、それをネットワークの内部ネットワーク要素に導く。例えば、ある実施の形態のサービスモジュールは、ＶＭの仮想ネットワークインタフェースカード（ＶＮＩＣ）またはこのＶＮＩＣに接続するホストのソフトウエアスイッチのポートによって呼び出されたフィルタモジュールである。
【００１７】
先行するサマリは、本発明のいくつかの実施形態に対する簡単な導入として提供されることを意図するものである。本書面において開示される発明の主題の全ての紹介又は概要を意味するものではない。以下の詳細な説明及び詳細な説明において参照される図面は、他の実施形態と、要約において説明された実施形態を更に説明するであろう。従って、本書面によって説明される全ての実施形態を理解するため、要約、詳細な説明、図面および請求の範囲の十分な確認が必要である。さらに、クレームされた主題は、サマリ、詳細な説明および図面における説明用の詳細によって限定されるべきではない。
【図面の簡単な説明】
【００１８】
本発明の新規な特徴は添付の特許請求の範囲によって明らかになる。しかしながら、説明の目的のため、本発明のいくつかの実施形態は以下の図において明らかになる。
【００１９】
【図１】ＭＤＭシステムからのデータメッセージ属性に基づいてモバイルデバイスデータメッセージを処理するデータセンタの例を示す。
【００２０】
【図２】ある実施の形態のＶＰＮゲートウエイを示す。
【００２１】
【図３】図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【図４】図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【図５】図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【図６】図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【図７】図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【００２２】
【図８】ある実施の形態のルールプロセッサが行うＳＮＡＴプロセスを示す。
【００２３】
【図９】ある実施の形態においてルールプロセッサが行うファイヤウォールプロセスを示す。
【００２４】
【図１０】ある実施の形態におけるルールプロセッサのマイクロセグメンテーションプロセスを示す。
【００２５】
【図１１】複数のホスト上で実行されている、複数のそのようなＶＰＮ  ＶＭおよびサービスモジュールを有するデータセンタを示す。
【００２６】
【図１２】ある実施の形態のホストコンピュータのソフトウエアアーキテクチャをより詳細に示す。
【００２７】
【図１３】ＶＰＮ  ＶＭのサービスモジュールがモバイルデバイスに関連付けられた位置に基づいてＤＮＡＴ動作を行う際の二つの異なるやり方を示す。
【００２８】
【図１４】データセンタの外の第２モバイルデバイスのデータメッセージを、第１領域内のデータセンタＤＣＮクラスタにアクセスする第２領域モバイルデバイスについてのＤＣＮサーバクラスタへと再ルーティングする、ＭＤＭ属性ベースのＤＮＡＴ動作を行うＶＰＮ  ＶＭのサービスモジュールを示す。
【００２９】
【図１５】モバイルデバイスデータメッセージをリダイレクトするＶＰＮ  ＶＭのサービスモジュールを示し、モバイルデバイスデータメッセージがそのデータメッセージを送ったモバイルデバイスの関連領域に基づいて、二つの異なるＤＮＳサーバへのＤＮＳルックアップを要求する。
【００３０】
【図１６】データセンタの外の第２モバイルデバイスのＤＮＳネームクエリを、第１領域内のデータセンタＤＮＳサーバにアクセスする第２領域モバイルデバイスについてのＤＮＳサーバへと再ルーティングする、ＭＤＭ属性ベースのＤＮＳ動作を行うＶＰＮ  ＶＭのサービスモジュールを示す。
【００３１】
【図１７】三つの論理オーバレイネットワークの例を示し、そのようなネットワークは、（１）ホストの共有集合上で実行されるソフトウエア転送要素およびサービスモジュールの共有集合に亘って、かつ（２）複数のスタンドアローンな共有転送要素および共有ミドルボックス要素（または、サービス機器）に亘って、定義される。
【００３２】
【図１８】第１テナントの第１モバイルデバイスからのデータメッセージを、第１論理ネットワークの第１論理ネットワーク識別子と関連付け、第２テナントの第２モバイルデバイスからのデータメッセージを、第２論理ネットワークの第２論理ネットワーク識別子と関連付けるＶＰＮゲートウエイを示す。
【００３３】
【図１９】同じテナントの二つのモバイルデバイスからのデータメッセージを、二つの異なる論理ネットワークに関連付けるＶＰＮゲートウエイを示す。
【００３４】
【図２０】同じモバイルデバイスからの二つの異なるデータメッセージフローを、二つの異なる論理ネットワークに関連付けるＶＰＮゲートウエイを示す。
【００３５】
【図２１】二つの異なるモバイルデバイスから、二つの異なる内部サービスノードへ、データメッセージを、これらのデータメッセージのＭＤＭ属性集合と共に、転送するＶＰＮゲートウエイの一例を示し、この場合、サービスノードはＭＤＭ属性集合に基づいてデータメッセージを処理することができる。
【００３６】
【図２２】サービスノードクラスタ内の複数のミドルボックスサービスノードに亘って、異なるモバイルデバイスデータメッセージフロー用のサービス動作を分散させている二つのＶＰＮゲートウエイのサービスモジュールを示す。
【００３７】
【図２３】ある実施の形態のＶＰＮゲートウエイを示し、該ＶＰＮゲートウエイは（１）データメッセージフローに関連付けられたＭＤＭ属性集合を解析し、（２）この解析に基づいて、ひとつ以上のサービスタグを特定し、（３）特定されたサービスタグをデータメッセージフローと共にネットワーク要素へインバンドで転送する。
【００３８】
【図２４】サービスノードが二つのモバイルデバイスデータメッセージフローに対してサービスタグに基づいて行う負荷分散動作の例を示し、ＶＰＮゲートウエイはデータメッセージフローに関連付けられたＭＤＭ属性集合を解析した後にそのサービスタグを割り当てる。
【００３９】
【図２５】ある実施の形態における、アドミニストレータがＭＤＭ属性集合およびフローヘッダ値に基づいてサービスルールを指定できるようにするためにネットワークコントローラの集合が提供するサービスルール管理コンソールのＵＩの一例を示す。
【００４０】
【図２６】本発明のある実施の形態のネットワークコントローラを示す。
【００４１】
【図２７】ある実施の形態のＭＤＭ属性インデックスツリーの一例を示す。
【００４２】
【図２８】上述の二つのベクトル指定サービスルールについて定義されうるインデックスツリーを示す。
【００４３】
【図２９】ネットワークコントローラからのサービスルールの集合を保持するサービスルールストレージのためのＭＤＭ属性インデックスツリー構造を生成するプロセスを示す。
【００４４】
【図３０】フローのＭＤＭ属性集合および／またはフローヘッダ値に基づいて、サービスルールストレージから、データメッセージフローについてのサービスルールを選択するためにサービスノードが用いるプロセスを示す。
【００４５】
【図３１】本発明のいくつかの実施形態が実施されるコンピュータシステムを概念的に示す。
【発明を実施するための形態】
【００４６】
以下の発明の詳細な説明では、発明の種々の詳細、例および実施の形態が説明される。しかしながら、発明が実施の形態に限定されないこと、および議論される特定の詳細や例のいくつかを伴うことなしに発明を実施可能なこと、は当業者には自明であろう。
【００４７】
ある実施の形態は、リモートデバイス管理（ＲＤＭ）システムからのデータメッセージ属性に基づいて、ネットワークにおいて、リモートデバイスデータメッセージを処理する。リモートデバイスは、外部の公共ネットワークから、専用ネットワーク内に位置するリソースへのアクセスを試行する任意のデバイスを含む。そのようなデバイスの例は、サーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、等を含む。ある実施の形態では、リモートデバイス管理システムはモバイルデバイス管理（ＭＤＭ）システムである。モバイルデバイスは、ラップトップやタブレットやスマートフォンや仮想デスクトップインタフェース（ＶＤＩ）やターミナルサーバなどのモバイル計算デバイスを含む。
【００４８】
本明細書で用いられる場合、データメッセージはネットワークを介して送信される、特定のフォーマットのビットの集合を指す。イーサネットフレームやＩＰパケットやＴＣＰセグメントやＵＤＰデータグラムなどの、ネットワークを介して送信可能な種々のフォーマット化されたビット集合を指すものとして、データメッセージという用語を本明細書で用いてもよいことを、当業者は認識するであろう。また、本明細書で用いられる場合、Ｌ２、Ｌ３、Ｌ４およびＬ７レイヤ（またはレイヤ２、レイヤ３、レイヤ４、レイヤ７）への参照はそれぞれ、ＯＳＩ（オープンシステムインターコネクション）レイヤモデルの第２データリンクレイヤ、第３ネットワークレイヤ、第４トランスポートレイヤ、および第７アプリケーションレイヤへの参照である。
【００４９】
リモートデバイス（例えば、リモートモバイルデバイス）から受信したデータメッセージに関連付けられたＲＤＭ属性集合に基づいて、ある実施の形態は、受信したリモートデバイスデータメッセージのソースネットワークアドレス（例えば、ソースインターネットプロトコル（ＩＰ）アドレスおよび／またはソースポート）を変更するＳＮＡＴ動作を行う。ネットワークのひとつ以上のネットワーク要素は次いで、データメッセージの変更されたソースネットワークアドレスに基づいて、リモートデバイスデータメッセージに対して、ひとつ以上の動作を行う。これらの動作の例は、ルーティング動作と、論理セグメンテーション動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【００５０】
ある実施の形態は、データメッセージに関連付けられたＲＤＭ属性集合に直接的に基づいて、受信したリモートデバイスデータメッセージに対するひとつ以上のネットワーク動作を行う。例えば、ある実施の形態では、ひとつ以上のネットワーク要素は、データメッセージに関連付けられたＲＤＭ属性集合を解析することによって解決されたネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。そのようなネットワーク要素の一つのタイプはファイヤウォールデバイスであり、それは受信したデータメッセージの関連ＲＤＭ属性集合に基づいてファイヤウォール動作を行う。言い換えると、ある実施の形態のファイヤウォールデバイスは、ＲＤＭ属性集合に関して定義されたファイヤウォールルールを課す。
【００５１】
ある実施の形態では、ネットワーク要素は、転送要素および／または受信したモバイルデバイスデータメッセージに関連付けられたＲＤＭ属性集合を参照して定義される他のルールを課す他のミドルボックス要素を含む。例えば、ある実施の形態のネットワーク要素は、データメッセージフローに関連付けられたＲＤＭ属性集合に基づいて、データメッセージフロー（すなわち、同じパケットヘッダ値を有するデータメッセージの集合）に対してＤＮＳ動作またはＤＮＡＴ動作を行う。
【００５２】
図１は、ＭＤＭシステムからのデータメッセージ属性に基づいてモバイルデバイスデータメッセージを処理するデータセンタ１００の例を示す。このデータセンタ１００は、データセンタのリソースにアクセスするモバイルデバイス１５０からのデータメッセージのＭＤＭ属性に基づいてひとつ以上の動作を行うＶＰＮゲートウエイ１１０の集合を有する。ＶＰＮゲートウエイ集合１１０に加えて、データセンタ１００はひとつ以上のネットワークコントローラ１１５の集合と、ひとつ以上のＭＤＭサーバ１２０の集合と、いくつかの計算サーバ１３５と、を含む。ある実施の形態では、データセンタのこれらの部材は、ローカルエリアネットワークやワイドエリアネットワークである内部ネットワーク１０５を通じて通信可能に結合される。ある実施の形態では、内部ネットワーク１０５は、（例えば、専用有線または無線接続を通じて、またはインターネットを用いるひとつ以上のオーバレイネットワークを通じて、）データセンタの異なる物理的位置を繋いでもよい。他の実施の形態では、データセンタ１００はひとつの連続した物理的位置であり、内部ネットワーク１０５は、ネットワーク要素と、これらのネットワーク要素間の有線接続または無線接続と、からなる。
【００５３】
ある実施の形態では、内部ネットワーク１０５のネットワーク要素は、（１）メッセージヘッダのパラメータに基づいてデータメッセージを転送する転送要素１５５（例えば、スイッチ、ルータおよびブリッジ）と、（２）メッセージヘッダのパラメータに基づいてデータメッセージに対してサービス（例えば、ファイヤウォール、侵入検知、ネットワークアドレス変換（ＮＡＴ）等）を行うミドルボックス要素（ＭＢＥ）１６０と、を含む。また、ある実施の形態では、これらの要素は自身の転送動作やサービス動作を、ＭＤＭ属性に基づいて行うことができる。モバイルデバイスからのデータメッセージフローについて指定可能なＭＤＭ属性の例は、デバイス識別子と、ユーザ識別子と、アプリケーション識別子と、アプリケーショングループ識別子と、オペレーティングシステムと、モバイルデバイスの位置と、モバイルデバイスのコンプライアンス状態と、モバイルデバイスのジェイルブレイク状態と、インターネットプロトコルのバージョンと、を含む。
【００５４】
これらのネットワーク要素は、サーバ１３５とＭＤＭサーバ１２０とネットワークコントローラ１１５とＶＰＮゲートウエイ集合１１０とに関連付けられた（例えば、送信されまたは受信された）データメッセージに対して転送動作およびサービス処理動作を行う。サーバ１３５は、データセンタの外側のひとつ以上のモバイルデバイス１５０からアクセス可能な計算動作およびストレージ動作（例えば、アプリケーションの実行、ファイルの格納等）を行う。ある実施の形態では、複数のサーバ１３５はホストコンピュータ上で実行される。そのようなサーバの例は、仮想マシンおよびコンテナを含む。これらの実施の形態のいくつかでは、ひとつ以上のネットワーク要素（例えば、転送要素、ミドルボックス要素、ＶＰＮゲートウエイ）もまたそのようなホストコンピュータ上で実行されてもよく、これはさらに後述される。
【００５５】
ＶＰＮゲートウエイ集合１１０は、データセンタ１００の外側のモバイルデバイス１５０とのＶＰＮトンネルを確立することで、これらのデバイスに、データセンタ１００のリソース（例えば、サーバ１３５）へのセキュアなＶＰＮ接続を提供する。言い換えると、ＶＰＮゲートウエイは、モバイルデバイスにまずＶＰＮゲートウエイとのセキュアなＶＰＮトンネルを確立することを要求することによって、ネットワークリソース（例えば、サーバ等）へのモバイルデバイスのアクセスを制限する。トンネルはトンネルヘッダを用いることで、あるタイプのプロトコルからのパケットを、異なるプロトコルのデータグラムにおいてカプセル化する。ある実施の形態では、ＶＰＮトンネルはＰＰＴＰ（ポイントツーポイントトンネルプロトコル）を用いて、インターネットなどの公共ネットワークに亘ってＩＰパケットをカプセル化する。ＶＰＮトンネルは、（ＶＰＮトンネルヘッダを伴うパケットのうちの）そのＶＰＮパケットのペイロードを、ひとつ以上のＶＰＮキーで、暗号化する。これにより、モバイルデバイスとＶＰＮゲートウエイとの間で安全にパケットを交換することができる。
【００５６】
ある実施の形態では、ＶＰＮゲートウエイは、（１）内部ネットワーク１０５からモバイルデバイス１５０へ送られたパケットをＶＰＮトンネルヘッダでカプセル化および暗号化し、（２）それがモバイルデバイス１５０から受信するパケットから、そのパケットを内部ネットワーク１０５のネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化し、これらのパケットを解読する。ある実施の形態では、ＶＰＮゲートウエイ１１０は、データセンタ１００の内部のネットワークトラフィックとデータセンタ１００の外部のネットワークトラフィックとの間のブリッジとして動作するプロキシサーバ（例えば、ＳＯＣＫＳプロキシサーバ）を含む。データセンタ１００から出て行くトラフィックは、データセンタ１００の内部のリソースから来るように見えるのではなく、プロキシサーバから来るように見える（例えば、プロキシサーバのＩＰアドレスと関連付けられる）。図１はＶＰＮゲートウエイを、モバイルデバイスからのデータメッセージを受ける最初のデータセンタ部材の集合として示しているが、当業者であれば、ある実施の形態では、データセンタ１００がデータセンタ１００に入るデータメッセージを最初に受けて分配するひとつ以上の機器（例えば、負荷分散器）を有すると認識するであろう。
【００５７】
ある実施の形態では、モバイルデバイス１５０がＶＰＮゲートウエイとのＶＰＮトンネル接続の確立を試行すると、ＶＰＮトンネルゲートウエイは、ＶＰＮ要求を認証するために、それがモバイルデバイス１５０から得たＶＰＮ資格情報集合をＭＤＭサーバ集合１２０に渡す。ある実施の形態では、モバイルデバイスの資格情報集合を認証する際、ＭＤＭサーバ集合１２０は、ＶＰＮ接続を要求しているモバイルデバイス１５０、（モバイルデバイスの）ユーザおよび／または（モバイルデバイス上で実行される）アプリケーションのひとつ以上のＭＤＭ属性を提供する。ある実施の形態では、後に詳述されるように、モバイルデバイス上で実行されているＶＰＮクライアントまたはプロキシクライアントはＭＤＭ属性を提供する。例えば、モバイルデバイス上のクライアントは、アプリケーション識別子やデバイス識別子や位置やデバイスジェイルブレイク状態などを提供可能である。
【００５８】
ある実施の形態では、ＶＰＮ要求の認証という自身の役割に加えて、ＭＤＭサーバ集合１２０は、モバイルデバイスに、専用ネットワークのリソース（例えば、データセンタ１００のリソース）へのアクセスを提供するサーバ集合である。異なる実施の形態では、プロビジョニングは以下の動作のうちの異なる組み合わせを含む：（１）モバイルデバイスの識別子を、リモートアクセスを有しうるモバイルデバイスのリストに追加すること、（２）モバイルデバイスを通じたリモートアクセスを有しうるひとつ以上のユーザを特定するユーザ識別子を追加すること、（３）モバイルデバイスがデータセンタとのセキュアなＶＰＮリモートアクセスをセットアップできるよう、モバイルデバイスにＶＰＮアクセスソフトウエアおよび／または設定を提供すること、および（４）企業識別子やユーザ資格などのテナント情報を定義すること。
【００５９】
ＶＰＮゲートウエイ１１０は、ＭＤＭサーバ集合１２０により提供されたＭＤＭ属性を、確立されたＶＰＮ接続を通じてモバイルデバイス１５０からそれが後に受信するデータメッセージに、関連付ける。また、ある実施の形態では、ＶＰＮ接続が確立されると、モバイルデバイス１５０は、それが送信するデータメッセージのひとつ以上のＭＤＭ属性を、ＶＰＮトンネルヘッダに、埋め込む。ある実施の形態では、ＶＰＮゲートウエイ１１０は、それがＭＤＭサーバ集合１２０およびモバイルデバイス１５０から受信するＭＤＭ属性を集めてＭＤＭ属性のひとつの集合をなし、ＶＰＮゲートウエイ１１０はそのＭＤＭ属性のひとつの集合を、ＶＰＮ接続を通じてモバイルデバイス１５０によって送信されたデータメッセージに関連付ける。
【００６０】
関連ＭＤＭ属性集合に基づいて、ＶＰＮゲートウエイ１１０は、それがトンネルを通じてモバイルデバイスから受信するデータメッセージに対するひとつ以上の動作を実行する。ある実施の形態では、関連ＭＤＭ属性集合は、ＶＰＮゲートウエイ１１０が執行するデータ処理ルールを処理するためのコンテキストを提供する。ある実施の形態では、後に詳述されるように、ルールのルール識別子（マッチングルールを特定するためのもの）は、ＭＤＭ属性値を参照するだけでなく、データメッセージフローのフロー識別子の値（例えば、Ｌ２−Ｌ４ヘッダ値やＬ２−Ｌ７ヘッダ値）によっても定義される。
【００６１】
そのようなデータ処理ルールの一例は、ＭＤＭ属性ベースのＳＮＡＴルールを含む。ある実施の形態では、ＶＰＮゲートウエイ１１０はＳＮＡＴ動作を行う。ＳＮＡＴ動作は、受信したデータメッセージに関連付けられたＭＤＭ属性集合に基づいて、受信したモバイルデバイスデータメッセージのヘッダに、新たなソースネットワークアドレス（例えば、新たなソースＩＰアドレスおよび／または新たなソースポート）を挿入する。ＶＰＮゲートウエイ１１０は、次いで、内部ネットワーク１０５内のメッセージの宛先へデータメッセージを転送する。メッセージが内部ネットワーク１０５を通じてその宛先へと進んでいくにつれて、ネットワーク１０５のひとつ以上の内部ネットワーク要素（例えば、転送要素１５５やミドルボックス要素１６０等）は、データメッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて、ひとつ以上のネットワークポリシーにしたがい、データメッセージに対する動作を行う。内部ネットワーク要素のそのような動作の例は、ルーティング動作と、論理セグメンテーション動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【００６２】
他の実施の形態のＶＰＮゲートウエイ１１０は、データメッセージに関連付けられたＭＤＭ属性集合に直接的に基づいて、受信したモバイルデバイスデータメッセージに対するひとつ以上のネットワーク動作を行う。ある実施の形態では、これらのネットワーク動作は、ＶＰＮゲートウエイに関連付けられたひとつ以上のミドルボックス要素（例えば、ミドルボックスエンジンやデバイス）によって、モバイルデバイスデータメッセージのＭＤＭ属性集合に直接的に基づいて、行われる。（例えば、ひとつ以上のミドルボックス要素は、ＶＰＮゲートウエイと同じマシン上で実行され、または物理的接続やオーバレイ接続を通じてＶＰＮゲートウエイに直接的に接続される。これは、ゲートウエイが内部ネットワーク１０５へ渡す全てのデータメッセージを調べるためである。）以下では、そのようなミドルボックス要素はＶＰＮゲートウエイの関連ミドルボックス要素（ＭＢＥ）と称される。ある実施の形態では、ＶＰＮゲートウエイ１１０またはその関連ＭＢＥ１６０は、データメッセージのＭＤＭ属性集合を解析することによって解決されたひとつ以上のルールにしたがい、データメッセージを処理する。
【００６３】
ある実施の形態では、ファイヤウォールルールは、ＭＤＭ属性集合に関して定義されたルールの一例である。ＶＰＮゲートウエイ１１０またはその関連ＭＢＥ１６０は、データメッセージのＭＤＭ属性集合を用いることで、データメッセージに適用可能なファイヤウォールルールを特定し、次いで、このルールにより指定されるアクション（許可、拒否、リダイレクト、リダイレクトコピー、等）をデータメッセージに対して行う。
【００６４】
ある実施の形態では、ＶＰＮゲートウエイ１１０またはその関連ＭＢＥ１６０は、データメッセージフローに関連付けられたＭＤＭ属性集合に基づいて、データメッセージフロー（すなわち、同じパケットヘッダ値を有するデータメッセージの集合）に対してＤＮＳ動作を行う。また、ある実施の形態では、このゲートウエイ１１０またはその関連ＭＢＥ１６０は、データメッセージをその宛先までルーティングするために、データメッセージのＭＤＭ属性に基づいて、ＤＮＡＴ動作を行う。ある実施の形態は，ＤＮＳ動作またはＤＮＡＴ動作を用いることで、第１地理的位置（例えば、ある国）に関連付けられたモバイルデバイスが第１地理的位置のネットワークにのみ、または、第１地理的位置のデバイス用に分離された第２地理的位置（例えば、別の国）のネットワークにのみ、アクセスすることを確かなものとする。例えば、欧州の企業の従業員のモバイルデバイスが米国内でＶＰＮ接続を試みる場合、そのリモートデバイスが、欧州内のサーバにのみ、またはその企業の欧州従業員による使用のために分離された米国データセンタ内のサーバにのみ、アクセスすることができることを確実にするために、そのようなアプローチを用いることができる。
【００６５】
ある実施の形態では、ネットワークマイクロセグメンテーションは、ＶＰＮゲートウエイ１１０またはその関連ＭＢＥ１６０がモバイルデバイスデータメッセージのＭＤＭ属性に基づいて行う他の処理動作の一例である。ある実施の形態は、ネットワークのネットワーク要素（例えば、転送要素、ミドルボックス要素など）の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子（例えば、仮想ネットワーク識別子、ＶＮＩ）を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【００６６】
ある実施の形態では、マイクロセグメンテーション動作は、ＶＰＮゲートウエイまたはその関連ＭＢＥが、モバイルデバイスデータメッセージと、論理ネットワークと、をそのデータメッセージの関連ＭＤＭ属性集合に基づいて関連付けることを含む。例えば、ある実施の形態では、ＶＰＮゲートウエイまたはその関連ＭＢＥは複数のマイクロセグメンテーションルールを処理し、各ルールはＭＤＭ属性の集合と論理ネットワーク識別子とを参照して指定されうる。これらの実施の形態では、ＶＰＮゲートウエイまたはその関連ＭＢＥは、データメッセージのＭＤＭ属性集合と、マイクロセグメンテーションルールのうちのひとつのＭＤＭ属性集合と、をマッチし、マッチングルールの論理ネットワーク識別子をデータメッセージの論理ネットワーク識別子として用いることができる。そのような状況において、ＶＰＮゲートウエイはトンネルのトンネルヘッダに論理ネットワーク識別子を挿入する。ゲートウエイはそのトンネルヘッダを用いてデータメッセージを、論理ネットワークに関連付けられた転送要素またはミドルボックス要素へ転送する。
【００６７】
ある実施の形態では、ＶＰＮゲートウエイは、それがモバイルデバイスのデータメッセージに関連付けたＭＤＭ属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はＭＤＭ属性集合に基づいてひとつ以上の動作（例えば、ファイヤウォール動作、ＤＮＳ動作、ＤＮＡＴ動作、および／または他のミドルボックスや転送動作）を行うことができる。ある実施の形態では、ＶＰＮゲートウエイは、モバイルデバイスのＭＤＭ属性集合をネットワークの内部転送要素および／またはミドルボックス要素に、ＶＰＮゲートウエイとその要素とを接続するトンネルのトンネルヘッダを通じて、渡す。例えば、ある実施の形態では、ＶＰＮゲートウエイはＧｅｎｅｖｅまたはＶＸＬＡＮトンネルを通じてネットワーク要素に接続する。このトンネルプロトコルは、ＶＰＮゲートウエイが、トンネルヘッダにフローベースのメタデータ（これはそのフローについてのＭＤＭ属性集合を含む）を挿入することを可能とする。
【００６８】
ある実施の形態では、ネットワークコントローラ集合１１５はＭＤＭ属性ベースのルールを生成し、これらのルールをＶＰＮゲートウエイ１１０、その関連ＭＢＥ１６０、および／または他のネットワーク要素（例えば、転送要素１５５）に分配する。ある実施の形態では、ネットワークコントローラ集合１１５は、ＭＤＭサーバ集合１２０から、種々のＭＤＭ属性の定義と、これらのＭＤＭ属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。ＭＤＭ属性定義は、ＭＤＭ属性およびこれらのＭＤＭ属性について可能な値を定義する辞書の一部として提供される。ある実施の形態では、オペレータの集合は以下の動作のうちの二つ以上を含みうる：ＡＮＤ、ＯＲ、等しい、より大きい、より小さい、以上、以下、等しくない、等。
【００６９】
ネットワークコントローラの集合１１５は次いで、受信したＭＤＭ属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび／またはルール（例えば、ミドルボックス要素１６０用のサービスルールや、転送要素１５５用の転送ルールなど）をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合１１５のユーザインタフェースまたはＡＰＩ（アプリケーションプログラミングインタフェース）の集合を通じて、サービスポリシーおよび／またはサービスルールをプログラムすることができる。
【００７０】
ネットワークコントローラ集合１１５はＭＤＭ属性ベースのポリシーまたはルールをＶＰＮゲートウエイ１１０、その関連ＭＢＥ、および／または他のネットワーク要素に分配する。ある実施の形態では、ネットワークコントローラはこれらの要素にポリシー／ルールをプッシュする。これらのまたは他の実施の形態では、ネットワークコントローラ集合は、ネットワーク要素（例えば、ＶＰＮゲートウエイ１１０、その関連ＭＢＥ１６０、および／または他のネットワーク要素）がこれらのポリシー／ルールをプルすることを可能とする。ある実施の形態では、ＶＰＮゲートウエイおよび／またはネットワーク要素は、それが受信するＭＤＭベースのポリシーを、それが執行するＭＤＭベースのルールに変換する。
【００７１】
図２は、ある実施の形態のＶＰＮゲートウエイ２０５を示す。このＶＰＮゲートウエイ２０５は、図１のデータセンタ１００のＶＰＮゲートウエイ１０５として機能しうる。示されるように、ＶＰＮゲートウエイ２０５は、ＶＰＮプロセッサ２１０と、ＭＤＭ認証器２１５と、ルールプロセッサ２２０と、ネットワークコントローラエージェント２２５と、ＭＤＭエージェント２３０と、ルールデータストレージ２３５と、ＭＤＭ属性ストレージ２４０と、を備える。ＶＰＮプロセッサ２１０はＶＰＮサーバ（不図示）を含み、該サーバはデータセンタの外側のモバイルデバイス１５０とのＶＰＮトンネルを確立し、それによりデータセンタ内のリソース（例えば、サーバ）からモバイルデバイスに送信されるデータを暗号化し保護する。そのようなＶＰＮサーバの多くが市場で普通に取得可能であり、例えば、Juniper Networksにより販売されているＶＰＮサーバ（Pulse Secure VPN）や、Cisco Systems, Inc.により販売されれているＶＰＮサーバ（Easy VPN）、Dell Inc.により販売されているＶＰＮサーバ（Sonicwall VPN server）等である。
【００７２】
ある実施の形態では、ＶＰＮプロセッサ２１０は、（１）内部ネットワーク１０５からモバイルデバイス１５０へ送られたパケットをＶＰＮトンネルヘッダでカプセル化および暗号化し、（２）それがモバイルデバイス１５０から受信するパケットから、そのパケットを内部ネットワークのネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化し、これらのパケットを解読する。ある実施の形態では、ひとつ以上のデータセンタ部材は最初、モバイルデバイス１５０からデータメッセージを、そのデータメッセージがＶＰＮプロセッサ２１０に到達する前に、受信する。
【００７３】
トンネルカプセル化／脱カプセル化および暗号化／解読を行うＶＰＮサーバに加えて、ある実施の形態のＶＰＮプロセッサ２１０は、ＶＰＮサーバが面する外部ネットワークとデータセンタの内部ネットワークとの間のブリッジとして機能するプロキシサーバ（例えば、ＳＯＣＫＳプロキシサーバ）をも含む。
【００７４】
ある実施の形態では、モバイルデバイスからのＶＰＮデータ経路は以下のシーケンスで表現されうる：（１）モバイルアプリケーション、（２）ＳＯＣＫＳプロキシクライアント、（３）ＶＰＮクライアント、（４）ＶＰＮサーバ、（５）ＳＯＣＫＳプロキシサーバ、および（６）データセンタ内の宛先ネットワーク要素。逆のシーケンスは、ネットワーク要素からモバイルデバイスへの逆のデータ経路を示す。モバイルデバイスデータメッセージに対してＭＤＭ属性ベースのサービスが行われる場合、モバイルデバイスのデータ経路は、ソケットサーバと宛先ネットワーク要素との間のひとつ以上のＭＤＭ属性ベースのサービスを含む。
【００７５】
モバイルデバイス１５０がＶＰＮプロセッサ２１０とのＶＰＮトンネル接続の確立を試行すると、ＶＰＮプロセッサ２１０は、それがモバイルデバイス１５０から得たＶＰＮ資格情報集合を認証器２１５に渡す。認証器２１５は、ＶＰＮ要求を認証するために、資格情報集合をＭＤＭサーバ集合１２０にリレーする。ＶＰＮ要求が認証されると、認証器２１５はＶＰＮプロセッサ２１０に、それがモバイルデバイス１５０用のＶＰＮトンネルを確立できることを知らせる。
【００７６】
ある実施の形態では、モバイルデバイスの資格情報集合を認証する際、ＭＤＭサーバ集合１２０は、ＶＰＮ接続を要求しているモバイルデバイス、（モバイルデバイスの）ユーザおよび／または（モバイルデバイス上で実行される）モバイルデバイスアプリケーションのひとつ以上のＭＤＭ属性を認証器２１５に提供する。そのようなデータの例は、デバイス状態（例えば、ＯＳタイプ）と、デバイス位置と、適合状態と、を含む。
【００７７】
認証器２１５は、ＭＤＭ属性ストレージ２４０にこれらの属性を格納する。ある実施の形態では、認証器２１５とのインバンド通信を通じてＭＤＭサーバ１２０からＭＤＭ属性を受信する代わりに、ＶＰＮゲートウエイ２０５は、そのＭＤＭエージェント２３０を通じてアウトオブバンドでＭＤＭサーバ１２０からＭＤＭ属性を取得する。これらの実施の形態のいくつかでは、ＭＤＭサーバ１２０は、それが認証器２１５から認証対象のＶＰＮ資格情報集合を受信すると、ＭＤＭエージェント２３０に、要求されるＶＰＮトンネルに関連付けられた（例えば、ＶＰＮトンネルを要求しているモバイルデバイス、ユーザ、および／またはモバイルデバイスアプリケーションに関連付けられた）ＭＤＭ属性集合を提供する。ＭＤＭエージェント２３０は、それがＭＤＭサーバ１２０から受信するＭＤＭ属性をＭＤＭ属性ストレージ２４０に格納する。
【００７８】
ある実施の形態では、このＭＤＭ属性ストレージ２４０は、ＶＰＮトンネルおよびその関連ＭＤＭ属性集合を特定するレコード（例えば、ＶＰＮトンネルの識別子を保持するレコード）に、各ＶＰＮトンネルの関連ＭＤＭ属性集合を保持する。ＶＰＮトンネルを特定することに代えて、またはＶＰＮトンネルを特定することに加えて（例えば、ＶＰＮトンネル識別子を保持することに加えて）、このレコードはデータメッセージのデータメッセージ識別子（例えば、五つのタプル識別子であって、これはある実施の形態ではソースＩＰ、宛先ＩＰ、ソースポート、宛先ポート、およびプロトコルである）を特定する。該データメッセージはトンネルを通じて受信されたものであり、したがってこのレコードのＭＤＭ属性集合に関連付けられるべきものである。
【００７９】
ある実施の形態では、いったんＶＰＮ接続が確立されると、モバイルデバイス１５０は、それが送信するデータメッセージのＶＰＮトンネルヘッダにひとつ以上のＭＤＭ属性を埋め込む。これらの実施の形態では、ＶＰＮプロセッサ２１０は埋め込まれたＭＤＭ属性集合を抽出し、この集合をＭＤＭ属性ストレージ２４０に（例えば、ストレージ２４０においてＭＤＭサーバ１２０から受信したＭＤＭ属性集合用に生成されていたレコードに）格納する。ある実施の形態では、このデータは、確立されたＶＰＮトンネルについて、例えばＶＰＮトンネルの識別子に基づいて、保持される。確立されたＶＰＮトンネルについて収集されたＭＤＭ属性は、このトンネルを通じてモバイルデバイス１５０から受信したデータメッセージを処理するためのＭＤＭコンテキストを提供する。
【００８０】
このコンテキストに基づいて、ルールプロセッサ２２０は、それが確立されたＶＰＮトンネルおよびＶＰＮプロセッサ２１０を通じてモバイルデバイス１５０から受信するデータメッセージに対するひとつ以上の動作を実行することができる。特に、ＶＰＮプロセッサ２１０は、それが確立されたＶＰＮトンネルを通じてモバイルデバイス１５０から受信するＶＰＮデータメッセージペイロードを脱カプセル化する（すなわち、受信したＶＰＮデータメッセージからＶＰＮトンネルヘッダを除去する）。ＶＰＮプロセッサ２１０はまた、脱カプセル化されたＶＰＮデータメッセージペイロードを解読する。脱カプセル化され、解読されたＶＰＮデータメッセージペイロードは、それが暗号化されトンネルヘッダでカプセル化される前の、モバイルデバイス１５０によって送られるデータメッセージである。
【００８１】
ＶＰＮプロセッサ２１０は、モバイルデバイス１５０からのデータメッセージをルールプロセッサ２２０に渡す。ある実施の形態では、ルールプロセッサ２２０はデータメッセージに関連付けられたＭＤＭ属性集合を、ＭＤＭ属性データストレージ２４０から、取得する。ある実施の形態では、データストレージ２４０内の各レコードは、（１）ＭＤＭ属性集合と、（２）データメッセージヘッダ値またはＶＰＮトンネル識別子もしくはその両方に関して定義されたレコード識別子と、を指定する。
【００８２】
したがって、ある実施の形態では、ルールプロセッサ２２０はデータメッセージのヘッダ値を用いることで（例えば、データストレージのなかから、メッセージの五つのタプル識別子にマッチするルール識別子を有するレコードを特定することによって）、データメッセージのＭＤＭ属性集合を特定する。他の実施の形態では、ルールプロセッサ２２０は、ＶＰＮトンネルの識別性を用いることで（例えば、データストレージ２４０のなかから、ＶＰＮトンネル識別子を有するレコードを特定することによって）メッセージのＭＤＭ属性集合を特定する。これらの実施の形態では、ＶＰＮプロセッサ２１０は、ルールプロセッサ２２０に、ＶＰＮプロセッサ２１０がルールプロセッサ２２０に提供するデータメッセージのＶＰＮトンネル識別情報を知らせる必要がある。さらに他の実施の形態では、ルールプロセッサ２２０は、データメッセージのヘッダ値およびトンネル識別子（トンネルＩＤ）の両方を用いることで、データメッセージのＭＤＭ属性集合を特定する。
【００８３】
ルールプロセッサ２２０は、次いで、特定されたＭＤＭ属性集合を用いることで、ルールストレージ２３５のなかから、執行すべきひとつ以上のサービスルールを特定する。このストレージ２３５はＭＤＭ属性集合に基づいてサービスルールを保持する。例えば、ある実施の形態では、各ルールは、（１）アクションを指定し、かつ（２）ＭＤＭ属性値の集合を有する。ルールプロセッサ２２０は、そのＭＤＭ属性値の集合と、受信したデータメッセージのＭＤＭ属性集合とのマッチングを試行することができる。ルールのＭＤＭ属性値集合が受信されたデータメッセージのＭＤＭ属性集合とマッチする場合、ルールプロセッサ２２０はルールによって指定されるアクションを行う。アクションがデータメッセージの排除やデータセンタの外側の他のリソースへのデータメッセージの再ルーティングを含まない場合、ルールプロセッサ２２０は、ルールプロセッサ２２０がデータメッセージに対してそのアクションを行った後、内部ネットワーク内のデータメッセージの宛先へデータメッセージを転送する。ある実施の形態では、ルールプロセッサ２２０はデータメッセージを、内部ネットワーク内のセットネットワーク要素（例えば、スイッチおよびルータ）を通じてその宛先へと転送する。
【００８４】
ある実施の形態では、ひとつ以上のサービスアクションについてのルールを保持するひとつのルールストレージ２３５を用いるひとつのルールプロセッサ２２０を有する代わりに、ＶＰＮゲートウエイ２０５は、異なる複数種類のサービスアクションについての複数のルールストレージと複数のルールプロセッサとを用いる。他の実施の形態では、ＶＰＮゲートウエイ２０５は、異なる複数種類のサービスルールを保持する複数のルールストレージを用いるひとつのルールプロセッサ２２０を用いる。
【００８５】
図３−図７は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。特に、図３はＳＮＡＴルールストレージ３００を示し、図４は、ファイヤウォールルールストレージ４００を示し、図５はＤＮＡＴルールストレージ５００を示し、図６はＤＮＳルールストレージ６００を示し、図７は論理的セグメンテーションルールストレージ７００を示す。示されるように、ある実施の形態では、これらのルールストレージにおけるルールのそれぞれは、ＭＤＭ属性集合および／またはフロー属性集合（例えば、Ｌ２−Ｌ４パケットヘッダ値）に基づいて定義されうるルール識別子を含む。特定のＭＤＭ属性集合を伴うデータメッセージについて、ルールプロセッサは、データメッセージのＭＤＭ属性集合および／またはヘッダ値と、ルールのルール識別子と、を比較することで、これらのルールストレージ３００−７００のいずれかにおけるルールを特定することを試みることができる。ある実施の形態では、ルールストレージ３００−７００のそれぞれのルールは、明示的または暗示的な優先度（例えば、明記される優先度によって指定されるか、またはルールストレージ内のそれらの順番によって指定される）を有する。ルールストレージにおいてデータメッセージのＭＤＭ属性集合および／またはヘッダ値とマッチするルール識別子を有するルールが複数ある場合、ルールプロセッサはルールストレージにおいて最も高い優先度のルールを選択する。
【００８６】
ＳＮＡＴルールストレージ３００では、ＳＮＡＴルールは、ＳＮＡＴ動作中にデータメッセージのソース情報を置換するためのソース情報（例えば、ソースＩＰアドレスおよび／またはソースポート）を保持する。ファイヤウォールルールストレージ４００のファイヤウォールルールは、ファイヤウォールルール識別子にマッチするＭＤＭ属性および／またはフロー属性を有するデータメッセージに対するファイヤウォールアクション（許可、拒否、リダイレクト、リダイレクトコピー、ＤＮＡＴ等）を指定する。
【００８７】
ＤＮＡＴルールストレージ５００のＤＮＡＴルールは、ＤＮＡＴ動作中にデータメッセージの宛先タプル（例えば、受信されたデータメッセージの宛先ＩＰおよび／または宛先ポート）を置換するためのひとつ以上の候補宛先タプル（例えば、宛先ＩＰアドレスおよび／または宛先ポートの複数の集合）を保持する。図５に示される例では、各ＤＮＡＴルールはまた、負荷分散された態様で候補宛先タプルのうちのひとつを選択するようルールプロセッサを導く負荷分散基準の集合を含んでもよい。図６のＤＮＳルールストレージ６００のＤＮＳルールは、ＤＮＳルールのルール識別子にマッチするＭＤＭ属性およびフロー属性を有するデータメッセージのＤＮＳサーバ識別子（これはＤＮＳサーバを特定する）を保持する。
【００８８】
図７の論理的セグメンテーションルールストレージ７００の各セグメンテーションルールは、受信されたモバイルデバイスデータメッセージと、データセンタの共通共用ネットワークおよび計算リソースによって実装される特定の論理ネットワークと、を関連付ける論理ネットワーク識別子（ＬＮＩ）を保持する。ある実施の形態では、ＬＮＩは仮想ネットワーク識別子（ＶＮＩ）を含む。ある実施の形態では、ＶＮＩは論理スイッチを特定する。ある実施の形態では、ＬＮＩは、論理ルータを特定する仮想分散ルータ識別子などの他の仮想識別子を、合わせてまたは代替的に、指定する。ある実施の形態では、ＶＰＮゲートウエイは、論理ネットワークを実装するネットワーク要素にトンネルを通じて接続する。これらの実施の形態のいくつかでは、セグメンテーションルールはひとつ以上のネットワーク要素へのひとつ以上のトンネルの集合を指定することができる。ルールプロセッサは、そのひとつ以上のトンネルの集合を用いることで、メッセージをトンネルヘッダでカプセル化し、トンネルヘッダにＬＮＩを挿入した後に、そのデータメッセージをルーティングすることができる。
【００８９】
上述のように、ルールデータストレージ２３５のサービスルールは、ネットワークコントローラ１１５を通じてアドミニストレータによって指定される。図２に示されるように、ＭＤＭベースのルールは、ネットワークコントローラ１１５がＭＤＭサーバ１２０から取得するＭＤＭ辞書およびオペレータ集合を参照して定義される。ネットワークコントローラ１１５は、ＶＰＮゲートウエイ２０５のネットワークコントローラエージェント２２５を通じて、これらのルールをルールデータストレージ２３５に格納する。ある実施の形態では、このエージェント２２５は、コントロールチャネルを通じてネットワークコントローラ１１５と通信する。
【００９０】
ルールストレージ２３５のサービスルールは任意の数のアクションを指定することができる。アクションの例は上述のＳＮＡＴ動作を含む。このＳＮＡＴ動作では、モバイルデバイスデータメッセージのソース情報（例えば、ソースＩＰおよび／またはソースポート）が新たなソース情報で置き換えられる。この新たなソース情報は、内部ネットワーク１０５の下流にあるネットワーク転送要素およびミドルボックス要素による転送動作およびサービス動作に影響する。他の例示的な動作は、上述のファイヤウォール動作、ＤＮＡＴ動作、ＤＮＳ動作およびネットワークセグメンテーション動作を含む。これらの動作は後に詳述される。
【００９１】
ある実施の形態では、ＶＰＮプロセッサ２１０および認証器２１５は、ホストコンピュータ上で実行されるＶＰＮトンネル処理ＶＭによって実装される。図１１を参照して後に詳述されるように、このＶＰＮトンネル処理ＶＭは、他のゲストＶＭ（ＧＶＭ）、サービスＶＭ（ＳＶＭ）、被管理ソフトウエア転送要素（ＳＦＥ）、および／またはハイパバイザベースのミドルボックスサービスモジュールと共に、そのホスト上で実行される。これらの実施の形態のいくつかでは、ルールプロセッサ２２０は、同じホストコンピュータ上で実行されるフィルタモジュールであり（例えば、ハイパバイザ提供フィルタモジュールであり）、このフィルタモジュールは、ＶＰＮトンネル処理ＶＭのＶＮＩＣ（仮想ネットワークインタフェースカード）によって、またはこのＶＮＩＣに接続するホストのソフトウエアスイッチのポートによって、呼び出される。ある実施の形態では、このフィルタモジュールは、ＶＰＮ  ＶＭがこれらのメッセージを脱カプセル化し、それらを内部ネットワークのネットワーク要素へ導く際に、そのモバイルデバイスデータメッセージを取得する。このアーキテクチャは、図１２を参照して後に詳述される。
【００９２】
図８は、ある実施の形態においてルールプロセッサ２２０が行うＳＮＡＴプロセス８００を示す。このプロセスは、ＶＰＮプロセッサ２１０が内部ネットワーク１０５へ渡すモバイルデバイスデータメッセージを調べる。上述のように、ある実施の形態では、ルールプロセッサ２２０はＶＰＮトンネル処理ＶＭのフィルタモジュールであり、それはＶＭから（例えば、ＶＰＮ  ＶＭのＶＮＩＣまたはその関連ＳＦＥポートから）出て行く経路上でこれらのデータメッセージを取得する。
【００９３】
示されるように、ＶＰＮプロセッサが内部ネットワーク１０５へ渡すデータメッセージをルールプロセッサ２２０が受信したとき（８０５において）、プロセス８００は始まる。プロセス８００は次に、データメッセージが、該プロセス８００が以前に処理したデータメッセージフローの一部であるか否かを判定する（８１０において）。ある実施の形態では、ルールプロセッサ２２０は、ルールプロセッサ２２０が処理するデータメッセージフローのそれぞれのレコードを含む接続ストレージを維持する。
【００９４】
ある実施の形態では、接続ストレージ内のフローのレコードのそれぞれは、（１）フローに関連付けられたデータメッセージについてＳＮＡＴ動作を行わなければならないか否かを示すブール値と、（２）もしそうであれば、データメッセージの既存のソース情報（例えば、既存のソースＩＰアドレスおよび／またはソースポート）を置き換えるために用いられるべきソース情報（例えば、新たなソースＩＰアドレスおよび／またはソースポート）と、を指定する。また、各フローのレコードはフロー識別子（例えば、フローの五つのタプル識別子）を指定する。ある実施の形態では、プロセス８００は、データメッセージのフロー識別子（例えば、五つのタプル識別子）と、接続ストレージに保持されるレコードのフロー識別子と、を比較し、データメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを特定することによって、接続ストレージが受信されたデータメッセージのフローのレコードを含むか否かを判定する。
【００９５】
受信されたデータメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを接続ストレージが保持するとプロセス８００が判定（８１０において）した場合、プロセスは、マッチするレコードがＳＮＡＴ動作を指定するか否かを判定（８１５において）し、もしそうであれば、マッチするレコードに含まれるソース情報に基づいてＳＮＡＴ動作を行う（すなわち、データメッセージのソース情報をマッチするレコードによって指定されるソース情報で置き換える）。マッチするレコードが、ＳＮＡＴ動作が行われるべきでないことを指定する場合、プロセス８００はデータメッセージが変更されずに通過することを許可（８１５において）する。８１５の後、プロセスは終了する。
【００９６】
受信されたデータメッセージと同じフローの一部であるデータメッセージをプロセス８００がこれまでに処理したことがないとプロセス８００が判定（８１０において）した場合、プロセス８００はＭＤＭ属性ストレージ２４０を調べ（８２０において）ることで、受信されたデータメッセージに関連付けられたＭＤＭ属性集合を特定する。ある実施の形態では、ＭＤＭ属性ストレージ２４０は、各データメッセージフローのＭＤＭ属性集合を、そのフローの識別子（例えば、五つのタプル識別子）に基づいて、保持する。したがって、これらの実施の形態では、プロセス８００は、メッセージのフロー識別子を用いてＭＤＭ属性ストレージ２４０のなかからマッチするフロー識別子を伴うレコードを見つけることによって、メッセージの関連ＭＤＭ属性集合を特定（８２０において）する。上述の通り、他の実施の形態は、モバイルデバイスがそれを通じてメッセージを送信するところのトンネルの識別子を用いることで、メッセージの関連ＭＤＭ属性集合を特定する。
【００９７】
次に、８２５において、プロセス８００は、受信されたデータメッセージのＭＤＭ属性集合についてのＳＮＡＴ動作を指定するレコードをＭＤＭ属性ベースのルールストレージ２３５が含むか否かを判定する。ある実施の形態では、プロセス８００は、データメッセージのＭＤＭ属性集合（８２０で特定されたもの）と、ルールストレージ２３５に保持されるレコードのＭＤＭ属性集合と、を比較し、データメッセージのＭＤＭ属性集合にマッチするＭＤＭ属性集合を伴うレコードをこのストレージが含むか否かを判定することによって、この判定をなす。上述のように、ルールストレージ２３５のルールのルール識別子は、メッセージフローヘッダ値に関して定義可能である。ある実施の形態では、ＭＤＭ属性ストレージの各レコードは、ＳＮＡＴ動作と、ＳＮＡＴ動作中にデータメッセージのソース情報を置換するためのソース情報と、を指定する。ある実施の形態では、各レコードは、ＳＮＡＴ動作の非デフォルトソース情報を保持することによって、ＳＮＡＴ動作を暗示的に指定する。
【００９８】
受信されたデータメッセージのＭＤＭ属性集合および／またはヘッダ値とマッチするＭＤＭ属性集合および／またはヘッダ値を伴うレコードをルールストレージ２３５が保持するとプロセス８００が判定する（８２５において）場合、プロセスはこのマッチするルールのＳＮＡＴ動作を行う（８３５において）。このＳＮＡＴ動作は、データメッセージのソース情報（例えば、ソースＩＰアドレスおよび／またはソースポート）を、マッチするルールで指定されるソース情報で、置き換えることを伴う。８３５で、プロセス８００は、データメッセージのフローに対して行わなければならないＳＮＡＴ動作を指定するレコードを接続ストレージに生成し、同じフローの一部である後続して受信するデータメッセージのソース情報を置換するために用いられる必要があるソース情報（８２５においてルールストレージ２３５から特定されたもの）を保持する。８３５の後、プロセスは終了する。
【００９９】
受信されたデータメッセージのＭＤＭ属性集合にマッチするＭＤＭ属性集合を伴うレコードをルールストレージ２３５が保持していないとプロセスが判定する（８２５において）場合、プロセスは、受信されたデータメッセージに対しても、同じフローの一部である他のデータメッセージに対しても、ＳＮＡＴ動作が行われてはならないと判定（８２５において）する。したがって、８３０で、プロセス８００は、データメッセージのフローに対してＳＮＡＴ動作が行われてはならないことを指定するレコードを接続ストレージに生成する。この場合、このレコードを用いることで、同じフローの一部である後続して受信するデータメッセージを素早く処理することができる。８３０の後、プロセスは終了する。
【０１００】
ある実施の形態では、ルールストレージ２３５は、ルールストレージ内のそのほかのどのルールともマッチしないデータメッセージフローとマッチするキャッチオールルールを有する。これらの実施の形態では、キャッチオールルールは、このルールとのみマッチするデータメッセージフローについてはＳＮＡＴ動作が行われてはならないことを指定する。したがって、これらの実施の形態では、プロセスは常に、ルールストレージ２３５においてひとつのマッチするルールを特定（８２５において）し、このルールによって指定されるＳＮＡＴ動作（これは、ＳＮＡＴ動作なしを含む）を実行する。
【０１０１】
プロセス８００がデータメッセージを解析（例えば、データメッセージのソース情報を変更せずに残す、またはデータメッセージのＭＤＭ属性集合に基づいてデータメッセージの元のソース情報を新たなソース情報で置き換えるＳＮＡＴ動作を行う）した後、ルールプロセッサ２２０は内部ネットワーク内のメッセージの宛先へデータメッセージを転送するか、データメッセージがそのように転送されることを許可する。メッセージがネットワークを通じてその宛先へと進んでいくにつれて、ひとつ以上のネットワーク要素（例えば、ひとつ以上の転送要素またはミドルボックス要素）は、メッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて定義された、ネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。これらの動作の例は、ルーティング動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【０１０２】
図９は、ある実施の形態においてルールプロセッサ２２０が行うファイヤウォールプロセス９００を示す。このプロセスは、ＶＰＮプロセッサ２１０が内部ネットワーク１０５へ渡すモバイルデバイスデータメッセージを調べる。上述のように、ある実施の形態では、ルールプロセッサ２２０はＶＰＮトンネル処理ＶＭのフィルタモジュールであり、それはＶＭから（例えば、ＶＰＮ  ＶＭのＶＮＩＣまたはその関連ＳＦＥポートから）出て行く経路上でこれらのデータメッセージを取得する。
【０１０３】
示されるように、ＶＰＮプロセッサが内部ネットワーク１０５へ渡すデータメッセージをルールプロセッサ２２０が受信したとき（９０５において）、プロセス９００は始まる。プロセス９００は次に、データメッセージが、該プロセス８００が以前に処理したデータメッセージフローの一部であるか否かを判定する（９１０において）。ある実施の形態では、ルールプロセッサ２２０は、ルールプロセッサ２２０が処理するデータメッセージフローのそれぞれのレコードを含む接続ストレージを維持する。
【０１０４】
ある実施の形態では、接続ストレージ内のフローのレコードのそれぞれは、（１）フローに関連付けられたデータメッセージについてファイヤウォール動作を行わなければならないか否かを示すブール値と、（２）もしそうであれば、行われるべきファイヤウォール動作（例えば、許可や拒否）と、を指定する。また、各フローのレコードはひとつ以上のフロー識別子（例えば、フローの五つのタプル識別子）を指定する。ある実施の形態では、プロセス９００は、データメッセージのフロー識別子（例えば、五つのタプル識別子）と、接続ストレージに保持されるレコードのフロー識別子と、を比較し、データメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを見つけることによって、接続ストレージが受信されたデータメッセージのフローのレコードを含むか否かを判定する。
【０１０５】
受信されたデータメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを接続ストレージが保持するとプロセス９００が判定（９１０において）した場合、プロセス９００はこのレコードで指定されるファイヤウォールアクションを行う（９１５において）。９１５の後、プロセスは終了する。受信されたデータメッセージと同じフローの一部であるデータメッセージをプロセス９００がこれまでに処理したことがないとプロセス９００が判定（９１０において）した場合（すなわち、マッチするフロー識別子を伴うレコードをそれが特定できない場合）、プロセス９００はＭＤＭ属性ストレージ２４０を調べ（９２０において）ることで、受信されたデータメッセージに関連付けられたＭＤＭ属性集合を特定する。ある実施の形態では、ＭＤＭ属性ストレージ２４０は、各データメッセージフローのＭＤＭ属性集合を、そのフローの識別子（例えば、五つのタプル識別子）に基づいて、保持する。したがって、これらの実施の形態では、プロセス９００は、メッセージのフロー識別子を用いてＭＤＭ属性ストレージ２４０のなかからマッチするフロー識別子を伴うレコードを見つけることによって、メッセージの関連ＭＤＭ属性集合を特定する。ある実施の形態では、プロセス９００は、ＭＤＭ属性ストレージ２４０内のレコードを見つけるために、データメッセージがそれを通じて受信されたところのトンネルの識別子を、合わせてまたは代替的に用いる。
【０１０６】
次に、９２５において、プロセス９００は、データメッセージの特定されたＭＤＭ属性集合および／またはフロー識別子（例えば、Ｌ２−Ｌ４値）を用いて、ルールストレージ２３５内のファイヤウォールルールを特定する。ある実施の形態では、ルールストレージ２３５は、ルールストレージ内のそのほかのどのルールともマッチしないデータメッセージフローとマッチするキャッチオールルールを有する。プロセス９００は次いで、９２５で特定されたルールのファイヤウォールアクション（許可や拒否）を行う（９３０において）。９３０で、プロセスはまた、データメッセージのフローのレコードを接続ストレージに生成する。９３０の後、プロセスは終了する。
【０１０７】
図１０は、ある実施の形態におけるルールプロセッサ２２０のマイクロセグメンテーションプロセス１０００を示す。このプロセスは、受信されたモバイルデバイスデータメッセージを、内部ネットワーク１０５の共有ネットワーク要素により実装される論理ネットワークに、割り当てる。プロセス１０００は、それが１０１５、１０２５、および１０３０で行うアクションを除いて、プロセス９００と同様である。
【０１０８】
１０１５において、受信されたデータメッセージが以前に評価したフローの一部であるとプロセス１０００が判定（９１０において）した場合、マイクロセグメンテーションプロセス１０００は、そのデータメッセージを、接続ストレージ内の以前に生成されたレコードからそれが特定する論理ネットワーク識別子と関連付ける。ある実施の形態では、接続ストレージのレコードはまた、トンネルヘッダ内のＬＮＩと共にデータメッセージを送信するために用いるトンネルを特定する。１０１５において、プロセスは、論理ネットワーク（これは、関連ＬＮＩにより特定される）に関連付けられたネットワーク要素へのトンネルを選択し、メッセージをトンネルのヘッダでカプセル化し、トンネルヘッダにＬＮＩを挿入し、データメッセージをトンネルに沿ってネットワーク要素へ転送する。
【０１０９】
１０２５において、以前に評価したフローの一部ではないデータメッセージについてのＭＤＭ属性集合をプロセスが特定した後、セグメンテーションプロセス１０００は、プロセスが９２０でデータメッセージに対して特定したＭＤＭ属性集合を用いることで、ルールストレージ７００において、データメッセージに対する論理的ネットワーク識別子（例えば、ＶＮＩおよび／または仮想分散ルータ、ＶＤＲＩ）を特定する。上述の通り、ある実施の形態では、このＬＮＩを指定するレコードの特定は、受信されたデータメッセージのヘッダ値に基づくことができる。また、上述の通り、ルールストレージ７００のレコードは、レコードによって指定されるＬＮＩに関連付けられた論理オーバレイネットワークのために使用可能なひとつ以上のトンネルの集合を指定する。
【０１１０】
１０３０で、プロセス１０００は１０２５で特定されたレコードによって特定されるトンネルを選択する。このトンネルは、論理ネットワーク識別子に関連付けられた論理ネットワークに関連付けられたネットワーク要素へのものである。１０３０で、プロセス１０００はメッセージをトンネルのヘッダでカプセル化し、トンネルヘッダに１０２５で特定されたＬＮＩを挿入し、データメッセージをネットワーク要素へ転送する。１０３０で、プロセスはまた、データメッセージのフローについてのレコードを接続ストレージに生成し、フローの識別子と共にＬＮＩおよびトンネル識別子をこのレコードに格納する。
【０１１１】
上述の通り、ある実施の形態では、ＶＰＮゲートウエイ２０５は、（１）ひとつ以上の他のＶＭと共にホストコンピュータ上で実行されるＶＰＮ  ＶＭと、（２）ＶＰＮ  ＶＭの関連サービスモジュールと、を実装している。図１１は、複数のホスト１１０５上で実行されている、複数のそのようなＶＰＮ  ＶＭ１１１０およびサービスモジュール１１２０を有するデータセンタ１１００を示す。このデータセンタでは、各ホストがＶＰＮ  ＶＭを実行する必要はなく、データセンタ１１００の複数のホストがひとつのＶＰＮ  ＶＭを実行する。
【０１１２】
各ＶＰＮ  ＶＭ１１１０はひとつ以上のサービスモジュール１１２０と対をなし、これによりＶＰＮゲートウエイ２０５のようなＶＰＮゲートウエイが実装される。この実装では、ＶＰＮ  ＶＭと対をなすサービスモジュールはルールプロセッサ２２０として動作する。この実装によると、複数のＶＰＮゲートウエイを複数のホストコンピュータ上に確立することができ、それにより分散ＶＰＮゲートウエイアーキテクチャを確立することができる。この分散アーキテクチャでは、複数のＶＰＮゲートウエイは複数のホストコンピュータ上で動作することで、データセンタ１１００においてＶＰＮトラフィック負荷を共有することができる。また、この分散アーキテクチャでは、ＶＰＮゲートウエイはデータセンタの入来物理エッジに配置される必要はない。これらのＶＰＮゲートウエイは、他のＶＭが実行されるデータセンタ内の共有ホストコンピュータに亘って分散可能であるからである。
【０１１３】
図１１に示されるように、各ホストコンピュータ１１０５は、（１）データセンタ１１００のひとつ以上のテナントに対して計算動作（例えば、ウェブサーバ動作、アプリケーションサーバ動作、データベースサーバ動作）を行うひとつ以上のゲストＶＭ（ＧＶＭ）１１０２、および／または（２）ＧＶＭ１１０２により送信されるまたはそれへと送信されるデータメッセージについてのサービス動作（例えば、ファイヤウォール動作、負荷分散動作等）を行うひとつ以上のサービスＶＭ（ＳＶＭ）１１０４、を実行することができる。ある実施の形態では、データセンタ１１００は企業の専用データセンタであり、そのテナントの全てがある主体（例えば、ある会社）に属する。他の実施の形態では、データセンタは多くの異なる無関係なテナントにより使用される共用データセンタである。
【０１１４】
各ホストコンピュータ１１０５はまた、ソフトウエアスイッチやソフトウエアルータなどのひとつ以上のソフトウエア転送要素１１３０を実行する。ソフトウエア転送要素（ＳＦＥ）は、そのホストコンピュータ１１０５上のＶＭを接続し、これらのＶＭとホストの外側の他のデバイス（例えば、他のＶＭ）とを接続する。各ホストはまた、暗号化動作、論理的セグメンテーション動作、ファイヤウォール動作、負荷分散動作、および／または他のミドルボックスサービス動作などのひとつ以上のサービスアクションを行うひとつ以上のサービスモジュール１１２０を実行する。
【０１１５】
ある実施の形態では、ひとつ以上のサービスモジュール１１２０は、関連ＶＰＮ  ＶＭ１１１０についてのＭＤＭルールプロセッサ２２０として機能する。そのようなルール処理サービスモジュールは、ＶＰＮゲートウエイのＭＤＭベースの処理動作（例えば、ソースネットワークアドレス変換、ファイヤウォール動作、等）を行う。そのようなサービスモジュール１１２０は、その関連ＶＰＮ  ＶＭがこれらのメッセージを脱カプセル化し、それらをネットワークの内部ネットワーク要素へ導く（例えば、それらをデータメッセージ内の宛先タプルによって特定される宛先ノードに導く、またはそれらを他の宛先ノードへリダイレクトする）際に、そのモバイルデバイスデータメッセージを取得する。図１２を参照して後に詳述されるように、ある実施の形態のサービスモジュール１１２０は、ＶＭの仮想ネットワークインタフェースカード（ＶＮＩＣ）またはこのＶＮＩＣに接続するホストのＳＦＥのポートによって呼び出されたフィルタモジュールである。
【０１１６】
サービスモジュール１１２０は、サービスルールストレージ１１２５に保持されるサービスルールに基づいて、自身のサービス動作を行う。ある実施の形態では、複数のこれらのサービスルールは、ＭＤＭ属性集合に関して定義されたルール識別子を含む。ある実施の形態では、サービスモジュールは、データメッセージフローのＭＤＭ属性集合を、そのホスト上のＭＤＭ属性データストレージ１１３５から、取得し、取得されたＭＤＭ属性集合を用いて、サービスルールストレージ１１２５のなかから処理対象のサービスルールを特定する。
【０１１７】
図１１に示されるように、ひとつ以上のエージェント１１４０は各ホストコンピュータ１１０５上で実行され、種々のコントローラ（すなわち、種々の管理サーバ）と相互作用する。これらのコントローラは、図１および２を参照して説明されたネットワークコントローラ１１５およびＭＤＭコントローラ１２０を含む。これらのコントローラはまた、ホスト上にＧＶＭおよび／またはＳＶＭを提供および展開するＶＭ管理コントローラ１１５０を含む。エージェント１１４０は、これらのコントローラ１１５、１２０および１１５０とやりとりすることで、ＧＶＭ、ＳＶＭおよびサービスモジュールを提供し、設定する。これらのエージェント１１４０はまた、ネットワークコントローラ１１５およびＭＤＭコントローラ１２０とやりとりすることで、サービスルールおよびＭＤＭ属性集合を受信する。示されるように、データセンタのネットワーク１０５は、全てのホストおよびコントローラを通信可能に接続する。
【０１１８】
図１２は、ある実施の形態のホストコンピュータ１２００のソフトウエアアーキテクチャをより詳細に示す。このより詳細な図はサービスモジュールをフィルタモジュールとして挿入することを示しており、該フィルタモジュールはホスト上で実行されているＶＭと対をなすことで、そのＶＭへのデータメッセージおよび／またはそのＶＭからのデータメッセージを取得する。後に詳述されるように、これらのサービスモジュールのひとつ以上は、ＶＰＮ  ＶＭ１１１０のルールプロセッサ２２０として機能する。
【０１１９】
図１１のホスト１１０５のように、ホストコンピュータ１２００は、（１）ひとつ以上のＧＶＭ１１０２と、（２）ひとつ以上のＳＶＭ１１０４と、（３）ＶＰＮ  ＶＭ１１１０と、（４）ＳＦＥ１１３０と、（５）ひとつ以上のサービスモジュール１１２０と、（６）エージェント１１４０と、（７）ＭＤＭ属性ストレージ１１３５と、を含む。示されるように、ホスト１２００はまた、ホストレベルルールストレージ１２１５と、ルールパブリッシャ１２２０と、接続状態ストレージ１２３２と、ＭＤＭ属性ルールストレージ１２２６と、フローヘッダルールストレージ１２２７と、を含む。ルールストレージ１２２６および１２２７は合わせて図１１のサービスルールストレージ１１２５として機能する。
【０１２０】
ＳＦＥ１１３０はホスト１２００上で実行され、ホストの物理ＮＩＣ（ＰＮＩＣ）およびホストの外側で動作するひとつ以上の転送要素（例えば、スイッチおよび／またはルータ）を通じて、ホストのＶＭを互いに、およびホストの外の他のデバイス（例えば、他のホスト上の他のＶＭ）と、通信可能に結合させる。示されるように、ＳＦＥ１１３０は、ホストのＰＮＩＣ（不図示）に接続するポート１２３０を含む。各ＶＭについて、ＳＦＥ１１３０はまた、ＶＭのＶＮＩＣ１２２５に接続するポート１２３５を含む。ある実施の形態では、ＶＮＩＣはＰＮＩＣのソフトウエア抽象化であり、仮想化ソフトウエアによって（例えば、ハイパバイザによって）実装される。各ＶＮＩＣ１２２５は、その対応するＳＦＥポート１２３５を通じたそのＶＭとＳＦＥ１１３０との間のパケット交換について責を負う。示されるように、ＶＭのデータメッセージが出て行くデータ経路は、（１）ＶＭのＶＮＩＣ１２２５と、（２）このＶＮＩＣに接続するＳＦＥポート１２３５と、（３）ＳＦＥ１１３０と、（４）ホストのＰＮＩＣに接続するＳＦＥポート１２３０と、を含む。ＶＭの入来データ経路は順番が逆であることを除いて同じである（すなわち、まずポート１２３０で、次にＳＦＥ１１３０、次にポート１２３５、そして最後にＶＮＩＣ１２２５）。
【０１２１】
ある実施の形態では、ＳＦＥ１１３０はソフトウエアスイッチであり、他の実施の形態では、それはソフトウエアルータであり、またはソフトウエアスイッチ／ルータの組み合わせである。ある実施の形態では、ＳＦＥ１１３０は、マルチホスト環境において他のホストで実行されるＳＦＥと共にひとつ以上の論理転送要素（例えば、論理スイッチや論理ルータ）を実装する。ある実施の形態では、論理転送要素は複数のホストに跨がることによって、異なるホストで実行されているがひとつの論理ネットワークに属する複数のＶＭを接続することができる。言い換えると、異なる論理転送要素を、異なるユーザに対する異なる論理ネットワークを指定するものとして定義することができ、各論理転送要素は複数のホスト上の複数のＳＦＥによって定義されうる。各論理転送要素は、他の論理転送要素により扱われる他の論理ネットワークのＶＭから、ある論理ネットワークのＶＭのトラフィックを隔離する。論理転送要素は、同じホストおよび／または異なるホスト上で実行されるＶＭを接続することができる。
【０１２２】
ポート１２３０およびＮＩＣドライバ（不図示）を通じて、ＳＦＥ１１３０はホストのＰＮＩＣに接続し、出て行くパケットを送信し、かつ、入来パケットを受信することができる。ＳＦＥ１１３０は、それが自身のポートのうちのひとつで受信したメッセージを自身のポートのうちの別のひとつに転送するためのメッセージ処理動作を行う。例えば、ある実施の形態では、ＳＦＥはデータメッセージ内のヘッダ値を用いて、そのメッセージをフローベースルールにマッチさせることを試みる。そして、マッチが見つかると、ＳＦＥはそのマッチするルールにより指定されるアクションを行う（例えば、そのポート１２３０または１２３５のうちのひとつにパケットを渡す、ここでそのポートはパケットが宛先ＶＭやＰＮＩＣに供給されるよう導く）。ある実施の形態では、ＳＦＥはデータメッセージから論理ネットワーク識別子（例えば、ＶＮＩ）およびＭＡＣアドレスを抽出する。これらの実施の形態では、ＳＦＥは抽出されたＶＮＩを用いることで論理ポートグループを特定し、次いで、ＭＡＣアドレスを用いることでそのポートグループ内のあるポートを特定する。
【０１２３】
ある実施の形態では、ＳＦＥポート１２３５は、ポートで受信された入来パケットおよび出て行くパケットに対する特別な入出力（Ｉ／Ｏ）動作を実装するひとつ以上のサービスモジュール１１２０に対するひとつ以上のファンクションコールを含む。そのようなＩ／Ｏ動作の例は、ミドルボックス動作（例えば、ファイヤウォール動作、負荷分散動作、ＤＮＡＴ動作、ＤＮＳ再ルーティング動作等）、ＡＲＰプロキシ動作、メッセージカプセル化動作（例えば、オーバレイ論理ネットワーク動作を実装するトンネルに沿ってメッセージを送信するために必要なカプセル化動作）等を含む。ある実施の形態では、そのようなファンクションコールのスタックを実装することによって、ポートは入来メッセージおよび／または出て行くメッセージに対するＩ／Ｏ動作のチェーンを実装することができる。ポート１２３５からＩ／Ｏオペレータ（サービスモジュール１１２０を含む）を呼び出すことの代わりに、他の実施の形態はこれらのオペレータをＶＭのＶＮＩＣから、またはＳＦＥのポート１２３０から、呼び出す。
【０１２４】
サービスモジュール１１２０のサービス動作の三つのタイプは、ＶＰＮ  ＶＭ１１１０によって渡されるモバイルデバイスデータメッセージのＭＤＭ属性ベース処理に特に関連する。これらは以下の通り：（１）ＶＰＮ  ＶＭを実行するホスト上で行われるＭＤＭ属性ベースのサービス動作、（２）トンネルのトンネルヘッダにＭＤＭ属性集合を挿入するトンネルカプセル化動作、ここでモバイルデバイスデータメッセージを他のサービスノードへ転送するためにＭＤＭ属性集合がインバンドで転送されうる、および（３）これらの他のサービスノードによって、インバンド送信されたＭＤＭ属性集合に基づいて、データメッセージに対して行われるサービス動作。
【０１２５】
ある実施の形態では、サービス動作の第１のタイプは、ＶＰＮ  ＶＭ１１１０のサービスモジュール１１２０が、それがＶＰＮ  ＶＭの出て行くデータ経路から傍受したデータメッセージに対してＭＤＭ属性ベースのサービス動作を行うことを含む。これらの実施の形態のいくつかでは、複数のサービスモジュール１１２０をＶＰＮ  ＶＭに関連付けてもよく、これらのサービスモジュールは、それらがＶＰＮ  ＶＭの出て行くデータ経路から傍受したデータメッセージに対して異なるＭＤＭ属性ベースのサービス動作を行うことができる。そのような状況では、ＶＰＮ  ＶＭのＶＮＩＣ１２２５に接続されたＳＦＥポート１２３５は、ＶＰＮ  ＶＭから受信したデータメッセージについて処理するファンクションコールリストを段階的に進んでいくにつれて、ＭＤＭ属性処理サービスモジュールを呼び出す。
【０１２６】
新たなデータフローのデータメッセージについて、ＶＰＮ  ＶＭ１１１０のサービスモジュール１１２０は、まず属性ストレージ１１３５からメッセージのＭＤＭ属性集合を取得することによって、ＭＤＭ属性ベースのサービス処理を行う。ある実施の形態では、ＶＰＮ  ＶＭ１１１０は、リモートデバイスから、および／またはＭＤＭサーバからインバンドで（例えば、認証プロセスの一部として）ＭＤＭ属性データを取得した後、このＭＤＭ属性集合のいくつかまたは全てをストレージ１１３５に格納する。合わせて、または代替的に、エージェント１１４０は、認証プロセスの一部としてＭＤＭサーバからＯＯＢで（アウトオブバンドで）このデータを取得すると、ＭＤＭ属性集合のいくつかまたは全てをＭＤＭストレージ１１３５に格納する。
【０１２７】
ある実施の形態は、メッセージフローヘッダ値に基づいて、ＭＤＭ属性集合をＭＤＭ属性ストレージ１１３５に格納する。したがって、これらの実施の形態では、サービスモジュール１１２０は、メッセージのフローヘッダ値を用いてフロー値のマッチする集合を伴うＭＤＭ属性集合を特定することで、ストレージ１１３５からメッセージのＭＤＭ属性集合を取得する。メッセージのＭＤＭ属性集合を取得した後、ＶＰＮ  ＶＭのサービスモジュール１１２０はこの属性集合および／またはメッセージのフローヘッダ値（例えば、Ｌ２−Ｌ７パラメータ）を用いることで、ルールストレージ１２２６／１２２７からデータメッセージを処理するためのサービスルールを特定する。ある実施の形態では、ストレージ１２２６および１２２７の両方はサービスルールのただひとつのコピーを保持するが、異なるインデックス構造を用いることで、データメッセージのフローヘッダ値およびＭＤＭ属性値にマッチするルールを素早く特定することができる。ある実施の形態は、フローヘッダ値について基数木インデックス構造を用い、ＭＤＭ属性についてＭＤＭ属性木構造を用いる。これらの構造は後に詳述される。
【０１２８】
サービスモジュール１１２０は次いで、特定されたサービスルールに基づいてメッセージに対してサービスを行い、それが行ったサービスルールおよび／または動作のレコードを接続状態ストレージ１２３２に生成する。サービスモジュール１１２０は次いで、接続ストレージ内のこのレコードを用いることで、同じデータメッセージフローの一部である他のデータメッセージを処理することができる。サービス動作がデータメッセージの廃棄を要求していない場合、サービスモジュール１１２０は次いでデータメッセージをＶＰＮ  ＶＭの関連ＳＦＥポート１２３５に戻し、その結果、データメッセージは次のサービスモジュール１１２０によって処理されうるか、またはデータメッセージはＳＦＥ１１３０によってその宛先へ転送されうる。
【０１２９】
示されるように、サービスルールはパブリッシャ１２２０によってルールストレージ１２２６および１２２７に分配される。ある実施の形態では、エージェント１１４０はネットワークコントローラからフローベースのルールおよびＭＤＭ属性ベースのルールを受信し、これらのルールをホストレベルルールストレージ１２１５に格納する。ある実施の形態では、パブリッシャ１２２０は次いで、ＭＤＭ属性ベースルールストレージおよびフローベースルールストレージ１２２６および１２２７内の異なるテーブルに、これらのルールを格納する。他の実施の形態は、異なるサービスモジュールに対して異なるルールストレージ１２２６および１２２７（および接続状態ストレージ１２３２）を指定する。これらの実施の形態では、パブリッシャ１２２０は、サービスモジュール１１２０についてのサービスルール集合を、サービスモジュールに対応するＭＤＭ属性ベースルールストレージおよびフローベースルールストレージ１２２６および１２２７に分配する。
【０１３０】
ＭＤＭ属性ベースの処理に関連するサービス動作の二つの他のタイプは、データメッセージの関連ＭＤＭ属性を他のサービスノード（例えば、ＳＶＭや他のホスト上のサービスモジュールやスタンドアローンサービス機器）へインバンドで転送し、他のサービスノードがデータメッセージに対してＭＤＭ属性ベースの処理を行う実施の形態についてのものである。そのような実施の形態では、サービス動作の第２のタイプは、ホスト１２００のＳＦＥ１１３０とサービスノードとの間のトンネルのトンネルヘッダでデータメッセージをカプセル化するＶＰＮ  ＶＭ１１１０のサービスモジュール１１２０を含み、該サービスノードは、データメッセージに対してＭＤＭベースの処理を行うか、またはＭＤＭベースの処理を行うサービスノードへデータメッセージを転送する。データメッセージをカプセル化する際、サービスモジュール１１２０はトンネルのヘッダにデータメッセージのＭＤＭ属性集合を挿入する。ある実施の形態では、トンネルは、可変長ヘッダを有しうるＧｅｎｅｖｅまたはＶＸＬＡＮトンネルである。
【０１３１】
ある実施の形態では、ＭＤＭ属性が他のホストで実行されるサービスモジュールへ送信される場合、トンネルは二つのホストのＳＦＥ間のものである。また、ある実施の形態では、データメッセージの特定された宛先およびそのＭＤＭ属性はサービスモジュールではなく、サービスモジュールの関連ＶＭである。いずれにせよ、サービスモジュールは、データがそのＶＭに渡されることを許す前に、受信されたデータメッセージのＭＤＭ属性に基づいて、そのサービス動作を行う。
【０１３２】
ある実施の形態では、サービスノードがトンネルに沿ってデータメッセージおよびそのＭＤＭ属性集合を受信すると、サービスノードはトンネルヘッダを脱カプセル化し、トンネルヘッダからＭＤＭ属性集合をパースし、ＭＤＭ属性集合を（例えば、ＭＤＭ属性ストレージ１１３５に）格納する。ある実施の形態では、データメッセージの宛先ノード（例えば、宛先ＧＶＭ）に関連付けられたサービスモジュール１１２０は、（１）宛先ノードの入来データ経路に沿ってデータメッセージを傍受することによる脱カプセル化動作と、（２）トンネルヘッダから取得されたＭＤＭ属性をＭＤＭ属性ストレージに格納するためのストレージ動作と、を行う。ある実施の形態では、この脱カプセル化サービスモジュールは、宛先ノードを実行するホストのＳＦＥのポート１２３０または１２３５のいずれかによって呼び出される。
【０１３３】
この脱カプセル化サービスモジュールまたは宛先ノードの入来データ経路における他のサービスモジュールは、リモートデバイスデータメッセージに対するＭＤＭ属性ベースの処理の第３のタイプを行う。特に、このサービスモジュールは、トンネルヘッダ脱カプセル化の後に属性集合が格納された先のストレージ１１３５からメッセージのＭＤＭ属性集合を取得し、この属性集合および／またはフローヘッダ値を用いて、ルールストレージ１２２６／１２２７からデータメッセージを処理するためのサービスルールを特定する。
【０１３４】
ある実施の形態では、このサービスモジュール１１２０は、データメッセージフローのあるデータメッセージを処理した後にそのデータメッセージフローに対して行うべきサービスルールおよび／または動作を、接続ストレージ１２３２に格納する。フローの後続データメッセージについて、サービスモジュール１１２０は、ルールデータストレージ１２２６および１２２７から実行対象のサービスルールを探す代わりに、このサービスルールおよび／または動作を用いる。
【０１３５】
同様に、ある実施の形態では、カプセル化サービスモジュールおよび脱カプセル化サービスモジュールは、フロー内の各データメッセージについて、データメッセージのＭＤＭ属性集合を挿入および／またはパースしない。例えば、ある実施の形態では、これらのモジュールは、フロー内の最初のデータメッセージのみについて、または最初のいくつかのデータメッセージのみについて、これらの動作を行う。ある実施の形態では、これは、リモートデータメッセージフローのＭＤＭ属性集合がフローのなかで変わることはないからである。他の実施の形態では、ＭＤＭ属性集合はフローのなかで変化しうる。したがって、これらの実施の形態では、カプセル化および／または脱カプセル化サービスモジュールは、データメッセージフローのＭＤＭ属性集合を、繰り返し、周期的に、またはときどき、挿入および／またはパースする。これらの実施の形態では、脱カプセル化サービスモジュールは、必ずしも、データメッセージフローについて接続ストレージ１２３２において以前に生成されたレコードに依拠してよいわけではない。これは、そのデータメッセージフローについてのレコードを新たなＭＤＭ属性集合に基づいて更新しなければならないかもしれないからである。
【０１３６】
異なる実施の形態は、ＭＤＭ属性ベースのサービス処理の異なる組み合わせを用いる。ある実施の形態は、ＶＰＮ  ＶＭと同じホストで実行されるサービスモジュールにおいてのみ、ＭＤＭ属性ベースのサービス処理を行い、ＶＰＮ  ＶＭの出て行くデータ経路に沿ってデータメッセージを取得する。他の実施の形態は、トンネルを通じてＶＰＮ  ＶＭのホストと接続し、そのトンネルを通じてＶＰＮ  ＶＭのサービスモジュールからインバンドでＭＤＭ属性集合を受信するデバイスで実行されるサービスノードにおいてのみ、ＭＤＭ属性ベースのサービス処理を行う。さらに他の実施の形態は、ＶＰＮ  ＶＭのサービスモジュールにおいてあるＭＤＭ属性ベースのサービス処理を行い、一方で、ＶＰＮ  ＶＭのサービスモジュールによってインバンドに沿って渡されたＭＤＭ属性集合に基づいて、別個のデバイスにおいて他のＭＤＭ属性ベースのサービス処理を行う。
【０１３７】
また、ある実施の形態では、ＶＰＮ  ＶＭと同じか異なるホストで実行されるＳＶＭ１１０４は、ＶＰＮ  ＶＭがネットワークに渡したデータメッセージのＭＤＭ属性集合に基づいて、ＭＤＭ属性ベースのサービス処理を行う。これらの実施の形態のいくつかでは、ＳＶＭ１１０４はＭＤＭ属性ストレージ１１３５に対する直接的なアクセスまたは間接的なアクセス（例えば、ＡＰＩを通すもの）を有し、またはこのストレージ１１３５のレコードはＳＶＭ１１０４のストレージのレコードと同期される。
【０１３８】
ＭＤＭ属性ベースのサービス動作を行うことのいくつかの例が図１３−２４を参照して説明される。図１３−２０は例の第１集合を示し、そこではサービス動作がＶＰＮ  ＶＭのサービスモジュールによって行われる。図２１−２４は例の第２集合を示し、そこではサービス動作がＶＰＮ  ＶＭを実行するホスト上にはないサービスノードによって行われる。例の第２集合では、ＶＰＮ  ＶＭのサービスモジュールは、ＭＤＭ属性集合をインバンドでサービスノードへ転送する（すなわち、サービスモジュールがＶＰＮ  ＶＭによって出力されたデータメッセージをサービスノードへ転送する際に、ＭＤＭ属性集合をトンネルヘッダ内にカプセル化する）。
【０１３９】
図１３は、ＶＰＮ  ＶＭのサービスモジュールがモバイルデバイスに関連付けられた位置に基づいてＤＮＡＴ動作を行う際の二つの異なるやり方を示す。本例における二つのモバイルデバイス１３０２および１３０４はある主体（例えば、ある会社）の一部であるが、二つの異なる領域（例えば、二つの異なる国、米国および独国など）にあるオフィスに関連付けられる。また、本例では、データセンタ１３００は第１モバイルデバイス１３０２の第１領域に関連付けられ、両方のモバイルデバイスはそれらがデータセンタ１３００にアクセスするときに第１領域にある。
【０１４０】
規則、安全性または他の理由により、第２モバイルデバイス１３０４は、データセンタ１３００のうち、第１モバイルデバイス１３０２と同じデータ計算ノード（ＤＣＮ）のクラスタにアクセスすべきではない。したがって、ＶＰＮ  ＶＭ１１１０がモバイルデバイスとのＶＰＮ接続を確立すると、ＶＰＮ  ＶＭ１１１０は、モバイルデバイスからのデータメッセージがデータメッセージの宛先タプルによって特定されるＤＣＮへと通過していくことを許可する。本例では、データメッセージの宛先ＩＰアドレスは、ＤＣＮクラスタ（例えば、ウェブサーバクラスタやアプリケーションサーバクラスタ）に関連付けられた仮想ＩＰ（ＶＩＰ）アドレスである。
【０１４１】
ＶＰＮ  ＶＭのサービスモジュール１３２０は、ＶＰＮ  ＶＭの出て行くデータ経路からデータメッセージを傍受する。それが第１モバイルデバイス１３０２からのデータメッセージを最初に傍受するとき、ＤＮＡＴサービスモジュール１３２０はＭＤＭ属性データストレージ１１３５（不図示）から、このデータメッセージに関連付けられたＭＤＭ属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、ＭＤＭ属性集合を取得する。
【０１４２】
サービスモジュール１３２０は次いで、このＭＤＭ属性集合を用いることで、ＭＤＭ属性ルールストレージ１２２６（不図示）において、取得されたＭＤＭ属性集合にマッチするルール識別子を有するＤＮＡＴルールを特定する。このルールは、第１モバイルデバイス１３０２のデータメッセージについてはＤＮＡＴ動作を行う必要はないことを指定する。これは、第１モバイルデバイス１３０２は、第１領域にある、第１領域に関連付けられたモバイルデバイス用のＤＣＮサーバクラスタ１３２５にアクセスすることができるからである。したがって、サービスモジュール１３２０はデータメッセージを再ルーティングするためのＤＮＡＴ動作を行わず、第１モバイルデバイスからのデータメッセージがＤＣＮサーバクラスタ１３２５へと通過していくことを許す。サービスモジュール１３２０はまた、この動作のレコードをその接続ストレージに生成する。その結果、それは、このレコードを用いることで、同じフローの一部である第１モバイルデバイスからの後続メッセージを素早く処理することができる。
【０１４３】
ＤＮＡＴサービスモジュール１３２０が第２モバイルデバイス１３０４からのデータメッセージを最初に傍受するとき、このサービスモジュールは再び、ＭＤＭ属性データストレージ１１３５（不図示）から、このデータメッセージに関連付けられたＭＤＭ属性集合を取得し、このＭＤＭ属性集合を用いることで、ＭＤＭ属性ルールストレージ１２２６（不図示）においてＤＮＡＴルールを特定するしかしながら、この場合、特定されたルールは、第２モバイルデバイス１３０４のデータメッセージに対して、第１領域にあるＤＣＮサーバクラスタ１３３０にそのデータメッセージを再ルーティングするために、ＤＮＡＴ動作を行う必要があることを指定する。ＤＣＮサーバクラスタ１３３０は、この領域内の他のＤＣＮサーバクラスタおよび他のリソースから隔離されているが、これは特に第１領域のデータセンタリソースにアクセスする第２領域モバイルデバイスによるセキュアかつプライベートな使用のためのものである。ある実施の形態では、隔離されたＤＣＮサーバクラスタ１３３０は、種々のファイヤウォール機器および／または他のセキュリティデバイスによってデータセンタ１３００内の他のリソースから保護されている。
【０１４４】
ある実施の形態では、第２モバイルデバイスのデータメッセージを隔離されたＤＣＮサーバクラスタ１３３０に再ルーティングするために、ＤＮＡＴサービスモジュール１３２０は、データメッセージの宛先ＩＰアドレスフィールドにおいて、第１ＤＣＮサーバクラスタ１３２５のＶＩＰを第２ＤＣＮサーバクラスタ１３３０のＶＩＰで置き換える。サービスモジュール１３２０はまた、この動作のレコードをその接続ストレージに生成する。その結果、それは、このレコードを用いることで、同じフローの一部である第２モバイルデバイス１３０４からの後続メッセージを素早く処理することができる。
【０１４５】
第２モバイルデバイス１３０４のデータメッセージを、データセンタ１３００内の第１領域の第２ＤＣＮサーバクラスタ１３３０へと再ルーティングすることに代えて、ある実施の形態は、データメッセージを第２領域内または他の領域内のＤＣＮサーバクラスタに再ルーティングする。図１４は、そのような例のひとつを示す。特に、この図は、データセンタ１４００の外の第２モバイルデバイス１３０４のデータメッセージを、第１領域内のデータセンタＤＣＮクラスタ１３２５にアクセスする第２領域モバイルデバイスについてのＤＣＮサーバクラスタ１４３０へと再ルーティングする、ＭＤＭ属性ベースのＤＮＡＴ動作を行うＶＰＮ  ＶＭのサービスモジュール１４２０を示す。ある実施の形態では、ＤＣＮサーバクラスタ１４３０は第２領域内にあるが、他の実施の形態ではそれは他の領域内にある。ある実施の形態では、ＤＮＡＴ再ルーティング動作は、トンネルを用いることで、第２モバイルデバイスのデータメッセージをデータセンタ１３００からＤＣＮサーバクラスタ１４３０へ転送する。
【０１４６】
図１５および１６は、ＭＤＭ属性ベースの再ルーティング動作の他の二つの例を示す。これらの例では、再ルーティング動作はＤＮＳネームクエリをリダイレクトする。図１５は、モバイルデバイスデータメッセージをリダイレクトするＶＰＮ  ＶＭのサービスモジュールを示し、モバイルデバイスデータメッセージがそのデータメッセージを送ったモバイルデバイスの関連領域に基づいて、二つの異なるＤＮＳサーバへのＤＮＳルックアップを要求する。以前と同様に、本例の二つのモバイルデバイス１３０２および１３０４は二つの異なる領域（例えば、二つの異なる国、米国および独国など）に関連付けられているが、それらがデータセンタ１５００にアクセスするときにはそれら両方が第１領域に位置しており、データセンタ１５００は第１モバイルデバイス１３０２の第１領域に関連付けられる（例えば、第１領域内にある）。また、本例では、規則、安全性または他の理由により、第２領域に関連付けられた第２モバイルデバイス１３０４は、第１領域に関連付けられた第１モバイルデバイス１３０２とは異なるＤＮＳサーバにアクセスしなければならない。
【０１４７】
ＶＰＮ  ＶＭ１１１０がモバイルデバイスとのＶＰＮ接続を確立すると、ＶＰＮ  ＶＭ１１１０はＤＮＳネームクエリを受信し、データセンタのデフォルトＤＮＳサーバ１５２５へと通過することを許す。ＶＰＮ  ＶＭのサービスモジュール１５２０は両方のモバイルデバイス１３０２および１３０４についてのＤＮＳネームクエリを傍受する。ある実施の形態では、サービスモジュール１５２０は、データメッセージの宛先タプル（例えば、宛先ポート）に基づいて、データメッセージがＤＮＳ関連メッセージであると判定する。他の実施の形態では、ＶＰＮ  ＶＭまたはサービスモジュールはソフトターミネーションを行う。この場合、それはパケットを調べることで、パケット内のＤＮＡネームクエリを特定することができる。
【０１４８】
それが第１モバイルデバイス１３０２からのデータメッセージを最初に傍受するとき、サービスモジュール１５２０はＭＤＭ属性データストレージ１１３５（不図示）から、このデータメッセージに関連付けられたＭＤＭ属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、ＭＤＭ属性集合を取得する。サービスモジュール１５２０は次いで、このＭＤＭ属性集合を用いることで、ＭＤＭ属性ルールストレージ１２２６（不図示）において、取得されたＭＤＭ属性集合にマッチするルール識別子を有するＤＮＳルールを特定する。このルールは、第１モバイルデバイス１３０２のデータメッセージについてはＤＮＳ再ルーティング動作を行う必要はないことを指定する。これは、第１モバイルデバイス１３０２は第１領域に関連付けられており、第１領域のＤＮＳサーバ１５２５にアクセスすることができるからである。したがって、サービスモジュール１５２０は、第１モバイルデバイス１３０２からのデータメッセージが変更されずにＤＮＳサーバ１５２５へと通過することを許す。
【０１４９】
サービスモジュール１５２０が第２モバイルデバイス１３０４からのデータメッセージを最初に傍受するとき、このサービスモジュール１５２０は再び、ＭＤＭ属性データストレージ１１３５（不図示）から、このデータメッセージに関連付けられたＭＤＭ属性集合を取得し、このＭＤＭ属性集合を用いることで、ＭＤＭ属性ルールストレージ１２２６（不図示）においてＤＮＳルールを特定するしかしながら、この場合、特定されたルールは、第２モバイルデバイス１３０４のＤＮＳネームクエリに対して、第１領域にあるＤＮＳサーバ１５３０にそのデータメッセージを再ルーティングするために、ＤＮＳ再ルーティング動作を行う必要があることを指定する。ＤＮＳサーバ１５３０は、第１領域のデータセンタ１５００にアクセスする第２領域モバイルデバイスのためのものである。
【０１５０】
ある実施の形態では、規則に準拠するため、セキュリティのため、または第２領域モバイルデバイスについての他の基準のために、第２領域のＤＮＳサーバ１５３０は、第１領域のＤＮＳサーバ１５２５とは異なる態様でひとつ以上のＤＮＳネームクエリを解決してもよい。ある実施の形態では、第２モバイルデバイスのＤＮＳネームクエリを再ルーティングするために、サービスモジュール１５２０は、ＤＮＳネームクエリメッセージ内の宛先ＩＰアドレスを、ＤＮＳサーバ１５２５の宛先ＩＰアドレスから、ＤＮＳサーバ１５３０の宛先ＩＰアドレスに置き換える。
【０１５１】
第２モバイルデバイス１３０４のＤＮＳネームクエリを、データセンタ１５００内の第１領域の第２ＤＮＳサーバ１５３０へと再ルーティングすることに代えて、ある実施の形態は、このデータメッセージを第２領域内または他の領域内のＤＮＳサーバに再ルーティングする。図１６は、そのような例のひとつを示す。特に、この図は、データセンタ１６００の外の第２モバイルデバイス１３０４のＤＮＳネームクエリを、第１領域内のデータセンタＤＮＳサーバにアクセスする第２領域モバイルデバイスについてのＤＮＳサーバ１６３０へと再ルーティングする、ＭＤＭ属性ベースのＤＮＳ動作を行うＶＰＮ  ＶＭのサービスモジュール１６２０を示す。ある実施の形態では、ＤＮＳサーバ１６３０は第２領域内にあるが、他の実施の形態ではそれは他の領域内にある。ある実施の形態では、ＤＮＳ再ルーティング動作は、トンネルを用いることで、第２モバイルデバイスのデータメッセージをデータセンタ１６００からＤＮＳサーバ１６３０へ転送する。
【０１５２】
トンネルを通じて受信されたモバイルデバイスデータメッセージに関連付けられたＭＤＭ属性集合に基づいてある実施の形態のＶＰＮゲートウエイが行う他の処理動作の一例は、ネットワークマイクロセグメンテーションである。ある実施の形態は、ネットワークのネットワーク要素（例えば、転送要素、ミドルボックス要素など）の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子（例えば、仮想ネットワーク識別子、ＶＮＩ）を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【０１５３】
論理ネットワーク構成のコンセプトを示すために、図１７は、論理オーバレイネットワーク１７０５、１７１０および１７１５の例を示し、そのようなネットワークは、（１）ホスト１７３０の共有集合上で実行されるソフトウエア転送要素１７２０およびサービスモジュール１７２５の共有集合に亘って、かつ（２）複数のスタンドアローンな共有転送要素１７３５および共有ミドルボックス要素（または、サービス機器）１７４０に亘って、定義される。特に、この図は、いくつかのホスト１７３０で実行される多くのＧＶＭを示し、いくつかのホスト１７３０はそれぞれソフトウエア転送要素１７２０およびサービスモジュール１７２５を実行する。
【０１５４】
共有ソフトウエア転送要素１７２０およびスタンドアローン共有転送要素１７３５（例えば、トップオブラックスイッチ（ＴＯＲ））は、任意の数の論理スイッチ１７５０および論理ルータ１７５５を実装可能である。示されるように、ある論理ネットワーク（例えば、ネットワーク１７１５）は複数の論理スイッチおよび／または論理ルータを有することができ、一方、他の論理ネットワーク（例えば、ネットワーク１７０５）はただひとつの論理転送要素（例えば、論理スイッチ）を有することができる。ひとつの論理転送要素は、異なるホスト上のＶＭを通信可能に接続する。例えば、図１７は、ホスト１７３０ａおよび１７３０ｂで実行されるＧＶＭ１および２を接続する論理スイッチ１７５０ａを示し、一方で、論理スイッチ１７５０ｂはこれら二つのホストで実行されるＧＶＭｎとＧＶＭｘとを接続する。
【０１５５】
論理転送要素またはひとつの論理ネットワークの要素は、そのネットワークのＶＭ（すなわち、それが相互に接続するＧＶＭおよびＳＶＭ）の間のデータメッセージ通信を、他の論理ネットワークのＶＭの間のデータメッセージ通信から隔離する。ある実施の形態では、この隔離は、論理ネットワークのＶＭの間で通信されるデータメッセージに、論理ネットワーク識別子（ＬＮＩ）を関連付けることを通じて達成される。これらの実施の形態のいくつかでは、共有ネットワーク要素（例えば、ホスト、スタンドアローンサービス機器、スタンドアローン転送要素等）の間でトンネルが確立され、該トンネルのトンネルヘッダにそのようなＬＮＩが挿入される。
【０１５６】
ハイパバイザでは、ソフトウエアスイッチは仮想スイッチと称されることがある。それらはソフトウエアであり、ホストのＰＮＩＣへの共有アクセスをＶＭに提供するからである。しかしながら、本書では、ソフトウエアスイッチは物理スイッチと称される。それらは現実世界の物であるからである。この用語はまた、ソフトウエアスイッチと論理スイッチとを区別する。論理スイッチはソフトウエアスイッチによって提供されるタイプの接続の抽象化である。ソフトウエアスイッチから論理スイッチを生成するための種々のメカニズムがある。ＶＸＬＡＮはそのような論理スイッチを生成するためのひとつの態様を提供する。ＶＸＬＡＮスタンダードは以下に記載されている：Mahalingam, Mallik; Dutt, Dinesh G.; et al.(2013-05-08), VXLAN:A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks, IETF. 
【０１５７】
さらに示されるように、ホストサービスモジュール１７２５およびスタンドアローンサービス機器１７４０は、論理ネットワークにおいて任意の数のサービスを提供するための任意の数の論理分散ミドルボックス１７７０を実装することができる。そのようなサービスの例は、ファイヤウォールサービス、負荷分散サービス、ＤＮＡＴサービス等を含む。示されるように、ひとつの論理ネットワーク（例えば、ネットワーク１７１５）は複数の分散ミドルボックスサービス要素１７７０を実装でき、一方、他の論理ネットワーク（例えば、ネットワーク１７０５）はただひとつの分散ミドルボックスサービス要素を実装できる。
【０１５８】
図１８−２０は、ある実施の形態のＶＰＮゲートウエイが異なるモバイルデバイスデータメッセージと異なる論理ネットワークとをデータメッセージのＭＤＭ属性集合に基づいて関連付ける三つの異なる方法を示す三つの例を提示する。図１８は、第１テナントの第１モバイルデバイス１８０２からのデータメッセージを、第１論理ネットワーク１８１０の第１論理ネットワーク識別子（ＬＮＩ１）と関連付け、第２テナントの第２モバイルデバイス１８０４からのデータメッセージを、第２論理ネットワーク１８１５の第２論理ネットワーク識別子（ＬＮＩ２）と関連付けるＶＰＮゲートウエイ２０５を示す。
【０１５９】
第１論理ネットワーク１８１０は第１テナントのＧＶＭを接続し、第２論理ネットワーク１８１５は第２テナントのＧＶＭを接続する。示されるように、論理ネットワーク１８１０は、データセンタの計算、転送およびサービス組織（fabric）に実装された論理スイッチ１８２５および分散ミドルボックス要素１８３０を含み、論理ネットワーク１８１５は二つの論理スイッチ１８３５および１８４０と、ひとつの論理ルータ１８４５と、二つの分散ミドルボックス要素１８５０および１８５５と、を含み、それらはデータセンタの計算、転送およびサービス組織に実装されている。各論理ネットワークは、自身のＧＶＭへまたは該ＧＶＭから送信されるデータメッセージを、他の論理ネットワークのＶＭから、隔離する。
【０１６０】
ＶＰＮゲートウエイ２０５は、モバイルデバイスデータメッセージを、論理ネットワークに、そのデータメッセージのＭＤＭ属性集合に基づいて、関連付ける。例えば、ある実施の形態では、ＶＰＮゲートウエイ２０５は、ＶＰＮ  ＶＭと、それと同じホストで実行される関連サービスモジュールと、により実装される。ＶＰＮ  ＶＭがモバイルデバイスとのＶＰＮ接続を確立すると、ＶＰＮ  ＶＭは、モバイルデバイスからのデータメッセージがデータセンタ内のそのアドレスされた宛先へと通過していくことを許可する。ＶＰＮ  ＶＭのサービスモジュールは、ＶＰＮ  ＶＭの出て行くデータ経路からデータメッセージを傍受する。
【０１６１】
それがモバイルデバイスからの最初のデータメッセージを傍受するとき、サービスモジュールはＭＤＭ属性データストレージ２４０から、このデータメッセージに関連付けられたＭＤＭ属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、ＭＤＭ属性集合を取得する。サービスモジュールは次いで、このＭＤＭ属性集合を用いることで、ＭＤＭ属性ルールストレージ２３５において、取得されたＭＤＭ属性集合にマッチするルール識別子を有するＬＳ（論理セグメンテーション）ルールを特定する。
【０１６２】
図１８の例では、各ＬＳルールはテナント識別子を含むルール識別子を指定する。このルールはまた、テナント識別子に関連付けられたモバイルデバイスからのデータメッセージについて用いるべきＬＮＩを指定する。したがって、ある実施の形態では、取得されたＭＤＭ属性集合がテナント識別子を含むので、サービスモジュールはそのテナント識別子を用いることで、特定のテナントのモバイルデバイスからのデータメッセージについて用いるべきＬＮＩを指定するＬＳルールを特定する。サービスモジュールは次いで、トンネルのトンネルヘッダに、特定されたＬＮＩ（例えば、テナント１のモバイルデバイスからのデータメッセージについてはＬＮＩ１であり、テナント２のモバイルデバイスからのデータメッセージについてはＬＮＩ２である）を挿入する。ＶＰＮゲートウエイ２０５はこのトンネルを用いることで、データメッセージを、論理ネットワークに関連付けられた転送要素やミドルボックス要素に転送する。
【０１６３】
ある実施の形態では、特定されたＬＳルールはまた、モバイルデバイスのデータメッセージを転送するために用いられるトンネルを特定するトンネル識別子を指定する。ある実施の形態では、各データメッセージのトンネルヘッダがメッセージの関連ＬＮＩを含む限り、異なるテナントのデータメッセージは同じトンネルを通じて送信されうる。他の実施の形態では、異なるテナントのデータメッセージは、それらが同じ二つのデバイスの間を進行する場合でも、異なるトンネルを通じて送信されなければならない。
【０１６４】
モバイルデバイスからのデータメッセージについてのＬＮＩを特定した後、サービスモジュールは、その接続ストレージに、モバイルデバイスからの後続のデータメッセージのためにこのＬＮＩを保持するレコードを生成する。このレコードにおいて、サービスモジュールは、データメッセージフロー属性（例えば、ヘッダ値）および／または取得されたＭＤＭ属性集合を保持する。この場合、サービスモジュールは後に、この保持されるデータを用いることで、モバイルデバイスからの後続のデータメッセージについて、マッチするフローおよび／またはＭＤＭ属性を有するこのレコードを特定することができる。接続ストアレコードにより、サービスモジュールは、同じフローの一部であるモバイルデバイスからの後続メッセージを素早く処理することができる。
【０１６５】
図１９は、同じテナントの二つのモバイルデバイス１９０２および１９０４からのデータメッセージを、二つの異なる論理ネットワーク１９１０および１９１５に関連付けるＶＰＮゲートウエイ２０５を示す。ＶＰＮゲートウエイ２０５は、単なるモバイルデバイスデータメッセージに関連付けられた取得済みＭＤＭ属性集合のなかのテナント識別子以上のものに依存することによって、これをすることができる。例えば、ある実施の形態では、ＭＤＭ属性ルールストレージ２３５内のＬＳルールのルール識別子はテナント識別子に関して定義されるだけでなく、あるテナントの異なるモバイルデバイスを区別するのに用いられうるひとつ以上の他のＭＤＭ属性によって定義される。他のそのようなＭＤＭ属性の例は、ユーザ識別子と、グループ識別子と、部門識別子と、モバイルデバイスのジェイルブレイク状態と、位置識別子と、等を含む。異なるＬＳルールは、ＬＳルールのルール識別子内のこれらの他の属性（ユーザ識別子と、グループ識別子と、部門識別子と、モバイルデバイスのジェイルブレイク状態と、位置識別子と、等）のうちのいずれかひとつを用いることによっても、同じテナント識別子について異なるＬＮＩを指定することができる。
【０１６６】
ジェイルブレイクデバイスは、ジェイルブレイクプロセスが行われたデバイスである。ジェイルブレイクは、デバイスのオペレーティングシステム（ＯＳ）によって課せられた、デバイスでのソフトウエア制限またはハードウエア制限を取り除くプロセスである。これらの制限はデバイスが実行するソフトウエアを制限することができ、または他のセキュリティ事由により定義されうる。ある場合、デバイス制限はデバイスで実行されるデジタル権利管理（ＤＲＭ）によって定義される。そのようなデバイスでは、ジェイルブレイクは、ＤＲＭ制限をバイパスすることで未承認のソフトウエアのローディングを可能とし、またＯＳに他の変更をなすハッキングプロセスである。ある実施の形態では、ジェイルブレイクはＯＳファイルシステムおよびマネジャへのルートアクセスを許可し、これにより未承認のアプリケーションおよび拡張のダウンロードが可能となる。ある場合、ジェイルブレイクは、署名されていないコードの実行を可能とするための、カーネルパッチの集合（カーネルはＯＳのスーパバイザである）のインストールを含む。それはまた、それ以外では利用可能とはならないルートレベルのアクセスを提供する。本明細書で用いられる限り、ルートレベルのアクセスは、全てのファイルへの無制限の権能および権原を有するスーパユーザアクセスレベルを指す。
【０１６７】
デバイスのジェイルブレイク状態を用いることで、ＬＳルールは、テナントのジェイルブレイクされた第１モバイルデバイス１９０２からのデータメッセージを第１論理ネットワーク１９１０に関連付け、一方、テナントのジェイルブレイクされていない第２モバイルデバイス１９０４からのデータメッセージを第２論理ネットワーク１９１５に関連付けるよう、ＶＰＮゲートウエイ２０５を導くことができる。ある実施の形態では、第１論理ネットワークは第２論理ネットワークよりも少ない数のリソースへのアクセスを有する。ジェイルブレイクされたデバイスは比較的セキュアでないデバイスと見なされるからである。このアプローチは、ジェイルブレイクされたデバイスがあるリソースへのリモートアクセスを有することを可能としつつも、それらがアクセスすることができるべきではない他のリソースから隔離することができる。
【０１６８】
同様に、グループ識別子や部門識別子を用いることで、ＬＳルールは、テナントの第１ユーザグループ（例えば、上層部）に関連付けられた第１モバイルデバイス１９０２からのデータメッセージを第１論理ネットワーク１９１０に関連付け、一方、テナントの第２ユーザグループ（例えば、従業員）に関連付けられた第２モバイルデバイス１９０４からのデータメッセージを第２論理ネットワーク１９１５に関連付けるよう、ＶＰＮゲートウエイ２０５を導くことができる。異なるグループを異なる論理ネットワークに置くことによって、リソースへのリモートアクセスを分離することができる。例えば、あるユーザグループ（例えば、上層部）は他のユーザグループ（例えば、従業員）よりも、リソースのいくつかへのより大きなアクセスを有する。
【０１６９】
図２０は、同じモバイルデバイス２００２からの二つの異なるデータメッセージフローを、二つの異なる論理ネットワーク２０１０および２０１５に関連付けるＶＰＮゲートウエイ２０５を示す。ＶＰＮゲートウエイ２０５は、モバイルデバイス２００２からのあるデータメッセージフローとそのモバイルデバイスからの他のデータメッセージフローとを区別するＭＤＭ属性および／またはフローベースのヘッダ値に依存することによって、これをすることができる。例えば、ある実施の形態では、ＭＤＭ属性ルールストレージ１２２６内のＬＳルールのルール識別子はテナント識別子に関して定義されるだけでなく、リモートアクセスを試行しているモバイルデバイスアプリケーションを特定するアプリケーション識別子に関して定義される。アプリケーション識別子を用いることで、ＬＳルールは、第１アプリケーション（例えば、ブラウザアプリケーション）からのデータメッセージを第１論理ネットワーク２０１０へと導き、一方、第２アプリケーション（例えば、ネイティブ企業アプリケーション）からのデータメッセージを第２論理ネットワーク２０１５に導くよう、ＶＰＮゲートウエイ２０５を導くことができる。
【０１７０】
図１３−２０に示される例は、ＭＤＭ属性指定サービスルールに基づいてＶＰＮゲートウエイ２０５が実行できるサービス動作のタイプのいくつかの例である。当業者であれば、ある実施の形態のＶＰＮゲートウエイがＭＤＭ属性ベースのサービス動作の多くの他の例を実行可能であることを認識するであろう。これらの他の例はファイヤウォール動作、負荷分散動作、他のミドルボックスサービス動作等を含む。
【０１７１】
ある実施の形態では、ＶＰＮゲートウエイは、それがリモートデバイスのデータメッセージに関連付けたＭＤＭ属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はＭＤＭ属性集合に基づいてひとつ以上の動作を行うことができる。図２１−２４は、ＶＰＮゲートウエイがＭＤＭ属性集合をインバンドでサービスノードに転送するいくつかのそのような例を示す。これらの例では、ＶＰＮゲートウエイは、ＶＰＮゲートウエイがリモートデバイスデータメッセージをサービスノードへ処理のために転送する際に、ＭＤＭ属性集合をトンネルヘッダ内にカプセル化する。これらの実施の形態のいくつかでは、トンネルは可変長トンネルヘッダを有しうるＧｅｎｅｖｅトンネルであり、これにより、異なる量のＭＤＭ属性を異なるトンネルを通じて転送することができる。
【０１７２】
図２１は、二つの異なるモバイルデバイス２１０２および２１０４から、二つの異なる内部サービスノード２１５０および２１５５へ、データメッセージを、これらのデータメッセージのＭＤＭ属性集合と共に、転送するＶＰＮゲートウエイ２１０５の一例を示し、この場合、サービスノードはＭＤＭ属性集合に基づいてデータメッセージを処理することができる。この例では、ＶＰＮゲートウエイ２１０５は、ＶＰＮ  ＶＭ１１１０と、ホストコンピュータ上で他のＶＭと共に実行される関連サービスモジュール２１２０と、により実装される。
【０１７３】
二つのＶＰＮトンネル２１１２および２１１４を通じて、ＶＰＮ  ＶＭ１１１０は、第１モバイルデバイスおよび第２モバイルデバイス２１０２および２１０４から、二つの異なるデータメッセージフローを受信する。示されるように、各トンネル２１１２または２１１４のヘッダは、モバイルデバイス２１０２または２１０４がＶＰＮゲートウエイ２１０５に送信するＭＤＭ属性集合を含む。ＶＰＮトンネルヘッダを脱カプセル化する際、ＶＰＮ  ＶＭはモバイルデバイスからのＭＤＭ属性集合をＭＤＭ属性ストレージ（不図示）に格納する。このストレージはまた、ＶＰＮ接続セッションを認証した後にデータメッセージフローについてＭＤＭサーバが提供するＭＤＭ属性を保持する。
【０１７４】
ＶＰＮ  ＶＭ１１１０がモバイルデバイスから受信したデータメッセージを通過させると、このＶＭの関連サービスモジュール２１２０はＭＤＭ属性ストレージから、このデータメッセージについてのＭＤＭ属性集合を取得する。ある実施の形態では、取得されたＭＤＭ属性集合は、モバイルデバイスから受信されたＭＤＭ属性と、ＭＤＭサーバから受信されたＭＤＭ属性と、を含む。サービスモジュール２１２０は次いで新たなトンネルヘッダ（例えば、Ｇｅｎｅｖｅトンネルヘッダ）でデータメッセージをカプセル化し、そのトンネルヘッダに取得されたＭＤＭ属性集合を挿入し、そのカプセル化されたデータメッセージをトンネルを通じて、該トンネルに接続されているサービスノードへ送信する。
【０１７５】
図２１は、トンネル２１４０を通じて第１モバイルデバイス２１０２からスタンドアローンミドルボックス機器２１５０へデータメッセージ（例えば、データパケット）を転送し、一方、トンネル２１４５を通じて第２モバイルデバイス２１０４からサービスモジュール２１５５（これはホスト２１６０により実行される）へデータメッセージを転送するサービスモジュール２１２０を示す。この図は、第１モバイルデバイスのデータメッセージはＶＰＮトンネル２１１２のヘッダ内のあるＭＤＭ属性集合と共に受信されるが、このデータメッセージはトンネル２１４０のヘッダ内の別のＭＤＭ属性集合と共にミドルボックス２１５０へ送信されることを示す。同様に、この図は、第２モバイルデバイスのデータメッセージはＶＰＮトンネル２１１４のヘッダ内のあるＭＤＭ属性集合と共に受信されるが、このデータメッセージはトンネル２１４５のヘッダ内の別のＭＤＭ属性集合と共にサービスモジュール２１５５へ送信されることを示す。これは、モバイルデバイスが送信するＭＤＭ属性の全てをサービスモジュール２１２０が転送するわけではないからである。また、サービスモジュール２１２０はＭＤＭサーバによってサービスノードに提供された追加的なＭＤＭ属性を転送してもよい。
【０１７６】
示されるように、サービスノード２１５０および２１５５の両方はルールプロセッサ２１７０および２１７５を含む。ルールプロセッサ２１７０および２１７５はトンネル２１４０および２１４５のヘッダ内で提供されるＭＤＭ属性集合を用いることで、ＭＤＭルールストレージ２１８０および２１８５においてＭＤＭ属性ベースのルールを特定する。マッチするルールを特定した後、各サービスノード２１５０または２１５５は次いで、サービスルールにより指定されるサービス動作を受信されたデータメッセージに対して行う。そのような動作の例は、ＭＤＭ属性ベースのファイヤウォール動作と、ＤＮＳ動作と、ＤＮＡＴ動作と、および／または他のミドルボックス動作や転送動作と、を含む。
【０１７７】
ある実施の形態では、サービスモジュール２１２０は、データメッセージを処理するためにそれが選択すべきサービスノードまたはサービスノードクラスタがどれであるかを決定するために、自身のルールデータストレージを調べなければならない。また、ある実施の形態では、このサービスモジュール２１２０は、サービスノードクラスタにおけるいくつかの候補サービスノードのなかから、モバイルデバイスからのデータメッセージフローに対するサービス動作を行うものを選択する負荷分散動作を行う。これらの実施の形態のいくつかでは、サービスノードのルールデータストレージおよび／またはその負荷分散動作は、モバイルデバイスデータメッセージのＭＤＭ属性に基づいてもよい。
【０１７８】
図２２は、そのような例のひとつを示す。この図は、サービスノードクラスタ２２５５内の複数のミドルボックスサービスノード２２５０に亘って、異なるモバイルデバイスデータメッセージフロー用のサービス動作を分散させている二つのＶＰＮゲートウエイ２２０２および２２０４のサービスモジュール２２２０を示す。データメッセージフローのヘッダ値に基づいて、各サービスモジュール２２２０はＭＤＭ属性ストア１１２５から、データメッセージフローに対応するＭＤＭ属性集合を取得する。
【０１７９】
取得されたＭＤＭ属性集合に基づいて、サービスモジュール２２２０はＭＤＭ属性ベースのルールデータストレージ１２２６においてサービスルールを特定する。ある実施の形態では、このサービスルールは、あるタイプのサービス動作（例えば、ファイヤウォール動作）を行うサービスノードクラスタへのトンネルの集合を特定する。ある実施の形態では、特定されたサービスルールはまた、負荷分散基準の集合を指定する。負荷分散基準の集合は、サービスモジュール２２２０がサービスノードクラスタ２２５５のサービスノードに亘ってモバイルデバイスデータメッセージフローをどのように分散させるべきかを指定する。そのような負荷分散基準の例は重み値の集合を含み、重み値の集合は、サービスモジュール２２２０が新たなデータメッセージフローについてサービスノードの重み付けラウンドロビン選択をどのように行うかを制御する。
【０１８０】
ある実施の形態では、特定されたサービスルールは負荷分散基準の集合を指定しない。例えば、ある実施の形態では、サービスモジュール２２２０は負荷分散基準のある集合で設定される。サービスモジュール２２２０は、任意のサービスノードクラスタのサービスノードに亘って負荷を分散するために行う全ての負荷分散動作について、その負荷分散基準のある集合を用いる。どのように負荷分散基準が定義されているかによらず、サービスモジュール２２２０はこの基準を用いることで、クラスタ２２５５から新たなモバイルデバイスデータメッセージフローについてのサービスノード２２５０を選択する。次いでサービスモジュール２２２０はこの選択されたサービスノードのトンネルを用いて、このフローのなかのデータメッセージを選択されたサービスノードへ転送する。データメッセージを転送する際、サービスモジュール２２２０は、データメッセージフローについてのＭＤＭ属性データ集合をＭＤＭ属性ストレージ１１２５から取得し、そのＭＤＭ属性データ集合を転送する。
【０１８１】
ＭＤＭ属性をインバンドでデータセンタの内側のネットワーク要素（例えば、サービスノードおよび／または転送要素）に転送する代わりに、ある実施の形態のＶＰＮゲートウエイは（１）データメッセージフローに関連付けられたＭＤＭ属性集合を解析し、（２）この解析に基づいて、ひとつ以上のサービスタグを特定し、（３）特定されたサービスタグをデータメッセージフローと共にネットワーク要素へインバンドで転送する。図２３は、ひとつのそのようなＶＰＮゲートウエイ２３０５を示す。
【０１８２】
ＶＰＮゲートウエイ２３０５は以下の点を除きＶＰＮゲートウエイ２１０５と同様である。ＶＰＮゲートウエイ２３０５のサービスモジュール２３２０はフローに関連付けられたＭＤＭ属性集合に基づいてデータメッセージフローのサービスタグを特定し、特定されたサービスタグをミドルボックスサービス機器２３５０およびサービスモジュール２３５５へ、それぞれトンネル２３４０および２３４５を通じて、インバンドで転送する。サービス機器２３５０およびサービスモジュール２３５５は次いで、受信したサービスタグを用いることで、自身のサービスタグルールストレージ２３８０および２３８５においてサービスルールを特定する。ある実施の形態では、これらのサービスルールのそれぞれは、（１）サービスタグを指定可能なルール識別子と、（２）マッチするサービスタグを伴うデータメッセージに対して行うべきサービス動作を指定するサービスアクションと、を有する。したがって、サービスタグを伴う新たなデータメッセージを受信した後、サービスノード２３５０または２３５５はサービスタグを用いることで、そのルールストレージ２３８０または２３８５において、マッチするルール識別子を伴うサービスルールを特定する。それがマッチするルールを見つけると、サービスノード２３５０または２３５５は次いでマッチするルールのサービスアクションをデータメッセージに対して行う。
【０１８３】
このサービスタグアプローチによると、サービスモジュール２３２０が、いくつかの異なるＭＤＭ属性集合を同じサービスタグに対応付けることが可能となり、サービスノードが下流で処理しなければならないサービスルールの数を低減できる。これは、いくつかの異なるＭＤＭ属性集合が同じ条件を示すものでありうるからである。したがって、多くのＭＤＭ属性集合を少ないサービスタグに対応させることにより、下流のサービスルール処理を簡単化することができる。
【０１８４】
例えば、ある実施の形態では、サービスタグは異なるデータメッセージフローについて異なるセキュリティリスクを定量化することができるセキュリティタグである。これらの実施の形態では、異なるＭＤＭ属性集合を、同じレベルのセキュリティリスクを提示するものとして見ることもできる。例えば、ジェイルブレイクしたデバイスからデータセンタにアクセスすることは、ある特定の国からデータセンタにアクセスすることと同様なリスクを負う行動であると見られ得る。この状況では、サービスモジュール２３２０は、データメッセージフローのＭＤＭ属性集合を解析することで、そのデータメッセージフローに、ハイリスクサービスタグを関連付けることができる。サービスノード２３５０および２３５５は次いで、ハイリスクサービスタグに基づいて、これらのデータメッセージフローに対するサービス動作を行うことができる。そのような動作の例は、ＭＤＭ属性ベースの論理セグメンテーション動作と、ファイヤウォール動作と、ＤＮＳ動作と、ＤＮＡＴ動作と、および／または他のミドルボックス動作や転送動作と、を含む。
【０１８５】
図２４は、サービスノードが二つのモバイルデバイスデータメッセージフローに対してサービスタグに基づいて行う負荷分散動作の例を示し、ＶＰＮゲートウエイはデータメッセージフローに関連付けられたＭＤＭ属性集合を解析した後にそのサービスタグを割り当てる。ＶＰＮゲートウエイ２４００は、データメッセージフローのヘッダ値に基づいて、ＭＤＭ属性ストア１１２５から、データメッセージフローについてのＭＤＭ属性集合を取得するサービスモジュール２４２０を含む。各データメッセージフローについて、サービスモジュール２４２０はこのフローの取得済みＭＤＭ属性集合を用いることで、そのＭＤＭ属性ベースのルールデータストレージ１２２６においてサービスルールを特定する。ある実施の形態では、このサービスルールは、データメッセージフローに関連付けるサービスタグと、負荷分散サービスノード２４５０へのトンネルと、を特定する。
【０１８６】
サービスモジュール２４２０は、各フローのデータメッセージを、特定されたトンネルを通じて、負荷分散器２４５０へ、転送する。各フローのデータメッセージの全てまたはいくつかについて、サービスモジュール２４２０は、それがトンネルヘッダにおいてフローについて特定したサービスタグを含む。したがって、示されるように、サービスモジュール２４２０は負荷分散器２４５０に、（１）第１モバイルデバイス２４０２から来るデータメッセージのいくつかまたは全てのサービスタグ１と、（２）第２モバイルデバイス２４０４から来るデータメッセージのいくつかまたは全てのサービスタグ２と、を送信する。一例として、サービスタグ１は、モバイルデバイス１がジェイルブレイクされたデバイスであることに起因するハイリスクセキュリティタグであってもよく、サービスタグ２は、モバイルデバイス２がジェイルブレイクされたデバイスではないことに起因するローリスクセキュリティタグであってもよい。データメッセージフローに関連付けられたリスクファクタを評価することで、セキュリティタグは実効的に、データメッセージフローの発生元であるモバイルデバイスまたはアプリケーションの信用性を評価していることになる。ただ二つの信用ファクタ（すなわち、ハイリスクおよびローリスク）の代わりに、サービスモジュール２４２０は、デバイス信用性および／またはアプリケーション信用性の三つ以上のレベルへと定量化するサービスタグのより大きなグループからサービスタグを指定することができる。
【０１８７】
負荷分散器２４５０は負荷分散ルールプロセッサ２４５５を有し、このプロセッサ２４５５はデータメッセージフローについてそれが受信するサービスタグを用いることでＤＣＮクラスタを特定し、特定されたクラスタからデータメッセージフローを受信するためのひとつのＤＣＮを選ぶ。示されるように、ルールプロセッサ２４５５はサービスタグを用いることでサービスタグルールストレージ２４６０においてルールを特定する。特定されたルールは次いで、（１）使用するべきＤＣＮクラスタを特定し（例えば、このクラスタ内のＤＣＮを特定し、またはこのクラスタのＤＣＮを特定する他のストレージのＤＣＮレコードを特定し）、（２）負荷分散基準の集合（例えば、重み付けラウンドロビン負荷分散動作を行うための重み値の集合）を特定する。
【０１８８】
ある実施の形態では、特定されたサービスルールは負荷分散基準の集合を指定しない（例えば、負荷分散基準の集合は事前に設定されうる）。どのように負荷分散基準が定義されているかによらず、ルールプロセッサ２４５５はこの基準を用いることで、ＤＣＮクラスタから新たなモバイルデバイスデータメッセージフローについてのＤＣＮを選択する。次いでルールプロセッサ２４５５はこのフローのなかのデータメッセージを選択されたＤＣＮへ転送する。本例では、二つのＤＣＮクラスタ２４８０および２４８５は二つのサービスタグに関連付けられる。例えば、一方のＤＣＮクラスタ２４８０はハイリスクデータメッセージに関連付けられてもよく、他方のＤＣＮクラスタ２４８５はローリスクデータメッセージに関連付けられてもよい。ハイリスククラスタ２４８０のＤＣＮはより制限された機能セット（例えば、データアクセス機能等）を提供してもよい
【０１８９】
ある実施の形態では、サービスノードはＭＤＭ属性に基づいてサービスタグをモバイルデバイスデータメッセージに関連付け、該サービスノードはＶＰＮゲートウエイが動作するデバイスの外側で動作する。また、他の実施の形態が上述のものとは別のタイプのサービスタグを使用可能であることを当業者は認識するであろう。例えば、ある実施の形態では、サービスタグは、デバイスが別の国からデータセンタにアクセスしているか否かを特定することができる（例えば、デバイスの位置を特定することができる）。ある実施の形態では、サービスタグはＭＤＭ属性集合と重なることはない。また、他の実施の形態では、サービスタグは、それがＭＤＭ属性集合にはない属性を含む限り、ＭＤＭ属性集合と幾分の重畳があってもよい。
【０１９０】
異なるユーザおよび／またはデバイスグループを特定するためにサービスタグを用いてもよい。例示として、データセンタのテナントのうちのひとつが病院であり、病院が医師と看護師とアドミニストレータとを雇用しているとする。そのようなテナントについて、ある実施の形態のネットワークコントローラは、病院のネットワークアドミニストレータが、グループ宛先に関して（すなわち、医師、看護師、およびアドミニストレータサービスタグに関して）サービスルールを指定することを可能とする。これらのネットワークコントローラはまた、病院のＶＰＮゲートウエイサービスモジュールについてＭＤＭ属性ベースのルールを定義する。このモジュールは、モバイルデバイスデータメッセージフローをサービスタグに対応付けることができる。これらのルールを用いて、サービスモジュールは、各モバイルデバイスからの各データメッセージフローに、グループ宛先タグ（すなわち、医師、看護師、およびアドミニストレータサービスタグ）を関連付ける。データセンタにおける下流のサービスノードは次いで、これらのグループ宛先タグを用いることで、異なるグループからのリモートサービスアクセスを異なる態様で処理する（異なるリモートユーザグループメンバを異なるＤＣＮクラスタにルーティングする等）ことができる。サービスノードはまた、異なるグループに対して異なるサービス動作を指定できる（例えば、医師および看護師のリモート通信は暗号化されなければならないことを指定する、等）。
【０１９１】
上述の通り、ネットワークコントローラ集合は、ＭＤＭサーバ集合から、（１）種々のＭＤＭ属性の定義と、（２）これらのＭＤＭ属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。ある実施の形態では、ＭＤＭサーバ集合は、ＭＤＭ属性定義を、ＭＤＭ属性およびこれらの属性について可能な値を定義する辞書の一部として提供する。ネットワークコントローラの集合は次いで、受信したＭＤＭ属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび／またはルール（例えば、ミドルボックス要素用のサービスルールや、ルータ用のルーティングルールなど）をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合のユーザインタフェース（ＵＩ）またはＡＰＩ（アプリケーションプログラミングインタフェース）の集合を通じて、サービスポリシーおよび／またはサービスルールをプログラムすることができる。
【０１９２】
説明例を提供するために、図２５および２６は、ある実施の形態がＭＤＭ属性ベースのサービスルールをどのように定義し、分配するかを提示する。図２５は、ある実施の形態における、アドミニストレータがＭＤＭ属性集合およびフローヘッダ値に基づいてサービスルールを指定できるようにするためにネットワークコントローラの集合が提供するサービスルール管理コンソール２５００のＵＩの一例を示す。示されるように、ある実施の形態では、このコンソールはネットワーク設定コンソールの一部である（すなわち、このコンソールの一連のタブのうちのひとつのタブである）。他の被管理ネットワーク要素（例えば、被管理転送要素、ゲートウエイ、トップオブラックスイッチ等）を、このネットワーク設定コンソールを通じて管理することで、所望のネットワーク機能（例えば、論理オーバレイ機能）を実現することができる。他の実施の形態では、このサービスルール管理コンソール２５００はスタンドアローンインタフェースであり、または、他のデータセンタ管理インタフェースの一部である。
【０１９３】
図２５では、例は二つの動作ステージ２５０２および２５０４で説明される。第１ステージ２５０２はサービスルール管理（ＳＲ）コンソール２５００を示しており、このコンソール２５００を通じて、ひとつ以上のサービスについてのサービスルール、例えばファイヤウォールルールや負荷分散ルール等、を定義することができる。示されるように、ＳＲ管理コンソール２５００はサービスタブセクション２５１５とルールセクション２５２０とを有する。サービスタブセクション２５１５は複数タイプのサービスについての複数のタブを有する。この例では、ファイヤウォールルールについてのサービスタブが選択された。この図での議論が他のＭＤＭ属性ベースのルールを定義する際にも等しく適用可能であることを当業者は認識するであろう。
【０１９４】
サービスタブセクション２５１５においてサービスタブのうちのひとつが選択されるといつでも、コンソールは、選択されたサービスタブに関連付けられたサービスタイプのルールセクション２５２０を表示する。示されるように、ルールセクション２５２０はルールリスト２５２５と、いくつかのＵＩコントロール２５３０と、を表示する。第１ステージ２５０２では、ルールリスト２５２５はいくつかのファイヤウォールルールを表示し、ＵＩコントロール２５３０は、サービスタブセクション２５１５においてファイヤウォールサービスタブ２５４５が選択されると、ファイヤウォールルールに関するものとなる。ある実施の形態では、これらのＵＩコントロール２５３０は、（１）ファイヤウォールルールを追加するためのコントロールと、（２）ファイヤウォールルールを複製するためのコントロールと、（３）ファイヤウォールルールを削除するためのコントロールと、（４）表示されているルールセクションリストにおいてファイヤウォールルールを上下に動かすためのコントロールと、（５）ルールセクションリストからひとつ以上のフィルタリング基準を満たさないルールをフィルタリングするためにフィルタを適用するためのコントロールと、（６）フィルタを除去するためのコントロールと、（７）所定の基準を満たすファイヤウォールルールを探すためのコントロールと、を含む。ある実施の形態では、ルールリストにおいてファイヤウォールルールを上下に動かすことは、ファイヤウォールルールのリストにおけるそのルールの優先度を変える。これらのコントロールは米国特許出願第１４／７８８，６８９により詳細に記載されており、その出願は参照により本明細書に組み入れられる。
【０１９５】
第１ステージ２５０２に示されるように、ルールリスト２５２５中の各ファイヤウォールルールはひとつ以上のタプルタイプに関して定義されうる。ひとつ以上のタプルタイプは、ＭＤＭタプルと、ソースタプルと、宛先タプルと、サービスタプルと、を含む。ファイヤウォールルールは、これらのタプルタイプのうちのただひとつに関して定義されてもよく、またはこれらのタプルタイプのうちのいくつかに関して定義されてもよい。示されるように、各ルールはまた、アクションタプルとアプライドツータプルとを有するが、詳細は後述する。
【０１９６】
ある実施の形態では、ファイヤウォールノードはデータメッセージに対するファイヤウォールルールを処理し、そのデータメッセージのソースおよび宛先ヘッダ値を指定するためにソースタプルおよび宛先タプルを用いることができる。言い換えると、ファイヤウォール識別子は、データメッセージのソースおよび宛先ヘッダ値に関して定義されうる。Ｌ３／Ｌ４ファイヤウォールルールについて、ソースおよび宛先ヘッダ値はＩＰアドレスおよび／またはポート値（例えば、ＴＣＰ、ＵＤＰまたは他のＬ４ポート値）に関して指定されうる。イーサネットファイヤウォールルールについて、ソースおよび宛先ヘッダ値は、ＭＡＣアドレスやＬ２サービス（プロトコル）などのデータメッセージのＬ２パラメータ値に関して指定されてもよい。
【０１９７】
ある実施の形態では、サービスタプルはデータメッセージが用いるサービスプロトコルを定義するために用いられ得る。言い換えると、ファイヤウォールルール識別子は、データメッセージのソースおよび宛先ヘッダ値に関してのみではなく、データメッセージヘッダで指定されるサービスプロトコルに関しても、定義されうる。示されるように、ルールリスト２５２５は、種々のレベルの粒度でソース、宛先およびサービスタプルを定義することを可能とする。これは、このコンソールが、高レベルのタプル値（例えば、データセンタ（ＤＣ１、ＤＣ２）、計算クラスタ、サーバタイプ（ウェブサーバ、アプリサーバ等）、論理スイッチ、論理ルータ、高レベルサービス構造）を低レベルの値（例えば、ＩＰアドレス、ＭＡＣアドレス、サービスプロトコル名等）に解決するバックエンドエンジンによってサポートされているからである。詳細は後述する。
【０１９８】
各ファイヤウォールルールのアクションタプルは、ルールのメッセージにマッチするタプル（例えば、ソース、宛先およびサービスタプル）にマッチするヘッダ値を有するデータメッセージに関して行うべきアクションを指定する。アクションタプル値の例は、許可、拒否（ドロップやブロックとも称される）、リダイレクト、等を含む。各ファイヤウォールルールのＡｐｐｌｉｅｄＴｏタプルは、ルールに対して、ネットワーク内のファイヤウォール執行ポイントの集合を定義することを可能とする。そのような執行ポイントの例は、ホストレベルファイヤウォールエンジン（分散ファイヤウォール、ＤＦＷと称される）と、周辺ファイヤウォールデバイス（例えば、ファイヤウォール機器）と、を含む。
【０１９９】
ある実施の形態では、ソース、宛先およびサービスデータタプルと同様に、ファイヤウォール管理コンソールのバックエンドエンジンが高レベルコンストラクトを低レベルコンストラクトへ解決するとき、ＡｐｐｌｉｅｄＴｏタプルを高レベルコンストラクトまたは低レベルコンストラクトに関して定義することができる。図２５に示される例では、四番目のものを除く全てのファイヤウォールルールは論理ネットワークの分散ファイヤウォール（ＤＦＷ）ノードについて定義され、四番目のファイヤウォールルールはファイヤウォール機器（ＦＡ）について定義される。
【０２００】
ファイヤウォールルールのＭＤＭタプルコントロール２５４０はファイヤウォールルールの識別子について、ひとつ以上のＭＤＭ属性を指定することを可能とする。このコントロールの選択は、コンソールに、ルールセクション２５２０に重畳する形でウインドウ２５５０を開かせる。第２ステージ２５０４はこのウインドウ２５５０を示す。示されるように、このウインドウは、複数のＭＤＭ属性と、各属性についてのフィールド２５７５と、をリストしており、フィールド２５７５はこの属性についての許容可能な値または複数の値を定義するためのものである。ある実施の形態では、ＭＤＭ属性のフィールドを選択した後、アドミニストレータは、その属性についての許容可能な値、複数の値または値の範囲をタイプし、または、選択されるとこのフィールドの下に開くドロップダウンウインドウから値／複数の値／範囲を選択することができる。
【０２０１】
図２５の例では、ウインドウ２５５０は以下のＭＤＭ属性を表示する：デバイス識別子と、ユーザ識別子と、アプリケーション識別子と、アプリケーショングループ識別子と、オペレーティングシステムと、モバイルデバイスの位置と、モバイルデバイスのコンプライアンス状態と、モバイルデバイスのジェイルブレイク状態と、インターネットプロトコルのバージョン。ある実施の形態では、ファイヤウォールルールを、これらのＭＤＭ属性のうちのひとつ以上に関して指定することができ（すなわち、ファイヤウォールルール識別子をこれらの属性のうちのひとつ以上に関して指定することができる）、またはフローヘッダ値（すなわち、ソース、宛先およびプロトコルタプル）に関して指定することができ、あるいはＭＤＭおよびフローヘッダ値の両方に関して指定することができる。また、ある実施の形態では、ウインドウ２５５０は他のＭＤＭ属性をリストし、この場合、ＭＤＭベースのファイヤウォールルールはそのような他のＭＤＭ属性に関して定義可能である。
【０２０２】
ある実施の形態では、各ＭＤＭ属性の値を指定する際、アドミニストレータは、ひとつ以上のオペレータを用いることで値をＭＤＭ属性に関連させることができる。そのようなオペレータの例は、等しい、より大きい、より小さい、以上、以下、等しくない、等を含む。ある実施の形態では、ＭＤＭサーバ集合はネットワークコントローラ集合に対して、ＭＤＭ属性集合と共にこれらのオペレータを指定する。
【０２０３】
また、示されるように、ウインドウ２５５０は各ＭＤＭ属性の隣にオペレータコントロール２５８０を表示する。ある実施の形態では、このコントロールはＡＮＤオペレータ、ＮＯＴ  ＡＮＤオペレータ、またはＯＲオペレータを指定することができる。ウインドウにおいてＭＤＭ属性に対してひとつ以上の値が指定された場合、オペレータコントロールの値は、指定されたＭＤＭ属性の値または複数の値が他のＭＤＭ属性のいずれかの指定された値とＡＮＤ、ＮＯＴ  ＡＮＤまたはＯＲされるべきか否かを指定する。
【０２０４】
ある実施の形態では、サービスルールコンソール２５００はまたオペレータコントロール（不図示）を提供する。このオペレータコントロールは、指定されたＭＤＭ属性がファイヤウォールルールについて指定されたフローヘッダ値（例えば、ソース、宛先およびプロトコルタプル）のいずれかとどのように組み合わされるかを、アドミニストレータが指定することを可能とする。他の実施の形態では、ウインドウ２５５０を通じて指定されたＭＤＭ属性は、ソース、宛先およびプロトコルタプルを参照して定義されたフローベース属性のいずれかとＡＮＤされる。ある実施の形態はまた、異なるネスト化されたグループの間の関係を定義するオペレータを伴う、ＭＤＭ属性のネスト化された組み合わせを、アドミニストレータが定義することを可能とするＵＩコントロールを提供する。あるいはまた、他の実施の形態は、相互にＡＮＤされたＭＤＭおよび／またはフロータプル属性に関してのみ、ファイヤウォールルール識別子を指定することが可能としてもよい。これらの実施の形態のいくつかは、ＡＮＤ、ＮＯＴ  ＡＮＤまたはＯＲを指定するためのオペレータコントロール２５８０を提供しない。デフォルトのオペレータはＡＮＤオペレータだからである。
【０２０５】
ウインドウ２５５０においてひとつ以上のＭＤＭ属性についてひとつ以上の値を指定した後、アドミニストレータはエンターコントロール２５６０を選択し、選択されたＭＤＭ属性および指定された値を、選択されたファイヤウォールルール（すなわち、ウインドウ２５５０を開くことを生じさせた被選択ＭＤＭコントロール２５４０に関連付けられたファイヤウォール）の定義に、追加するようサービスルールコンソール２５００を導くことができる。上述の通り、選択されたファイヤウォールルールはまた、そのルール識別子についてひとつ以上のフローヘッダ値を指定することができ、またはこのルールは単に指定されたＭＤＭ属性集合に関して定義されうる。
【０２０６】
ネットワークコントローラの集合は、ひとつ以上のネットワーク要素にＭＤＭベースのポリシーまたはＭＤＭベースのルールを分配する（例えば、ネットワーク要素にポリシー／ルールをプッシュする、またはネットワーク要素がこれらのポリシー／ルールをプルすることを可能にする）。ある実施の形態では、ネットワーク要素は、それが受信するＭＤＭベースのポリシーを、それが執行するＭＤＭベースのルールに変換する。ある実施の形態では、ＭＤＭベースのポリシーは、高レベルコンストラクト（例えば、データセンタ、計算クラスタ、サーバタイプ、論理スイッチ、論理ルータ、高レベルサービス構造）に関して指定されるルールである。
【０２０７】
ある実施の形態では、ネットワークコントローラは、低レベルコンストラクト（例えば、ＩＰアドレス、ＭＡＣアドレス、サービスプロトコル名等）に関して定義されるＭＤＭベースのルールを分配する。これらの実施の形態では、アドミニストレータ指定のＭＤＭベースのポリシーが高レベルコンストラクトに関して定義される場合、ネットワークコントローラは、ＭＤＭベースのルールをネットワーク要素に（例えば、ホスト１２００を実行するエージェント１１４０に）分配する前に、高レベルのタプル値（例えば、データセンタ、計算クラスタ、コンピュータサーバタイプ、論理スイッチ、論理ルータ、高レベルサービス構造）を低レベルの値（例えば、ＩＰアドレス、ＭＡＣアドレス、サービスプロトコル名等）に解決する。
【０２０８】
図２６は、本発明のある実施の形態のネットワークコントローラ１１５を示す。このコントローラは高レベル識別子に関してファイヤウォールおよび他のサービスルールを定義できるが、低レベル識別子に関してこれらのルールを分配する。コントローラ１１５は、ルール設定器２６０５と、変換エンジン２６１０と、パブリッシングエンジン２６１５と、ハイレベルルールストレージ２６２０と、ローレベルルールストレージ２６２５と、ユーザインタフェース（ＵＩ）モジュール２６３０と、自動プロビジョニングモジュール２６３５と、グループ定義データストレージ２６４０と、ＭＤＭ辞書およびオペレータデータストレージ２６６０と、いくつかの執行デバイスデータストレージ２６５５および２６６５と、を備える。
【０２０９】
ルール設定器２６０５は、ＵＩモジュール２６３０を通じてユーザ（例えば、ネットワークアドミニストレータ）とやりとりすることで、サービスルール（例えば、ファイヤウォールルール、負荷分散ルール、ＤＮＡＴルール等）を設定する。示されるように、ＵＩモジュール２６３０は、ストレージ２６６０に保持されるＭＤＭ辞書およびオペレータを参照して、ＭＤＭ属性ベースのサービスルールを定義することを可能とする。さらに示されるように、ネットワークコントローラ１１５はＭＤＭサーバ１２０からこの辞書およびオペレータを受信する。
【０２１０】
ルール設定器２６０５はまた、自動プロビジョニングモジュール２６３５の指導の元でサービスルールを設定する。この自動プロビジョニングモジュール２６３５は、物理ネットワークまたは論理ネットワークのプロビジョニングの一部としてこれらのルールを指定するようルール設定器２６０５を導く。例えば、ある実施の形態では、コントローラ１１５がマルチユーザ（例えば、マルチテナント）ホスト環境において論理ネットワークを管理するネットワークコントロールシステムの一部である場合、プロビジョニングモジュール２６３５は、論理ネットワークが一人のユーザについて（例えば、ひとつのテナントについて）指定されているとき、および／または、新たなＶＭがホストで提供されているとき、サービスルールのうちの少なくともいくつかを指定するよう設定器２６０５を導く。ある実施の形態では、プロビジョニングモジュール２６３５は、ストレージ２６６０に保持される属性集合およびオペレータを用いることによって、ＭＤＭ属性ベースのサービスルールを自動的に（ユーザ入力なしで）提供することができる。
【０２１１】
設定器２６０５は、ユーザが、高レベルコンストラクトに関してサービスルールを指定することを（ＵＩモジュール２６３０またはプロビジョニングモジュール２６３５を通じて）可能とする。そのような高レベルコンストラクトの例は、高レベルネットワーク、計算およびセキュリティコンストラクトであり、これは例えば論理スイッチや論理ルータや論理ネットワークや物理ネットワークや計算クラスタやデータセンタや分散ファイヤウォール等である。設定器２６０５はそれが設定するサービスルールをハイレベルルールストレージ２６２０に格納する。
【０２１２】
ハイレベルルールストレージ２６２０から、変換エンジン２６１０はサービスルールを取得し、取得されたルールのタプル内の高レベルコンストラクト識別子を低レベルコンストラクト識別子に変換する。例えば、ある実施の形態では、変換エンジン２６１０は、計算コンストラクト（例えば、データセンタ識別子、計算クラスタ識別子、ホスト識別子等）、ネットワークコンストラクト（例えば、ＬＦＥ識別子、論理ネットワーク識別子等）、およびセキュリティグループ（これはひとつ以上のネットワークまたは計算コンストラクトにより形成される）を、ＩＰアドレス、ＶＮＩＣ識別子およびワイルドカード値に、変換する。コンストラクト識別子をそのように変換する際、変換エンジン２６１０は、全てのサービスルールが、サービスルールを受信する全ての執行デバイスによって解読可能な低レベル識別子によって定義されるようにする。変換エンジン２６１０は、それが取得し必要に応じて変換したサービスルールを、ローレベルルールデータストレージ２６２５に格納する。
【０２１３】
高レベル識別子（例えば、高レベルネットワークコンストラクト、計算コンストラクト、およびＡｐｐｌｉｅｄＴｏタプルによって定義されたセキュリティグループ）を低レベル識別子（例えば、ＩＰアドレス、ＶＮＩＣ識別子、およびワイルドカード値）に変換するために、変換エンジン２６１０は、グループ定義データストレージ２６４０に保持される高レベルグループの定義に依存する。これらの定義はユーザによって（ＵＩモジュール２６３０を通じて）、または自動プロビジョニングモジュール２６３５によって、格納される。
【０２１４】
ある実施の形態では、これらの定義は静的に定義される。他の実施の形態では、高レベルグループ定義のうちのいくつかまたは全てはユーザまたはプロビジョニングモジュール２６３５によって動的に変更可能である。特に、ある実施の形態では、識別子のうちのひとつ以上は動的に変更可能なコンストラクトを指すことができ、これは、コントローラ１１５が、識別子の定義を動的に変更することによりサービスルールを動的に調整することを可能とする。ある実施の形態では、ルール設定器２６０５は、計算コンストラクト、ネットワークコンストラクトおよびセキュリティグループのうちのひとつ以上を、そこへ動的に追加されるおよび／またはそこから動的に除去されるメンバ（例えば、転送要素、ホスト、ＶＮＩＣ等）を有することができる動的コレクションとして、指定することができる。
【０２１５】
静的または動的グループを参照して定義されるコンストラクトについて、変換エンジン２６１０は、（１）グループ定義データストレージ２６４０にあるグループ定義を用いて高レベル識別子に関連付けられた低レベル識別子（例えば、ＶＮＩＣおよびワイルドカード値）を特定し、（２）高レベル識別子を特定された低レベル識別子で置き換え、（３）結果として得られるルールをローレベルルールストレージ２６２５に格納する。ひとつ以上のサービスルールのタプルを定義するために用いられる動的コレクションが変更される場合、変換エンジン２６１０は、影響を受けるサービスルールの低レベル識別子を更新する。以下に詳述されるように、パブリッシングエンジン２６１５は次いで、影響を受けるサービスルールについての更新されたメンバシップ変更を、このメンバシップ変更の通知を必要とするサービスルール執行デバイスに、送信する。このアプローチは、これらのルールを以前に受信した執行デバイスに、影響を受けるサービスルールを再送信する必要性を失わせる。しかしながら、パブリッシングエンジン２６１５は、動的コレクションへのメンバシップ変更が新たな執行デバイスの追加を要求する場合は、新たな執行デバイスに、影響を受けるサービスルールを送信する。
【０２１６】
パブリッシングエンジン２６１５は、低レベルデータストレージ２６２５から執行デバイスサービスルールを集め、分配する。図２６に示されるように、パブリッシングエンジン２６１５は、ルール抽出器２６５０と、配信エンジン２６４５と、を含む。各執行デバイスについて、ルール抽出器２６５０は、執行デバイスに関するサービスルールを特定し、低レベルデータストレージ２６２５から取得する。ルール抽出器２６５０は、各特定の執行デバイスについての取得されたサービスルールを、パブリッシングエンジン２６１５が特定の執行デバイスごとに維持しているデータストレージ（例えば、データストレージ２６５５および２６６５）に、格納する。
【０２１７】
ある実施の形態では、ルール抽出器２６５０は、各執行デバイスについて、その執行デバイスに関するサービスルールのみを取得し、格納する。したがって、執行デバイスデータストレージ（例えば、各執行デバイスのサービスルールを保持するデータストレージ２６５５および２６６５）は、多くの場合、ハイレベルおよびローレベルデータストレージ２６２０および２６２５よりもかなり小さい。執行デバイスデータストレージは、対応する執行デバイスに関するサービスルールのみ含むからである。
【０２１８】
ある実施の形態では、執行デバイスに関するサービスルールは、執行デバイスに接続されているデータエンドノード（例えば、ＶＭやＶＭ  ＶＮＩＣ）に関するサービスルールを含む。ある実施の形態では、各執行デバイスに関するルールはまた、執行デバイスに接続されてもよいデータエンドノードに関するサービスルールを含む。例えば、特定のホストが特定の論理ネットワークを実装する計算クラスタに属する場合、ある実施の形態のルール抽出器２６５０は、論理ネットワークに属するＶＭがその特定のホストにおいてインスタンス化される前であっても、その特定のホスト用のデータストレージに、その論理ネットワークに対して指定されたサービスルールを保持する。そのようなホストにサービスルールを前もってプッシュすることには利点がある。それにより、ホストがコントローラとやりとりすることなくＶＭのためのサービスルールを設定することが可能となるからである。
【０２１９】
図２６は、ルール抽出器２６５０が維持するデータストレージのうちの三つ２６５５および２６６５が示される。これらのデータストレージのうちの二つ２６５５は、ホスト上で実行されるＶＭについて執行デバイスとして機能するサービスモジュールを実行するホストについてのものである。三番目のデータストレージ２６６５はサービス機器（例えば、ファイヤウォール機器）のためのものである。ある実施の形態では、パブリッシングエンジン２６１５の配信エンジン２６４５は、各執行デバイスに（ネットワークを介して）、ルール抽出器２６５０がその執行デバイスについて維持しているデータストレージに保持されているサービスルールを、プッシュする。他の実施の形態では、執行デバイスは、配信エンジン２６４５からサービスルールをプルする。さらに別の実施の形態では、配信エンジン２６４５は、執行デバイスのうちのいくつかにサービスルールをプッシュし、一方、他の執行デバイスがサービスルールをプルすることができる元のリソースとして機能する。
【０２２０】
上述の通り、パブリッシングエンジン２６１５は、ユーザまたは自動プロセスが動的に執行ポイント集合を変更した場合、そのような執行ポイント集合に対する更新を、執行デバイスに、配信する。ある実施の形態では、そのような変更は、変換エンジン２６１０に、ローレベルデータストレージ２６２５内のサービスルールを変更させる。これは、次に、ルール抽出器２６５０に、それが執行デバイスについて維持しているひとつ以上の執行デバイスデータストレージ（例えば、データストレージ２６５５および２６６５）においてひとつ以上のルールを更新させるか、そのようなルールを生成させることができる。配信エンジンは、次いで、更新されたルールを、影響を受ける執行デバイスに、配信する（例えば、プッシュアクションまたはプルアクションを通じて）。
【０２２１】
ある実施の形態では、ＭＤＭ属性処理サービスモジュールは、ＭＤＭ属性ベースのサービスルールを保持するために、新規なＭＤＭ属性ベースのサービスルールストレージを用いる。このサービスルールストレージは、任意の数の任意のＭＤＭ属性および属性値を有することができる、ＭＤＭ属性ベースのルールを素早く特定できるインデクシング構造を有する。ある実施の形態では、このインデクシング構造は、ネットワークコントローラによって、ベクトル形式で定義されるサービスルールから、サービスモジュールにおいて、動的に構築される。このインデクシング構造をベクトル定義サービスルールに基づいてサービスモジュールにおいて動的に構築することによって、新たなまたは更新されたＭＤＭ属性および／または値の集合に対して、サービスルールストレージを素早く生成および／または更新することができる。ある実施の形態では、サービスルールストレージはまた、データメッセージのフローヘッダ値とマッチするルールを素早く特定するためのインデクシング構造を生成する。
【０２２２】
ＭＤＭ属性ベースのサービスルールをベクトル形式で定義するために、ある実施の形態のネットワークコントローラは、ひとつ以上のベクトルラベルに関して各ルールを定義し、ここでは、（１）各ベクトルラベルがひとつ以上のＭＤＭラベルおよび各ラベルについてのひとつ以上の可能な値に関して定義され、（２）二つ以上のベクトルラベル（ルールが二つ以上のベクトルラベルを参照して定義される場合）がひとつ以上のオペレータによって互いに相関される。各ＭＤＭラベルはＭＤＭ属性であり、各ＭＤＭラベル値はＭＤＭ属性が有しうる値である。ルール内の各ベクトルラベルは以下の形を有する。
【０２２３】
Vector Label {
【０２２４】
Name:Label Name
【０２２５】
Values:Vector {...} 
【０２２６】
}, 
【０２２７】
ある実施の形態では、ルールにおいて、ＡＮＤおよびＡＮＤ  ＮＯＴオペレータを用いることで、二つ以上のＭＤＭラベルを関連付けることができる。ＡＮＤオペレータは、ルールが満たされるためには、ラベルおよびその指定された値が存在しなければならないことを意味し、一方、ＡＮＤ  ＮＯＴオペレータは、ルールが満たされるためには、ラベルおよびその指定された値が存在するということがあってはならないことを意味する。ある実施の形態では、ひとつのＭＤＭラベルに対して二つ以上の値が指定された場合、これらの値は明示的なまたは暗示的なＯＲオペレータに関して指定される。これは、指定された値のうちのいずれかひとつの存在が、その値の関連ラベルによって指定されるルールの条件を満たすことを意味する。
【０２２８】
ベクトル定義サービスルールのいくつかの例が以下に提供される。これらの例は、複数のベクトルラベルが指定された場合、それらは明示的なＡＮＤオペレータに関して相関され、ラベルの指定された値のそれぞれはそのラベルの指定された他のいずれかの値と、暗示的なＯＲオペレータによって相関されることを示す。これらの例はまた、明示的なＡＮＤ  ＮＯＴオペレータを用いることにより、ルールにおいてラベルベクトルを無効化することができることを示す。
Rule 1 {
Vector Label {
Name : User_Location
Values: {A, B, C}
}
<AND>
Vector Label {
Name : Phone_Status
Values: {D,E}
}
<AND NOT>
Vector Label {
Name : Phone_Ownership
Values: {F,G}
} 
To Destination IP Address N
Action
Allow }
Rule 2 {
Vector Label {
Name: User_Location
Values: {A, B, C1}
}
<AND>
Vector Label {
Name : Phone_Ownership
Values: {F,G1}
}
To Destination IP Address B
Action
Deny
}
【０２２９】
上記の例示的なルールはファイヤウォールルールである。ファイヤウォールルールを表すためのこの新規なベクトル形式は、複数のＭＤＭ属性に依存する複雑なファイヤウォールルール構造を指定することができる。特に、これらのシンプルなベクトルは、複雑なＭＤＭ属性ベースのルールを効果的に表現することができる：
2018532300.tif 000003
【０２３０】
ある実施の形態は、この新規なベクトル形式を用いて、他のサービスルール（例えば、負荷分散ルール、ＮＡＴルール等）を指定する。ある実施の形態では、ネットワークコントローラは、ベクトル指定サービスルールを、サービスノード（例えば、サービスモジュールやサービス機器等）に発行する。各サービスノードは次いでインデックスグラフ（例えば、有向非巡回グラフ、ＤＡＧ）を動的に生成する。後に、このインデックスグラフを用いることで、メッセージフローのＭＤＭ属性集合にマッチするルールを素早く特定することができる。図２７は、ある実施の形態のインデックスグラフ２７００の一例を示す。示されるように、インデックスグラフ２７００は三レベル木である。第１レベル２７０５はルートレベルであり、本例ではラベルと称される。
【０２３１】
第２レベル２７１０はサービスルールで使用可能な一意のＭＤＭラベルのそれぞれを表すひとつのノードを含む。本例では、三つのＭＤＭラベルが示されており、これらは地域、ＯＳおよびジェイルブレイク状態である。各ＭＤＭラベルノードは、ルートレベルの子ノードであり、ルートノードの枝を定義する。各枝はひとつのＭＤＭラベル（ひとつのＭＤＭ属性）に対応する。
【０２３２】
各ＭＤＭラベルについて、第３レベル２７１５はそのＭＤＭラベルについて指定された値のそれぞれを表すノードを含む。示されるように、各値ノードは、ルールストレージ２７５０における少なくともひとつのサービスルール２７３０を特定する。例えば、ある実施の形態では、各値ノードは、ラベル値に関して定義される少なくともひとつのサービスルール２７３０への参照（例えば、ポインタ）を含む。各値ノードは複数のルールとリンクされることが可能であり、これは複数のルール２７３０がそのラベル値に関して定義可能であるからである。ある実施の形態では、ひとつの値ノード（すなわち、ひとつの第３レベルノード）は値の範囲を指定することができる。
【０２３３】
ある実施の形態では、サービスモジュールは、ネットワークコントローラから送信されたのと同じベクトル指定形式でサービスルール２７３０を保持する。他の実施の形態では、サービスモジュールは、ネットワークコントローラがルールを送信するのに用いたベクトル形式とは異なる形式で、サービスルールを保持する。例えば、ある実施の形態では、サービスモジュールはサービスルールを保持するために、タグ長値（ＴＬＶ）フォーマットを用いる。そのような実施の形態では、サービスモジュールは、サービスルールの定義を、ベクトル指定形式からＴＬＶフォーマットへ変換し、変換されたルール２７３０をルールストレージ２７５０に格納する。また、ある実施の形態では、サービスルール２７３０は優先度の集合と共に保持される。優先度の集合は、その優先順位を特定する。一方、他の実施の形態では、サービスルールの優先度は、ルールストレージ構造２７５０（例えば、ルールテーブル）においてルール２７３０が保持されている順番に基づいて暗示的に定義される。
【０２３４】
図２８は、上述の二つのベクトル指定サービスルールについて定義されうるインデックスツリー２８００を示す。示されるように、このツリーは、三つの枝２８０５、２８１０および２８１５を有することができ、これらはユーザ位置ラベル、電話状態ラベルおよび電話所有権ラベルについてのものである。示されるように、ユーザ位置ラベルＡおよびＢはルール１および２を指し、ユーザ位置ラベルＣはルール１を指し、ユーザ位置ラベルＣ１はルール２を指す。電話状態値ＤおよびＥはルール１を指す。電話所有権値Ｆはルール１および２を指し、一方、電話所有権値Ｇはルール１を指し、電話所有権値Ｇ１はルール２を指す。各ＭＤＭラベルについて枝を生成し、全ての枝をひとつのツリー構造に配置する代わりに、他の実施の形態は、各ＭＤＭラベルに対して別個のツリー構造を定義する。
【０２３５】
データメッセージフローのＭＤＭ属性集合について、その集合の各ＭＤＭ属性およびその関連値はインデックスツリーのＭＤＭラベルおよびその関連値に対してチェックされる。これにより、ＭＤＭ属性値にマッチするＭＤＭラベル値により参照されるルールのリストを生成することができる。ルールリストが生成されると、このリスト上のそれらのルールのうちのひとつ以上はフローのＭＤＭ属性集合および／または他のフローベースの属性について処理される。これにより、ＭＤＭ属性集合にマッチするもののうち、最も優先度が高いサービスルールを特定することができる。
【０２３６】
ある実施の形態では、サービスモジュールはＭＤＭ属性についてのインデックスツリーを生成するだけでなく、データメッセージのフローヘッダ値にマッチするルールを素早く特定するためにインデックスツリーを生成する。これらの実施の形態のうちのいくつかでは、フローヘッダベースのインデックスツリーは基数木である。パケットヘッダ値についてファイヤウォールルールをインデックス化し取得するために基数木を生成して用いることは、米国特許出願第１４／２９５，５５３で説明されており、その出願は参照により本明細書に組み入れられる。
【０２３７】
フローのＭＤＭ属性集合についてのツリーインデックス構造およびサービスルールを調べるプロセスは、図３０を参照して以下に詳述される。しかしながら、このプロセスを説明する前に、図２９のプロセス２９００をまず説明する。このプロセス２９００は、ネットワークコントローラからのサービスルールの集合を保持するサービスルールストレージのためのＭＤＭ属性インデックスツリー構造を構築する。ある実施の形態では、サービスノードがベクトル指定サービスルールの新たな集合またはサービスルールの更新された集合を受信するたびに、サービスノード（例えば、サービスモジュール、サービス機器等）はプロセス２９００を実行する。
【０２３８】
２９０５で、プロセス２９００は受信したサービスルール集合を、ルールストレージのサービスルールデータストレージ構造（例えば、テーブル）に格納する。ある実施の形態では、サービスルールを格納する前に、プロセス２９００はサービスルールの定義を、受信したベクトル形式から他のフォーマット（例えば、ＴＬＶフォーマット）へ変換する。図２９に示される例では、受信されたサービスルールの集合は、サービスノードによって受信された最初のルール集合であり、またはそれはサービスノードによって以前に受信されたルール集合を完全に置き換えることが意図されているルール集合である。したがって、２９０５で、プロセス２９００は新たなインデックスツリーを定義する。更新されたサービスルール集合に基づいて既生成のインデックスツリーを更新するプロセスは、以下に説明されるであろう。
【０２３９】
２９１０で、プロセス２９００は受信されたサービスルール集合からサービスルールを選択する。それは次いで、選択されたサービスルールにおいてラベルを選択する（２９１５において）。次いで、２９２０で、それは、インデックスツリーが選択されたラベルに対応する第２レベルラベルノードを既に有するか否かを判定する。有さなければ、それは第２レベルノードを生成し、このノードをルートレベルのラベルノードに関連付け、２９３０へ移る。プロセス２９００は、以前の２９２０を通じた繰り返しにおいて、選択されたラベルに対応する第２レベルノードを生成していたと判定した場合にも、２９３０へ移る。
【０２４０】
２９３０で、プロセス２９００は選択されたラベルに対して選択されたルールが指定する値を選択する。次いで、２９３５で、それは、インデックスツリーが選択された値に対応する第３レベル値ノードを既に有するか否かを判定する。有さなければ、それは第３レベル値ノードを生成し、このノードを第２レベルのラベルノードに関連付け、２９４５へ移る。値ノードが値の範囲を表すことができる実施の形態では、プロセス２９００は選択されたラベルについて値の範囲を選択することができ（２９３０において）、また選択された値の範囲について値ノードを指定することができる（２９３５において）。
【０２４１】
プロセスは、以前の２９３５を通じた繰り返しにおいて選択されたラベルおよび選択された値に対応する第３レベル値ノードを生成していたと判定した場合にも、２９４５へ移る。２９４５で、プロセス２９００は選択されたルールが選択されたラベルに対して指定する値の全てを調べたかを判定する。そうでなければ、それは２９３０に戻り、別の値を選択する。戻らないのであれば、２９５０で、プロセス２９００は選択されたルールにおいて指定されるラベルの全てを調べたかを判定する。
【０２４２】
ラベルの全てを調べたわけではないとプロセス２９００が判定した（２９５０において）場合、それは２９１５に戻り、指定されたルール内の他のラベルを選択する。戻らないのであれば、２９５５で、プロセス２９００は受信されたルール集合のルールの全てを調べたかを判定する。もしそうであれば、プロセスは終了する。もしそれがルールの全てを調べたわけではない場合、それは２９１０に戻り、指定されたルール集合内の他の検査対象のルールを選択する。
【０２４３】
ある実施の形態では、ネットワークコントローラがサービスノードのサービスルール集合を更新するたびに、ネットワークコントローラはそのサービスノードにルール集合全体（すなわち、古いルール、新たなルールおよび更新されたルールを含むルール集合）を送信し、サービスノードは、それが受信するルール集合のそれぞれについて、一から、ＭＤＭ属性インデックス構造を生成する。他の実施の形態では、ネットワークコントローラは、いくつかの新たなサービスルールを生成する場合および／または他のサービスルールを更新する場合、ルール集合全体をサービスノードに送ることはしない。これらの実施の形態では、ネットワークコントローラはサービスノードへサービスルール更新を送信する。
【０２４４】
受信されたルール集合が以前に受信されたルール集合を更新することを意図した更新集合である場合、サービスノードは更新集合において新たに指定されたルールについて、プロセス２９００と同様なプロセスを行い、ＭＤＭ属性インデックスツリーを更新する。しかしながら、受信されたルール集合は、以前に指定されたルールを除去することがある。ルールが除去される場合、ネットワークコントローラは更新ルール集合において、除去されるルールの定義を提供する。サービスノードは次いで除去されるルールのラベルをひとつずつ見て、そのラベルの枝が他のサービスルールによって用いられていない場合、以前に生成されたインデックスツリーからそのラベルの枝を除去する。
【０２４５】
ある実施の形態では、第２レベルラベルノードのそれぞれはそれを用いるサービスルールの数のカウントを維持し、第３レベル値ノードのそれぞれはそれを用いるサービスルールの数のカウントを維持する。サービスルールの除去を要求するサービスルール更新を処理する際、サービスノードは第２または第３レベルノードを、そのカウントが１である場合に、除去する。そうでなければ、それはカウントを１だけデクリメントする。以前に指定されたサービスルールが新たなラベルや値を含むよう更新される場合、ある実施の形態のネットワークコントローラは二つのレコードを供給し、二つのレコードは、以前に生成されたサービスルールを除去するためのサービスルール除去レコードと、新たなサービスルールを追加するためのサービスルール生成レコードと、である。
【０２４６】
図３０は、フローのＭＤＭ属性集合および／またはフローヘッダ値に基づいて、サービスルールストレージ２７５０から、データメッセージフローについてのサービスルール２７３０を選択するためにサービスノードが用いるプロセス３０００を示す。このプロセスは、データメッセージのＭＤＭ属性集合および／またはフロー属性と、サービスルールストレージに保持されるサービスルールと、をマッチングする。示されるように、プロセスは最初に、受信したデータメッセージのヘッダ値にサービスルールのいずれかがマッチするか否かを判定する（３００５において）。もしマッチしなければ、プロセスは３０１５に移る。
【０２４７】
マッチする場合、プロセスは、メッセージのヘッダ値にマッチする全てのサービスルールを選択し（３０１０において）、それらをサービスルールの第１集合に追加する。ある実施の形態では、プロセスは基数木構造を用いることで、ある実施の形態におけるマッチするサービスルールを特定する。また、ある実施の形態では、プロセスは、マッチするサービスルールのうち最高の優先度を有するものだけを取得する代わりに、メッセージのヘッダ値にマッチする全てのサービスルールを取得する。この、マッチするサービスルールのうち最高の優先度を有するものが、データメッセージのＭＤＭ属性にマッチしないかもしれないからである。ある実施の形態では、サービスルールストレージ２７５０は常に、任意のヘッダ値の集合にマッチする少なくともひとつのデフォルトサービスルールを有する。
【０２４８】
３０１０から、プロセス３０００は３０１５へと移り、そこでは、それは受信されたデータメッセージのＭＤＭ属性集合のＭＤＭ属性のいずれかの値により参照されるサービスルールを特定する。ある実施の形態では、そのようなサービスルールを特定するために、プロセスはＭＤＭ属性ツリー構造（例えば、インデックスツリー２７００および２８００）を用いる。プロセスは特定された全てのサービスルールを第２ルール集合に入れる（３０１５において）。
【０２４９】
次に、３０２０で、プロセスは、３０１０で特定された第１サービスルール集合から、そのルール識別子にＭＤＭ属性を有し、かつ、第２サービスルール集合にないサービスルールを破棄する。３０２０で、プロセスは次いで、３０２０で破棄されなかった第１集合中のサービスルールを第２サービスルール集合に追加することで、第３収集ルール集合を定義する。ある実施の形態では、プロセスは、第２ルール集合にはないがそのルール識別子にＭＤＭ属性を有さないサービスルールを第１ルール集合から破棄しない。そのような第１集合のルールはデータメッセージにマッチする最も優先度の高いルールでありうるからである。ある実施の形態では、各サービスルールは、そのルールの識別子がＭＤＭ属性に少なくとも部分的に基づいて定義されているか否かを示すフィールドを有する。ある実施の形態では、プロセス３０００はこのフィールドを用いることで、そのルール識別子内にＭＤＭ属性を有する第１集合のルールを素早く特定する。
【０２５０】
３０２０の後、プロセスは３０２０で定義された第３収集集合内のサービスルールまたは複数のサービスルールを調べる（３０２５において）。第３収集集合内のサービスルールを調べる際、プロセスは、受信されたデータメッセージのＭＤＭ属性値およびフローヘッダ値と、ルールのＭＤＭ属性、値、オペレータおよびフローヘッダ値と、を比較し、データメッセージの属性がルールの識別子の属性とマッチするか否かを判定する。３０３０で、プロセスはデータメッセージのＭＤＭ属性および／またはフローヘッダ値とマッチしたサービスルールのうち優先度が最も高いものを選択し、終了する。
【０２５１】
ある実施の形態では、動作３０３０は動作３０２５の暗示的部分である。プロセスは優先度にしたがって第３収集集合のルールを調べ、プロセスは受信したデータメッセージのＭＤＭ属性および／またはフローヘッダ値にマッチするルールを特定するとルールの検査を止めるからである。サービスノードが受信されたデータメッセージにマッチするサービスルールのうち優先度が最も高いものを特定すると、サービスノードは、マッチするサービスルールのアクションタプル値に基づいて、データメッセージに対するサービス動作を行う。
【０２５２】
以下の例は、メッセージのＭＤＭ属性集合をどのようにひとつ以上のＭＤＭ属性ベースのルールとマッチングすることができるか、を示す。メッセージのＭＤＭ属性集合が以下の形態をとるとする。<IP:Port> <Label L1:V1, L2:V2,L3:V3....>。そのような例の一つは：
2018532300.tif 000004
プロセス３０００は最初、受信されたデータメッセージのフローヘッダ値にマッチするサービスルールを特定し、特定された全てのサービスルールを評価のために第１収集ルール集合に入れる。プロセスは次いで、メッセージの各ＭＤＭ属性値をラベルツリーに対して検査する。属性値がツリーで指定されるラベル値のうちのひとつとマッチすると、マッチするラベル値が指す一意のルールが収集され、評価のために第２収集ルール集合に入れられる。上記の例では、ルール１および２の両方が収集される。ルール１はユーザ位置値Ｂおよび電話状態値Ｄによって参照され、ルール２はユーザ位置値Ｂおよび電話所有権値Ｇ１によって参照される空である。
【０２５３】
プロセス３０００は次いで、第１収集集合から、そのルール識別子にＭＤＭ属性を有し、かつ、第２収集集合にないルールを捨てる交差動作を行う。プロセスは次いで、第１収集集合内に残っている全てのルールを、第２収集集合に追加し、第３収集ルール集合を生成する。第３収集集合内の個々全てのルールについて、全てのラベル属性およびラベルオペレータ<AND, AND NOT>の正確なマッチングについての、バスケットからのラベル評価がなされた。上述の通り、ある実施の形態は、ルールの優先度の順番でルールマッチングを行う。この場合、より高い優先度を有するルールがＭＤＭ属性集合とマッチする場合、より低い優先度のルールのチェックをせずにルールチェックを止めることができる。
【０２５４】
上述の例について、いずれのルールも、フロー属性に関して定義された識別子を有さないとする。全てのラベルに対してルール１をマッチングしている間、以下がマッチする：
・Label User_Location:B True
・Label Phone_Status:D True
・Label Phone_Ownership:G1 False
オペレータすなわちUser_Location AND Phone_Status AND NOT Phone_Ownershipを評価した後、ルールはトラフィックに対して適用可能であると評される。ルール２のマッチングは次に以下のように行われる：
・Label User_Location:B True
・Label Phone_Ownership:G1 True
オペレータを評価した後、ルール２も適用可能である。したがって、{Rule1, Rule2}のうちの低いほうが選択され、アクションに基づいてパケットが許可／ドロップされる。
【０２５５】
上述のルールチェックアプローチによると、サービスノードは、ひとつ以上のモバイルデバイスＭＤＭ属性（例えば、位置）が突然変わった場合にルールを再チェックできる。次いで、接続が依然としてオンである間に、次の入来パケットについてルールを再評価することができ、その判定に基づいて接続を許可または途中でドロップすることができる。より一般的には、上述のアプローチは、数多くの動的ラベルおよび種々の複雑な値およびこれらのラベルの間の関係を取り扱うことができる高速でスケーラブルな解を提供する。このアプローチの力は、異なるポリシーについて設定された十万を超えるルールについて、数多くの動的タグを非常に効率的に処理できることにある。これにより、加入者に対して、十分な接続およびスループットレートを維持することができる。
【０２５６】
上述の多くの特徴及び適用例は、コンピュータで読み出し可能な記録媒体（コンピュータで読み出し可能な媒体としても参照される）上に記録された命令の組として特定されるソフトウェア処理として実施され得る。これらのプログラムの命令が１つ以上の処理ユニットによって実行される場合（例えば、１つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット）、これらのプログラムの命令は、命令に示されているアクションを（複数の）処理ユニットに実行させる。コンピュータで読み出し可能なメディアの例は、これに限定されないが、ＣＤ−ＲＯＭ、フラッシュドライブ、ＲＡＭチップ、ハードドライブ、ＥＰＲＯＭ等を含む。コンピュータで読み出し可能なメディアは、キャリア波及び、無線又は有線接続を通過する電子信号を含まない。
【０２５７】
本明細書では、「ソフトウェア」の語は、読出専用メモリにあるファームウェア、又は磁気記録に格納されたアプリケーションを含み、プロセッサによる処理のためにメモリに読み込むことができる。また、いくつかの実施形態では、複数のソフトウェア発明は、個別のソフトウェア発明を維持する一方で、より大きなプログラムのサブ部分として実施されてもよい。いくつかの実施形態では、複数のソフトウェア発明はまた、個別のプログラムとして実施されてもよい。最後に、ここで説明されるソフトウェア発明をともに実施する個別のプログラムの任意の組み合わせは、発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムが、１以上の電子システムを動作させるためにインストールされる場合、１以上の特定の機械的実施を定義し、ソフトウェアプログラムの動作を実行する。
【０２５８】
図３１は、本発明のいくつかの実施形態が実施されるコンピュータシステム３１００を概念的に示す。コンピュータシステム３１００は、上述のホストやコントローラやマネージャのいずれかを実装するために用いられうる。したがって、それは上述のプロセスのいずれかを実行するために用いられうる。このコンピュータシステムは、様々な種別の非一時的機械可読メディア、及び様々な他の種別の機械可読メディアに対するインタフェースを含む。コンピュータシステム３１００は、バス３１０５、処理ユニット３１１０、システムメモリ３１２５、読出専用メモリ３１３０、永続的ストレージデバイス３１３５、入力デバイス３１４０、及び出力デバイス３１４５を含む。
【０２５９】
バス３１０５は、電子システム３１００の多くの内部デバイスを通信可能に接続する、全てのシステムバス、周辺バス、及びチップセットバスを集約的に表す。例えば、バス３１０５は、処理ユニット３１１０を、読出専用メモリ３１３０、システムメモリ３１２５、及び永続的ストレージデバイス３１３５に通信可能に接続する。
【０２６０】
処理ユニット３１１０は、本発明の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。処理ユニットは、異なる実施形態において単一のプロセッサ又はマルチコアプロセッサであり得る。読出専用メモリ（ＲＯＭ）３１３０は、処理ユニット３１１０及びコンピュータシステムの他のモジュールによって必要とされる静的データ及び命令を記録する。永続的ストレージデバイス３１３５は、一方で、読出・書込メモリデバイスである。このデバイスは、コンピュータシステム３１００がオフの場合であっても命令及びデータを記録する不揮発性メモリユニットである。本発明のいくつかの実施形態は、（磁気又は光学ディスク、及び対応するディスクドライブなどの）マスストレージデバイスを永続的ストレージデバイス３１３５として用いる。
【０２６１】
他の実施形態は、（フロッピーディスク、フラッシュドライブ等のような）取り外し可能なストレージデバイスを永続的ストレージデバイスとして用いる。永続的ストレージデバイス３１３５のように、システムメモリ３１２５は、読出・書込メモリデバイスである。しかしながら、ストレージデバイス３１３５とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性の読出・書込メモリである。システムメモリは、プロセッサがランタイムにおいて必要とする、いくつかの又は全ての命令及びデータを格納し得る。いくつかの実施形態では、本発明の処理は、システムメモリ３１２５、永続的ストレージデバイス３１３５、及び／又は読出専用メモリ３１３０に記録される。処理ユニット３１１０は、いくつかの実施形態の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。
【０２６２】
バス３１０５はまた、入力デバイス３１４０と出力デバイス３１４５に接続する。入力デバイスは、ユーザが情報を通信し、コンピュータシステムへのコマンドを選択できるようにする。入力デバイス３１４０は、アルファベット表記のキーボードとポインティングデバイス（「カーソル制御デバイス」ともいわれる）とを含む。出力デバイス３１４５は、コンピュータシステムによって生成された画像を表示する。出力デバイスはプリンタ、真空管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）などの表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【０２６３】
最後に、図３１に示すように、バス３１０５はまた、コンピュータシステム３１００をネットワークアダプタ（不図示）を介してネットワーク３１６５に接続する。このようにして、コンピュータは、（ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、イントラネット、インターネットなどのネットワークのネットワーク、などのコンピュータのネットワークの一部になることができる。コンピュータシステム３１００の任意又は全ての構成要素は、本発明に関連して用いられ得る。
【０２６４】
いくつかの実施形態は、マイクロプロセッサ、コンピュータプログラムの命令を機械で読み出し可能な又はコンピュータで読み出し可能な媒体（或いはコンピュータで読み出し可能なストレージメディア、機械で読み出し可能な媒体、又は機械で読み出し可能なストレージメディアとして参照される）に格納した、ストレージ及びメモリのような電子構成要素を含む。コンピュータで読み出し可能な媒体のいくつかの例は、ＲＡＭ、ＲＯＭ、読出専用コンパクトディスク（ＣＤ−ＲＯＭ）、記録可能コンパクトディスク（ＣＤ−Ｒ）、再書込可能コンパクトディスク（ＣＤ−ＲＷ）、読出専用デジタル多用途ディスク（例えばＤＶＤ−ＲＯＭ、デュアルレイヤＤＶＤ−ＲＯＭ）、様々な記録可能／再書込可能ＤＶＤ（ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等）、フラッシュメモリ（例えばＳＤカード、ミニＳＤカード、マイクロＳＤカード等）、磁気及び／又はソリッドステートハードドライブ、読出専用及び記録可能Ｂｌｕ−Ｒａｙ（登録商標）ディスク、超高密度光ディスク、任意の他の光又は磁気メディア、及びフロッピーディスクを含む。コンピュータで読み出し可能な媒体は、少なくとも１つの処理ユニットによって実行可能であり、様々な動作を実行するための命令の組を含む、コンピュータプログラムを記録する。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されたような機械コードと、コンピュータ、電子構成要素、又はインタプリタを用いるマイクロプロセッサによって実行される、より高レベルなコードを含んだファイルとを含む。
【０２６５】
上述の説明は、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを主に参照したが、いくつかの実施形態は、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような、１つ以上の集積回路によって実行される。ある実施形態では、そのような集積回路は回路自体に格納された命令を実行する。
【０２６６】
本明細書において使用されるように、「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」の語は、全て電子的又は他の技術的デバイスを参照する。これらの語は、人及び人のグループを含まない。本明細書の目的のため、表示及び表示するの語は電子デバイス上に表示することを意味する。本明細書において使用されるように、「コンピュータで読み出し可能な媒体」、「コンピュータで読み出し可能なメディア」及び「機械で読み出し可能な媒体」の語は、全体として、コンピュータによって読み出し可能な形式の情報を記録する、有体物、物理的なオブジェクトに制限される。これらの語は、任意の無線信号、有線でダウンロードされた信号、及び任意の他のその場限りのまたは一時的な信号を含まない。
【０２６７】
本発明は多数の特定の詳細を参照して説明されたが、当業者は、本発明が発明の思想から離れることのない他の特定の形式で実施可能であることを認識する。例えば、上述の例のうちの多くはモバイルデバイス、ＭＤＭサーバおよびＭＤＭ属性に言及する。これらの例の全てが任意のタイプのリモートデバイス、ＲＤＭサーバおよびＲＤＭ属性に等しく適用可能であることを、当業者は認識するであろう。
【０２６８】
本明細書は、終始、仮想マシン（ＶＭ）を含む、計算環境及びネットワーク環境を参照している。しかしながら、仮想マシンは単なるデータ計算ノード（ＤＣＮ）又はデータ計算エンドノードの一例であり、アドレス可能なノードとしても参照される。ＤＣＮは、非仮想化物理ホスト、仮想マシン、ハイパーバイザや別のオペレーティングシステムを必要とすること無くホストオペレーティングシステム上で動作するコンテナ、及びハイパーバイザカーネルネットワークインタフェースモジュールを含み得る。
【０２６９】
いくつかの実施形態では、ＶＭは、仮想化ソフトウェア（例えばハイパーバイザ、仮想マシンモニタ等）によって仮想化されたホストのリソースを用いて、ホスト上の自身のゲストオペレーティングシステムとともに動作する。テナント（すなわちＶＭのオーナー）は、どのアプリケーションをゲストオペレーティングシステム上で動作させるか選択することができる。一方、いくつかのコンテナは、ハイパーバイザ又は別のゲストオペレーティングシステムを必要とせずに、ホストオペレーティングシステム上で動作する構成物である。いくつかの実施形態では、ホストオペレーティングシステムはネームスペースを使用して、コンテナを互いに個別化し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループの、オペレーティングシステムレベルのセグメンテーションを提供する。このセグメンテーションは、システムハードウェアを仮想化するハイパーバイザ-仮想化環境で提供されるＶＭセグメンテーションと類似し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループを個別化する、仮想化の形式としてみることができる。このようなコンテナはＶＭより軽量である。
【０２７０】
いくつかの実施形態では、ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールは、ハイパーバイザ・カーネル・ネットワーク・インタフェースを有するネットワークスタックと受信／送信スレッドを含む、非ＶＭ・ＤＣＮである。ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールの一例は、ＶＭｗａｒｅ社のＥＳＸｉ（登録商標）ハイパーバイザの一部であるｖｍｋｎｉｃモジュールである。本明細書はＶＭを参照したが、所与の例は、物理ホスト、ＶＭ、非ＶＭコンテナ、及びハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールを含む、任意の種別のＤＣＮであってよいことを、当業者は認識するであろう。事実、ネットワークの例は、いくつかの実施形態では異なる種別のＤＣＮの組み合わせを含んでよい。
【０２７１】
多数の図（例えば、図８−１０、２９および３０）は処理を概念的に示すものである。これらの処理の特定の動作は、図示及び説明された正確な順序で実行されないかもしれない。特定の動作は、１つの連続する動作の流れで実行されないかもしれず、異なる特定の動作が異なる実施形態において実行され得る。更に、処理はいくつかの副処理（sub-process）を用いて、又は大きなマクロ処理の部分として実施され得る。前述に照らすと、当業者は、発明が上述の詳細に限定されず、むしろ添付の請求項の範囲によって定義されることを理解する。
【図１】
2018532300.tif 000005
【図２】
2018532300.tif 000006
【図３】
2018532300.tif 000007
【図４】
2018532300.tif 000008
【図５】
2018532300.tif 000009
【図６】
2018532300.tif 000010
【図７】
2018532300.tif 000011
【図８】
2018532300.tif 000012
【図９】
2018532300.tif 000013
【図１０】
2018532300.tif 000014
【図１１】
2018532300.tif 000015
【図１２】
2018532300.tif 000016
【図１３】
2018532300.tif 000017
【図１４】
2018532300.tif 000018
【図１５】
2018532300.tif 000019
【図１６】
2018532300.tif 000020
【図１７】
2018532300.tif 000021
【図１８】
2018532300.tif 000022
【図１９】
2018532300.tif 000023
【図２０】
2018532300.tif 000024
【図２１】
2018532300.tif 000025
【図２２】
2018532300.tif 000026
【図２３】
2018532300.tif 000027
【図２４】
2018532300.tif 000028
【図２５】
2018532300.tif 000029
【図２６】
2018532300.tif 000030
【図２７】
2018532300.tif 000031
【図２８】
2018532300.tif 000032
【図２９】
2018532300.tif 000033
【図３０】
2018532300.tif 000034
【図３１】
2018532300.tif 000035
【国際調査報告】
2018532300.tif 000036
2018532300.tif 000037
2018532300.tif 000038