[go: up one dir, main page]

JP7502386B2 - Hierarchical API for defining multi-segment applications in SDDC - Google Patents

Hierarchical API for defining multi-segment applications in SDDC Download PDF

Info

Publication number
JP7502386B2
JP7502386B2 JP2022161790A JP2022161790A JP7502386B2 JP 7502386 B2 JP7502386 B2 JP 7502386B2 JP 2022161790 A JP2022161790 A JP 2022161790A JP 2022161790 A JP2022161790 A JP 2022161790A JP 7502386 B2 JP7502386 B2 JP 7502386B2
Authority
JP
Japan
Prior art keywords
application
segment
segments
sddc
rules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022161790A
Other languages
Japanese (ja)
Other versions
JP2022191348A (en
Inventor
シリシャ ミネニ,
アリジット チャンダ,
ラクミカント, ヴィタル グンダ,
アーノルド プーン,
ファルザド ガンナディアン,
カウスム クマール,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/112,408 external-priority patent/US11086700B2/en
Priority claimed from US16/112,396 external-priority patent/US10628144B2/en
Application filed by VMware LLC filed Critical VMware LLC
Publication of JP2022191348A publication Critical patent/JP2022191348A/en
Application granted granted Critical
Publication of JP7502386B2 publication Critical patent/JP7502386B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0209Architectural arrangements, e.g. perimeter networks or demilitarized zones
    • H04L63/0218Distributed architectures, e.g. distributed firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Description

本発明は、方法、機械可読媒体、コンピュータデバイス及びシステムに関する。 The present invention relates to a method, a machine-readable medium, a computer device and a system.

エンタープライズデータセンタでは、ファイアウォールは、該ファイアウォール上で実行されるアプリケーションのネットワーク形成とセキュリティの本質であった。それは、それぞれがサービスの使用が許可されたホスト及び/またはネットワークのリストを有し、ホストまたは他のレイヤ3で使用可能なポート番号またはIPアドレスに適用されるルールを提供する、アクセス制御リスト(ACL)に端を発する。ACLの後、マクロ・セグメンテーションは、ホスト上で実行されるすべてのアプリケーションにIPベースの実施を提供するようになった。これにより、企業管理者は、VLANに基づいてワークロードを保護するためのきめ細かなレベルの制御が可能になった。 In enterprise datacenters, firewalls have been the essence of networking and security for applications running on them. It started with Access Control Lists (ACLs), which provide rules that apply to hosts or other Layer 3 available port numbers or IP addresses, each with a list of hosts and/or networks that are allowed to use a service. After ACLs, macro-segmentation came to provide IP-based enforcement for all applications running on a host. This allowed enterprise administrators a granular level of control to secure workloads based on VLANs.

ネットワーク仮想化では、マイクロ・セグメンテーションにより、L4-L7ネットワークサービスと属性とに基づいて、データセンタ内のホスト間に分散したファイアウォールルールを実施する機能が提供されるため、ネットワークとセキュリティの領域を一変させた。トランスポート層でディープ・パケット・イントロスペクションを実行する能力を備え、Webアプリケーションフィルタリング、Verbベースのファイアウォール、URLフィルタリングを含む新しいファイアウォールがある。 Network virtualization has transformed the world of networking and security by providing the ability to enforce distributed firewall rules across hosts in the datacenter with micro-segmentation based on L4-L7 network services and attributes. There are new firewalls with the ability to perform deep packet introspection at the transport layer and include web application filtering, verb-based firewalls, and URL filtering.

図1は、マイクロ・セグメント化されたアプリケーションのファイアウォール制御を指定するための、現在のワークフローを示している。図示されるように、管理者はまず(105で)、どのアプリケーションを保護したいかのインテントを定義する必要がある。当該インテントに基づいて、管理者は(110で)、ドメインとグループを作成して、アプリケーションの各コンポーネントの境界を定義する必要がある。グループが作成されると、管理者は(115で)、通信プロファイルに基づいて、これらのコンポーネントが互いに通信可能となる方法を定義する。 Figure 1 shows the current workflow for specifying firewall controls for micro-segmented applications. As shown, an administrator must first define (at 105) the intent of which applications they want to protect. Based on that intent, the administrator must create (at 110) domains and groups to define the boundaries of each component of the application. Once groups are created, the administrator defines (at 115) how these components can communicate with each other based on communication profiles.

プロファイルおよびグループが作成された後、120で、ソフトウェア定義データセンタ(SDDC)ネットワークマネージャ150に結果のポリシーが発行される。ポリシーの発行後、管理者は、該管理者が制御するデータセンタのすべてのインスタンスについてネットワークマネージャにログインし、ドメインとグループの作成で指定されたグループ化基準に基づいて、(125で)ネットワーク及びセキュリティグループを作成する必要がある。当該基準は、論理スイッチポート、タグ、またはVM/コンテナ名に基づき得る。 After the profiles and groups are created, the resulting policies are published at 120 to the Software Defined Data Center (SDDC) Network Manager 150. After publishing the policies, the administrator must log into the Network Manager for all instances in the data center that the administrator controls and create (at 125) network and security groups based on the grouping criteria specified in the domain and group creation. The criteria can be based on logical switch ports, tags, or VM/container names.

管理者は、125におけるネットワーク及びセキュリティグループを作成する際に当該基準にマッチするよう、対応するタグを適用してワークロードVM/コンテナを手動で管理する(130)必要がある。タグが基準にマッチすると、(135で)通信プロファイルで定義されたファイアウォールルールが各VMに適用される。 The administrator must manually manage (130) the workload VMs/containers by applying corresponding tags to match the criteria when creating network and security groups at 125. Once the tags match the criteria, the firewall rules defined in the communication profile (at 135) are applied to each VM.

このアプローチにはいくつかの欠点がある。例えば、グループ化基準(タグ、VM名等)の管理は、手動で面倒である。これは、当該管理が複数の環境(例えば、開発、ステージング、及び生産)にわたって繰り返されなければならないため、特に問題である。さらに、アプリケーションの検出と分類は、管理上のオーバーヘッドであり、しばしばエラーを起こしやすい。このアプローチは、保護されているエンティティが本質的に一時的なものである場合、動的ワークロード(コンテナ等)環境に対してもスケーラブルではない。 This approach has several drawbacks. For example, managing grouping criteria (tags, VM names, etc.) is manual and tedious. This is especially problematic because such management must be repeated across multiple environments (e.g., development, staging, and production). Furthermore, application discovery and classification is an administrative overhead that is often error-prone. This approach is also not scalable for dynamic workload (e.g., container) environments, where the entities being protected are ephemeral in nature.

いくつかの実施形態は、マルチセグメントアプリケーションのアプリケーションセグメントがどのように定義または変更されるべきか、及びこれらのセグメント間の通信プロファイルがどのように定義または変更されるべきかを表現するアプリケーションベースのマニフェストを使用することにより、マルチセグメントアプリケーションをデプロイ及び制御するための簡略化されたメカニズムを提供する。いくつかの実施形態では、これらのマニフェストはアプリケーション固有のものである。また、いくつかの実施形態では、ソフトウェア定義データセンタ(SDDC)内のデプロイメントマネージャがこれらのマニフェストをテンプレートとして管理者に提供し、管理者は、データセンタ内にマルチセグメントアプリケーションをデプロイする際に、これらのテンプレートを使用してそのインテントを表現することができる。アプリケーションベースのマニフェストは、SDDCにおいて以前にデプロイされたマルチセグメントアプリケーションの制御にも使用できる。このようなマニフェストを使用することにより、管理者は、エンドポイント及びネットワーク属性に基づいてきめ細かなマイクロ・セグメンテーションルールを管理することができる。 Some embodiments provide a simplified mechanism for deploying and controlling multi-segment applications by using application-based manifests that express how the application segments of a multi-segment application should be defined or modified, and how the communication profiles between these segments should be defined or modified. In some embodiments, these manifests are application-specific. Also, in some embodiments, a deployment manager in a software-defined data center (SDDC) provides these manifests as templates to an administrator, who can use these templates to express his or her intent when deploying a multi-segment application in the data center. Application-based manifests can also be used to control previously deployed multi-segment applications in the SDDC. Using such manifests, an administrator can manage fine-grained micro-segmentation rules based on endpoint and network attributes.

マルチセグメントアプリケーションは、複数のアプリケーションセグメントを含むアプリケーションである。いくつかの実施形態では、1以上のアプリケーションセグメントのそれぞれは、マルチセグメントアプリケーションの他のアプリケーションセグメントのメモリ空間と独立した、独自のメモリ空間で実行されるスタンドアロンアプリケーションである。いくつかの実施形態では、マルチセグメントアプリケーションの異なるアプリケーションセグメントは、異なるマシン(例えば、異なるVMまたはコンテナ)によって実装される。 A multi-segment application is an application that includes multiple application segments. In some embodiments, each of the one or more application segments is a standalone application that runs in its own memory space, independent of the memory space of other application segments of the multi-segment application. In some embodiments, different application segments of a multi-segment application are implemented by different machines (e.g., different VMs or containers).

いくつかの実施形態では、アプリケーションマニフェストは、マニフェストを実装した後に定義されてもよいし、以前に定義されてもよい、マルチセグメントアプリケーションの構文表現を含む。いくつかの実施形態におけるアプリケーションマニフェストは、(1)1以上のアプリケーションセグメント、及び(2)それらに関連する1以上のポリシーを定義または変更する2以上のコマンドを含む階層型APIである。アプリケーションマニフェストは、異なるコマンドを他のコマンドの下に入れ子にすることができるので、階層型APIである。例えば、アプリケーションの1つのグループの定義は、グループ内の特定のアプリケーションを実装するための特定のマシン(例えば、特定のVM)の定義を含むことができる。いくつかの実施形態では、アプリケーションマニフェストは、管理者の要件に基づいてアプリケーションをモデル化する能力だけでなく、周知のアプリケーションとその依存関係をカプセル化する、事前定義されたテンプレートとして管理者に提供される。 In some embodiments, the application manifest includes a syntactic representation of a multi-segment application, which may be defined after implementing the manifest or may be defined previously. The application manifest in some embodiments is a hierarchical API that includes two or more commands that define or modify (1) one or more application segments and (2) one or more policies associated therewith. The application manifest is a hierarchical API because different commands can be nested under other commands. For example, the definition of a group of applications may include the definition of a specific machine (e.g., a specific VM) for implementing a particular application in the group. In some embodiments, the application manifest is provided to the administrator as a predefined template that encapsulates known applications and their dependencies, as well as the ability to model applications based on the administrator's requirements.

いくつかの実施形態では、マニフェストは宣言型言語で定義される。いくつかの実施形態では、SDDC内のマニフェスト処理フレームワークは、(1)マニフェスト内で定義されたマルチセグメントアプリケーションのアプリケーションセグメントをデプロイ及び構成するようにSDDC内のコンピュートマネージャに指示し、(2)マニフェストによって指定されたアプリケーションセグメント間及びアプリケーションセグメントと他のアプリケーションとの間の通信プロファイルを実装するためのネットワーク転送及びサービスルールを定義及びデプロイするようにSDDC内のネットワークマネージャに指示する、いくつかのコマンドにマニフェストをパースする。 In some embodiments, the manifest is defined in a declarative language. In some embodiments, a manifest processing framework in the SDDC parses the manifest into commands that (1) instruct a compute manager in the SDDC to deploy and configure application segments of a multi-segment application defined in the manifest, and (2) instruct a network manager in the SDDC to define and deploy network forwarding and service rules to implement communication profiles between application segments and between application segments and other applications specified by the manifest.

ある実施形態では、アプリケーションセグメントは、SDDC内のホストコンピュータ上で、及び/またはスタンドアロンコンピュータとして実行されるVMまたはコンテナとしてデプロイされる。同様に、ある実施形態におけるネットワーク転送及びサービスルールは、ソフトウェア転送要素(例えば、ソフトウェアスイッチ及びルータ)とソフトウェアミドルボックスサービスVM(例えば、SDDC内のホストコンピュータ上で実行されるサービスコンテナ及び/またはサービスモジュール)とによって処理される。これらの転送及び/またはサービスルールは、いくつかの実施形態では、SDDCにおけるハードウェア転送要素(例えば、トップオブラックスイッチ)、独立型ハードウェアまたはソフトウェアゲートウェイ、及び/または独立型ミドルボックスアプライアンス上にも構成される。 In some embodiments, application segments are deployed as VMs or containers that run on host computers in the SDDC and/or as standalone computers. Similarly, network forwarding and service rules in some embodiments are processed by software forwarding elements (e.g., software switches and routers) and software middlebox service VMs (e.g., service containers and/or service modules that run on host computers in the SDDC). These forwarding and/or service rules are also configured in some embodiments on hardware forwarding elements in the SDDC (e.g., top-of-rack switches), standalone hardware or software gateways, and/or standalone middlebox appliances.

本発明のいくつかの実施形態は、SDDCにおいてマルチセグメントアプリケーションをデプロイするための方法を提供する。方法は、最初に、マルチセグメントアプリケーションの複数のアプリケーションセグメントを定義するための複数の操作要求を宣言フォーマットで指定する、階層型APIコマンドを受信する。当該方法は、APIコマンドをパースしてアプリケーションセグメントを識別する。パースされたAPIコマンドに基づいて、方法は、複数のアプリケーションセグメントのデプロイに必要なソフトウェア定義(SD)リソースと、これらのセグメント間の転送及びサービス操作をデプロイする。 Some embodiments of the present invention provide a method for deploying a multi-segment application in an SDDC. The method first receives a hierarchical API command that specifies, in a declarative format, multiple operation requests for defining multiple application segments of the multi-segment application. The method parses the API command to identify the application segments. Based on the parsed API command, the method deploys software-defined (SD) resources required to deploy the multiple application segments and transport and service operations between those segments.

いくつかの実施形態では、方法が使用するデプロイメントプロセスは、第2のリソースが依存する任意の第1のSDリソースが、当該第2のリソースよりも先にデプロイされることを保証する。いくつかの実施形態では、第2のSDリソースが第1のSDリソースの子である場合、第2のSDリソースは第1のSDリソースに依存する。代替的に、または付随的に、いくつかの実施形態では、第2のSDリソースが第1のSDリソースに何らかの動作上の依存性を有する場合、第2のSDリソースは第1のSDリソースに依存することも可能である。 In some embodiments, the method uses a deployment process that ensures that any first SD resource on which a second resource depends is deployed before the second resource. In some embodiments, a second SD resource depends on a first SD resource if the second SD resource is a child of the first SD resource. Alternatively, or additionally, in some embodiments, a second SD resource may depend on a first SD resource if the second SD resource has any operational dependency on the first SD resource.

いくつかの実施形態では、方法は、各セットが1つのリソースレベルで1以上のSDリソースを有する、複数のSDリソースのセットを識別することにより、APIコマンドをパースする。いくつかの実施形態におけるデプロイは、より低いリソースレベルでSDリソースをデプロイする前に、より高いリソースレベルで識別されたSDリソースセットをデプロイする。階層型APIコマンドで指定可能なSDリソースの例には、アプリケーションセグメントを実装するためのSDコンピュート要素(例えば、VMまたはコンテナ)、アプリケーションセグメントに関連するデータメッセージを転送するための転送ルールを実装するためのSD転送要素(例えば、管理されたソフトウェアスイッチ及びルータ、該管理されたソフトウェアスイッチ及びルータによって実装される論理スイッチ及びルータ等)、及びアプリケーションセグメントに関連するデータメッセージにサービスを実行するためのサービスルールを実施するためのSDサービスミドルボックスモジュール(例えば、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検知操作、侵入防御操作等のミドルボックスサービス操作を実行するサービスVMまたはモジュール)が含まれる。 In some embodiments, the method parses the API command by identifying a set of SD resources, each set having one or more SD resources at a resource level. In some embodiments, the deployment deploys the identified SD resource set at a higher resource level before deploying the SD resources at a lower resource level. Examples of SD resources that can be specified in a hierarchical API command include SD compute elements (e.g., VMs or containers) for implementing application segments, SD forwarding elements (e.g., managed software switches and routers, logical switches and routers implemented by the managed software switches and routers, etc.) for implementing forwarding rules for forwarding data messages associated with the application segments, and SD service middlebox modules (e.g., service VMs or modules that perform middlebox service operations such as firewall operations, load balancing operations, network address translation operations, encryption operations, intrusion detection operations, intrusion prevention operations, etc.) for implementing service rules for performing services on data messages associated with the application segments.

ある実施形態では、API処理システムがAPIコマンドを処理する。このコマンドは、以前にデプロイされたSDリソースを更新するための一連のパラメータを含むことができる。この場合、API処理システムは、パースされたAPIコマンドで指定された一連のパラメータを使用して、マルチセグメントアプリケーションに対して先にデプロイされたSDリソースを更新することで、マルチセグメントアプリケーションをデプロイする。このような場合、APIコマンドには、新しいSDリソースを定義する一連のパラメータが含まれる。このような場合、API処理システムは、パースされたAPIコマンドで指定された一連のパラメータに基づいてSDリソースをデプロイすることによって、SDリソースをデプロイする。 In one embodiment, an API processing system processes an API command. The command may include a set of parameters for updating a previously deployed SD resource. In this case, the API processing system deploys the multi-segment application by updating a previously deployed SD resource for the multi-segment application using the set of parameters specified in the parsed API command. In such a case, the API command includes a set of parameters that define a new SD resource. In such a case, the API processing system deploys the SD resource by deploying the SD resource based on the set of parameters specified in the parsed API command.

いくつかの実施形態では、階層型APIコマンドが1つのアトミックユニットとして処理される。従って、API処理システムは、階層型APIコマンド内の識別されたSDリソースがデプロイ可能であるか否かを判断する。もしそうであれば、API処理システムは、APIコマンドが正常に処理されたという確認を、階層型APIコマンドを生成したソースに送信する。そうでなければ、APIコマンド内の1以上のSDリソースがデプロイ可能でない場合、API処理システムは、APIコマンドが正常に処理されていないというメッセージを、階層型APIコマンドを生成したソースに送信する。 In some embodiments, the hierarchical API command is processed as one atomic unit. Thus, the API processing system determines whether the SD resources identified in the hierarchical API command are deployable. If so, the API processing system sends a confirmation to the source that generated the hierarchical API command that the API command was successfully processed. Otherwise, if one or more SD resources in the API command are not deployable, the API processing system sends a message to the source that generated the hierarchical API command that the API command was not successfully processed.

いくつかの実施形態は、データコンピュートエンドポイントからのコンテキストをネットワークに結び付けることによって、次世代のマイクロ・セグメンテーションのための道を開く。エンドポイントベースのコンテキストは、ファイルハッシュ、パブリッシャ情報、ライセンス、プロセス情報等のアプリケーション固有の属性だけでなく、ユーザIDにも関連し得る。いくつかの実施形態では、コンテキスト情報は、(例えば、仮想化されたネットワーク装置を介して)SDDCに配置されたディストリビュータにデプロイされる、アプリケーションベースのファイアウォールによって使用される。アプリケーションベースのファイアウォールをコモディティ化する最大の課題の1つは、このような複雑なファイアウォールの消費モデルであり、これはエンドポイント内では何千ものプロセスが、データセンタ内では何百万ものプロセスが実行され得るからである。しかしながら、アプリケーションマニフェストを使用することにより、いくつかの実施形態は、きめ細かなコンテキストベースのルールを作成し、これらのルールを管理する非常に困難なタスクを管理することを管理者に可能ならしめる新規なアプローチを提供する。 Some embodiments pave the way for next-generation micro-segmentation by binding context from data compute endpoints to the network. Endpoint-based context can be related to user identity as well as application-specific attributes such as file hashes, publisher information, licenses, process information, etc. In some embodiments, the context information is used by application-based firewalls that are deployed to distributors located in SDDC (e.g., via virtualized network appliances). One of the biggest challenges in commoditizing application-based firewalls is the complex consumption model of such firewalls, since there may be thousands of processes running within an endpoint and millions of processes running within a data center. However, by using application manifests, some embodiments provide a novel approach that allows administrators to create fine-grained context-based rules and manage the very difficult task of managing these rules.

前述の概要は、本発明のいくつかの実施形態の簡単な紹介として役立つことを意図している。これは、本文書に開示されたすべての発明主題の紹介または概略であることを意味するものではない。以下の詳細な説明及び当該詳細な説明で参照される図面は、概要で説明された実施形態、並びに他の実施形態をさらに説明する。従って、本文書により説明されるすべての実施形態を理解するために、概要、詳細な説明、図面、及び特許請求の範囲の完全な検討が必要である。また請求される主題は、概要、詳細な説明、及び図面における例示的な詳細によって限定されるべきではない。 The foregoing summary is intended to serve as a brief introduction to some embodiments of the present invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The following detailed description and the figures referenced in the detailed description further describe the embodiments described in the summary, as well as other embodiments. Thus, a complete review of the summary, detailed description, drawings, and claims is necessary to understand all embodiments described herein. Also, the claimed subject matter should not be limited by the illustrative details in the summary, detailed description, and drawings.

本発明の新規な特徴は、添付の特許請求の範囲に記載されている。しかしながら、説明の目的のため、本発明のいくつかの実施形態は以下の図面に記載される。 The novel features of the invention are set forth in the appended claims. However, for purposes of illustration, certain embodiments of the invention are set forth in the following drawings.

図1は、マイクロ・セグメント化されたアプリケーションのファイアウォール制御を指定するための現在のワークフローを示している。FIG. 1 illustrates the current workflow for specifying firewall controls for micro-segmented applications. 図2は、SDDCでテナント管理者から受信したアプリケーションマニフェストを処理するマニフェスト処理フレームワークを示している。FIG. 2 illustrates a manifest processing framework for processing application manifests received from a tenant administrator at the SDDC. 図3は、マニフェスト処理フレームワークの構成要素の操作を示すプロセスを示している。FIG. 3 illustrates a process illustrating the operation of the components of the manifest processing framework. , , , , 図4A~Eは、Slackと呼ばれるマルチセグメントアプリケーションを定義するアプリケーションマニフェストの例を示している。4A-E show an example application manifest that defines a multi-segment application called Slack. 図5は、Slackの例を示している。FIG. 5 shows an example of Slack. 図6は、図5に示したアプリケーションのデータモデルを示している。FIG. 6 shows a data model for the application shown in FIG. 図7は、マニフェストテンプレートに基づいてマルチセグメントアプリケーションを定義及びデプロイするための例示的なフローを表したプロセスを示している。FIG. 7 shows a process illustrating an example flow for defining and deploying a multi-segment application based on a manifest template. 図8は、いくつかの実施形態のためのこの新しい分類エンジンのアーキテクチャを示している。FIG. 8 illustrates the architecture of this new classification engine for some embodiments. 図9は、本発明のいくつかの実施形態のAPI処理システムの一例を示している。FIG. 9 illustrates an example of an API processing system according to some embodiments of the present invention. 図10は、いくつかの実施形態が、どのようにコンテキストベースのファイアウォールルールをホストコンピュータで実施するかを示している。FIG. 10 illustrates how some embodiments implement context-based firewall rules on a host computer. 図11は、データセンタ内のマルチセグメントアプリケーションのデプロイメントについて学習するためのデータ収集の例を示している。FIG. 11 shows an example of data collection to learn about the deployment of multi-segment applications in a data center. 図12は、本発明のいくつかの実施形態が実装されるコンピュータシステムを概念的に示している。FIG. 12 conceptually illustrates a computer system upon which some embodiments of the present invention may be implemented.

発明の以下の詳細な説明では、本発明の多数の詳細、実施例、及び実施形態が記載及び説明される。しかしながら、本発明は記載された実施形態に限定されるものではなく、そして本発明は記載された特定の詳細及び例のいくつかがなくても実施され得ることは、当業者には明白であり、明らかであろう。 In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are described and explained. However, it will be apparent and clear to one skilled in the art that the invention is not limited to the described embodiments, and that the invention may be practiced without some of the specific details and examples described.

いくつかの実施形態は、マルチセグメントアプリケーションをデプロイ及び制御し、マルチセグメントアプリケーションのセグメント間の通信プロファイルを定義するための単純化されたメカニズムを提供する、新規なアプリケーションベースのマニフェストを提供する。マルチセグメントアプリケーションは、複数のアプリケーションセグメントを含むアプリケーションである。いくつかの実施形態では、各アプリケーションセグメントは、マルチセグメントアプリケーションの任意の他のアプリケーションセグメントのメモリ空間から分離された、固有のメモリ空間で実行されるスタンドアロンアプリケーションであってよい。いくつかの実施形態では、マルチセグメントアプリケーションの異なるアプリケーションセグメントは、異なるマシン(例えば、異なるVMまたはコンテナ)によって実装される。 Some embodiments provide a novel application-based manifest that provides a simplified mechanism for deploying and controlling a multi-segment application and for defining communication profiles between segments of a multi-segment application. A multi-segment application is an application that includes multiple application segments. In some embodiments, each application segment may be a standalone application that runs in its own memory space, separate from the memory space of any other application segments of the multi-segment application. In some embodiments, different application segments of a multi-segment application are implemented by different machines (e.g., different VMs or containers).

いくつかの実施形態では、ソフトウェア定義データセンタ(SDDC)内のデプロイメントマネージャが、これらのマニフェストをテンプレートとして管理者に提供する。管理者は、これらのテンプレートを使用して、データセンタにマルチセグメントアプリケーションをデプロイする際のインテントを示すことができる。アプリケーションベースのマニフェストは、SDDCにおいて以前にデプロイされたマルチセグメントアプリケーションの制御にも使用できる。このようなマニフェストを使用することにより、管理者は、エンドポイント及びネットワーク属性に基づいてきめ細かなマイクロ・セグメンテーションルールを管理することができる。 In some embodiments, a deployment manager in the software-defined data center (SDDC) provides these manifests as templates to administrators. Administrators can use these templates to indicate their intent in deploying multi-segment applications in the data center. Application-based manifests can also be used to control previously deployed multi-segment applications in the SDDC. Using such manifests, administrators can manage fine-grained micro-segmentation rules based on endpoint and network attributes.

本文書では、データメッセージは、ネットワークを介して送信される特定のフォーマットのビットのコレクションを参照する。本明細書において、データメッセージという文言が、イーサネットフレーム、IPパケット、TCPセグメント、UDPデータグラム等、ネットワークを介して送信され得る種々のフォーマットのビット集合を参照するために用いられ得ることは、当業者により理解されるであろう。また、本文書で用いられるように、L2、L3、L4、及びL7レイヤ(またはレイヤ2、レイヤ3、レイヤ4、及びレイヤ7)への参照は、それぞれ、OSI(Open System Interconnection)レイヤモデルの第2層のデータリンク層、第3層のネットワーク層、第4層のトランスポート層、及び第7層のアプリケーション層への参照である。 In this document, a data message refers to a collection of bits in a particular format that is sent over a network. It will be understood by those skilled in the art that the term data message may be used herein to refer to a collection of bits in various formats that may be sent over a network, such as an Ethernet frame, an IP packet, a TCP segment, a UDP datagram, etc. Also, as used in this document, references to the L2, L3, L4, and L7 layers (or layers 2, 3, 4, and 7) are references to the data link layer at layer 2, the network layer at layer 3, the transport layer at layer 4, and the application layer at layer 7, respectively, of the Open System Interconnection (OSI) layer model.

図2は、SDDCにおいてテナント管理者から受信したアプリケーションマニフェストを処理するマニフェスト処理フレームワーク200を示している。当該処理に基づいて、フレームワーク200は、SDDC内のコンピュートマネージャ及びネットワークマネージャと対話しすることで、マルチセグメントアプリケーションをデプロイし、SDDC内の転送及びサービス要素を構成し、該アプリケーションのセグメント間、及びこれらのセグメントとSDDCの内部及び外部の他のアプリケーション及びデバイスとの間で、所望の通信ルールを設定する。いくつかの実施形態では、アプリケーションマニフェストはまた、以前にデプロイされたマルチセグメントアプリケーション、及び/または以前にデプロイされたセグメントのための以前に構成された通信プロファイルを調整するための要求を含むことができる。 FIG. 2 illustrates a manifest processing framework 200 that processes application manifests received from tenant administrators in the SDDC. Based on the processing, the framework 200 interacts with compute and network managers in the SDDC to deploy the multi-segment application, configure transport and service elements in the SDDC, and set desired communication rules between the application's segments and between those segments and other applications and devices inside and outside the SDDC. In some embodiments, the application manifest can also include requests to adjust previously configured communication profiles for previously deployed multi-segment applications and/or previously deployed segments.

図示されるように、マニフェストフレームワークは、パーサ205、制約チェッカ210、ソータ220、オーケストレータ230、いくつかのルール及びポリシーストレージ215、225、及び235を含む。これら構成要素の操作は、当該構成要素がアプリケーションマニフェストのために実行するプロセス300を示した図3を参照して説明される。図示されるように、プロセス300は、マニフェスト処理フレームワーク200が(305で)管理者のマシン260から(例えば、アプリケーションマニフェストを指定するために管理者によって使用されるVM、コンテナ、またはスタンドアロンコンピュータから)アプリケーションマニフェストを受信した際に開始する。上述し、以下でさらに説明するように、いくつかの実施形態では管理者は、マニフェスト255を指定するために、マニフェストフレームワークによって提供されるアプリケーションマニフェストテンプレートを使用することができる。 As shown, the manifest framework includes a parser 205, a constraint checker 210, a sorter 220, an orchestrator 230, and several rule and policy storages 215, 225, and 235. The operation of these components is described with reference to FIG. 3, which illustrates the process 300 that the components execute for an application manifest. As shown, the process 300 begins when the manifest processing framework 200 receives (at 305) an application manifest from an administrator's machine 260 (e.g., from a VM, container, or standalone computer used by the administrator to specify the application manifest). As mentioned above and further described below, in some embodiments, the administrator can use an application manifest template provided by the manifest framework to specify the manifest 255.

いくつかの実施形態において、アプリケーションマニフェスト255は、マルチセグメントアプリケーションの構文表現を含む。いくつかの実施形態のアプリケーションマニフェストは、(1)1以上のアプリケーションセグメント、及び(2)各アプリケーションセグメントと、別のアプリケーションセグメントまたはSDDCの内部または外部の別のアプリケーション/マシンとの間の1以上の通信プロファイルを定義または修正する、2以上のコマンドを含む階層型APIである。 In some embodiments, the application manifest 255 includes a syntactic representation of a multi-segment application. The application manifest of some embodiments is a hierarchical API that includes two or more commands that define or modify (1) one or more application segments and (2) one or more communication profiles between each application segment and another application segment or another application/machine inside or outside the SDDC.

アプリケーションマニフェストは、異なるコマンドを他のコマンドの下に入れ子にすることができる階層型APIであるため、例えば、ドメイン定義はアプリケーションセグメントグループ定義を含むことができ、その順番にアプリケーションセグメントを実装するための1以上のマシン(例えば、特定のVMまたはコンテナ)の1以上の定義を含むことができる。いくつかの実施形態では、マニフェストは宣言型言語で定義される。例えば、マニフェストはある実施形態ではJavascript Object Notation(JSON)フォーマットで書かれるが、他の実施形態ではXML(Extensible Markup Language)フォーマットのような他の階層型フォーマットで表現され得る。 The application manifest is a hierarchical API that allows different commands to be nested under other commands, so that, for example, a domain definition can include an application segment group definition, which in turn can include one or more definitions of one or more machines (e.g., specific VMs or containers) for implementing the application segments. In some embodiments, the manifest is defined in a declarative language. For example, in one embodiment, the manifest is written in Javascript Object Notation (JSON) format, but in other embodiments, the manifest can be expressed in other hierarchical formats, such as Extensible Markup Language (XML) format.

アプリケーションマニフェスト255を受信した後、フレームワーク200のパーサ205は、マニフェストに含まれるいくつかの異なる要求(コマンド)を(310で)識別する。たとえば、典型的な3層アプリケーションでは、マニフェストはWebサーバ、アプリケーションサーバ、データベースサーバのデプロイメントを指定できる。このような状況では、パーサはマニフェストを1以上のコマンドの3つのセットにパースし、各セットは、1つの層のデプロイメント(例えばWebサーバ、アプリサーバ、またはデータベースサーバのデプロイメント)に関連付けられる。ある実施形態では、パーサは、マニフェストから入力APIツリーを生成する。入力APIツリーは、マニフェストの異なる部分間の親子関係を表す。 After receiving the application manifest 255, the parser 205 of the framework 200 identifies (at 310) several different requests (commands) contained in the manifest. For example, in a typical three-tier application, the manifest may specify the deployment of a web server, an application server, and a database server. In such a situation, the parser parses the manifest into three sets of one or more commands, each set associated with a deployment of one tier (e.g., a deployment of a web server, an app server, or a database server). In one embodiment, the parser generates an input API tree from the manifest. The input API tree represents the parent-child relationships between the different parts of the manifest.

パーサがマニフェストをいくつかの個別の要求に分割した後、制約チェッカ210は、個別の要求のいずれかが、その制約ストレージ215に格納されたポリシー制約に違反するか否かを(315で)判定する。もしそうであれば、フレームワークは管理者にエラーを返す。そうではない場合、ソータ220は、これらの要求を実装するためのソートされた順序を(320で)識別する。このソートされた順序を識別するために、いくつかの実施形態では、ソータは、マニフェストで識別された各SDリソースをそのタイプに従って識別するタイプ固有マップを構築する。これを行うために、いくつかの実施形態では、ソータは、パーサによってマニフェストから構築された入力APIツリーの幅優先探索を実行し、リソースタイプに基づいて入力を異なるバケットに分類し、分類された入力をタイプ固有マップに格納する。 After the parser splits the manifest into individual requests, the constraint checker 210 determines (at 315) whether any of the individual requests violate the policy constraints stored in its constraint storage 215. If so, the framework returns an error to the administrator. If not, the sorter 220 identifies (at 320) a sorted order for implementing these requests. To identify this sorted order, in some embodiments, the sorter builds a type-specific map that identifies each SD resource identified in the manifest according to its type. To do this, in some embodiments, the sorter performs a breadth-first search of the input API tree built from the manifest by the parser, classifies the inputs into different buckets based on resource type, and stores the classified inputs in the type-specific map.

タイプ固有マップ内の各キーはリソースタイプであり、各キーの値は入力APIツリー内の特定のタイプのすべてのリソースのリストである。各ノード要素は、その親とともに格納される。要約すると、入力APIツリーはリソースタイプ、例えば、1つのバケット内のすべての領域、別のバケット内のすべてのグループ等に基づいて分類される。タイプ固有マップを生成した後、ソータは入力APIツリーにSDリソースを永続化するための実行順序を定義する。ある実施形態では、実行順序は、リソースタイプの事前定義された順序付きリストである。当該リストは、入力ツリー内のリソースを永続化する順序を規定する。新たな型がシステムに導入された場合、実行順序は、該新たな要素の順序を含むように動的に更新される。例えば、いくつかの実施形態におけるサンプル実行順序は、(1)領域、(2)グループ、及び(3)通信マップであってよい。つまり、最初に領域、次にグループ、次に通信マップを作成する必要がある。 Each key in the type-specific map is a resource type, and the value of each key is a list of all resources of a particular type in the input API tree. Each node element is stored with its parent. In summary, the input API tree is sorted based on resource type, e.g., all areas in one bucket, all groups in another bucket, etc. After generating the type-specific map, the sorter defines an execution order for persisting SD resources in the input API tree. In one embodiment, the execution order is a predefined ordered list of resource types that specifies the order in which resources in the input tree are persisted. When new types are introduced into the system, the execution order is dynamically updated to include the order of the new elements. For example, a sample execution order in some embodiments may be (1) areas, (2) groups, and (3) communication maps. That is, areas must be created first, then groups, then communication maps.

次に、ソータはサービスプロバイダレジストリを使用して、構成されたAPIツリー内のSDリソースを永続化する。サービスプロバイダレジストリは、コールバックハンドラへのリソースタイプのマップである。コールバックハンドラは、システム内のタイプごとに登録される。コールバックハンドラの責任は、登録されたタイプを永続化することである。以下にさらに説明されるように、コールバックハンドラは、いくつかの実施形態においてデプロイメントプラグインにより実装される。デプロイメントプラグインは、API処理システムに接続して、受信されたAPIによって要求された変更の永続化、及び永続化された変更のデプロイを処理するモジュールである。 The sorter then uses the service provider registry to persist the SD resources in the configured API tree. The service provider registry is a map of resource types to callback handlers. A callback handler is registered for each type in the system. The responsibility of the callback handler is to persist the registered types. As described further below, the callback handler is implemented by a deployment plugin in some embodiments. The deployment plugin is a module that connects to the API processing system and handles the persistence of changes requested by received APIs and the deployment of persisted changes.

ソータが呼び出し順序を識別し、当該順序に基づいてコールバックハンドラを呼び出してデプロイメントデータを1以上の構成データベースに永続化させると、オーケストレータ230は1以上のネットワーク、コンピュート、及び/またはサービスマネージャ240と(325で)相互作用し、構成データベースに永続化された構成データに基づいてSDリソース250をデプロイする。いくつかの実施形態では、オーケストレータ230は、構成データベースにデータを永続化するためのコールバックハンドラも実装されたデプロイメントプラグインによって実装される。 Once the sorter identifies the invocation order and invokes the callback handlers based on the invocation order to persist the deployment data to one or more configuration databases, the orchestrator 230 interacts (at 325) with one or more network, compute, and/or service managers 240 to deploy SD resources 250 based on the configuration data persisted in the configuration databases. In some embodiments, the orchestrator 230 is implemented by a deployment plugin that also implements callback handlers for persisting data to the configuration databases.

また、いくつかの実施形態では、SDDCリソースマネージャ240は、1以上のSDDCリソースコントローラ245を使用して、マルチセグメントアプリケーション及びそれに関連する通信プロファイルをSDDCリソース250にデプロイする。このようなリソースの例は、ホストコンピュータ、VM、コンテナ、ソフトウェア及びハードウェア転送要素、ソフトウェア及びハードウェアミドルボックスサービス要素等を含む。リソースマネージャ及びコントローラ240及び245は、(1)マニフェストで定義されたマルチセグメントアプリケーションのアプリケーションセグメントをデプロイ及び構成するコンピュートマネージャ及びコントローラと、(2)マニフェストで指定されたアプリケーションセグメントの通信プロファイルを実装するためのネットワーク転送及びサービスルールを定義及びデプロイするネットワークマネージャ及びコントローラとを含む。 In some embodiments, SDDC resource manager 240 also deploys the multi-segment application and its associated communication profile to SDDC resources 250 using one or more SDDC resource controllers 245. Examples of such resources include host computers, VMs, containers, software and hardware forwarding elements, software and hardware middlebox service elements, etc. Resource managers and controllers 240 and 245 include (1) compute managers and controllers that deploy and configure application segments of the multi-segment application defined in the manifest, and (2) network managers and controllers that define and deploy network forwarding and service rules to implement the communication profiles of the application segments specified in the manifest.

ある実施形態では、アプリケーションセグメントはホストコンピュータ上で実行するVMまたはコンテナとして、及び/またはスタンドアロンコンピュータとして、SDDCにデプロイされる。同様に、いくつかの実施形態におけるネットワーク転送及びサービスルールは、ソフトウェア転送要素(例えば、ソフトウェアスイッチ及びルータ)と、SDDC内のホストコンピュータ上で実行するソフトウェアミドルボックスサービスVM、サービスコンテナ及び/またはサービスモジュールによって処理される。これらの転送及び/またはサービスルールは、いくつかの実施形態では、SDDC内の、ハードウェア転送要素(例えば、トップオブラックスイッチ)、スタンドアロンハードウェアまたはソフトウェアゲートウェイ、及び/または独立型ミドルボックスアプライアンスにおいても構成される。 In some embodiments, application segments are deployed in an SDDC as VMs or containers running on host computers and/or as standalone computers. Similarly, network forwarding and service rules in some embodiments are processed by software forwarding elements (e.g., software switches and routers) and software middlebox service VMs, service containers, and/or service modules running on host computers in the SDDC. These forwarding and/or service rules are also configured in hardware forwarding elements (e.g., top-of-rack switches), standalone hardware or software gateways, and/or standalone middlebox appliances in the SDDC in some embodiments.

図4は、Slackと呼ばれるマルチセグメントアプリケーションを定義するアプリケーションマニフェストの例を示している。この例のアプリケーションマニフェストは、マニフェスト処理フレームワークに送信する実際のアプリケーションマニフェストを定義するために使用され得る、階層型APIテンプレート400である。このようなテンプレートは、マルチセグメントアプリケーションをデプロイするためにしばしば順番に呼び出される、共通のセットを指定するメカニズムを提供する。テンプレートAPIを利用することで、管理者は一連のAPIを最初から定義することなく、共通の要求セットをデプロイできる。 Figure 4 shows an example application manifest that defines a multi-segment application called Slack. The application manifest in this example is a hierarchical API template 400 that can be used to define the actual application manifest to send to the manifest processing framework. Such a template provides a mechanism to specify a common set of APIs that are often called in sequence to deploy a multi-segment application. By utilizing template APIs, an administrator can deploy a common set of requirements without having to define a set of APIs from scratch.

マニフェストテンプレート400から実際のマルチセグメントアプリケーションマニフェストを指定するには、いくつかの実施形態では、管理者は、マニフェストになるテンプレートのコピーにおいて、プレースホルダフィールドと呼ばれる限られた数のフィールドを修正するだけでよい。この観点から、テンプレートAPIは、ブランクフィールドまたはプレースホルダを有する、(1以上のリソースに関しての)1以上の要求セットである。プレースホルダアプリケーション名、アプリケーション識別子(App_ID)、プロセス名、プロセスハッシュ、ユーザ識別子、またはマルチセグメントアプリケーションテンプレートで用いられるその他のキー値ペアの例。一部の実施形態では、管理者は、実際のマニフェストになるテンプレートのコピーの他の構成要素(例えば、セグメントの追加、通信ルールの追加または削除、通信ルールパラメータの変更等)も変更できる。 To specify the actual multi-segment application manifest from the manifest template 400, in some embodiments, the administrator need only modify a limited number of fields, called placeholder fields, in the copy of the template that will become the manifest. From this perspective, the template API is a set of one or more requests (for one or more resources) with blank fields or placeholders. Placeholders are application name, application identifier (App_ID), process name, process hash, user identifier, or other examples of key-value pairs used in a multi-segment application template. In some embodiments, the administrator can also modify other components of the copy of the template that will become the actual manifest (e.g., adding segments, adding or removing communication rules, changing communication rule parameters, etc.).

いくつかの実施形態において、APIテンプレートは管理されたリソースである。このことは、プレースホルダのリスト及びAPIオブジェクトであるボディにより表される。図4のAPIテンプレート400は、Slackアプリケーションをデプロイするためのものである。図5は、Slackアプリケーション500の例示的なデプロイメントを示している。このアプリケーションは、図6に図式されたデータモデルを有する。アプリケーション500及びデータモデル600の両方は、アプリケーションマニフェスト400の部分をさらに説明するために、以下でさらに説明される。 In some embodiments, the API template is a managed resource. This is represented by a list of placeholders and a body that is an API object. The API template 400 in FIG. 4 is for deploying a Slack application. FIG. 5 shows an example deployment of a Slack application 500. This application has a data model diagrammed in FIG. 6. Both the application 500 and the data model 600 are further described below to further explain portions of the application manifest 400.

アプリケーションマニフェスト400は、ツリーフォーマットと同等の階層型JSONフォーマットである。ツリーの各ノードは、SDDCリソースに対応しており、該ノードのリソースタイプを記述するフィールドを有する。各ノードは、親子関係を示すノードのすべての子を保持する特別なプロパティを有する。子ノードは、順番に複数の子を有することができ、これは任意の深さに行くことができる。従って、各ノードは、(ツリー内の非リーフノードと同様に)同時に親及び子になり得る。 The application manifest 400 is a hierarchical JSON format that is equivalent to a tree format. Each node in the tree corresponds to an SDDC resource and has a field that describes the resource type of the node. Each node has a special property that holds all the children of the node, indicating the parent-child relationships. A child node can in turn have multiple children, and this can go to any depth. Thus, each node can be both a parent and a child at the same time (as can non-leaf nodes in the tree).

図4において、各ノードは、ノードのタイプを記述するプロパティ「resource_type」を有する。いくつかの実施形態におけるタイプの例は、Infra、Tenant、Domain、Group、CommunicationMap、CommunicationEntry等を含む。これらはすべて、データセンタ内の異なるタイプのリソースである。1つのノードは、該ノードのすべての子を保持するプロパティ「children」を有することもできる。例えば図4において、タイプDomain410のノードはタイプInfra405の子であり、「Group」及び「CommunicationMap」である2つの異なるタイプの子415~450を有する。いくつかの実施形態において、TenantはマルチテナントSDDCにおけるテナントを参照し、Domainはテナント下のワークロードであり、CommunicationMapはセキュリティポリシーであり、CommunicationEntryはセキュリティポリシー下のルールである。 In FIG. 4, each node has a property "resource_type" that describes the type of the node. Examples of types in some embodiments include Infra, Tenant, Domain, Group, CommunicationMap, CommunicationEntry, etc. These are all different types of resources in a data center. A node can also have a property "children" that holds all the children of the node. For example, in FIG. 4, a node of type Domain 410 is a child of type Infra 405 and has two different types of children 415-450, which are "Group" and "CommunicationMap". In some embodiments, Tenant refers to a tenant in a multi-tenant SDDC, Domain is a workload under the tenant, CommunicationMap is a security policy, and CommunicationEntry is a rule under the security policy.

いくつかの実施形態では、各SDリソースは、すべての分類上の親が含まれる、ルートからの一意のパスで識別され得る。例えば、/VMwareは、テナントVMwareに関連付けられているすべてのリソースを指定する。path/VMware/domains/Outlookは、テナントVMwareのすべてのOutlookワークロードを指定する。パス/VMware/domains/Outlook/communication-maps/web-profileは、テナントVMwareのOutlookワークロードのwebプロファイルを指定する。パス/vmware/domains/Outlook/communicationmaps/web-profile/communication-entries/open-browser-accessは、テナントVMwareのOutlookワークロードのオープンブラウザアクセスを指定する。より一般的には、セキュリティポリシーのパスのフォーマットは/<tenant-name>/domains/<workload-name>/communication-maps/<security-policyname>/communication-entries/<rule-name>のように指定できる。 In some embodiments, each SD resource may be identified by a unique path from the root that includes all taxonomic parents. For example, /VMware specifies all resources associated with tenant VMware. The path /VMware/domains/Outlook specifies all Outlook workloads for tenant VMware. The path /VMware/domains/Outlook/communication-maps/web-profile specifies the web profile for Outlook workloads for tenant VMware. The path /vmware/domains/Outlook/communicationmaps/web-profile/communication-entries/open-browser-access specifies the open browser access for Outlook workloads for tenant VMware. More generally, the format of a security policy path may be specified as /<tenant-name>/domains/<workload-name>/communication-maps/<security-policyname>/communication-entries/<rule-name>.

図4に示されるように、このマニフェストテンプレート400は、プレースホルダーリスト404と共に名前402とテンプレートの説明403を提供する、テンプレートヘッダ401を含む。マニフェストテンプレート400は、11の要求405~480も含む。要求405は、Infraと呼ばれる構成を作成するためのものである。この構成は、要求405~450によって定義される8つの子を有する。要求410は、slack_appという領域を定義する。 As shown in FIG. 4, this manifest template 400 includes a template header 401 that provides a name 402 and a description 403 of the template along with a placeholder list 404. The manifest template 400 also includes eleven requirements 405-480. Request 405 is to create a configuration called Infra. This configuration has eight children defined by requirements 405-450. Request 410 defines an area called slack_app.

要求415~445は、slack_appマルチセグメントアプリケーションの7つのアプリケーションセグメントを定義する。これら7つのセグメントが、図5に示されている。図示されるように、これら7つのセグメントは、(要求415によって定義される)slack共有515、(要求420によって定義される)slackベース520、(要求425によって定義される)slackコール525、(要求430によって定義される)slack編集530、(要求435によって定義される)slackダウンロード535、(要求440によって定義される)slackアップロード540、及び(要求445によって定義される)slackファイル転送545を含む。各セグメントについての各要求415~445は、当該セグメントが、当該セグメントの名前(識別子)と等しく設定されたキーでタグ付けされたVMによって実装されることを指定する。 Requests 415-445 define seven application segments for the slack_app multi-segment application. These seven segments are illustrated in FIG. 5. As illustrated, these seven segments include slack share 515 (defined by request 415), slack base 520 (defined by request 420), slack call 525 (defined by request 425), slack edit 530 (defined by request 430), slack download 535 (defined by request 435), slack upload 540 (defined by request 440), and slack file transfer 545 (defined by request 445). Each request 415-445 for each segment specifies that the segment is implemented by a VM tagged with a key set equal to the name (identifier) of the segment.

図5及び図6は、これらのセグメント間の通信がslackベース520を通ることを示している。このように、要求450は、slackベース520と他のセグメント515及び525~545のそれぞれとの間のデータメッセージ交換に関する6つの通信ルール(即ち、通信エントリ)に関して、これらのセグメント間の通信プロファイル(すなわち、通信マップ)を定義する。いくつかの実施形態では、これらの6つの通信規則は、データプレーン内のファイアウォールルールによって実装される。図5はまた、いくつかの実施形態において、通信ルール(例えば、ファイアウォールルール)は、appID、プロセス名等、任意の数の異なるコンテキスト属性に基づき得ることを示している。 5 and 6 show that communication between these segments passes through slack base 520. Thus, request 450 defines a communication profile (i.e., a communication map) between these segments in terms of six communication rules (i.e., communication entries) for data message exchange between slack base 520 and each of the other segments 515 and 525-545. In some embodiments, these six communication rules are implemented by firewall rules in the data plane. FIG. 5 also shows that in some embodiments, communication rules (e.g., firewall rules) can be based on any number of different context attributes, such as app ID, process name, etc.

図示されるように、各通信エントリは、データメッセージのソース(例えば、ソースグループ)、データメッセージの宛先(例えば、宛先グループ)、通信が許可されるか拒否されるかを指定するアクション、及びデータメッセージによって使用されるサービス、ポート及び/またはプロトコルのセットで表現される。通信マップはまた、図5に示されるアクティブディレクトリサービス590とslackベースがどのように通信するかを指定するルール480(即ち、通信エントリ)を定義する。いくつかの実施形態では、これらの通信エントリ455~480は、Slackの異なるセグメント間、及び他のマシン(SDDCの内部または外部)とこれらのセグメントとの間の通信を制御するために、マニフェスト処理フレームワークによってファイアウォールルールに変換される。 As shown, each communication entry is represented by the source of the data message (e.g., a source group), the destination of the data message (e.g., a destination group), an action that specifies whether the communication is allowed or denied, and a set of services, ports, and/or protocols used by the data message. The communication map also defines rules 480 (i.e., communication entries) that specify how the slack base communicates with the Active Directory Service 590 shown in FIG. 5. In some embodiments, these communication entries 455-480 are translated by the manifest processing framework into firewall rules to control communication between different segments of Slack and between these segments and other machines (inside or outside the SDDC).

ある実施形態では、テンプレートは、GET、PATCH、DELETE、及びPOSTコマンドを通じて管理することができる。例えばある実施形態では、GET/policy/templatesは、データベース内のテンプレート識別子のリストを返す。いくつかの実施形態では、GET /policy/templates/<template-id>は、特定のテンプレート識別子のためのテンプレートを返す。また、いくつかの実施形態では、テンプレートJSON定義に続くPATCH /policy/templatesは、新しいテンプレートを作成する。いくつかの実施形態では、DELETE /policy/templates/<template-id>は、特定のテンプレート識別子が与えられたテンプレートを削除する。 In some embodiments, templates can be managed through the GET, PATCH, DELETE, and POST commands. For example, in some embodiments, GET /policy/templates returns a list of template identifiers in the database. In some embodiments, GET /policy/templates/<template-id> returns the templates for a specific template identifier. Also, in some embodiments, PATCH /policy/templates following a template JSON definition creates a new template. In some embodiments, DELETE /policy/templates/<template-id> deletes the template given a specific template identifier.

いくつかの実施形態では、POST /policy/templates/<template-id>?action=deployは、テンプレートAPIに基づいて階層型APIを定義して起動するために規定される。このコマンドは、特定のテンプレート識別子<template-id>が与えられたテンプレートをデプロイする。テンプレート内のプレースホルダの値を提供する引数は、POSTリクエストのボディに渡される。プレースホルダ引数を伴うPOSTコマンドに応答して、いくつかの実施形態では、マニフェスト処理フレームワークのテンプレートマネージャは、識別されたテンプレートをフェッチし、階層型APIを定義するためにプレースホルダ値を表す引数を適用し、そして階層型API内の要求された各操作を識別するための1以上の要求オブジェクトを作成する。このようなテンプレートマネージャについては、以下でさらに説明する。 In some embodiments, POST /policy/templates/<template-id>?action=deploy is defined to define and launch a hierarchical API based on a template API. This command deploys a template given a specific template identifier <template-id>. Arguments providing values for placeholders in the template are passed in the body of the POST request. In response to a POST command with placeholder arguments, in some embodiments, a template manager of the manifest processing framework fetches the identified template, applies arguments representing the placeholder values to define the hierarchical API, and creates one or more request objects to identify each requested operation in the hierarchical API. Such template managers are described further below.

要するに、マニフェストテンプレート400は、マルチセグメントアプリケーションを定義するプロセスのセットと、推奨される通信プロファイルのセットとを指定する。これらの定義は、管理者の要件に基づいて管理者が変更できる。つまり、管理者は、これを環境においてを逐語的に使用するか、またはデータセンタで必要と判断された修正を行うかの選択肢を持っている。このSlack用のサンプルアプリケーションマニフェストは、業界全体の標準として公開することができ、このアプリケーションのデプロイメントやマイクロ・セグメンテーションをより容易にすることができる。 In essence, the manifest template 400 specifies a set of processes that define a multi-segment application and a set of recommended communication profiles. These definitions can be modified by an administrator based on the administrator's requirements; that is, an administrator has the option to use this verbatim in their environment or make modifications as deemed necessary in their data center. This sample application manifest for Slack can be published as an industry-wide standard, making deployment and micro-segmentation of this application easier.

図7は、マニフェストテンプレートに基づいてマルチセグメントアプリケーションを定義及びデプロイするための例示的なフローを表すプロセス700を示している。図示されるように、プロセス700は、最初にアプリケーションマニフェストテンプレートのリストを(705で)提供する。いくつかの実施形態におけるマニフェストテンプレートは、最も一般的に使用されるマルチセグメントアプリケーションのためのテンプレートである。いくつかの実施形態では、マニフェストテンプレートは、オープンソースであり、コミュニティが主導しているため、これらのアプリケーションの露出度及び精度が高くなる。 FIG. 7 illustrates a process 700 depicting an example flow for defining and deploying a multi-segment application based on a manifest template. As shown, process 700 begins by providing (at 705) a list of application manifest templates. The manifest templates in some embodiments are templates for the most commonly used multi-segment applications. In some embodiments, the manifest templates are open source and community driven, allowing for greater visibility and accuracy of these applications.

次に、710で、管理者は、提供されたマニフェストテンプレートのリストから1つのマニフェストテンプレートを選択する。選択されたテンプレートは、管理者がデプロイを所望するマルチセグメントアプリケーション用である。715で、管理者は、自身のインテントに基づいてマニフェストを確認する。選択したマニフェストは、テンプレートの発行者によって定義されたデフォルトの構成を使用して、コンピュート、ネットワーク、及びセキュリティのインテントを示す。管理者は、デフォルト設定を受け入れるか、所望のインテントと一致するように変更することができる。 Next, at 710, the administrator selects a manifest template from the list of provided manifest templates. The selected template is for the multi-segment application the administrator wants to deploy. At 715, the administrator reviews the manifest based on his intent. The selected manifest indicates the compute, network, and security intents using the default configuration defined by the template publisher. The administrator can accept the default settings or modify them to match the desired intent.

720で、管理者は、マニフェストをマニフェスト処理フレームワークに提出して、処理とデプロイメントを行う。マニフェストがフレームワークに公開されると、フレームワークは、マニフェストで指定されたコンピュート、ネットワーク及び/またはサービスリソースを(725で)デプロイする。725の後、プロセス700は終了する。 At 720, the administrator submits the manifest to a manifest processing framework for processing and deployment. Once the manifest is published to the framework, the framework deploys (at 725) the compute, network, and/or service resources specified in the manifest. After 725, process 700 ends.

いくつかの実施形態では、フレームワークは、デプロイメント環境から異なるタイプのコンテキスト属性(既存または新たなワークロードで使用されるもの等)を収集し、マニフェスト内の通信エントリの定義に際してこれらの属性を使用者に使用可能ならしめる、ミドルボックスサービスである新しい分類エンジンを使用する。図8は、いくつかの実施形態のためのこの新しい分類エンジンのアーキテクチャを示している。 In some embodiments, the framework uses a new classification engine, a middlebox service that collects different types of context attributes (such as those used in existing or new workloads) from the deployment environment and makes these attributes available to consumers when defining communication entries in the manifest. Figure 8 illustrates the architecture of this new classification engine for some embodiments.

VM上で実行されるアプリケーションは、本質的に一時的なものではない。管理者がアプリケーションをインストールすると、通常、これらのアプリケーションは長時間実行される。これは、通常、VM及びベアメタルサーバに適用される。いくつかの実施形態では、ホストコンピュータ上で実行されているハイパーバイザ上で実行されるコンテキストエンジンは、ゲストVM上で実行中のプロセスのリストを、SDDC管理プレーンに定期的に送信する。アプリケーション発見エンジン805は、この情報を受信し、アプリケーション情報及び関連する仮想マシンについての視覚化を提供する。 Applications running on VMs are not transient in nature. Once an administrator installs an application, these applications are typically long running. This typically applies to VMs and bare metal servers. In some embodiments, a context engine running on a hypervisor running on a host computer periodically sends a list of processes running on guest VMs to the SDDC management plane. The application discovery engine 805 receives this information and provides visualization of the application information and associated virtual machines.

いくつかの実施形態では、この情報は連続的にポーリングされず、プロセスは自動化されない。従って、いくつかの実施形態では、管理プレーン上の新しい分類垂直は、VM上で実行中/インストール済みプロセスのリストを検出し、プロセス情報に基づいてそれらにタグを付けるための周期的な同期動作を内部的に実行する。インベントリ垂直810は、システム内のVMのリストを取得し、内部でセキュリティグループを作成し、これらのVMのアプリケーション発見を可能にする。VMで実行されているアプリケーション/プロセスのリストが識別されると、VMにプロセスのタグが付けられる。グルーピング/タグ付けマネージャ815は、分類エンジン800のためのセキュリティグループ及び他のタグ付けデータを収集し、一方、ファイアウォールマネージャ820は、デプロイされたファイアウォールから、及びデプロイされたファイアウォールのためのコンテキストデータを収集する。収集されたタグに基づいて、アプリケーションレベルで作成されたポリシーからのインテントは、これらのプロセスのセキュリティグループと通信プロファイルを決定する。 In some embodiments, this information is not polled continuously and the process is not automated. Thus, in some embodiments, a new classification vertical on the management plane internally performs a periodic synchronization operation to discover the list of running/installed processes on the VMs and tag them based on the process information. The inventory vertical 810 gets the list of VMs in the system and creates security groups internally and enables application discovery for these VMs. Once the list of applications/processes running on the VMs is identified, the VMs are tagged with processes. The grouping/tagging manager 815 collects security groups and other tagging data for the classification engine 800, while the firewall manager 820 collects contextual data from and for the deployed firewalls. Based on the collected tags, the intent from the policies created at the application level determines the security groups and communication profiles of these processes.

図9は、本発明のいくつかの実施形態のAPI処理システム900の一例を示している。このAPI処理システム900は、いくつかの実施形態のマニフェスト処理フレームワーク200を実装する。このシステムでは、各テナントは、別々の環境と見なすことができる1以上のSDDCインスタンス905を含む、SDDCクラスタ902を作成できる。図示されるように、いくつかの実施形態では、各SDDCインスタンス905は、APIゲートウェイ920、APIプロセッサ925、コンピュートマネージャ910、ネットワークマネージャ915、コントローラ940、テンプレートマネージャ927、ポリシーチェッカ923、設定データストレージ935、及びいくつかのデプロイメントプラグイン930を含む。 9 illustrates an example of an API processing system 900 of some embodiments of the present invention. The API processing system 900 implements the manifest processing framework 200 of some embodiments. In this system, each tenant can create an SDDC cluster 902 that includes one or more SDDC instances 905, which can be considered separate environments. As shown, in some embodiments, each SDDC instance 905 includes an API gateway 920, an API processor 925, a compute manager 910, a network manager 915, a controller 940, a template manager 927, a policy checker 923, a configuration data storage 935, and several deployment plugins 930.

いくつかの実施形態において、これらの構成要素の2つ以上は、1以上のデータセンタ内の2以上のマシン(例えば、VM、コンテナ、スタンドアロンサーバ等)において実行され、ネットワークを介して互いに通信する。これらの実施形態または他の実施形態では、各SDDCインスタンスは、負荷を分散し、高可用性を実現するために、これらの各構成要素の複数のインスタンスを含む。 In some embodiments, two or more of these components run on two or more machines (e.g., VMs, containers, standalone servers, etc.) in one or more data centers and communicate with each other over a network. In these or other embodiments, each SDDC instance includes multiple instances of each of these components to distribute load and provide high availability.

コンピュートマネージャ910は、ワークロードマシン(例えば、ワークロードVMまたはコンテナ)をデプロイして管理する。一方、ネットワークマネージャ915は、ネットワークリソース(例えば、ソフトウェアスイッチ及びルータ)及びミドルボックスサービスリソース(例えば、サービスVM及びモジュール)をデータセンタにデプロイする。いくつかの実施形態では、コンピュート及びネットワークマネージャ910及び915は、1以上のコントローラ940を使用して、1以上の構成データストレージ935に格納されている構成データを、ホストコンピュータ、転送要素(例えば、ホストコンピュータ上で実行中のソフトウェアスイッチ及びルータ、またはスタンドアロンのスイッチ及びルータ)、サービスマシン(例えば、サービスVM、サービスコンテナ、他のサービスもジュール、及びスタンドアロンサービスアプライアンス)、及びSDDC内の他のリソースに配布する。 The compute manager 910 deploys and manages workload machines (e.g., workload VMs or containers), while the network manager 915 deploys network resources (e.g., software switches and routers) and middlebox service resources (e.g., service VMs and modules) in the data center. In some embodiments, the compute and network managers 910 and 915 use one or more controllers 940 to distribute configuration data stored in one or more configuration data storages 935 to host computers, forwarding elements (e.g., software switches and routers running on host computers or standalone switches and routers), service machines (e.g., service VMs, service containers, other service modules, and standalone service appliances), and other resources in the SDDC.

APIゲートウェイ920は、URLパターンに基づいて、すべてのAPIコマンドをAPIサービスモジュール925、または場合によってはUIマネージャ922にリダイレクトする。UIマネージャ922は、グラフィカルユーザインタフェースを介して受信されるAPIコマンドを処理し、これらのコマンドをAPIプロセッサ925に指示する。APIプロセッサ925は、受信されたアプリケーションマニフェストの一部である異なる要求が構成データストレージ935に永続化され、正しい順序でデプロイされることを確実にするために、図2及び3に示されるプロセスを実行する。APIプロセッサ925は、データストレージ932に格納するユーザの所望の状態を所有する。いくつかの実施形態では、APIプロセッサ925は、VMまたはコンテナとして実行される。 The API gateway 920 redirects all API commands based on the URL pattern to the API service module 925 or possibly to the UI manager 922. The UI manager 922 processes the API commands received through the graphical user interface and directs these commands to the API processor 925. The API processor 925 executes the process shown in Figures 2 and 3 to ensure that the different requests that are part of the received application manifest are persisted in the configuration data storage 935 and deployed in the correct order. The API processor 925 owns the user's desired state that it stores in the data storage 932. In some embodiments, the API processor 925 runs as a VM or container.

図示されるように、いくつかの実施形態では、APIプロセッサ925は、SDDCリソースのマルチセグメントアプリケーション構成を指定するいくつかのマニフェストテンプレート929にアクセスできる、テンプレートマネージャ927を使用する。テンプレートマネージャ927を介して、ユーザは、完成したマニフェストを生成するために、(例えば、APIコマンドを介して)テンプレートを選択し、修正することができる。そしてこの完成したマニフェストに基づいて、APIプロセッサ925は、以前にデプロイされた一連のSDDCリソースをデプロイまたは更新して、以前にデプロイされたマルチセグメントアプリケーションをデプロイまたは調整できる。 As shown, in some embodiments, the API processor 925 uses a template manager 927 that has access to several manifest templates 929 that specify the multi-segment application configuration of SDDC resources. Through the template manager 927, a user can select and modify templates (e.g., via API commands) to generate a completed manifest. Based on this completed manifest, the API processor 925 can then deploy or update a set of previously deployed SDDC resources to deploy or adjust a previously deployed multi-segment application.

受信したマニフェスト内の要求、または要求された入力を有するマニフェストテンプレートの読み出しによって完成したマニフェストに基づいて、リソースをデプロイするか、以前にデプロイされたリソースを更新するために、いくつかの実施形態では、APIプロセッサ925は、マニフェストを1つ以上の要求にパースし、ポリシーチェックエンジン923を使用して各要求を検証する(即ち、各要求がポリシーストレージ924に格納されており、要求で参照されたリソースに適用可能なポリシーで指定された制約を満たすかどうかを指定する)。 To deploy resources or update previously deployed resources based on the requests in a received manifest or a completed manifest by reading a manifest template with the required inputs, in some embodiments, the API processor 925 parses the manifest into one or more requests and validates each request using the policy check engine 923 (i.e., each request is stored in the policy storage 924 and specifies whether it satisfies the constraints specified in the policy applicable to the resource referenced in the request).

いくつかの実施形態では、ポリシーストレージ924の各ポリシーは、(1)ポリシーが適用される1以上のデータセンタリソースのセットを指定するターゲットと、(2)指定されたリソースセットに対する操作の制約を指定する式とを含む。いくつかの実施形態では、ポリシーは宣言フォーマットで表現される。故に、マニフェスト内の要求ごとに、ポリシーエンジンは、選択された要求のリソースの属性のセットをポリシーのターゲットと比較して、ポリシーがリソースに適用可能か否かを判断する。1つの適用可能なポリシーを特定した後、ポリシーチェックエンジンは、特定されたポリシーの式が、選択されたリクエストを拒否するか許可するかを要求する制約を指定しているか否かを判断する。 In some embodiments, each policy in policy storage 924 includes (1) a target that specifies a set of one or more data center resources to which the policy applies, and (2) an expression that specifies an operational constraint on the specified set of resources. In some embodiments, the policies are expressed in a declarative format. Thus, for each request in the manifest, the policy engine compares a set of attributes of the selected request's resources with the policy's target to determine whether the policy is applicable to the resource. After identifying an applicable policy, the policy checking engine determines whether the identified policy's expression specifies a constraint that requires the selected request to be denied or permitted.

デプロイメントプラグイン930を介して、APIプロセッサ925は、構成データベース935のAPIコール内のSDリソースデータを永続化する。いくつかの実施形態では、デプロイメントプラグイン930は、VMまたはコンテナとして実行される。各プラグイン930は、1以上のSDリソースタイプをデプロイする実行能力を有する。そのようなタイプの例には、データコンピュートノード(例えば、VMまたはコンテナのようなコンピュートマシン)、分散ファイアウォールルール、エッジファイアウォールルール、L2及びL3転送要素(ソフトウェアスイッチ予備ルータ)、セキュリティグループ、VPNサービス、DHCPサービス、DNSサービス、ロードバランシングサービス等が含まれる。 Through the deployment plugins 930, the API processor 925 persists the SD resource data in the API calls to the configuration database 935. In some embodiments, the deployment plugins 930 run as VMs or containers. Each plugin 930 has the execution capability to deploy one or more SD resource types. Examples of such types include data compute nodes (e.g., compute machines such as VMs or containers), distributed firewall rules, edge firewall rules, L2 and L3 forwarding elements (software switch standby routers), security groups, VPN services, DHCP services, DNS services, load balancing services, etc.

これらのサービスをデプロイするために、プラグイン930は、コンピュートマネージャ910及びネットワークマネージャ915と相互作用し、これらは、順番に、1以上のコントローラ940と相互作用する。これらのマネージャ及びコントローラを介して、プラグイン930は、これらのコンピュータ及びデバイスに所望のSDリソースをデプロイするように指示するために、永続的データベース935からの構成データをSDDC内のホストコンピュータ及びスタンドアロンネットワーク/サービスデバイスに分配する。 To deploy these services, plugin 930 interacts with compute manager 910 and network manager 915, which in turn interact with one or more controllers 940. Through these managers and controllers, plugin 930 distributes configuration data from persistent database 935 to host computers and standalone network/service devices in the SDDC to instruct these computers and devices to deploy the desired SD resources.

いくつかの実施形態では、SDDCインスタンスごとに1つの所望の状態およびオーケストレーションサービス(即ち、API処理モジュール)が存在する。これは、いくつかの実施形態ではコンテナまたはVMの形態でデプロイされる、利用可能性の高いサービスである。このサービスは、ユーザのインテントを受け入れ、異なるサービス間でオーケストレーションを実行する。またこのサービスは、ポリシーをプッシュダウンする必要がある実施ポイント(コンピュート及びネットワークマネージャ)の詳細を所有している。 In some embodiments, there is one desired state and orchestration service (i.e., API processing module) per SDDC instance. This is a highly available service that is deployed in the form of a container or VM in some embodiments. This service accepts the user intent and performs the orchestration between different services. This service also owns the details of the enforcement points (compute and network managers) to which policies need to be pushed down.

デプロイメントプラグイン930は、インテントの実現を提供する。上述したように、いくつかの実施形態では、これらのプラグインのそれぞれは、別個のコンテナまたはVMで実行される別個のサービスとしてデプロイされる。いくつかの実施形態では、いくつかのサービスは、単一のコンテナ内に一緒にパッケージ化されるが、設計及び通信の観点では別個のサービスとして実行される。オーケストレーションは所望の状態サービスによって実行されるため、いくつかの実施形態における各プラグインサービスは、起動されるであろうREST APIエンドポイントのセットを公開する。また、いくつかの実施形態では、所望の状態サービスは、異なるサービスにわたって実現されたリソースの状態を返す共通サービスとして働く。これは、いくつかの実施形態では、実現された状態データがプラグインサービスによってデータストア内で更新される場合であっても同様である。 Deployment plugins 930 provide the fulfillment of intents. As mentioned above, in some embodiments, each of these plugins is deployed as a separate service running in a separate container or VM. In some embodiments, some services are packaged together in a single container, but run as separate services from an architecture and communication standpoint. Since orchestration is performed by a desired state service, each plugin service in some embodiments exposes a set of REST API endpoints that may be invoked. Also, in some embodiments, the desired state service acts as a common service that returns the state of realized resources across different services. This is true even though in some embodiments the realized state data is updated in a data store by the plugin service.

従って、マニフェストの実行は、一挙に所望の状態を生成することになる。システムがインテント全体を検証して永続化できる場合、マニフェストのソースに通知が送信される(例えば、http status code 200 OKが返される)。インテントが作成されると、通知が生成される。これらの通知は、デプロイプラグインによって非同期に消費される。次に、デプロイメントプラグインは、当該インテントを実現することを処理する。ステータスAPIを使用して、システムから実現状況を問い合わせることができる。 Thus, the execution of the manifest produces the desired state in one fell swoop. If the system can validate and persist the entire intent, a notification is sent to the source of the manifest (e.g., http status code 200 OK is returned). When an intent is created, notifications are generated. These notifications are consumed asynchronously by the deployment plugin, which then handles fulfilling that intent. The fulfillment status can be queried from the system using the status API.

いくつかの実施形態では、API処理システム900は、階層的にインテントをクエリする能力をユーザに提供する。例えば、いくつかの実施形態では、システムは、一挙にインテント全体を読み取ることを促進するGET APIを提供する。専用のフラグはURLパラメータに渡され、階層的にGETを要求する。パラメータが渡されない場合、一部の実施形態におけるGETは、通常のGETとして機能し、単一のリソースが返される。いくつかの実施形態では、階層型GETは、ツリー全体またはツリーの部分に対して機能することができ、即ち、階層型GETは、ツリー内の任意のレベルから機能することができるため、階層が取得されるノードを指定することができる。 In some embodiments, the API processing system 900 provides users with the ability to query intents hierarchically. For example, in some embodiments, the system provides a GET API that facilitates reading an entire intent in one go. A dedicated flag is passed in the URL parameter to request a hierarchical GET. If no parameter is passed, the GET in some embodiments functions as a normal GET and a single resource is returned. In some embodiments, a hierarchical GET can work on the entire tree or a portion of the tree, i.e., a hierarchical GET can work from any level in the tree, so the node from which the hierarchy is retrieved can be specified.

階層型GETの別の態様は、いくつかの実施形態におけるフィルタリングである。これらの実施形態において、管理者は、インテントツリーをフィルタして、自分の関心があるタイプのみを閲覧することができる。当該フィルタリングは、単純なタイプベースのフィルタリングであってよく、例えば、管理者は、「Domain」タイプのインテント階層をGETと言うことができる。高度なフィルタリングメカニズムでは、ユーザは、機能に基づいて意図を取得することを選択することができ、例えば、管理者は、ファイアウォール機能に関連するインテント階層において、すべてのリソースをGETと言うことができる。 Another aspect of hierarchical GET is filtering in some embodiments. In these embodiments, an administrator can filter the intent tree to see only the types that they are interested in. Such filtering can be simple type-based filtering, for example, an administrator can say GET the intent hierarchy for the "Domain" type. In advanced filtering mechanisms, the user can choose to get intent based on function, for example, an administrator can say GET all resources in the intent hierarchy related to the firewall function.

いくつかの実施形態において、ユーザは階層型GETを実行し、それを階層型POSTでクラブすることができる。いくつかの実施形態では、管理者は、インテント階層を取得し、それを修正してPOSTすることができる。これにより、「インポート/エクスポート」のユースケースが有効になる。いくつかの実施形態では、管理者は、マニフェストを取得し、それを格納することもできる。その後、管理者は、以前に取得したインテントを復元できる。 In some embodiments, a user can perform a hierarchical GET and club it with a hierarchical POST. In some embodiments, an administrator can get the intent hierarchy, modify it, and POST it. This enables "import/export" use cases. In some embodiments, an administrator can also get the manifest and store it. The administrator can then restore the previously obtained intents.

図10は、いくつかの実施形態がどのように、コンテキストベースのファイアウォールルールをホストコンピュータで実施するかを示している。いくつかの実施形態では、SDDCは、ホストコンピュータ上でそのようなコンテキストベースのルールを定義して実施することによって、その所望のセグメンテーション通信プロファイルを達成する。上述したように、マニフェスト処理フレームワークは、マニフェスト内で定義された通信プロファイルールを変換し、それをネットワーク管理層(即ち、ネットワークマネージャクラスタ)がアプリケーションに必要なマイクロ・セグメンテーションを達成するために処理できるルールにコンバートする。 Figure 10 illustrates how some embodiments implement context-based firewall rules on a host computer. In some embodiments, the SDDC achieves its desired segmentation communication profile by defining and implementing such context-based rules on the host computer. As described above, the manifest processing framework translates the communication profile rules defined in the manifest and converts them into rules that the network management layer (i.e., the network manager cluster) can process to achieve the micro-segmentation required for the application.

図10は、グループ化プロバイダを使用して、マニフェストで定義されたこれらのアプリケーションセグメントを、プロセス名/ハッシュに基づいてセキュリティグループにマッピングする一連のルールを受信するネットワーク管理クラスタを示している。ネットワーク管理クラスタは、マニフェストで定義された通信プロファイルに基づいて、これらのプロセスベースのグループに一致する、変換されたファイアウォールルールも受信する。処理ベースのグループ及びファイアウォールルールが作成されると、マネージャクラスタ1005のファイアウォールマネージャ1010は、ルールをSDDC内のホストコンピュータ及び他の実施ノードに分配する。 Figure 10 shows the network management cluster receiving a set of rules that use the grouping provider to map these application segments defined in the manifest to security groups based on process name/hash. The network management cluster also receives translated firewall rules that match these process-based groups based on the communication profiles defined in the manifest. Once the process-based groups and firewall rules are created, the firewall manager 1010 of the manager cluster 1005 distributes the rules to host computers and other enforcement nodes in the SDDC.

ファイル、モジュール、及び他のプロセスデータをネットワークイベントにマップするため、いくつかの実施形態は、マシン1015(例えば、ホストVM及びコンテナ)上で実行されるゲストイントロスペクション(GI)エージェント1020を通じて捕捉されたコンテキストデータを用いる。いくつかの実施形態では、GIエージェント1020は、任意のゲストネットワーク接続及びファイルアクセス、並びにその関連プロセスコンテキストを捕捉する。いくつかの実施形態では、すべてのネットワーク接続及びファイルアクセスは、このエージェントによって傍受され、ホスト上で実行されるコンテキストサービスエンジン1030に送られる。Vmware社によって提供されるESXハイパーバイザでは、コンテキストデータは、Mux 1025と呼ばれるハイパーバイザコンポーネントを介して、GIエージェントからホストコンピュータ上で実行されるコンテキストエンジンにネットワークイベント及びファイルイベントを送信するための導管として機能するコンテキストエンジン1030に送られる。この情報を使用して、コンテキストエンジンは、ゲストVMによって開始される、ユーザ、ソースIPアドレス、ソースポート、プロトコル、及びプロセス情報についての情報を含むコンテキストテーブル1035を更新する。 To map file, module, and other process data to network events, some embodiments use context data captured through a Guest Introspection (GI) agent 1020 running on the machine 1015 (e.g., host VM and container). In some embodiments, the GI agent 1020 captures any guest network connections and file accesses and their associated process context. In some embodiments, all network connections and file accesses are intercepted by this agent and sent to a Context Services Engine 1030 running on the host. In the ESX hypervisor provided by VMware, the context data is sent through a hypervisor component called Mux 1025 to the context engine 1030, which acts as a conduit for sending network and file events from the GI agent to the context engine running on the host computer. Using this information, the context engine updates a context table 1035 that contains information about the user, source IP address, source port, protocol, and process information started by the guest VM.

その後、データコンピュートマシン1015がネットワークコネクションを行うと、ホストコンピュータ上で実行するファイアウォールモジュール1040は、発信パケットを検査し、コンテキストテーブルからのパケットフローにコンテキスト情報を関連付け、ファイアウォールテーブル内のルールと一致させることによって、プロセスレベルで有効なファイアウォールルールを実施する。VM上で実行されているプロセスのこのレベルのきめ細かな制御は、管理者が環境にインストールされている未承認のソフトウェア/アプリケーションを検出し、さらにシステム内で実行されている悪意のあるプロセスをブロックすることに役立つ。有効なルールの実現は、ネットワーク管理クラスタに返送され、管理者にデプロイされたアプリケーションのステータスと有効なルールを提供する。コンテキストベースのファイアウォール及び他のミドルボックスサービスエンジンは、2018-0181423として公開された米国特許出願第15/650,251号にさらに記載されており、参照により本明細書に組み込まれる。 Subsequently, when the data compute machine 1015 makes a network connection, the firewall module 1040 executing on the host computer enforces the effective firewall rules at the process level by inspecting the outgoing packets, associating context information with the packet flow from the context table, and matching it with the rules in the firewall table. This level of fine-grained control of the processes running on the VMs helps administrators detect unauthorized software/applications installed in the environment and also block malicious processes running in the system. The implementation of the effective rules is sent back to the network management cluster, providing the administrator with the status of deployed applications and effective rules. Context-based firewalls and other middlebox service engines are further described in U.S. Patent Application Serial No. 15/650,251, published as 2018-0181423, which is incorporated herein by reference.

いくつかの実施形態では、マニフェスト処理フレームワークは、インテントベースの学習エンジンを有する。ゲストマシン(例えば、ゲストVMまたはコンテナ)にインストールされたGIエージェントを使用して、マニフェスト処理フレームワークは、検出されたネットワークアクティビティに関与するプロセスだけでなく、インストールされたバイナリ、及びこれらのアクティビティに関連するファイル属性も識別することができる。最も一般的な属性には、ファイルハッシュ、パブリッシャ情報、インストールパス、証明書等が含まれる。いくつかの実施形態では、これらの識別されたプロセス及び他の属性は、新しいマルチセグメントアプリケーションテンプレートを生成するために、デプロイメント環境から(例えば、ホストコンピュータから)収集され、学習エンジンによって解析される。収集されて解析されたデータは、一部の管理者が一般的にどのようにマルチセグメントアプリケーション(例えば、新しいマルチセグメントアプリケーション)をデプロイするかを示す。いくつかの実施形態では、学習エンジンは、収集されたデータから共通のデプロイメント属性を判別し、その解析に基づいて、新しいマルチセグメントマニフェストテンプレートを推奨する。 In some embodiments, the manifest processing framework has an intent-based learning engine. Using a GI agent installed on the guest machine (e.g., guest VM or container), the manifest processing framework can identify not only the processes involved in the detected network activity, but also the installed binaries and file attributes associated with these activities. The most common attributes include file hashes, publisher information, installation paths, certificates, etc. In some embodiments, these identified processes and other attributes are collected from the deployment environment (e.g., from the host computer) and analyzed by the learning engine to generate a new multi-segment application template. The collected and analyzed data indicates how some administrators typically deploy multi-segment applications (e.g., new multi-segment applications). In some embodiments, the learning engine determines common deployment attributes from the collected data and recommends a new multi-segment manifest template based on the analysis.

上述したように、GIエージェントによって捕捉されたネットワークイベント及びファイルイベントは、コンテキストテーブルに格納される。ここから、図11に示されるように、マニフェスト処理フレームワークは、これらの捕捉されたイベントに関するデータを収集することができる。いくつかの実施形態では、このデータは、収集時間とアプリケーションワークロードに応じて非常に大きくなり得るため、別個のサーバクラスタまたはアプライアンスのセットで収集される。この情報は、ホスト内の各VMで見られるすべてのプロセスについて、ホストレベルで格納される。 As mentioned above, network and file events captured by the GI agent are stored in a context table. From here, the manifest processing framework can collect data about these captured events, as shown in FIG. 11. In some embodiments, this data is collected on a separate server cluster or set of appliances, as it can become very large depending on the collection time and application workload. This information is stored at the host level for all processes found on each VM within the host.

いくつかの実施形態では、収集されたネットワーク及びファイルイベントデータは、その後、VM内のプロセスレベルで適切なセグメンテーションを得るためにカスタマイズされたアプリケーションテンプレートを生成するために、集約されてモデル化される。ネットワークイベントごとに、GI エージェントは、対応するプロセス、ソケット、接続レート、接続のタイプを取得できる。いくつかの実施形態におけるフレームワークは、そのインスタンスでプロセスによって使用されるライブラリと、プロセスによってアクセスされるファイルとを照会するために確立された通信チャネルを有する。 In some embodiments, the collected network and file event data is then aggregated and modeled to generate customized application templates for proper segmentation at the process level within the VM. For each network event, the GI agent can retrieve the corresponding process, socket, connection rate, and type of connection. The framework in some embodiments has communication channels established to query the libraries used by the process and the files accessed by the process in that instance.

このデータは、ラウンドトリップ時間、一日の時間、及び他のプロセスとの相関関係に加えて、いくつかの実施形態では、教師なしまたは半教師付き機械学習モデルを訓練するために使用される。いくつかの実施形態は、プロセス情報を識別するために1クラスサポートベクタマシン(SVM)分類機を使用する。SVMモジュールは、「正常」なデータが多く、異常を検出する必要があるケースが少ないシナリオで有用である。 This data, along with round trip times, time of day, and correlations with other processes, in some embodiments is used to train unsupervised or semi-supervised machine learning models. Some embodiments use a one-class support vector machine (SVM) classifier to identify process information. The SVM module is useful in scenarios where there is a lot of "normal" data and few cases where anomalies need to be detected.

1クラスSVMは、新規性検出のための決定関数を学習する教師なしアルゴリズムであり、新しいデータをトレーニングセットと類似または異なるものとして分類する。SVMは、分類タスクに使用することができる教師付き学習モデルである。典型的には、SVMには、n-d空間にマッピングすることができるラベル付けされたデータが与えられる。異なるカテゴリは、明確なギャップによって分割され、SVMは可能な限り広いカテゴリを見つける。新しいデータサンプルは、ギャップのどの側に入るかに基づいて、1つのカテゴリに属するように分類される。一部の実施形態は、見られた新しいデータに基づいて情報を分類または処理し、管理者がネットワークを保護するために必要とする適切なアプリケーションテンプレートのセットを推奨する。このモデルを使用して、いくつかの実施形態は、実行中のアプリケーション及びそれらに対応するプロセスを予測することができる。このようにすることで、モデルは新しいアプリケーションの識別に役立ち、アプリケーションを保護するために適切なアプリケーションテンプレートを推奨する。 One-class SVM is an unsupervised algorithm that learns a decision function for novelty detection, classifying new data as similar or different from the training set. SVM is a supervised learning model that can be used for classification tasks. Typically, the SVM is given labeled data that can be mapped to an n-d space. Different categories are divided by clear gaps, and the SVM finds the broadest possible category. New data samples are classified as belonging to one category based on which side of the gap they fall on. Some embodiments classify or process the information based on the new data seen and recommend a set of appropriate application templates that the administrator needs to protect the network. Using this model, some embodiments can predict running applications and their corresponding processes. In this way, the model helps identify new applications and recommends appropriate application templates to protect them.

上述の実施形態は、いくつかの利点を提供する。それらは、階層型APIデータモデルを介してマルチセグメントアプリケーションをデプロイする、インテントベースのAPI処理システムを提供しており、ユーザはこれらのリソースの永続化や実現の仕組みを気にすることなく、それらのインテント(例えば、複数のアプリケーションセグメントやそれらの間の通信プロファイル)を指定することができる。いくつかの実施形態では、インテントベースのAPIシステムは、単純化された階層型データモデルを参照する単純な宣言型言語を使用することにより、階層型APIコマンドを定義することをユーザに可能ならしめる。各階層型APIコマンドは、以前のAPIコマンドで特定のSDリソースを他のリソースよりも先に作成する必要はなく、SDDC内の複数のリソースレベルで複数のSDリソースを定義できる。実際、いくつかの実施形態では、1つの階層型コマンドは、SDDCの(例えば、マルチテナントSDDCの)1つのユーザ(例えば、1つのテナント)のすべてのSDリソースの定義に使用することができる。 The above-described embodiments provide several advantages. They provide an intent-based API processing system for deploying multi-segment applications through a hierarchical API data model, allowing users to specify their intents (e.g., multiple application segments and communication profiles between them) without worrying about how these resources are persisted or realized. In some embodiments, the intent-based API system allows users to define hierarchical API commands by using a simple declarative language that references a simplified hierarchical data model. Each hierarchical API command can define multiple SD resources at multiple resource levels within an SDDC, without requiring that a particular SD resource be created before another in a previous API command. Indeed, in some embodiments, one hierarchical command can be used to define all SD resources for one user (e.g., one tenant) of an SDDC (e.g., a multi-tenant SDDC).

いくつかの実施形態のマニフェスト処理フレームワークは、データモデルの階層を活用して、単一のAPI呼び出しで階層の一部または全体を受け入れ、検証し、実現するためのプロセスを提供する。このシステムは、データモデルの固有の知識を利用して、依存性を識別し、インテントの永続化と実現の両方のために、基盤となるサービスを正しい順序で呼び出す。また、すべての永続化は、単一のトランザクションで行われるため、インテント全体がアトミックユニットとして受け入れられるようになる。 The manifest processing framework of some embodiments leverages the hierarchy of the data model to provide a process for accepting, validating, and fulfilling part or all of the hierarchy in a single API call. The system leverages inherent knowledge of the data model to identify dependencies and invoke the underlying services in the correct order to both persist and fulfill the intent. Additionally, all persistence is done in a single transaction, allowing the entire intent to be accepted as an atomic unit.

受信したマニフェストで定義されたマルチセグメントアプリケーションがデプロイ可能であると、マニフェスト処理フレームワークが決定すると、いくつかの実施形態では、APIシステムは非同期プロセスを使用して、管理者からのさらなる入力なしに、適切な順序でリソースを自動的にデプロイする。このプロセスは、1以上のネットワーク、サービス、またはコンピュートマネージャと連携して、デプロイされたリソースに適した作業指示に基づいて、1以上のネットワーク、サービス、またはコンピュートリソースをデプロイまたは更新する。 When the manifest processing framework determines that a multi-segment application defined in a received manifest is deployable, in some embodiments, the API system uses an asynchronous process to automatically deploy the resources in the appropriate order without further input from an administrator. This process coordinates with one or more network, service, or compute managers to deploy or update one or more network, service, or compute resources based on work orders appropriate for the deployed resources.

上記の機能及びアプリケーションの多くは、コンピュータ読み取り可能な記録媒体(コンピュータ可読媒体とも呼ばれる)に記録された一連の命令として指定されるソフトウェアプロセスとして実装される。これらの命令が1以上の処理ユニット(例えば、1以上のプロセッサ、プロセッサコア、または他の処理ユニット)によって実行される場合、それらは、命令に示された動作を該処理ユニットに実行させる。コンピュータ可読媒体の例としては、CD-ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等を含むが、これらに限定されない。コンピュータ可読媒体は、無線または有線接続を介して通過する搬送波および電気信号を含まない。 Many of the functions and applications described above are implemented as software processes specified as a series of instructions recorded on a computer-readable recording medium (also called a computer-readable medium). When these instructions are executed by one or more processing units (e.g., one or more processors, processor cores, or other processing units), they cause the processing units to perform the operations indicated in the instructions. Examples of computer-readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. Computer-readable media does not include carrier waves and electrical signals that pass over wireless or wired connections.

本明細書では、「ソフトウェア」という文言は、読み取り専用メモリに常駐するファームウェア、またはプロセッサによって処理するためにメモリに読み取ることができる磁気記憶装置に格納されたアプリケーションを含むことを意味する。またいくつかの実施形態では、複数のソフトウェア発明は、別個のソフトウェア発明を残しながら、より大きなプログラムのサブパーツとして実装され得る。いくつかの実施形態では、複数のソフトウェア発明は、別個のプログラムとしても実装され得る。最後に、ここに記載されるソフトウェア発明を一緒に実装する別個のプログラムの任意の組合せは、本発明の範囲内にある。いくつかの実施形態では、ソフトウェアプログラムは、1以上の電子システム上で動作するようにインストールされた場合、当該ソフトウェアプログラムの動作を実行し実行する1以上の特定のマシン実装を定義する。 As used herein, the term "software" is meant to include firmware resident in read-only memory or applications stored on magnetic storage that can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions may be implemented as subparts of a larger program while remaining separate software inventions. In some embodiments, multiple software inventions may also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described herein is within the scope of the invention. In some embodiments, a software program, when installed to operate on one or more electronic systems, defines one or more specific machine implementations that execute and perform the operations of the software program.

図12は、本発明のいくつかの実施形態が実装されるコンピュータシステム1200を概念的に示している。コンピュータシステム1200は、上述のホスト、コントローラ、及びマネージャのいずれかを実装するために使用することができる。このように、それは、上述のプロセスのいずれかを実行するために使用することができる。このコンピュータシステムは、様々なタイプの非一時的な機械可読媒体と、様々な他のタイプの機械可読媒体のためのインタフェースと、を含む。コンピュータシステム1200は、バス1205、処理部1210、システムメモリ1225、読み取り専用メモリ1230、恒久記憶装置1235、入力デバイス1240、及び出力デバイス1245を含む。 Figure 12 conceptually illustrates a computer system 1200 on which some embodiments of the present invention may be implemented. Computer system 1200 may be used to implement any of the hosts, controllers, and managers described above. As such, it may be used to execute any of the processes described above. The computer system includes various types of non-transitory machine-readable media and interfaces for various other types of machine-readable media. Computer system 1200 includes a bus 1205, a processing unit 1210, a system memory 1225, a read-only memory 1230, a persistent storage device 1235, input devices 1240, and output devices 1245.

バス1205は、コンピュータシステム1200の多数の内部デバイスを通信可能に接続する、すべてのシステムバス、周辺バス、及びチップセットバスを集合的に表す。例えば、バス1205は、処理部1210を読み取り専用メモリ1230、システムメモリ1225、及び恒久記憶装置1235と通信可能に接続する。 Bus 1205 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of computer system 1200. For example, bus 1205 communicatively connects processing unit 1210 to read-only memory 1230, system memory 1225, and persistent storage device 1235.

これらの様々なメモリユニットから、本発明のプロセスを実行するために、処理部1210は実行すべき命令および処理すべきデータを取得する。処理部は、様々な実施形態において、単一プロセッサまたはマルチコアプロセッサであってもよい。読み取り専用メモリ(ROM)1230は、処理部1210及びコンピュータシステムの他のモジュールによって必要とされる、静的データ及び命令を格納する。一方、恒久記憶装置1235は、読み書き可能な記憶デバイスである。当該デバイスは、コンピュータシステム1200がオフのときでも、命令及びデータを格納する不揮発性メモリユニットである。本発明のいくつかの実施形態は、恒久記憶装置1235として大容量記憶装置(磁気または光ディスク、及びそれら対応するディスクドライブ等)を使用する。 From these various memory units, the processing unit 1210 obtains instructions to execute and data to process in order to execute the processes of the present invention. The processing unit may be a single processor or a multi-core processor in various embodiments. The read-only memory (ROM) 1230 stores static data and instructions required by the processing unit 1210 and other modules of the computer system. The permanent storage unit 1235, on the other hand, is a readable and writable storage device. It is a non-volatile memory unit that stores instructions and data even when the computer system 1200 is off. Some embodiments of the present invention use mass storage devices (such as magnetic or optical disks and their corresponding disk drives) as the permanent storage unit 1235.

他の実施形態は、恒久記憶装置として、取り外し可能な記憶装置(フロッピーディスク、フラッシュドライブ等)を使用する。恒久記憶装置1235と同様に、システムメモリ1225は、読み書き可能な記憶デバイスである。しかしながら、記憶装置1235とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性の読み取り/書き込みメモリである。システムメモリは、実行時にプロセッサが必要とする、命令及びデータの一部を格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ1225、恒久記憶装置1235、及び/または読み取り専用メモリ1230に格納される。これらの様々なメモリユニットから、いくつかの実施形態のプロセスを実行するために、処理部1210は実行すべき命令及び処理すべきデータを取得する。 Other embodiments use removable storage devices (e.g., floppy disks, flash drives, etc.) as persistent storage devices. Like persistent storage device 1235, system memory 1225 is a readable and writable storage device. However, unlike storage device 1235, system memory is a volatile read/write memory, such as random access memory. System memory stores some of the instructions and data that the processor needs during execution. In some embodiments, the processes of the present invention are stored in system memory 1225, persistent storage device 1235, and/or read only memory 1230. From these various memory units, processing unit 1210 obtains instructions to execute and data to process in order to execute the processes of some embodiments.

また、バス1205は、入力デバイス1240及び出力デバイス1245に接続する。入力デバイスは、ユーザがコンピュータシステムに情報を伝達したり、コマンドを選択したりすることを可能にする。入力デバイス1240は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス1245は、コンピュータシステムによって生成された画像を表示する。出力デバイスは、プリンタと、陰極線管(CRT)ディスプレイまたは液晶ディスプレイ(LCD)等の表示装置とを含む。一部の実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーン等の装置を含む。 Bus 1205 also connects to input devices 1240 and output devices 1245. The input devices allow a user to communicate information and select commands to the computer system. The input devices 1240 include alphanumeric keyboards and pointing devices (also called "cursor control devices"). The output devices 1245 display images generated by the computer system. Output devices include printers and display devices such as cathode ray tube (CRT) displays or liquid crystal displays (LCDs). Some embodiments include devices such as touch screens that function as both input and output devices.

最後に、図12に示されるように、バス1205はまた、ネットワークアダプタ(不図示)を介してコンピュータシステム1200をネットワーク1265に結合する。このようにすることで、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、またはイントラネット等)、またはネットワークのネットワーク(インターネット等)の一部であってもよい。コンピュータシステム1200の任意のまたはすべての構成要素は、本発明と併せて使用されてよい。 12, bus 1205 also couples computer system 1200 to a network 1265 via a network adapter (not shown). In this manner, the computer may be part of a network of computers (such as a local area network ("LAN"), a wide area network ("WAN"), or an intranet) or a network of networks (such as the Internet). Any or all of the components of computer system 1200 may be used in conjunction with the present invention.

