IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ニシラ, インコーポレイテッドの特許一覧

特許7273899サービスルール処理のための、サービスノードへのリモートデバイス管理属性の分配
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-02
(45)【発行日】2023-05-15
(54)【発明の名称】サービスルール処理のための、サービスノードへのリモートデバイス管理属性の分配
(51)【国際特許分類】
   H04L 12/66 20060101AFI20230508BHJP
【FI】
H04L12/66
【請求項の数】 17
【外国語出願】
(21)【出願番号】P 2021112267
(22)【出願日】2021-07-06
(62)【分割の表示】P 2018510926の分割
【原出願日】2016-08-26
(65)【公開番号】P2021184605
(43)【公開日】2021-12-02
【審査請求日】2021-08-03
(31)【優先権主張番号】62/211,677
(32)【優先日】2015-08-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,399
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,400
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,403
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,405
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,404
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,402
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/929,401
(32)【優先日】2015-11-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】511235548
【氏名又は名称】ニシラ, インコーポレイテッド
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100177390
【弁理士】
【氏名又は名称】大出 純哉
(72)【発明者】
【氏名】ジェイン, ジャヤント
(72)【発明者】
【氏名】セングプタ, アニルバン
(72)【発明者】
【氏名】ニマーガッダ, スリニバス
(72)【発明者】
【氏名】ティアギ, アロック, エス.
(72)【発明者】
【氏名】クマール, カウスム
【審査官】野元 久道
(56)【参考文献】
【文献】特開2013-126219(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/66
(57)【特許請求の範囲】
【請求項1】
ネットワークに入るリモートデバイスデータメッセージを処理するための方法であって、前記方法は、
コンピュータにおいて、
リモートデバイスによって送信されたデータメッセージを受信することと、
前記受信されたデータメッセージに関連付けられ、且つ前記リモートデバイスを管理するリモートデバイス管理(RDM)システムによって指定されたRDM属性の集合を特定することと、
前記受信したデータメッセージに対して実行するサービス動作を指定するサービスルールを特定するために前記特定されたRDM属性集合を使用することにより、前記データメッセージに対する前記サービス動作を実行することと、を含む方法。
【請求項2】
前記データメッセージに対する前記サービス動作を実行した後に、前記ネットワーク内の送信先へ前記データメッセージを転送することを更に含む請求項1に記載の方法。
【請求項3】
前記サービス動作を実行することは、前記データメッセージがRDM属性の第1集合に関連付けられる場合に前記データメッセージを廃棄することを含む請求項1に記載の方法。
【請求項4】
前記サービス動作を実行することは、前記RDM属性集合に基づいて、前記受信したデータメッセージに対する負荷分散動作を実行することを含む請求項1に記載の方法。
【請求項5】
前記サービスルールを特定するために前記特定されたRDM属性集合を使用することは、前記特定されたRDM属性集合とマッチするRDM属性集合でサービスルールを特定するために前記特定されたRDM属性集合を使用することを含む請求項に記載の方法。
【請求項6】
前記サービス動作を実行することは、前記RDM属性集合に基づいて、前記受信したデータメッセージに対する宛先ネットワークアドレス変換(DNAT)動作を実行することを含む請求項1に記載の方法。
【請求項7】
前記DNAT動作を実行することは、
前記RDM属性集合に基づいて、前記リモートデバイスが第1の位置に関連付けられるが、第2の位置で前記ネットワークにアクセスしていることを判定することと、
前記第2の位置で前記ネットワークにアクセスする前記第1の位置に関連付けられた前記リモートデバイスが、前記第2の位置のネットワーク要素に向けられるべきであることを指定するRDMベースのルールを特定することであって、前記第2の位置のネットワーク要素は、前記第1の位置に関連付けられたリモートデバイスによる使用について前記第2の位置の他のネットワーク要素から分離されている、特定することと、
前記データメッセージを前記分離されたネットワーク要素の1つに向ける前記DNAT動作を実行することと、を含む請求項に記載の方法。
【請求項8】
前記サービス動作を実行することは、前記RDM属性集合に基づいてドメインネームシステム(DNS)サーバを選択することを含む請求項1に記載の方法。
【請求項9】
DNSサーバを選択することは、前記リモートデバイスが関連付けられた位置に関連付けられたDNSサーバを選択することを含む請求項に記載の方法。
【請求項10】
前記位置は第1の位置であり、前記DNSサーバを選択することは、更に、前記選択されたDNSサーバへ前記データメッセージを転送することを含み、前記DNSサーバは前記第1の位置にあり、前記第1の位置は、前記DNSサーバが選択された第2の位置と異なる請求項9に記載の方法。
【請求項11】
請求項1に記載の方法であって、
前記データメッセージを受信することは、
前記コンピュータ上で動作する仮想プライベートネットワーク(VPN)サーバにおいて、前記リモートデバイスを前記ネットワークに接続するトンネルを介して、前記リモートデバイスによって送信された前記データメッセージを受信することと、
前記VPNサーバが前記データメッセージを前記ネットワーク内の前記データメッセージの宛先に転送するときに、前記VPNサーバの出力パスからの前記データメッセージを傍受することと、を含み、
RDM属性集合を特定することは、前記RDM属性集合を、異なるデータメッセージフローについての異なるRDM属性集合を格納する前記コンピュータのデータストレージから、検索することを含む方法。
【請求項12】
前記RDM属性集合は、前記VPNサーバが前記受信したデータメッセージのフローについてのVPNセッションに対するリクエストを認証した後に、前記受信したデータメッセージのための前記データストレージに格納される、請求項11に記載の方法。
【請求項13】
前記RDM属性集合は、前記VPNサーバによって前記データストレージに格納される、請求項12に記載の方法。
【請求項14】
前記RDM属性集合は、前記VPNサーバに対する前記VPNセッションリクエストを認証するRDMサーバによって前記データストレージに格納される、請求項12に記載の方法。
【請求項15】
少なくとも1つの処理ユニットで実行されると、請求項1から14のいずれか1項に記載の方法を実施するコンピュータプログラム。
【請求項16】
計算デバイスであって、
処理ユニットの集合と、
前記処理ユニットの少なくとも1つによって実施されると、請求項1から14のいずれか1項に記載の方法を実施するプログラムを格納する機械可読媒体と、を含む計算デバイス。
【請求項17】
少なくとも1つの処理ユニットで実行されると、請求項1から14のいずれか1項に記載の方法を実施するプログラムを格納する、機械可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
セキュアなリモートアクセスは、今日の商用ネットワークのうちの多くで共通の特徴となっている。そのようなアクセスにより、出張中の従業員(例えば、ローミングを行うセールスマン)や家で仕事をする在宅勤務の従業員が、例えばL3仮想専用ネットワーク(VPN)を通じて、商用ネットワークにアクセスすることが可能となる。セキュアソケットレイヤ(SSL)やインターネットプロトコルセキュリティ(IPSec)などの共用ネットワークインフラストラクチャを通じたL2のVPNを用いることで、マルチサイトプロバイダのデータセンタを縫い合わせる(stitch together)ために、セキュアリモートアクセスが用いられる。
【0002】
多くの場合、インターネットに面するネットワークの周辺部にVPNゲートウエイをインストールすることによって、セキュアリモートアクセスが提供される。VPNゲートウエイにより、外部のデバイス/ネットワークは、SSL/DTLSやIKE/IPSecなどのトンネルメカニズムを介して商用内部ネットワークに接続することができる。トンネルエンドポイントは、出て行くトラフィックを転送用に暗号化し、かつ、入来トラフィックを解読してそれを対応するネットワークへ供給する。ルーティングおよびポリシーベース転送(PBF)は、関心対象のトラフィックを、内部ネットワークからローカルトンネルエンドポイントへ、転送のために導き、そこでそのトラフィックはリモートネットワークへの正しいトンネルを見つけるためにブリッジングやPBFを用いてさらに処理される。認証され、専用ネットワークへのアクセスを得た後、外部クライアントは、その専用ネットワークの中にある他のクライアントと同じように、そのネットワークのリソースへのアクセスを得る。
【0003】
今日、外部クライアントから入来するトラフィックに対して行使されるポリシーは多くない。今日、エンドユーザデバイスのアプリケーションレベルで分割およびセキュリティを行う種々の技術が存在する。いくつかのモバイルデバイス管理(MDM)プラットフォーム(例えば、AirWatch / iOS)は、リモートアプリケーションに、全てのネットワークリソースに指定されたVPNを介してアクセスすること、またはユーザの識別性に基づいて公開または専用のそのアプリケーションの態様(posture for the application)を維持すること、を要求する。
【0004】
しかしながら、既存のプラットフォームは、同じ粒度のプロファイルベースのアクセスのネットワーク側と調和しない。データセンタ内の所定のリソースへのデバイスのアクセスを制限するために、今日の既存のプラットフォームは静的なファイヤウォールルールを用いるが、これは、潜在的に存在しうる膨大な数のプロファイルのためにルールが膨大になることの他に、提供や管理が難しいものとなりうる。これはまた、領域に跨がるデバイスモビリティも、DNS名などのアプリケーションアクセスプロビジョニングも、考慮しないものであり、すなわち、同じURIを有する異なるユーザ/デバイスに異なるアプリをいかに提供またはルーティングするか、を考慮しないものである。
【発明の概要】
【0005】
ある実施の形態は、リモートデバイス管理(RDM)システムからのデータメッセージ属性に基づいて、ネットワークにおいて、リモートデバイスデータメッセージを処理する新規な方法を提供する。例えば、ある実施の形態の方法はソースネットワークアドレストランスレーション(SNAT)動作を行う。これは、受信したデータメッセージに関連付けられたRDM属性集合に基づいて、受信したリモートデバイスデータメッセージのヘッダに、新たなソースネットワークアドレス(例えば、新たなソースインターネットプロトコル(IP)アドレスおよび/または新たなソースポート)を挿入するものである。方法は、次いで、ネットワーク内のメッセージの宛先へデータメッセージを転送する。メッセージがネットワークを通じてその宛先へと進んでいくにつれて、ネットワークのひとつ以上のネットワーク要素は、メッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて、ネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。これらの動作の例は、ルーティング動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【0006】
他の実施の形態の方法は、データメッセージに関連付けられたRDM属性集合に直接的に基づいて、受信したリモートデバイスデータメッセージに対する他のネットワーク動作を行う。例えば、ある実施の形態では、ネットワーク要素は、データメッセージのRDM属性集合を解析することによって解決されたネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。そのようなネットワーク要素の一例はファイヤウォールデバイスであり、それは受信したメッセージのRDM属性集合に基づいてファイヤウォール動作を行う。ある実施の形態では、ファイヤウォールデバイスは、他のメッセージヘッダ値(例えば、L2-L7ヘッダ値)と共にRDM属性集合について定義されうるファイヤウォールルールを課す。
【0007】
ある実施の形態では、ネットワーク要素は、受信したリモートデバイスデータメッセージに関連付けられたRDM属性集合を参照して定義可能な他のミドルボックスサービスルールを課す他のミドルボックス要素である。例えば、ある実施の形態のネットワーク要素は、データメッセージフローに関連付けられたRDM属性集合に基づいて、データメッセージフロー(すなわち、同じパケットヘッダ値を有するデータメッセージの集合)に対してDNS(ドメインネームシステム)動作を行う。ある実施の形態では、ネットワーク要素は、データメッセージをその宛先までルーティングするために、データメッセージのRDM属性集合に基づいて、DNAT(宛先ネットワークアドレス変換)動作を行う。ある実施の形態は,DNS動作またはDNAT動作を用いることで、第1地理的位置(例えば、ある国)に関連付けられたリモートデバイスが第1地理的位置のネットワークにのみ、または、第1地理的位置のデバイス用に分離された第2地理的位置(例えば、別の国)のサブネットワークにのみ、アクセスすることを確かなものとする。例えば、欧州の企業の従業員のリモートデバイスが米国内で仮想専用ネットワーク(VPN)接続を試みる場合、そのリモートデバイスが、欧州内のサーバにのみ、またはその企業の欧州従業員による使用のために分離された米国データセンタ内のサーバにのみ、アクセスすることができることを確実にするために、そのようなアプローチを用いることができる。
【0008】
ある実施の形態では、ひとつ以上のネットワークコントローラの集合は、ひとつ以上のRDMサーバの集合から、(1)種々のRDM属性の定義と、(2)これらのRDM属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。RDM属性定義は、RDM属性およびこれらのRDM属性について可能な値を定義する辞書の一部として提供される。ネットワークコントローラの集合は次いで、受信したRDM属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび/またはルール(例えば、ミドルボックス要素用のサービスルールや、ルータ用のルーティングルールなど)をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合のユーザインタフェースまたはアプリケーションプログラミングインタフェース(API)の集合を通じて、サービスポリシーおよび/またはサービスルールをプログラムすることができる。
【0009】
ネットワークコントローラの集合は、ひとつ以上のネットワーク要素にRDMベースのポリシーまたはルールを分配する(例えば、ネットワーク要素にポリシー/ルールをプッシュする、またはネットワーク要素がこれらのポリシー/ルールをプルすることを可能にする)。ある実施の形態では、ネットワーク要素は、RDMベースのポリシーを、該ネットワーク要素が執行するRDMベースのルールに変換する。VPNトンネルゲートウエイは、ネットワークコントローラの集合からRDMベースのポリシーまたはルールを受信できるネットワーク要素の一例である。そのようなゲートウエイはリモートデバイスとトンネルを確立し、該トンネルはVPN接続を通じてネットワークと接続する。言い換えると、VPNゲートウエイはリモートデバイスに、(1)そのゲートウエイを通じてネットワークとVPNトンネル接続を確立すること、(2)リモートデバイスがVPNトンネルを通じて送信するパケットペイロードを暗号化すること、および(3)リモートデバイスがVPNトンネルを通じて受信するパケットペイロードを解読すること、を要求することによって、ネットワークのリソース(例えば、サーバ等)へのリモートデバイスのアクセスを制限する。ある実施の形態では、VPNゲートウエイは、(1)内部ネットワークからリモートデバイスへ送られたパケットをトンネルヘッダでカプセル化し、(2)それがリモートデバイスから受信するパケットから、そのパケットを内部ネットワークのネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化する。
【0010】
リモートデバイスがネットワークとのVPNトンネル接続の確立を試行する場合、リモートデバイスの要求はVPNトンネルゲートウエイに渡される(例えば、ネットワークの負荷分散器によって)。ある実施の形態では、VPNトンネルゲートウエイは次いで、VPN要求を認証するために、それがリモートデバイスから得たVPN資格情報集合をRDMサーバ集合に渡す。ある実施の形態では、リモートデバイスの資格情報集合を認証する際、RDMサーバ集合は、VPN接続を要求しているリモートデバイス、ユーザおよび/またはアプリケーションのひとつ以上のRDM属性を提供する。
【0011】
VPNゲートウエイは、提供されたRDM属性と、それがその後VPN接続を通じて受信するデータメッセージと、を関連付ける。また、ある実施の形態では、VPN接続が確立されると、リモートデバイスは、それが送信するデータメッセージのひとつ以上のRDM属性を、VPNトンネルヘッダに、埋め込む。VPNゲートウエイは、それがRDMサーバ集合やリモートデバイスから受信するRDM属性と、VPN接続を通じてリモートデバイスによって送信されるデータメッセージと、を関連付ける。
【0012】
関連RDM属性集合に基づいて、VPNゲートウエイは、それがトンネルを通じてリモートデバイスから受信するデータメッセージに対するひとつ以上の動作を実行する。ある実施の形態では、関連RDM属性集合は、VPNゲートウエイが執行するデータ処理ルールを処理するためのコンテキストを提供する。そのような動作の例は、上述の、RDM-属性ベースSNATおよびファイヤウォール動作を含む。
【0013】
トンネルを通じて受信されたリモートデバイスデータメッセージに関連付けられたRDM属性集合に基づいてある実施の形態のVPNゲートウエイが行う他の処理動作の一例は、ネットワークマイクロセグメンテーションである。ある実施の形態は、ネットワークのネットワーク要素(例えば、転送要素、ミドルボックス要素、ホストなど)の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子(例えば、仮想ネットワーク識別子、VNI)を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【0014】
ある実施の形態では、VPNゲートウエイのネットワークマイクロセグメンテーション動作は、VPNゲートウエイが、リモートデバイスからのデータメッセージと、論理ネットワークと、をそのデータメッセージの関連RDM属性集合に基づいて関連付けることを含む。例えば、ある実施の形態では、VPNゲートウエイは複数のマイクロセグメンテーションルールを処理し、各ルールはRDM属性の集合と論理ネットワーク識別子とで指定されうる。これらの実施の形態では、VPNゲートウエイは、データメッセージのRDM属性集合と、マイクロセグメンテーションルールのうちのひとつのRDM属性集合と、をマッチし、マッチングルールの論理ネットワーク識別子をデータメッセージの論理ネットワーク識別子として用いることができる。そのような状況において、VPNゲートウエイはトンネルのトンネルヘッダに論理ネットワーク識別子を挿入する。ゲートウエイはそのトンネルヘッダを用いてデータメッセージを、論理ネットワークに関連付けられた転送要素またはミドルボックス要素へ転送する。
【0015】
ある実施の形態では、VPNゲートウエイは、それがリモートデバイスのデータメッセージに関連付けたRDM属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はRDM属性集合に基づいてひとつ以上の動作を行うことができる。そのような動作の例は、RDM属性ベースのファイヤウォール動作と、DNS動作と、DNAT動作と、および/または他のミドルボックス動作や転送動作と、を含む。ある実施の形態では、VPNゲートウエイは、リモートデバイスのRDM属性集合をネットワークの内部転送要素および/またはミドルボックス要素に、VPNゲートウエイとその要素とを接続するトンネルのトンネルヘッダを通じて、渡す。例えば、ある実施の形態では、VPNゲートウエイはGeneveまたはVXLANトンネルを通じてネットワーク要素に接続する。このトンネルプロトコルは、VPNゲートウエイが、トンネルヘッダにフローベースのメタデータ(これはそのフローについてのRDM属性集合を含む)を挿入することを可能とする。
【0016】
ある実施の形態では、VPNゲートウエイは、ひとつ以上の他の仮想マシンと共にホストコンピュータ上で実行される仮想マシンとして実装されてもよい。これらの実施の形態のうちのいくつかでは、VPNゲートウエイのRDMベースの処理動作(例えば、ソースネットワークアドレス変換やファイヤウォール動作等)は、VPN VMのホストコンピュータ上で実行されるサービスモジュールによって行われる。サービスモジュールは、VPN VMがリモートデバイスデータメッセージを脱カプセル化する際にそのメッセージを取得し、それをネットワークの内部ネットワーク要素に導く。例えば、ある実施の形態のサービスモジュールは、VMの仮想ネットワークインタフェースカード(VNIC)またはこのVNICに接続するホストのソフトウエアスイッチのポートによって呼び出されたフィルタモジュールである。
【0017】
先行するサマリは、本発明のいくつかの実施形態に対する簡単な導入として提供されることを意図するものである。本書面において開示される発明の主題の全ての紹介又は概要を意味するものではない。以下の詳細な説明及び詳細な説明において参照される図面は、他の実施形態と、要約において説明された実施形態を更に説明するであろう。従って、本書面によって説明される全ての実施形態を理解するため、要約、詳細な説明、図面および請求の範囲の十分な確認が必要である。さらに、クレームされた主題は、サマリ、詳細な説明および図面における説明用の詳細によって限定されるべきではない。
【図面の簡単な説明】
【0018】
本発明の新規な特徴は添付の特許請求の範囲によって明らかになる。しかしながら、説明の目的のため、本発明のいくつかの実施形態は以下の図において明らかになる。
【0019】
図1】MDMシステムからのデータメッセージ属性に基づいてモバイルデバイスデータメッセージを処理するデータセンタの例を示す。
【0020】
図2】ある実施の形態のVPNゲートウエイを示す。
【0021】
図3図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
図4図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
図5図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
図6図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
図7図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。
【0022】
図8】ある実施の形態のルールプロセッサが行うSNATプロセスを示す。
【0023】
図9】ある実施の形態においてルールプロセッサが行うファイヤウォールプロセスを示す。
【0024】
図10】ある実施の形態におけるルールプロセッサのマイクロセグメンテーションプロセスを示す。
【0025】
図11】複数のホスト上で実行されている、複数のそのようなVPN VMおよびサービスモジュールを有するデータセンタを示す。
【0026】
図12】ある実施の形態のホストコンピュータのソフトウエアアーキテクチャをより詳細に示す。
【0027】
図13】VPN VMのサービスモジュールがモバイルデバイスに関連付けられた位置に基づいてDNAT動作を行う際の二つの異なるやり方を示す。
【0028】
図14】データセンタの外の第2モバイルデバイスのデータメッセージを、第1領域内のデータセンタDCNクラスタにアクセスする第2領域モバイルデバイスについてのDCNサーバクラスタへと再ルーティングする、MDM属性ベースのDNAT動作を行うVPN VMのサービスモジュールを示す。
【0029】
図15】モバイルデバイスデータメッセージをリダイレクトするVPN VMのサービスモジュールを示し、モバイルデバイスデータメッセージがそのデータメッセージを送ったモバイルデバイスの関連領域に基づいて、二つの異なるDNSサーバへのDNSルックアップを要求する。
【0030】
図16】データセンタの外の第2モバイルデバイスのDNSネームクエリを、第1領域内のデータセンタDNSサーバにアクセスする第2領域モバイルデバイスについてのDNSサーバへと再ルーティングする、MDM属性ベースのDNS動作を行うVPN VMのサービスモジュールを示す。
【0031】
図17】三つの論理オーバレイネットワークの例を示し、そのようなネットワークは、(1)ホストの共有集合上で実行されるソフトウエア転送要素およびサービスモジュールの共有集合に亘って、かつ(2)複数のスタンドアローンな共有転送要素および共有ミドルボックス要素(または、サービス機器)に亘って、定義される。
【0032】
図18】第1テナントの第1モバイルデバイスからのデータメッセージを、第1論理ネットワークの第1論理ネットワーク識別子と関連付け、第2テナントの第2モバイルデバイスからのデータメッセージを、第2論理ネットワークの第2論理ネットワーク識別子と関連付けるVPNゲートウエイを示す。
【0033】
図19】同じテナントの二つのモバイルデバイスからのデータメッセージを、二つの異なる論理ネットワークに関連付けるVPNゲートウエイを示す。
【0034】
図20】同じモバイルデバイスからの二つの異なるデータメッセージフローを、二つの異なる論理ネットワークに関連付けるVPNゲートウエイを示す。
【0035】
図21】二つの異なるモバイルデバイスから、二つの異なる内部サービスノードへ、データメッセージを、これらのデータメッセージのMDM属性集合と共に、転送するVPNゲートウエイの一例を示し、この場合、サービスノードはMDM属性集合に基づいてデータメッセージを処理することができる。
【0036】
図22】サービスノードクラスタ内の複数のミドルボックスサービスノードに亘って、異なるモバイルデバイスデータメッセージフロー用のサービス動作を分散させている二つのVPNゲートウエイのサービスモジュールを示す。
【0037】
図23】ある実施の形態のVPNゲートウエイを示し、該VPNゲートウエイは(1)データメッセージフローに関連付けられたMDM属性集合を解析し、(2)この解析に基づいて、ひとつ以上のサービスタグを特定し、(3)特定されたサービスタグをデータメッセージフローと共にネットワーク要素へインバンドで転送する。
【0038】
図24】サービスノードが二つのモバイルデバイスデータメッセージフローに対してサービスタグに基づいて行う負荷分散動作の例を示し、VPNゲートウエイはデータメッセージフローに関連付けられたMDM属性集合を解析した後にそのサービスタグを割り当てる。
【0039】
図25】ある実施の形態における、アドミニストレータがMDM属性集合およびフローヘッダ値に基づいてサービスルールを指定できるようにするためにネットワークコントローラの集合が提供するサービスルール管理コンソールのUIの一例を示す。
【0040】
図26】本発明のある実施の形態のネットワークコントローラを示す。
【0041】
図27】ある実施の形態のMDM属性インデックスツリーの一例を示す。
【0042】
図28】上述の二つのベクトル指定サービスルールについて定義されうるインデックスツリーを示す。
【0043】
図29】ネットワークコントローラからのサービスルールの集合を保持するサービスルールストレージのためのMDM属性インデックスツリー構造を生成するプロセスを示す。
【0044】
図30】フローのMDM属性集合および/またはフローヘッダ値に基づいて、サービスルールストレージから、データメッセージフローについてのサービスルールを選択するためにサービスノードが用いるプロセスを示す。
【0045】
図31】本発明のいくつかの実施形態が実施されるコンピュータシステムを概念的に示す。
【発明を実施するための形態】
【0046】
以下の発明の詳細な説明では、発明の種々の詳細、例および実施の形態が説明される。しかしながら、発明が実施の形態に限定されないこと、および議論される特定の詳細や例のいくつかを伴うことなしに発明を実施可能なこと、は当業者には自明であろう。
【0047】
ある実施の形態は、リモートデバイス管理(RDM)システムからのデータメッセージ属性に基づいて、ネットワークにおいて、リモートデバイスデータメッセージを処理する。リモートデバイスは、外部の公共ネットワークから、専用ネットワーク内に位置するリソースへのアクセスを試行する任意のデバイスを含む。そのようなデバイスの例は、サーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、等を含む。ある実施の形態では、リモートデバイス管理システムはモバイルデバイス管理(MDM)システムである。モバイルデバイスは、ラップトップやタブレットやスマートフォンや仮想デスクトップインタフェース(VDI)やターミナルサーバなどのモバイル計算デバイスを含む。
【0048】
本明細書で用いられる場合、データメッセージはネットワークを介して送信される、特定のフォーマットのビットの集合を指す。イーサネットフレームやIPパケットやTCPセグメントやUDPデータグラムなどの、ネットワークを介して送信可能な種々のフォーマット化されたビット集合を指すものとして、データメッセージという用語を本明細書で用いてもよいことを、当業者は認識するであろう。また、本明細書で用いられる場合、L2、L3、L4およびL7レイヤ(またはレイヤ2、レイヤ3、レイヤ4、レイヤ7)への参照はそれぞれ、OSI(オープンシステムインターコネクション)レイヤモデルの第2データリンクレイヤ、第3ネットワークレイヤ、第4トランスポートレイヤ、および第7アプリケーションレイヤへの参照である。
【0049】
リモートデバイス(例えば、リモートモバイルデバイス)から受信したデータメッセージに関連付けられたRDM属性集合に基づいて、ある実施の形態は、受信したリモートデバイスデータメッセージのソースネットワークアドレス(例えば、ソースインターネットプロトコル(IP)アドレスおよび/またはソースポート)を変更するSNAT動作を行う。ネットワークのひとつ以上のネットワーク要素は次いで、データメッセージの変更されたソースネットワークアドレスに基づいて、リモートデバイスデータメッセージに対して、ひとつ以上の動作を行う。これらの動作の例は、ルーティング動作と、論理セグメンテーション動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【0050】
ある実施の形態は、データメッセージに関連付けられたRDM属性集合に直接的に基づいて、受信したリモートデバイスデータメッセージに対するひとつ以上のネットワーク動作を行う。例えば、ある実施の形態では、ひとつ以上のネットワーク要素は、データメッセージに関連付けられたRDM属性集合を解析することによって解決されたネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。そのようなネットワーク要素の一つのタイプはファイヤウォールデバイスであり、それは受信したデータメッセージの関連RDM属性集合に基づいてファイヤウォール動作を行う。言い換えると、ある実施の形態のファイヤウォールデバイスは、RDM属性集合に関して定義されたファイヤウォールルールを課す。
【0051】
ある実施の形態では、ネットワーク要素は、転送要素および/または受信したモバイルデバイスデータメッセージに関連付けられたRDM属性集合を参照して定義される他のルールを課す他のミドルボックス要素を含む。例えば、ある実施の形態のネットワーク要素は、データメッセージフローに関連付けられたRDM属性集合に基づいて、データメッセージフロー(すなわち、同じパケットヘッダ値を有するデータメッセージの集合)に対してDNS動作またはDNAT動作を行う。
【0052】
図1は、MDMシステムからのデータメッセージ属性に基づいてモバイルデバイスデータメッセージを処理するデータセンタ100の例を示す。このデータセンタ100は、データセンタのリソースにアクセスするモバイルデバイス150からのデータメッセージのMDM属性に基づいてひとつ以上の動作を行うVPNゲートウエイ110の集合を有する。VPNゲートウエイ集合110に加えて、データセンタ100はひとつ以上のネットワークコントローラ115の集合と、ひとつ以上のMDMサーバ120の集合と、いくつかの計算サーバ135と、を含む。ある実施の形態では、データセンタのこれらの部材は、ローカルエリアネットワークやワイドエリアネットワークである内部ネットワーク105を通じて通信可能に結合される。ある実施の形態では、内部ネットワーク105は、(例えば、専用有線または無線接続を通じて、またはインターネットを用いるひとつ以上のオーバレイネットワークを通じて、)データセンタの異なる物理的位置を繋いでもよい。他の実施の形態では、データセンタ100はひとつの連続した物理的位置であり、内部ネットワーク105は、ネットワーク要素と、これらのネットワーク要素間の有線接続または無線接続と、からなる。
【0053】
ある実施の形態では、内部ネットワーク105のネットワーク要素は、(1)メッセージヘッダのパラメータに基づいてデータメッセージを転送する転送要素155(例えば、スイッチ、ルータおよびブリッジ)と、(2)メッセージヘッダのパラメータに基づいてデータメッセージに対してサービス(例えば、ファイヤウォール、侵入検知、ネットワークアドレス変換(NAT)等)を行うミドルボックス要素(MBE)160と、を含む。また、ある実施の形態では、これらの要素は自身の転送動作やサービス動作を、MDM属性に基づいて行うことができる。モバイルデバイスからのデータメッセージフローについて指定可能なMDM属性の例は、デバイス識別子と、ユーザ識別子と、アプリケーション識別子と、アプリケーショングループ識別子と、オペレーティングシステムと、モバイルデバイスの位置と、モバイルデバイスのコンプライアンス状態と、モバイルデバイスのジェイルブレイク状態と、インターネットプロトコルのバージョンと、を含む。
【0054】
これらのネットワーク要素は、サーバ135とMDMサーバ120とネットワークコントローラ115とVPNゲートウエイ集合110とに関連付けられた(例えば、送信されまたは受信された)データメッセージに対して転送動作およびサービス処理動作を行う。サーバ135は、データセンタの外側のひとつ以上のモバイルデバイス150からアクセス可能な計算動作およびストレージ動作(例えば、アプリケーションの実行、ファイルの格納等)を行う。ある実施の形態では、複数のサーバ135はホストコンピュータ上で実行される。そのようなサーバの例は、仮想マシンおよびコンテナを含む。これらの実施の形態のいくつかでは、ひとつ以上のネットワーク要素(例えば、転送要素、ミドルボックス要素、VPNゲートウエイ)もまたそのようなホストコンピュータ上で実行されてもよく、これはさらに後述される。
【0055】
VPNゲートウエイ集合110は、データセンタ100の外側のモバイルデバイス150とのVPNトンネルを確立することで、これらのデバイスに、データセンタ100のリソース(例えば、サーバ135)へのセキュアなVPN接続を提供する。言い換えると、VPNゲートウエイは、モバイルデバイスにまずVPNゲートウエイとのセキュアなVPNトンネルを確立することを要求することによって、ネットワークリソース(例えば、サーバ等)へのモバイルデバイスのアクセスを制限する。トンネルはトンネルヘッダを用いることで、あるタイプのプロトコルからのパケットを、異なるプロトコルのデータグラムにおいてカプセル化する。ある実施の形態では、VPNトンネルはPPTP(ポイントツーポイントトンネルプロトコル)を用いて、インターネットなどの公共ネットワークに亘ってIPパケットをカプセル化する。VPNトンネルは、(VPNトンネルヘッダを伴うパケットのうちの)そのVPNパケットのペイロードを、ひとつ以上のVPNキーで、暗号化する。これにより、モバイルデバイスとVPNゲートウエイとの間で安全にパケットを交換することができる。
【0056】
ある実施の形態では、VPNゲートウエイは、(1)内部ネットワーク105からモバイルデバイス150へ送られたパケットをVPNトンネルヘッダでカプセル化および暗号化し、(2)それがモバイルデバイス150から受信するパケットから、そのパケットを内部ネットワーク105のネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化し、これらのパケットを解読する。ある実施の形態では、VPNゲートウエイ110は、データセンタ100の内部のネットワークトラフィックとデータセンタ100の外部のネットワークトラフィックとの間のブリッジとして動作するプロキシサーバ(例えば、SOCKSプロキシサーバ)を含む。データセンタ100から出て行くトラフィックは、データセンタ100の内部のリソースから来るように見えるのではなく、プロキシサーバから来るように見える(例えば、プロキシサーバのIPアドレスと関連付けられる)。図1はVPNゲートウエイを、モバイルデバイスからのデータメッセージを受ける最初のデータセンタ部材の集合として示しているが、当業者であれば、ある実施の形態では、データセンタ100がデータセンタ100に入るデータメッセージを最初に受けて分配するひとつ以上の機器(例えば、負荷分散器)を有すると認識するであろう。
【0057】
ある実施の形態では、モバイルデバイス150がVPNゲートウエイとのVPNトンネル接続の確立を試行すると、VPNトンネルゲートウエイは、VPN要求を認証するために、それがモバイルデバイス150から得たVPN資格情報集合をMDMサーバ集合120に渡す。ある実施の形態では、モバイルデバイスの資格情報集合を認証する際、MDMサーバ集合120は、VPN接続を要求しているモバイルデバイス150、(モバイルデバイスの)ユーザおよび/または(モバイルデバイス上で実行される)アプリケーションのひとつ以上のMDM属性を提供する。ある実施の形態では、後に詳述されるように、モバイルデバイス上で実行されているVPNクライアントまたはプロキシクライアントはMDM属性を提供する。例えば、モバイルデバイス上のクライアントは、アプリケーション識別子やデバイス識別子や位置やデバイスジェイルブレイク状態などを提供可能である。
【0058】
ある実施の形態では、VPN要求の認証という自身の役割に加えて、MDMサーバ集合120は、モバイルデバイスに、専用ネットワークのリソース(例えば、データセンタ100のリソース)へのアクセスを提供するサーバ集合である。異なる実施の形態では、プロビジョニングは以下の動作のうちの異なる組み合わせを含む:(1)モバイルデバイスの識別子を、リモートアクセスを有しうるモバイルデバイスのリストに追加すること、(2)モバイルデバイスを通じたリモートアクセスを有しうるひとつ以上のユーザを特定するユーザ識別子を追加すること、(3)モバイルデバイスがデータセンタとのセキュアなVPNリモートアクセスをセットアップできるよう、モバイルデバイスにVPNアクセスソフトウエアおよび/または設定を提供すること、および(4)企業識別子やユーザ資格などのテナント情報を定義すること。
【0059】
VPNゲートウエイ110は、MDMサーバ集合120により提供されたMDM属性を、確立されたVPN接続を通じてモバイルデバイス150からそれが後に受信するデータメッセージに、関連付ける。また、ある実施の形態では、VPN接続が確立されると、モバイルデバイス150は、それが送信するデータメッセージのひとつ以上のMDM属性を、VPNトンネルヘッダに、埋め込む。ある実施の形態では、VPNゲートウエイ110は、それがMDMサーバ集合120およびモバイルデバイス150から受信するMDM属性を集めてMDM属性のひとつの集合をなし、VPNゲートウエイ110はそのMDM属性のひとつの集合を、VPN接続を通じてモバイルデバイス150によって送信されたデータメッセージに関連付ける。
【0060】
関連MDM属性集合に基づいて、VPNゲートウエイ110は、それがトンネルを通じてモバイルデバイスから受信するデータメッセージに対するひとつ以上の動作を実行する。ある実施の形態では、関連MDM属性集合は、VPNゲートウエイ110が執行するデータ処理ルールを処理するためのコンテキストを提供する。ある実施の形態では、後に詳述されるように、ルールのルール識別子(マッチングルールを特定するためのもの)は、MDM属性値を参照するだけでなく、データメッセージフローのフロー識別子の値(例えば、L2-L4ヘッダ値やL2-L7ヘッダ値)によっても定義される。
【0061】
そのようなデータ処理ルールの一例は、MDM属性ベースのSNATルールを含む。ある実施の形態では、VPNゲートウエイ110はSNAT動作を行う。SNAT動作は、受信したデータメッセージに関連付けられたMDM属性集合に基づいて、受信したモバイルデバイスデータメッセージのヘッダに、新たなソースネットワークアドレス(例えば、新たなソースIPアドレスおよび/または新たなソースポート)を挿入する。VPNゲートウエイ110は、次いで、内部ネットワーク105内のメッセージの宛先へデータメッセージを転送する。メッセージが内部ネットワーク105を通じてその宛先へと進んでいくにつれて、ネットワーク105のひとつ以上の内部ネットワーク要素(例えば、転送要素155やミドルボックス要素160等)は、データメッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて、ひとつ以上のネットワークポリシーにしたがい、データメッセージに対する動作を行う。内部ネットワーク要素のそのような動作の例は、ルーティング動作と、論理セグメンテーション動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【0062】
他の実施の形態のVPNゲートウエイ110は、データメッセージに関連付けられたMDM属性集合に直接的に基づいて、受信したモバイルデバイスデータメッセージに対するひとつ以上のネットワーク動作を行う。ある実施の形態では、これらのネットワーク動作は、VPNゲートウエイに関連付けられたひとつ以上のミドルボックス要素(例えば、ミドルボックスエンジンやデバイス)によって、モバイルデバイスデータメッセージのMDM属性集合に直接的に基づいて、行われる。(例えば、ひとつ以上のミドルボックス要素は、VPNゲートウエイと同じマシン上で実行され、または物理的接続やオーバレイ接続を通じてVPNゲートウエイに直接的に接続される。これは、ゲートウエイが内部ネットワーク105へ渡す全てのデータメッセージを調べるためである。)以下では、そのようなミドルボックス要素はVPNゲートウエイの関連ミドルボックス要素(MBE)と称される。ある実施の形態では、VPNゲートウエイ110またはその関連MBE160は、データメッセージのMDM属性集合を解析することによって解決されたひとつ以上のルールにしたがい、データメッセージを処理する。
【0063】
ある実施の形態では、ファイヤウォールルールは、MDM属性集合に関して定義されたルールの一例である。VPNゲートウエイ110またはその関連MBE160は、データメッセージのMDM属性集合を用いることで、データメッセージに適用可能なファイヤウォールルールを特定し、次いで、このルールにより指定されるアクション(許可、拒否、リダイレクト、リダイレクトコピー、等)をデータメッセージに対して行う。
【0064】
ある実施の形態では、VPNゲートウエイ110またはその関連MBE160は、データメッセージフローに関連付けられたMDM属性集合に基づいて、データメッセージフロー(すなわち、同じパケットヘッダ値を有するデータメッセージの集合)に対してDNS動作を行う。また、ある実施の形態では、このゲートウエイ110またはその関連MBE160は、データメッセージをその宛先までルーティングするために、データメッセージのMDM属性に基づいて、DNAT動作を行う。ある実施の形態は,DNS動作またはDNAT動作を用いることで、第1地理的位置(例えば、ある国)に関連付けられたモバイルデバイスが第1地理的位置のネットワークにのみ、または、第1地理的位置のデバイス用に分離された第2地理的位置(例えば、別の国)のネットワークにのみ、アクセスすることを確かなものとする。例えば、欧州の企業の従業員のモバイルデバイスが米国内でVPN接続を試みる場合、そのリモートデバイスが、欧州内のサーバにのみ、またはその企業の欧州従業員による使用のために分離された米国データセンタ内のサーバにのみ、アクセスすることができることを確実にするために、そのようなアプローチを用いることができる。
【0065】
ある実施の形態では、ネットワークマイクロセグメンテーションは、VPNゲートウエイ110またはその関連MBE160がモバイルデバイスデータメッセージのMDM属性に基づいて行う他の処理動作の一例である。ある実施の形態は、ネットワークのネットワーク要素(例えば、転送要素、ミドルボックス要素など)の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子(例えば、仮想ネットワーク識別子、VNI)を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【0066】
ある実施の形態では、マイクロセグメンテーション動作は、VPNゲートウエイまたはその関連MBEが、モバイルデバイスデータメッセージと、論理ネットワークと、をそのデータメッセージの関連MDM属性集合に基づいて関連付けることを含む。例えば、ある実施の形態では、VPNゲートウエイまたはその関連MBEは複数のマイクロセグメンテーションルールを処理し、各ルールはMDM属性の集合と論理ネットワーク識別子とを参照して指定されうる。これらの実施の形態では、VPNゲートウエイまたはその関連MBEは、データメッセージのMDM属性集合と、マイクロセグメンテーションルールのうちのひとつのMDM属性集合と、をマッチし、マッチングルールの論理ネットワーク識別子をデータメッセージの論理ネットワーク識別子として用いることができる。そのような状況において、VPNゲートウエイはトンネルのトンネルヘッダに論理ネットワーク識別子を挿入する。ゲートウエイはそのトンネルヘッダを用いてデータメッセージを、論理ネットワークに関連付けられた転送要素またはミドルボックス要素へ転送する。
【0067】
ある実施の形態では、VPNゲートウエイは、それがモバイルデバイスのデータメッセージに関連付けたMDM属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はMDM属性集合に基づいてひとつ以上の動作(例えば、ファイヤウォール動作、DNS動作、DNAT動作、および/または他のミドルボックスや転送動作)を行うことができる。ある実施の形態では、VPNゲートウエイは、モバイルデバイスのMDM属性集合をネットワークの内部転送要素および/またはミドルボックス要素に、VPNゲートウエイとその要素とを接続するトンネルのトンネルヘッダを通じて、渡す。例えば、ある実施の形態では、VPNゲートウエイはGeneveまたはVXLANトンネルを通じてネットワーク要素に接続する。このトンネルプロトコルは、VPNゲートウエイが、トンネルヘッダにフローベースのメタデータ(これはそのフローについてのMDM属性集合を含む)を挿入することを可能とする。
【0068】
ある実施の形態では、ネットワークコントローラ集合115はMDM属性ベースのルールを生成し、これらのルールをVPNゲートウエイ110、その関連MBE160、および/または他のネットワーク要素(例えば、転送要素155)に分配する。ある実施の形態では、ネットワークコントローラ集合115は、MDMサーバ集合120から、種々のMDM属性の定義と、これらのMDM属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。MDM属性定義は、MDM属性およびこれらのMDM属性について可能な値を定義する辞書の一部として提供される。ある実施の形態では、オペレータの集合は以下の動作のうちの二つ以上を含みうる:AND、OR、等しい、より大きい、より小さい、以上、以下、等しくない、等。
【0069】
ネットワークコントローラの集合115は次いで、受信したMDM属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび/またはルール(例えば、ミドルボックス要素160用のサービスルールや、転送要素155用の転送ルールなど)をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合115のユーザインタフェースまたはAPI(アプリケーションプログラミングインタフェース)の集合を通じて、サービスポリシーおよび/またはサービスルールをプログラムすることができる。
【0070】
ネットワークコントローラ集合115はMDM属性ベースのポリシーまたはルールをVPNゲートウエイ110、その関連MBE、および/または他のネットワーク要素に分配する。ある実施の形態では、ネットワークコントローラはこれらの要素にポリシー/ルールをプッシュする。これらのまたは他の実施の形態では、ネットワークコントローラ集合は、ネットワーク要素(例えば、VPNゲートウエイ110、その関連MBE160、および/または他のネットワーク要素)がこれらのポリシー/ルールをプルすることを可能とする。ある実施の形態では、VPNゲートウエイおよび/またはネットワーク要素は、それが受信するMDMベースのポリシーを、それが執行するMDMベースのルールに変換する。
【0071】
図2は、ある実施の形態のVPNゲートウエイ205を示す。このVPNゲートウエイ205は、図1のデータセンタ100のVPNゲートウエイ105として機能しうる。示されるように、VPNゲートウエイ205は、VPNプロセッサ210と、MDM認証器215と、ルールプロセッサ220と、ネットワークコントローラエージェント225と、MDMエージェント230と、ルールデータストレージ235と、MDM属性ストレージ240と、を備える。VPNプロセッサ210はVPNサーバ(不図示)を含み、該サーバはデータセンタの外側のモバイルデバイス150とのVPNトンネルを確立し、それによりデータセンタ内のリソース(例えば、サーバ)からモバイルデバイスに送信されるデータを暗号化し保護する。そのようなVPNサーバの多くが市場で普通に取得可能であり、例えば、Juniper Networksにより販売されているVPNサーバ(Pulse Secure VPN)や、Cisco Systems, Inc.により販売されれているVPNサーバ(Easy VPN)、Dell Inc.により販売されているVPNサーバ(Sonicwall VPN server)等である。
【0072】
ある実施の形態では、VPNプロセッサ210は、(1)内部ネットワーク105からモバイルデバイス150へ送られたパケットをVPNトンネルヘッダでカプセル化および暗号化し、(2)それがモバイルデバイス150から受信するパケットから、そのパケットを内部ネットワークのネットワーク要素に転送する前に、トンネルヘッダを脱カプセル化し、これらのパケットを解読する。ある実施の形態では、ひとつ以上のデータセンタ部材は最初、モバイルデバイス150からデータメッセージを、そのデータメッセージがVPNプロセッサ210に到達する前に、受信する。
【0073】
トンネルカプセル化/脱カプセル化および暗号化/解読を行うVPNサーバに加えて、ある実施の形態のVPNプロセッサ210は、VPNサーバが面する外部ネットワークとデータセンタの内部ネットワークとの間のブリッジとして機能するプロキシサーバ(例えば、SOCKSプロキシサーバ)をも含む。
【0074】
ある実施の形態では、モバイルデバイスからのVPNデータ経路は以下のシーケンスで表現されうる:(1)モバイルアプリケーション、(2)SOCKSプロキシクライアント、(3)VPNクライアント、(4)VPNサーバ、(5)SOCKSプロキシサーバ、および(6)データセンタ内の宛先ネットワーク要素。逆のシーケンスは、ネットワーク要素からモバイルデバイスへの逆のデータ経路を示す。モバイルデバイスデータメッセージに対してMDM属性ベースのサービスが行われる場合、モバイルデバイスのデータ経路は、ソケットサーバと宛先ネットワーク要素との間のひとつ以上のMDM属性ベースのサービスを含む。
【0075】
モバイルデバイス150がVPNプロセッサ210とのVPNトンネル接続の確立を試行すると、VPNプロセッサ210は、それがモバイルデバイス150から得たVPN資格情報集合を認証器215に渡す。認証器215は、VPN要求を認証するために、資格情報集合をMDMサーバ集合120にリレーする。VPN要求が認証されると、認証器215はVPNプロセッサ210に、それがモバイルデバイス150用のVPNトンネルを確立できることを知らせる。
【0076】
ある実施の形態では、モバイルデバイスの資格情報集合を認証する際、MDMサーバ集合120は、VPN接続を要求しているモバイルデバイス、(モバイルデバイスの)ユーザおよび/または(モバイルデバイス上で実行される)モバイルデバイスアプリケーションのひとつ以上のMDM属性を認証器215に提供する。そのようなデータの例は、デバイス状態(例えば、OSタイプ)と、デバイス位置と、適合状態と、を含む。
【0077】
認証器215は、MDM属性ストレージ240にこれらの属性を格納する。ある実施の形態では、認証器215とのインバンド通信を通じてMDMサーバ120からMDM属性を受信する代わりに、VPNゲートウエイ205は、そのMDMエージェント230を通じてアウトオブバンドでMDMサーバ120からMDM属性を取得する。これらの実施の形態のいくつかでは、MDMサーバ120は、それが認証器215から認証対象のVPN資格情報集合を受信すると、MDMエージェント230に、要求されるVPNトンネルに関連付けられた(例えば、VPNトンネルを要求しているモバイルデバイス、ユーザ、および/またはモバイルデバイスアプリケーションに関連付けられた)MDM属性集合を提供する。MDMエージェント230は、それがMDMサーバ120から受信するMDM属性をMDM属性ストレージ240に格納する。
【0078】
ある実施の形態では、このMDM属性ストレージ240は、VPNトンネルおよびその関連MDM属性集合を特定するレコード(例えば、VPNトンネルの識別子を保持するレコード)に、各VPNトンネルの関連MDM属性集合を保持する。VPNトンネルを特定することに代えて、またはVPNトンネルを特定することに加えて(例えば、VPNトンネル識別子を保持することに加えて)、このレコードはデータメッセージのデータメッセージ識別子(例えば、五つのタプル識別子であって、これはある実施の形態ではソースIP、宛先IP、ソースポート、宛先ポート、およびプロトコルである)を特定する。該データメッセージはトンネルを通じて受信されたものであり、したがってこのレコードのMDM属性集合に関連付けられるべきものである。
【0079】
ある実施の形態では、いったんVPN接続が確立されると、モバイルデバイス150は、それが送信するデータメッセージのVPNトンネルヘッダにひとつ以上のMDM属性を埋め込む。これらの実施の形態では、VPNプロセッサ210は埋め込まれたMDM属性集合を抽出し、この集合をMDM属性ストレージ240に(例えば、ストレージ240においてMDMサーバ120から受信したMDM属性集合用に生成されていたレコードに)格納する。ある実施の形態では、このデータは、確立されたVPNトンネルについて、例えばVPNトンネルの識別子に基づいて、保持される。確立されたVPNトンネルについて収集されたMDM属性は、このトンネルを通じてモバイルデバイス150から受信したデータメッセージを処理するためのMDMコンテキストを提供する。
【0080】
このコンテキストに基づいて、ルールプロセッサ220は、それが確立されたVPNトンネルおよびVPNプロセッサ210を通じてモバイルデバイス150から受信するデータメッセージに対するひとつ以上の動作を実行することができる。特に、VPNプロセッサ210は、それが確立されたVPNトンネルを通じてモバイルデバイス150から受信するVPNデータメッセージペイロードを脱カプセル化する(すなわち、受信したVPNデータメッセージからVPNトンネルヘッダを除去する)。VPNプロセッサ210はまた、脱カプセル化されたVPNデータメッセージペイロードを解読する。脱カプセル化され、解読されたVPNデータメッセージペイロードは、それが暗号化されトンネルヘッダでカプセル化される前の、モバイルデバイス150によって送られるデータメッセージである。
【0081】
VPNプロセッサ210は、モバイルデバイス150からのデータメッセージをルールプロセッサ220に渡す。ある実施の形態では、ルールプロセッサ220はデータメッセージに関連付けられたMDM属性集合を、MDM属性データストレージ240から、取得する。ある実施の形態では、データストレージ240内の各レコードは、(1)MDM属性集合と、(2)データメッセージヘッダ値またはVPNトンネル識別子もしくはその両方に関して定義されたレコード識別子と、を指定する。
【0082】
したがって、ある実施の形態では、ルールプロセッサ220はデータメッセージのヘッダ値を用いることで(例えば、データストレージのなかから、メッセージの五つのタプル識別子にマッチするルール識別子を有するレコードを特定することによって)、データメッセージのMDM属性集合を特定する。他の実施の形態では、ルールプロセッサ220は、VPNトンネルの識別性を用いることで(例えば、データストレージ240のなかから、VPNトンネル識別子を有するレコードを特定することによって)メッセージのMDM属性集合を特定する。これらの実施の形態では、VPNプロセッサ210は、ルールプロセッサ220に、VPNプロセッサ210がルールプロセッサ220に提供するデータメッセージのVPNトンネル識別情報を知らせる必要がある。さらに他の実施の形態では、ルールプロセッサ220は、データメッセージのヘッダ値およびトンネル識別子(トンネルID)の両方を用いることで、データメッセージのMDM属性集合を特定する。
【0083】
ルールプロセッサ220は、次いで、特定されたMDM属性集合を用いることで、ルールストレージ235のなかから、執行すべきひとつ以上のサービスルールを特定する。このストレージ235はMDM属性集合に基づいてサービスルールを保持する。例えば、ある実施の形態では、各ルールは、(1)アクションを指定し、かつ(2)MDM属性値の集合を有する。ルールプロセッサ220は、そのMDM属性値の集合と、受信したデータメッセージのMDM属性集合とのマッチングを試行することができる。ルールのMDM属性値集合が受信されたデータメッセージのMDM属性集合とマッチする場合、ルールプロセッサ220はルールによって指定されるアクションを行う。アクションがデータメッセージの排除やデータセンタの外側の他のリソースへのデータメッセージの再ルーティングを含まない場合、ルールプロセッサ220は、ルールプロセッサ220がデータメッセージに対してそのアクションを行った後、内部ネットワーク内のデータメッセージの宛先へデータメッセージを転送する。ある実施の形態では、ルールプロセッサ220はデータメッセージを、内部ネットワーク内のセットネットワーク要素(例えば、スイッチおよびルータ)を通じてその宛先へと転送する。
【0084】
ある実施の形態では、ひとつ以上のサービスアクションについてのルールを保持するひとつのルールストレージ235を用いるひとつのルールプロセッサ220を有する代わりに、VPNゲートウエイ205は、異なる複数種類のサービスアクションについての複数のルールストレージと複数のルールプロセッサとを用いる。他の実施の形態では、VPNゲートウエイ205は、異なる複数種類のサービスルールを保持する複数のルールストレージを用いるひとつのルールプロセッサ220を用いる。
【0085】
図3図7は、異なるサービスアクションについての異なるサービスルールストレージの例を示す。特に、図3はSNATルールストレージ300を示し、図4は、ファイヤウォールルールストレージ400を示し、図5はDNATルールストレージ500を示し、図6はDNSルールストレージ600を示し、図7は論理的セグメンテーションルールストレージ700を示す。示されるように、ある実施の形態では、これらのルールストレージにおけるルールのそれぞれは、MDM属性集合および/またはフロー属性集合(例えば、L2-L4パケットヘッダ値)に基づいて定義されうるルール識別子を含む。特定のMDM属性集合を伴うデータメッセージについて、ルールプロセッサは、データメッセージのMDM属性集合および/またはヘッダ値と、ルールのルール識別子と、を比較することで、これらのルールストレージ300-700のいずれかにおけるルールを特定することを試みることができる。ある実施の形態では、ルールストレージ300-700のそれぞれのルールは、明示的または暗示的な優先度(例えば、明記される優先度によって指定されるか、またはルールストレージ内のそれらの順番によって指定される)を有する。ルールストレージにおいてデータメッセージのMDM属性集合および/またはヘッダ値とマッチするルール識別子を有するルールが複数ある場合、ルールプロセッサはルールストレージにおいて最も高い優先度のルールを選択する。
【0086】
SNATルールストレージ300では、SNATルールは、SNAT動作中にデータメッセージのソース情報を置換するためのソース情報(例えば、ソースIPアドレスおよび/またはソースポート)を保持する。ファイヤウォールルールストレージ400のファイヤウォールルールは、ファイヤウォールルール識別子にマッチするMDM属性および/またはフロー属性を有するデータメッセージに対するファイヤウォールアクション(許可、拒否、リダイレクト、リダイレクトコピー、DNAT等)を指定する。
【0087】
DNATルールストレージ500のDNATルールは、DNAT動作中にデータメッセージの宛先タプル(例えば、受信されたデータメッセージの宛先IPおよび/または宛先ポート)を置換するためのひとつ以上の候補宛先タプル(例えば、宛先IPアドレスおよび/または宛先ポートの複数の集合)を保持する。図5に示される例では、各DNATルールはまた、負荷分散された態様で候補宛先タプルのうちのひとつを選択するようルールプロセッサを導く負荷分散基準の集合を含んでもよい。図6のDNSルールストレージ600のDNSルールは、DNSルールのルール識別子にマッチするMDM属性およびフロー属性を有するデータメッセージのDNSサーバ識別子(これはDNSサーバを特定する)を保持する。
【0088】
図7の論理的セグメンテーションルールストレージ700の各セグメンテーションルールは、受信されたモバイルデバイスデータメッセージと、データセンタの共通共用ネットワークおよび計算リソースによって実装される特定の論理ネットワークと、を関連付ける論理ネットワーク識別子(LNI)を保持する。ある実施の形態では、LNIは仮想ネットワーク識別子(VNI)を含む。ある実施の形態では、VNIは論理スイッチを特定する。ある実施の形態では、LNIは、論理ルータを特定する仮想分散ルータ識別子などの他の仮想識別子を、合わせてまたは代替的に、指定する。ある実施の形態では、VPNゲートウエイは、論理ネットワークを実装するネットワーク要素にトンネルを通じて接続する。これらの実施の形態のいくつかでは、セグメンテーションルールはひとつ以上のネットワーク要素へのひとつ以上のトンネルの集合を指定することができる。ルールプロセッサは、そのひとつ以上のトンネルの集合を用いることで、メッセージをトンネルヘッダでカプセル化し、トンネルヘッダにLNIを挿入した後に、そのデータメッセージをルーティングすることができる。
【0089】
上述のように、ルールデータストレージ235のサービスルールは、ネットワークコントローラ115を通じてアドミニストレータによって指定される。図2に示されるように、MDMベースのルールは、ネットワークコントローラ115がMDMサーバ120から取得するMDM辞書およびオペレータ集合を参照して定義される。ネットワークコントローラ115は、VPNゲートウエイ205のネットワークコントローラエージェント225を通じて、これらのルールをルールデータストレージ235に格納する。ある実施の形態では、このエージェント225は、コントロールチャネルを通じてネットワークコントローラ115と通信する。
【0090】
ルールストレージ235のサービスルールは任意の数のアクションを指定することができる。アクションの例は上述のSNAT動作を含む。このSNAT動作では、モバイルデバイスデータメッセージのソース情報(例えば、ソースIPおよび/またはソースポート)が新たなソース情報で置き換えられる。この新たなソース情報は、内部ネットワーク105の下流にあるネットワーク転送要素およびミドルボックス要素による転送動作およびサービス動作に影響する。他の例示的な動作は、上述のファイヤウォール動作、DNAT動作、DNS動作およびネットワークセグメンテーション動作を含む。これらの動作は後に詳述される。
【0091】
ある実施の形態では、VPNプロセッサ210および認証器215は、ホストコンピュータ上で実行されるVPNトンネル処理VMによって実装される。図11を参照して後に詳述されるように、このVPNトンネル処理VMは、他のゲストVM(GVM)、サービスVM(SVM)、被管理ソフトウエア転送要素(SFE)、および/またはハイパバイザベースのミドルボックスサービスモジュールと共に、そのホスト上で実行される。これらの実施の形態のいくつかでは、ルールプロセッサ220は、同じホストコンピュータ上で実行されるフィルタモジュールであり(例えば、ハイパバイザ提供フィルタモジュールであり)、このフィルタモジュールは、VPNトンネル処理VMのVNIC(仮想ネットワークインタフェースカード)によって、またはこのVNICに接続するホストのソフトウエアスイッチのポートによって、呼び出される。ある実施の形態では、このフィルタモジュールは、VPN VMがこれらのメッセージを脱カプセル化し、それらを内部ネットワークのネットワーク要素へ導く際に、そのモバイルデバイスデータメッセージを取得する。このアーキテクチャは、図12を参照して後に詳述される。
【0092】
図8は、ある実施の形態においてルールプロセッサ220が行うSNATプロセス800を示す。このプロセスは、VPNプロセッサ210が内部ネットワーク105へ渡すモバイルデバイスデータメッセージを調べる。上述のように、ある実施の形態では、ルールプロセッサ220はVPNトンネル処理VMのフィルタモジュールであり、それはVMから(例えば、VPN VMのVNICまたはその関連SFEポートから)出て行く経路上でこれらのデータメッセージを取得する。
【0093】
示されるように、VPNプロセッサが内部ネットワーク105へ渡すデータメッセージをルールプロセッサ220が受信したとき(805において)、プロセス800は始まる。プロセス800は次に、データメッセージが、該プロセス800が以前に処理したデータメッセージフローの一部であるか否かを判定する(810において)。ある実施の形態では、ルールプロセッサ220は、ルールプロセッサ220が処理するデータメッセージフローのそれぞれのレコードを含む接続ストレージを維持する。
【0094】
ある実施の形態では、接続ストレージ内のフローのレコードのそれぞれは、(1)フローに関連付けられたデータメッセージについてSNAT動作を行わなければならないか否かを示すブール値と、(2)もしそうであれば、データメッセージの既存のソース情報(例えば、既存のソースIPアドレスおよび/またはソースポート)を置き換えるために用いられるべきソース情報(例えば、新たなソースIPアドレスおよび/またはソースポート)と、を指定する。また、各フローのレコードはフロー識別子(例えば、フローの五つのタプル識別子)を指定する。ある実施の形態では、プロセス800は、データメッセージのフロー識別子(例えば、五つのタプル識別子)と、接続ストレージに保持されるレコードのフロー識別子と、を比較し、データメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを特定することによって、接続ストレージが受信されたデータメッセージのフローのレコードを含むか否かを判定する。
【0095】
受信されたデータメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを接続ストレージが保持するとプロセス800が判定(810において)した場合、プロセスは、マッチするレコードがSNAT動作を指定するか否かを判定(815において)し、もしそうであれば、マッチするレコードに含まれるソース情報に基づいてSNAT動作を行う(すなわち、データメッセージのソース情報をマッチするレコードによって指定されるソース情報で置き換える)。マッチするレコードが、SNAT動作が行われるべきでないことを指定する場合、プロセス800はデータメッセージが変更されずに通過することを許可(815において)する。815の後、プロセスは終了する。
【0096】
受信されたデータメッセージと同じフローの一部であるデータメッセージをプロセス800がこれまでに処理したことがないとプロセス800が判定(810において)した場合、プロセス800はMDM属性ストレージ240を調べ(820において)ることで、受信されたデータメッセージに関連付けられたMDM属性集合を特定する。ある実施の形態では、MDM属性ストレージ240は、各データメッセージフローのMDM属性集合を、そのフローの識別子(例えば、五つのタプル識別子)に基づいて、保持する。したがって、これらの実施の形態では、プロセス800は、メッセージのフロー識別子を用いてMDM属性ストレージ240のなかからマッチするフロー識別子を伴うレコードを見つけることによって、メッセージの関連MDM属性集合を特定(820において)する。上述の通り、他の実施の形態は、モバイルデバイスがそれを通じてメッセージを送信するところのトンネルの識別子を用いることで、メッセージの関連MDM属性集合を特定する。
【0097】
次に、825において、プロセス800は、受信されたデータメッセージのMDM属性集合についてのSNAT動作を指定するレコードをMDM属性ベースのルールストレージ235が含むか否かを判定する。ある実施の形態では、プロセス800は、データメッセージのMDM属性集合(820で特定されたもの)と、ルールストレージ235に保持されるレコードのMDM属性集合と、を比較し、データメッセージのMDM属性集合にマッチするMDM属性集合を伴うレコードをこのストレージが含むか否かを判定することによって、この判定をなす。上述のように、ルールストレージ235のルールのルール識別子は、メッセージフローヘッダ値に関して定義可能である。ある実施の形態では、MDM属性ストレージの各レコードは、SNAT動作と、SNAT動作中にデータメッセージのソース情報を置換するためのソース情報と、を指定する。ある実施の形態では、各レコードは、SNAT動作の非デフォルトソース情報を保持することによって、SNAT動作を暗示的に指定する。
【0098】
受信されたデータメッセージのMDM属性集合および/またはヘッダ値とマッチするMDM属性集合および/またはヘッダ値を伴うレコードをルールストレージ235が保持するとプロセス800が判定する(825において)場合、プロセスはこのマッチするルールのSNAT動作を行う(835において)。このSNAT動作は、データメッセージのソース情報(例えば、ソースIPアドレスおよび/またはソースポート)を、マッチするルールで指定されるソース情報で、置き換えることを伴う。835で、プロセス800は、データメッセージのフローに対して行わなければならないSNAT動作を指定するレコードを接続ストレージに生成し、同じフローの一部である後続して受信するデータメッセージのソース情報を置換するために用いられる必要があるソース情報(825においてルールストレージ235から特定されたもの)を保持する。835の後、プロセスは終了する。
【0099】
受信されたデータメッセージのMDM属性集合にマッチするMDM属性集合を伴うレコードをルールストレージ235が保持していないとプロセスが判定する(825において)場合、プロセスは、受信されたデータメッセージに対しても、同じフローの一部である他のデータメッセージに対しても、SNAT動作が行われてはならないと判定(825において)する。したがって、830で、プロセス800は、データメッセージのフローに対してSNAT動作が行われてはならないことを指定するレコードを接続ストレージに生成する。この場合、このレコードを用いることで、同じフローの一部である後続して受信するデータメッセージを素早く処理することができる。830の後、プロセスは終了する。
【0100】
ある実施の形態では、ルールストレージ235は、ルールストレージ内のそのほかのどのルールともマッチしないデータメッセージフローとマッチするキャッチオールルールを有する。これらの実施の形態では、キャッチオールルールは、このルールとのみマッチするデータメッセージフローについてはSNAT動作が行われてはならないことを指定する。したがって、これらの実施の形態では、プロセスは常に、ルールストレージ235においてひとつのマッチするルールを特定(825において)し、このルールによって指定されるSNAT動作(これは、SNAT動作なしを含む)を実行する。
【0101】
プロセス800がデータメッセージを解析(例えば、データメッセージのソース情報を変更せずに残す、またはデータメッセージのMDM属性集合に基づいてデータメッセージの元のソース情報を新たなソース情報で置き換えるSNAT動作を行う)した後、ルールプロセッサ220は内部ネットワーク内のメッセージの宛先へデータメッセージを転送するか、データメッセージがそのように転送されることを許可する。メッセージがネットワークを通じてその宛先へと進んでいくにつれて、ひとつ以上のネットワーク要素(例えば、ひとつ以上の転送要素またはミドルボックス要素)は、メッセージヘッダ内の挿入されたソースネットワークアドレスに基づいて定義された、ネットワークのひとつ以上のポリシーにしたがい、データメッセージを処理する。これらの動作の例は、ルーティング動作と、ファイヤウォール動作と、ネットワークアドレス変換動作と、他のミドルボックス動作と、を含む。
【0102】
図9は、ある実施の形態においてルールプロセッサ220が行うファイヤウォールプロセス900を示す。このプロセスは、VPNプロセッサ210が内部ネットワーク105へ渡すモバイルデバイスデータメッセージを調べる。上述のように、ある実施の形態では、ルールプロセッサ220はVPNトンネル処理VMのフィルタモジュールであり、それはVMから(例えば、VPN VMのVNICまたはその関連SFEポートから)出て行く経路上でこれらのデータメッセージを取得する。
【0103】
示されるように、VPNプロセッサが内部ネットワーク105へ渡すデータメッセージをルールプロセッサ220が受信したとき(905において)、プロセス900は始まる。プロセス900は次に、データメッセージが、該プロセス800が以前に処理したデータメッセージフローの一部であるか否かを判定する(910において)。ある実施の形態では、ルールプロセッサ220は、ルールプロセッサ220が処理するデータメッセージフローのそれぞれのレコードを含む接続ストレージを維持する。
【0104】
ある実施の形態では、接続ストレージ内のフローのレコードのそれぞれは、(1)フローに関連付けられたデータメッセージについてファイヤウォール動作を行わなければならないか否かを示すブール値と、(2)もしそうであれば、行われるべきファイヤウォール動作(例えば、許可や拒否)と、を指定する。また、各フローのレコードはひとつ以上のフロー識別子(例えば、フローの五つのタプル識別子)を指定する。ある実施の形態では、プロセス900は、データメッセージのフロー識別子(例えば、五つのタプル識別子)と、接続ストレージに保持されるレコードのフロー識別子と、を比較し、データメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを見つけることによって、接続ストレージが受信されたデータメッセージのフローのレコードを含むか否かを判定する。
【0105】
受信されたデータメッセージのフロー識別子にマッチするフロー識別子を伴うレコードを接続ストレージが保持するとプロセス900が判定(910において)した場合、プロセス900はこのレコードで指定されるファイヤウォールアクションを行う(915において)。915の後、プロセスは終了する。受信されたデータメッセージと同じフローの一部であるデータメッセージをプロセス900がこれまでに処理したことがないとプロセス900が判定(910において)した場合(すなわち、マッチするフロー識別子を伴うレコードをそれが特定できない場合)、プロセス900はMDM属性ストレージ240を調べ(920において)ることで、受信されたデータメッセージに関連付けられたMDM属性集合を特定する。ある実施の形態では、MDM属性ストレージ240は、各データメッセージフローのMDM属性集合を、そのフローの識別子(例えば、五つのタプル識別子)に基づいて、保持する。したがって、これらの実施の形態では、プロセス900は、メッセージのフロー識別子を用いてMDM属性ストレージ240のなかからマッチするフロー識別子を伴うレコードを見つけることによって、メッセージの関連MDM属性集合を特定する。ある実施の形態では、プロセス900は、MDM属性ストレージ240内のレコードを見つけるために、データメッセージがそれを通じて受信されたところのトンネルの識別子を、合わせてまたは代替的に用いる。
【0106】
次に、925において、プロセス900は、データメッセージの特定されたMDM属性集合および/またはフロー識別子(例えば、L2-L4値)を用いて、ルールストレージ235内のファイヤウォールルールを特定する。ある実施の形態では、ルールストレージ235は、ルールストレージ内のそのほかのどのルールともマッチしないデータメッセージフローとマッチするキャッチオールルールを有する。プロセス900は次いで、925で特定されたルールのファイヤウォールアクション(許可や拒否)を行う(930において)。930で、プロセスはまた、データメッセージのフローのレコードを接続ストレージに生成する。930の後、プロセスは終了する。
【0107】
図10は、ある実施の形態におけるルールプロセッサ220のマイクロセグメンテーションプロセス1000を示す。このプロセスは、受信されたモバイルデバイスデータメッセージを、内部ネットワーク105の共有ネットワーク要素により実装される論理ネットワークに、割り当てる。プロセス1000は、それが1015、1025、および1030で行うアクションを除いて、プロセス900と同様である。
【0108】
1015において、受信されたデータメッセージが以前に評価したフローの一部であるとプロセス1000が判定(910において)した場合、マイクロセグメンテーションプロセス1000は、そのデータメッセージを、接続ストレージ内の以前に生成されたレコードからそれが特定する論理ネットワーク識別子と関連付ける。ある実施の形態では、接続ストレージのレコードはまた、トンネルヘッダ内のLNIと共にデータメッセージを送信するために用いるトンネルを特定する。1015において、プロセスは、論理ネットワーク(これは、関連LNIにより特定される)に関連付けられたネットワーク要素へのトンネルを選択し、メッセージをトンネルのヘッダでカプセル化し、トンネルヘッダにLNIを挿入し、データメッセージをトンネルに沿ってネットワーク要素へ転送する。
【0109】
1025において、以前に評価したフローの一部ではないデータメッセージについてのMDM属性集合をプロセスが特定した後、セグメンテーションプロセス1000は、プロセスが920でデータメッセージに対して特定したMDM属性集合を用いることで、ルールストレージ700において、データメッセージに対する論理的ネットワーク識別子(例えば、VNIおよび/または仮想分散ルータ、VDRI)を特定する。上述の通り、ある実施の形態では、このLNIを指定するレコードの特定は、受信されたデータメッセージのヘッダ値に基づくことができる。また、上述の通り、ルールストレージ700のレコードは、レコードによって指定されるLNIに関連付けられた論理オーバレイネットワークのために使用可能なひとつ以上のトンネルの集合を指定する。
【0110】
1030で、プロセス1000は1025で特定されたレコードによって特定されるトンネルを選択する。このトンネルは、論理ネットワーク識別子に関連付けられた論理ネットワークに関連付けられたネットワーク要素へのものである。1030で、プロセス1000はメッセージをトンネルのヘッダでカプセル化し、トンネルヘッダに1025で特定されたLNIを挿入し、データメッセージをネットワーク要素へ転送する。1030で、プロセスはまた、データメッセージのフローについてのレコードを接続ストレージに生成し、フローの識別子と共にLNIおよびトンネル識別子をこのレコードに格納する。
【0111】
上述の通り、ある実施の形態では、VPNゲートウエイ205は、(1)ひとつ以上の他のVMと共にホストコンピュータ上で実行されるVPN VMと、(2)VPN VMの関連サービスモジュールと、を実装している。図11は、複数のホスト1105上で実行されている、複数のそのようなVPN VM1110およびサービスモジュール1120を有するデータセンタ1100を示す。このデータセンタでは、各ホストがVPN VMを実行する必要はなく、データセンタ1100の複数のホストがひとつのVPN VMを実行する。
【0112】
各VPN VM1110はひとつ以上のサービスモジュール1120と対をなし、これによりVPNゲートウエイ205のようなVPNゲートウエイが実装される。この実装では、VPN VMと対をなすサービスモジュールはルールプロセッサ220として動作する。この実装によると、複数のVPNゲートウエイを複数のホストコンピュータ上に確立することができ、それにより分散VPNゲートウエイアーキテクチャを確立することができる。この分散アーキテクチャでは、複数のVPNゲートウエイは複数のホストコンピュータ上で動作することで、データセンタ1100においてVPNトラフィック負荷を共有することができる。また、この分散アーキテクチャでは、VPNゲートウエイはデータセンタの入来物理エッジに配置される必要はない。これらのVPNゲートウエイは、他のVMが実行されるデータセンタ内の共有ホストコンピュータに亘って分散可能であるからである。
【0113】
図11に示されるように、各ホストコンピュータ1105は、(1)データセンタ1100のひとつ以上のテナントに対して計算動作(例えば、ウェブサーバ動作、アプリケーションサーバ動作、データベースサーバ動作)を行うひとつ以上のゲストVM(GVM)1102、および/または(2)GVM1102により送信されるまたはそれへと送信されるデータメッセージについてのサービス動作(例えば、ファイヤウォール動作、負荷分散動作等)を行うひとつ以上のサービスVM(SVM)1104、を実行することができる。ある実施の形態では、データセンタ1100は企業の専用データセンタであり、そのテナントの全てがある主体(例えば、ある会社)に属する。他の実施の形態では、データセンタは多くの異なる無関係なテナントにより使用される共用データセンタである。
【0114】
各ホストコンピュータ1105はまた、ソフトウエアスイッチやソフトウエアルータなどのひとつ以上のソフトウエア転送要素1130を実行する。ソフトウエア転送要素(SFE)は、そのホストコンピュータ1105上のVMを接続し、これらのVMとホストの外側の他のデバイス(例えば、他のVM)とを接続する。各ホストはまた、暗号化動作、論理的セグメンテーション動作、ファイヤウォール動作、負荷分散動作、および/または他のミドルボックスサービス動作などのひとつ以上のサービスアクションを行うひとつ以上のサービスモジュール1120を実行する。
【0115】
ある実施の形態では、ひとつ以上のサービスモジュール1120は、関連VPN VM1110についてのMDMルールプロセッサ220として機能する。そのようなルール処理サービスモジュールは、VPNゲートウエイのMDMベースの処理動作(例えば、ソースネットワークアドレス変換、ファイヤウォール動作、等)を行う。そのようなサービスモジュール1120は、その関連VPN VMがこれらのメッセージを脱カプセル化し、それらをネットワークの内部ネットワーク要素へ導く(例えば、それらをデータメッセージ内の宛先タプルによって特定される宛先ノードに導く、またはそれらを他の宛先ノードへリダイレクトする)際に、そのモバイルデバイスデータメッセージを取得する。図12を参照して後に詳述されるように、ある実施の形態のサービスモジュール1120は、VMの仮想ネットワークインタフェースカード(VNIC)またはこのVNICに接続するホストのSFEのポートによって呼び出されたフィルタモジュールである。
【0116】
サービスモジュール1120は、サービスルールストレージ1125に保持されるサービスルールに基づいて、自身のサービス動作を行う。ある実施の形態では、複数のこれらのサービスルールは、MDM属性集合に関して定義されたルール識別子を含む。ある実施の形態では、サービスモジュールは、データメッセージフローのMDM属性集合を、そのホスト上のMDM属性データストレージ1135から、取得し、取得されたMDM属性集合を用いて、サービスルールストレージ1125のなかから処理対象のサービスルールを特定する。
【0117】
図11に示されるように、ひとつ以上のエージェント1140は各ホストコンピュータ1105上で実行され、種々のコントローラ(すなわち、種々の管理サーバ)と相互作用する。これらのコントローラは、図1および2を参照して説明されたネットワークコントローラ115およびMDMコントローラ120を含む。これらのコントローラはまた、ホスト上にGVMおよび/またはSVMを提供および展開するVM管理コントローラ1150を含む。エージェント1140は、これらのコントローラ115、120および1150とやりとりすることで、GVM、SVMおよびサービスモジュールを提供し、設定する。これらのエージェント1140はまた、ネットワークコントローラ115およびMDMコントローラ120とやりとりすることで、サービスルールおよびMDM属性集合を受信する。示されるように、データセンタのネットワーク105は、全てのホストおよびコントローラを通信可能に接続する。
【0118】
図12は、ある実施の形態のホストコンピュータ1200のソフトウエアアーキテクチャをより詳細に示す。このより詳細な図はサービスモジュールをフィルタモジュールとして挿入することを示しており、該フィルタモジュールはホスト上で実行されているVMと対をなすことで、そのVMへのデータメッセージおよび/またはそのVMからのデータメッセージを取得する。後に詳述されるように、これらのサービスモジュールのひとつ以上は、VPN VM1110のルールプロセッサ220として機能する。
【0119】
図11のホスト1105のように、ホストコンピュータ1200は、(1)ひとつ以上のGVM1102と、(2)ひとつ以上のSVM1104と、(3)VPN VM1110と、(4)SFE1130と、(5)ひとつ以上のサービスモジュール1120と、(6)エージェント1140と、(7)MDM属性ストレージ1135と、を含む。示されるように、ホスト1200はまた、ホストレベルルールストレージ1215と、ルールパブリッシャ1220と、接続状態ストレージ1232と、MDM属性ルールストレージ1226と、フローヘッダルールストレージ1227と、を含む。ルールストレージ1226および1227は合わせて図11のサービスルールストレージ1125として機能する。
【0120】
SFE1130はホスト1200上で実行され、ホストの物理NIC(PNIC)およびホストの外側で動作するひとつ以上の転送要素(例えば、スイッチおよび/またはルータ)を通じて、ホストのVMを互いに、およびホストの外の他のデバイス(例えば、他のホスト上の他のVM)と、通信可能に結合させる。示されるように、SFE1130は、ホストのPNIC(不図示)に接続するポート1230を含む。各VMについて、SFE1130はまた、VMのVNIC1225に接続するポート1235を含む。ある実施の形態では、VNICはPNICのソフトウエア抽象化であり、仮想化ソフトウエアによって(例えば、ハイパバイザによって)実装される。各VNIC1225は、その対応するSFEポート1235を通じたそのVMとSFE1130との間のパケット交換について責を負う。示されるように、VMのデータメッセージが出て行くデータ経路は、(1)VMのVNIC1225と、(2)このVNICに接続するSFEポート1235と、(3)SFE1130と、(4)ホストのPNICに接続するSFEポート1230と、を含む。VMの入来データ経路は順番が逆であることを除いて同じである(すなわち、まずポート1230で、次にSFE1130、次にポート1235、そして最後にVNIC1225)。
【0121】
ある実施の形態では、SFE1130はソフトウエアスイッチであり、他の実施の形態では、それはソフトウエアルータであり、またはソフトウエアスイッチ/ルータの組み合わせである。ある実施の形態では、SFE1130は、マルチホスト環境において他のホストで実行されるSFEと共にひとつ以上の論理転送要素(例えば、論理スイッチや論理ルータ)を実装する。ある実施の形態では、論理転送要素は複数のホストに跨がることによって、異なるホストで実行されているがひとつの論理ネットワークに属する複数のVMを接続することができる。言い換えると、異なる論理転送要素を、異なるユーザに対する異なる論理ネットワークを指定するものとして定義することができ、各論理転送要素は複数のホスト上の複数のSFEによって定義されうる。各論理転送要素は、他の論理転送要素により扱われる他の論理ネットワークのVMから、ある論理ネットワークのVMのトラフィックを隔離する。論理転送要素は、同じホストおよび/または異なるホスト上で実行されるVMを接続することができる。
【0122】
ポート1230およびNICドライバ(不図示)を通じて、SFE1130はホストのPNICに接続し、出て行くパケットを送信し、かつ、入来パケットを受信することができる。SFE1130は、それが自身のポートのうちのひとつで受信したメッセージを自身のポートのうちの別のひとつに転送するためのメッセージ処理動作を行う。例えば、ある実施の形態では、SFEはデータメッセージ内のヘッダ値を用いて、そのメッセージをフローベースルールにマッチさせることを試みる。そして、マッチが見つかると、SFEはそのマッチするルールにより指定されるアクションを行う(例えば、そのポート1230または1235のうちのひとつにパケットを渡す、ここでそのポートはパケットが宛先VMやPNICに供給されるよう導く)。ある実施の形態では、SFEはデータメッセージから論理ネットワーク識別子(例えば、VNI)およびMACアドレスを抽出する。これらの実施の形態では、SFEは抽出されたVNIを用いることで論理ポートグループを特定し、次いで、MACアドレスを用いることでそのポートグループ内のあるポートを特定する。
【0123】
ある実施の形態では、SFEポート1235は、ポートで受信された入来パケットおよび出て行くパケットに対する特別な入出力(I/O)動作を実装するひとつ以上のサービスモジュール1120に対するひとつ以上のファンクションコールを含む。そのようなI/O動作の例は、ミドルボックス動作(例えば、ファイヤウォール動作、負荷分散動作、DNAT動作、DNS再ルーティング動作等)、ARPプロキシ動作、メッセージカプセル化動作(例えば、オーバレイ論理ネットワーク動作を実装するトンネルに沿ってメッセージを送信するために必要なカプセル化動作)等を含む。ある実施の形態では、そのようなファンクションコールのスタックを実装することによって、ポートは入来メッセージおよび/または出て行くメッセージに対するI/O動作のチェーンを実装することができる。ポート1235からI/Oオペレータ(サービスモジュール1120を含む)を呼び出すことの代わりに、他の実施の形態はこれらのオペレータをVMのVNICから、またはSFEのポート1230から、呼び出す。
【0124】
サービスモジュール1120のサービス動作の三つのタイプは、VPN VM1110によって渡されるモバイルデバイスデータメッセージのMDM属性ベース処理に特に関連する。これらは以下の通り:(1)VPN VMを実行するホスト上で行われるMDM属性ベースのサービス動作、(2)トンネルのトンネルヘッダにMDM属性集合を挿入するトンネルカプセル化動作、ここでモバイルデバイスデータメッセージを他のサービスノードへ転送するためにMDM属性集合がインバンドで転送されうる、および(3)これらの他のサービスノードによって、インバンド送信されたMDM属性集合に基づいて、データメッセージに対して行われるサービス動作。
【0125】
ある実施の形態では、サービス動作の第1のタイプは、VPN VM1110のサービスモジュール1120が、それがVPN VMの出て行くデータ経路から傍受したデータメッセージに対してMDM属性ベースのサービス動作を行うことを含む。これらの実施の形態のいくつかでは、複数のサービスモジュール1120をVPN VMに関連付けてもよく、これらのサービスモジュールは、それらがVPN VMの出て行くデータ経路から傍受したデータメッセージに対して異なるMDM属性ベースのサービス動作を行うことができる。そのような状況では、VPN VMのVNIC1225に接続されたSFEポート1235は、VPN VMから受信したデータメッセージについて処理するファンクションコールリストを段階的に進んでいくにつれて、MDM属性処理サービスモジュールを呼び出す。
【0126】
新たなデータフローのデータメッセージについて、VPN VM1110のサービスモジュール1120は、まず属性ストレージ1135からメッセージのMDM属性集合を取得することによって、MDM属性ベースのサービス処理を行う。ある実施の形態では、VPN VM1110は、リモートデバイスから、および/またはMDMサーバからインバンドで(例えば、認証プロセスの一部として)MDM属性データを取得した後、このMDM属性集合のいくつかまたは全てをストレージ1135に格納する。合わせて、または代替的に、エージェント1140は、認証プロセスの一部としてMDMサーバからOOBで(アウトオブバンドで)このデータを取得すると、MDM属性集合のいくつかまたは全てをMDMストレージ1135に格納する。
【0127】
ある実施の形態は、メッセージフローヘッダ値に基づいて、MDM属性集合をMDM属性ストレージ1135に格納する。したがって、これらの実施の形態では、サービスモジュール1120は、メッセージのフローヘッダ値を用いてフロー値のマッチする集合を伴うMDM属性集合を特定することで、ストレージ1135からメッセージのMDM属性集合を取得する。メッセージのMDM属性集合を取得した後、VPN VMのサービスモジュール1120はこの属性集合および/またはメッセージのフローヘッダ値(例えば、L2-L7パラメータ)を用いることで、ルールストレージ1226/1227からデータメッセージを処理するためのサービスルールを特定する。ある実施の形態では、ストレージ1226および1227の両方はサービスルールのただひとつのコピーを保持するが、異なるインデックス構造を用いることで、データメッセージのフローヘッダ値およびMDM属性値にマッチするルールを素早く特定することができる。ある実施の形態は、フローヘッダ値について基数木インデックス構造を用い、MDM属性についてMDM属性木構造を用いる。これらの構造は後に詳述される。
【0128】
サービスモジュール1120は次いで、特定されたサービスルールに基づいてメッセージに対してサービスを行い、それが行ったサービスルールおよび/または動作のレコードを接続状態ストレージ1232に生成する。サービスモジュール1120は次いで、接続ストレージ内のこのレコードを用いることで、同じデータメッセージフローの一部である他のデータメッセージを処理することができる。サービス動作がデータメッセージの廃棄を要求していない場合、サービスモジュール1120は次いでデータメッセージをVPN VMの関連SFEポート1235に戻し、その結果、データメッセージは次のサービスモジュール1120によって処理されうるか、またはデータメッセージはSFE1130によってその宛先へ転送されうる。
【0129】
示されるように、サービスルールはパブリッシャ1220によってルールストレージ1226および1227に分配される。ある実施の形態では、エージェント1140はネットワークコントローラからフローベースのルールおよびMDM属性ベースのルールを受信し、これらのルールをホストレベルルールストレージ1215に格納する。ある実施の形態では、パブリッシャ1220は次いで、MDM属性ベースルールストレージおよびフローベースルールストレージ1226および1227内の異なるテーブルに、これらのルールを格納する。他の実施の形態は、異なるサービスモジュールに対して異なるルールストレージ1226および1227(および接続状態ストレージ1232)を指定する。これらの実施の形態では、パブリッシャ1220は、サービスモジュール1120についてのサービスルール集合を、サービスモジュールに対応するMDM属性ベースルールストレージおよびフローベースルールストレージ1226および1227に分配する。
【0130】
MDM属性ベースの処理に関連するサービス動作の二つの他のタイプは、データメッセージの関連MDM属性を他のサービスノード(例えば、SVMや他のホスト上のサービスモジュールやスタンドアローンサービス機器)へインバンドで転送し、他のサービスノードがデータメッセージに対してMDM属性ベースの処理を行う実施の形態についてのものである。そのような実施の形態では、サービス動作の第2のタイプは、ホスト1200のSFE1130とサービスノードとの間のトンネルのトンネルヘッダでデータメッセージをカプセル化するVPN VM1110のサービスモジュール1120を含み、該サービスノードは、データメッセージに対してMDMベースの処理を行うか、またはMDMベースの処理を行うサービスノードへデータメッセージを転送する。データメッセージをカプセル化する際、サービスモジュール1120はトンネルのヘッダにデータメッセージのMDM属性集合を挿入する。ある実施の形態では、トンネルは、可変長ヘッダを有しうるGeneveまたはVXLANトンネルである。
【0131】
ある実施の形態では、MDM属性が他のホストで実行されるサービスモジュールへ送信される場合、トンネルは二つのホストのSFE間のものである。また、ある実施の形態では、データメッセージの特定された宛先およびそのMDM属性はサービスモジュールではなく、サービスモジュールの関連VMである。いずれにせよ、サービスモジュールは、データがそのVMに渡されることを許す前に、受信されたデータメッセージのMDM属性に基づいて、そのサービス動作を行う。
【0132】
ある実施の形態では、サービスノードがトンネルに沿ってデータメッセージおよびそのMDM属性集合を受信すると、サービスノードはトンネルヘッダを脱カプセル化し、トンネルヘッダからMDM属性集合をパースし、MDM属性集合を(例えば、MDM属性ストレージ1135に)格納する。ある実施の形態では、データメッセージの宛先ノード(例えば、宛先GVM)に関連付けられたサービスモジュール1120は、(1)宛先ノードの入来データ経路に沿ってデータメッセージを傍受することによる脱カプセル化動作と、(2)トンネルヘッダから取得されたMDM属性をMDM属性ストレージに格納するためのストレージ動作と、を行う。ある実施の形態では、この脱カプセル化サービスモジュールは、宛先ノードを実行するホストのSFEのポート1230または1235のいずれかによって呼び出される。
【0133】
この脱カプセル化サービスモジュールまたは宛先ノードの入来データ経路における他のサービスモジュールは、リモートデバイスデータメッセージに対するMDM属性ベースの処理の第3のタイプを行う。特に、このサービスモジュールは、トンネルヘッダ脱カプセル化の後に属性集合が格納された先のストレージ1135からメッセージのMDM属性集合を取得し、この属性集合および/またはフローヘッダ値を用いて、ルールストレージ1226/1227からデータメッセージを処理するためのサービスルールを特定する。
【0134】
ある実施の形態では、このサービスモジュール1120は、データメッセージフローのあるデータメッセージを処理した後にそのデータメッセージフローに対して行うべきサービスルールおよび/または動作を、接続ストレージ1232に格納する。フローの後続データメッセージについて、サービスモジュール1120は、ルールデータストレージ1226および1227から実行対象のサービスルールを探す代わりに、このサービスルールおよび/または動作を用いる。
【0135】
同様に、ある実施の形態では、カプセル化サービスモジュールおよび脱カプセル化サービスモジュールは、フロー内の各データメッセージについて、データメッセージのMDM属性集合を挿入および/またはパースしない。例えば、ある実施の形態では、これらのモジュールは、フロー内の最初のデータメッセージのみについて、または最初のいくつかのデータメッセージのみについて、これらの動作を行う。ある実施の形態では、これは、リモートデータメッセージフローのMDM属性集合がフローのなかで変わることはないからである。他の実施の形態では、MDM属性集合はフローのなかで変化しうる。したがって、これらの実施の形態では、カプセル化および/または脱カプセル化サービスモジュールは、データメッセージフローのMDM属性集合を、繰り返し、周期的に、またはときどき、挿入および/またはパースする。これらの実施の形態では、脱カプセル化サービスモジュールは、必ずしも、データメッセージフローについて接続ストレージ1232において以前に生成されたレコードに依拠してよいわけではない。これは、そのデータメッセージフローについてのレコードを新たなMDM属性集合に基づいて更新しなければならないかもしれないからである。
【0136】
異なる実施の形態は、MDM属性ベースのサービス処理の異なる組み合わせを用いる。ある実施の形態は、VPN VMと同じホストで実行されるサービスモジュールにおいてのみ、MDM属性ベースのサービス処理を行い、VPN VMの出て行くデータ経路に沿ってデータメッセージを取得する。他の実施の形態は、トンネルを通じてVPN VMのホストと接続し、そのトンネルを通じてVPN VMのサービスモジュールからインバンドでMDM属性集合を受信するデバイスで実行されるサービスノードにおいてのみ、MDM属性ベースのサービス処理を行う。さらに他の実施の形態は、VPN VMのサービスモジュールにおいてあるMDM属性ベースのサービス処理を行い、一方で、VPN VMのサービスモジュールによってインバンドに沿って渡されたMDM属性集合に基づいて、別個のデバイスにおいて他のMDM属性ベースのサービス処理を行う。
【0137】
また、ある実施の形態では、VPN VMと同じか異なるホストで実行されるSVM1104は、VPN VMがネットワークに渡したデータメッセージのMDM属性集合に基づいて、MDM属性ベースのサービス処理を行う。これらの実施の形態のいくつかでは、SVM1104はMDM属性ストレージ1135に対する直接的なアクセスまたは間接的なアクセス(例えば、APIを通すもの)を有し、またはこのストレージ1135のレコードはSVM1104のストレージのレコードと同期される。
【0138】
MDM属性ベースのサービス動作を行うことのいくつかの例が図13-24を参照して説明される。図13-20は例の第1集合を示し、そこではサービス動作がVPN VMのサービスモジュールによって行われる。図21-24は例の第2集合を示し、そこではサービス動作がVPN VMを実行するホスト上にはないサービスノードによって行われる。例の第2集合では、VPN VMのサービスモジュールは、MDM属性集合をインバンドでサービスノードへ転送する(すなわち、サービスモジュールがVPN VMによって出力されたデータメッセージをサービスノードへ転送する際に、MDM属性集合をトンネルヘッダ内にカプセル化する)。
【0139】
図13は、VPN VMのサービスモジュールがモバイルデバイスに関連付けられた位置に基づいてDNAT動作を行う際の二つの異なるやり方を示す。本例における二つのモバイルデバイス1302および1304はある主体(例えば、ある会社)の一部であるが、二つの異なる領域(例えば、二つの異なる国、米国および独国など)にあるオフィスに関連付けられる。また、本例では、データセンタ1300は第1モバイルデバイス1302の第1領域に関連付けられ、両方のモバイルデバイスはそれらがデータセンタ1300にアクセスするときに第1領域にある。
【0140】
規則、安全性または他の理由により、第2モバイルデバイス1304は、データセンタ1300のうち、第1モバイルデバイス1302と同じデータ計算ノード(DCN)のクラスタにアクセスすべきではない。したがって、VPN VM1110がモバイルデバイスとのVPN接続を確立すると、VPN VM1110は、モバイルデバイスからのデータメッセージがデータメッセージの宛先タプルによって特定されるDCNへと通過していくことを許可する。本例では、データメッセージの宛先IPアドレスは、DCNクラスタ(例えば、ウェブサーバクラスタやアプリケーションサーバクラスタ)に関連付けられた仮想IP(VIP)アドレスである。
【0141】
VPN VMのサービスモジュール1320は、VPN VMの出て行くデータ経路からデータメッセージを傍受する。それが第1モバイルデバイス1302からのデータメッセージを最初に傍受するとき、DNATサービスモジュール1320はMDM属性データストレージ1135(不図示)から、このデータメッセージに関連付けられたMDM属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、MDM属性集合を取得する。
【0142】
サービスモジュール1320は次いで、このMDM属性集合を用いることで、MDM属性ルールストレージ1226(不図示)において、取得されたMDM属性集合にマッチするルール識別子を有するDNATルールを特定する。このルールは、第1モバイルデバイス1302のデータメッセージについてはDNAT動作を行う必要はないことを指定する。これは、第1モバイルデバイス1302は、第1領域にある、第1領域に関連付けられたモバイルデバイス用のDCNサーバクラスタ1325にアクセスすることができるからである。したがって、サービスモジュール1320はデータメッセージを再ルーティングするためのDNAT動作を行わず、第1モバイルデバイスからのデータメッセージがDCNサーバクラスタ1325へと通過していくことを許す。サービスモジュール1320はまた、この動作のレコードをその接続ストレージに生成する。その結果、それは、このレコードを用いることで、同じフローの一部である第1モバイルデバイスからの後続メッセージを素早く処理することができる。
【0143】
DNATサービスモジュール1320が第2モバイルデバイス1304からのデータメッセージを最初に傍受するとき、このサービスモジュールは再び、MDM属性データストレージ1135(不図示)から、このデータメッセージに関連付けられたMDM属性集合を取得し、このMDM属性集合を用いることで、MDM属性ルールストレージ1226(不図示)においてDNATルールを特定するしかしながら、この場合、特定されたルールは、第2モバイルデバイス1304のデータメッセージに対して、第1領域にあるDCNサーバクラスタ1330にそのデータメッセージを再ルーティングするために、DNAT動作を行う必要があることを指定する。DCNサーバクラスタ1330は、この領域内の他のDCNサーバクラスタおよび他のリソースから隔離されているが、これは特に第1領域のデータセンタリソースにアクセスする第2領域モバイルデバイスによるセキュアかつプライベートな使用のためのものである。ある実施の形態では、隔離されたDCNサーバクラスタ1330は、種々のファイヤウォール機器および/または他のセキュリティデバイスによってデータセンタ1300内の他のリソースから保護されている。
【0144】
ある実施の形態では、第2モバイルデバイスのデータメッセージを隔離されたDCNサーバクラスタ1330に再ルーティングするために、DNATサービスモジュール1320は、データメッセージの宛先IPアドレスフィールドにおいて、第1DCNサーバクラスタ1325のVIPを第2DCNサーバクラスタ1330のVIPで置き換える。サービスモジュール1320はまた、この動作のレコードをその接続ストレージに生成する。その結果、それは、このレコードを用いることで、同じフローの一部である第2モバイルデバイス1304からの後続メッセージを素早く処理することができる。
【0145】
第2モバイルデバイス1304のデータメッセージを、データセンタ1300内の第1領域の第2DCNサーバクラスタ1330へと再ルーティングすることに代えて、ある実施の形態は、データメッセージを第2領域内または他の領域内のDCNサーバクラスタに再ルーティングする。図14は、そのような例のひとつを示す。特に、この図は、データセンタ1400の外の第2モバイルデバイス1304のデータメッセージを、第1領域内のデータセンタDCNクラスタ1325にアクセスする第2領域モバイルデバイスについてのDCNサーバクラスタ1430へと再ルーティングする、MDM属性ベースのDNAT動作を行うVPN VMのサービスモジュール1420を示す。ある実施の形態では、DCNサーバクラスタ1430は第2領域内にあるが、他の実施の形態ではそれは他の領域内にある。ある実施の形態では、DNAT再ルーティング動作は、トンネルを用いることで、第2モバイルデバイスのデータメッセージをデータセンタ1300からDCNサーバクラスタ1430へ転送する。
【0146】
図15および16は、MDM属性ベースの再ルーティング動作の他の二つの例を示す。これらの例では、再ルーティング動作はDNSネームクエリをリダイレクトする。図15は、モバイルデバイスデータメッセージをリダイレクトするVPN VMのサービスモジュールを示し、モバイルデバイスデータメッセージがそのデータメッセージを送ったモバイルデバイスの関連領域に基づいて、二つの異なるDNSサーバへのDNSルックアップを要求する。以前と同様に、本例の二つのモバイルデバイス1302および1304は二つの異なる領域(例えば、二つの異なる国、米国および独国など)に関連付けられているが、それらがデータセンタ1500にアクセスするときにはそれら両方が第1領域に位置しており、データセンタ1500は第1モバイルデバイス1302の第1領域に関連付けられる(例えば、第1領域内にある)。また、本例では、規則、安全性または他の理由により、第2領域に関連付けられた第2モバイルデバイス1304は、第1領域に関連付けられた第1モバイルデバイス1302とは異なるDNSサーバにアクセスしなければならない。
【0147】
VPN VM1110がモバイルデバイスとのVPN接続を確立すると、VPN VM1110はDNSネームクエリを受信し、データセンタのデフォルトDNSサーバ1525へと通過することを許す。VPN VMのサービスモジュール1520は両方のモバイルデバイス1302および1304についてのDNSネームクエリを傍受する。ある実施の形態では、サービスモジュール1520は、データメッセージの宛先タプル(例えば、宛先ポート)に基づいて、データメッセージがDNS関連メッセージであると判定する。他の実施の形態では、VPN VMまたはサービスモジュールはソフトターミネーションを行う。この場合、それはパケットを調べることで、パケット内のDNAネームクエリを特定することができる。
【0148】
それが第1モバイルデバイス1302からのデータメッセージを最初に傍受するとき、サービスモジュール1520はMDM属性データストレージ1135(不図示)から、このデータメッセージに関連付けられたMDM属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、MDM属性集合を取得する。サービスモジュール1520は次いで、このMDM属性集合を用いることで、MDM属性ルールストレージ1226(不図示)において、取得されたMDM属性集合にマッチするルール識別子を有するDNSルールを特定する。このルールは、第1モバイルデバイス1302のデータメッセージについてはDNS再ルーティング動作を行う必要はないことを指定する。これは、第1モバイルデバイス1302は第1領域に関連付けられており、第1領域のDNSサーバ1525にアクセスすることができるからである。したがって、サービスモジュール1520は、第1モバイルデバイス1302からのデータメッセージが変更されずにDNSサーバ1525へと通過することを許す。
【0149】
サービスモジュール1520が第2モバイルデバイス1304からのデータメッセージを最初に傍受するとき、このサービスモジュール1520は再び、MDM属性データストレージ1135(不図示)から、このデータメッセージに関連付けられたMDM属性集合を取得し、このMDM属性集合を用いることで、MDM属性ルールストレージ1226(不図示)においてDNSルールを特定するしかしながら、この場合、特定されたルールは、第2モバイルデバイス1304のDNSネームクエリに対して、第1領域にあるDNSサーバ1530にそのデータメッセージを再ルーティングするために、DNS再ルーティング動作を行う必要があることを指定する。DNSサーバ1530は、第1領域のデータセンタ1500にアクセスする第2領域モバイルデバイスのためのものである。
【0150】
ある実施の形態では、規則に準拠するため、セキュリティのため、または第2領域モバイルデバイスについての他の基準のために、第2領域のDNSサーバ1530は、第1領域のDNSサーバ1525とは異なる態様でひとつ以上のDNSネームクエリを解決してもよい。ある実施の形態では、第2モバイルデバイスのDNSネームクエリを再ルーティングするために、サービスモジュール1520は、DNSネームクエリメッセージ内の宛先IPアドレスを、DNSサーバ1525の宛先IPアドレスから、DNSサーバ1530の宛先IPアドレスに置き換える。
【0151】
第2モバイルデバイス1304のDNSネームクエリを、データセンタ1500内の第1領域の第2DNSサーバ1530へと再ルーティングすることに代えて、ある実施の形態は、このデータメッセージを第2領域内または他の領域内のDNSサーバに再ルーティングする。図16は、そのような例のひとつを示す。特に、この図は、データセンタ1600の外の第2モバイルデバイス1304のDNSネームクエリを、第1領域内のデータセンタDNSサーバにアクセスする第2領域モバイルデバイスについてのDNSサーバ1630へと再ルーティングする、MDM属性ベースのDNS動作を行うVPN VMのサービスモジュール1620を示す。ある実施の形態では、DNSサーバ1630は第2領域内にあるが、他の実施の形態ではそれは他の領域内にある。ある実施の形態では、DNS再ルーティング動作は、トンネルを用いることで、第2モバイルデバイスのデータメッセージをデータセンタ1600からDNSサーバ1630へ転送する。
【0152】
トンネルを通じて受信されたモバイルデバイスデータメッセージに関連付けられたMDM属性集合に基づいてある実施の形態のVPNゲートウエイが行う他の処理動作の一例は、ネットワークマイクロセグメンテーションである。ある実施の形態は、ネットワークのネットワーク要素(例えば、転送要素、ミドルボックス要素など)の共有集合上に複数の論理ネットワークを実装する。ある実施の形態では、各論理ネットワークは、下層の物理的トポロジから切り離されたオーバレイネットワークとして実装される。ある実施の形態では、オーバレイネットワークは、論理ネットワーク識別子(例えば、仮想ネットワーク識別子、VNI)を用いることによって、および、ネットワーク内の管理されているネットワーク要素間のトンネルを用いることによって、生成される。
【0153】
論理ネットワーク構成のコンセプトを示すために、図17は、論理オーバレイネットワーク1705、1710および1715の例を示し、そのようなネットワークは、(1)ホスト1730の共有集合上で実行されるソフトウエア転送要素1720およびサービスモジュール1725の共有集合に亘って、かつ(2)複数のスタンドアローンな共有転送要素1735および共有ミドルボックス要素(または、サービス機器)1740に亘って、定義される。特に、この図は、いくつかのホスト1730で実行される多くのGVMを示し、いくつかのホスト1730はそれぞれソフトウエア転送要素1720およびサービスモジュール1725を実行する。
【0154】
共有ソフトウエア転送要素1720およびスタンドアローン共有転送要素1735(例えば、トップオブラックスイッチ(TOR))は、任意の数の論理スイッチ1750および論理ルータ1755を実装可能である。示されるように、ある論理ネットワーク(例えば、ネットワーク1715)は複数の論理スイッチおよび/または論理ルータを有することができ、一方、他の論理ネットワーク(例えば、ネットワーク1705)はただひとつの論理転送要素(例えば、論理スイッチ)を有することができる。ひとつの論理転送要素は、異なるホスト上のVMを通信可能に接続する。例えば、図17は、ホスト1730aおよび1730bで実行されるGVM1および2を接続する論理スイッチ1750aを示し、一方で、論理スイッチ1750bはこれら二つのホストで実行されるGVMnとGVMxとを接続する。
【0155】
論理転送要素またはひとつの論理ネットワークの要素は、そのネットワークのVM(すなわち、それが相互に接続するGVMおよびSVM)の間のデータメッセージ通信を、他の論理ネットワークのVMの間のデータメッセージ通信から隔離する。ある実施の形態では、この隔離は、論理ネットワークのVMの間で通信されるデータメッセージに、論理ネットワーク識別子(LNI)を関連付けることを通じて達成される。これらの実施の形態のいくつかでは、共有ネットワーク要素(例えば、ホスト、スタンドアローンサービス機器、スタンドアローン転送要素等)の間でトンネルが確立され、該トンネルのトンネルヘッダにそのようなLNIが挿入される。
【0156】
ハイパバイザでは、ソフトウエアスイッチは仮想スイッチと称されることがある。それらはソフトウエアであり、ホストのPNICへの共有アクセスをVMに提供するからである。しかしながら、本書では、ソフトウエアスイッチは物理スイッチと称される。それらは現実世界の物であるからである。この用語はまた、ソフトウエアスイッチと論理スイッチとを区別する。論理スイッチはソフトウエアスイッチによって提供されるタイプの接続の抽象化である。ソフトウエアスイッチから論理スイッチを生成するための種々のメカニズムがある。VXLANはそのような論理スイッチを生成するためのひとつの態様を提供する。VXLANスタンダードは以下に記載されている:Mahalingam, Mallik; Dutt, Dinesh G.; et al.(2013-05-08), VXLAN:A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks, IETF.
【0157】
さらに示されるように、ホストサービスモジュール1725およびスタンドアローンサービス機器1740は、論理ネットワークにおいて任意の数のサービスを提供するための任意の数の論理分散ミドルボックス1770を実装することができる。そのようなサービスの例は、ファイヤウォールサービス、負荷分散サービス、DNATサービス等を含む。示されるように、ひとつの論理ネットワーク(例えば、ネットワーク1715)は複数の分散ミドルボックスサービス要素1770を実装でき、一方、他の論理ネットワーク(例えば、ネットワーク1705)はただひとつの分散ミドルボックスサービス要素を実装できる。
【0158】
図18-20は、ある実施の形態のVPNゲートウエイが異なるモバイルデバイスデータメッセージと異なる論理ネットワークとをデータメッセージのMDM属性集合に基づいて関連付ける三つの異なる方法を示す三つの例を提示する。図18は、第1テナントの第1モバイルデバイス1802からのデータメッセージを、第1論理ネットワーク1810の第1論理ネットワーク識別子(LNI1)と関連付け、第2テナントの第2モバイルデバイス1804からのデータメッセージを、第2論理ネットワーク1815の第2論理ネットワーク識別子(LNI2)と関連付けるVPNゲートウエイ205を示す。
【0159】
第1論理ネットワーク1810は第1テナントのGVMを接続し、第2論理ネットワーク1815は第2テナントのGVMを接続する。示されるように、論理ネットワーク1810は、データセンタの計算、転送およびサービス組織(fabric)に実装された論理スイッチ1825および分散ミドルボックス要素1830を含み、論理ネットワーク1815は二つの論理スイッチ1835および1840と、ひとつの論理ルータ1845と、二つの分散ミドルボックス要素1850および1855と、を含み、それらはデータセンタの計算、転送およびサービス組織に実装されている。各論理ネットワークは、自身のGVMへまたは該GVMから送信されるデータメッセージを、他の論理ネットワークのVMから、隔離する。
【0160】
VPNゲートウエイ205は、モバイルデバイスデータメッセージを、論理ネットワークに、そのデータメッセージのMDM属性集合に基づいて、関連付ける。例えば、ある実施の形態では、VPNゲートウエイ205は、VPN VMと、それと同じホストで実行される関連サービスモジュールと、により実装される。VPN VMがモバイルデバイスとのVPN接続を確立すると、VPN VMは、モバイルデバイスからのデータメッセージがデータセンタ内のそのアドレスされた宛先へと通過していくことを許可する。VPN VMのサービスモジュールは、VPN VMの出て行くデータ経路からデータメッセージを傍受する。
【0161】
それがモバイルデバイスからの最初のデータメッセージを傍受するとき、サービスモジュールはMDM属性データストレージ240から、このデータメッセージに関連付けられたMDM属性集合を取得する。ある実施の形態では、サービスモジュールはデータメッセージフローのヘッダ値を用いることで、MDM属性集合を取得する。サービスモジュールは次いで、このMDM属性集合を用いることで、MDM属性ルールストレージ235において、取得されたMDM属性集合にマッチするルール識別子を有するLS(論理セグメンテーション)ルールを特定する。
【0162】
図18の例では、各LSルールはテナント識別子を含むルール識別子を指定する。このルールはまた、テナント識別子に関連付けられたモバイルデバイスからのデータメッセージについて用いるべきLNIを指定する。したがって、ある実施の形態では、取得されたMDM属性集合がテナント識別子を含むので、サービスモジュールはそのテナント識別子を用いることで、特定のテナントのモバイルデバイスからのデータメッセージについて用いるべきLNIを指定するLSルールを特定する。サービスモジュールは次いで、トンネルのトンネルヘッダに、特定されたLNI(例えば、テナント1のモバイルデバイスからのデータメッセージについてはLNI1であり、テナント2のモバイルデバイスからのデータメッセージについてはLNI2である)を挿入する。VPNゲートウエイ205はこのトンネルを用いることで、データメッセージを、論理ネットワークに関連付けられた転送要素やミドルボックス要素に転送する。
【0163】
ある実施の形態では、特定されたLSルールはまた、モバイルデバイスのデータメッセージを転送するために用いられるトンネルを特定するトンネル識別子を指定する。ある実施の形態では、各データメッセージのトンネルヘッダがメッセージの関連LNIを含む限り、異なるテナントのデータメッセージは同じトンネルを通じて送信されうる。他の実施の形態では、異なるテナントのデータメッセージは、それらが同じ二つのデバイスの間を進行する場合でも、異なるトンネルを通じて送信されなければならない。
【0164】
モバイルデバイスからのデータメッセージについてのLNIを特定した後、サービスモジュールは、その接続ストレージに、モバイルデバイスからの後続のデータメッセージのためにこのLNIを保持するレコードを生成する。このレコードにおいて、サービスモジュールは、データメッセージフロー属性(例えば、ヘッダ値)および/または取得されたMDM属性集合を保持する。この場合、サービスモジュールは後に、この保持されるデータを用いることで、モバイルデバイスからの後続のデータメッセージについて、マッチするフローおよび/またはMDM属性を有するこのレコードを特定することができる。接続ストアレコードにより、サービスモジュールは、同じフローの一部であるモバイルデバイスからの後続メッセージを素早く処理することができる。
【0165】
図19は、同じテナントの二つのモバイルデバイス1902および1904からのデータメッセージを、二つの異なる論理ネットワーク1910および1915に関連付けるVPNゲートウエイ205を示す。VPNゲートウエイ205は、単なるモバイルデバイスデータメッセージに関連付けられた取得済みMDM属性集合のなかのテナント識別子以上のものに依存することによって、これをすることができる。例えば、ある実施の形態では、MDM属性ルールストレージ235内のLSルールのルール識別子はテナント識別子に関して定義されるだけでなく、あるテナントの異なるモバイルデバイスを区別するのに用いられうるひとつ以上の他のMDM属性によって定義される。他のそのようなMDM属性の例は、ユーザ識別子と、グループ識別子と、部門識別子と、モバイルデバイスのジェイルブレイク状態と、位置識別子と、等を含む。異なるLSルールは、LSルールのルール識別子内のこれらの他の属性(ユーザ識別子と、グループ識別子と、部門識別子と、モバイルデバイスのジェイルブレイク状態と、位置識別子と、等)のうちのいずれかひとつを用いることによっても、同じテナント識別子について異なるLNIを指定することができる。
【0166】
ジェイルブレイクデバイスは、ジェイルブレイクプロセスが行われたデバイスである。ジェイルブレイクは、デバイスのオペレーティングシステム(OS)によって課せられた、デバイスでのソフトウエア制限またはハードウエア制限を取り除くプロセスである。これらの制限はデバイスが実行するソフトウエアを制限することができ、または他のセキュリティ事由により定義されうる。ある場合、デバイス制限はデバイスで実行されるデジタル権利管理(DRM)によって定義される。そのようなデバイスでは、ジェイルブレイクは、DRM制限をバイパスすることで未承認のソフトウエアのローディングを可能とし、またOSに他の変更をなすハッキングプロセスである。ある実施の形態では、ジェイルブレイクはOSファイルシステムおよびマネジャへのルートアクセスを許可し、これにより未承認のアプリケーションおよび拡張のダウンロードが可能となる。ある場合、ジェイルブレイクは、署名されていないコードの実行を可能とするための、カーネルパッチの集合(カーネルはOSのスーパバイザである)のインストールを含む。それはまた、それ以外では利用可能とはならないルートレベルのアクセスを提供する。本明細書で用いられる限り、ルートレベルのアクセスは、全てのファイルへの無制限の権能および権原を有するスーパユーザアクセスレベルを指す。
【0167】
デバイスのジェイルブレイク状態を用いることで、LSルールは、テナントのジェイルブレイクされた第1モバイルデバイス1902からのデータメッセージを第1論理ネットワーク1910に関連付け、一方、テナントのジェイルブレイクされていない第2モバイルデバイス1904からのデータメッセージを第2論理ネットワーク1915に関連付けるよう、VPNゲートウエイ205を導くことができる。ある実施の形態では、第1論理ネットワークは第2論理ネットワークよりも少ない数のリソースへのアクセスを有する。ジェイルブレイクされたデバイスは比較的セキュアでないデバイスと見なされるからである。このアプローチは、ジェイルブレイクされたデバイスがあるリソースへのリモートアクセスを有することを可能としつつも、それらがアクセスすることができるべきではない他のリソースから隔離することができる。
【0168】
同様に、グループ識別子や部門識別子を用いることで、LSルールは、テナントの第1ユーザグループ(例えば、上層部)に関連付けられた第1モバイルデバイス1902からのデータメッセージを第1論理ネットワーク1910に関連付け、一方、テナントの第2ユーザグループ(例えば、従業員)に関連付けられた第2モバイルデバイス1904からのデータメッセージを第2論理ネットワーク1915に関連付けるよう、VPNゲートウエイ205を導くことができる。異なるグループを異なる論理ネットワークに置くことによって、リソースへのリモートアクセスを分離することができる。例えば、あるユーザグループ(例えば、上層部)は他のユーザグループ(例えば、従業員)よりも、リソースのいくつかへのより大きなアクセスを有する。
【0169】
図20は、同じモバイルデバイス2002からの二つの異なるデータメッセージフローを、二つの異なる論理ネットワーク2010および2015に関連付けるVPNゲートウエイ205を示す。VPNゲートウエイ205は、モバイルデバイス2002からのあるデータメッセージフローとそのモバイルデバイスからの他のデータメッセージフローとを区別するMDM属性および/またはフローベースのヘッダ値に依存することによって、これをすることができる。例えば、ある実施の形態では、MDM属性ルールストレージ1226内のLSルールのルール識別子はテナント識別子に関して定義されるだけでなく、リモートアクセスを試行しているモバイルデバイスアプリケーションを特定するアプリケーション識別子に関して定義される。アプリケーション識別子を用いることで、LSルールは、第1アプリケーション(例えば、ブラウザアプリケーション)からのデータメッセージを第1論理ネットワーク2010へと導き、一方、第2アプリケーション(例えば、ネイティブ企業アプリケーション)からのデータメッセージを第2論理ネットワーク2015に導くよう、VPNゲートウエイ205を導くことができる。
【0170】
図13-20に示される例は、MDM属性指定サービスルールに基づいてVPNゲートウエイ205が実行できるサービス動作のタイプのいくつかの例である。当業者であれば、ある実施の形態のVPNゲートウエイがMDM属性ベースのサービス動作の多くの他の例を実行可能であることを認識するであろう。これらの他の例はファイヤウォール動作、負荷分散動作、他のミドルボックスサービス動作等を含む。
【0171】
ある実施の形態では、VPNゲートウエイは、それがリモートデバイスのデータメッセージに関連付けたMDM属性集合を、ネットワーク内のひとつ以上のネットワーク要素に渡す。これにより、これらの要素はMDM属性集合に基づいてひとつ以上の動作を行うことができる。図21-24は、VPNゲートウエイがMDM属性集合をインバンドでサービスノードに転送するいくつかのそのような例を示す。これらの例では、VPNゲートウエイは、VPNゲートウエイがリモートデバイスデータメッセージをサービスノードへ処理のために転送する際に、MDM属性集合をトンネルヘッダ内にカプセル化する。これらの実施の形態のいくつかでは、トンネルは可変長トンネルヘッダを有しうるGeneveトンネルであり、これにより、異なる量のMDM属性を異なるトンネルを通じて転送することができる。
【0172】
図21は、二つの異なるモバイルデバイス2102および2104から、二つの異なる内部サービスノード2150および2155へ、データメッセージを、これらのデータメッセージのMDM属性集合と共に、転送するVPNゲートウエイ2105の一例を示し、この場合、サービスノードはMDM属性集合に基づいてデータメッセージを処理することができる。この例では、VPNゲートウエイ2105は、VPN VM1110と、ホストコンピュータ上で他のVMと共に実行される関連サービスモジュール2120と、により実装される。
【0173】
二つのVPNトンネル2112および2114を通じて、VPN VM1110は、第1モバイルデバイスおよび第2モバイルデバイス2102および2104から、二つの異なるデータメッセージフローを受信する。示されるように、各トンネル2112または2114のヘッダは、モバイルデバイス2102または2104がVPNゲートウエイ2105に送信するMDM属性集合を含む。VPNトンネルヘッダを脱カプセル化する際、VPN VMはモバイルデバイスからのMDM属性集合をMDM属性ストレージ(不図示)に格納する。このストレージはまた、VPN接続セッションを認証した後にデータメッセージフローについてMDMサーバが提供するMDM属性を保持する。
【0174】
VPN VM1110がモバイルデバイスから受信したデータメッセージを通過させると、このVMの関連サービスモジュール2120はMDM属性ストレージから、このデータメッセージについてのMDM属性集合を取得する。ある実施の形態では、取得されたMDM属性集合は、モバイルデバイスから受信されたMDM属性と、MDMサーバから受信されたMDM属性と、を含む。サービスモジュール2120は次いで新たなトンネルヘッダ(例えば、Geneveトンネルヘッダ)でデータメッセージをカプセル化し、そのトンネルヘッダに取得されたMDM属性集合を挿入し、そのカプセル化されたデータメッセージをトンネルを通じて、該トンネルに接続されているサービスノードへ送信する。
【0175】
図21は、トンネル2140を通じて第1モバイルデバイス2102からスタンドアローンミドルボックス機器2150へデータメッセージ(例えば、データパケット)を転送し、一方、トンネル2145を通じて第2モバイルデバイス2104からサービスモジュール2155(これはホスト2160により実行される)へデータメッセージを転送するサービスモジュール2120を示す。この図は、第1モバイルデバイスのデータメッセージはVPNトンネル2112のヘッダ内のあるMDM属性集合と共に受信されるが、このデータメッセージはトンネル2140のヘッダ内の別のMDM属性集合と共にミドルボックス2150へ送信されることを示す。同様に、この図は、第2モバイルデバイスのデータメッセージはVPNトンネル2114のヘッダ内のあるMDM属性集合と共に受信されるが、このデータメッセージはトンネル2145のヘッダ内の別のMDM属性集合と共にサービスモジュール2155へ送信されることを示す。これは、モバイルデバイスが送信するMDM属性の全てをサービスモジュール2120が転送するわけではないからである。また、サービスモジュール2120はMDMサーバによってサービスノードに提供された追加的なMDM属性を転送してもよい。
【0176】
示されるように、サービスノード2150および2155の両方はルールプロセッサ2170および2175を含む。ルールプロセッサ2170および2175はトンネル2140および2145のヘッダ内で提供されるMDM属性集合を用いることで、MDMルールストレージ2180および2185においてMDM属性ベースのルールを特定する。マッチするルールを特定した後、各サービスノード2150または2155は次いで、サービスルールにより指定されるサービス動作を受信されたデータメッセージに対して行う。そのような動作の例は、MDM属性ベースのファイヤウォール動作と、DNS動作と、DNAT動作と、および/または他のミドルボックス動作や転送動作と、を含む。
【0177】
ある実施の形態では、サービスモジュール2120は、データメッセージを処理するためにそれが選択すべきサービスノードまたはサービスノードクラスタがどれであるかを決定するために、自身のルールデータストレージを調べなければならない。また、ある実施の形態では、このサービスモジュール2120は、サービスノードクラスタにおけるいくつかの候補サービスノードのなかから、モバイルデバイスからのデータメッセージフローに対するサービス動作を行うものを選択する負荷分散動作を行う。これらの実施の形態のいくつかでは、サービスノードのルールデータストレージおよび/またはその負荷分散動作は、モバイルデバイスデータメッセージのMDM属性に基づいてもよい。
【0178】
図22は、そのような例のひとつを示す。この図は、サービスノードクラスタ2255内の複数のミドルボックスサービスノード2250に亘って、異なるモバイルデバイスデータメッセージフロー用のサービス動作を分散させている二つのVPNゲートウエイ2202および2204のサービスモジュール2220を示す。データメッセージフローのヘッダ値に基づいて、各サービスモジュール2220はMDM属性ストア1125から、データメッセージフローに対応するMDM属性集合を取得する。
【0179】
取得されたMDM属性集合に基づいて、サービスモジュール2220はMDM属性ベースのルールデータストレージ1226においてサービスルールを特定する。ある実施の形態では、このサービスルールは、あるタイプのサービス動作(例えば、ファイヤウォール動作)を行うサービスノードクラスタへのトンネルの集合を特定する。ある実施の形態では、特定されたサービスルールはまた、負荷分散基準の集合を指定する。負荷分散基準の集合は、サービスモジュール2220がサービスノードクラスタ2255のサービスノードに亘ってモバイルデバイスデータメッセージフローをどのように分散させるべきかを指定する。そのような負荷分散基準の例は重み値の集合を含み、重み値の集合は、サービスモジュール2220が新たなデータメッセージフローについてサービスノードの重み付けラウンドロビン選択をどのように行うかを制御する。
【0180】
ある実施の形態では、特定されたサービスルールは負荷分散基準の集合を指定しない。例えば、ある実施の形態では、サービスモジュール2220は負荷分散基準のある集合で設定される。サービスモジュール2220は、任意のサービスノードクラスタのサービスノードに亘って負荷を分散するために行う全ての負荷分散動作について、その負荷分散基準のある集合を用いる。どのように負荷分散基準が定義されているかによらず、サービスモジュール2220はこの基準を用いることで、クラスタ2255から新たなモバイルデバイスデータメッセージフローについてのサービスノード2250を選択する。次いでサービスモジュール2220はこの選択されたサービスノードのトンネルを用いて、このフローのなかのデータメッセージを選択されたサービスノードへ転送する。データメッセージを転送する際、サービスモジュール2220は、データメッセージフローについてのMDM属性データ集合をMDM属性ストレージ1125から取得し、そのMDM属性データ集合を転送する。
【0181】
MDM属性をインバンドでデータセンタの内側のネットワーク要素(例えば、サービスノードおよび/または転送要素)に転送する代わりに、ある実施の形態のVPNゲートウエイは(1)データメッセージフローに関連付けられたMDM属性集合を解析し、(2)この解析に基づいて、ひとつ以上のサービスタグを特定し、(3)特定されたサービスタグをデータメッセージフローと共にネットワーク要素へインバンドで転送する。図23は、ひとつのそのようなVPNゲートウエイ2305を示す。
【0182】
VPNゲートウエイ2305は以下の点を除きVPNゲートウエイ2105と同様である。VPNゲートウエイ2305のサービスモジュール2320はフローに関連付けられたMDM属性集合に基づいてデータメッセージフローのサービスタグを特定し、特定されたサービスタグをミドルボックスサービス機器2350およびサービスモジュール2355へ、それぞれトンネル2340および2345を通じて、インバンドで転送する。サービス機器2350およびサービスモジュール2355は次いで、受信したサービスタグを用いることで、自身のサービスタグルールストレージ2380および2385においてサービスルールを特定する。ある実施の形態では、これらのサービスルールのそれぞれは、(1)サービスタグを指定可能なルール識別子と、(2)マッチするサービスタグを伴うデータメッセージに対して行うべきサービス動作を指定するサービスアクションと、を有する。したがって、サービスタグを伴う新たなデータメッセージを受信した後、サービスノード2350または2355はサービスタグを用いることで、そのルールストレージ2380または2385において、マッチするルール識別子を伴うサービスルールを特定する。それがマッチするルールを見つけると、サービスノード2350または2355は次いでマッチするルールのサービスアクションをデータメッセージに対して行う。
【0183】
このサービスタグアプローチによると、サービスモジュール2320が、いくつかの異なるMDM属性集合を同じサービスタグに対応付けることが可能となり、サービスノードが下流で処理しなければならないサービスルールの数を低減できる。これは、いくつかの異なるMDM属性集合が同じ条件を示すものでありうるからである。したがって、多くのMDM属性集合を少ないサービスタグに対応させることにより、下流のサービスルール処理を簡単化することができる。
【0184】
例えば、ある実施の形態では、サービスタグは異なるデータメッセージフローについて異なるセキュリティリスクを定量化することができるセキュリティタグである。これらの実施の形態では、異なるMDM属性集合を、同じレベルのセキュリティリスクを提示するものとして見ることもできる。例えば、ジェイルブレイクしたデバイスからデータセンタにアクセスすることは、ある特定の国からデータセンタにアクセスすることと同様なリスクを負う行動であると見られ得る。この状況では、サービスモジュール2320は、データメッセージフローのMDM属性集合を解析することで、そのデータメッセージフローに、ハイリスクサービスタグを関連付けることができる。サービスノード2350および2355は次いで、ハイリスクサービスタグに基づいて、これらのデータメッセージフローに対するサービス動作を行うことができる。そのような動作の例は、MDM属性ベースの論理セグメンテーション動作と、ファイヤウォール動作と、DNS動作と、DNAT動作と、および/または他のミドルボックス動作や転送動作と、を含む。
【0185】
図24は、サービスノードが二つのモバイルデバイスデータメッセージフローに対してサービスタグに基づいて行う負荷分散動作の例を示し、VPNゲートウエイはデータメッセージフローに関連付けられたMDM属性集合を解析した後にそのサービスタグを割り当てる。VPNゲートウエイ2400は、データメッセージフローのヘッダ値に基づいて、MDM属性ストア1125から、データメッセージフローについてのMDM属性集合を取得するサービスモジュール2420を含む。各データメッセージフローについて、サービスモジュール2420はこのフローの取得済みMDM属性集合を用いることで、そのMDM属性ベースのルールデータストレージ1226においてサービスルールを特定する。ある実施の形態では、このサービスルールは、データメッセージフローに関連付けるサービスタグと、負荷分散サービスノード2450へのトンネルと、を特定する。
【0186】
サービスモジュール2420は、各フローのデータメッセージを、特定されたトンネルを通じて、負荷分散器2450へ、転送する。各フローのデータメッセージの全てまたはいくつかについて、サービスモジュール2420は、それがトンネルヘッダにおいてフローについて特定したサービスタグを含む。したがって、示されるように、サービスモジュール2420は負荷分散器2450に、(1)第1モバイルデバイス2402から来るデータメッセージのいくつかまたは全てのサービスタグ1と、(2)第2モバイルデバイス2404から来るデータメッセージのいくつかまたは全てのサービスタグ2と、を送信する。一例として、サービスタグ1は、モバイルデバイス1がジェイルブレイクされたデバイスであることに起因するハイリスクセキュリティタグであってもよく、サービスタグ2は、モバイルデバイス2がジェイルブレイクされたデバイスではないことに起因するローリスクセキュリティタグであってもよい。データメッセージフローに関連付けられたリスクファクタを評価することで、セキュリティタグは実効的に、データメッセージフローの発生元であるモバイルデバイスまたはアプリケーションの信用性を評価していることになる。ただ二つの信用ファクタ(すなわち、ハイリスクおよびローリスク)の代わりに、サービスモジュール2420は、デバイス信用性および/またはアプリケーション信用性の三つ以上のレベルへと定量化するサービスタグのより大きなグループからサービスタグを指定することができる。
【0187】
負荷分散器2450は負荷分散ルールプロセッサ2455を有し、このプロセッサ2455はデータメッセージフローについてそれが受信するサービスタグを用いることでDCNクラスタを特定し、特定されたクラスタからデータメッセージフローを受信するためのひとつのDCNを選ぶ。示されるように、ルールプロセッサ2455はサービスタグを用いることでサービスタグルールストレージ2460においてルールを特定する。特定されたルールは次いで、(1)使用するべきDCNクラスタを特定し(例えば、このクラスタ内のDCNを特定し、またはこのクラスタのDCNを特定する他のストレージのDCNレコードを特定し)、(2)負荷分散基準の集合(例えば、重み付けラウンドロビン負荷分散動作を行うための重み値の集合)を特定する。
【0188】
ある実施の形態では、特定されたサービスルールは負荷分散基準の集合を指定しない(例えば、負荷分散基準の集合は事前に設定されうる)。どのように負荷分散基準が定義されているかによらず、ルールプロセッサ2455はこの基準を用いることで、DCNクラスタから新たなモバイルデバイスデータメッセージフローについてのDCNを選択する。次いでルールプロセッサ2455はこのフローのなかのデータメッセージを選択されたDCNへ転送する。本例では、二つのDCNクラスタ2480および2485は二つのサービスタグに関連付けられる。例えば、一方のDCNクラスタ2480はハイリスクデータメッセージに関連付けられてもよく、他方のDCNクラスタ2485はローリスクデータメッセージに関連付けられてもよい。ハイリスククラスタ2480のDCNはより制限された機能セット(例えば、データアクセス機能等)を提供してもよい
【0189】
ある実施の形態では、サービスノードはMDM属性に基づいてサービスタグをモバイルデバイスデータメッセージに関連付け、該サービスノードはVPNゲートウエイが動作するデバイスの外側で動作する。また、他の実施の形態が上述のものとは別のタイプのサービスタグを使用可能であることを当業者は認識するであろう。例えば、ある実施の形態では、サービスタグは、デバイスが別の国からデータセンタにアクセスしているか否かを特定することができる(例えば、デバイスの位置を特定することができる)。ある実施の形態では、サービスタグはMDM属性集合と重なることはない。また、他の実施の形態では、サービスタグは、それがMDM属性集合にはない属性を含む限り、MDM属性集合と幾分の重畳があってもよい。
【0190】
異なるユーザおよび/またはデバイスグループを特定するためにサービスタグを用いてもよい。例示として、データセンタのテナントのうちのひとつが病院であり、病院が医師と看護師とアドミニストレータとを雇用しているとする。そのようなテナントについて、ある実施の形態のネットワークコントローラは、病院のネットワークアドミニストレータが、グループ宛先に関して(すなわち、医師、看護師、およびアドミニストレータサービスタグに関して)サービスルールを指定することを可能とする。これらのネットワークコントローラはまた、病院のVPNゲートウエイサービスモジュールについてMDM属性ベースのルールを定義する。このモジュールは、モバイルデバイスデータメッセージフローをサービスタグに対応付けることができる。これらのルールを用いて、サービスモジュールは、各モバイルデバイスからの各データメッセージフローに、グループ宛先タグ(すなわち、医師、看護師、およびアドミニストレータサービスタグ)を関連付ける。データセンタにおける下流のサービスノードは次いで、これらのグループ宛先タグを用いることで、異なるグループからのリモートサービスアクセスを異なる態様で処理する(異なるリモートユーザグループメンバを異なるDCNクラスタにルーティングする等)ことができる。サービスノードはまた、異なるグループに対して異なるサービス動作を指定できる(例えば、医師および看護師のリモート通信は暗号化されなければならないことを指定する、等)。
【0191】
上述の通り、ネットワークコントローラ集合は、MDMサーバ集合から、(1)種々のMDM属性の定義と、(2)これらのMDM属性を相互に関連付け、かつ、その値と関連付けるためのオペレータの集合と、を受信する。ある実施の形態では、MDMサーバ集合は、MDM属性定義を、MDM属性およびこれらの属性について可能な値を定義する辞書の一部として提供する。ネットワークコントローラの集合は次いで、受信したMDM属性定義と関連オペレータ集合とに基づいてネットワーク要素用のポリシーおよび/またはルール(例えば、ミドルボックス要素用のサービスルールや、ルータ用のルーティングルールなど)をアドミニストレータが定義できるようにする。ある実施の形態では、アドミニストレータは、ネットワークコントローラの集合のユーザインタフェース(UI)またはAPI(アプリケーションプログラミングインタフェース)の集合を通じて、サービスポリシーおよび/またはサービスルールをプログラムすることができる。
【0192】
説明例を提供するために、図25および26は、ある実施の形態がMDM属性ベースのサービスルールをどのように定義し、分配するかを提示する。図25は、ある実施の形態における、アドミニストレータがMDM属性集合およびフローヘッダ値に基づいてサービスルールを指定できるようにするためにネットワークコントローラの集合が提供するサービスルール管理コンソール2500のUIの一例を示す。示されるように、ある実施の形態では、このコンソールはネットワーク設定コンソールの一部である(すなわち、このコンソールの一連のタブのうちのひとつのタブである)。他の被管理ネットワーク要素(例えば、被管理転送要素、ゲートウエイ、トップオブラックスイッチ等)を、このネットワーク設定コンソールを通じて管理することで、所望のネットワーク機能(例えば、論理オーバレイ機能)を実現することができる。他の実施の形態では、このサービスルール管理コンソール2500はスタンドアローンインタフェースであり、または、他のデータセンタ管理インタフェースの一部である。
【0193】
図25では、例は二つの動作ステージ2502および2504で説明される。第1ステージ2502はサービスルール管理(SR)コンソール2500を示しており、このコンソール2500を通じて、ひとつ以上のサービスについてのサービスルール、例えばファイヤウォールルールや負荷分散ルール等、を定義することができる。示されるように、SR管理コンソール2500はサービスタブセクション2515とルールセクション2520とを有する。サービスタブセクション2515は複数タイプのサービスについての複数のタブを有する。この例では、ファイヤウォールルールについてのサービスタブが選択された。この図での議論が他のMDM属性ベースのルールを定義する際にも等しく適用可能であることを当業者は認識するであろう。
【0194】
サービスタブセクション2515においてサービスタブのうちのひとつが選択されるといつでも、コンソールは、選択されたサービスタブに関連付けられたサービスタイプのルールセクション2520を表示する。示されるように、ルールセクション2520はルールリスト2525と、いくつかのUIコントロール2530と、を表示する。第1ステージ2502では、ルールリスト2525はいくつかのファイヤウォールルールを表示し、UIコントロール2530は、サービスタブセクション2515においてファイヤウォールサービスタブ2545が選択されると、ファイヤウォールルールに関するものとなる。ある実施の形態では、これらのUIコントロール2530は、(1)ファイヤウォールルールを追加するためのコントロールと、(2)ファイヤウォールルールを複製するためのコントロールと、(3)ファイヤウォールルールを削除するためのコントロールと、(4)表示されているルールセクションリストにおいてファイヤウォールルールを上下に動かすためのコントロールと、(5)ルールセクションリストからひとつ以上のフィルタリング基準を満たさないルールをフィルタリングするためにフィルタを適用するためのコントロールと、(6)フィルタを除去するためのコントロールと、(7)所定の基準を満たすファイヤウォールルールを探すためのコントロールと、を含む。ある実施の形態では、ルールリストにおいてファイヤウォールルールを上下に動かすことは、ファイヤウォールルールのリストにおけるそのルールの優先度を変える。これらのコントロールは米国特許出願第14/788,689により詳細に記載されており、その出願は参照により本明細書に組み入れられる。
【0195】
第1ステージ2502に示されるように、ルールリスト2525中の各ファイヤウォールルールはひとつ以上のタプルタイプに関して定義されうる。ひとつ以上のタプルタイプは、MDMタプルと、ソースタプルと、宛先タプルと、サービスタプルと、を含む。ファイヤウォールルールは、これらのタプルタイプのうちのただひとつに関して定義されてもよく、またはこれらのタプルタイプのうちのいくつかに関して定義されてもよい。示されるように、各ルールはまた、アクションタプルとアプライドツータプルとを有するが、詳細は後述する。
【0196】
ある実施の形態では、ファイヤウォールノードはデータメッセージに対するファイヤウォールルールを処理し、そのデータメッセージのソースおよび宛先ヘッダ値を指定するためにソースタプルおよび宛先タプルを用いることができる。言い換えると、ファイヤウォール識別子は、データメッセージのソースおよび宛先ヘッダ値に関して定義されうる。L3/L4ファイヤウォールルールについて、ソースおよび宛先ヘッダ値はIPアドレスおよび/またはポート値(例えば、TCP、UDPまたは他のL4ポート値)に関して指定されうる。イーサネットファイヤウォールルールについて、ソースおよび宛先ヘッダ値は、MACアドレスやL2サービス(プロトコル)などのデータメッセージのL2パラメータ値に関して指定されてもよい。
【0197】
ある実施の形態では、サービスタプルはデータメッセージが用いるサービスプロトコルを定義するために用いられ得る。言い換えると、ファイヤウォールルール識別子は、データメッセージのソースおよび宛先ヘッダ値に関してのみではなく、データメッセージヘッダで指定されるサービスプロトコルに関しても、定義されうる。示されるように、ルールリスト2525は、種々のレベルの粒度でソース、宛先およびサービスタプルを定義することを可能とする。これは、このコンソールが、高レベルのタプル値(例えば、データセンタ(DC1、DC2)、計算クラスタ、サーバタイプ(ウェブサーバ、アプリサーバ等)、論理スイッチ、論理ルータ、高レベルサービス構造)を低レベルの値(例えば、IPアドレス、MACアドレス、サービスプロトコル名等)に解決するバックエンドエンジンによってサポートされているからである。詳細は後述する。
【0198】
各ファイヤウォールルールのアクションタプルは、ルールのメッセージにマッチするタプル(例えば、ソース、宛先およびサービスタプル)にマッチするヘッダ値を有するデータメッセージに関して行うべきアクションを指定する。アクションタプル値の例は、許可、拒否(ドロップやブロックとも称される)、リダイレクト、等を含む。各ファイヤウォールルールのAppliedToタプルは、ルールに対して、ネットワーク内のファイヤウォール執行ポイントの集合を定義することを可能とする。そのような執行ポイントの例は、ホストレベルファイヤウォールエンジン(分散ファイヤウォール、DFWと称される)と、周辺ファイヤウォールデバイス(例えば、ファイヤウォール機器)と、を含む。
【0199】
ある実施の形態では、ソース、宛先およびサービスデータタプルと同様に、ファイヤウォール管理コンソールのバックエンドエンジンが高レベルコンストラクトを低レベルコンストラクトへ解決するとき、AppliedToタプルを高レベルコンストラクトまたは低レベルコンストラクトに関して定義することができる。図25に示される例では、四番目のものを除く全てのファイヤウォールルールは論理ネットワークの分散ファイヤウォール(DFW)ノードについて定義され、四番目のファイヤウォールルールはファイヤウォール機器(FA)について定義される。
【0200】
ファイヤウォールルールのMDMタプルコントロール2540はファイヤウォールルールの識別子について、ひとつ以上のMDM属性を指定することを可能とする。このコントロールの選択は、コンソールに、ルールセクション2520に重畳する形でウインドウ2550を開かせる。第2ステージ2504はこのウインドウ2550を示す。示されるように、このウインドウは、複数のMDM属性と、各属性についてのフィールド2575と、をリストしており、フィールド2575はこの属性についての許容可能な値または複数の値を定義するためのものである。ある実施の形態では、MDM属性のフィールドを選択した後、アドミニストレータは、その属性についての許容可能な値、複数の値または値の範囲をタイプし、または、選択されるとこのフィールドの下に開くドロップダウンウインドウから値/複数の値/範囲を選択することができる。
【0201】
図25の例では、ウインドウ2550は以下のMDM属性を表示する:デバイス識別子と、ユーザ識別子と、アプリケーション識別子と、アプリケーショングループ識別子と、オペレーティングシステムと、モバイルデバイスの位置と、モバイルデバイスのコンプライアンス状態と、モバイルデバイスのジェイルブレイク状態と、インターネットプロトコルのバージョン。ある実施の形態では、ファイヤウォールルールを、これらのMDM属性のうちのひとつ以上に関して指定することができ(すなわち、ファイヤウォールルール識別子をこれらの属性のうちのひとつ以上に関して指定することができる)、またはフローヘッダ値(すなわち、ソース、宛先およびプロトコルタプル)に関して指定することができ、あるいはMDMおよびフローヘッダ値の両方に関して指定することができる。また、ある実施の形態では、ウインドウ2550は他のMDM属性をリストし、この場合、MDMベースのファイヤウォールルールはそのような他のMDM属性に関して定義可能である。
【0202】
ある実施の形態では、各MDM属性の値を指定する際、アドミニストレータは、ひとつ以上のオペレータを用いることで値をMDM属性に関連させることができる。そのようなオペレータの例は、等しい、より大きい、より小さい、以上、以下、等しくない、等を含む。ある実施の形態では、MDMサーバ集合はネットワークコントローラ集合に対して、MDM属性集合と共にこれらのオペレータを指定する。
【0203】
また、示されるように、ウインドウ2550は各MDM属性の隣にオペレータコントロール2580を表示する。ある実施の形態では、このコントロールはANDオペレータ、NOT ANDオペレータ、またはORオペレータを指定することができる。ウインドウにおいてMDM属性に対してひとつ以上の値が指定された場合、オペレータコントロールの値は、指定されたMDM属性の値または複数の値が他のMDM属性のいずれかの指定された値とAND、NOT ANDまたはORされるべきか否かを指定する。
【0204】
ある実施の形態では、サービスルールコンソール2500はまたオペレータコントロール(不図示)を提供する。このオペレータコントロールは、指定されたMDM属性がファイヤウォールルールについて指定されたフローヘッダ値(例えば、ソース、宛先およびプロトコルタプル)のいずれかとどのように組み合わされるかを、アドミニストレータが指定することを可能とする。他の実施の形態では、ウインドウ2550を通じて指定されたMDM属性は、ソース、宛先およびプロトコルタプルを参照して定義されたフローベース属性のいずれかとANDされる。ある実施の形態はまた、異なるネスト化されたグループの間の関係を定義するオペレータを伴う、MDM属性のネスト化された組み合わせを、アドミニストレータが定義することを可能とするUIコントロールを提供する。あるいはまた、他の実施の形態は、相互にANDされたMDMおよび/またはフロータプル属性に関してのみ、ファイヤウォールルール識別子を指定することが可能としてもよい。これらの実施の形態のいくつかは、AND、NOT ANDまたはORを指定するためのオペレータコントロール2580を提供しない。デフォルトのオペレータはANDオペレータだからである。
【0205】
ウインドウ2550においてひとつ以上のMDM属性についてひとつ以上の値を指定した後、アドミニストレータはエンターコントロール2560を選択し、選択されたMDM属性および指定された値を、選択されたファイヤウォールルール(すなわち、ウインドウ2550を開くことを生じさせた被選択MDMコントロール2540に関連付けられたファイヤウォール)の定義に、追加するようサービスルールコンソール2500を導くことができる。上述の通り、選択されたファイヤウォールルールはまた、そのルール識別子についてひとつ以上のフローヘッダ値を指定することができ、またはこのルールは単に指定されたMDM属性集合に関して定義されうる。
【0206】
ネットワークコントローラの集合は、ひとつ以上のネットワーク要素にMDMベースのポリシーまたはMDMベースのルールを分配する(例えば、ネットワーク要素にポリシー/ルールをプッシュする、またはネットワーク要素がこれらのポリシー/ルールをプルすることを可能にする)。ある実施の形態では、ネットワーク要素は、それが受信するMDMベースのポリシーを、それが執行するMDMベースのルールに変換する。ある実施の形態では、MDMベースのポリシーは、高レベルコンストラクト(例えば、データセンタ、計算クラスタ、サーバタイプ、論理スイッチ、論理ルータ、高レベルサービス構造)に関して指定されるルールである。
【0207】
ある実施の形態では、ネットワークコントローラは、低レベルコンストラクト(例えば、IPアドレス、MACアドレス、サービスプロトコル名等)に関して定義されるMDMベースのルールを分配する。これらの実施の形態では、アドミニストレータ指定のMDMベースのポリシーが高レベルコンストラクトに関して定義される場合、ネットワークコントローラは、MDMベースのルールをネットワーク要素に(例えば、ホスト1200を実行するエージェント1140に)分配する前に、高レベルのタプル値(例えば、データセンタ、計算クラスタ、コンピュータサーバタイプ、論理スイッチ、論理ルータ、高レベルサービス構造)を低レベルの値(例えば、IPアドレス、MACアドレス、サービスプロトコル名等)に解決する。
【0208】
図26は、本発明のある実施の形態のネットワークコントローラ115を示す。このコントローラは高レベル識別子に関してファイヤウォールおよび他のサービスルールを定義できるが、低レベル識別子に関してこれらのルールを分配する。コントローラ115は、ルール設定器2605と、変換エンジン2610と、パブリッシングエンジン2615と、ハイレベルルールストレージ2620と、ローレベルルールストレージ2625と、ユーザインタフェース(UI)モジュール2630と、自動プロビジョニングモジュール2635と、グループ定義データストレージ2640と、MDM辞書およびオペレータデータストレージ2660と、いくつかの執行デバイスデータストレージ2655および2665と、を備える。
【0209】
ルール設定器2605は、UIモジュール2630を通じてユーザ(例えば、ネットワークアドミニストレータ)とやりとりすることで、サービスルール(例えば、ファイヤウォールルール、負荷分散ルール、DNATルール等)を設定する。示されるように、UIモジュール2630は、ストレージ2660に保持されるMDM辞書およびオペレータを参照して、MDM属性ベースのサービスルールを定義することを可能とする。さらに示されるように、ネットワークコントローラ115はMDMサーバ120からこの辞書およびオペレータを受信する。
【0210】
ルール設定器2605はまた、自動プロビジョニングモジュール2635の指導の元でサービスルールを設定する。この自動プロビジョニングモジュール2635は、物理ネットワークまたは論理ネットワークのプロビジョニングの一部としてこれらのルールを指定するようルール設定器2605を導く。例えば、ある実施の形態では、コントローラ115がマルチユーザ(例えば、マルチテナント)ホスト環境において論理ネットワークを管理するネットワークコントロールシステムの一部である場合、プロビジョニングモジュール2635は、論理ネットワークが一人のユーザについて(例えば、ひとつのテナントについて)指定されているとき、および/または、新たなVMがホストで提供されているとき、サービスルールのうちの少なくともいくつかを指定するよう設定器2605を導く。ある実施の形態では、プロビジョニングモジュール2635は、ストレージ2660に保持される属性集合およびオペレータを用いることによって、MDM属性ベースのサービスルールを自動的に(ユーザ入力なしで)提供することができる。
【0211】
設定器2605は、ユーザが、高レベルコンストラクトに関してサービスルールを指定することを(UIモジュール2630またはプロビジョニングモジュール2635を通じて)可能とする。そのような高レベルコンストラクトの例は、高レベルネットワーク、計算およびセキュリティコンストラクトであり、これは例えば論理スイッチや論理ルータや論理ネットワークや物理ネットワークや計算クラスタやデータセンタや分散ファイヤウォール等である。設定器2605はそれが設定するサービスルールをハイレベルルールストレージ2620に格納する。
【0212】
ハイレベルルールストレージ2620から、変換エンジン2610はサービスルールを取得し、取得されたルールのタプル内の高レベルコンストラクト識別子を低レベルコンストラクト識別子に変換する。例えば、ある実施の形態では、変換エンジン2610は、計算コンストラクト(例えば、データセンタ識別子、計算クラスタ識別子、ホスト識別子等)、ネットワークコンストラクト(例えば、LFE識別子、論理ネットワーク識別子等)、およびセキュリティグループ(これはひとつ以上のネットワークまたは計算コンストラクトにより形成される)を、IPアドレス、VNIC識別子およびワイルドカード値に、変換する。コンストラクト識別子をそのように変換する際、変換エンジン2610は、全てのサービスルールが、サービスルールを受信する全ての執行デバイスによって解読可能な低レベル識別子によって定義されるようにする。変換エンジン2610は、それが取得し必要に応じて変換したサービスルールを、ローレベルルールデータストレージ2625に格納する。
【0213】
高レベル識別子(例えば、高レベルネットワークコンストラクト、計算コンストラクト、およびAppliedToタプルによって定義されたセキュリティグループ)を低レベル識別子(例えば、IPアドレス、VNIC識別子、およびワイルドカード値)に変換するために、変換エンジン2610は、グループ定義データストレージ2640に保持される高レベルグループの定義に依存する。これらの定義はユーザによって(UIモジュール2630を通じて)、または自動プロビジョニングモジュール2635によって、格納される。
【0214】
ある実施の形態では、これらの定義は静的に定義される。他の実施の形態では、高レベルグループ定義のうちのいくつかまたは全てはユーザまたはプロビジョニングモジュール2635によって動的に変更可能である。特に、ある実施の形態では、識別子のうちのひとつ以上は動的に変更可能なコンストラクトを指すことができ、これは、コントローラ115が、識別子の定義を動的に変更することによりサービスルールを動的に調整することを可能とする。ある実施の形態では、ルール設定器2605は、計算コンストラクト、ネットワークコンストラクトおよびセキュリティグループのうちのひとつ以上を、そこへ動的に追加されるおよび/またはそこから動的に除去されるメンバ(例えば、転送要素、ホスト、VNIC等)を有することができる動的コレクションとして、指定することができる。
【0215】
静的または動的グループを参照して定義されるコンストラクトについて、変換エンジン2610は、(1)グループ定義データストレージ2640にあるグループ定義を用いて高レベル識別子に関連付けられた低レベル識別子(例えば、VNICおよびワイルドカード値)を特定し、(2)高レベル識別子を特定された低レベル識別子で置き換え、(3)結果として得られるルールをローレベルルールストレージ2625に格納する。ひとつ以上のサービスルールのタプルを定義するために用いられる動的コレクションが変更される場合、変換エンジン2610は、影響を受けるサービスルールの低レベル識別子を更新する。以下に詳述されるように、パブリッシングエンジン2615は次いで、影響を受けるサービスルールについての更新されたメンバシップ変更を、このメンバシップ変更の通知を必要とするサービスルール執行デバイスに、送信する。このアプローチは、これらのルールを以前に受信した執行デバイスに、影響を受けるサービスルールを再送信する必要性を失わせる。しかしながら、パブリッシングエンジン2615は、動的コレクションへのメンバシップ変更が新たな執行デバイスの追加を要求する場合は、新たな執行デバイスに、影響を受けるサービスルールを送信する。
【0216】
パブリッシングエンジン2615は、低レベルデータストレージ2625から執行デバイスサービスルールを集め、分配する。図26に示されるように、パブリッシングエンジン2615は、ルール抽出器2650と、配信エンジン2645と、を含む。各執行デバイスについて、ルール抽出器2650は、執行デバイスに関するサービスルールを特定し、低レベルデータストレージ2625から取得する。ルール抽出器2650は、各特定の執行デバイスについての取得されたサービスルールを、パブリッシングエンジン2615が特定の執行デバイスごとに維持しているデータストレージ(例えば、データストレージ2655および2665)に、格納する。
【0217】
ある実施の形態では、ルール抽出器2650は、各執行デバイスについて、その執行デバイスに関するサービスルールのみを取得し、格納する。したがって、執行デバイスデータストレージ(例えば、各執行デバイスのサービスルールを保持するデータストレージ2655および2665)は、多くの場合、ハイレベルおよびローレベルデータストレージ2620および2625よりもかなり小さい。執行デバイスデータストレージは、対応する執行デバイスに関するサービスルールのみ含むからである。
【0218】
ある実施の形態では、執行デバイスに関するサービスルールは、執行デバイスに接続されているデータエンドノード(例えば、VMやVM VNIC)に関するサービスルールを含む。ある実施の形態では、各執行デバイスに関するルールはまた、執行デバイスに接続されてもよいデータエンドノードに関するサービスルールを含む。例えば、特定のホストが特定の論理ネットワークを実装する計算クラスタに属する場合、ある実施の形態のルール抽出器2650は、論理ネットワークに属するVMがその特定のホストにおいてインスタンス化される前であっても、その特定のホスト用のデータストレージに、その論理ネットワークに対して指定されたサービスルールを保持する。そのようなホストにサービスルールを前もってプッシュすることには利点がある。それにより、ホストがコントローラとやりとりすることなくVMのためのサービスルールを設定することが可能となるからである。
【0219】
図26は、ルール抽出器2650が維持するデータストレージのうちの三つ2655および2665が示される。これらのデータストレージのうちの二つ2655は、ホスト上で実行されるVMについて執行デバイスとして機能するサービスモジュールを実行するホストについてのものである。三番目のデータストレージ2665はサービス機器(例えば、ファイヤウォール機器)のためのものである。ある実施の形態では、パブリッシングエンジン2615の配信エンジン2645は、各執行デバイスに(ネットワークを介して)、ルール抽出器2650がその執行デバイスについて維持しているデータストレージに保持されているサービスルールを、プッシュする。他の実施の形態では、執行デバイスは、配信エンジン2645からサービスルールをプルする。さらに別の実施の形態では、配信エンジン2645は、執行デバイスのうちのいくつかにサービスルールをプッシュし、一方、他の執行デバイスがサービスルールをプルすることができる元のリソースとして機能する。
【0220】
上述の通り、パブリッシングエンジン2615は、ユーザまたは自動プロセスが動的に執行ポイント集合を変更した場合、そのような執行ポイント集合に対する更新を、執行デバイスに、配信する。ある実施の形態では、そのような変更は、変換エンジン2610に、ローレベルデータストレージ2625内のサービスルールを変更させる。これは、次に、ルール抽出器2650に、それが執行デバイスについて維持しているひとつ以上の執行デバイスデータストレージ(例えば、データストレージ2655および2665)においてひとつ以上のルールを更新させるか、そのようなルールを生成させることができる。配信エンジンは、次いで、更新されたルールを、影響を受ける執行デバイスに、配信する(例えば、プッシュアクションまたはプルアクションを通じて)。
【0221】
ある実施の形態では、MDM属性処理サービスモジュールは、MDM属性ベースのサービスルールを保持するために、新規なMDM属性ベースのサービスルールストレージを用いる。このサービスルールストレージは、任意の数の任意のMDM属性および属性値を有することができる、MDM属性ベースのルールを素早く特定できるインデクシング構造を有する。ある実施の形態では、このインデクシング構造は、ネットワークコントローラによって、ベクトル形式で定義されるサービスルールから、サービスモジュールにおいて、動的に構築される。このインデクシング構造をベクトル定義サービスルールに基づいてサービスモジュールにおいて動的に構築することによって、新たなまたは更新されたMDM属性および/または値の集合に対して、サービスルールストレージを素早く生成および/または更新することができる。ある実施の形態では、サービスルールストレージはまた、データメッセージのフローヘッダ値とマッチするルールを素早く特定するためのインデクシング構造を生成する。
【0222】
MDM属性ベースのサービスルールをベクトル形式で定義するために、ある実施の形態のネットワークコントローラは、ひとつ以上のベクトルラベルに関して各ルールを定義し、ここでは、(1)各ベクトルラベルがひとつ以上のMDMラベルおよび各ラベルについてのひとつ以上の可能な値に関して定義され、(2)二つ以上のベクトルラベル(ルールが二つ以上のベクトルラベルを参照して定義される場合)がひとつ以上のオペレータによって互いに相関される。各MDMラベルはMDM属性であり、各MDMラベル値はMDM属性が有しうる値である。ルール内の各ベクトルラベルは以下の形を有する。
【0223】
Vector Label {
【0224】
Name:Label Name
【0225】
Values:Vector {...}
【0226】
},
【0227】
ある実施の形態では、ルールにおいて、ANDおよびAND NOTオペレータを用いることで、二つ以上のMDMラベルを関連付けることができる。ANDオペレータは、ルールが満たされるためには、ラベルおよびその指定された値が存在しなければならないことを意味し、一方、AND NOTオペレータは、ルールが満たされるためには、ラベルおよびその指定された値が存在するということがあってはならないことを意味する。ある実施の形態では、ひとつのMDMラベルに対して二つ以上の値が指定された場合、これらの値は明示的なまたは暗示的なORオペレータに関して指定される。これは、指定された値のうちのいずれかひとつの存在が、その値の関連ラベルによって指定されるルールの条件を満たすことを意味する。
【0228】
ベクトル定義サービスルールのいくつかの例が以下に提供される。これらの例は、複数のベクトルラベルが指定された場合、それらは明示的なANDオペレータに関して相関され、ラベルの指定された値のそれぞれはそのラベルの指定された他のいずれかの値と、暗示的なORオペレータによって相関されることを示す。これらの例はまた、明示的なAND NOTオペレータを用いることにより、ルールにおいてラベルベクトルを無効化することができることを示す。
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
}
【0229】
上記の例示的なルールはファイヤウォールルールである。ファイヤウォールルールを表すためのこの新規なベクトル形式は、複数のMDM属性に依存する複雑なファイヤウォールルール構造を指定することができる。特に、これらのシンプルなベクトルは、複雑なMDM属性ベースのルールを効果的に表現することができる:
【0230】
ある実施の形態は、この新規なベクトル形式を用いて、他のサービスルール(例えば、負荷分散ルール、NATルール等)を指定する。ある実施の形態では、ネットワークコントローラは、ベクトル指定サービスルールを、サービスノード(例えば、サービスモジュールやサービス機器等)に発行する。各サービスノードは次いでインデックスグラフ(例えば、有向非巡回グラフ、DAG)を動的に生成する。後に、このインデックスグラフを用いることで、メッセージフローのMDM属性集合にマッチするルールを素早く特定することができる。図27は、ある実施の形態のインデックスグラフ2700の一例を示す。示されるように、インデックスグラフ2700は三レベル木である。第1レベル2705はルートレベルであり、本例ではラベルと称される。
【0231】
第2レベル2710はサービスルールで使用可能な一意のMDMラベルのそれぞれを表すひとつのノードを含む。本例では、三つのMDMラベルが示されており、これらは地域、OSおよびジェイルブレイク状態である。各MDMラベルノードは、ルートレベルの子ノードであり、ルートノードの枝を定義する。各枝はひとつのMDMラベル(ひとつのMDM属性)に対応する。
【0232】
各MDMラベルについて、第3レベル2715はそのMDMラベルについて指定された値のそれぞれを表すノードを含む。示されるように、各値ノードは、ルールストレージ2750における少なくともひとつのサービスルール2730を特定する。例えば、ある実施の形態では、各値ノードは、ラベル値に関して定義される少なくともひとつのサービスルール2730への参照(例えば、ポインタ)を含む。各値ノードは複数のルールとリンクされることが可能であり、これは複数のルール2730がそのラベル値に関して定義可能であるからである。ある実施の形態では、ひとつの値ノード(すなわち、ひとつの第3レベルノード)は値の範囲を指定することができる。
【0233】
ある実施の形態では、サービスモジュールは、ネットワークコントローラから送信されたのと同じベクトル指定形式でサービスルール2730を保持する。他の実施の形態では、サービスモジュールは、ネットワークコントローラがルールを送信するのに用いたベクトル形式とは異なる形式で、サービスルールを保持する。例えば、ある実施の形態では、サービスモジュールはサービスルールを保持するために、タグ長値(TLV)フォーマットを用いる。そのような実施の形態では、サービスモジュールは、サービスルールの定義を、ベクトル指定形式からTLVフォーマットへ変換し、変換されたルール2730をルールストレージ2750に格納する。また、ある実施の形態では、サービスルール2730は優先度の集合と共に保持される。優先度の集合は、その優先順位を特定する。一方、他の実施の形態では、サービスルールの優先度は、ルールストレージ構造2750(例えば、ルールテーブル)においてルール2730が保持されている順番に基づいて暗示的に定義される。
【0234】
図28は、上述の二つのベクトル指定サービスルールについて定義されうるインデックスツリー2800を示す。示されるように、このツリーは、三つの枝2805、2810および2815を有することができ、これらはユーザ位置ラベル、電話状態ラベルおよび電話所有権ラベルについてのものである。示されるように、ユーザ位置ラベルAおよびBはルール1および2を指し、ユーザ位置ラベルCはルール1を指し、ユーザ位置ラベルC1はルール2を指す。電話状態値DおよびEはルール1を指す。電話所有権値Fはルール1および2を指し、一方、電話所有権値Gはルール1を指し、電話所有権値G1はルール2を指す。各MDMラベルについて枝を生成し、全ての枝をひとつのツリー構造に配置する代わりに、他の実施の形態は、各MDMラベルに対して別個のツリー構造を定義する。
【0235】
データメッセージフローのMDM属性集合について、その集合の各MDM属性およびその関連値はインデックスツリーのMDMラベルおよびその関連値に対してチェックされる。これにより、MDM属性値にマッチするMDMラベル値により参照されるルールのリストを生成することができる。ルールリストが生成されると、このリスト上のそれらのルールのうちのひとつ以上はフローのMDM属性集合および/または他のフローベースの属性について処理される。これにより、MDM属性集合にマッチするもののうち、最も優先度が高いサービスルールを特定することができる。
【0236】
ある実施の形態では、サービスモジュールはMDM属性についてのインデックスツリーを生成するだけでなく、データメッセージのフローヘッダ値にマッチするルールを素早く特定するためにインデックスツリーを生成する。これらの実施の形態のうちのいくつかでは、フローヘッダベースのインデックスツリーは基数木である。パケットヘッダ値についてファイヤウォールルールをインデックス化し取得するために基数木を生成して用いることは、米国特許出願第14/295,553で説明されており、その出願は参照により本明細書に組み入れられる。
【0237】
フローのMDM属性集合についてのツリーインデックス構造およびサービスルールを調べるプロセスは、図30を参照して以下に詳述される。しかしながら、このプロセスを説明する前に、図29のプロセス2900をまず説明する。このプロセス2900は、ネットワークコントローラからのサービスルールの集合を保持するサービスルールストレージのためのMDM属性インデックスツリー構造を構築する。ある実施の形態では、サービスノードがベクトル指定サービスルールの新たな集合またはサービスルールの更新された集合を受信するたびに、サービスノード(例えば、サービスモジュール、サービス機器等)はプロセス2900を実行する。
【0238】
2905で、プロセス2900は受信したサービスルール集合を、ルールストレージのサービスルールデータストレージ構造(例えば、テーブル)に格納する。ある実施の形態では、サービスルールを格納する前に、プロセス2900はサービスルールの定義を、受信したベクトル形式から他のフォーマット(例えば、TLVフォーマット)へ変換する。図29に示される例では、受信されたサービスルールの集合は、サービスノードによって受信された最初のルール集合であり、またはそれはサービスノードによって以前に受信されたルール集合を完全に置き換えることが意図されているルール集合である。したがって、2905で、プロセス2900は新たなインデックスツリーを定義する。更新されたサービスルール集合に基づいて既生成のインデックスツリーを更新するプロセスは、以下に説明されるであろう。
【0239】
2910で、プロセス2900は受信されたサービスルール集合からサービスルールを選択する。それは次いで、選択されたサービスルールにおいてラベルを選択する(2915において)。次いで、2920で、それは、インデックスツリーが選択されたラベルに対応する第2レベルラベルノードを既に有するか否かを判定する。有さなければ、それは第2レベルノードを生成し、このノードをルートレベルのラベルノードに関連付け、2930へ移る。プロセス2900は、以前の2920を通じた繰り返しにおいて、選択されたラベルに対応する第2レベルノードを生成していたと判定した場合にも、2930へ移る。
【0240】
2930で、プロセス2900は選択されたラベルに対して選択されたルールが指定する値を選択する。次いで、2935で、それは、インデックスツリーが選択された値に対応する第3レベル値ノードを既に有するか否かを判定する。有さなければ、それは第3レベル値ノードを生成し、このノードを第2レベルのラベルノードに関連付け、2945へ移る。値ノードが値の範囲を表すことができる実施の形態では、プロセス2900は選択されたラベルについて値の範囲を選択することができ(2930において)、また選択された値の範囲について値ノードを指定することができる(2935において)。
【0241】
プロセスは、以前の2935を通じた繰り返しにおいて選択されたラベルおよび選択された値に対応する第3レベル値ノードを生成していたと判定した場合にも、2945へ移る。2945で、プロセス2900は選択されたルールが選択されたラベルに対して指定する値の全てを調べたかを判定する。そうでなければ、それは2930に戻り、別の値を選択する。戻らないのであれば、2950で、プロセス2900は選択されたルールにおいて指定されるラベルの全てを調べたかを判定する。
【0242】
ラベルの全てを調べたわけではないとプロセス2900が判定した(2950において)場合、それは2915に戻り、指定されたルール内の他のラベルを選択する。戻らないのであれば、2955で、プロセス2900は受信されたルール集合のルールの全てを調べたかを判定する。もしそうであれば、プロセスは終了する。もしそれがルールの全てを調べたわけではない場合、それは2910に戻り、指定されたルール集合内の他の検査対象のルールを選択する。
【0243】
ある実施の形態では、ネットワークコントローラがサービスノードのサービスルール集合を更新するたびに、ネットワークコントローラはそのサービスノードにルール集合全体(すなわち、古いルール、新たなルールおよび更新されたルールを含むルール集合)を送信し、サービスノードは、それが受信するルール集合のそれぞれについて、一から、MDM属性インデックス構造を生成する。他の実施の形態では、ネットワークコントローラは、いくつかの新たなサービスルールを生成する場合および/または他のサービスルールを更新する場合、ルール集合全体をサービスノードに送ることはしない。これらの実施の形態では、ネットワークコントローラはサービスノードへサービスルール更新を送信する。
【0244】
受信されたルール集合が以前に受信されたルール集合を更新することを意図した更新集合である場合、サービスノードは更新集合において新たに指定されたルールについて、プロセス2900と同様なプロセスを行い、MDM属性インデックスツリーを更新する。しかしながら、受信されたルール集合は、以前に指定されたルールを除去することがある。ルールが除去される場合、ネットワークコントローラは更新ルール集合において、除去されるルールの定義を提供する。サービスノードは次いで除去されるルールのラベルをひとつずつ見て、そのラベルの枝が他のサービスルールによって用いられていない場合、以前に生成されたインデックスツリーからそのラベルの枝を除去する。
【0245】
ある実施の形態では、第2レベルラベルノードのそれぞれはそれを用いるサービスルールの数のカウントを維持し、第3レベル値ノードのそれぞれはそれを用いるサービスルールの数のカウントを維持する。サービスルールの除去を要求するサービスルール更新を処理する際、サービスノードは第2または第3レベルノードを、そのカウントが1である場合に、除去する。そうでなければ、それはカウントを1だけデクリメントする。以前に指定されたサービスルールが新たなラベルや値を含むよう更新される場合、ある実施の形態のネットワークコントローラは二つのレコードを供給し、二つのレコードは、以前に生成されたサービスルールを除去するためのサービスルール除去レコードと、新たなサービスルールを追加するためのサービスルール生成レコードと、である。
【0246】
図30は、フローのMDM属性集合および/またはフローヘッダ値に基づいて、サービスルールストレージ2750から、データメッセージフローについてのサービスルール2730を選択するためにサービスノードが用いるプロセス3000を示す。このプロセスは、データメッセージのMDM属性集合および/またはフロー属性と、サービスルールストレージに保持されるサービスルールと、をマッチングする。示されるように、プロセスは最初に、受信したデータメッセージのヘッダ値にサービスルールのいずれかがマッチするか否かを判定する(3005において)。もしマッチしなければ、プロセスは3015に移る。
【0247】
マッチする場合、プロセスは、メッセージのヘッダ値にマッチする全てのサービスルールを選択し(3010において)、それらをサービスルールの第1集合に追加する。ある実施の形態では、プロセスは基数木構造を用いることで、ある実施の形態におけるマッチするサービスルールを特定する。また、ある実施の形態では、プロセスは、マッチするサービスルールのうち最高の優先度を有するものだけを取得する代わりに、メッセージのヘッダ値にマッチする全てのサービスルールを取得する。この、マッチするサービスルールのうち最高の優先度を有するものが、データメッセージのMDM属性にマッチしないかもしれないからである。ある実施の形態では、サービスルールストレージ2750は常に、任意のヘッダ値の集合にマッチする少なくともひとつのデフォルトサービスルールを有する。
【0248】
3010から、プロセス3000は3015へと移り、そこでは、それは受信されたデータメッセージのMDM属性集合のMDM属性のいずれかの値により参照されるサービスルールを特定する。ある実施の形態では、そのようなサービスルールを特定するために、プロセスはMDM属性ツリー構造(例えば、インデックスツリー2700および2800)を用いる。プロセスは特定された全てのサービスルールを第2ルール集合に入れる(3015において)。
【0249】
次に、3020で、プロセスは、3010で特定された第1サービスルール集合から、そのルール識別子にMDM属性を有し、かつ、第2サービスルール集合にないサービスルールを破棄する。3020で、プロセスは次いで、3020で破棄されなかった第1集合中のサービスルールを第2サービスルール集合に追加することで、第3収集ルール集合を定義する。ある実施の形態では、プロセスは、第2ルール集合にはないがそのルール識別子にMDM属性を有さないサービスルールを第1ルール集合から破棄しない。そのような第1集合のルールはデータメッセージにマッチする最も優先度の高いルールでありうるからである。ある実施の形態では、各サービスルールは、そのルールの識別子がMDM属性に少なくとも部分的に基づいて定義されているか否かを示すフィールドを有する。ある実施の形態では、プロセス3000はこのフィールドを用いることで、そのルール識別子内にMDM属性を有する第1集合のルールを素早く特定する。
【0250】
3020の後、プロセスは3020で定義された第3収集集合内のサービスルールまたは複数のサービスルールを調べる(3025において)。第3収集集合内のサービスルールを調べる際、プロセスは、受信されたデータメッセージのMDM属性値およびフローヘッダ値と、ルールのMDM属性、値、オペレータおよびフローヘッダ値と、を比較し、データメッセージの属性がルールの識別子の属性とマッチするか否かを判定する。3030で、プロセスはデータメッセージのMDM属性および/またはフローヘッダ値とマッチしたサービスルールのうち優先度が最も高いものを選択し、終了する。
【0251】
ある実施の形態では、動作3030は動作3025の暗示的部分である。プロセスは優先度にしたがって第3収集集合のルールを調べ、プロセスは受信したデータメッセージのMDM属性および/またはフローヘッダ値にマッチするルールを特定するとルールの検査を止めるからである。サービスノードが受信されたデータメッセージにマッチするサービスルールのうち優先度が最も高いものを特定すると、サービスノードは、マッチするサービスルールのアクションタプル値に基づいて、データメッセージに対するサービス動作を行う。
【0252】
以下の例は、メッセージのMDM属性集合をどのようにひとつ以上のMDM属性ベースのルールとマッチングすることができるか、を示す。メッセージのMDM属性集合が以下の形態をとるとする。<IP:Port> <Label L1:V1, L2:V2,L3:V3....>。そのような例の一つは:
プロセス3000は最初、受信されたデータメッセージのフローヘッダ値にマッチするサービスルールを特定し、特定された全てのサービスルールを評価のために第1収集ルール集合に入れる。プロセスは次いで、メッセージの各MDM属性値をラベルツリーに対して検査する。属性値がツリーで指定されるラベル値のうちのひとつとマッチすると、マッチするラベル値が指す一意のルールが収集され、評価のために第2収集ルール集合に入れられる。上記の例では、ルール1および2の両方が収集される。ルール1はユーザ位置値Bおよび電話状態値Dによって参照され、ルール2はユーザ位置値Bおよび電話所有権値G1によって参照される空である。
【0253】
プロセス3000は次いで、第1収集集合から、そのルール識別子にMDM属性を有し、かつ、第2収集集合にないルールを捨てる交差動作を行う。プロセスは次いで、第1収集集合内に残っている全てのルールを、第2収集集合に追加し、第3収集ルール集合を生成する。第3収集集合内の個々全てのルールについて、全てのラベル属性およびラベルオペレータ<AND, AND NOT>の正確なマッチングについての、バスケットからのラベル評価がなされた。上述の通り、ある実施の形態は、ルールの優先度の順番でルールマッチングを行う。この場合、より高い優先度を有するルールがMDM属性集合とマッチする場合、より低い優先度のルールのチェックをせずにルールチェックを止めることができる。
【0254】
上述の例について、いずれのルールも、フロー属性に関して定義された識別子を有さないとする。全てのラベルに対してルール1をマッチングしている間、以下がマッチする:
・Label User_Location:B True
・Label Phone_Status:D True
・Label Phone_Ownership:G1 False
オペレータすなわちUser_Location AND Phone_Status AND NOT Phone_Ownershipを評価した後、ルールはトラフィックに対して適用可能であると評される。ルール2のマッチングは次に以下のように行われる:
・Label User_Location:B True
・Label Phone_Ownership:G1 True
オペレータを評価した後、ルール2も適用可能である。したがって、{Rule1, Rule2}のうちの低いほうが選択され、アクションに基づいてパケットが許可/ドロップされる。
【0255】
上述のルールチェックアプローチによると、サービスノードは、ひとつ以上のモバイルデバイスMDM属性(例えば、位置)が突然変わった場合にルールを再チェックできる。次いで、接続が依然としてオンである間に、次の入来パケットについてルールを再評価することができ、その判定に基づいて接続を許可または途中でドロップすることができる。より一般的には、上述のアプローチは、数多くの動的ラベルおよび種々の複雑な値およびこれらのラベルの間の関係を取り扱うことができる高速でスケーラブルな解を提供する。このアプローチの力は、異なるポリシーについて設定された十万を超えるルールについて、数多くの動的タグを非常に効率的に処理できることにある。これにより、加入者に対して、十分な接続およびスループットレートを維持することができる。
【0256】
上述の多くの特徴及び適用例は、コンピュータで読み出し可能な記録媒体(コンピュータで読み出し可能な媒体としても参照される)上に記録された命令の組として特定されるソフトウェア処理として実施され得る。これらのプログラムの命令が1つ以上の処理ユニットによって実行される場合(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)、これらのプログラムの命令は、命令に示されているアクションを(複数の)処理ユニットに実行させる。コンピュータで読み出し可能なメディアの例は、これに限定されないが、CD-ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等を含む。コンピュータで読み出し可能なメディアは、キャリア波及び、無線又は有線接続を通過する電子信号を含まない。
【0257】
本明細書では、「ソフトウェア」の語は、読出専用メモリにあるファームウェア、又は磁気記録に格納されたアプリケーションを含み、プロセッサによる処理のためにメモリに読み込むことができる。また、いくつかの実施形態では、複数のソフトウェア発明は、個別のソフトウェア発明を維持する一方で、より大きなプログラムのサブ部分として実施されてもよい。いくつかの実施形態では、複数のソフトウェア発明はまた、個別のプログラムとして実施されてもよい。最後に、ここで説明されるソフトウェア発明をともに実施する個別のプログラムの任意の組み合わせは、発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムが、1以上の電子システムを動作させるためにインストールされる場合、1以上の特定の機械的実施を定義し、ソフトウェアプログラムの動作を実行する。
【0258】
図31は、本発明のいくつかの実施形態が実施されるコンピュータシステム3100を概念的に示す。コンピュータシステム3100は、上述のホストやコントローラやマネージャのいずれかを実装するために用いられうる。したがって、それは上述のプロセスのいずれかを実行するために用いられうる。このコンピュータシステムは、様々な種別の非一時的機械可読メディア、及び様々な他の種別の機械可読メディアに対するインタフェースを含む。コンピュータシステム3100は、バス3105、処理ユニット3110、システムメモリ3125、読出専用メモリ3130、永続的ストレージデバイス3135、入力デバイス3140、及び出力デバイス3145を含む。
【0259】
バス3105は、電子システム3100の多くの内部デバイスを通信可能に接続する、全てのシステムバス、周辺バス、及びチップセットバスを集約的に表す。例えば、バス3105は、処理ユニット3110を、読出専用メモリ3130、システムメモリ3125、及び永続的ストレージデバイス3135に通信可能に接続する。
【0260】
処理ユニット3110は、本発明の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。処理ユニットは、異なる実施形態において単一のプロセッサ又はマルチコアプロセッサであり得る。読出専用メモリ(ROM)3130は、処理ユニット3110及びコンピュータシステムの他のモジュールによって必要とされる静的データ及び命令を記録する。永続的ストレージデバイス3135は、一方で、読出・書込メモリデバイスである。このデバイスは、コンピュータシステム3100がオフの場合であっても命令及びデータを記録する不揮発性メモリユニットである。本発明のいくつかの実施形態は、(磁気又は光学ディスク、及び対応するディスクドライブなどの)マスストレージデバイスを永続的ストレージデバイス3135として用いる。
【0261】
他の実施形態は、(フロッピーディスク、フラッシュドライブ等のような)取り外し可能なストレージデバイスを永続的ストレージデバイスとして用いる。永続的ストレージデバイス3135のように、システムメモリ3125は、読出・書込メモリデバイスである。しかしながら、ストレージデバイス3135とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性の読出・書込メモリである。システムメモリは、プロセッサがランタイムにおいて必要とする、いくつかの又は全ての命令及びデータを格納し得る。いくつかの実施形態では、本発明の処理は、システムメモリ3125、永続的ストレージデバイス3135、及び/又は読出専用メモリ3130に記録される。処理ユニット3110は、いくつかの実施形態の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。
【0262】
バス3105はまた、入力デバイス3140と出力デバイス3145に接続する。入力デバイスは、ユーザが情報を通信し、コンピュータシステムへのコマンドを選択できるようにする。入力デバイス3140は、アルファベット表記のキーボードとポインティングデバイス(「カーソル制御デバイス」ともいわれる)とを含む。出力デバイス3145は、コンピュータシステムによって生成された画像を表示する。出力デバイスはプリンタ、真空管(CRT)又は液晶ディスプレイ(LCD)などの表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【0263】
最後に、図31に示すように、バス3105はまた、コンピュータシステム3100をネットワークアダプタ(不図示)を介してネットワーク3165に接続する。このようにして、コンピュータは、(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、イントラネット、インターネットなどのネットワークのネットワーク、などのコンピュータのネットワークの一部になることができる。コンピュータシステム3100の任意又は全ての構成要素は、本発明に関連して用いられ得る。
【0264】
いくつかの実施形態は、マイクロプロセッサ、コンピュータプログラムの命令を機械で読み出し可能な又はコンピュータで読み出し可能な媒体(或いはコンピュータで読み出し可能なストレージメディア、機械で読み出し可能な媒体、又は機械で読み出し可能なストレージメディアとして参照される)に格納した、ストレージ及びメモリのような電子構成要素を含む。コンピュータで読み出し可能な媒体のいくつかの例は、RAM、ROM、読出専用コンパクトディスク(CD-ROM)、記録可能コンパクトディスク(CD-R)、再書込可能コンパクトディスク(CD-RW)、読出専用デジタル多用途ディスク(例えばDVD-ROM、デュアルレイヤDVD-ROM)、様々な記録可能/再書込可能DVD(DVD-RAM、DVD-RW、DVD+RW等)、フラッシュメモリ(例えばSDカード、ミニSDカード、マイクロSDカード等)、磁気及び/又はソリッドステートハードドライブ、読出専用及び記録可能Blu-Ray(登録商標)ディスク、超高密度光ディスク、任意の他の光又は磁気メディア、及びフロッピーディスクを含む。コンピュータで読み出し可能な媒体は、少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令の組を含む、コンピュータプログラムを記録する。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されたような機械コードと、コンピュータ、電子構成要素、又はインタプリタを用いるマイクロプロセッサによって実行される、より高レベルなコードを含んだファイルとを含む。
【0265】
上述の説明は、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを主に参照したが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のような、1つ以上の集積回路によって実行される。ある実施形態では、そのような集積回路は回路自体に格納された命令を実行する。
【0266】
本明細書において使用されるように、「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」の語は、全て電子的又は他の技術的デバイスを参照する。これらの語は、人及び人のグループを含まない。本明細書の目的のため、表示及び表示するの語は電子デバイス上に表示することを意味する。本明細書において使用されるように、「コンピュータで読み出し可能な媒体」、「コンピュータで読み出し可能なメディア」及び「機械で読み出し可能な媒体」の語は、全体として、コンピュータによって読み出し可能な形式の情報を記録する、有体物、物理的なオブジェクトに制限される。これらの語は、任意の無線信号、有線でダウンロードされた信号、及び任意の他のその場限りのまたは一時的な信号を含まない。
【0267】
本発明は多数の特定の詳細を参照して説明されたが、当業者は、本発明が発明の思想から離れることのない他の特定の形式で実施可能であることを認識する。例えば、上述の例のうちの多くはモバイルデバイス、MDMサーバおよびMDM属性に言及する。これらの例の全てが任意のタイプのリモートデバイス、RDMサーバおよびRDM属性に等しく適用可能であることを、当業者は認識するであろう。
【0268】
本明細書は、終始、仮想マシン(VM)を含む、計算環境及びネットワーク環境を参照している。しかしながら、仮想マシンは単なるデータ計算ノード(DCN)又はデータ計算エンドノードの一例であり、アドレス可能なノードとしても参照される。DCNは、非仮想化物理ホスト、仮想マシン、ハイパーバイザや別のオペレーティングシステムを必要とすること無くホストオペレーティングシステム上で動作するコンテナ、及びハイパーバイザカーネルネットワークインタフェースモジュールを含み得る。
【0269】
いくつかの実施形態では、VMは、仮想化ソフトウェア(例えばハイパーバイザ、仮想マシンモニタ等)によって仮想化されたホストのリソースを用いて、ホスト上の自身のゲストオペレーティングシステムとともに動作する。テナント(すなわちVMのオーナー)は、どのアプリケーションをゲストオペレーティングシステム上で動作させるか選択することができる。一方、いくつかのコンテナは、ハイパーバイザ又は別のゲストオペレーティングシステムを必要とせずに、ホストオペレーティングシステム上で動作する構成物である。いくつかの実施形態では、ホストオペレーティングシステムはネームスペースを使用して、コンテナを互いに個別化し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループの、オペレーティングシステムレベルのセグメンテーションを提供する。このセグメンテーションは、システムハードウェアを仮想化するハイパーバイザ-仮想化環境で提供されるVMセグメンテーションと類似し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループを個別化する、仮想化の形式としてみることができる。このようなコンテナはVMより軽量である。
【0270】
いくつかの実施形態では、ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールは、ハイパーバイザ・カーネル・ネットワーク・インタフェースを有するネットワークスタックと受信/送信スレッドを含む、非VM・DCNである。ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールの一例は、VMware社のESXi(登録商標)ハイパーバイザの一部であるvmknicモジュールである。本明細書はVMを参照したが、所与の例は、物理ホスト、VM、非VMコンテナ、及びハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールを含む、任意の種別のDCNであってよいことを、当業者は認識するであろう。事実、ネットワークの例は、いくつかの実施形態では異なる種別のDCNの組み合わせを含んでよい。
【0271】
多数の図(例えば、図8-10、29および30)は処理を概念的に示すものである。これらの処理の特定の動作は、図示及び説明された正確な順序で実行されないかもしれない。特定の動作は、1つの連続する動作の流れで実行されないかもしれず、異なる特定の動作が異なる実施形態において実行され得る。更に、処理はいくつかの副処理(sub-process)を用いて、又は大きなマクロ処理の部分として実施され得る。前述に照らすと、当業者は、発明が上述の詳細に限定されず、むしろ添付の請求項の範囲によって定義されることを理解する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31