JP2020504405A - 仮想ネットワーク検証サービス - Google Patents

仮想ネットワーク検証サービス Download PDF

Info

Publication number
JP2020504405A
JP2020504405A JP2019547254A JP2019547254A JP2020504405A JP 2020504405 A JP2020504405 A JP 2020504405A JP 2019547254 A JP2019547254 A JP 2019547254A JP 2019547254 A JP2019547254 A JP 2019547254A JP 2020504405 A JP2020504405 A JP 2020504405A
Authority
JP
Japan
Prior art keywords
network
virtual
virtual network
client
networking
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.)
Granted
Application number
JP2019547254A
Other languages
English (en)
Other versions
JP6737965B2 (ja
Inventor
クック,ジョン
ドッジ,キャサリン
マクラフリン,ショーン
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
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
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2020504405A publication Critical patent/JP2020504405A/ja
Application granted granted Critical
Publication of JP6737965B2 publication Critical patent/JP6737965B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/024Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

宣言型論理プログラミング言語を利用して、クライアントが仮想ネットワークについてのクエリを制約問題として提示できるようにする、プロバイダネットワーク用の仮想ネットワーク検証サービスであり、クエリは制約ソルバーエンジンを使用して解決され得る。プロバイダネットワーク環境における仮想ネットワークのネットワーキングプリミティブのためのセマンティクスおよび論理は、論理プログラミング言語に従って、ルールのセットとしてエンコードすることができ、ルールにおいてはネットワーキングセキュリティ標準および/またはクライアント定義ルールもエンコードされ得る。仮想ネットワークの記述を取得してエンコードすることができる。次いで、クエリによって表現された制約問題は、制約ソルバーエンジンを使用して、エンコードされたルールに従って、エンコードされた記述について解決することができ、結果はクライアントに提供され得る。【選択図】図3

Description

多くの企業および他の組織は、(例えば、ローカルネットワークの一部として)同じ場所に配置されているか、または代わりに(例えば、1つ以上のプライベートまたは公衆の中間ネットワークを介して接続された)複数の異なる地理的位置に配置されたコンピューティングシステムなど、多数のコンピューティングシステムを相互接続するコンピュータネットワークを操作してコンピュータネットワークの動作をサポートする。例えば、単一の組織によって、および単一の組織のために運営されるプライベートデータセンターや、顧客にコンピューティングリソースを提供するビジネスとして企業により運営されるパブリックデータセンターなど、多数の相互接続されたコンピューティングシステムを収容するデータセンターが普及している。パブリックデータセンター運営者の中には、様々な顧客が所有するハードウェアにネットワークアクセス、電力および安全な設置設備を提供するものもあれば、顧客が使用できるようにされたハードウェアリソースも含む「フルサービス」設備を提供するものもある。
いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す図である。 いくつかの実施形態による、例示的な仮想ネットワーク検証サービスの構成要素および動作を示す図である。 いくつかの実施形態による、クライアントが仮想ネットワークについての記述的情報とクエリとを仮想ネットワーク検証サービスへ提供し、仮想ネットワーク検証サービスがクエリを処理して結果をクライアントに提供することを示す図である。 いくつかの実施形態による、クライアントがクエリと仮想ネットワークへのアクセス許可とを仮想ネットワーク検証サービスに提供し、仮想ネットワーク検証サービスが仮想ネットワークから記述的情報を取得し、クエリを処理し、結果をクライアントに提供することを示す図である。 いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法のハイレベルフローチャートである。 いくつかの実施形態による、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供する方法のフローチャートであり、クライアントは、仮想ネットワーク検証サービスに記述的情報およびクエリを提供する。 いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法であって、この場合にクライアントが仮想ネットワークにアクセスするための記述的情報および許可を仮想ネットワーク検証サービスに提供する方法のフローチャートである。 いくつかの実施形態による、ピア仮想ネットワークを含むプロバイダネットワーク環境における仮想ネットワークの実装形態を示す図である。 いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための方法のフローチャートである。 いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための別の方法のフローチャートである。 いくつかの実施形態による、例示的なプロバイダネットワーク環境を示す図である。 いくつかの実施形態による、IPトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装する例示的なデータセンターを示す図である。 いくつかの実施形態による、ストレージ仮想化サービスおよびハードウェア仮想化サービスをクライアントに提供する例示的なプロバイダネットワークのブロック図である。 いくつかの実施形態による、少なくともいくつかのクライアントに仮想ネットワークを提供する例示的なプロバイダネットワークを示す図である。 いくつかの実施形態による、プロバイダネットワーク上の例示的仮想ネットワーク内のサブネットおよびセキュリティグループを示す図である。 いくつかの実施形態で使用され得る例示的なコンピュータシステムを示すブロック図である。
実施形態は、いくつかの実施形態および例示的な図面の例として本明細書に記載されているが、当業者は、記載された実施形態または図面に限定されないことを認識するであろう。しかし、図面およびその詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、むしろ、その意図は、添付の特許請求の範囲によって定義される主旨および範囲に該当する全ての変更、均等物、および代替物を包含することが理解されるべきである。本明細書で使用される見出しは、編成目的のみのためであり、そして説明または請求項の範囲を限定するために使用されることを意味しない。本出願を通して使用されるように、「可能性がある(may)」という語は、必須の意味(すなわち、必然的な意味)ではなく、寛容な意味(すなわち、可能性を有するという意味)で使用される。同様に、「含む(include)」、「含む(including)」、および「含む(includes)」という語は、含むがそれに限定されないことを意味する。請求項で使用されるとき、用語「または」は、包括的なまたはとして使用され、排他的なまたはとしては使用されない。例えば、「x、y、またはzのうちの少なくとも1つ」という句は、x、y、およびzのうちの任意の1つ、ならびにそれらの任意の組合せを意味する。
プロバイダネットワーク環境において仮想ネットワークを検証するための方法および装置の様々な実施形態が説明される。宣言型論理プログラミング言語を利用して、プロバイダネットワーク上の仮想ネットワークについての再帰クエリを含むクエリを制約問題として表現し、制約ソルバー(例えば、充足可能性モジュロ理論(satisfiability modulo theory,SMT)ソルバー)エンジンを用いてクエリを解決することによってクエリに対する結果を提供することを可能にする仮想ネットワーク検証サービスの実施形態について説明する。いくつかの実施形態で使用され得る例示的な宣言型論理プログラミング言語はDatalogである。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。
クライアントの仮想ネットワーク内でネットワーキングプリミティブをプロビジョニングおよび構成するために、クライアントは様々なプロバイダネットワークサービスを使用することができ、各サービスはそれ自身のアプリケーションプログラミングインターフェース(application programming interface,API)およびネットワーキングセマンティクスを提供することができる。従来、コードサンプルおよびドキュメンテーションが各サービスに提供され得るが、仮想ネットワークにおけるネットワーキングプリミティブ間の相互作用の正式な記述が存在していなかった。実施形態では、ネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表現およびエンコードされ得る。仮想ネットワーキングルールは、仮想ネットワークに実装され得るとともにプロバイダネットワークのサービスおよびAPIによって提供される様々なネットワーキングプリミティブ間の共通の関係および相互作用を表現するルールを含むことができる。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように機能するかの論理を記述する仮想ネットワーキングルールを1つのロケーションまたはファイルに提供することができる。
いくつかの実施形態では、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準(Payment Card Industry Data Security Standard,PCI DSS)、連邦リスクおよび認可管理プログラム(Federal Risk and Authorization Management Program,FedRAMP)標準、または医療保険の相互運用性と説明責任に関する法律(Health Insurance Portability and Accountability Act,HIPPA)標準、またはクライアントの内部セキュリティ標準などのネットワークセキュリティ標準をエンコードするルールを組み込んでもよい。いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントの仮想ネットワークが特定の標準に準拠していることを検証するためにクライアントによって選択的に使用され得る異なるネットワーキングセキュリティ標準をそれぞれエンコードする仮想ネットワーキングルールの2つ以上の異なるセットを提供し得る。いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントの内部セキュリティ標準、ベストプラクティスまたは他のネットワーキング要件をエンコードするカスタムルールをクライアントが定義できるようにすることができ、したがって、クライアントの特定の仮想ネットワークへの適用についてクライアントにより定義されるカスタムルールを含む仮想ネットワーキングルールのセットが実装され得る。
実施形態では、仮想ネットワーク検証サービスは、クライアントの仮想ネットワークについての記述的情報を取得する。記述的情報は、例えば、仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを識別し、インスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに付与または拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のネットワークを介したパス)を記述し、外部エンティティ(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス)へのインターフェースまたはアクセスポイントを記述し得る。いくつかの実施形態では、クライアントは仮想ネットワークから記述的情報を取得し、その記述的情報を仮想ネットワーク検証サービスに提供することができる。あるいは、いくつかの実施形態では、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述的情報を直接取得することを可能にする許可を、仮想ネットワーク検証サービスに与えてもよい。仮想ネットワーク検証サービスは、宣言的論理プログラミング言語に従って記述的情報を論理プログラムとしてエンコードすることができる。
仮想ネットワーク検証サービスの実施形態は、ポートスキャン方法および構文チェック方法などの従来のネットワーク分析方法と比較したときに多大な利点をもたらすことができる。これらの従来の方法とは異なり、仮想ネットワーク検証サービスは、エンコードされた仮想ネットワーキングルールと仮想ネットワーク記述とを通じて、すべてのネットワーキングプリミティブおよびリソースインスタンス、ならびにそれらの複雑な相互関係に関する知識を有する。スキャン時に稼働しているデバイスに依存し、したがってスキャン時に存在するデバイス間のネットワークを介したパスしか識別できない場合がある従来の方法とは異なり、記述的情報は、仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用してクライアントまたはサービスによって取得されることが可能であり、したがって、それぞれのデバイスまたはインスタンスが起動および待機していなくてもネットワークを介したパスが識別され得る。さらに、ポートスキャン方法では脅威の存在を識別できるが、脅威の不在は識別できない。構文チェック方法は個々のネットワークデバイスの浅い特性をチェックし得るが、攻撃ベクトルの有無を識別しない。一方、仮想ネットワーク検証サービスの実施形態は、エンコードされた仮想ネットワーキングルールで表現されるようなネットワークポリシーからの可能性のあるすべての逸脱を見つけることができ、脅威および攻撃ベクトルの存在および不在の両方を識別することができる。さらに、記述的情報は、仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールのみを使用してクライアントまたはサービスによって取得されてもよく、したがって、実体的なネットワークおよびCPU帯域幅を必要とするポートスキャン方法などの従来の方法とは異なって、クライアントの仮想ネットワークへの影響はほとんどまたは全くなく、また、ポートスキャン方法の場合のように、プロバイダネットワーク上のあらゆるデバイスへの完全なネットワークアクセスは必要ない。
実施形態では、仮想ネットワーク検証サービスはクライアントからクエリを受信する。いくつかの実施形態では、クエリは、SQLに類似しているがネットワーク構成に適用される表現的クエリ言語で提示され得る。そのようなクエリの非限定的な例は、仮想ネットワーク検証サービス(virtual network verification service,VNVS)に、インスタンスAがインスタンスBにSSHすることができるようなインスタンスのすべてのペアのリストを提供するように要求する「VNVSクエリ−iリスト:can−ssh(A,B)」のようなものであり得る。あるいは、いくつかの実施形態では、クエリはヒューマンフレンドリーな方法で提示され得る。そのようなクエリの非限定的な例は、「インスタンスAがインスタンスBにSSHで入ることができるように、インスタンスのすべてのペアのリストを表示する」のようなものであり得る。いくつかの実施形態において、少なくともいくつかのクエリが、予め定義され、仮想ネットワーク検証サービスへのグラフィカルインターフェースを介して、ユーザインターフェース要素(例えば、メニュー)においてクライアントに提供され得る。
クエリは、生成された論理プログラムについての定理に対応し、制約問題を表現する。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って制約問題を解決するように構成された制約ソルバープログラム(制約ソルバーエンジンとも呼ばれる)を使用して、エンコードされたルールに従って、エンコードされた記述に対するクエリによって表される制約問題を解決し、結果をクライアントに提供する。いくつかの実施形態では、仮想ネットワーク検証サービスは、クエリを提示するためのAPIおよびインターフェースを提供することができる。いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントがAPIおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントがAPIおよびインターフェースを介してカスタムクエリを作成および送信することを可能にし得る。
実施形態では、仮想ネットワーク検証サービスは、コンソール上のサービスへのグラフィカルインターフェースまたはコマンドラインインターフェース(command line interface,CLI)を介してクライアントによって使用されて、プロバイダネットワーク上のクライアントの仮想ネットワークについての質問(制約を指定するクエリとして提示される)に対する回答を取得することができる。提示される可能性がある質問の例としては、以下が挙げられるが、これらに限定されない。
●仮想ネットワーク内のどのインスタンスにインターネットからアクセス可能であるか。
●いずれのインスタンスが仮想ネットワーク上の指定されたリソースにアクセスできるか(例えば、データベース、キャッシュ、ストレージエンドポイント、他のインスタンスなど)。
●仮想ネットワークはネットワーキングセキュリティ標準のベストプラクティスに準拠しているか。
●仮想ネットワークは、ルールのこのセットにエンコードされているように、自分の会社のベストプラクティスに準拠しているか。
より一般的には、クライアントが仮想ネットワーク検証サービスを使用して、仮想ネットワーク内のリソースと仮想ネットワーク内の他のリソースとの間の予想パイプ、ならびに外部エンティティへの予想パイプが開いていること、および予想パイプが開いたパイプのみであること(例えば、外部エンティティが、外部エンティティが達することを許されるべきではない仮想ネットワーク内のリソースに達することができないこと)を検証することができる。
仮想ネットワーク内のリソースと他のリソースとの間のパイプ、または仮想ネットワーク内のリソースと外部エンティティとの間のパイプが開いていることを検証することは、リソース間、またはリソースと外部エンティティとの間にネットワークを介したパスまたはルート(例えば、リソースから、外部エンティティが仮想ネットワーク上のリソースにアクセスすることができるHTTPSゲートウェイへのパス)があること(すなわち、ネットワーク接続性があること)を検証することを含み得る。パスは、エンドポイント間のネットワーク接続性を提供するネットワークを介した直接パスであってもよく、あるいはルート上の1つ以上のホップを通過し、エンドポイント間のネットワーク接続性を提供する推移的なパスであってもよい。仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用して仮想ネットワークに対する記述的情報を取得することができ、したがって、それぞれのデバイスまたはインスタンスが起動および待機していない場合でもパスを検証することができる。いくつかの実施形態では、仮想ネットワークの記述的情報は、リソースに付与または拒否される許可(例えば、仮想ネットワーク上のエンドポイントへの1つのリソースアクセスを付与または拒否する許可、IPアドレス範囲、または、所定のエンドポイント(ストレージエンドポイントなど)にアクセスできる、またはできないリソースインスタンスの特定のポートを指定する許可など)を含み得る。これらの実施形態では、仮想ネットワーク内のパスが開いていることを検証することは、そのパスに対する必要な許可が付与されたことを検証することを含み得る。同様に、予想されるパスが開いたパスのみであることを検証することは、仮想ネットワークまたは外部エンティティ内のリソースが、アクセスするべきではないリソースにアクセスするための許可を有していないと判定することを含み得る。
仮想ネットワーキングルールの適切なセットを有する仮想ネットワーク検証サービスの実施形態は、例えば、顧客が顧客の仮想ネットワークがペイメントカード業界データセキュリティ標準(PCI DSS)、連邦リスクおよび認可管理プログラム(FedRAMP)標準、または医療保険の相互運用性と説明責任に関する法律(HIPPA)標準のようなネットワーキングセキュリティ標準に準拠していることを検証するのを助けるために、または顧客の仮想ネットワークがクライアントの内部セキュリティ標準またはその他の内部ネットワーキング要件に準拠していることを検証するために、クライアントによって使用され得る。
仮想ネットワーク検証サービスの実施形態のための別の例示的なアプリケーションは、ネットワークセキュリティ問題またはソフトウェアバグなどの脆弱性の、仮想ネットワークにおける起こり得る影響を識別するためのものである。例えば、仮想ネットワーク内の特定のインスタンス上で動作している特定のソフトウェアプログラムに脆弱性が発見された場合、クライアントは、このインスタンスが仮想ネットワーク内の他のインスタンスと通信できるすべての方法を特定するためにクエリを作成および送信することができる。結果は、クライアントが、脆弱性の起こり得る影響を特定し、したがって状況を最もうまく処理する方法に関して決定を行うことを可能にし得る。例えば、脆弱性を有するインスタンスからミッションクリティカルなデータベースを有するインスタンスへの直接のパスがない場合、問題に、通常の保守スケジュールに従って処理される低い優先度を与えることができる。脆弱性を有するインスタンスがミッションクリティカルなデータベースを有するインスタンスに影響を与える場合、仮想ネットワークの少なくとも一部をシャットダウンして脆弱性に直ちに対処するという決定を行うことができる。
仮想ネットワーク検証サービスの実施形態のための別の例示的なアプリケーションは、プロバイダネットワーク環境のための仮想ネットワークに対する変更のオフラインテストにおけるものである。例えば、プロバイダネットワーク環境で仮想ネットワーキングがどのように機能するかの論理を記述する仮想ネットワーキングルールをテスト環境で使用して、仮想ネットワーキングプリミティブの変更を、当該変更が仮想ネットワークにどのような影響を与え得るかを特定するために、プロバイダネットワークに変更が適用される前にテストすることができる。
仮想ネットワーク検証サービスの実施形態のための別の例示的な用途は、クライアント用の仮想ネットワークを自動的に合成することにある。例えば、クライアントは、特定のネットワーキングセキュリティ標準に準拠するとともに指定されたネットワーキングプリミティブのセットを含む仮想ネットワークを確立したい場合がある。クライアントが自身で仮想ネットワークを構築およびテストする必要がないように、仮想ネットワーク検証サービスおよび仮想ネットワーキングルールを使用して制約(クライアント指定プリミティブ、ネットワーキングセキュリティ標準、仮想ネットワーキングがプロバイダネットワーク環境内でどのように機能するかの論理を記述する仮想ネットワーキングルール、など)のすべてを満たす仮想ネットワークを自動的に合成および検証することができる。例えば、標準によって課せられた制約をクエリとして提示することができ、クエリを解決して、制約を満たす仮想ネットワーク構成を決定することができ、あるいは仮想ネットワークの構成が制約に準拠するかどうかを判定することができる。その場合に、制約に準拠する仮想ネットワークが合成されてもよく、あるいは仮想ネットワークが制約に準拠するように修正されてもよい。
仮想ネットワーク検証サービスの実施形態の別の例示的な用途は、構成または変更がプロバイダネットワーク上で実装される前に、クライアントが新たな仮想ネットワーク構成または既存の仮想ネットワークの変更を検証することを可能にすることである。例えば、仮想ネットワーク構成は、クライアントによって生成または修正されてもよく、その構成に対する制約はクエリとして提示することが可能であって、構成がプロバイダネットワークに実装される前に、クエリを解決して、構成がクエリで提示されたクライアントの制約に準拠していることを検証してもよい。
図1は、いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す図である。クライアントにプロバイダネットワーク100を提供するサービスプロバイダは、クライアントがプロバイダネットワーク100上の仮想ネットワーク110内のリソースを確立および管理することを可能にするサービスおよびアプリケーションプログラミングインターフェース(API)102を提供することができる。プロバイダネットワーク100環境における仮想ネットワーク110は、それぞれのクライアントのプロバイダネットワークリソースのセットを含むネットワーク空間であって、クライアントのリソースのためのプロバイダネットワーク100上の論理的に分離されたセクションとして機能するネットワーク空間として、広く定義され得る(例えば、アドレス範囲またはアドレス空間によって論理的に定義される)。仮想ネットワーク110は、ネットワークプロトコルに従ってプライベートまたはローカルのインターネットプロトコル(Internet Protocol,IP)アドレス空間、例えばインターネットプロトコルバージョン4(Internet Protocol version 4,IPv4)アドレス範囲またはサブネット内の32ビットIPアドレスを実装することができる。仮想ネットワーク110上のソース(例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント)には、仮想ネットワーク110のアドレス空間内のIPアドレス(例えば、32ビットのIPv4アドレス)を割り当てることができる。プロバイダネットワーク100上のクライアントの仮想ネットワーク110は、クライアントによって仮想コンピューティングリソースインスタンスとして構成されたホストデバイス上の仮想マシン(virtual machine,VM)などのクライアントのリソースインスタンスを含む。プロバイダネットワーク上のリソースインスタンスの少なくともいくつかは、複数のオペレーティングシステムをホストコンピュータ上で同時に、すなわちホストデバイス上のVMとして実行することを可能にするハードウェア仮想化技術に従って実装することができる。ホストデバイス上のハイパーバイザ、または仮想マシンモニタ(virtual machine monitor,VMM)は、それぞれのホスト上のVMに仮想プラットフォームを提示し、ホストデバイス上のVMの実行を監視する。各VMには1つ以上のIPアドレスが与えられ、それぞれのホスト上のVMMは、ホスト上のVMのIPドレスを認識することができる。
様々なネットワークリソース、構造、および機能性(ネットワーキングプリミティブと呼ばれる)が、様々なプロバイダネットワークサービス102を介してプロバイダネットワーク100のクライアントに提供され得る。クライアントは、少なくとも部分的には様々なサービスおよびAPI102を使用して、プロバイダネットワーク100上でクライアントの仮想ネットワーク110を作成、構成、設定および修正することができる。以下は、サービス102によって提供され得る例示的なネットワーキングプリミティブを列挙し、限定することを意図しない。
●例えば図1、図14および図15に示すような仮想ネットワーク。
●リソースインスタンス(例えば、サービス102を使用するクライアントによる、仮想コンピューティングリソースインスタンスとして構成されたVM(例えば、アプリケーションサーバ、Webサーバ、データベースサーバ、アクセスポイント、ゲートウェイ、ロードバランサー、ロギングサービスなどの特定のプロバイダネットワークサービスのインスタンス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど)。
●タグ−いくつかの実施形態では、クライアントは、リソースインスタンスをタグ付けすることによって、クライアントの仮想ネットワーク内の特定のリソースインスタンス(例えば、VM)に特定の役割を割り当てることを可能にされ得る。タグは、例えば、PRODやDEVなどのテキスト文字列であり得る。タグは、リソースインスタンスのメタデータに格納され得る。タグは、標準プロバイダネットワーク定義タグおよび/またはクライアント定義タグを含み得る。リソースインスタンスの例示的な役割には、セキュアソケットシェル(Secure Socket Shell,SSH)アクセスインスタンス、ロギングサービスインスタンス、コードリポジトリインスタンス、本番リソースインスタンスおよび開発リソースインスタンスが含まれるが、これらに限定されない。
●仮想ネットワークエンドポイント(例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント)。
●仮想ネットワークピアリング接続。いくつかの実施形態では、クライアントはプロバイダネットワーク上に2つ以上の仮想ネットワークを確立することができる。仮想ネットワークがインターネットなどの外部ネットワークを横断する必要なしにプロバイダネットワークを介して安全に通信することを可能にするピアリング接続が、仮想ネットワーク間で確立されてもよい。
●仮想ネットワークの外部のエンティティから仮想ネットワークのリソースの少なくともいくつかへのアクセスを提供するインターネットゲートウェイ。
●例えば、仮想ネットワーク上のリソースインスタンスのグループまたはクラスタ間でネットワークトラフィックを分散する仮想化ロードバランサインスタンスである、ロードバランサ。
●ネットワークアドレス変換(Network Address Translation,NAT)インスタンス。
●NATゲートウェイ。
●ネットワークアクセスコントロールリスト(Network Access Control List,ACL)。
●ネットワークインターフェース。
●ルートテーブル。
●サブネット−仮想ネットワークは、必ずしもそうとは限らないが、例えば図14および図15に示すように、2つ以上のサブネットワーク、またはサブネットに細分することができる。
●セキュリティグループ−いくつかの実施形態では、プロバイダネットワークは、例えば図15に示すように、クライアントが、サブネット内またはサブネット間で、クライアントの仮想ネットワーク内の仮想セキュリティグループを確立および管理することを可能にし得る。セキュリティグループは、リソースインスタンスを論理的にグループ化したものであり、セキュリティグループルールに従ってセキュリティグループ内の1つ以上のリソースインスタンスに到達することを可能にされたトラフィックを制御する仮想ファイアウォールとして機能する。
●地域−プロバイダネットワークサービスおよびリソース(例えば、仮想ネットワーク、VMインスタンス、データストレージ、ゲートウェイ、ロードバランサなど)は、複数の地理的な場所または地域でサポートされ得る。本明細書で使用されるとき、地域は、プロバイダネットワークサービスをサポートし、その中でクライアントがリソースを起動および構成することができる別個の地理的領域である。サービスおよびAPIにより、クライアントは1つ以上の地域でクライアントのリソースを起動または複製することが可能になり得る。
●ゾーン−各地域には、本明細書でゾーンと呼ばれる複数の孤立した場所が含まれ得る。クライアントのリソースインスタンスは、1つのゾーン内のリソースインスタンスに障害が発生した場合に、別のゾーン内のインスタンスが要求を処理できるように、地域内の複数のゾーンに分散させることができる。
いくつかの実施形態では、クライアントは、それぞれのプロバイダネットワークサービス102を使用して、上記のネットワーキングプリミティブのうちの1つ以上のインスタンスを含む仮想ネットワーク110をプロバイダネットワーク100上に確立することができる。図1は、プロバイダネットワーク100上の例示的な仮想ネットワーク110を示し、限定することを意図していない。クライアントの仮想ネットワーク110は、仮想ネットワークの機能を実装するリソースインスタンス118(例えば、VM)、例えばアプリケーションサーバ、ウェブサーバ、データベースサーバなどを含むことができる。リソースインスタンス118は、インスタンス118Aおよび118Bのグループまたはクラスタを含むことができ、例えば、インスタンス118Aは本番環境を表すことができ、インスタンス118Bは開発環境を表すことができる。いくつかの実施形態では、インスタンス118Aおよび118Bは異なるサブネットおよび/またはセキュリティグループ内にあり得る。
クライアントの仮想ネットワーク110はまた、アプリケーションおよびオペレーティングシステムロギングサービス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど、クライアントの仮想ネットワーク110内に特定のプロバイダネットワークサービスを実装するサービスインスタンス116(例えば、VM)を含み得る。
クライアントの仮想ネットワーク110はまた、クライアントネットワーク180上のデバイス182および他の外部エンティティ190がインターネットなどの中間ネットワーク150を介して仮想ネットワーク110内のリソースおよびエンドポイントと通信することを可能にするアクセスインスタンスを含み得る。アクセスインスタンスは、例えば、ロードバランサおよびゲートウェイ(インターネットゲートウェイ、NATゲートウェイなど)を含み得る。この例に示されるように、いくつかの実施形態では、アクセスインスタンスはHTTPSアクセスインスタンス114およびSSHアクセスインスタンス112を含み得る。HTTPSアクセスインスタンス114は、HTTPSプロトコルを使用して外部エンティティ190からリソースインスタンス118Aおよび118Bにそれぞれアクセスするためのインスタンス114Aおよび114B、ならびにHTTPSプロトコルを使用してクライアントネットワーク180上のデバイス182からサービスインスタンス116にアクセスするためのインスタンス114Cを含み得る。いくつかの実施形態では、クライアントは、例えばSSHを使用して、クライアントネットワーク180上のデバイス182(例えば、コンソール)から仮想ネットワーク110内のリソースインスタンスにアクセスすることができる。いくつかの実施形態では、SSHを使用してリソースインスタンスにアクセスするために、クライアントにインスタンスのIPアドレスとキーとが与えられる。クライアントは提供された情報を使用してインスタンスに直接SSH接続することができる。いくつかの実施形態では、SSHアクセスインスタンス112は、クライアントがSSHプロトコルを使用してクライアントネットワーク180上のデバイス182(例えば、コンソール)から仮想ネットワーク110上のクライアントのリソースインスタンスにアクセスすることを可能にするプロキシとして機能し得る。例えば、SSHアクセスインスタンス112は、クライアントの仮想ネットワークの公にアクセス可能なサブネット内にあり得る。クライアントのリソースインスタンスの少なくとも一部が、公にアクセスできないサブネットにある場合がある。これらのリソースインスタンスは、SSHアクセスインスタンス112に接続されたセキュリティグループからのSSHアクセスを許可するセキュリティグループ内にあり得る。クライアントは、クライアントのリソースインスタンスに接続するためにSSHアクセスインスタンス112に接続することができる。
図1に示すように、プロバイダネットワーク100は、プロバイダネットワーク100上の1つ以上のコンピューティングデバイスによって実施される仮想ネットワーク検証サービス130を含み得る。いくつかの実施形態では、仮想ネットワーク検証サービス130のインスタンスは、例えば図1に示すようにSSHアクセスインスタンス112によって、クライアントの仮想ネットワーク100上に実装することができる。仮想ネットワーク検証サービス130は、宣言的論理プログラミング言語(例えば、Datalog)を利用して、クライアントがプロバイダネットワーク上の仮想ネットワークについて再帰クエリを含むクエリを制約問題として表現することを可能にし、制約ソルバーエンジンを使用してクエリを解決することによりクエリに対する結果を提供する。図2は、いくつかの実施形態による仮想ネットワーク検証サービス130を示す。
図1を参照すると、仮想ネットワーク検証サービス130において、サービス102によって提供されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表現およびエンコードされ得る。仮想ネットワーキングルールは、仮想ネットワーク110に実装されている様々なネットワーキングプリミティブ間の共通の関係および相互作用を表現するルールを含むことができる。仮想ネットワーキングルールは、ネットワーキングセキュリティ標準(例えば、PCI、FedRAMP、HIPPAなど)、またはクライアントの内部セキュリティ標準もしくは他のネットワーキング要件をエンコードするルールも組み込むことができる。
仮想ネットワーク検証サービス130は、クライアントの仮想ネットワーク110に対する記述的情報を取得する。記述的情報は、例えば、仮想ネットワーク110に実装されたネットワーキングプリミティブのインスタンスを識別し、様々なインスタンスの記述(例えば、インスタンスに割り当てられた役割、インスタンスに付与された、またはインスタンスに拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパス)を記述し、そして外部エンティティ190へのインターフェースまたはアクセスポイントを記述する。いくつかの実施形態では、クライアントは、図3に示されるように、仮想ネットワーク110から記述的情報を取得し、その記述的情報を仮想ネットワーク検証サービス130に提供することができる。あるいは、いくつかの実施形態では、クライアントは、図4に示すように、仮想ネットワーク検証サービス130が仮想ネットワーク110から記述的情報を直接取得できるようにするために、仮想ネットワーク検証サービス130に許可を与えてもよい。仮想ネットワーク検証サービス130は、宣言的論理プログラミング言語に従って記述的情報を論理プログラムとしてエンコードすることができる。
仮想ネットワーク検証サービス130は、宣言型論理プログラミング言語を利用し、クライアントがプロバイダネットワーク100上のクライアントの仮想ネットワーク110についてのクエリを、例えばクライアントネットワーク180内のクライアントデバイス182上のサービス130へのグラフィカルインターフェースまたはコマンドラインインターフェース(CLI)を介して、提示できるようにする。いくつかの実施形態において使用され得る例示的な論理プログラミング言語は、Datalogである。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。いくつかの実施形態では、クエリは、SQLに幾分類似している可能性があるがネットワーク構成に適用される表現可能なクエリ言語で提示され得る。あるいは、いくつかの実施形態では、クエリは人間に優しい方法で提示されてもよい。クエリは、生成された論理プログラムに関する定理に対応し、制約問題を表現する。仮想ネットワーク検証サービス130は、制約解決エンジンを使用して、エンコードされたルールに従って、エンコードされた記述に対するクエリによって表現された制約問題を解決し、その結果をクライアントに提供する。いくつかの実施形態では、仮想ネットワーク検証サービス130は、クエリを提示するためのAPIおよびインターフェースを提供することができる。いくつかの実施形態では、仮想ネットワーク検証サービス130は、クライアントがAPIおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。いくつかの実施形態では、仮想ネットワーク検証サービス130は、クライアントがAPIおよびインターフェースを介してカスタムクエリを作成および送信することを可能にし得る。
以下は、図1に示される例示的な仮想ネットワークに関してクライアントによって提示され得る例示的なクエリを説明するものであり、限定することを意図するものではない。
仮想ネットワーク110のいくつかの実施形態では、仮想ネットワーク110上のリソースは、クライアントネットワーク180上の指定されたエンドポイントからSSHアクセスインスタンス112を通じてSSHを介してのみアクセス可能であるべきである。したがって、クライアントは、仮想ネットワーク110内のどのインスタンスも中間ネットワーク150上のエンドポイントからSSHを介してアクセス可能ではないことを検証したい場合がある。これを検証するための例示的なクエリは、次のように表現され得る。
すべてのインスタンス:
!internet−can−ssh−to−instance(インスタンス)
クライアントはまた、クライアントネットワーク180から、仮想ネットワーク110上のSSHアクセスインスタンス112がSSHを介してアクセス可能であることを検証したい場合もある。前述のように、いくつかの実施形態では、仮想ネットワーク110内のクライアントのインスタンスの少なくともいくつかに特定の役割を割り当てることができ、役割は、インスタンスのメタデータに格納されているタグによって示すことができる。タグは記述的情報に含まれてもよく、したがって仮想ネットワーク110のエンコードされた記述に示されてもよい。したがって、いくつかの実施形態では、タグは、例えば、特定の役割を割り当てられたインスタンスが実際にそれらの役割を実行できることを検証するために、クエリで使用され得る。クライアントネットワーク180から、仮想ネットワーク110上のSSHアクセスインスタンス112がSSHを介してアクセス可能であることを検証するための例示的なクエリは、次のように表現され得る。
すべてのインスタンス:
atom/instance−tag(インスタンス、タグキー/名前、タグ値/SSHAccessInstance)
<=>ClientNetwork−can−ssh−to−instance(インスタンス)
上記の式は、制約ソルバーによって評価されると、仮想ネットワーク110上のすべてのインスタンスをチェックし、 SSHAccessInstanceとしてタグ付けされたインスタンスについては、制約ソルバーは、そのインスタンスがクライアントネットワーク180からSSHを介して到達可能であるかどうかを判定し、そうである場合にTRUEを返し、そうでない場合にFALSEを返す。
以下は、仮想ネットワーク検証サービス130に適切なクエリを提示することによってクライアントが検証することができる仮想ネットワーク110の態様のいくつかの他の例を列挙したものであり、限定を意図するものではない。
●SSHを介してクライアントネットワーク180からSSHアクセスインスタンス112のみがアクセス可能である。
●リソースインスタンス118Aおよび118Bは、中間ネットワーク150B(例えばインターネット)を介して外部エンティティ190によってそれぞれのHTTPSアクセスインスタンス114Aおよび114Bを通して到達可能である。
●リソースインスタンス118Aおよび118Bは、要求を認証するために中間ネットワーク150Bに到達することができる。
●リソースインスタンス118Aおよび118Bは特定のサービスインスタンス116に書き込むことができる。
●特定のサービスインスタンス116は、HTTPSアクセスインスタンス114Cを介してクライアントネットワーク180から到達することができる。
●指定サービスインスタンス116は、仮想ネットワーク110上の指定エンドポイントに到達することができる。
●すべてのインスタンスは、指定されたタグのセットのうちの1つでタグ付けされる。
図2は、いくつかの実施形態による、例示的な仮想ネットワーク検証サービスの構成要素および動作を示す図である。仮想ネットワーク検証サービス230は、プロバイダネットワーク上の1つ以上のコンピューティングデバイスによって実装することができる。いくつかの実施形態では、仮想ネットワーク検証サービス230のインスタンスは、例えば図1に示すようにSSHアクセスインスタンス112によって、クライアントの仮想ネットワーク上に実装することができる。図2に示すように、いくつかの実施形態では、仮想ネットワーク検証サービス230は、サービスエンジン234、制約ソルバー236エンジンおよびAPI232を含むことができる。サービスエンジン234は、ルールエンコーディング250ロジック、クエリ処理260ロジックおよび記述エンコーディング270ロジックを実装してもよいが、それらに限定されない。制約ソルバー236は、エンコードされた仮想ネットワーキングルール238に基づいてエンコードされた記述240によって表される仮想ネットワークについての再帰クエリを含むクエリを解決するように構成された宣言型論理プログラミング言語エンジンである。API232は、クライアントを含むがこれに限定されない外部エンティティにサービス210の機能を公開する。
図2の(1A)および(1B)において、サービス230のルールエンコーディング250論理は、仮想ネットワークに適用されるべき仮想ネットワーキングルール238を取得(1A)およびエンコード(1B)し得る。エンコードされるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から取得することができる。例示的なエンコードされたルール238は、本明細書の後半で提供される。
実施形態では、仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルール238のセットとして取得およびエンコードされ得る。仮想ネットワーキングルール238は、仮想ネットワークに実装することができるとともにプロバイダネットワークのサービスおよびAPIによって提供される様々なネットワーキングプリミティブ間の共通の関係および相互作用を表現するルールを含むことができる。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように機能するかの論理を記述する仮想ネットワーキングルール238を1つのロケーションまたはファイルに提供することができる。
いくつかの実施形態では、仮想ネットワーク検証サービス230は、ペイメントカード業界データセキュリティ標準(PCI DSS)、連邦リスクおよび認可管理プログラム(FedRAMP)標準、または医療保険の相互運用性と説明責任に関する法律(HIPPA)標準などのネットワーキングセキュリティ標準のためのルールを取得およびエンコードすることができ、したがって、ネットワーキングセキュリティ標準を検証するためのルールを含む仮想ネットワーキングルール238のセットを実装することができる。いくつかの実施形態では、仮想ネットワーク検証サービス230は、クライアントの仮想ネットワークが特定の標準に準拠していることを検証するためにクライアントによって選択的に使用され得る異なるネットワーキングセキュリティ標準をそれぞれエンコードする仮想ネットワーキングルール238の2つ以上の異なるセットを提供し得る。いくつかの実施形態では、仮想ネットワーク検証サービス230は、クライアントの内部セキュリティ標準、ベストプラクティスまたは他のネットワーキング要件をエンコードするカスタムルールをクライアントが定義できるようにし、特定の仮想ネットワークに適用するためのクライアントによって定義されたカスタムルールを含む仮想ネットワーキングルール238のセットが実装され得る。
図2の(2)において、サービス230のクエリ処理260ロジックは、仮想ネットワーキングルール238に従って仮想ネットワークについて解決されるべきクエリをクライアントから受信することができる。いくつかの実施形態では、クライアントは、グラフィカルインターフェースまたはコマンドラインインターフェース(CLI)を介して、プロバイダネットワーク上でクライアントの仮想ネットワークについてのクエリをサービスAPI232に提供することができる。いくつかの実施形態では、クエリは、SQLに類似しているがネットワーク構成に適用される表現言語で提示され得る。あるいは、いくつかの実施形態では、クエリはヒューマンフレンドリーな方法で提示されてもよい。例示的なクエリは、図1を参照して上述されている。
図2の(3A)および(3B)において、サービス230の記述エンコーディング270ロジックは、仮想ネットワークの記述を取得(3A)およびエンコード(3B)することができる。いくつかの実施形態では、サービス230の記述エンコーディング270ロジックは、仮想ネットワークについての記述的情報(3A)を取得し、記述エンコーディング270ロジックが受け取る各クエリについて、クエリを解決するときに記述240が最新のものであることを保証するためのエンコードされた記述240として記述的情報をエンコード(3B)する。しかし、いくつかの実施形態では、記述的エンコーディング270ロジックは、仮想ネットワークに関する記述的情報を取得およびエンコードし、エンコードされた記述240を使用して2つ以上のクエリを処理することができる。図2の(3A)において、サービス230の記述エンコーディング270ロジックは、クライアントの仮想ネットワークに対する記述的情報を取得する。記述的情報は、例えば、仮想ネットワークに実装されているネットワーキングプリミティブのインスタンスを識別し、様々なインスタンスの記述(例えば、インスタンスに割り当てられた役割、インスタンスに付与または拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパスなど)を記述し、外部エンティティへのインターフェースまたはアクセスポイントを記述する。いくつかの実施形態では、クライアントは、図3に示すように、仮想ネットワークから記述的情報を取得し、その記述的情報をクエリとともに仮想ネットワーク検証サービス230に提供することができる。あるいは、いくつかの実施形態では、クライアントは、図4に示すように、仮想ネットワーク検証サービス230がクエリに応答して仮想ネットワークから記述的情報を直接取得することを可能にするために仮想ネットワーク検証サービス230に許可を与え得る。図2の(3B)において、サービス230の記述エンコーディング270ロジックは、宣言型論理プログラミング言語に従って、得られた記述的情報を論理プログラムとしてエンコードすることができる。
図2の(4)において、サービス230のクエリ処理260ロジックは、クエリを制約ソルバー236に提供することができる。制約ソルバー236は、エンコードされたルール238に従ってエンコードされた記述240に対するクエリによって表現された制約問題を解決し、(5A)において、結果(例えば、クエリによって提示された質問に対する回答)をクエリ処理260に提供する。そして、(5B)で、フォーマットされた結果をAPI232を介してクライアントに提供する。フォーマットされた結果は、テキスト結果(例えば、「YES」、「NO」、「TRUE」または「FALSE」などのクエリによって課された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリスト)および/またはグラフィカル結果(例えば、クエリを解決することによって決定された2つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって識別されたインスタンスを識別する仮想ネットワークのグラフィカル表現など)を含み得る。
図3は、いくつかの実施形態による、クエリを処理して結果をクライアントに提供する仮想ネットワーク検証サービスに仮想ネットワークおよびクエリについての記述的情報を提供するクライアントを示す図である。図3の(1)において、例えば図1に示すようなクライアントネットワーク上のクライアントデバイス382中のクライアントは、プロバイダネットワーク上のクライアントの仮想ネットワーク310から記述的情報を取得することができる。例えば、いくつかの実施形態では、仮想ネットワークを記述するメタデータを保持するプロバイダネットワークの1つ以上のプロバイダネットワークサービスは、クライアントが仮想ネットワーク310上のインスタンスに対する記述的情報を要求できるようにそれぞれのAPIを介してDESCRIBEまたは類似のコールを提供してもよい。図3の(2)において、クライアントは、サービスAPI332を介してプロバイダネットワーク検証サービス330のサービスエンジン334にクエリおよび記述的情報を提供することができる。図3の(3A)において、サービスエンジン334は、取得した記述的情報を宣言型論理プログラミング言語に従ってエンコードし、クエリおよびエンコードされた記述を制約ソルバー336に提供することができる。制約ソルバー336は、エンコードされた仮想ネットワーキングルール338に従って、エンコードされた記述に対するクエリを解決し、(3B)において結果(例えば、クエリによって提示された質問に対する回答)をサービスエンジン334に提供し、サービスエンジン334は結果をフォーマットし、フォーマットされた結果を(4)においてAPI332を介してクライアントに提供する。
図4は、いくつかの実施形態による、仮想ネットワークから記述的情報を取得し、クエリを処理し、結果をクライアントに提供する仮想ネットワーク検証サービスに対して、クエリと仮想ネットワークへのアクセス許可とを提供するクライアントを示す図である。図4の(1)で、クライアントは、プロバイダネットワークとのクライアントアカウント488を介して、仮想ネットワーク検証サービス430に許可を提供して、クライアントの仮想ネットワーク410から記述的情報を取得することができる。例えば、いくつかの実施形態では、仮想ネットワークを記述するメタデータを保持するプロバイダネットワークの1つ以上のプロバイダネットワークサービスは、クライアントが仮想ネットワーク410上のインスタンスに対する記述的情報を要求することを可能にするそれぞれのAPIを介してDESCRIBEまたは類似のコールを提供してもよい。クライアントは、サービス430が仮想ネットワーク410用のプロバイダネットワークサービスAPIへのDESCRIBEコールを実行できるようにするために、サービス430に許可を与えることができる。いくつかの実施形態では、クライアントは、仮想ネットワーク410内のインスタンスのメタデータに対する読み取り許可のみを与え、メタデータまたは仮想ネットワーク410上の他のデータ、または仮想ネットワーク410を介してアクセス可能な他のデータに対する書き込みまたは変更特権を与えない。図4の(2)において、クライアントは、サービスAPI432を介してプロバイダネットワーク検証サービス430のサービスエンジン434にクエリを提供することができる。図4の(3)において、クエリに応答して、サービスエンジン434は、例えば、それぞれのAPIを介して仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを用いて、クライアントの仮想ネットワーク410から記述的情報を得ることができる。図4の(4A)において、サービスエンジン434は、取得された記述的情報を宣言型論理プログラミング言語に従ってエンコードし、クエリおよびエンコードされた記述を制約ソルバー436に提供し得る。制約ソルバー436は、エンコードされた仮想ネットワーキングルール438に従って、エンコードされた記述についてのクエリを解決し、(4B)で結果(例えば、クエリによって提示された質問に対する回答)をサービスエンジン434に提供し、フォーマットされた結果を(5)でAPI432を介してクライアントに提供する。
図5は、いくつかの実施形態による、仮想ネットワークに関する情報をプロバイダネットワークのクライアントに提供するための方法のハイレベルフローチャートである。1000に示されるように、仮想ネットワーキングルールが取得およびエンコードされ得る。エンコードされるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から取得することができる。仮想ネットワーキングルールは、プロバイダネットワーク上の仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理を表現することができる。いくつかの実施形態では、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準(PCI DSS)、連邦リスクおよび認可管理プログラム(FedRAMP)規格、または医療保険の相互運用性と説明責任に関する法律(HIPPA)などのネットワーキングセキュリティ標準のためのルールを表す。いくつかの実施形態では、仮想ネットワーキングルールは、クライアントの内部セキュリティ標準または他のネットワーキング要件を表すクライアント定義ルールを含み得る。例示的なエンコードされたルールは、本書類において後で提供される。
1010に示すように、仮想ネットワーク検証サービスは、クライアントから仮想ネットワークについてのクエリを受信することができる。実施形態では、仮想ネットワーク検証サービスは、コンソール上のサービスへのグラフィカルインターフェースを介して、またはコマンドラインインターフェース(CLI)を介して、クライアントによって使用されて、プロバイダネットワーク上のクライアントの仮想ネットワークについての(再帰的クエリを含むクエリとして提示される)質問に対する回答を得ることができる。いくつかの実施形態では、クエリは、SQLに類似しているがネットワーク構成に適用される表現言語で提示され得る。あるいは、いくつかの実施形態では、クエリはヒューマンフレンドリーな方法で提示されてもよい。例示的なクエリは、図1を参照して上述されている。
1020に示されるように、仮想ネットワーク検証サービスは、仮想ネットワークについての記述的情報を取得およびエンコードすることができる。記述的情報は、例えば、仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを識別し、インスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに付与または拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパス)を記述し、そして外部エンティティ(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス)へのインターフェースまたはアクセスポイントを記述する。いくつかの実施形態では、クライアントは、図6に示すように、仮想ネットワークから記述的情報を取得し、記述的情報を仮想ネットワーク検証サービスに提供することができる。あるいは、いくつかの実施形態では、クライアントは、図7に示すように、仮想ネットワーク検証サービスが仮想ネットワークから記述的情報を取得することを可能にするために仮想ネットワーク検証サービスに許可を与えてもよい。仮想ネットワーク検証サービスは、記述的論理プログラミング言語(例えば、Datalog)に従って記述的情報を論理プログラムとしてエンコードすることができる。
1030に示されるように、仮想ネットワーク検証サービスは、宣言型論理プログラミング言語(例えば、Datalog)制約ソルバーエンジンを使用して、エンコードされた仮想ネットワーキングルールに従って、エンコードされた記述に対するクエリを解決し得る。1040に示すように、クエリ解決の結果(例えば、クエリによって提示された質問に対する回答)をフォーマットしてクライアントに提供することができる。フォーマットされた結果は、テキスト結果(例えば、「YES」、「NO」、「TRUE」、または「FALSE」などのクエリによって課された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリストなど)および/またはグラフィカル結果(例えば、クエリを解決することによって決定された2つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって識別されたインスタンスを識別する仮想ネットワークのグラフィカル表現など)を含み得る。
要素1040から要素1010に戻る矢印によって示されるように、要素1010〜1040は、クライアントの仮想ネットワークについての複数のクエリを提示および解決するために繰り返し実行され得る。いくつかの実施形態では、例えば、クライアントは、一連のクエリを含むスクリプトを書いて、そのスクリプトを実行してクエリを仮想ネットワーク検証サービスに提示し、そこから結果を受け取ることができる。図5に示すように、いくつかの実施形態では、仮想ネットワーク検証サービスは、仮想ネットワークについての記述的情報を取得し、仮想ネットワーク検証サービスが受け取る各クエリについて、クエリを解決するときに記述が最新のものであることを保証するためのエンコードされた記述として記述的情報をエンコードすることができる。しかしながら、いくつかの実施形態では、仮想ネットワーク検証サービスは、仮想ネットワークについての記述的情報を取得してエンコードし、エンコードされた記述を使用して2つ以上のクエリを処理することができる。
図6は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供する方法のフローチャートであり、クライアントは、記述的情報およびクエリを仮想ネットワーク検証サービスに提供する。1100に示されるように、クライアントは、例えばプロバイダネットワークサービスAPIによって提供されるDESCRIBEコールを使用して、仮想ネットワークから記述的情報を取得する。1110に示すように、クライアントは仮想ネットワーク検証サービスにクエリおよび記述的情報を送信する。1120に示すように、検証サービスは仮想ネットワークについての記述的情報をエンコードする。1130に示されるように、検証サービスは、制約ソルバーエンジンを使用して、エンコードされた仮想ネットワークルールに従って、エンコードされた記述に対するクエリを解決する。1140に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
図7は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供する方法のフローチャートであり、クライアントは、仮想ネットワークにアクセスするための記述的情報および許可を仮想ネットワーク検証サービスに提供する。1200に示すように、クライアントは、サービスが仮想ネットワークから記述的情報を取得することを可能にする許可、例えば仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを使用する許可を仮想ネットワーク検証サービスに与える。1210に示すように、クライアントは仮想ネットワーク検証サービスにクエリを送信する。1220に示すように、仮想ネットワーク検証サービスは、例えば仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを使用して、仮想ネットワークから記述的情報を取得する。1230に示すように、仮想ネットワーク検証サービスは仮想ネットワークについての記述的情報をエンコードする。1240に示すように、仮想ネットワーク検証サービスは、制約ソルバーエンジンを使用して、ルールに従って、エンコードされた記述に対するクエリを解決する。1250に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
図8は、いくつかの実施形態による、2つ以上のピア仮想ネットワークを含むプロバイダネットワーク環境におけるクライアントの仮想ネットワーク実装を示す図である。図8は、本明細書で説明されるように仮想ネットワーク検証サービス2030において使用され得る例示的な仮想ネットワークルールを説明するために部分的に提供される。図8に示すように、プロバイダネットワーク2000上のクライアントの仮想ネットワーク実装形態2010は、2つ以上の仮想ネットワーク2020を含み得る。図8は、クライアントの仮想ネットワーク実装形態2010における2つの仮想ネットワーク2020Aおよび2020Bを示す。いくつかの実施形態では、仮想ネットワーク2020Aおよび2020Bはそれぞれ1つ以上のサブネットを含むことができ、セキュリティグループは仮想ネットワーク2020Aおよび2020B内に確立することができる(例えば、図14および図15を参照)。ネットワークエンドポイント2022Aおよび2022Bは、それぞれの仮想ネットワーク2020Aおよび2020Bにおけるネットワーキングプリミティブの様々なインスタンス(例えば、リソースインスタンス)のネットワークインターフェースを表す。仮想ネットワーク2020Aおよび2020B上のインスタンスがインターネットなどの外部ネットワーク2050を横断する必要なしにプロバイダネットワーク2000を介して安全に通信することを可能にするピアリング接続2024が、仮想ネットワーク2020Aと2020Bとの間のプロバイダネットワーク2000を介して確立される。
「プライベートルーティング」の例示的なルールを以下に示す。これらの例は限定的であることを意図しない。これらの例で使用される「ルーティング」は、ファイアウォールがない場合、IPパケットが1つのエンドポイント2022から別のエンドポイント2022に流れ得ることを意味する。仮想ネットワーク実装形態2010内の2つのエンドポイント2022間のルーティングは、「プライベートルーティング」と呼ばれることがある。仮想ネットワーク実装形態2010において両方のエンドポイント2022が同じ仮想ネットワーク2020にあるか異なる仮想ネットワーク2020にあるかによって、ルールは異なり得る。以下は、仮想ネットワーク実装形態2010においてパケットが2つのエンドポイント2022間を流れ得るかどうかを判定するための記述的論理プログラミング言語に従う例示的なルールを説明する。
routable−private:endpoint−>endpoint−>type
−:routable−private Endpoint1 Endpoint2
<−routable−private−one−way Endpoint1 Endpoint2
<−routable−private−one−way Endpoint2 Endpoint1
最初の行はエンドポイントのタイプを定義する。Endpoint1およびEndpoint2は変数である。(routable−private−one−way Endpoint1 Endpoint2)および(routable−private−one−way Endpoint2 Endpoint1)が両方とも真(そうでない場合は偽)の場合、ルール(routable−private Endpoint1 Endpoint2)は真と評価される。仮想ネットワーク2020内のエンドポイント2022間のルーティングのために、ルールroutable−private−one−wayは以下のように定義されてもよい。
routable−private−one−way:endpoint−>endpoint−>type
−:routable−private−one−way Endpoint1 Endpoint2
<−endpoint−has−virtual−network Endpoint1 Vnetwork
<−endpoint−has−virtual−network Endpoint2 Vnetwork
Endpoint1およびEndpoint2は変数である。Vnetworkは同じ変数である(すなわち、同じ仮想ネットワーク2020を示す)。このルールは、Endpoint1およびEndpoint2の両方が同じ仮想ネットワーク2020内にある場合には真(そうでない場合には偽)と評価される。
ピアリング接続2024を介して異なる仮想ネットワーク2020内のエンドポイント2022間でルーティングするために、ルールroutable−private−one−wayを以下のように定義することができる。「//」で始まるテキストはコメントである。
−: routable−private−one−way Endpoint1 Endpoint2
//エンドポイントのIPを参照する
<−endpoint−has−private−ip Endpoint1 Ip1
<−endpoint−has− private−ip Endpoint1 Ip2
//エンドポイントの仮想ネットワークを参照する
<−endpoint−has−virtual−network Endpoint1 Vnetwork1
<−endpoint−has−virtual−network Endpoint2 Vnetwork2
//ピアリングのCIDR(クラスレスドメイン間ルーティング)を参照する
<−peered−cidrs Pcx Vnetwork1 Cidr1 Vnetwork2 Cidr2
//ソースエンドポイントのルートテーブルを参照する
<−endpoint−has−rtb Endpoint1 Rtb1
//テーブル内のルートのCIDRを参照し、そのルートがアクティブであることを確認する
<−atom/pcx−route Rtb1 Pcx Cidr3 route−state/active
//3つのCIDRすべてがそれぞれのIPと一致することを確認する
<−cidr−matches−private−ip Cidr1 Ip1
<−cidr−matches−private−ip Cidr2 Ip2
<−cidr−matches−private−ip Cidr3 Ip2
仮想ネットワークの合成
いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントが仮想ネットワーク自体を構築およびテストする必要がないように、制約、例えばクエリに課される制約を満たす仮想ネットワークを自動的に合成するのに使用できる。例えば、クライアントは、特定のネットワーキングセキュリティ標準および/またはクライアント指定のネットワーキング標準に準拠し、指定されたネットワーキングプリミティブのセットを含む仮想ネットワークを確立したいと思う場合がある。標準によって課された制約はクエリとして提示されることができ、クエリは、制約を満たす仮想ネットワーク構成を決定するために、あるいは仮想ネットワークの構成が制約に適合するかどうかを決定するために解決され得る。制約に適合する仮想ネットワークが合成されてもよく、あるいは仮想ネットワークが制約に適合するように修正されてもよい。
図9は、いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための方法のフローチャートである。3000に示されるように、クライアントはネットワーキングプリミティブのセットを指定し、そして所望の仮想ネットワークに対する制約を指定するクエリのセットを提示する。3010に示すように、検証サービスは、ネットワーキングプリミティブのセットを含む仮想ネットワーク構成であって、仮想ネットワーキングルールのセットに従ってクエリによって指定された制約を満たす仮想ネットワーク構成を決定する。3020に示されるように、仮想ネットワークは、適切なプロバイダネットワークサービスを介して仮想ネットワーク構成に従ってプロバイダネットワーク上に生成されてもよい。
図10は、いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための別の方法のフローチャートである。3100に示すように、クライアントは、既存の仮想ネットワークを指定し、仮想ネットワークに対する制約を指定するクエリのセットを提示する。3110に示されるように、検証サービスは、仮想ネットワークが仮想ネットワーキングルールのセットに従って、クエリによって指定された制約を満たすかどうかを判定するためにクエリを解決する。3120で、既存の仮想ネットワークが制約を満たす場合には、クライアントに通知することができ、方法は終了する。3120で、既存の仮想ネットワークが制約を満たさない場合には、制約に適合する新たな仮想ネットワークが適切なプロバイダネットワークサービスを通じてプロバイダネットワーク上に生成され得る。あるいは、いくつかの実施形態では、既存の仮想ネットワークは、制約を満たすために適切なプロバイダネットワークサービスを通じて修正されてもよい。
例示的なプロバイダネットワーク環境
本項では、図1から図10を参照して説明した方法および装置の実施形態が実装され得る例示的なプロバイダネットワーク環境について説明する。しかしながら、これらの例示的なプロバイダネットワーク環境は限定的であることを意図していない。
図11は、いくつかの実施形態による、例示的なプロバイダネットワーク環境を示す図である。プロバイダネットワーク4000は、プロバイダネットワークまたは1つ以上のデータセンター内のネットワーク内のデバイス上に実装された計算およびストレージリソースを含むがこれらに限定されない仮想化リソースのインスタンス4012を購入、レンタル、または他の方法で取得することを可能にする1つ以上の仮想化サービス4010を介してクライアントにリソース仮想化を提供し得る。プライベートIPアドレス4016は、リソースインスタンス4012に関連付けられてもよく、プライベートIPアドレスは、プロバイダネットワーク4000上のリソースインスタンス4012の内部ネットワークアドレスである。いくつかの実施形態では、プロバイダネットワーク4000は、クライアントがプロバイダ4000から取得し得るパブリックIPアドレス4014および/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)も提供し得る。
従来、プロバイダネットワーク4000は、仮想化サービス4010を介して、サービスプロバイダのクライアント(例えば、クライアントネットワーク4050Aを操作するクライアント)が、クライアントに割り当てられた、またはアロケートされた少なくともいくつかのパブリックIPアドレス4014を、特に、クライアントに割り当てられたリソースインスタンス4012に、動的に関連付けることを可能にし得る。プロバイダネットワーク4000はまた、クライアントが、そのクライアントにアロケートされた1つの仮想化コンピューティングリソースインスタンス4012に以前にマッピングされたパブリックIPアドレス4014を、やはりそのクライアントにアロケートされた別の仮想化コンピューティングリソースインスタンス4012に再マッピングすることを可能にし得る。サービスプロバイダによって提供された仮想化コンピューティングリソースインスタンス4012およびパブリックIPアドレス4014を使用して、クライアントネットワーク4050Aのオペレータなどのサービスプロバイダのクライアントは、例えば、クライアント固有のアプリケーションを実装し、クライアントのアプリケーションをインターネットなどの中間ネットワーク4040に提示することができる。次いで、中間ネットワーク4040上の他のネットワークエンティティ4020は、クライアントネットワーク4050Aによって公開された宛先パブリックIPアドレス4014へのトラフィックを生成することができ、トラフィックはサービスプロバイダのデータセンターにルーティングされ、データセンターではネットワーク基板を介して、現在宛先パブリックIPアドレス4014にマッピングされている仮想化コンピューティングリソースインスタンス4012のプライベートIPアドレス4016にルーティングされる。同様に、仮想化コンピューティングリソースインスタンス4012からの応答トラフィックは、ネットワーク基板を介して中間ネットワーク4040に戻ってソースエンティティ4020にルーティングされ得る。
本明細書で使用されるプライベートIPアドレスは、プロバイダネットワーク内のリソースインスタンスの内部ネットワークアドレスを指す。プライベートIPアドレスはプロバイダネットワーク内でのみルーティング可能である。プロバイダネットワークの外部から発信されたネットワークトラフィックは、プライベートIPアドレスに直接ルーティングされず、代わりに、トラフィックはリソースインスタンスにマッピングされているパブリックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスからプライベートIPアドレスへのマッピング、およびその逆のマッピングを実行するためのネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたは機器を含むことができる。
本明細書で使用される場合、パブリックIPアドレスは、サービスプロバイダまたはクライアントによってリソースインスタンスに割り当てられるインターネットルーティング可能なネットワークアドレスである。パブリックIPアドレスにルーティングされたトラフィックは、例えば1:1ネットワークアドレス変換(NAT)を介して変換され、リソースインスタンスのそれぞれのプライベートIPアドレスに転送される。
いくつかのパブリックIPアドレスが、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられることが可能であり、これらのパブリックIPアドレスは、標準パブリックIPアドレス、または単に標準IPアドレスと呼ばれることがある。いくつかの実施形態では、標準IPアドレスからリソースインスタンスのプライベートIPアドレスへのマッピングは、すべてのリソースインスタンスタイプに対するデフォルトの起動設定である。
少なくともいくつかのパブリックIPアドレスがプロバイダネットワーク4000のクライアントにアロケートされ、またはそれによって取得されることが可能であり、その場合にクライアントは、アロケートされたパブリックIPアドレスを、クライアントにアロケートされた特定のリソースインスタンスに割り当てることができる。これらのパブリックIPアドレスは、クライアントパブリックIPアドレス、または単にクライアントIPアドレスと呼ばれることがある。標準IPアドレスの場合のようにプロバイダネットワーク4000によってリソースインスタンスに割り当てられる代わりに、クライアントIPアドレスは、例えばサービスプロバイダによって提供されるAPIを介してクライアントによってリソースインスタンスに割り当てられてもよい。標準IPアドレスとは異なり、クライアントIPアドレスはクライアントアカウントに割り当てられ、必要に応じて、または好みに応じて、各クライアントによって他のリソースインスタンスに再マッピングされ得る。クライアントIPアドレスは、特定のリソースインスタンスではなく、クライアントのアカウントに関連付けられており、クライアントがクライアントIPアドレスを解放することを選択するまで、クライアントはそのIPアドレスを制御する。従来の静的IPアドレスとは異なり、クライアントIPアドレスは、クライアントのパブリックIPアドレスをクライアントのアカウントに関連付けられた任意のリソースインスタンスに再マッピングすることによって、リソースインスタンスまたはアベイラビリティゾーンの障害をマスクすることを可能にする。例えば、クライアントIPアドレスは、クライアントIPアドレスを代替のリソースインスタンスに再マッピングすることによって、クライアントはクライアントのリソースインスタンスまたはソフトウェアに関する問題を管理することができる。
図12は、いくつかの実施形態による、IPトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装する例示的なデータセンターを示す図である。プロバイダデータセンター4100は、ルータ、スイッチ、ネットワークアドレス変換装置(NAT)などのネットワーキングデバイス4112を含むネットワーク基板を含むことができる。いくつかの実施形態は、トンネルを使用してカプセル化されたパケットがネットワーク基板4110を通過することができるオーバーレイネットワークを提供するためにインターネットプロトコル(IP)トンネリング技術を使用することができる。IPトンネリング技術は、ネットワーク上にオーバーレイネットワーク(例えば、図12のデータセンター4100内のローカルネットワーク)を作成するためのマッピングおよびカプセル化システムを提供することができ、オーバーレイ層(パブリックIPアドレス)およびネットワーク基板4110層(プライベートIPアドレス)に別のネームスペースを提供することができる。オーバーレイ層内のパケットは、それらのトンネル基板ターゲット(プライベートIPアドレス)が何であるべきかを決定するために、(例えばマッピングサービス4130によって提供される)マッピングディレクトリに対してチェックされ得る。IPトンネリング技術は、仮想ネットワークトポロジ(オーバーレイネットワーク)を提供し、クライアントがパケットを送信したいIPアドレスを提供するときに、IPオーバーレイアドレスがどこにあるかを知っているマッピングサービス(例えば、マッピングサービス4130)と通信することによってIPアドレスが仮想空間内で実行されるように、クライアントに提示されるインターフェース(例えば、サービスAPI)がオーバーレイネットワークに付加される。
いくつかの実施形態では、IPトンネリング技術は、IPオーバーレイアドレス(パブリックIPアドレス)をサブストレートIPアドレス(プライベートIPアドレス)にマッピングし、2つのネームスペース間のトンネルにおいてパケットをカプセル化し、カプセル化がパケットから除去される正しいエンドポイントにトンネルを介してパケットを配信することができる。図12では、ホスト4120A上の仮想マシン(VM)4124Aから中間ネットワーク4150上のデバイスへの例示的なオーバーレイネットワークトンネル4134Aと、ホスト4120B上のVM4124Bとホスト4120C上のVM4124Cとの間の例示的なオーバーレイネットワークトンネル4134Bとが示されている。いくつかの実施形態では、パケットは送信前にオーバーレイネットワークパケットフォーマットでカプセル化されてもよく、オーバーレイネットワークパケットは受信後に除去されてもよい。他の実施形態では、オーバーレイネットワークパケットにおいてパケットをカプセル化する代わりに、オーバーレイネットワークアドレス(パブリックIPアドレス)を送信前にパケットの基板アドレス(プライベートIPアドレス)に埋め込み、受信時にパケットアドレスから除去してもよい。一例として、オーバーレイネットワークは、パブリックIPアドレスとして32ビットのIPv4(インターネットプロトコルバージョン4)アドレスを使用して実装され、IPv4アドレスは、プライベートIPアドレスとしてサブストレートネットワーク上で使用される128ビットのIPv6(インターネットプロトコルバージョン6)アドレスの一部として埋め込まれ得る。
図12を参照すると、実施形態が実装され得る少なくともいくつかのネットワークは、複数のオペレーティングシステムがホストコンピュータ(例えば、図12のホスト4120Aおよび4120B)上で同時に動作することを可能にする、すなわち、ホスト4120上の仮想マシン(VM)4124のような、ハードウェア仮想化技術を含み得る。VM4124は、例えば、ネットワークプロバイダのクライアントにレンタルまたはリースされ得る。ホスト4120上のハイパーバイザまたは仮想マシンモニタ(VMM)4122は、ホスト上のVM4124に仮想プラットフォームを提示し、VM4124の実行を監視する。各VM4124は、1つ以上のプライベートIPアドレスを与えられてもよく、ホスト4120上のVMM4122は、ホスト上のVM4124のプライベートIPアドレスを認識してもよい。マッピングサービス4130は、すべてのネットワークIPプレフィックス、およびローカルネットワーク上でIPアドレスを提供しているルータまたは他のデバイスのIPアドレスを認識してもよい。これは、複数のVM4124にサービスを提供するVMM4122のIPアドレスを含む。マッピングサービス4130は、例えばサーバシステム上に集中させることができ、あるいは2つ以上のサーバシステムまたはネットワーク上の他のデバイスの間に分散させることができる。ネットワークは、例えば、マッピングサービス技術およびIPトンネリング技術を使用して、例えば、データセンター4100ネットワーク内の異なるホスト4120上のVM4124間でデータパケットをルーティングすることができ、内部ゲートウェイプロトコル(Interior Gateway Protocol,IGP)を使用してこのようなローカルネットワーク内でルーティング情報を交換し得ることに留意されたい。
さらに、プロバイダデータセンター4100ネットワーク(自律システム(autonomous system,AS)と呼ばれることもある)などのネットワークは、マッピングサービス技術、IPトンネリング技術およびルーティングサービス技術を使用して、VM4124からインターネットデスティネーションに、およびインターネットソースからVM4124に、パケットをルーティングすることができる。インターネット上のソースとデスティネーションとの間のインターネットルーティングには、通常、外部ゲートウェイプロトコル(EGP)または境界ゲートウェイプロトコル(BGP)が使用されることに留意されたい。図12は、いくつかの実施形態による、リソース仮想化技術を提供し、インターネットトランジットプロバイダに接続するエッジルータ4114を介して完全なインターネットアクセスを提供するネットワークを実装する例示的なプロバイダデータセンター4100を示す。プロバイダデータセンター4100は、例えば、ハードウェア仮想化サービスを介して仮想コンピューティングシステム(VM4124)を実装する能力、およびストレージ仮想化サービスを介してストレージリソース4118上に仮想化データストア4116を実装する能力をクライアントに提供し得る。
データセンター4100ネットワークは、例えばデータセンター4100内のホスト4120上のVM4124からインターネットデスティネーションに、およびインターネットソースからVM4124にパケットをルーティングするために、仮想化リソースとの間を行き来するトラフィックをルーティングするIPトンネリング技術、マッピングサービス技術およびルーティングサービス技術を実装することができる。インターネットソースおよびデスティネーションは、例えば、中間ネットワーク4140に接続されたコンピューティングシステム4170と、(例えば、ネットワーク4150をインターネットトランジットプロバイダに接続するエッジルータ4114を介して)中間ネットワーク4140に接続するローカルネットワーク4150に接続されたコンピューティングシステム4152とを含むことができる。プロバイダデータセンター4100ネットワークはまた、例えばデータセンター4100内のホスト4120上のVM4124から同じホスト上の、またはデータセンター4100内の他のホスト4120上の他のVM4124へと、データセンター4100内のリソース間でパケットをルーティングしてもよい。
データセンター4100を提供するサービスプロバイダはまた、データセンター4100と同様のハードウェア仮想化技術を含むとともに中間ネットワーク4140にも接続され得る追加のデータセンター4160を、提供し得る。パケットは、データセンター4100から他のデータセンター4160へ、例えば、データセンター4100内のホスト4120上のVM4124から他の類似のデータセンター4160内の他のホスト上の他のVMへ、およびその逆に転送することができる。
上記は、複数のオペレーティングシステムがホスト上の仮想マシン(VM)としてホストコンピュータ上で同時に動作することを可能にするハードウェア仮想化技術を説明しているが、VMはネットワークプロバイダのクライアントにレンタルまたはリースされてもよく、同様に、ストレージリソース4118などの他のコンピューティングリソースをネットワークプロバイダのクライアントに仮想化リソースとして提供するために使用されてもよい。
図13は、いくつかの実施形態による、ストレージ仮想化サービスおよびハードウェア仮想化サービスをクライアントに提供する例示的なプロバイダネットワークのブロック図である。ハードウェア仮想化サービス4220は、複数の計算リソース4224(例えば、VM)をクライアントに提供する。計算リソース4224は、例えば、プロバイダネットワーク4200のクライアントに(例えば、クライアントネットワーク4250を実装するクライアントに)レンタルまたはリースすることができる。各計算リソース4224は、1つ以上のプライベートIPアドレスを与えられてもよい。プロバイダネットワーク4200は、計算リソース4224のプライベートIPアドレスからパブリックインターネットデスティネーションに、およびパブリックインターネットソースから計算リソース4224にパケットをルーティングするように構成され得る。
プロバイダネットワーク4200は、例えばローカルネットワーク4256を介して中間ネットワーク4240に結合されたクライアントネットワーク4250、中間ネットワーク4240およびプロバイダネットワーク4200に結合されたハードウェア仮想化サービス4220を介して仮想コンピューティングシステム4292を実装する能力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス4220は、1つ以上のAPI4202、例えばウェブサービスインターフェースを提供することができ、それを介してクライアントネットワーク4250は例えばコンソール4294を介してハードウェア仮想化サービス4220によって提供される機能にアクセスできる。いくつかの実施形態では、プロバイダネットワーク4200において、クライアントネットワーク4250の各仮想コンピューティングシステム4292は、リース、レンタルまたは他の方法でクライアントネットワーク4250に提供される計算リソース4224に対応し得る。
仮想コンピューティングシステム4292および/または別のクライアントデバイス4290、またはコンソール4294の、インスタンスから、クライアントは、例えば1つ以上のAPI4202を介してストレージ仮想化サービス4210の機能にアクセスして、プロバイダネットワーク4200によって提供される仮想データストア4216からデータにアクセスし、仮想データストア4216にデータを格納することができる。いくつかの実施形態では、少なくともいくつかのデータ、例えば頻繁にアクセスされるまたは重要なデータをローカルにキャッシュすることができ、1つ以上の通信チャネルを介して仮想化データストアサービス4210と通信することができる仮想化データストアゲートウェイ(図示世せず)をクライアントネットワーク4250に設けて、一次データストア(仮想化データストア4216)が保持されるように、ローカルキャッシュから新たなまたは修正されたデータをアップロードすることができる。いくつかの実施形態では、ユーザは、仮想コンピューティングシステム4292を介して、および/または別のクライアントデバイス4290上で、ローカル仮想化ストレージ4298としてユーザに見える仮想データストア4216のボリュームをマウントおよびアクセスすることができる。
図13には示されていないが、仮想化サービスはまた、API4202を介してプロバイダネットワーク4200内のリソースインスタンスからアクセスされてもよい。例えば、クライアント、機器サービスプロバイダ、または他のエンティティは、プロバイダネットワーク4200上のそれぞれの仮想ネットワーク内からAPI4202を介して仮想化サービスにアクセスして、仮想ネットワーク内または別の仮想ネットワーク内の1つ以上のリソースインスタンスのアロケーションを要求し得る。ネットワーク。
図14は、いくつかの実施形態による、プロバイダネットワーク上の仮想ネットワークを少なくともいくつかのクライアントに提供する例示的なプロバイダネットワークを示す図である。例えば、プロバイダネットワーク4300上のクライアントの仮想ネットワーク4360は、クライアントネットワーク4350上のそれらの既存のインフラストラクチャ(例えば、デバイス4352)を論理的に分離されたリソースインスタンスのセット(例えば、VM4324Aおよび4324Bならびにストレージ4318Aおよび4318B)に接続し、セキュリティサービス、ファイアウォール、侵入検知システムなどの管理機能を拡張して、それらのリソースインスタンスを含めることを可能にする。
クライアントの仮想ネットワーク4360は、プライベート通信チャネル4342を介してクライアントネットワーク4350に接続することができる。プライベート通信チャネル4342は、例えば、ネットワークトンネリング技術または中間ネットワーク4340を介した他の何らかの技術に従って実装されるトンネルであり得る。中間ネットワークは、例えば、共有ネットワークまたはインターネットなどの公衆ネットワークとすることができる。あるいは、プライベート通信チャネル4342は、仮想ネットワーク4360とクライアントネットワーク4350との間の直接の専用接続を介して実装されてもよい。
公衆ネットワークは、複数のエンティティへのオープンアクセスおよびそれらの間の相互接続性を提供するネットワークとして広く定義され得る。インターネット、またはワールドワイドウェブ(World Wide Web,WWW)は公衆ネットワークの一例である。共有ネットワークは、アクセスが一般に制限されていない公衆ネットワークとは対照的に、アクセスが2つ以上のエンティティに制限されるネットワークとして広く定義され得る。共有ネットワークは、例えば、1つ以上のローカルエリアネットワーク(LAN)および/またはデータセンターネットワーク、または相互接続されて広域ネットワーク(wide area network,WAN)を形成する2つ以上のLANもしくはデータセンターネットワークを含み得る。共有ネットワークの例には、企業ネットワークおよび他の企業ネットワークが含まれ得るが、これらに限定されない。共有ネットワークは、ローカルエリアをカバーするネットワークからグローバルネットワークまで、範囲内のどこにあってもよい。共有ネットワークは、少なくともいくつかのネットワークインフラストラクチャをパブリックネットワークと共有することができ、共有ネットワークは、パブリックネットワークを含むことができる1以上の他のネットワークに、他のネットワークと共有ネットワークとの間の制御されるアクセスによって結合することができることに留意されたい。共有ネットワークは、インターネットなどの公衆ネットワークとは対照的に、プライベートネットワークと見なすこともできる。いくつかの実施形態では、共有ネットワークまたは公衆ネットワークのいずれかが、プロバイダネットワークとクライアントネットワークとの間の中間ネットワークとして機能し得る。
プロバイダネットワーク4300上のクライアントに対して仮想ネットワーク4360を確立するために、1つ以上のリソースインスタンス(例えば、VM4324Aおよび4324Bならびにストレージ4318Aおよび4318B)を仮想ネットワーク4360に割り当てることができる。他のリソースインスタンス(例えば、ストレージ4318CおよびVM4324C)は、他のクライアント使用のためにプロバイダネットワーク4300上で利用可能なままであり得ることに留意されたい。ある範囲のパブリックIPアドレスも仮想ネットワーク4360にアロケートすることができる。さらに、プロバイダネットワーク4300の1つ以上のネットワーキングデバイス(ルータ、スイッチなど)を仮想ネットワーク4360にアロケートすることができる。プライベート通信チャネル4342は、仮想ネットワーク4360のプライベートゲートウェイ4362とクライアントネットワーク4350のゲートウェイ4356との間に確立されてもよい。
いくつかの実施形態では、プライベートゲートウェイ4362に加えて、またはその代わりに、仮想ネットワーク4360は、プライベート通信チャネル4342を介する代わりに、またはそれに加えて、仮想ネットワーク4360内のリソースが中間ネットワーク4340を介してエンティティ(例えば、ネットワークエンティティ4344)と直接通信でき、その逆もできるようにするパブリックゲートウェイ4364を含み得る。
仮想ネットワーク4360は、必ずというわけではないが、2つ以上のサブネットワークまたはサブネット4370に細分することができる。例えば、プライベートゲートウェイ4362およびパブリックゲートウェイ4364の両方を含む実装形態では、仮想ネットワーク4360は、プライベートゲートウェイ4362を通じて到達可能なリソース(この例ではVM4324Aおよびストレージ4318A)を含むサブネット4370Aと、パブリックゲートウェイ4364を介して到達可能なリソース(この例では、VM4324Bおよびストレージ4318B)を含むサブネット4370Bとに細分することができる。
クライアントは、仮想ネットワーク4360内の特定のリソースインスタンスに特定のクライアントパブリックIPアドレスを割り当てることができる。中間ネットワーク4340上のネットワークエンティティ4344はその後、クライアントによって公開されたパブリックIPアドレスにトラフィックを送信することができ、トラフィックは、プロバイダネットワーク4300によって、関連付けられたリソースインスタンスにルーティングされる。リソースインスタンスからの戻りトラフィックは、プロバイダネットワーク4300によってルーティングされ、中間ネットワーク4340を介してネットワークエンティティ4344に戻される。リソースインスタンスとネットワークエンティティ4344との間のトラフィックをルーティングすることは、リソースインスタンスのパブリックIPアドレスとプライベートIPアドレスとの間で変換するためのネットワークアドレス変換を必要とし得ることに留意されたい。
いくつかの実施形態は、図14に示されるように、クライアントがクライアントの仮想ネットワーク4360内のパブリックIPアドレスをクライアントの外部ネットワーク4350上のデバイスに再マッピングすることを可能にし得る。パケットが(例えば、ネットワークエンティティ4344から)受信されると、ネットワーク4300は、パケットによって示されたデスティネーションIPアドレスが外部ネットワーク4350上のエンドポイントに再マッピングされたと判断し、プライベート通信チャネル4342を介して、または中間ネットワーク4340を介して、パケットのそれぞれのエンドポイントへのルーティングを処理する。応答トラフィックは、エンドポイントからプロバイダネットワーク4300を介してネットワークエンティティ4344にルーティングされてもよく、あるいはクライアントネットワーク4350によってネットワークエンティティ4344に直接ルーティングされてもよい。ネットワークエンティティ4344の観点からは、あたかもネットワークエンティティ4344がプロバイダネットワーク4300上のクライアントのパブリックIPアドレスと通信しているように見える。しかしながら、ネットワークエンティティ4344は実際にはクライアントネットワーク4350上のエンドポイントと通信している。
図14は、中間ネットワーク4340上およびプロバイダネットワーク4300の外部にあるネットワークエンティティ4344を示しているが、ネットワークエンティティは、プロバイダネットワーク4300上のエンティティとすることができる。例えば、プロバイダネットワーク4300によって提供されるリソースインスタンスのうちの1つは、クライアントによって公開されたパブリックIPアドレスにトラフィックを送信するネットワークエンティティであり得る。
図15は、いくつかの実施形態による、プロバイダネットワーク上の例示的な仮想ネットワーク内のサブネットおよびセキュリティグループを示す図である。いくつかの実施形態では、図14のプロバイダネットワーク4300などのプロバイダネットワークは、クライアントが、サブネット4414内またはサブネット4414間で、クライアントの仮想ネットワーク4410内の仮想セキュリティグループ4416を確立および管理することを可能にし得る。セキュリティグループ4416は、リソースインスタンス4418の論理グループであり、セキュリティグループルールに従ってセキュリティグループ4416内の1つ以上のリソースインスタンス4418に到達することを可能にされたトラフィックを制御する仮想ファイアウォールとして機能する。クライアントは、仮想ネットワーク4410内に1つ以上のセキュリティグループ4416を確立し、仮想ネットワーク4410内の各リソースインスタンス4418をセキュリティグループ4416の1つ以上に関連付けることができる。いくつかの実施形態では、クライアントは、セキュリティグループ4416に関連付けられたリソースインスタンス4418に到達することを可能にされたインバウンドトラフィックを制御する各セキュリティグループ4416のルールを確立および/または変更することができる。
図15に示す例示的な仮想ネットワーク4410では、仮想ネットワーク4410は2つのサブネット4414Aおよび4414Bに細分される。仮想ネットワーク4410へのアクセスは、ゲートウェイ4430によって制御される。各サブネット4414は、それぞれのサブネット4414上のリソースインスタンス4418へ(および、からの)トラフィックをルーティングするように動作する少なくとも1つのルータ4412を含むことができる。いくつかの実施形態では、ネットワークアクセス制御リスト(access control list,ACL)を使用して、ルータ4412のサブネット4414へのアクセスを制御することができる。図15に示す例では、リソースインスタンス4418A〜4418Eはサブネット4414A上にあり、リソースインスタンス4418F〜4418Jはサブネット4414B上にある。クライアントは、4つのセキュリティグループ4416A〜4416Dを確立している。図15に示されるように、セキュリティグループは、サブネット4414A上のリソースインスタンス4418Aおよび4418Bとサブネット4414B上のリソースインスタンス4418Fとを含むセキュリティグループ4416Aがそうであるように、サブネット4414間に広がってもよい。さらに、リソースインスタンス4418は、セキュリティグループ4416Aおよび4416Bに含まれるリソースインスタンス4418Aと同様に、2つ以上のセキュリティグループ4416に含まれてもよい。
本開示の実施形態は、以下の節を考慮して説明され得る。
1.メモリに結合されたプロセッサを含むコンピュータシステムであって、メモリは仮想ネットワーク検証サービスの命令を含み、命令は、実行時にシステムに、
クライアントデバイスを介してクライアントから、仮想ネットワークであってプロバイダネットワーク内でインスタンス化され仮想マシンを含む仮想ネットワークについての、クエリであって制約問題として表現されるクエリを受信させ、
クエリに応答して、
クライアントの仮想ネットワークに対する記述的情報を取得させ、
宣言的論理プログラミング言語に従って記述的情報をエンコードして、仮想ネットワークのエンコードされた記述を生成させ、
制約ソルバープログラムであって宣言型論理プログラミング言語に従って制約問題を解決するように構成された制約ソルバープログラムを使用して、エンコードされた仮想ネットワーキングルールに従ってクエリを解決させ、
クエリ解決の結果をクライアントデバイスに提供させる、システム。
2.メモリは、実行時にシステムにプロバイダネットワークのアプリケーションプログラムインターフェースから記述的情報を取得させる命令をさらに含む、条項1に記載のシステム。
3.実行時にシステムに記述的情報を取得させる命令は、実行時にシステムに、
1つ以上のプロバイダネットワークサービスから仮想ネットワークの記述的情報を取得するための許可をクライアントから受け取らせ、
1つ以上のプロバイダネットワークサービスから、プロバイダネットワーク上の仮想ネットワークに対する記述的情報を取得させる命令をさらに含む、条項1に記載のシステム。
4.記述的情報は、仮想ネットワーク内で実装されたネットワーキングプリミティブのインスタンスを識別する情報、仮想ネットワーク内の仮想マシンの記述、仮想ネットワーク内の仮想マシン間の関係の記述、または仮想ネットワークの外部のエンティティへのインターフェースの記述のうちの1つ以上を含む条項1に記載のシステム。
5.仮想ネットワーキングルールは、仮想ネットワークに実装されたネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理をエンコードするルール、1つ以上のネットワーキングセキュリティ標準をエンコードするルール、またはクライアントのネットワーキング要件をエンコードするクライアント定義ルールのうちの1つ以上を含む、条項1に記載のシステム。
6.クエリは、仮想ネットワーク内の仮想マシンと仮想ネットワーク内の他の仮想マシンとの間のパスが開いていることを検証するか、仮想ネットワーク内の仮想マシンと仮想ネットワークの外部の1つ以上のエンティティとの間のパスが開いていることを検証するか、または仮想ネットワーク内の仮想マシンが、仮想マシンにアクセスすべきでないエンティティによってアクセス可能ではないことを検証するように提示される、条項1に記載のシステム。
7.結果が、クエリ解決の結果のテキスト表現、またはクエリ解決の結果のグラフィック表現のうちの1つ以上を含む、条項1に記載のシステム。
8.方法であって、
プロバイダネットワーク上の1つ以上のデバイスによって実装された仮想ネットワーク検証サービスによって、
プロバイダネットワーク上でクライアントの仮想ネットワークについてのクエリを受信し、クエリは制約問題を表すことと、
仮想ネットワークの記述的情報を取得することと、
宣言型論理プログラミング言語に従って記述的情報をエンコードして仮想ネットワークのエンコードされた記述を生成することと、
制約ソルバーエンジンを使用して、エンコードされた仮想ネットワーキングルールに従って、エンコードされた記述に対するクエリを解決することと、
クエリ解決の結果をクライアントに提供することと、を実行することを含む、方法。
9.記述的情報はクライアントから取得される、条項8に記載の方法。
10.記述的情報を取得することは、
1つ以上のプロバイダネットワークサービスから仮想ネットワークの記述的情報を取得するための許可をクライアントから取得することと、
1つ以上のプロバイダネットワークサービスからプロバイダネットワーク上の仮想ネットワークに対する記述的情報を取得することと、を含む、条項8に記載の方法。
11.記述的情報は、仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを識別する情報、仮想ネットワーク内の仮想マシンの記述、仮想ネットワーク内の仮想マシン間の関係の記述、または仮想ネットワークの外部のエンティティへのインターフェースの記述のうちの1つ以上を含む、条項8に記載の方法。
12.仮想ネットワーキングルールは、仮想ネットワークに実装されたネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理をエンコードするルール、1つ以上のネットワーキングセキュリティ標準をエンコードするルール、またはクライアントのネットワーキング要件をエンコードするクライアント定義ルールのうちの1つ以上を含む、条項8に記載の方法。
13.クライアントからエンコードされた仮想ネットワーキングルールを受信することをさらに含み、エンコードされた仮想ネットワーキングルールは、クライアントによって定義された仮想ネットワークに対するベストプラクティスを指定するルールを含み、クエリは、仮想ネットワークがベストプラクティスに準拠することを検証するように提示される、条項8に記載の方法。
14.クエリは、仮想ネットワーク内の仮想マシンと仮想ネットワーク内の別の仮想マシンとの間のパスが開いていることを検証するか、仮想ネットワーク内の仮想マシンと仮想ネットワークの外部の1つ以上のエンティティとの間のパスが開いていることを検証するか、または仮想ネットワーク内の仮想マシンが、仮想マシンにアクセスすべきでないエンティティによってアクセス可能ではないことを検証するように提示される、条項8に記載の方法。
15.クエリ解決の結果をクライアントに提供することは、クエリ解決の結果のテキスト表現をクライアントに提供すること、またはクエリ解決の結果のグラフィック表現をクライアントに提供することを含む、条項8に記載の方法。
16.クエリを受信することと、記述的情報を取得することと、仮想ネットワーク検証サービスへのアプリケーションプログラミングインターフェースに従ってクエリ解決の結果を提供することと、をさらに含む、条項8に記載の方法。
17.クライアントの仮想ネットワークは2つのピア仮想ネットワークを含み、クエリは、第1のピア仮想ネットワーク内の仮想マシンがプロバイダネットワークを介したピア仮想ネットワーク間のピア接続を介して第2のピア仮想ネットワーク内の別の仮想マシンと通信できることを検証するように提示される、条項8に記載の方法。
18.プログラム命令を格納した非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに、
プロバイダネットワーク上におけるクライアントの仮想ネットワークについての1つ以上のクエリであって制約問題として表現されるクエリを受け取らせ、
仮想ネットワークの記述的情報を取得させ、
宣言的論理プログラミング言語に従って記述的情報をエンコードして仮想ネットワークのエンコードされた記述を生成させ、
制約ソルバーエンジンを使用して、エンコードされた仮想ネットワーキングルールに従って、エンコードされた記述に対する1つ以上のクエリを解決させ、
1つ以上のクエリの解決の結果をクライアントに提供させる、非一時的コンピュータ可読記憶媒体。
19.記述的情報は、クライアントから、または仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスから取得される、条項18に記載の非一時的コンピュータ可読記憶媒体。
20.記述的情報は、仮想ネットワーク内で実装されたネットワーキングプリミティブのインスタンスを識別する情報、仮想ネットワーク内の仮想マシンの記述、仮想ネットワーク内の仮想マシン間の関係の記述、または仮想ネットワークの外部のエンティティへのインターフェースの記述のうちの1つ以上を含む、条項18に記載の非一時的コンピュータ可読記憶媒体。
21.仮想ネットワーキングルールは、仮想ネットワークに実装されたネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理をエンコードするルール、1つ以上のネットワーキングセキュリティ標準をエンコードするルール、またはクライアントのネットワーキング要件をエンコードするクライアント定義ルールのうちの1つ以上を含む、条項18に記載の非一時的コンピュータ可読記憶媒体。
例示的なシステム
いくつかの実施形態では、本明細書に記載のプロバイダネットワーク環境において仮想ネットワークを検証するための方法および装置の一部または全部を実装するシステムは、1つ以上のコンピュータアクセス可能媒体を含む、またはこれにアクセスするように構成された、例えば、図16に示すコンピュータシステム5000などの汎用コンピュータシステムを含み得る。図示の実施形態では、コンピュータシステム5000は、入出力(I/O)インターフェース5030を介してシステムメモリ5020に結合された1つ以上のプロセッサ5010を含む。コンピュータシステム5000は、I/Oインターフェース5030に結合されたネットワークインターフェース5040をさらに含む。
様々な実施形態において、コンピュータシステム5000は、1つのプロセッサ5010を含む単一プロセッサシステム、またはいくつかのプロセッサ5010(例えば、2、4、8、または他の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ5010は、命令を実行することができる任意の適切なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ5010は、x86、PowerPC、SPARC、またはMIPS ISA、または任意の他の適切なISAなどの任意の様々な命令セットアーキテクチャ(instruction set architecture,ISA)を実装する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ5010のそれぞれは、必ずしもそうとは限らないが一般的に同じISAを実装することができる。
システムメモリ5020は、プロセッサ5010によってアクセス可能な命令およびデータを格納するように構成され得る。様々な実施形態において、システムメモリ5020は、スタティックランダムアクセスメモリ(static random access memory,SRAM)、シンクロナスダイナミックRAM(synchronous dynamic RAM,SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。図示の実施形態では、プロバイダネットワーク環境においてクライアントのリソースに対してクライアント定義ルールを提供するための上述の方法、技法、およびデータなどの1つ以上の所望の機能を実装するプログラム命令およびデータは、コード5025およびデータ5026としてシステムメモリ5020内に格納されて示される。
一実施形態では、I/Oインターフェース5030は、プロセッサ5010、システムメモリ5020、およびネットワークインターフェース5040または他の周辺インターフェースを含むデバイス内の任意の周辺デバイスの間のI/Oトラフィックを調整するように構成され得る。いくつかの実施形態では、I/Oインターフェース5030は、ある構成要素(例えば、システムメモリ5020)からのデータ信号を別の構成要素(例えば、プロセッサ5010)による使用に適したフォーマットに変換するために必要な任意のプロトコル、タイミングまたは他のデータ変換を実行し得る。いくつかの実施形態では、I/Oインターフェース5030は、例えば、ペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect,PCI)バス規格またはユニバーサルシリアルバス(Universal Serial Bus,USB)規格の変形など、様々なタイプの周辺バスを介して付設されたデバイスのサポートを含むことができる。いくつかの実施形態において、I/Oインターフェース5030の機能は、例えば、ノースブリッジおよびサウスブリッジなどの2つ以上の別々の構成要素に分割され得る。また、いくつかの実施形態では、システムメモリ5020へのインターフェースなど、I/Oインターフェース5030の機能の一部または全部をプロセッサ5010に直接組み込むことができる。
ネットワークインターフェース5040は、コンピュータシステム5000と、例えば図1から図15に示されるような他のコンピュータシステムまたはデバイスなどのネットワーク5050に付設された他のデバイス5060との間でデータを交換することを可能にするように構成され得る。様々な実施形態において、ネットワークインターフェース5040は、例えば、イーサネットネットワークの種類など、任意の適切な有線または無線の一般データネットワークを介した通信をサポートしてもよい。さらに、ネットワークインターフェース5040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/電話ネットワーク、ファイバチャネルSANなどのストレージエリアネットワーク、または任意の他の適切な種類のネットワークおよび/またはプロトコルを介した通信をサポートし得る。
いくつかの実施形態では、システムメモリ5020は、プロバイダネットワーク環境において仮想ネットワークを検証するための方法および装置の実施形態を実装するための、図1〜図10に関して上述したプログラム命令およびデータを格納するように構成されたコンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、他の実施形態では、プログラム命令および/またはデータは、異なるタイプのコンピュータアクセス可能媒体上で受信、送信または記憶されてもよい。一般的に言えば、コンピュータアクセス可能媒体は、I/Oインターフェース5030を介してコンピュータシステム5000に結合されたディスクまたはDVD/CDなどの磁気または光学媒体などの非一時的記憶媒体またはメモリ媒体を含むことができる。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ5020または他のタイプのメモリとしてコンピュータシステム5000のいくつかの実施形態に含まれ得る、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどのような任意の揮発性または不揮発性媒体を含み得る。さらに、コンピュータアクセス可能媒体は、ネットワークインターフェース5040を介して実装され得るような、ネットワークおよび/または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、またはデジタル信号などの伝送媒体または信号を含み得る。
結論
様々な実施形態は、コンピュータアクセス可能媒体上で前述の説明に従って実装された命令および/またはデータを受信、送信または記憶することをさらに含むことができる。一般的に言えば、コンピュータアクセス可能媒体は、ディスクまたはDVD/CD−ROMなどの磁気または光媒体、RAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)、ROMなどの揮発性または不揮発性媒体、ならびにネットワークおよび/または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、またはデジタル信号などの伝送媒体または信号を含むことができる。
図面に示され、本明細書に記載されるような様々な方法は方法の例示的な実施形態を表す。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装することができる。方法の順序は変更されてもよく、様々な要素が追加、並べ替え、結合、省略、修正などされてもよい。
本開示の恩恵を受ける当業者に明らかであるように、様々な修正および変更がなされ得る。そのような修正および変更をすべて包含し、したがって上記の説明を限定的な意味ではなく例示的な意味で見なすことを意図している。