いくつかの実施形態は、(コンピュータ読み取り可能な記録媒体、機械可読媒体、または機械読み取り可能な記録媒体と代替的に呼ばれる)機械読み取りまたはコンピュータ読み取りが可能な媒体に、コンピュータプログラム命令を格納する、マイクロプロセッサ、ストレージ及びメモリ等の電子部品を含む。このようなコンピュータ可読媒体のいくつかの例としては、RAM、ROM、読み取り専用コンパクトディスク(CD-ROM)、記録可能コンパクトディスク(CD-R)、書き換え可能コンパクトディスク(CD-RW)、読取り専用デジタル汎用ディスク(例えば、DVD-ROM、二層DVD-ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD-RAM、DVD-RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、miniSDカード、microSDカード等)、磁気及び/またはソリッドステートハードドライブ、読み取り専用及び記録可能なブルーレイ(登録商標)ディスク、超密度光ディスク、任意の他の光または磁気媒体、及びフロッピーディスクが含まれる。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令のセットを含むコンピュータプログラムを記憶してもよい。コンピュータプログラムまたはコンピュータコードの例には、コンパイラによって生成されるようなマシンコード、及びインタープリタを使用してコンピュータ、電子コンポーネント、またはマイクロプロセッサによって実行される高レベルコードを含むファイルが含まれる。 Some embodiments include electronic components, such as a microprocessor, storage, and memory, that store computer program instructions on a machine-readable or computer-readable medium (alternatively referred to as a computer-readable recording medium, a machine-readable medium, or a machine-readable recording medium). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROMs), recordable compact discs (CD-Rs), rewritable compact discs (CD-RWs), read-only digital versatile discs (e.g., DVD-ROMs, dual-layer DVD-ROMs), various recordable/rewritable DVDs (e.g., DVD-RAMs, DVD-RWs, DVD+RWs, etc.), flash memory (e.g., SD cards, miniSD cards, microSD cards, etc.), magnetic and/or solid-state hard drives, read-only and recordable Blu-ray discs, ultra-density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable medium may store a computer program executable by at least one processing unit and including a set of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as produced by a compiler, and files containing high-level code that is executed by a computer, electronic component, or microprocessor using an interpreter.

上記の議論は主に、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)等の1以上の集積回路によって実行される。いくつかの実施形態では、このような集積回路が、回路自体に格納された命令を実行する。 Although the above discussion has primarily referred to microprocessors or multi-core processors executing software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored on the circuit itself.

本明細書で用いられる「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」との文言はすべて、電子デバイスまたは他の技術的デバイスを指す。これらの文言は、人間または人間のグループを除外する。本明細書の目的のために、「ディスプレイ」または「表示」との文言は、電子デバイス上に表示することを意味する。本明細書で使用されるように、「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」との文言は、コンピュータによって読み取り可能な形式で情報を格納する、有形の物理的オブジェクトに完全に限定される。これらの文言は、任意の無線信号、有線ダウンロード信号、及び任意の他の刹那的または一時的な信号を除外する。 As used herein, the terms "computer," "server," "processor," and "memory" all refer to electronic or other technological devices. These terms exclude humans or groups of humans. For purposes of this specification, the terms "display" or "displaying" mean displaying on an electronic device. As used herein, the terms "computer-readable medium," "computer-readable medium," and "machine-readable medium" are entirely limited to tangible, physical objects that store information in a form that can be read by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral or transitory signals.

本発明を多数の特定の詳細を参照して説明してきたが、本発明の精神から逸脱することなく、他の特定の形態で本発明を実施であることは、当業者に理解されよう。従って、当業者は、本発明が前述の例示的な詳細によって限定されるべきではなく、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。 Although the present invention has been described with reference to numerous specific details, those skilled in the art will appreciate that the present invention may be embodied in other specific forms without departing from the spirit of the invention. Accordingly, those skilled in the art will appreciate that the present invention should not be limited by the illustrative details set forth above, but should instead be defined by the scope of the appended claims.