Claims (15)

  1. プロバイダネットワーク上の1つ以上のデバイスによって実装された仮想ネットワーク検証サービスによって、
    前記プロバイダネットワーク上でクライアントの仮想ネットワークについての制約問題を表すクエリを受信することと、
    前記仮想ネットワークの記述的情報を取得することと、
    前記仮想ネットワークのエンコードされた記述を生成するために、宣言型論理プログラミング言語に従って前記記述的情報をエンコードすることと、
    制約ソルバーエンジンを使用して、エンコードされた仮想ネットワーキングルールに従って、前記エンコードされた記述に対するクエリを解決することと、
    クエリ解決の結果を前記クライアントに提供することと、を実行することを含む、方法。
  2. 前記記述的情報が前記クライアントから取得される、請求項1に記載の方法。
  3. 前記記述的情報を取得することが、
    1つ以上のプロバイダネットワークサービスから、前記仮想ネットワークの前記記述的情報を取得するための許可を前記クライアントから取得することと、
    前記1つ以上のプロバイダネットワークサービスから、前記プロバイダネットワーク上の前記仮想ネットワークに対する前記記述的情報を取得することと、を含む、請求項1に記載の方法。
  4. 前記記述的情報が、前記仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを識別する情報、前記仮想ネットワーク内の仮想マシンの記述、前記仮想ネットワーク内の仮想マシン間の関係の記述、または前記仮想ネットワークの外部のエンティティへのインターフェースの記述のうちの1つ以上を含む、請求項1に記載の方法。
  5. 前記仮想ネットワーキングルールが、前記仮想ネットワークに実装されたネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理をエンコードするルール、1つ以上のネットワーキングセキュリティ標準をエンコードするルール、またはクライアントのネットワーキング要件をエンコードするクライアント定義ルールのうちの1つ以上を含む、請求項1に記載の方法。
  6. 前記クライアントから前記エンコードされた仮想ネットワーキングルールを受信することをさらに含み、前記エンコードされた仮想ネットワーキングルールが、前記クライアントによって定義された仮想ネットワークのためのベストプラクティスを指定するルールを含み、前記クエリが、前記仮想ネットワークが前記ベストプラクティスに準拠することを検証するように提示される、請求項1に記載の方法。
  7. 前記クエリが、前記仮想ネットワーク内の仮想マシンと前記仮想ネットワーク内の別の仮想マシンとの間のパスが開いていることを検証する、前記仮想ネットワーク内の仮想マシンと前記仮想ネットワークの外部の1つ以上のエンティティとの間のパスが開いていることを検証する、または前記仮想ネットワーク内の仮想マシンが、前記仮想マシンにアクセスすべきでないエンティティによってアクセス可能ではないことを検証するために提示される、請求項1に記載の方法。
  8. 前記クエリ解決の結果を前記クライアントに提供することが、前記クエリ解決の前記結果のテキスト表現を前記クライアントに提供すること、または前記クエリ解決の前記結果のグラフィック表現を前記クライアントに提供することを含む、請求項1に記載の方法。
  9. 前記クエリを受信することと、前記記述的情報を取得することと、前記仮想ネットワーク検証サービスへのアプリケーションプログラミングインターフェースに従って前記クエリ解決の前記結果を提供することと、をさらに含む、請求項1に記載の方法。
  10. 前記クライアントの仮想ネットワークが、2つのピア仮想ネットワークを含み、前記クエリが、第1のピア仮想ネットワーク内の仮想マシンがプロバイダネットワークを介したピア仮想ネットワーク間のピア接続を介して、第2のピア仮想ネットワーク内の別の仮想マシンと通信できることを検証するように提示される、請求項1に記載の方法。
  11. プログラム命令を格納した非一時的コンピュータ可読記憶媒体に結合されたプロセッサを備えるシステムであって、前記プログラム命令が前記システムに、
    プロバイダネットワーク上におけるクライアントの仮想ネットワークについての1つ以上のクエリを受信させ、クエリが制約問題として表現され、
    前記仮想ネットワークの記述的情報を取得させ、
    前記仮想ネットワークのエンコードされた記述を生成するために、宣言的論理プログラミング言語に従って前記記述的情報をエンコードさせ、
    制約ソルバーエンジンを使用して、エンコードされた仮想ネットワーキングルールに従って、前記エンコードされた記述に対する1つ以上のクエリを解決させ、
    前記1つ以上のクエリの前記解決の結果を前記クライアントに提供させる、システム。
  12. 前記記述的情報が、前記クライアントから、または仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスから取得される、請求項11に記載のシステム。
  13. 前記記述的情報が、前記仮想ネットワーク内で実装されたネットワーキングプリミティブのインスタンスを識別する情報、前記仮想ネットワーク内の仮想マシンの記述、前記仮想ネットワーク内の前記仮想マシン間の関係の記述、または前記仮想ネットワークの外部のエンティティへのインターフェースの記述のうちの1つ以上を含む、請求項11に記載のシステム。
  14. 前記仮想ネットワーキングルールが、前記仮想ネットワークに実装されたネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理をエンコードするルール、1つ以上のネットワーキングセキュリティ標準をエンコードするルール、または前記クライアントのネットワーキング要件をエンコードするクライアント定義ルールのうちの1つ以上を含む、請求項11に記載のシステム。
  15. 実行時に前記システムに前記仮想ネットワークの記述的情報を取得させる前記プログラム命令が、実行時に前記システムに、
    前記記述的情報を取得するための許可を前記クライアントから受け取らせること、および
    1つ以上のプロバイダネットワークサービスから前記仮想ネットワークの前記記述的情報を取得するために、前記許可を使用させることを行わせる命令をさらに含む、請求項11に記載のシステム。