Claims (23)

ソフトウェア定義データセンタ(SDDC)においてマルチセグメントアプリケーションを定義する方法であって、
前記SDDC内に実装する前記アプリケーションの複数のセグメントを指定し、当該アプリケーションの前記セグメント間のデータメッセージの転送を制御する複数のルールを定義する階層型アプリケーションプログラミングインタフェース(API)コマンドであって、処理された場合に、前記SDDC内に前記アプリケーションをデプロイし、前記アプリケーションのセグメント間の前記データメッセージの転送を制御するための前記複数のルールをデプロイする複数の要求を有する階層型APIコマンドを作成し、
複数のマルチセグメントアプリケーションを定義するために用いられる複数のカスタマイズ可能なテンプレートに、特定のテンプレートとして前記階層型APIコマンドを格納し、
前記マルチセグメントアプリケーションのセグメントのセット及び前記マルチセグメントアプリケーションの前記セグメント間の通信を指定するためのルールのセットを定義するマニフェストを定義するために、前記特定のテンプレートが取得及びカスタマイズされることを許可するグラフィカルユーザインタフェースまたはAPIゲートウェイを提供する
ことを特徴とする方法。
1. A method for defining a multi-segment application in a software-defined data center (SDDC), comprising:
creating hierarchical application programming interface (API) commands that specify a plurality of segments of the application to be implemented within the SDDC and define a plurality of rules for controlling the transfer of data messages between the segments of the application, the hierarchical API commands having a plurality of requests that, when processed, deploy the application within the SDDC and deploy the plurality of rules for controlling the transfer of data messages between the segments of the application;
storing the hierarchical API commands as specific templates in a plurality of customizable templates used to define a plurality of multi-segment applications;
A method comprising: providing a graphical user interface or API gateway that allows the particular template to be obtained and customized to define a manifest that defines a set of segments of the multi-segment application and a set of rules for specifying communication between the segments of the multi-segment application.
前記マニフェストが後にコンピュータにより処理された場合に、(i)前記SDDC内のホストコンピュータ上の複数のマシンが、前記マルチセグメントアプリケーションの前記セグメントのセットを実装するためにデプロイされ、(ii)前記ルールのセットが、前記マルチセグメントアプリケーションの前記セグメントを実装する前記デプロイされた複数のマシンへの、または前記デプロイされた複数のマシンからの前記データメッセージの前記転送を制御するために、前記SDDC内のネットワーク要素のセットにデプロイされることを特徴とする請求項1に記載の方法。 2. The method of claim 1, wherein when the manifest is subsequently processed by a computer, (i) a plurality of machines on a host computer in the SDDC are deployed to implement the set of segments of the multi-segment application, and (ii) the set of rules is deployed to a set of network elements in the SDDC to control the forwarding of the data messages to and from the deployed plurality of machines that implement the segments of the multi-segment application. 前記ネットワーク要素は、前記アプリケーションセグメント間、及び前記アプリケーションセグメントと前記マルチセグメントアプリケーション以外のアプリケーションとの間で、前記デプロイされたルールに基づいてデータメッセージを転送するための、管理された転送要素を含むことを特徴とする請求項に記載の方法。 3. The method of claim 2, wherein the network elements include managed forwarding elements for forwarding data messages between the application segments and between the application segments and applications other than the multi-segment application based on the deployed rules. 前記ネットワーク要素は、前記アプリケーションセグメントに送られた、または前記アプリケーションセグメントから送られたデータメッセージに対して、前記デプロイされたルールに基づいてミドルボックスサービス操作を実行するためのミドルボックスサービス要素を含むことを特徴とする請求項に記載の方法。 3. The method of claim 2 , wherein the network element includes a middlebox service element for performing a middlebox service operation based on the deployed rules on data messages sent to or from the application segment. 前記ミドルボックスサービス要素は、ホストコンピュータにおいて実行されるミドルボックスサービスマシンを含むことを特徴とする請求項4に記載の方法。 The method of claim 4, wherein the middlebox service component includes a middlebox service machine executing on a host computer. 前記ミドルボックスサービス要素は、ホストコンピュータにおいて実行されるミドルボックスサービスエンジンを含むことを特徴とする請求項4に記載の方法。 The method of claim 4, wherein the middlebox service element includes a middlebox service engine executing on a host computer. 前記サービス操作は、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検出操作、及び侵入防止操作のうちの1つを含むことを特徴とする請求項4に記載の方法。 The method of claim 4, wherein the service operation includes one of a firewall operation, a load balancing operation, a network address translation operation, an encryption operation, an intrusion detection operation, and an intrusion prevention operation. 前記ミドルボックスサービス要素は、ファイアウォールマシンまたはデバイスを含むことを特徴とする請求項に記載の方法。 5. The method of claim 4 , wherein the middlebox service element comprises a firewall machine or device. 前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された3より多いアプリケーションセグメントを有することを特徴とする請求項1に記載の方法。 The method of claim 1, wherein the multi-segment application has more than three application segments defined in the hierarchical API command. 前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された5より多いアプリケーションセグメントを有することを特徴とする請求項1に記載の方法。 The method of claim 1, wherein the multi-segment application has more than five application segments defined in the hierarchical API command. 前記複数のデプロイされたマシンは、仮想マシンまたはコンテナを含むことを特徴とする請求項に記載の方法。 3. The method of claim 2 , wherein the plurality of deployed machines comprises virtual machines or containers. ソフトウェア定義データセンタ(SDDC)においてリソースをデプロイする方法であって、
前記SDDC内にデプロイするためのリソースの複数のセットを指定し、前記リソースに関連付けられたデータメッセージフローを制御するルールの複数のセットを定義する階層型APIコマンドを受信し、
前記階層型APIコマンドを、記リソースの複数のセット及び前記ルールの複数のセットを指定する複数の要求へパースし、
前記複数の要求のためのソート順序を定義し、
前記ソート順序に基づいて、サーバのセットに前記複数の要求を提供し、
前記サーバのセットに提供される前記複数の要求に基づいて、前記リソースの複数のセットをSDDC内にデプロイし、前記リソースに関連付けられた前記データメッセージフローを制御するために前記SDDC内のネットワーク要素のセットに前記ルールの複数のセットを提供する
ことを特徴とする方法。
1. A method for deploying resources in a software-defined data center (SDDC), comprising:
receiving hierarchical API commands that specify a plurality of sets of resources for deployment within the SDDC and define a plurality of sets of rules that control data message flow associated with the resources ;
Parsing the hierarchical API command into a plurality of requests specifying a plurality of sets of the resources and a plurality of sets of the rules;
defining a sort order for the plurality of requests;
providing the plurality of requests to a set of servers based on the sort order ;
Deploy the sets of resources within an SDDC based on the requests provided to the set of servers, and provide the sets of rules to a set of network elements within the SDDC to control the data message flows associated with the resources.
A method comprising:
前記リソースは、マルチセグメントアプリケーションのアプリケーションセグメントを含むことを特徴とする請求項12に記載の方法。 The method of claim 12, wherein the resource includes an application segment of a multi-segment application. 前記リソースは、前記アプリケーションセグメント間でデータメッセージを転送するための、管理された転送要素をさらに含むことを特徴とする請求項13に記載の方法。 The method of claim 13, wherein the resources further include managed forwarding elements for forwarding data messages between the application segments. 前記リソースは、前記アプリケーションセグメントに送られた、または前記アプリケーションセグメントから送られたデータメッセージに対してミドルボックスサービス操作を実行するためのミドルボックスサービス要素をさらに含むことを特徴とする請求項13に記載の方法。 The method of claim 13, wherein the resources further include a middlebox service element for performing middlebox service operations on data messages sent to or from the application segment. 前記サービス操作は、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検出操作、及び侵入防止操作のうちの少なくとも1つを含むことを特徴とする請求項15に記載の方法。 The method of claim 15, wherein the service operations include at least one of a firewall operation, a load balancing operation, a network address translation operation, an encryption operation, an intrusion detection operation, and an intrusion prevention operation. 前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された少なくとも3つのアプリケーションセグメントを有することを特徴とする請求項13に記載の方法。 The method of claim 13, wherein the multi-segment application has at least three application segments defined in the hierarchical API command. 前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された5より多いアプリケーションセグメントを有することを特徴とする請求項13に記載の方法。 The method of claim 13, wherein the multi-segment application has more than five application segments defined in the hierarchical API command. プロイされた前記リソースの複数のセットは、少なくとも1つの仮想マシンまたはコンテナを含むことを特徴とする請求項12に記載の方法。 13. The method of claim 12, wherein the multiple sets of deployed resources include at least one virtual machine or container. 前記APIコマンドは、先にデプロイされたマシンを更新するパラメータのセットを含み、
前記複数のリソースのデプロイは、前記パースされたAPIコマンドにおいて指定されたパラメータのセットに基づいて、前記先にデプロイされたマシンを更新することを含むことを特徴とする請求項12に記載の方法。
The API command includes a set of parameters to update a previously deployed machine;
13. The method of claim 12, wherein the deploying of the plurality of resources comprises updating the previously deployed machine based on a set of parameters specified in the parsed API command.
前記APIコマンドは、先にデプロイされたルールのセットを更新するパラメータのセットを含み、
前記複数のリソースのデプロイは、前記パースされたAPIコマンドにおいて指定されたパラメータのセットに基づいて、前記先に提供されたルールのセットを更新することを含む
ことを特徴とする請求項12に記載の方法。
The API command includes a set of parameters that update a previously deployed set of rules;
13. The method of claim 12, wherein deploying the plurality of resources includes updating the set of previously provided rules based on a set of parameters specified in the parsed API command.
少なくとも1つの処理ユニットによって実行された場合に、請求項1乃至21のいずれか1項に記載の方法を実装するコンピュータプログラム。 A computer program which, when executed by at least one processing unit, implements the method of any one of claims 1 to 21. 処理ユニットのセットと、
前記処理ユニットの少なくとも1つによって実装された場合に、請求項1乃至21のいずれか1項に記載の方法を実装するプログラムを格納した機械可読媒体と、
を有することを特徴とするコンピュータデバイス。
A set of processing units;
A machine-readable medium storing a program which, when implemented by at least one of said processing units, implements the method of any one of claims 1 to 21;
1. A computing device comprising:
JP2022161790A 2018-08-24 2022-10-06 Hierarchical API for defining multi-segment applications in SDDC Active JP7502386B2 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US16/112,408 2018-08-24
US16/112,396 2018-08-24
US16/112,408 US11086700B2 (en) 2018-08-24 2018-08-24 Template driven approach to deploy a multi-segmented application in an SDDC
US16/112,396 US10628144B2 (en) 2018-08-24 2018-08-24 Hierarchical API for defining a multi-segmented application in an SDDC
JP2021505355A JP7157238B2 (en) 2018-08-24 2019-08-14 Hierarchical API to define multi-segment applications in SDDC
PCT/US2019/046565 WO2020041073A1 (en) 2018-08-24 2019-08-14 Hierarchical api for defining a multi-segmented application in an sddc

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021505355A Division JP7157238B2 (en) 2018-08-24 2019-08-14 Hierarchical API to define multi-segment applications in SDDC