JP2019547254A 2016-11-22 2017-11-17 仮想ネットワーク検証サービス Active JP6737965B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/359,500 2016-11-22
US15/359,500 US10469324B2 (en) 2016-11-22 2016-11-22 Virtual network verification service
PCT/US2017/062336 WO2018098042A1 (en) 2016-11-22 2017-11-17 Virtual network verification service

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020121858A Division JP7053732B2 (ja) 2016-11-22 2020-07-16 仮想ネットワーク検証サービス

Publications (2)

Publication Number Publication Date
JP2020504405A true JP2020504405A (ja) 2020-02-06
JP6737965B2 JP6737965B2 (ja) 2020-08-12

Family

ID=60703016

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2019547254A Active JP6737965B2 (ja) 2016-11-22 2017-11-17 仮想ネットワーク検証サービス
JP2020121858A Active JP7053732B2 (ja) 2016-11-22 2020-07-16 仮想ネットワーク検証サービス
JP2022058458A Active JP7293446B2 (ja) 2016-11-22 2022-03-31 仮想ネットワーク検証サービス

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2020121858A Active JP7053732B2 (ja) 2016-11-22 2020-07-16 仮想ネットワーク検証サービス
JP2022058458A Active JP7293446B2 (ja) 2016-11-22 2022-03-31 仮想ネットワーク検証サービス

Country Status (5)

Country Link
US (3) US10469324B2 (ja)
EP (1) EP3545650A1 (ja)
JP (3) JP6737965B2 (ja)
CN (2) CN109964451B (ja)
WO (1) WO2018098042A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469324B2 (en) 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
JP6585656B2 (ja) * 2017-05-10 2019-10-02 株式会社ソニー・インタラクティブエンタテインメント 製造ライン用コンピュータシステム及びそのネットワーク設定方法
US10474435B2 (en) * 2017-08-07 2019-11-12 Sap Se Configuration model parsing for constraint-based systems
US10534592B2 (en) 2017-08-07 2020-01-14 Sap Se Template expressions for constraint-based systems
US20190238410A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Verifying network intents
US11108805B2 (en) * 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
US11570244B2 (en) * 2018-12-11 2023-01-31 Amazon Technologies, Inc. Mirroring network traffic of virtual networks at a service provider network
US20200192898A1 (en) * 2018-12-14 2020-06-18 Amazon Technologies, Inc. Multi-tenant storage for analytics with push down filtering
US11483350B2 (en) * 2019-03-29 2022-10-25 Amazon Technologies, Inc. Intent-based governance service
US11606301B2 (en) 2019-04-23 2023-03-14 Hewlett Packard Enterprise Development Lp Verifying intents in stateful networks using atomic address objects
US11044184B2 (en) * 2019-05-28 2021-06-22 Servicenow, Inc. Data packet loss detection
US11442959B2 (en) * 2019-08-07 2022-09-13 Nutanix, Inc. System and method of time-based snapshot synchronization
CN110311828B (zh) * 2019-08-14 2021-03-30 清华大学 一种网络验证的方法、装置、计算机存储介质及电子设备
US11451477B2 (en) * 2019-09-27 2022-09-20 Amazon Technologies, Inc. Load balanced access to distributed endpoints
US20220103518A1 (en) * 2020-08-03 2022-03-31 Cazena, Inc. Scalable security for SaaS data lakes
KR102382317B1 (ko) * 2020-10-22 2022-04-04 국방과학연구소 사이버 훈련 도구 다운로드 시스템 및 방법
US11516088B1 (en) * 2021-10-28 2022-11-29 Microsoft Technology Licensing, Llc Network configuration verification in computing systems
CN114244763B (zh) * 2021-12-20 2023-11-17 中电福富信息科技有限公司 基于规则引擎的动态网络拓扑管理方法及其系统
US20240089257A1 (en) * 2022-09-08 2024-03-14 Vmware, Inc. Evaluation of network correctness requirement

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002185512A (ja) * 2000-12-12 2002-06-28 Hitachi Ltd ネットワーク接続性検証方法
GB2424539A (en) * 2005-03-22 2006-09-27 Hewlett Packard Development Co Modelling network to determine assess security properties
JP2014003692A (ja) * 2009-03-30 2014-01-09 Amazon Technologies Inc 管理されたコンピュータネットワークのための論理ネットワーキング機能の提供
JP2014083535A (ja) * 2012-10-29 2014-05-12 Jfe Steel Corp ハンマーミルおよびハンマーの再利用方法
JP2014191440A (ja) * 2013-03-26 2014-10-06 Fujitsu Ltd プログラム、診断方法及び診断システム
JP2015128325A (ja) * 2015-03-05 2015-07-09 株式会社日立製作所 仮想ネットワーク管理サーバ及びエッジルータ
WO2016103421A1 (ja) * 2014-12-25 2016-06-30 株式会社日立システムズ クラウド構成可視化システム、クラウド構成可視化方法及びクラウド構成可視化プログラム

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892903A (en) 1996-09-12 1999-04-06 Internet Security Systems, Inc. Method and apparatus for detecting and identifying security vulnerabilities in an open network computer communication system
US7047288B2 (en) 2000-01-07 2006-05-16 Securify, Inc. Automated generation of an english language representation of a formal network security policy specification
CN1856790A (zh) * 2003-07-22 2006-11-01 基诺技术公司 使用本体的信息访问
US7685281B1 (en) * 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
WO2005101789A1 (en) 2004-04-14 2005-10-27 Gurunath Samir Kalekar A system for real-time network based vulnerability assessment of a host/device
US20080059416A1 (en) * 2004-09-15 2008-03-06 Forbes David I Software system for rules-based searching of data
US9083748B2 (en) * 2004-12-16 2015-07-14 Hewlett-Packard Development Company, L.P. Modelling network to assess security properties
US8250654B1 (en) 2005-01-27 2012-08-21 Science Applications International Corporation Systems and methods for implementing and scoring computer network defense exercises
US10015140B2 (en) 2005-02-03 2018-07-03 International Business Machines Corporation Identifying additional firewall rules that may be needed
US7523118B2 (en) * 2006-05-02 2009-04-21 International Business Machines Corporation System and method for optimizing federated and ETL'd databases having multidimensionally constrained data
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
US8938783B2 (en) * 2006-09-11 2015-01-20 Microsoft Corporation Security language expressions for logic resolution
WO2010019918A1 (en) 2008-08-15 2010-02-18 Qualys, Inc. System and method for performing remote security assessment of firewalled computer
CN101699801B (zh) * 2009-10-30 2011-09-28 孙喜明 一种数据传输方法及传输数据的虚拟对等网络系统
CN102170457A (zh) * 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US9129086B2 (en) * 2010-03-04 2015-09-08 International Business Machines Corporation Providing security services within a cloud computing environment
US9177017B2 (en) * 2010-09-27 2015-11-03 Microsoft Technology Licensing, Llc Query constraint encoding with type-based state machine
CN103080913B (zh) 2010-11-17 2015-07-01 株式会社日立制作所 发现与通信网络连接的通信装置的方法及管理装置
US8782762B2 (en) * 2011-08-17 2014-07-15 International Business Machines Corporation Building data security in a networked computing environment
US9311159B2 (en) * 2011-10-31 2016-04-12 At&T Intellectual Property I, L.P. Systems, methods, and articles of manufacture to provide cloud resource orchestration
US9426169B2 (en) 2012-02-29 2016-08-23 Cytegic Ltd. System and method for cyber attacks analysis and decision support
CN103650430B (zh) * 2012-06-21 2016-06-22 华为技术有限公司 报文处理方法、装置、主机和网络系统
US9122510B2 (en) 2013-01-02 2015-09-01 International Business Machines Corporation Querying and managing computing resources in a networked computing environment
DE102013003055A1 (de) * 2013-02-18 2014-08-21 Nadine Sina Kurz Verfahren und Vorrichtung zum Durchführen von Suchen in natürlicher Sprache
US9374302B2 (en) * 2013-04-26 2016-06-21 Brocade Communications Systems, Inc. Distributed methodology for peer-to-peer transmission of stateful packet flows
US9177250B2 (en) * 2013-06-28 2015-11-03 Vmware, Inc. Method and system for determining configuration rules based on configurations of complex systems
US9634900B2 (en) * 2014-02-28 2017-04-25 Futurewei Technologies, Inc. Declarative approach to virtual network creation and operation
US9838253B2 (en) 2014-04-10 2017-12-05 Fujitsu Limited Object-oriented network virtualization
CN104363159B (zh) * 2014-07-02 2018-04-06 北京邮电大学 一种基于软件定义网络的开放虚拟网络构建系统和方法
US9686162B2 (en) 2014-10-17 2017-06-20 International Business Machines Corporation Identifying configuration inconsistency in edge-based software defined networks (SDN)
US20170293501A1 (en) * 2016-04-11 2017-10-12 Vmware, Inc. Method and system that extends a private data center to encompass infrastructure allocated from a remote cloud-computing facility
US10469324B2 (en) 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
WO2018130903A1 (en) 2017-01-11 2018-07-19 Morphisec Information Security Ltd. Protecting computing devices from a malicious process by exposing false information
US11108805B2 (en) * 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
US11425157B2 (en) * 2018-08-24 2022-08-23 California Institute Of Technology Model based methodology for translating high-level cyber threat descriptions into system-specific actionable defense tactics
US11483350B2 (en) * 2019-03-29 2022-10-25 Amazon Technologies, Inc. Intent-based governance service

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002185512A (ja) * 2000-12-12 2002-06-28 Hitachi Ltd ネットワーク接続性検証方法
GB2424539A (en) * 2005-03-22 2006-09-27 Hewlett Packard Development Co Modelling network to determine assess security properties
JP2014003692A (ja) * 2009-03-30 2014-01-09 Amazon Technologies Inc 管理されたコンピュータネットワークのための論理ネットワーキング機能の提供
JP2014083535A (ja) * 2012-10-29 2014-05-12 Jfe Steel Corp ハンマーミルおよびハンマーの再利用方法
JP2014191440A (ja) * 2013-03-26 2014-10-06 Fujitsu Ltd プログラム、診断方法及び診断システム
WO2016103421A1 (ja) * 2014-12-25 2016-06-30 株式会社日立システムズ クラウド構成可視化システム、クラウド構成可視化方法及びクラウド構成可視化プログラム
JP2015128325A (ja) * 2015-03-05 2015-07-09 株式会社日立製作所 仮想ネットワーク管理サーバ及びエッジルータ