Publications (2)

Publication Number Publication Date
JP2022191348A JP2022191348A (en) 2022-12-27
JP7502386B2 true JP7502386B2 (en) 2024-06-18

Family

ID=67811023

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021505355A Active JP7157238B2 (en) 2018-08-24 2019-08-14 Hierarchical API to define multi-segment applications in SDDC
JP2022161790A Active JP7502386B2 (en) 2018-08-24 2022-10-06 Hierarchical API for defining multi-segment applications in SDDC

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2021505355A Active JP7157238B2 (en) 2018-08-24 2019-08-14 Hierarchical API to define multi-segment applications in SDDC

Country Status (6)

Country Link
EP (1) EP3814904A1 (en)
JP (2) JP7157238B2 (en)
CN (1) CN112639740B (en)
AU (2) AU2019325228B2 (en)
CA (1) CA3107455A1 (en)
WO (1) WO2020041073A1 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10812337B2 (en) 2018-06-15 2020-10-20 Vmware, Inc. Hierarchical API for a SDDC
US10942788B2 (en) 2018-06-15 2021-03-09 Vmware, Inc. Policy constraint framework for an sddc
US11086700B2 (en) 2018-08-24 2021-08-10 Vmware, Inc. Template driven approach to deploy a multi-segmented application in an SDDC
CN115380514B (en) 2020-04-01 2024-03-01 威睿有限责任公司 Automatic deployment of network elements for heterogeneous computing elements
US11803408B2 (en) 2020-07-29 2023-10-31 Vmware, Inc. Distributed network plugin agents for container networking
US11863352B2 (en) 2020-07-30 2024-01-02 Vmware, Inc. Hierarchical networking for nested container clusters
US11606254B2 (en) 2021-06-11 2023-03-14 Vmware, Inc. Automatic configuring of VLAN and overlay logical switches for container secondary interfaces
US12231398B2 (en) 2022-01-14 2025-02-18 VMware LLC Per-namespace IP address management method for container networks
EP4494314A1 (en) 2022-03-18 2025-01-22 VMware LLC Mapping vlan of container network to logical network in hypervisor to support flexible ipam and routing container traffic
US12177124B2 (en) 2022-10-04 2024-12-24 VMware LLC Using CRDs to create externally routable addresses and route records for pods
US11848910B1 (en) 2022-11-11 2023-12-19 Vmware, Inc. Assigning stateful pods fixed IP addresses depending on unique pod identity
US12199833B2 (en) 2022-11-29 2025-01-14 VMware LLC Network controller as a service (NCaaS) to define network policies for third-party container clusters
US12267212B2 (en) 2022-11-29 2025-04-01 VMware LLC Implementing defined service policies in a third-party container cluster
US12119980B2 (en) 2022-12-22 2024-10-15 Microsoft Technology Licensing, Llc Deploying and configuring network functions based on a hierarchical configuration model
US11831511B1 (en) 2023-01-17 2023-11-28 Vmware, Inc. Enforcing network policies in heterogeneous systems
WO2024254734A1 (en) 2023-06-12 2024-12-19 Vmware Information Technology (China) Co., Ltd. Layer 7 network security for container workloads

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288210A (en) 2002-03-27 2003-10-10 Nec System Technologies Ltd System and method for executing install program
JP2012084129A (en) 2010-08-27 2012-04-26 Savvis Inc Systems and methods for multi-tenant system providing virtual data centers in cloud configuration
JP2015534696A (en) 2012-10-10 2015-12-03 アルカテル−ルーセント Method and apparatus for automatically deploying geographically distributed applications in the cloud
US20180018375A1 (en) 2016-07-18 2018-01-18 Sap Se Hierarchical Window Database Query Execution
JP2018502508A (en) 2014-12-31 2018-01-25 シマンテック コーポレーションSymantec Corporation System and method for automatically applying a firewall policy within a data center application

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10180809B2 (en) * 2006-05-17 2019-01-15 Richard Fetik Secure application acceleration system, methods and apparatus
US20130019314A1 (en) * 2011-07-14 2013-01-17 International Business Machines Corporation Interactive virtual patching using a web application server firewall
US9860279B2 (en) * 2015-08-28 2018-01-02 Nicira, Inc. Defining network rules based on remote device management attributes
US10375121B2 (en) * 2016-06-23 2019-08-06 Vmware, Inc. Micro-segmentation in virtualized computing environments
US10333983B2 (en) * 2016-08-30 2019-06-25 Nicira, Inc. Policy definition and enforcement for a network virtualization platform
US10484243B2 (en) * 2016-09-16 2019-11-19 Oracle International Corporation Application management for a multi-tenant identity cloud service
US10320749B2 (en) * 2016-11-07 2019-06-11 Nicira, Inc. Firewall rule creation in a virtualized computing environment
US10873565B2 (en) * 2016-12-22 2020-12-22 Nicira, Inc. Micro-segmentation of virtual computing elements
US10503536B2 (en) 2016-12-22 2019-12-10 Nicira, Inc. Collecting and storing threat level indicators for service rule processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288210A (en) 2002-03-27 2003-10-10 Nec System Technologies Ltd System and method for executing install program
JP2012084129A (en) 2010-08-27 2012-04-26 Savvis Inc Systems and methods for multi-tenant system providing virtual data centers in cloud configuration
JP2015534696A (en) 2012-10-10 2015-12-03 アルカテル−ルーセント Method and apparatus for automatically deploying geographically distributed applications in the cloud
JP2018502508A (en) 2014-12-31 2018-01-25 シマンテック コーポレーションSymantec Corporation System and method for automatically applying a firewall policy within a data center application
US20180018375A1 (en) 2016-07-18 2018-01-18 Sap Se Hierarchical Window Database Query Execution