Also Published As

Publication number Publication date
CN114884822B (zh) 2024-04-05
US20180145879A1 (en) 2018-05-24
US11095523B2 (en) 2021-08-17
US20210377126A1 (en) 2021-12-02
US10469324B2 (en) 2019-11-05
CN109964451B (zh) 2022-06-07
JP7053732B2 (ja) 2022-04-12
JP2020195139A (ja) 2020-12-03
US20200067785A1 (en) 2020-02-27
CN114884822A (zh) 2022-08-09
WO2018098042A1 (en) 2018-05-31
JP2022079638A (ja) 2022-05-26
EP3545650A1 (en) 2019-10-02
JP7293446B2 (ja) 2023-06-19
JP6737965B2 (ja) 2020-08-12
CN109964451A (zh) 2019-07-02

Similar Documents

Publication Publication Date Title
JP7053732B2 (ja) 仮想ネットワーク検証サービス
US20230171188A1 (en) Linking Resource Instances to Virtual Network in Provider Network Environments
US10666606B2 (en) Virtual private network service endpoints
US11269673B2 (en) Client-defined rules in provider network environments
KR102545124B1 (ko) 자동화된 패킷리스 네트워크 도달가능성 분석
EP3939231B1 (en) Intent-based governance service
US10911406B2 (en) Accessing cloud resources using private network addresses
US10862796B1 (en) Flow policies for virtual networks in provider network environments
US10326710B1 (en) Propagating access rules on virtual networks in provider network environments
US10862709B1 (en) Conditional flow policy rules for packet flows in provider network environments
US10558482B1 (en) Client network instances for resources in provider network environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200608

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: 20200616

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200716

R150 Certificate of patent or registration of utility model

Ref document number: 6737965

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250