Also Published As

Publication number Publication date
JP2021535460A (en) 2021-12-16
CA3107455A1 (en) 2020-02-27
AU2022201625B2 (en) 2023-11-09
EP3814904A1 (en) 2021-05-05
AU2019325228B2 (en) 2021-12-09
AU2019325228A1 (en) 2021-02-25
JP2022191348A (en) 2022-12-27
CN112639740A (en) 2021-04-09
AU2022201625A1 (en) 2022-03-31
CN112639740B (en) 2025-05-30
WO2020041073A1 (en) 2020-02-27
JP7157238B2 (en) 2022-10-19

Similar Documents

Publication Publication Date Title
JP7502386B2 (en) Hierarchical API for defining multi-segment applications in SDDC
US12197971B2 (en) Template driven approach to deploy a multi-segmented application in an SDDC
US10628144B2 (en) Hierarchical API for defining a multi-segmented application in an SDDC
US20240031228A1 (en) Hierarchical api for a sddc
Tomarchio et al. Cloud resource orchestration in the multi-cloud landscape: a systematic review of existing frameworks
US20230333906A1 (en) Discovering and publishing api information
US9609023B2 (en) System and method for software defined deployment of security appliances using policy templates
US9621428B1 (en) Multi-tiered cloud application topology modeling tool
CN112470431B (en) Synthesis of models for networks using automatic Boolean learning
CN107534568B (en) Synthetic Constraints for Network Policy
WO2018044352A1 (en) Policy definition and enforcement for a network virtualization platform
WO2015065359A1 (en) Modifying realized topologies
JP2017534109A (en) Topology-based management of second day operations
EP3063655A1 (en) Management of the lifecycle of a cloud service modeled as a topology
WO2015065368A1 (en) Realized topology system management database
WO2015065355A1 (en) Stitching an application model to an infrastructure template
WO2015065350A1 (en) Management of the lifecycle of a cloud service modeled as a topology
US9641540B2 (en) User interface driven translation, comparison, unification, and deployment of device neutral network security policies
US11195216B2 (en) Federated marketplace portal
US12299154B1 (en) Secure data handling discovery
Atta Infrastructure migration from datacenter to cloud Solution

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221027

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231006

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20231128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20231205

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240606

R150 Certificate of patent or registration of utility model

Ref document number: 7502386

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350