(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022079638
(43)【公開日】2022-05-26
(54)【発明の名称】仮想ネットワーク検証サービス
(51)【国際特許分類】
H04L 43/00 20220101AFI20220519BHJP
【FI】
H04L43/00
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022058458
(22)【出願日】2022-03-31
(62)【分割の表示】P 2020121858の分割
【原出願日】2017-11-17
(31)【優先権主張番号】15/359,500
(32)【優先日】2016-11-22
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】507303550
【氏名又は名称】アマゾン・テクノロジーズ・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(72)【発明者】
【氏名】クック,ジョン
(72)【発明者】
【氏名】ドッジ,キャサリン
(72)【発明者】
【氏名】マクラフリン,ショーン
(57)【要約】
【課題】宣言型論理プログラミング言語を利用して、クライアントが仮想ネットワークについてのクエリを制約問題として提示できるようにする、プロバイダネットワーク用の仮想ネットワーク検証サービスを提供する。
【解決手段】プロバイダネットワーク環境における仮想ネットワークのネットワーキングプリミティブのためのセマンティクスおよび論理であって、論理プログラミング言語に従って、ルールのセットとしてエンコードすることができる。ルールにおいては、ネットワーキングセキュリティ標準および/またはクライアント定義ルールも、仮想ネットワークの記述を取得してエンコードすることができる。次いで、クエリによって表現された制約問題は、制約ソルバーエンジンを使用して、エンコードされたルールに従って、エンコードされた記述について解決することができ、結果はクライアントに提供され得る。
【選択図】
図5
【特許請求の範囲】
【請求項1】
メモリに結合されたプロセッサを含むコンピュータシステムであって、前記メモリは、
仮想ネットワーク検証サービスのための命令を含み、該命令は、実行に際して前記システ
ムに、
クライアントデバイスを介して、クライアントから仮想ネットワークのためのネットワ
ーキングプリミティブに対する指定仕様を受信させ、
宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティ
ブに少なくとも部分的に基づいて、前記仮想ネットワークのためのエンコードされた仮想
ネットワーキングルールを生成させ、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミ
ティブに少なくとも部分的に基づいて、前記仮想ネットワークのエンコードされた記述を
生成させ、
前記仮想ネットワークに対するクエリであって、前記仮想ネットワークに対する制約を
指定する制約問題として表現される前記クエリを、前記クライアントデバイスを介して前
記クライアントから受信させ、
前記宣言型論理プログラミング言語に従って、制約問題を解決するように構成される制
約ソルバープログラムを使用して、前記エンコードされた仮想ネットワーキングルールに
従って、前記仮想ネットワークの前記エンコードされた記述に対するクエリを解決させ、
且つ、
前記仮想ネットワークの前記エンコードされた記述に対する前記クエリの解決の結果に
基づいて、前記クエリによって指定された制約を満たす前記ネットワークのための構成を
生成させる、コンピュータシステム。
【請求項2】
前記メモリは命令を更に備え、該命令は、実行に際して前記システムに、前記生成され
た構成に従って、プロバイダネットワーク内で仮想ネットワークをインスタンス化させ、
前記インスタンス化された仮想ネットワークは、1つ以上の仮想マシンを含む、請求項1
に記載のシステム。
【請求項3】
前記メモリは命令を更に備え、該命令は、実行に際して前記システムに、前記生成され
た構成に従って、プロバイダネットワーク内で既存の仮想ネットワークを修正させ、前記
既存の仮想ネットワークは、1つ以上の仮想マシンを含む、請求項1に記載のシステム。
【請求項4】
前記エンコードされた仮想ネットワーキングルールは、ルールの中の1つ以上を含み、
ここで該ルールとは、前記指定されたネットワーキングプリミティブに対して仮想ネット
ワーキングセマンティクス及び論理をエンコードするルールか、前記クライアントによっ
て指定された1つ以上のネットワーキングセキュリティ標準をエンコードするルールか、
又は前記クライアントのネットワーキング要件をエンコードするクライアント定義ルール
である、請求項1に記載のシステム。
【請求項5】
前記クエリは、クエリの中の1つ以上を含み、ここで該クエリとは、前記仮想ネットワ
ーク内の仮想マシンと前記仮想ネットワーク内の他の仮想マシンとの間のパスが開いてい
ることを検証するために提示されるクエリか、前記仮想ネットワーク内の仮想マシンと前
記仮想ネットワークの外部の1つ以上のエンティティとの間のパスが開いていることを検
証するために提示されるクエリか、又は前記仮想ネットワーク内の仮想マシンが、前記仮
想マシンにアクセスすべきでないエンティティによってアクセス可能ではないことを検証
するために提示されるクエリである、請求項1に記載のシステム。
【請求項6】
前記仮想ネットワークのための前記ネットワーキングプリミティブに対する前記指定仕
様及び前記仮想ネットワークに対する前記クエリは、前記仮想ネットワーク検証サービス
へのアプリケーションプログラミングインターフェースに従って受信される、請求項1に
記載のシステム。
【請求項7】
前記ネットワーキングプリミティブは、1つ以上のプロバイダネットワークサービスを
介して、プロバイダネットワークのクライアントに提供されるネットワーキングリソース
、構造、機能性を含む、請求項1に記載のシステム。
【請求項8】
方法であって、
プロバイダネットワーク上の1つ以上のデバイスによって実装された仮想ネットワーク
検証サービスによって、
仮想ネットワークのためのネットワーキングプリミティブに対する指定仕様を受信す
ることと、
宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミテ
ィブに少なくとも部分的に基づいて、前記仮想ネットワークに対してエンコードされた仮
想ネットワーキングルールを生成することと、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリ
ミティブに少なくとも部分的に基づいて、前記仮想ネットワークのエンコードされた記述
を生成することと、
前記仮想ネットワークに対するクエリであって、前記仮想ネットワークに対する制約
を指定する制約問題として表現される前記クエリを受信することと、
制約ソルバーエンジンを使用して、前記エンコードされた仮想ネットワーキングルー
ルに従って、前記仮想ネットワークの前記エンコードされた記述に対してクエリを解決す
ることと、
前記仮想ネットワークの前記エンコードされた記述に対する前記クエリの解決の結果
に基づいて、前記クエリによって指定された前記制約を満たす前記仮想ネットワークのた
めの構成を生成することと、
を実行することを備える、方法。
【請求項9】
前記生成された構成に従って、前記プロバイダネットワーク内で前記仮想ネットワーク
をインスタンス化することを更に備える方法であって、前記インスタンス化された仮想ネ
ットワークは、1つ以上の仮想マシンを含む、請求項8に記載の方法。
【請求項10】
前記生成された構成に従って、前記プロバイダネットワーク内で既存の仮想ネットワー
クを修正することを更に備える方法であって、前記既存の仮想ネットワークは、1つ以上
の仮想マシンを含む、請求項8に記載の方法。
【請求項11】
前記エンコードされた仮想ネットワーキングルールは、ルールの中の1つ以上を含み、
ここで該ルールとは、前記指定されたネットワーキングプリミティブに対して仮想ネット
ワーキングセマンティクス及び論理をエンコードするルールか、前記クライアントによっ
て指定された1つ以上のネットワーキングセキュリティ標準をエンコードするルールか、
又は前記クライアントのネットワーキング要件をエンコードするクライアント定義ルール
である、請求項8に記載の方法。
【請求項12】
前記クエリは、クエリの中の1つ以上を含み、ここで該クエリとは、前記仮想ネットワ
ーク内の仮想マシンと前記仮想ネットワーク内の他の仮想マシンとの間のパスが開いてい
ることを検証するために提示されるクエリか、前記仮想ネットワーク内の仮想マシンと前
記仮想ネットワークの外部の1つ以上のエンティティとの間のパスが開いていることを検
証するために提示されるクエリか、又は前記仮想ネットワーク内の仮想マシンが、前記仮
想マシンにアクセスすべきでないエンティティによってアクセス可能ではないことを検証
するために提示されるクエリである、請求項8に記載の方法。
【請求項13】
前記仮想ネットワークのための前記ネットワーキングプリミティブに対する前記指定仕
様及び前記仮想ネットワークに対する前記クエリは、前記仮想ネットワーク検証サービス
へのアプリケーションプログラミングインターフェースに従って、前記プロバイダネット
ワークのクライアントから受信される、請求項8に記載の方法。
【請求項14】
前記ネットワーキングプリミティブは、1つ以上のプロバイダネットワークサービスを
介して、前記プロバイダネットワークのクライアントに提供されるネットワーキングリソ
ース、構造、機能性を含む、請求項8に記載の方法。
【請求項15】
プログラム命令を格納する1つ以上の非一時的コンピュータ可読記憶媒体であって、該
プログラム命令は、1つ以上のプロセッサ上で又は1つ以上のプロセッサにわたって実行
されると、前記1つ以上のプロセッサに、
仮想ネットワークのためのネットワークプリミティブに対する指定仕様を受信させ、
宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティブ
に少なくとも部分的に基づいて、前記仮想ネットワークに対してエンコードされた仮想ネ
ットワーキングルールを生成させ、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミ
ティブに少なくとも部分的に基づいて、前記仮想ネットワークのエンコードされた記述を
生成させ、
前記仮想ネットワークに対するクエリであって、前記仮想ネットワークに対する制約を
指定する制約問題として表現される前記クエリを受信させ、
制約ソルバーエンジンを使用して、前記エンコードされた仮想ネットワーキングルール
に従って、前記仮想ネットワークの前記エンコードされた記述に対してクエリを解決させ
、且つ、
前記仮想ネットワークの前記エンコードされた記述に対する前記クエリの解決の結果に
基づいて、前記クエリによって指定された前記制約を満たす前記仮想ネットワークのため
の構成を生成させる、1つ以上の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
多くの企業および他の組織は、(例えば、ローカルネットワークの一部として)同じ場
所に配置されているか、または代わりに(例えば、1つ以上のプライベートまたは公衆の
中間ネットワークを介して接続された)複数の異なる地理的位置に配置されたコンピュー
ティングシステムなど、多数のコンピューティングシステムを相互接続するコンピュータ
ネットワークを操作してコンピュータネットワークの動作をサポートする。例えば、単一
の組織によって、および単一の組織のために運営されるプライベートデータセンターや、
顧客にコンピューティングリソースを提供するビジネスとして企業により運営されるパブ
リックデータセンターなど、多数の相互接続されたコンピューティングシステムを収容す
るデータセンターが普及している。パブリックデータセンター運営者の中には、様々な顧
客が所有するハードウェアにネットワークアクセス、電力および安全な設置設備を提供す
るものもあれば、顧客が使用できるようにされたハードウェアリソースも含む「フルサー
ビス」設備を提供するものもある。
【図面の簡単な説明】
【0002】
【
図1】いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す図である。
【
図2】いくつかの実施形態による、例示的な仮想ネットワーク検証サービスの構成要素および動作を示す図である。
【
図3】いくつかの実施形態による、クライアントが仮想ネットワークについての記述的情報とクエリとを仮想ネットワーク検証サービスへ提供し、仮想ネットワーク検証サービスがクエリを処理して結果をクライアントに提供することを示す図である。
【
図4】いくつかの実施形態による、クライアントがクエリと仮想ネットワークへのアクセス許可とを仮想ネットワーク検証サービスに提供し、仮想ネットワーク検証サービスが仮想ネットワークから記述的情報を取得し、クエリを処理し、結果をクライアントに提供することを示す図である。
【
図5】いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法のハイレベルフローチャートである。
【
図6】いくつかの実施形態による、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供する方法のフローチャートであり、クライアントは、仮想ネットワーク検証サービスに記述的情報およびクエリを提供する。
【
図7】いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法であって、この場合にクライアントが仮想ネットワークにアクセスするための記述的情報および許可を仮想ネットワーク検証サービスに提供する方法のフローチャートである。
【
図8】いくつかの実施形態による、ピア仮想ネットワークを含むプロバイダネットワーク環境における仮想ネットワークの実装形態を示す図である。
【
図9】いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための方法のフローチャートである。
【
図10】いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合成するための別の方法のフローチャートである。
【
図11】いくつかの実施形態による、例示的なプロバイダネットワーク環境を示す図である。
【
図12】いくつかの実施形態による、IPトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装する例示的なデータセンターを示す図である。
【
図13】いくつかの実施形態による、ストレージ仮想化サービスおよびハードウェア仮想化サービスをクライアントに提供する例示的なプロバイダネットワークのブロック図である。
【
図14】いくつかの実施形態による、少なくともいくつかのクライアントに仮想ネットワークを提供する例示的なプロバイダネットワークを示す図である。
【
図15】いくつかの実施形態による、プロバイダネットワーク上の例示的仮想ネットワーク内のサブネットおよびセキュリティグループを示す図である。
【
図16】いくつかの実施形態で使用され得る例示的なコンピュータシステムを示すブロック図である。
【0003】
実施形態は、いくつかの実施形態および例示的な図面の例として本明細書に記載されて
いるが、当業者は、記載された実施形態または図面に限定されないことを認識するであろ
う。しかし、図面およびその詳細な説明は、本発明を開示された特定の形態に限定するこ
とを意図するものではなく、むしろ、その意図は、添付の特許請求の範囲によって定義さ
れる主旨および範囲に該当する全ての変更、均等物、および代替物を包含することが理解
されるべきである。本明細書で使用される見出しは、編成目的のみのためであり、そして
説明または請求項の範囲を限定するために使用されることを意味しない。本出願を通して
使用されるように、「可能性がある(may)」という語は、必須の意味(すなわち、必
然的な意味)ではなく、寛容な意味(すなわち、可能性を有するという意味)で使用され
る。同様に、「含む(include)」、「含む(including)」、および「
含む(includes)」という語は、含むがそれに限定されないことを意味する。請
求項で使用されるとき、用語「または」は、包括的なまたはとして使用され、排他的なま
たはとしては使用されない。例えば、「x、y、またはzのうちの少なくとも1つ」とい
う句は、x、y、およびzのうちの任意の1つ、ならびにそれらの任意の組合せを意味す
る。
【発明を実施するための形態】
【0004】
プロバイダネットワーク環境において仮想ネットワークを検証するための方法および装
置の様々な実施形態が説明される。宣言型論理プログラミング言語を利用して、プロバイ
ダネットワーク上の仮想ネットワークについての再帰クエリを含むクエリを制約問題とし
て表現し、制約ソルバー(例えば、充足可能性モジュロ理論(satisfiabili
ty modulo theory,SMT)ソルバー)エンジンを用いてクエリを解決
することによってクエリに対する結果を提供することを可能にする仮想ネットワーク検証
サービスの実施形態について説明する。いくつかの実施形態で使用され得る例示的な宣言
型論理プログラミング言語はDatalogである。他の宣言型論理プログラミング言語
が使用されてもよいことに留意されたい。
【0005】
クライアントの仮想ネットワーク内でネットワーキングプリミティブをプロビジョニン
グおよび構成するために、クライアントは様々なプロバイダネットワークサービスを使用
することができ、各サービスはそれ自身のアプリケーションプログラミングインターフェ
ース(application programming interface,API
)およびネットワーキングセマンティクスを提供することができる。従来、コードサンプ
ルおよびドキュメンテーションが各サービスに提供され得るが、仮想ネットワークにおけ
るネットワーキングプリミティブ間の相互作用の正式な記述が存在していなかった。実施
形態では、ネットワーキングプリミティブのための仮想ネットワーキングセマンティクス
および論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットと
して表現およびエンコードされ得る。仮想ネットワーキングルールは、仮想ネットワーク
に実装され得るとともにプロバイダネットワークのサービスおよびAPIによって提供さ
れる様々なネットワーキングプリミティブ間の共通の関係および相互作用を表現するルー
ルを含むことができる。したがって、実施形態は、プロバイダネットワーク環境において
仮想ネットワーキングがどのように機能するかの論理を記述する仮想ネットワーキングル
ールを1つのロケーションまたはファイルに提供することができる。
【0006】
いくつかの実施形態では、仮想ネットワーキングルールは、ペイメントカード業界デー
タセキュリティ基準(Payment Card Industry Data Sec
urity Standard,PCI DSS)、連邦リスクおよび認可管理プログラ
ム(Federal Risk and Authorization Managem
ent Program,FedRAMP)標準、または医療保険の相互運用性と説明責
任に関する法律(Health Insurance Portability and
Accountability Act,HIPPA)標準、またはクライアントの内
部セキュリティ標準などのネットワークセキュリティ標準をエンコードするルールを組み
込んでもよい。いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアン
トの仮想ネットワークが特定の標準に準拠していることを検証するためにクライアントに
よって選択的に使用され得る異なるネットワーキングセキュリティ標準をそれぞれエンコ
ードする仮想ネットワーキングルールの2つ以上の異なるセットを提供し得る。いくつか
の実施形態では、仮想ネットワーク検証サービスは、クライアントの内部セキュリティ標
準、ベストプラクティスまたは他のネットワーキング要件をエンコードするカスタムルー
ルをクライアントが定義できるようにすることができ、したがって、クライアントの特定
の仮想ネットワークへの適用についてクライアントにより定義されるカスタムルールを含
む仮想ネットワーキングルールのセットが実装され得る。
【0007】
実施形態では、仮想ネットワーク検証サービスは、クライアントの仮想ネットワークに
ついての記述的情報を取得する。記述的情報は、例えば、仮想ネットワークに実装された
ネットワーキングプリミティブのインスタンスを識別し、インスタンスの記述(例えば、
計算インスタンスに割り当てられた役割、リソースインスタンスに付与または拒否された
許可、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係
(例えば、インスタンス間のネットワークを介したパス)を記述し、外部エンティティ(
例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタ
ンス)へのインターフェースまたはアクセスポイントを記述し得る。いくつかの実施形態
では、クライアントは仮想ネットワークから記述的情報を取得し、その記述的情報を仮想
ネットワーク検証サービスに提供することができる。あるいは、いくつかの実施形態では
、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述的情報を
直接取得することを可能にする許可を、仮想ネットワーク検証サービスに与えてもよい。
仮想ネットワーク検証サービスは、宣言的論理プログラミング言語に従って記述的情報を
論理プログラムとしてエンコードすることができる。
【0008】
仮想ネットワーク検証サービスの実施形態は、ポートスキャン方法および構文チェック
方法などの従来のネットワーク分析方法と比較したときに多大な利点をもたらすことがで
きる。これらの従来の方法とは異なり、仮想ネットワーク検証サービスは、エンコードさ
れた仮想ネットワーキングルールと仮想ネットワーク記述とを通じて、すべてのネットワ
ーキングプリミティブおよびリソースインスタンス、ならびにそれらの複雑な相互関係に
関する知識を有する。スキャン時に稼働しているデバイスに依存し、したがってスキャン
時に存在するデバイス間のネットワークを介したパスしか識別できない場合がある従来の
方法とは異なり、記述的情報は、仮想ネットワークを記述するメタデータを保持する1つ
以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用
してクライアントまたはサービスによって取得されることが可能であり、したがって、そ
れぞれのデバイスまたはインスタンスが起動および待機していなくてもネットワークを介
したパスが識別され得る。さらに、ポートスキャン方法では脅威の存在を識別できるが、
脅威の不在は識別できない。構文チェック方法は個々のネットワークデバイスの浅い特性
をチェックし得るが、攻撃ベクトルの有無を識別しない。一方、仮想ネットワーク検証サ
ービスの実施形態は、エンコードされた仮想ネットワーキングルールで表現されるような
ネットワークポリシーからの可能性のあるすべての逸脱を見つけることができ、脅威およ
び攻撃ベクトルの存在および不在の両方を識別することができる。さらに、記述的情報は
、仮想ネットワークを記述するメタデータを保持する1つ以上のプロバイダネットワーク
サービスへのDESCRIBEコールのみを使用してクライアントまたはサービスによっ
て取得されてもよく、したがって、実体的なネットワークおよびCPU帯域幅を必要とす
るポートスキャン方法などの従来の方法とは異なって、クライアントの仮想ネットワーク
への影響はほとんどまたは全くなく、また、ポートスキャン方法の場合のように、プロバ
イダネットワーク上のあらゆるデバイスへの完全なネットワークアクセスは必要ない。
【0009】
実施形態では、仮想ネットワーク検証サービスはクライアントからクエリを受信する。
いくつかの実施形態では、クエリは、SQLに類似しているがネットワーク構成に適用さ
れる表現的クエリ言語で提示され得る。そのようなクエリの非限定的な例は、仮想ネット
ワーク検証サービス(virtual network verification s
ervice,VNVS)に、インスタンスAがインスタンスBにSSHすることができ
るようなインスタンスのすべてのペアのリストを提供するように要求する「VNVSクエ
リ-iリスト:can-ssh(A,B)」のようなものであり得る。あるいは、いくつ
かの実施形態では、クエリはヒューマンフレンドリーな方法で提示され得る。そのような
クエリの非限定的な例は、「インスタンスAがインスタンスBにSSHで入ることができ
るように、インスタンスのすべてのペアのリストを表示する」のようなものであり得る。
いくつかの実施形態において、少なくともいくつかのクエリが、予め定義され、仮想ネッ
トワーク検証サービスへのグラフィカルインターフェースを介して、ユーザインターフェ
ース要素(例えば、メニュー)においてクライアントに提供され得る。
【0010】
クエリは、生成された論理プログラムについての定理に対応し、制約問題を表現する。
仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って制約問題を解
決するように構成された制約ソルバープログラム(制約ソルバーエンジンとも呼ばれる)
を使用して、エンコードされたルールに従って、エンコードされた記述に対するクエリに
よって表される制約問題を解決し、結果をクライアントに提供する。いくつかの実施形態
では、仮想ネットワーク検証サービスは、クエリを提示するためのAPIおよびインター
フェースを提供することができる。いくつかの実施形態では、仮想ネットワーク検証サー
ビスは、クライアントがAPIおよびインターフェースを介して選択することができる標
準クエリのセットを提供することができる。いくつかの実施形態では、仮想ネットワーク
検証サービスは、クライアントがAPIおよびインターフェースを介してカスタムクエリ
を作成および送信することを可能にし得る。
【0011】
実施形態では、仮想ネットワーク検証サービスは、コンソール上のサービスへのグラフ
ィカルインターフェースまたはコマンドラインインターフェース(command li
ne interface,CLI)を介してクライアントによって使用されて、プロバ
イダネットワーク上のクライアントの仮想ネットワークについての質問(制約を指定する
クエリとして提示される)に対する回答を取得することができる。提示される可能性があ
る質問の例としては、以下が挙げられるが、これらに限定されない。
●仮想ネットワーク内のどのインスタンスにインターネットからアクセス可能であるか
。
●いずれのインスタンスが仮想ネットワーク上の指定されたリソースにアクセスできる
か(例えば、データベース、キャッシュ、ストレージエンドポイント、他のインスタンス
など)。
●仮想ネットワークはネットワーキングセキュリティ標準のベストプラクティスに準拠
しているか。
●仮想ネットワークは、ルールのこのセットにエンコードされているように、自分の会
社のベストプラクティスに準拠しているか。
【0012】
より一般的には、クライアントが仮想ネットワーク検証サービスを使用して、仮想ネッ
トワーク内のリソースと仮想ネットワーク内の他のリソースとの間の予想パイプ、ならび
に外部エンティティへの予想パイプが開いていること、および予想パイプが開いたパイプ
のみであること(例えば、外部エンティティが、外部エンティティが達することを許され
るべきではない仮想ネットワーク内のリソースに達することができないこと)を検証する
ことができる。
【0013】
仮想ネットワーク内のリソースと他のリソースとの間のパイプ、または仮想ネットワー
ク内のリソースと外部エンティティとの間のパイプが開いていることを検証することは、
リソース間、またはリソースと外部エンティティとの間にネットワークを介したパスまた
はルート(例えば、リソースから、外部エンティティが仮想ネットワーク上のリソースに
アクセスすることができるHTTPSゲートウェイへのパス)があること(すなわち、ネ
ットワーク接続性があること)を検証することを含み得る。パスは、エンドポイント間の
ネットワーク接続性を提供するネットワークを介した直接パスであってもよく、あるいは
ルート上の1つ以上のホップを通過し、エンドポイント間のネットワーク接続性を提供す
る推移的なパスであってもよい。仮想ネットワークを記述するメタデータを保持する1つ
以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用
して仮想ネットワークに対する記述的情報を取得することができ、したがって、それぞれ
のデバイスまたはインスタンスが起動および待機していない場合でもパスを検証すること
ができる。いくつかの実施形態では、仮想ネットワークの記述的情報は、リソースに付与
または拒否される許可(例えば、仮想ネットワーク上のエンドポイントへの1つのリソー
スアクセスを付与または拒否する許可、IPアドレス範囲、または、所定のエンドポイン
ト(ストレージエンドポイントなど)にアクセスできる、またはできないリソースインス
タンスの特定のポートを指定する許可など)を含み得る。これらの実施形態では、仮想ネ
ットワーク内のパスが開いていることを検証することは、そのパスに対する必要な許可が
付与されたことを検証することを含み得る。同様に、予想されるパスが開いたパスのみで
あることを検証することは、仮想ネットワークまたは外部エンティティ内のリソースが、
アクセスするべきではないリソースにアクセスするための許可を有していないと判定する
ことを含み得る。
【0014】
仮想ネットワーキングルールの適切なセットを有する仮想ネットワーク検証サービスの
実施形態は、例えば、顧客が顧客の仮想ネットワークがペイメントカード業界データセキ
ュリティ標準(PCI DSS)、連邦リスクおよび認可管理プログラム(FedRAM
P)標準、または医療保険の相互運用性と説明責任に関する法律(HIPPA)標準のよ
うなネットワーキングセキュリティ標準に準拠していることを検証するのを助けるために
、または顧客の仮想ネットワークがクライアントの内部セキュリティ標準またはその他の
内部ネットワーキング要件に準拠していることを検証するために、クライアントによって
使用され得る。
【0015】
仮想ネットワーク検証サービスの実施形態のための別の例示的なアプリケーションは、
ネットワークセキュリティ問題またはソフトウェアバグなどの脆弱性の、仮想ネットワー
クにおける起こり得る影響を識別するためのものである。例えば、仮想ネットワーク内の
特定のインスタンス上で動作している特定のソフトウェアプログラムに脆弱性が発見され
た場合、クライアントは、このインスタンスが仮想ネットワーク内の他のインスタンスと
通信できるすべての方法を特定するためにクエリを作成および送信することができる。結
果は、クライアントが、脆弱性の起こり得る影響を特定し、したがって状況を最もうまく
処理する方法に関して決定を行うことを可能にし得る。例えば、脆弱性を有するインスタ
ンスからミッションクリティカルなデータベースを有するインスタンスへの直接のパスが
ない場合、問題に、通常の保守スケジュールに従って処理される低い優先度を与えること
ができる。脆弱性を有するインスタンスがミッションクリティカルなデータベースを有す
るインスタンスに影響を与える場合、仮想ネットワークの少なくとも一部をシャットダウ
ンして脆弱性に直ちに対処するという決定を行うことができる。
【0016】
仮想ネットワーク検証サービスの実施形態のための別の例示的なアプリケーションは、
プロバイダネットワーク環境のための仮想ネットワークに対する変更のオフラインテスト
におけるものである。例えば、プロバイダネットワーク環境で仮想ネットワーキングがど
のように機能するかの論理を記述する仮想ネットワーキングルールをテスト環境で使用し
て、仮想ネットワーキングプリミティブの変更を、当該変更が仮想ネットワークにどのよ
うな影響を与え得るかを特定するために、プロバイダネットワークに変更が適用される前
にテストすることができる。
【0017】
仮想ネットワーク検証サービスの実施形態のための別の例示的な用途は、クライアント
用の仮想ネットワークを自動的に合成することにある。例えば、クライアントは、特定の
ネットワーキングセキュリティ標準に準拠するとともに指定されたネットワーキングプリ
ミティブのセットを含む仮想ネットワークを確立したい場合がある。クライアントが自身
で仮想ネットワークを構築およびテストする必要がないように、仮想ネットワーク検証サ
ービスおよび仮想ネットワーキングルールを使用して制約(クライアント指定プリミティ
ブ、ネットワーキングセキュリティ標準、仮想ネットワーキングがプロバイダネットワー
ク環境内でどのように機能するかの論理を記述する仮想ネットワーキングルール、など)
のすべてを満たす仮想ネットワークを自動的に合成および検証することができる。例えば
、標準によって課せられた制約をクエリとして提示することができ、クエリを解決して、
制約を満たす仮想ネットワーク構成を決定することができ、あるいは仮想ネットワークの
構成が制約に準拠するかどうかを判定することができる。その場合に、制約に準拠する仮
想ネットワークが合成されてもよく、あるいは仮想ネットワークが制約に準拠するように
修正されてもよい。
【0018】
仮想ネットワーク検証サービスの実施形態の別の例示的な用途は、構成または変更がプ
ロバイダネットワーク上で実装される前に、クライアントが新たな仮想ネットワーク構成
または既存の仮想ネットワークの変更を検証することを可能にすることである。例えば、
仮想ネットワーク構成は、クライアントによって生成または修正されてもよく、その構成
に対する制約はクエリとして提示することが可能であって、構成がプロバイダネットワー
クに実装される前に、クエリを解決して、構成がクエリで提示されたクライアントの制約
に準拠していることを検証してもよい。
【0019】
図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上のクライアントの仮想ネットワーク1
10は、クライアントによって仮想コンピューティングリソースインスタンスとして構成
されたホストデバイス上の仮想マシン(virtual machine,VM)などの
クライアントのリソースインスタンスを含む。プロバイダネットワーク上のリソースイン
スタンスの少なくともいくつかは、複数のオペレーティングシステムをホストコンピュー
タ上で同時に、すなわちホストデバイス上のVMとして実行することを可能にするハード
ウェア仮想化技術に従って実装することができる。ホストデバイス上のハイパーバイザ、
または仮想マシンモニタ(virtual machine monitor,VMM)
は、それぞれのホスト上のVMに仮想プラットフォームを提示し、ホストデバイス上のV
Mの実行を監視する。各VMには1つ以上のIPアドレスが与えられ、それぞれのホスト
上のVMMは、ホスト上のVMのIPドレスを認識することができる。
【0020】
様々なネットワークリソース、構造、および機能性(ネットワーキングプリミティブと
呼ばれる)が、様々なプロバイダネットワークサービス102を介してプロバイダネット
ワーク100のクライアントに提供され得る。クライアントは、少なくとも部分的には様
々なサービスおよびAPI102を使用して、プロバイダネットワーク100上でクライ
アントの仮想ネットワーク110を作成、構成、設定および修正することができる。以下
は、サービス102によって提供され得る例示的なネットワーキングプリミティブを列挙
し、限定することを意図しない。
●例えば
図1、
図14および
図15に示すような仮想ネットワーク。
●リソースインスタンス(例えば、サービス102を使用するクライアントによる、仮
想コンピューティングリソースインスタンスとして構成されたVM(例えば、アプリケー
ションサーバ、Webサーバ、データベースサーバ、アクセスポイント、ゲートウェイ、
ロードバランサー、ロギングサービスなどの特定のプロバイダネットワークサービスのイ
ンスタンス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテ
ナ管理サービスなど)。
●タグ-いくつかの実施形態では、クライアントは、リソースインスタンスをタグ付け
することによって、クライアントの仮想ネットワーク内の特定のリソースインスタンス(
例えば、VM)に特定の役割を割り当てることを可能にされ得る。タグは、例えば、PR
ODやDEVなどのテキスト文字列であり得る。タグは、リソースインスタンスのメタデ
ータに格納され得る。タグは、標準プロバイダネットワーク定義タグおよび/またはクラ
イアント定義タグを含み得る。リソースインスタンスの例示的な役割には、セキュアソケ
ットシェル(Secure Socket Shell,SSH)アクセスインスタンス
、ロギングサービスインスタンス、コードリポジトリインスタンス、本番リソースインス
タンスおよび開発リソースインスタンスが含まれるが、これらに限定されない。
●仮想ネットワークエンドポイント(例えば、計算リソース、ストレージリソース、サ
ーバ、ホストデバイスなどのエンドポイント)。
●仮想ネットワークピアリング接続。いくつかの実施形態では、クライアントはプロバ
イダネットワーク上に2つ以上の仮想ネットワークを確立することができる。仮想ネット
ワークがインターネットなどの外部ネットワークを横断する必要なしにプロバイダネット
ワークを介して安全に通信することを可能にするピアリング接続が、仮想ネットワーク間
で確立されてもよい。
●仮想ネットワークの外部のエンティティから仮想ネットワークのリソースの少なくと
もいくつかへのアクセスを提供するインターネットゲートウェイ。
●例えば、仮想ネットワーク上のリソースインスタンスのグループまたはクラスタ間で
ネットワークトラフィックを分散する仮想化ロードバランサインスタンスである、ロード
バランサ。
●ネットワークアドレス変換(Network Address Translati
on,NAT)インスタンス。
●NATゲートウェイ。
●ネットワークアクセスコントロールリスト(Network Access Con
trol List,ACL)。
●ネットワークインターフェース。
●ルートテーブル。
●サブネット-仮想ネットワークは、必ずしもそうとは限らないが、例えば
図14およ
び
図15に示すように、2つ以上のサブネットワーク、またはサブネットに細分すること
ができる。
●セキュリティグループ-いくつかの実施形態では、プロバイダネットワークは、例え
ば
図15に示すように、クライアントが、サブネット内またはサブネット間で、クライア
ントの仮想ネットワーク内の仮想セキュリティグループを確立および管理することを可能
にし得る。セキュリティグループは、リソースインスタンスを論理的にグループ化したも
のであり、セキュリティグループルールに従ってセキュリティグループ内の1つ以上のリ
ソースインスタンスに到達することを可能にされたトラフィックを制御する仮想ファイア
ウォールとして機能する。
●地域-プロバイダネットワークサービスおよびリソース(例えば、仮想ネットワーク
、VMインスタンス、データストレージ、ゲートウェイ、ロードバランサなど)は、複数
の地理的な場所または地域でサポートされ得る。本明細書で使用されるとき、地域は、プ
ロバイダネットワークサービスをサポートし、その中でクライアントがリソースを起動お
よび構成することができる別個の地理的領域である。サービスおよびAPIにより、クラ
イアントは1つ以上の地域でクライアントのリソースを起動または複製することが可能に
なり得る。
●ゾーン-各地域には、本明細書でゾーンと呼ばれる複数の孤立した場所が含まれ得る
。クライアントのリソースインスタンスは、1つのゾーン内のリソースインスタンスに障
害が発生した場合に、別のゾーン内のインスタンスが要求を処理できるように、地域内の
複数のゾーンに分散させることができる。
【0021】
いくつかの実施形態では、クライアントは、それぞれのプロバイダネットワークサービ
ス102を使用して、上記のネットワーキングプリミティブのうちの1つ以上のインスタ
ンスを含む仮想ネットワーク110をプロバイダネットワーク100上に確立することが
できる。
図1は、プロバイダネットワーク100上の例示的な仮想ネットワーク110を
示し、限定することを意図していない。クライアントの仮想ネットワーク110は、仮想
ネットワークの機能を実装するリソースインスタンス118(例えば、VM)、例えばア
プリケーションサーバ、ウェブサーバ、データベースサーバなどを含むことができる。リ
ソースインスタンス118は、インスタンス118Aおよび118Bのグループまたはク
ラスタを含むことができ、例えば、インスタンス118Aは本番環境を表すことができ、
インスタンス118Bは開発環境を表すことができる。いくつかの実施形態では、インス
タンス118Aおよび118Bは異なるサブネットおよび/またはセキュリティグループ
内にあり得る。
【0022】
クライアントの仮想ネットワーク110はまた、アプリケーションおよびオペレーティ
ングシステムロギングサービス、ネットワーク監視および分析サービス、コードリポジト
リサービス、コンテナ管理サービスなど、クライアントの仮想ネットワーク110内に特
定のプロバイダネットワークサービスを実装するサービスインスタンス116(例えば、
VM)を含み得る。
【0023】
クライアントの仮想ネットワーク110はまた、クライアントネットワーク180上の
デバイス182および他の外部エンティティ190がインターネットなどの中間ネットワ
ーク150を介して仮想ネットワーク110内のリソースおよびエンドポイントと通信す
ることを可能にするアクセスインスタンスを含み得る。アクセスインスタンスは、例えば
、ロードバランサおよびゲートウェイ(インターネットゲートウェイ、NATゲートウェ
イなど)を含み得る。この例に示されるように、いくつかの実施形態では、アクセスイン
スタンスはHTTPSアクセスインスタンス114およびSSHアクセスインスタンス1
12を含み得る。HTTPSアクセスインスタンス114は、HTTPSプロトコルを使
用して外部エンティティ190からリソースインスタンス118Aおよび118Bにそれ
ぞれアクセスするためのインスタンス114Aおよび114B、ならびにHTTPSプロ
トコルを使用してクライアントネットワーク180上のデバイス182からサービスイン
スタンス116にアクセスするためのインスタンス114Cを含み得る。いくつかの実施
形態では、クライアントは、例えばSSHを使用して、クライアントネットワーク180
上のデバイス182(例えば、コンソール)から仮想ネットワーク110内のリソースイ
ンスタンスにアクセスすることができる。いくつかの実施形態では、SSHを使用してリ
ソースインスタンスにアクセスするために、クライアントにインスタンスのIPアドレス
とキーとが与えられる。クライアントは提供された情報を使用してインスタンスに直接S
SH接続することができる。いくつかの実施形態では、SSHアクセスインスタンス11
2は、クライアントがSSHプロトコルを使用してクライアントネットワーク180上の
デバイス182(例えば、コンソール)から仮想ネットワーク110上のクライアントの
リソースインスタンスにアクセスすることを可能にするプロキシとして機能し得る。例え
ば、SSHアクセスインスタンス112は、クライアントの仮想ネットワークの公にアク
セス可能なサブネット内にあり得る。クライアントのリソースインスタンスの少なくとも
一部が、公にアクセスできないサブネットにある場合がある。これらのリソースインスタ
ンスは、SSHアクセスインスタンス112に接続されたセキュリティグループからのS
SHアクセスを許可するセキュリティグループ内にあり得る。クライアントは、クライア
ントのリソースインスタンスに接続するためにSSHアクセスインスタンス112に接続
することができる。
【0024】
図1に示すように、プロバイダネットワーク100は、プロバイダネットワーク100
上の1つ以上のコンピューティングデバイスによって実施される仮想ネットワーク検証サ
ービス130を含み得る。いくつかの実施形態では、仮想ネットワーク検証サービス13
0のインスタンスは、例えば
図1に示すようにSSHアクセスインスタンス112によっ
て、クライアントの仮想ネットワーク100上に実装することができる。仮想ネットワー
ク検証サービス130は、宣言的論理プログラミング言語(例えば、Datalog)を
利用して、クライアントがプロバイダネットワーク上の仮想ネットワークについて再帰ク
エリを含むクエリを制約問題として表現することを可能にし、制約ソルバーエンジンを使
用してクエリを解決することによりクエリに対する結果を提供する。
図2は、いくつかの
実施形態による仮想ネットワーク検証サービス130を示す。
【0025】
図1を参照すると、仮想ネットワーク検証サービス130において、サービス102に
よって提供されるネットワーキングプリミティブのための仮想ネットワーキングセマンテ
ィクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセ
ットとして表現およびエンコードされ得る。仮想ネットワーキングルールは、仮想ネット
ワーク110に実装されている様々なネットワーキングプリミティブ間の共通の関係およ
び相互作用を表現するルールを含むことができる。仮想ネットワーキングルールは、ネッ
トワーキングセキュリティ標準(例えば、PCI、FedRAMP、HIPPAなど)、
またはクライアントの内部セキュリティ標準もしくは他のネットワーキング要件をエンコ
ードするルールも組み込むことができる。
【0026】
仮想ネットワーク検証サービス130は、クライアントの仮想ネットワーク110に対
する記述的情報を取得する。記述的情報は、例えば、仮想ネットワーク110に実装され
たネットワーキングプリミティブのインスタンスを識別し、様々なインスタンスの記述(
例えば、インスタンスに割り当てられた役割、インスタンスに付与された、またはインス
タンスに拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、イ
ンスタンス間の関係(例えば、インスタンス間のパス)を記述し、そして外部エンティテ
ィ190へのインターフェースまたはアクセスポイントを記述する。いくつかの実施形態
では、クライアントは、
図3に示されるように、仮想ネットワーク110から記述的情報
を取得し、その記述的情報を仮想ネットワーク検証サービス130に提供することができ
る。あるいは、いくつかの実施形態では、クライアントは、
図4に示すように、仮想ネッ
トワーク検証サービス130が仮想ネットワーク110から記述的情報を直接取得できる
ようにするために、仮想ネットワーク検証サービス130に許可を与えてもよい。仮想ネ
ットワーク検証サービス130は、宣言的論理プログラミング言語に従って記述的情報を
論理プログラムとしてエンコードすることができる。
【0027】
仮想ネットワーク検証サービス130は、宣言型論理プログラミング言語を利用し、ク
ライアントがプロバイダネットワーク100上のクライアントの仮想ネットワーク110
についてのクエリを、例えばクライアントネットワーク180内のクライアントデバイス
182上のサービス130へのグラフィカルインターフェースまたはコマンドラインイン
ターフェース(CLI)を介して、提示できるようにする。いくつかの実施形態において
使用され得る例示的な論理プログラミング言語は、Datalogである。他の宣言型論
理プログラミング言語が使用されてもよいことに留意されたい。いくつかの実施形態では
、クエリは、SQLに幾分類似している可能性があるがネットワーク構成に適用される表
現可能なクエリ言語で提示され得る。あるいは、いくつかの実施形態では、クエリは人間
に優しい方法で提示されてもよい。クエリは、生成された論理プログラムに関する定理に
対応し、制約問題を表現する。仮想ネットワーク検証サービス130は、制約解決エンジ
ンを使用して、エンコードされたルールに従って、エンコードされた記述に対するクエリ
によって表現された制約問題を解決し、その結果をクライアントに提供する。いくつかの
実施形態では、仮想ネットワーク検証サービス130は、クエリを提示するためのAPI
およびインターフェースを提供することができる。いくつかの実施形態では、仮想ネット
ワーク検証サービス130は、クライアントがAPIおよびインターフェースを介して選
択することができる標準クエリのセットを提供することができる。いくつかの実施形態で
は、仮想ネットワーク検証サービス130は、クライアントがAPIおよびインターフェ
ースを介してカスタムクエリを作成および送信することを可能にし得る。
【0028】
以下は、
図1に示される例示的な仮想ネットワークに関してクライアントによって提示
され得る例示的なクエリを説明するものであり、限定することを意図するものではない。
【0029】
仮想ネットワーク110のいくつかの実施形態では、仮想ネットワーク110上のリソ
ースは、クライアントネットワーク180上の指定されたエンドポイントからSSHアク
セスインスタンス112を通じてSSHを介してのみアクセス可能であるべきである。し
たがって、クライアントは、仮想ネットワーク110内のどのインスタンスも中間ネット
ワーク150上のエンドポイントからSSHを介してアクセス可能ではないことを検証し
たい場合がある。これを検証するための例示的なクエリは、次のように表現され得る。
すべてのインスタンス:
!internet-can-ssh-to-instance(インスタンス)
【0030】
クライアントはまた、クライアントネットワーク180から、仮想ネットワーク110
上のSSHアクセスインスタンス112がSSHを介してアクセス可能であることを検証
したい場合もある。前述のように、いくつかの実施形態では、仮想ネットワーク110内
のクライアントのインスタンスの少なくともいくつかに特定の役割を割り当てることがで
き、役割は、インスタンスのメタデータに格納されているタグによって示すことができる
。タグは記述的情報に含まれてもよく、したがって仮想ネットワーク110のエンコード
された記述に示されてもよい。したがって、いくつかの実施形態では、タグは、例えば、
特定の役割を割り当てられたインスタンスが実際にそれらの役割を実行できることを検証
するために、クエリで使用され得る。クライアントネットワーク180から、仮想ネット
ワーク110上のSSHアクセスインスタンス112がSSHを介してアクセス可能であ
ることを検証するための例示的なクエリは、次のように表現され得る。
すべてのインスタンス:
atom/instance-tag(インスタンス、タグキー/名前、タグ値/S
SHAccessInstance)
<=>ClientNetwork-can-ssh-to-instance(イ
ンスタンス)
【0031】
上記の式は、制約ソルバーによって評価されると、仮想ネットワーク110上のすべて
のインスタンスをチェックし、 SSHAccessInstanceとしてタグ付けさ
れたインスタンスについては、制約ソルバーは、そのインスタンスがクライアントネット
ワーク180からSSHを介して到達可能であるかどうかを判定し、そうである場合にT
RUEを返し、そうでない場合にFALSEを返す。
【0032】
以下は、仮想ネットワーク検証サービス130に適切なクエリを提示することによって
クライアントが検証することができる仮想ネットワーク110の態様のいくつかの他の例
を列挙したものであり、限定を意図するものではない。
●SSHを介してクライアントネットワーク180からSSHアクセスインスタンス1
12のみがアクセス可能である。
●リソースインスタンス118Aおよび118Bは、中間ネットワーク150B(例え
ばインターネット)を介して外部エンティティ190によってそれぞれのHTTPSアク
セスインスタンス114Aおよび114Bを通して到達可能である。
●リソースインスタンス118Aおよび118Bは、要求を認証するために中間ネット
ワーク150Bに到達することができる。
●リソースインスタンス118Aおよび118Bは特定のサービスインスタンス116
に書き込むことができる。
●特定のサービスインスタンス116は、HTTPSアクセスインスタンス114Cを
介してクライアントネットワーク180から到達することができる。
●指定サービスインスタンス116は、仮想ネットワーク110上の指定エンドポイン
トに到達することができる。
●すべてのインスタンスは、指定されたタグのセットのうちの1つでタグ付けされる。
【0033】
図2は、いくつかの実施形態による、例示的な仮想ネットワーク検証サービスの構成要
素および動作を示す図である。仮想ネットワーク検証サービス230は、プロバイダネッ
トワーク上の1つ以上のコンピューティングデバイスによって実装することができる。い
くつかの実施形態では、仮想ネットワーク検証サービス230のインスタンスは、例えば
図1に示すようにSSHアクセスインスタンス112によって、クライアントの仮想ネッ
トワーク上に実装することができる。
図2に示すように、いくつかの実施形態では、仮想
ネットワーク検証サービス230は、サービスエンジン234、制約ソルバー236エン
ジンおよびAPI232を含むことができる。サービスエンジン234は、ルールエンコ
ーディング250ロジック、クエリ処理260ロジックおよび記述エンコーディング27
0ロジックを実装してもよいが、それらに限定されない。制約ソルバー236は、エンコ
ードされた仮想ネットワーキングルール238に基づいてエンコードされた記述240に
よって表される仮想ネットワークについての再帰クエリを含むクエリを解決するように構
成された宣言型論理プログラミング言語エンジンである。API232は、クライアント
を含むがこれに限定されない外部エンティティにサービス210の機能を公開する。
【0034】
図2の(1A)および(1B)において、サービス230のルールエンコーディング2
50論理は、仮想ネットワークに適用されるべき仮想ネットワーキングルール238を取
得(1A)およびエンコード(1B)し得る。エンコードされるルールは、サービスプロ
バイダから、クライアントから、または他の外部のエンティティもしくは情報源から取得
することができる。例示的なエンコードされたルール238は、本明細書の後半で提供さ
れる。
【0035】
実施形態では、仮想ネットワークで使用されるネットワーキングプリミティブのための
仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮
想ネットワーキングルール238のセットとして取得およびエンコードされ得る。仮想ネ
ットワーキングルール238は、仮想ネットワークに実装することができるとともにプロ
バイダネットワークのサービスおよびAPIによって提供される様々なネットワーキング
プリミティブ間の共通の関係および相互作用を表現するルールを含むことができる。した
がって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどの
ように機能するかの論理を記述する仮想ネットワーキングルール238を1つのロケーシ
ョンまたはファイルに提供することができる。
【0036】
いくつかの実施形態では、仮想ネットワーク検証サービス230は、ペイメントカード
業界データセキュリティ標準(PCI DSS)、連邦リスクおよび認可管理プログラム
(FedRAMP)標準、または医療保険の相互運用性と説明責任に関する法律(HIP
PA)標準などのネットワーキングセキュリティ標準のためのルールを取得およびエンコ
ードすることができ、したがって、ネットワーキングセキュリティ標準を検証するための
ルールを含む仮想ネットワーキングルール238のセットを実装することができる。いく
つかの実施形態では、仮想ネットワーク検証サービス230は、クライアントの仮想ネッ
トワークが特定の標準に準拠していることを検証するためにクライアントによって選択的
に使用され得る異なるネットワーキングセキュリティ標準をそれぞれエンコードする仮想
ネットワーキングルール238の2つ以上の異なるセットを提供し得る。いくつかの実施
形態では、仮想ネットワーク検証サービス230は、クライアントの内部セキュリティ標
準、ベストプラクティスまたは他のネットワーキング要件をエンコードするカスタムルー
ルをクライアントが定義できるようにし、特定の仮想ネットワークに適用するためのクラ
イアントによって定義されたカスタムルールを含む仮想ネットワーキングルール238の
セットが実装され得る。
【0037】
図2の(2)において、サービス230のクエリ処理260ロジックは、仮想ネットワ
ーキングルール238に従って仮想ネットワークについて解決されるべきクエリをクライ
アントから受信することができる。いくつかの実施形態では、クライアントは、グラフィ
カルインターフェースまたはコマンドラインインターフェース(CLI)を介して、プロ
バイダネットワーク上でクライアントの仮想ネットワークについてのクエリをサービスA
PI232に提供することができる。いくつかの実施形態では、クエリは、SQLに類似
しているがネットワーク構成に適用される表現言語で提示され得る。あるいは、いくつか
の実施形態では、クエリはヒューマンフレンドリーな方法で提示されてもよい。例示的な
クエリは、
図1を参照して上述されている。
【0038】
図2の(3A)および(3B)において、サービス230の記述エンコーディング27
0ロジックは、仮想ネットワークの記述を取得(3A)およびエンコード(3B)するこ
とができる。いくつかの実施形態では、サービス230の記述エンコーディング270ロ
ジックは、仮想ネットワークについての記述的情報(3A)を取得し、記述エンコーディ
ング270ロジックが受け取る各クエリについて、クエリを解決するときに記述240が
最新のものであることを保証するためのエンコードされた記述240として記述的情報を
エンコード(3B)する。しかし、いくつかの実施形態では、記述的エンコーディング2
70ロジックは、仮想ネットワークに関する記述的情報を取得およびエンコードし、エン
コードされた記述240を使用して2つ以上のクエリを処理することができる。
図2の(
3A)において、サービス230の記述エンコーディング270ロジックは、クライアン
トの仮想ネットワークに対する記述的情報を取得する。記述的情報は、例えば、仮想ネッ
トワークに実装されているネットワーキングプリミティブのインスタンスを識別し、様々
なインスタンスの記述(例えば、インスタンスに割り当てられた役割、インスタンスに付
与または拒否された許可、インスタンスに割り当てられたIPアドレスなど)を含み、イ
ンスタンス間の関係(例えば、インスタンス間のパスなど)を記述し、外部エンティティ
へのインターフェースまたはアクセスポイントを記述する。いくつかの実施形態では、ク
ライアントは、
図3に示すように、仮想ネットワークから記述的情報を取得し、その記述
的情報をクエリとともに仮想ネットワーク検証サービス230に提供することができる。
あるいは、いくつかの実施形態では、クライアントは、
図4に示すように、仮想ネットワ
ーク検証サービス230がクエリに応答して仮想ネットワークから記述的情報を直接取得
することを可能にするために仮想ネットワーク検証サービス230に許可を与え得る。図
2の(3B)において、サービス230の記述エンコーディング270ロジックは、宣言
型論理プログラミング言語に従って、得られた記述的情報を論理プログラムとしてエンコ
ードすることができる。
【0039】
図2の(4)において、サービス230のクエリ処理260ロジックは、クエリを制約
ソルバー236に提供することができる。制約ソルバー236は、エンコードされたルー
ル238に従ってエンコードされた記述240に対するクエリによって表現された制約問
題を解決し、(5A)において、結果(例えば、クエリによって提示された質問に対する
回答)をクエリ処理260に提供する。そして、(5B)で、フォーマットされた結果を
API232を介してクライアントに提供する。フォーマットされた結果は、テキスト結
果(例えば、「YES」、「NO」、「TRUE」または「FALSE」などのクエリに
よって課された制約に対する回答を表すテキスト、クエリによって提示された制約を満た
すインスタンスのリスト)および/またはグラフィカル結果(例えば、クエリを解決する
ことによって決定された2つ以上のインスタンス間の関係のグラフィカル表現、クエリを
解決することによって識別されたインスタンスを識別する仮想ネットワークのグラフィカ
ル表現など)を含み得る。
【0040】
図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を介してクライア
ントに提供する。
【0041】
図4は、いくつかの実施形態による、仮想ネットワークから記述的情報を取得し、クエ
リを処理し、結果をクライアントに提供する仮想ネットワーク検証サービスに対して、ク
エリと仮想ネットワークへのアクセス許可とを提供するクライアントを示す図である。図
4の(1)で、クライアントは、プロバイダネットワークとのクライアントアカウント4
88を介して、仮想ネットワーク検証サービス430に許可を提供して、クライアントの
仮想ネットワーク410から記述的情報を取得することができる。例えば、いくつかの実
施形態では、仮想ネットワークを記述するメタデータを保持するプロバイダネットワーク
の1つ以上のプロバイダネットワークサービスは、クライアントが仮想ネットワーク41
0上のインスタンスに対する記述的情報を要求することを可能にするそれぞれのAPIを
介してDESCRIBEまたは類似のコールを提供してもよい。クライアントは、サービ
ス430が仮想ネットワーク410用のプロバイダネットワークサービスAPIへのDE
SCRIBEコールを実行できるようにするために、サービス430に許可を与えること
ができる。いくつかの実施形態では、クライアントは、仮想ネットワーク410内のイン
スタンスのメタデータに対する読み取り許可のみを与え、メタデータまたは仮想ネットワ
ーク410上の他のデータ、または仮想ネットワーク410を介してアクセス可能な他の
データに対する書き込みまたは変更特権を与えない。
図4の(2)において、クライアン
トは、サービスAPI432を介してプロバイダネットワーク検証サービス430のサー
ビスエンジン434にクエリを提供することができる。
図4の(3)において、クエリに
応答して、サービスエンジン434は、例えば、それぞれのAPIを介して仮想ネットワ
ークを記述するメタデータを保持する1つ以上のプロバイダネットワークサービスへのD
ESCRIBEコールを用いて、クライアントの仮想ネットワーク410から記述的情報
を得ることができる。
図4の(4A)において、サービスエンジン434は、取得された
記述的情報を宣言型論理プログラミング言語に従ってエンコードし、クエリおよびエンコ
ードされた記述を制約ソルバー436に提供し得る。制約ソルバー436は、エンコード
された仮想ネットワーキングルール438に従って、エンコードされた記述についてのク
エリを解決し、(4B)で結果(例えば、クエリによって提示された質問に対する回答)
をサービスエンジン434に提供し、フォーマットされた結果を(5)でAPI432を
介してクライアントに提供する。
【0042】
図5は、いくつかの実施形態による、仮想ネットワークに関する情報をプロバイダネッ
トワークのクライアントに提供するための方法のハイレベルフローチャートである。10
00に示されるように、仮想ネットワーキングルールが取得およびエンコードされ得る。
エンコードされるルールは、サービスプロバイダから、クライアントから、または他の外
部のエンティティもしくは情報源から取得することができる。仮想ネットワーキングルー
ルは、プロバイダネットワーク上の仮想ネットワークで使用されるネットワーキングプリ
ミティブのための仮想ネットワーキングセマンティクスおよび論理を表現することができ
る。いくつかの実施形態では、仮想ネットワーキングルールは、ペイメントカード業界デ
ータセキュリティ基準(PCI DSS)、連邦リスクおよび認可管理プログラム(Fe
dRAMP)規格、または医療保険の相互運用性と説明責任に関する法律(HIPPA)
などのネットワーキングセキュリティ標準のためのルールを表す。いくつかの実施形態で
は、仮想ネットワーキングルールは、クライアントの内部セキュリティ標準または他のネ
ットワーキング要件を表すクライアント定義ルールを含み得る。例示的なエンコードされ
たルールは、本書類において後で提供される。
【0043】
1010に示すように、仮想ネットワーク検証サービスは、クライアントから仮想ネッ
トワークについてのクエリを受信することができる。実施形態では、仮想ネットワーク検
証サービスは、コンソール上のサービスへのグラフィカルインターフェースを介して、ま
たはコマンドラインインターフェース(CLI)を介して、クライアントによって使用さ
れて、プロバイダネットワーク上のクライアントの仮想ネットワークについての(再帰的
クエリを含むクエリとして提示される)質問に対する回答を得ることができる。いくつか
の実施形態では、クエリは、SQLに類似しているがネットワーク構成に適用される表現
言語で提示され得る。あるいは、いくつかの実施形態では、クエリはヒューマンフレンド
リーな方法で提示されてもよい。例示的なクエリは、
図1を参照して上述されている。
【0044】
1020に示されるように、仮想ネットワーク検証サービスは、仮想ネットワークにつ
いての記述的情報を取得およびエンコードすることができる。記述的情報は、例えば、仮
想ネットワークに実装されたネットワーキングプリミティブのインスタンスを識別し、イ
ンスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタ
ンスに付与または拒否された許可、インスタンスに割り当てられたIPアドレスなど)を
含み、インスタンス間の関係(例えば、インスタンス間のパス)を記述し、そして外部エ
ンティティ(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る
計算インスタンス)へのインターフェースまたはアクセスポイントを記述する。いくつか
の実施形態では、クライアントは、
図6に示すように、仮想ネットワークから記述的情報
を取得し、記述的情報を仮想ネットワーク検証サービスに提供することができる。あるい
は、いくつかの実施形態では、クライアントは、
図7に示すように、仮想ネットワーク検
証サービスが仮想ネットワークから記述的情報を取得することを可能にするために仮想ネ
ットワーク検証サービスに許可を与えてもよい。仮想ネットワーク検証サービスは、記述
的論理プログラミング言語(例えば、Datalog)に従って記述的情報を論理プログ
ラムとしてエンコードすることができる。
【0045】
1030に示されるように、仮想ネットワーク検証サービスは、宣言型論理プログラミ
ング言語(例えば、Datalog)制約ソルバーエンジンを使用して、エンコードされ
た仮想ネットワーキングルールに従って、エンコードされた記述に対するクエリを解決し
得る。1040に示すように、クエリ解決の結果(例えば、クエリによって提示された質
問に対する回答)をフォーマットしてクライアントに提供することができる。フォーマッ
トされた結果は、テキスト結果(例えば、「YES」、「NO」、「TRUE」、または
「FALSE」などのクエリによって課された制約に対する回答を表すテキスト、クエリ
によって提示された制約を満たすインスタンスのリストなど)および/またはグラフィカ
ル結果(例えば、クエリを解決することによって決定された2つ以上のインスタンス間の
関係のグラフィカル表現、クエリを解決することによって識別されたインスタンスを識別
する仮想ネットワークのグラフィカル表現など)を含み得る。
【0046】
要素1040から要素1010に戻る矢印によって示されるように、要素1010~1
040は、クライアントの仮想ネットワークについての複数のクエリを提示および解決す
るために繰り返し実行され得る。いくつかの実施形態では、例えば、クライアントは、一
連のクエリを含むスクリプトを書いて、そのスクリプトを実行してクエリを仮想ネットワ
ーク検証サービスに提示し、そこから結果を受け取ることができる。
図5に示すように、
いくつかの実施形態では、仮想ネットワーク検証サービスは、仮想ネットワークについて
の記述的情報を取得し、仮想ネットワーク検証サービスが受け取る各クエリについて、ク
エリを解決するときに記述が最新のものであることを保証するためのエンコードされた記
述として記述的情報をエンコードすることができる。しかしながら、いくつかの実施形態
では、仮想ネットワーク検証サービスは、仮想ネットワークについての記述的情報を取得
してエンコードし、エンコードされた記述を使用して2つ以上のクエリを処理することが
できる。
【0047】
図6は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネ
ットワークのクライアントに提供する方法のフローチャートであり、クライアントは、記
述的情報およびクエリを仮想ネットワーク検証サービスに提供する。1100に示される
ように、クライアントは、例えばプロバイダネットワークサービスAPIによって提供さ
れるDESCRIBEコールを使用して、仮想ネットワークから記述的情報を取得する。
1110に示すように、クライアントは仮想ネットワーク検証サービスにクエリおよび記
述的情報を送信する。1120に示すように、検証サービスは仮想ネットワークについて
の記述的情報をエンコードする。1130に示されるように、検証サービスは、制約ソル
バーエンジンを使用して、エンコードされた仮想ネットワークルールに従って、エンコー
ドされた記述に対するクエリを解決する。1140に示されるように、仮想ネットワーク
検証サービスは、クエリ解決の結果をクライアントに提供する。
【0048】
図7は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネ
ットワークのクライアントに提供する方法のフローチャートであり、クライアントは、仮
想ネットワークにアクセスするための記述的情報および許可を仮想ネットワーク検証サー
ビスに提供する。1200に示すように、クライアントは、サービスが仮想ネットワーク
から記述的情報を取得することを可能にする許可、例えば仮想ネットワークを記述するメ
タデータを保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコ
ールを使用する許可を仮想ネットワーク検証サービスに与える。1210に示すように、
クライアントは仮想ネットワーク検証サービスにクエリを送信する。1220に示すよう
に、仮想ネットワーク検証サービスは、例えば仮想ネットワークを記述するメタデータを
保持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを使用
して、仮想ネットワークから記述的情報を取得する。1230に示すように、仮想ネット
ワーク検証サービスは仮想ネットワークについての記述的情報をエンコードする。124
0に示すように、仮想ネットワーク検証サービスは、制約ソルバーエンジンを使用して、
ルールに従って、エンコードされた記述に対するクエリを解決する。1250に示される
ように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する
。
【0049】
図8は、いくつかの実施形態による、2つ以上のピア仮想ネットワークを含むプロバイ
ダネットワーク環境におけるクライアントの仮想ネットワーク実装を示す図である。
図8
は、本明細書で説明されるように仮想ネットワーク検証サービス2030において使用さ
れ得る例示的な仮想ネットワークルールを説明するために部分的に提供される。
図8に示
すように、プロバイダネットワーク2000上のクライアントの仮想ネットワーク実装形
態2010は、2つ以上の仮想ネットワーク2020を含み得る。
図8は、クライアント
の仮想ネットワーク実装形態2010における2つの仮想ネットワーク2020Aおよび
2020Bを示す。いくつかの実施形態では、仮想ネットワーク2020Aおよび202
0Bはそれぞれ1つ以上のサブネットを含むことができ、セキュリティグループは仮想ネ
ットワーク2020Aおよび2020B内に確立することができる(例えば、
図14およ
び
図15を参照)。ネットワークエンドポイント2022Aおよび2022Bは、それぞ
れの仮想ネットワーク2020Aおよび2020Bにおけるネットワーキングプリミティ
ブの様々なインスタンス(例えば、リソースインスタンス)のネットワークインターフェ
ースを表す。仮想ネットワーク2020Aおよび2020B上のインスタンスがインター
ネットなどの外部ネットワーク2050を横断する必要なしにプロバイダネットワーク2
000を介して安全に通信することを可能にするピアリング接続2024が、仮想ネット
ワーク2020Aと2020Bとの間のプロバイダネットワーク2000を介して確立さ
れる。
【0050】
「プライベートルーティング」の例示的なルールを以下に示す。これらの例は限定的で
あることを意図しない。これらの例で使用される「ルーティング」は、ファイアウォール
がない場合、IPパケットが1つのエンドポイント2022から別のエンドポイント20
22に流れ得ることを意味する。仮想ネットワーク実装形態2010内の2つのエンドポ
イント2022間のルーティングは、「プライベートルーティング」と呼ばれることがあ
る。仮想ネットワーク実装形態2010において両方のエンドポイント2022が同じ仮
想ネットワーク2020にあるか異なる仮想ネットワーク2020にあるかによって、ル
ールは異なり得る。以下は、仮想ネットワーク実装形態2010においてパケットが2つ
のエンドポイント2022間を流れ得るかどうかを判定するための記述的論理プログラミ
ング言語に従う例示的なルールを説明する。
routable-private:endpoint->endpoint->ty
pe
-:routable-private Endpoint1 Endpoint2
<-routable-private-one-way Endpoint1 E
ndpoint2
<-routable-private-one-way Endpoint2 E
ndpoint1
【0051】
最初の行はエンドポイントのタイプを定義する。Endpoint1およびEndpo
int2は変数である。(routable-private-one-way End
point1 Endpoint2)および(routable-private-on
e-way Endpoint2 Endpoint1)が両方とも真(そうでない場合
は偽)の場合、ルール(routable-private Endpoint1 En
dpoint2)は真と評価される。仮想ネットワーク2020内のエンドポイント20
22間のルーティングのために、ルールroutable-private-one-w
ayは以下のように定義されてもよい。
routable-private-one-way:endpoint->endp
oint->type
-:routable-private-one-way Endpoint1 En
dpoint2
<-endpoint-has-virtual-network Endpoin
t1 Vnetwork
<-endpoint-has-virtual-network Endpoin
t2 Vnetwork
【0052】
Endpoint1およびEndpoint2は変数である。Vnetworkは同じ
変数である(すなわち、同じ仮想ネットワーク2020を示す)。このルールは、End
point1およびEndpoint2の両方が同じ仮想ネットワーク2020内にある
場合には真(そうでない場合には偽)と評価される。
【0053】
ピアリング接続2024を介して異なる仮想ネットワーク2020内のエンドポイント
2022間でルーティングするために、ルールroutable-private-on
e-wayを以下のように定義することができる。「//」で始まるテキストはコメント
である。
-: routable-private-one-way Endpoint1 E
ndpoint2
//エンドポイントのIPを参照する
<-endpoint-has-private-ip Endpoint1 I
p1
<-endpoint-has- private-ip Endpoint1
Ip2
//エンドポイントの仮想ネットワークを参照する
<-endpoint-has-virtual-network Endpoi
nt1 Vnetwork1
<-endpoint-has-virtual-network Endpoi
nt2 Vnetwork2
//ピアリングのCIDR(クラスレスドメイン間ルーティング)を参照する
<-peered-cidrs Pcx Vnetwork1 Cidr1 Vn
etwork2 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
【0054】
仮想ネットワークの合成
いくつかの実施形態では、仮想ネットワーク検証サービスは、クライアントが仮想ネッ
トワーク自体を構築およびテストする必要がないように、制約、例えばクエリに課される
制約を満たす仮想ネットワークを自動的に合成するのに使用できる。例えば、クライアン
トは、特定のネットワーキングセキュリティ標準および/またはクライアント指定のネッ
トワーキング標準に準拠し、指定されたネットワーキングプリミティブのセットを含む仮
想ネットワークを確立したいと思う場合がある。標準によって課された制約はクエリとし
て提示されることができ、クエリは、制約を満たす仮想ネットワーク構成を決定するため
に、あるいは仮想ネットワークの構成が制約に適合するかどうかを決定するために解決さ
れ得る。制約に適合する仮想ネットワークが合成されてもよく、あるいは仮想ネットワー
クが制約に適合するように修正されてもよい。
【0055】
図9は、いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に合
成するための方法のフローチャートである。3000に示されるように、クライアントは
ネットワーキングプリミティブのセットを指定し、そして所望の仮想ネットワークに対す
る制約を指定するクエリのセットを提示する。3010に示すように、検証サービスは、
ネットワーキングプリミティブのセットを含む仮想ネットワーク構成であって、仮想ネッ
トワーキングルールのセットに従ってクエリによって指定された制約を満たす仮想ネット
ワーク構成を決定する。3020に示されるように、仮想ネットワークは、適切なプロバ
イダネットワークサービスを介して仮想ネットワーク構成に従ってプロバイダネットワー
ク上に生成されてもよい。
【0056】
図10は、いくつかの実施形態による、クライアント用の仮想ネットワークを自動的に
合成するための別の方法のフローチャートである。3100に示すように、クライアント
は、既存の仮想ネットワークを指定し、仮想ネットワークに対する制約を指定するクエリ
のセットを提示する。3110に示されるように、検証サービスは、仮想ネットワークが
仮想ネットワーキングルールのセットに従って、クエリによって指定された制約を満たす
かどうかを判定するためにクエリを解決する。3120で、既存の仮想ネットワークが制
約を満たす場合には、クライアントに通知することができ、方法は終了する。3120で
、既存の仮想ネットワークが制約を満たさない場合には、制約に適合する新たな仮想ネッ
トワークが適切なプロバイダネットワークサービスを通じてプロバイダネットワーク上に
生成され得る。あるいは、いくつかの実施形態では、既存の仮想ネットワークは、制約を
満たすために適切なプロバイダネットワークサービスを通じて修正されてもよい。
【0057】
例示的なプロバイダネットワーク環境
本項では、
図1から
図10を参照して説明した方法および装置の実施形態が実装され得
る例示的なプロバイダネットワーク環境について説明する。しかしながら、これらの例示
的なプロバイダネットワーク環境は限定的であることを意図していない。
【0058】
図11は、いくつかの実施形態による、例示的なプロバイダネットワーク環境を示す図
である。プロバイダネットワーク4000は、プロバイダネットワークまたは1つ以上の
データセンター内のネットワーク内のデバイス上に実装された計算およびストレージリソ
ースを含むがこれらに限定されない仮想化リソースのインスタンス4012を購入、レン
タル、または他の方法で取得することを可能にする1つ以上の仮想化サービス4010を
介してクライアントにリソース仮想化を提供し得る。プライベートIPアドレス4016
は、リソースインスタンス4012に関連付けられてもよく、プライベートIPアドレス
は、プロバイダネットワーク4000上のリソースインスタンス4012の内部ネットワ
ークアドレスである。いくつかの実施形態では、プロバイダネットワーク4000は、ク
ライアントがプロバイダ4000から取得し得るパブリックIPアドレス4014および
/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4
(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)も提
供し得る。
【0059】
従来、プロバイダネットワーク4000は、仮想化サービス4010を介して、サービ
スプロバイダのクライアント(例えば、クライアントネットワーク4050Aを操作する
クライアント)が、クライアントに割り当てられた、またはアロケートされた少なくとも
いくつかのパブリックIPアドレス4014を、特に、クライアントに割り当てられたリ
ソースインスタンス4012に、動的に関連付けることを可能にし得る。プロバイダネッ
トワーク4000はまた、クライアントが、そのクライアントにアロケートされた1つの
仮想化コンピューティングリソースインスタンス4012に以前にマッピングされたパブ
リックIPアドレス4014を、やはりそのクライアントにアロケートされた別の仮想化
コンピューティングリソースインスタンス4012に再マッピングすることを可能にし得
る。サービスプロバイダによって提供された仮想化コンピューティングリソースインスタ
ンス4012およびパブリックIPアドレス4014を使用して、クライアントネットワ
ーク4050Aのオペレータなどのサービスプロバイダのクライアントは、例えば、クラ
イアント固有のアプリケーションを実装し、クライアントのアプリケーションをインター
ネットなどの中間ネットワーク4040に提示することができる。次いで、中間ネットワ
ーク4040上の他のネットワークエンティティ4020は、クライアントネットワーク
4050Aによって公開された宛先パブリックIPアドレス4014へのトラフィックを
生成することができ、トラフィックはサービスプロバイダのデータセンターにルーティン
グされ、データセンターではネットワーク基板を介して、現在宛先パブリックIPアドレ
ス4014にマッピングされている仮想化コンピューティングリソースインスタンス40
12のプライベートIPアドレス4016にルーティングされる。同様に、仮想化コンピ
ューティングリソースインスタンス4012からの応答トラフィックは、ネットワーク基
板を介して中間ネットワーク4040に戻ってソースエンティティ4020にルーティン
グされ得る。
【0060】
本明細書で使用されるプライベートIPアドレスは、プロバイダネットワーク内のリソ
ースインスタンスの内部ネットワークアドレスを指す。プライベートIPアドレスはプロ
バイダネットワーク内でのみルーティング可能である。プロバイダネットワークの外部か
ら発信されたネットワークトラフィックは、プライベートIPアドレスに直接ルーティン
グされず、代わりに、トラフィックはリソースインスタンスにマッピングされているパブ
リックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスか
らプライベートIPアドレスへのマッピング、およびその逆のマッピングを実行するため
のネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイ
スまたは機器を含むことができる。
【0061】
本明細書で使用される場合、パブリックIPアドレスは、サービスプロバイダまたはク
ライアントによってリソースインスタンスに割り当てられるインターネットルーティング
可能なネットワークアドレスである。パブリックIPアドレスにルーティングされたトラ
フィックは、例えば1:1ネットワークアドレス変換(NAT)を介して変換され、リソ
ースインスタンスのそれぞれのプライベートIPアドレスに転送される。
【0062】
いくつかのパブリックIPアドレスが、プロバイダネットワークインフラストラクチャ
によって特定のリソースインスタンスに割り当てられることが可能であり、これらのパブ
リックIPアドレスは、標準パブリックIPアドレス、または単に標準IPアドレスと呼
ばれることがある。いくつかの実施形態では、標準IPアドレスからリソースインスタン
スのプライベートIPアドレスへのマッピングは、すべてのリソースインスタンスタイプ
に対するデフォルトの起動設定である。
【0063】
少なくともいくつかのパブリックIPアドレスがプロバイダネットワーク4000のク
ライアントにアロケートされ、またはそれによって取得されることが可能であり、その場
合にクライアントは、アロケートされたパブリックIPアドレスを、クライアントにアロ
ケートされた特定のリソースインスタンスに割り当てることができる。これらのパブリッ
クIPアドレスは、クライアントパブリックIPアドレス、または単にクライアントIP
アドレスと呼ばれることがある。標準IPアドレスの場合のようにプロバイダネットワー
ク4000によってリソースインスタンスに割り当てられる代わりに、クライアントIP
アドレスは、例えばサービスプロバイダによって提供されるAPIを介してクライアント
によってリソースインスタンスに割り当てられてもよい。標準IPアドレスとは異なり、
クライアントIPアドレスはクライアントアカウントに割り当てられ、必要に応じて、ま
たは好みに応じて、各クライアントによって他のリソースインスタンスに再マッピングさ
れ得る。クライアントIPアドレスは、特定のリソースインスタンスではなく、クライア
ントのアカウントに関連付けられており、クライアントがクライアントIPアドレスを解
放することを選択するまで、クライアントはそのIPアドレスを制御する。従来の静的I
Pアドレスとは異なり、クライアントIPアドレスは、クライアントのパブリックIPア
ドレスをクライアントのアカウントに関連付けられた任意のリソースインスタンスに再マ
ッピングすることによって、リソースインスタンスまたはアベイラビリティゾーンの障害
をマスクすることを可能にする。例えば、クライアントIPアドレスは、クライアントI
Pアドレスを代替のリソースインスタンスに再マッピングすることによって、クライアン
トはクライアントのリソースインスタンスまたはソフトウェアに関する問題を管理するこ
とができる。
【0064】
図12は、いくつかの実施形態による、IPトンネリング技術を使用してネットワーク
基板上にオーバーレイネットワークを実装する例示的なデータセンターを示す図である。
プロバイダデータセンター4100は、ルータ、スイッチ、ネットワークアドレス変換装
置(NAT)などのネットワーキングデバイス4112を含むネットワーク基板を含むこ
とができる。いくつかの実施形態は、トンネルを使用してカプセル化されたパケットがネ
ットワーク基板4110を通過することができるオーバーレイネットワークを提供するた
めにインターネットプロトコル(IP)トンネリング技術を使用することができる。IP
トンネリング技術は、ネットワーク上にオーバーレイネットワーク(例えば、
図12のデ
ータセンター4100内のローカルネットワーク)を作成するためのマッピングおよびカ
プセル化システムを提供することができ、オーバーレイ層(パブリックIPアドレス)お
よびネットワーク基板4110層(プライベートIPアドレス)に別のネームスペースを
提供することができる。オーバーレイ層内のパケットは、それらのトンネル基板ターゲッ
ト(プライベートIPアドレス)が何であるべきかを決定するために、(例えばマッピン
グサービス4130によって提供される)マッピングディレクトリに対してチェックされ
得る。IPトンネリング技術は、仮想ネットワークトポロジ(オーバーレイネットワーク
)を提供し、クライアントがパケットを送信したいIPアドレスを提供するときに、IP
オーバーレイアドレスがどこにあるかを知っているマッピングサービス(例えば、マッピ
ングサービス4130)と通信することによってIPアドレスが仮想空間内で実行される
ように、クライアントに提示されるインターフェース(例えば、サービスAPI)がオー
バーレイネットワークに付加される。
【0065】
いくつかの実施形態では、IPトンネリング技術は、IPオーバーレイアドレス(パブ
リックIPアドレス)をサブストレートIPアドレス(プライベートIPアドレス)にマ
ッピングし、2つのネームスペース間のトンネルにおいてパケットをカプセル化し、カプ
セル化がパケットから除去される正しいエンドポイントにトンネルを介してパケットを配
信することができる。
図12では、ホスト4120A上の仮想マシン(VM)4124A
から中間ネットワーク4150上のデバイスへの例示的なオーバーレイネットワークトン
ネル4134Aと、ホスト4120B上のVM4124Bとホスト4120C上のVM4
124Cとの間の例示的なオーバーレイネットワークトンネル4134Bとが示されてい
る。いくつかの実施形態では、パケットは送信前にオーバーレイネットワークパケットフ
ォーマットでカプセル化されてもよく、オーバーレイネットワークパケットは受信後に除
去されてもよい。他の実施形態では、オーバーレイネットワークパケットにおいてパケッ
トをカプセル化する代わりに、オーバーレイネットワークアドレス(パブリックIPアド
レス)を送信前にパケットの基板アドレス(プライベートIPアドレス)に埋め込み、受
信時にパケットアドレスから除去してもよい。一例として、オーバーレイネットワークは
、パブリックIPアドレスとして32ビットのIPv4(インターネットプロトコルバー
ジョン4)アドレスを使用して実装され、IPv4アドレスは、プライベートIPアドレ
スとしてサブストレートネットワーク上で使用される128ビットのIPv6(インター
ネットプロトコルバージョン6)アドレスの一部として埋め込まれ得る。
【0066】
図12を参照すると、実施形態が実装され得る少なくともいくつかのネットワークは、
複数のオペレーティングシステムがホストコンピュータ(例えば、
図12のホスト412
0Aおよび4120B)上で同時に動作することを可能にする、すなわち、ホスト412
0上の仮想マシン(VM)4124のような、ハードウェア仮想化技術を含み得る。VM
4124は、例えば、ネットワークプロバイダのクライアントにレンタルまたはリースさ
れ得る。ホスト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 G
ateway Protocol,IGP)を使用してこのようなローカルネットワーク
内でルーティング情報を交換し得ることに留意されたい。
【0067】
さらに、プロバイダデータセンター4100ネットワーク(自律システム(auton
omous system,AS)と呼ばれることもある)などのネットワークは、マッ
ピングサービス技術、IPトンネリング技術およびルーティングサービス技術を使用して
、VM4124からインターネットデスティネーションに、およびインターネットソース
からVM4124に、パケットをルーティングすることができる。インターネット上のソ
ースとデスティネーションとの間のインターネットルーティングには、通常、外部ゲート
ウェイプロトコル(EGP)または境界ゲートウェイプロトコル(BGP)が使用される
ことに留意されたい。
図12は、いくつかの実施形態による、リソース仮想化技術を提供
し、インターネットトランジットプロバイダに接続するエッジルータ4114を介して完
全なインターネットアクセスを提供するネットワークを実装する例示的なプロバイダデー
タセンター4100を示す。プロバイダデータセンター4100は、例えば、ハードウェ
ア仮想化サービスを介して仮想コンピューティングシステム(VM4124)を実装する
能力、およびストレージ仮想化サービスを介してストレージリソース4118上に仮想化
データストア4116を実装する能力をクライアントに提供し得る。
【0068】
データセンター4100ネットワークは、例えばデータセンター4100内のホスト4
120上のVM4124からインターネットデスティネーションに、およびインターネッ
トソースからVM4124にパケットをルーティングするために、仮想化リソースとの間
を行き来するトラフィックをルーティングするIPトンネリング技術、マッピングサービ
ス技術およびルーティングサービス技術を実装することができる。インターネットソース
およびデスティネーションは、例えば、中間ネットワーク4140に接続されたコンピュ
ーティングシステム4170と、(例えば、ネットワーク4150をインターネットトラ
ンジットプロバイダに接続するエッジルータ4114を介して)中間ネットワーク414
0に接続するローカルネットワーク4150に接続されたコンピューティングシステム4
152とを含むことができる。プロバイダデータセンター4100ネットワークはまた、
例えばデータセンター4100内のホスト4120上のVM4124から同じホスト上の
、またはデータセンター4100内の他のホスト4120上の他のVM4124へと、デ
ータセンター4100内のリソース間でパケットをルーティングしてもよい。
【0069】
データセンター4100を提供するサービスプロバイダはまた、データセンター410
0と同様のハードウェア仮想化技術を含むとともに中間ネットワーク4140にも接続さ
れ得る追加のデータセンター4160を、提供し得る。パケットは、データセンター41
00から他のデータセンター4160へ、例えば、データセンター4100内のホスト4
120上のVM4124から他の類似のデータセンター4160内の他のホスト上の他の
VMへ、およびその逆に転送することができる。
【0070】
上記は、複数のオペレーティングシステムがホスト上の仮想マシン(VM)としてホス
トコンピュータ上で同時に動作することを可能にするハードウェア仮想化技術を説明して
いるが、VMはネットワークプロバイダのクライアントにレンタルまたはリースされても
よく、同様に、ストレージリソース4118などの他のコンピューティングリソースをネ
ットワークプロバイダのクライアントに仮想化リソースとして提供するために使用されて
もよい。
【0071】
図13は、いくつかの実施形態による、ストレージ仮想化サービスおよびハードウェア
仮想化サービスをクライアントに提供する例示的なプロバイダネットワークのブロック図
である。ハードウェア仮想化サービス4220は、複数の計算リソース4224(例えば
、VM)をクライアントに提供する。計算リソース4224は、例えば、プロバイダネッ
トワーク4200のクライアントに(例えば、クライアントネットワーク4250を実装
するクライアントに)レンタルまたはリースすることができる。各計算リソース4224
は、1つ以上のプライベートIPアドレスを与えられてもよい。プロバイダネットワーク
4200は、計算リソース4224のプライベートIPアドレスからパブリックインター
ネットデスティネーションに、およびパブリックインターネットソースから計算リソース
4224にパケットをルーティングするように構成され得る。
【0072】
プロバイダネットワーク4200は、例えばローカルネットワーク4256を介して中
間ネットワーク4240に結合されたクライアントネットワーク4250、中間ネットワ
ーク4240およびプロバイダネットワーク4200に結合されたハードウェア仮想化サ
ービス4220を介して仮想コンピューティングシステム4292を実装する能力を提供
し得る。いくつかの実施形態では、ハードウェア仮想化サービス4220は、1つ以上の
API4202、例えばウェブサービスインターフェースを提供することができ、それを
介してクライアントネットワーク4250は例えばコンソール4294を介してハードウ
ェア仮想化サービス4220によって提供される機能にアクセスできる。いくつかの実施
形態では、プロバイダネットワーク4200において、クライアントネットワーク425
0の各仮想コンピューティングシステム4292は、リース、レンタルまたは他の方法で
クライアントネットワーク4250に提供される計算リソース4224に対応し得る。
【0073】
仮想コンピューティングシステム4292および/または別のクライアントデバイス4
290、またはコンソール4294の、インスタンスから、クライアントは、例えば1つ
以上のAPI4202を介してストレージ仮想化サービス4210の機能にアクセスして
、プロバイダネットワーク4200によって提供される仮想データストア4216からデ
ータにアクセスし、仮想データストア4216にデータを格納することができる。いくつ
かの実施形態では、少なくともいくつかのデータ、例えば頻繁にアクセスされるまたは重
要なデータをローカルにキャッシュすることができ、1つ以上の通信チャネルを介して仮
想化データストアサービス4210と通信することができる仮想化データストアゲートウ
ェイ(図示世せず)をクライアントネットワーク4250に設けて、一次データストア(
仮想化データストア4216)が保持されるように、ローカルキャッシュから新たなまた
は修正されたデータをアップロードすることができる。いくつかの実施形態では、ユーザ
は、仮想コンピューティングシステム4292を介して、および/または別のクライアン
トデバイス4290上で、ローカル仮想化ストレージ4298としてユーザに見える仮想
データストア4216のボリュームをマウントおよびアクセスすることができる。
【0074】
図13には示されていないが、仮想化サービスはまた、API4202を介してプロバ
イダネットワーク4200内のリソースインスタンスからアクセスされてもよい。例えば
、クライアント、機器サービスプロバイダ、または他のエンティティは、プロバイダネッ
トワーク4200上のそれぞれの仮想ネットワーク内からAPI4202を介して仮想化
サービスにアクセスして、仮想ネットワーク内または別の仮想ネットワーク内の1つ以上
のリソースインスタンスのアロケーションを要求し得る。ネットワーク。
【0075】
図14は、いくつかの実施形態による、プロバイダネットワーク上の仮想ネットワーク
を少なくともいくつかのクライアントに提供する例示的なプロバイダネットワークを示す
図である。例えば、プロバイダネットワーク4300上のクライアントの仮想ネットワー
ク4360は、クライアントネットワーク4350上のそれらの既存のインフラストラク
チャ(例えば、デバイス4352)を論理的に分離されたリソースインスタンスのセット
(例えば、VM4324Aおよび4324Bならびにストレージ4318Aおよび431
8B)に接続し、セキュリティサービス、ファイアウォール、侵入検知システムなどの管
理機能を拡張して、それらのリソースインスタンスを含めることを可能にする。
【0076】
クライアントの仮想ネットワーク4360は、プライベート通信チャネル4342を介
してクライアントネットワーク4350に接続することができる。プライベート通信チャ
ネル4342は、例えば、ネットワークトンネリング技術または中間ネットワーク434
0を介した他の何らかの技術に従って実装されるトンネルであり得る。中間ネットワーク
は、例えば、共有ネットワークまたはインターネットなどの公衆ネットワークとすること
ができる。あるいは、プライベート通信チャネル4342は、仮想ネットワーク4360
とクライアントネットワーク4350との間の直接の専用接続を介して実装されてもよい
。
【0077】
公衆ネットワークは、複数のエンティティへのオープンアクセスおよびそれらの間の相
互接続性を提供するネットワークとして広く定義され得る。インターネット、またはワー
ルドワイドウェブ(World Wide Web,WWW)は公衆ネットワークの一例
である。共有ネットワークは、アクセスが一般に制限されていない公衆ネットワークとは
対照的に、アクセスが2つ以上のエンティティに制限されるネットワークとして広く定義
され得る。共有ネットワークは、例えば、1つ以上のローカルエリアネットワーク(LA
N)および/またはデータセンターネットワーク、または相互接続されて広域ネットワー
ク(wide area network,WAN)を形成する2つ以上のLANもしく
はデータセンターネットワークを含み得る。共有ネットワークの例には、企業ネットワー
クおよび他の企業ネットワークが含まれ得るが、これらに限定されない。共有ネットワー
クは、ローカルエリアをカバーするネットワークからグローバルネットワークまで、範囲
内のどこにあってもよい。共有ネットワークは、少なくともいくつかのネットワークイン
フラストラクチャをパブリックネットワークと共有することができ、共有ネットワークは
、パブリックネットワークを含むことができる1以上の他のネットワークに、他のネット
ワークと共有ネットワークとの間の制御されるアクセスによって結合することができるこ
とに留意されたい。共有ネットワークは、インターネットなどの公衆ネットワークとは対
照的に、プライベートネットワークと見なすこともできる。いくつかの実施形態では、共
有ネットワークまたは公衆ネットワークのいずれかが、プロバイダネットワークとクライ
アントネットワークとの間の中間ネットワークとして機能し得る。
【0078】
プロバイダネットワーク4300上のクライアントに対して仮想ネットワーク4360
を確立するために、1つ以上のリソースインスタンス(例えば、VM4324Aおよび4
324Bならびにストレージ4318Aおよび4318B)を仮想ネットワーク4360
に割り当てることができる。他のリソースインスタンス(例えば、ストレージ4318C
およびVM4324C)は、他のクライアント使用のためにプロバイダネットワーク43
00上で利用可能なままであり得ることに留意されたい。ある範囲のパブリックIPアド
レスも仮想ネットワーク4360にアロケートすることができる。さらに、プロバイダネ
ットワーク4300の1つ以上のネットワーキングデバイス(ルータ、スイッチなど)を
仮想ネットワーク4360にアロケートすることができる。プライベート通信チャネル4
342は、仮想ネットワーク4360のプライベートゲートウェイ4362とクライアン
トネットワーク4350のゲートウェイ4356との間に確立されてもよい。
【0079】
いくつかの実施形態では、プライベートゲートウェイ4362に加えて、またはその代
わりに、仮想ネットワーク4360は、プライベート通信チャネル4342を介する代わ
りに、またはそれに加えて、仮想ネットワーク4360内のリソースが中間ネットワーク
4340を介してエンティティ(例えば、ネットワークエンティティ4344)と直接通
信でき、その逆もできるようにするパブリックゲートウェイ4364を含み得る。
【0080】
仮想ネットワーク4360は、必ずというわけではないが、2つ以上のサブネットワー
クまたはサブネット4370に細分することができる。例えば、プライベートゲートウェ
イ4362およびパブリックゲートウェイ4364の両方を含む実装形態では、仮想ネッ
トワーク4360は、プライベートゲートウェイ4362を通じて到達可能なリソース(
この例ではVM4324Aおよびストレージ4318A)を含むサブネット4370Aと
、パブリックゲートウェイ4364を介して到達可能なリソース(この例では、VM43
24Bおよびストレージ4318B)を含むサブネット4370Bとに細分することがで
きる。
【0081】
クライアントは、仮想ネットワーク4360内の特定のリソースインスタンスに特定の
クライアントパブリックIPアドレスを割り当てることができる。中間ネットワーク43
40上のネットワークエンティティ4344はその後、クライアントによって公開された
パブリックIPアドレスにトラフィックを送信することができ、トラフィックは、プロバ
イダネットワーク4300によって、関連付けられたリソースインスタンスにルーティン
グされる。リソースインスタンスからの戻りトラフィックは、プロバイダネットワーク4
300によってルーティングされ、中間ネットワーク4340を介してネットワークエン
ティティ4344に戻される。リソースインスタンスとネットワークエンティティ434
4との間のトラフィックをルーティングすることは、リソースインスタンスのパブリック
IPアドレスとプライベートIPアドレスとの間で変換するためのネットワークアドレス
変換を必要とし得ることに留意されたい。
【0082】
いくつかの実施形態は、
図14に示されるように、クライアントがクライアントの仮想
ネットワーク4360内のパブリックIPアドレスをクライアントの外部ネットワーク4
350上のデバイスに再マッピングすることを可能にし得る。パケットが(例えば、ネッ
トワークエンティティ4344から)受信されると、ネットワーク4300は、パケット
によって示されたデスティネーションIPアドレスが外部ネットワーク4350上のエン
ドポイントに再マッピングされたと判断し、プライベート通信チャネル4342を介して
、または中間ネットワーク4340を介して、パケットのそれぞれのエンドポイントへの
ルーティングを処理する。応答トラフィックは、エンドポイントからプロバイダネットワ
ーク4300を介してネットワークエンティティ4344にルーティングされてもよく、
あるいはクライアントネットワーク4350によってネットワークエンティティ4344
に直接ルーティングされてもよい。ネットワークエンティティ4344の観点からは、あ
たかもネットワークエンティティ4344がプロバイダネットワーク4300上のクライ
アントのパブリックIPアドレスと通信しているように見える。しかしながら、ネットワ
ークエンティティ4344は実際にはクライアントネットワーク4350上のエンドポイ
ントと通信している。
【0083】
図14は、中間ネットワーク4340上およびプロバイダネットワーク4300の外部
にあるネットワークエンティティ4344を示しているが、ネットワークエンティティは
、プロバイダネットワーク4300上のエンティティとすることができる。例えば、プロ
バイダネットワーク4300によって提供されるリソースインスタンスのうちの1つは、
クライアントによって公開されたパブリックIPアドレスにトラフィックを送信するネッ
トワークエンティティであり得る。
【0084】
図15は、いくつかの実施形態による、プロバイダネットワーク上の例示的な仮想ネッ
トワーク内のサブネットおよびセキュリティグループを示す図である。いくつかの実施形
態では、
図14のプロバイダネットワーク4300などのプロバイダネットワークは、ク
ライアントが、サブネット4414内またはサブネット4414間で、クライアントの仮
想ネットワーク4410内の仮想セキュリティグループ4416を確立および管理するこ
とを可能にし得る。セキュリティグループ4416は、リソースインスタンス4418の
論理グループであり、セキュリティグループルールに従ってセキュリティグループ441
6内の1つ以上のリソースインスタンス4418に到達することを可能にされたトラフィ
ックを制御する仮想ファイアウォールとして機能する。クライアントは、仮想ネットワー
ク4410内に1つ以上のセキュリティグループ4416を確立し、仮想ネットワーク4
410内の各リソースインスタンス4418をセキュリティグループ4416の1つ以上
に関連付けることができる。いくつかの実施形態では、クライアントは、セキュリティグ
ループ4416に関連付けられたリソースインスタンス4418に到達することを可能に
されたインバウンドトラフィックを制御する各セキュリティグループ4416のルールを
確立および/または変更することができる。
【0085】
図15に示す例示的な仮想ネットワーク4410では、仮想ネットワーク4410は2
つのサブネット4414Aおよび4414Bに細分される。仮想ネットワーク4410へ
のアクセスは、ゲートウェイ4430によって制御される。各サブネット4414は、そ
れぞれのサブネット4414上のリソースインスタンス4418へ(および、からの)ト
ラフィックをルーティングするように動作する少なくとも1つのルータ4412を含むこ
とができる。いくつかの実施形態では、ネットワークアクセス制御リスト(access
control list,ACL)を使用して、ルータ4412のサブネット441
4へのアクセスを制御することができる。
図15に示す例では、リソースインスタンス4
418A~4418Eはサブネット4414A上にあり、リソースインスタンス4418
F~4418Jはサブネット4414B上にある。クライアントは、4つのセキュリティ
グループ4416A~4416Dを確立している。
図15に示されるように、セキュリテ
ィグループは、サブネット4414A上のリソースインスタンス4418Aおよび441
8Bとサブネット4414B上のリソースインスタンス4418Fとを含むセキュリティ
グループ4416Aがそうであるように、サブネット4414間に広がってもよい。さら
に、リソースインスタンス4418は、セキュリティグループ4416Aおよび4416
Bに含まれるリソースインスタンス4418Aと同様に、2つ以上のセキュリティグルー
プ4416に含まれてもよい。
【0086】
本開示の実施形態は、以下の節を考慮して説明され得る。
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に記載の非一時的コンピュータ可読記憶媒体。
【0087】
例示的なシステム
いくつかの実施形態では、本明細書に記載のプロバイダネットワーク環境において仮想
ネットワークを検証するための方法および装置の一部または全部を実装するシステムは、
1つ以上のコンピュータアクセス可能媒体を含む、またはこれにアクセスするように構成
された、例えば、
図16に示すコンピュータシステム5000などの汎用コンピュータシ
ステムを含み得る。図示の実施形態では、コンピュータシステム5000は、入出力(I
/O)インターフェース5030を介してシステムメモリ5020に結合された1つ以上
のプロセッサ5010を含む。コンピュータシステム5000は、I/Oインターフェー
ス5030に結合されたネットワークインターフェース5040をさらに含む。
【0088】
様々な実施形態において、コンピュータシステム5000は、1つのプロセッサ501
0を含む単一プロセッサシステム、またはいくつかのプロセッサ5010(例えば、2、
4、8、または他の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ
5010は、命令を実行することができる任意の適切なプロセッサであり得る。例えば、
様々な実施形態において、プロセッサ5010は、x86、PowerPC、SPARC
、またはMIPS ISA、または任意の他の適切なISAなどの任意の様々な命令セッ
トアーキテクチャ(instruction set architecture,IS
A)を実装する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムで
は、プロセッサ5010のそれぞれは、必ずしもそうとは限らないが一般的に同じISA
を実装することができる。
【0089】
システムメモリ5020は、プロセッサ5010によってアクセス可能な命令およびデ
ータを格納するように構成され得る。様々な実施形態において、システムメモリ5020
は、スタティックランダムアクセスメモリ(static random access
memory,SRAM)、シンクロナスダイナミックRAM(synchronou
s dynamic RAM,SDRAM)、不揮発性/フラッシュ型メモリ、または任
意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。図示の
実施形態では、プロバイダネットワーク環境においてクライアントのリソースに対してク
ライアント定義ルールを提供するための上述の方法、技法、およびデータなどの1つ以上
の所望の機能を実装するプログラム命令およびデータは、コード5025およびデータ5
026としてシステムメモリ5020内に格納されて示される。
【0090】
一実施形態では、I/Oインターフェース5030は、プロセッサ5010、システム
メモリ5020、およびネットワークインターフェース5040または他の周辺インター
フェースを含むデバイス内の任意の周辺デバイスの間のI/Oトラフィックを調整するよ
うに構成され得る。いくつかの実施形態では、I/Oインターフェース5030は、ある
構成要素(例えば、システムメモリ5020)からのデータ信号を別の構成要素(例えば
、プロセッサ5010)による使用に適したフォーマットに変換するために必要な任意の
プロトコル、タイミングまたは他のデータ変換を実行し得る。いくつかの実施形態では、
I/Oインターフェース5030は、例えば、ペリフェラルコンポーネントインターコネ
クト(Peripheral Component Interconnect,PCI
)バス規格またはユニバーサルシリアルバス(Universal Serial Bu
s,USB)規格の変形など、様々なタイプの周辺バスを介して付設されたデバイスのサ
ポートを含むことができる。いくつかの実施形態において、I/Oインターフェース50
30の機能は、例えば、ノースブリッジおよびサウスブリッジなどの2つ以上の別々の構
成要素に分割され得る。また、いくつかの実施形態では、システムメモリ5020へのイ
ンターフェースなど、I/Oインターフェース5030の機能の一部または全部をプロセ
ッサ5010に直接組み込むことができる。
【0091】
ネットワークインターフェース5040は、コンピュータシステム5000と、例えば
図1から
図15に示されるような他のコンピュータシステムまたはデバイスなどのネット
ワーク5050に付設された他のデバイス5060との間でデータを交換することを可能
にするように構成され得る。様々な実施形態において、ネットワークインターフェース5
040は、例えば、イーサネットネットワークの種類など、任意の適切な有線または無線
の一般データネットワークを介した通信をサポートしてもよい。さらに、ネットワークイ
ンターフェース5040は、アナログ音声ネットワークまたはデジタルファイバ通信ネッ
トワークなどの電気通信/電話ネットワーク、ファイバチャネルSANなどのストレージ
エリアネットワーク、または任意の他の適切な種類のネットワークおよび/またはプロト
コルを介した通信をサポートし得る。
【0092】
いくつかの実施形態では、システムメモリ5020は、プロバイダネットワーク環境に
おいて仮想ネットワークを検証するための方法および装置の実施形態を実装するための、
図1~
図10に関して上述したプログラム命令およびデータを格納するように構成された
コンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、他の実施形態で
は、プログラム命令および/またはデータは、異なるタイプのコンピュータアクセス可能
媒体上で受信、送信または記憶されてもよい。一般的に言えば、コンピュータアクセス可
能媒体は、I/Oインターフェース5030を介してコンピュータシステム5000に結
合されたディスクまたはDVD/CDなどの磁気または光学媒体などの非一時的記憶媒体
またはメモリ媒体を含むことができる。非一時的コンピュータアクセス可能記憶媒体はま
た、システムメモリ5020または他のタイプのメモリとしてコンピュータシステム50
00のいくつかの実施形態に含まれ得る、RAM(例えば、SDRAM、DDR SDR
AM、RDRAM、SRAMなど)、ROMなどのような任意の揮発性または不揮発性媒
体を含み得る。さらに、コンピュータアクセス可能媒体は、ネットワークインターフェー
ス5040を介して実装され得るような、ネットワークおよび/または無線リンクなどの
通信媒体を介して伝達される、電気信号、電磁気信号、またはデジタル信号などの伝送媒
体または信号を含み得る。
【0093】
結論
様々な実施形態は、コンピュータアクセス可能媒体上で前述の説明に従って実装された
命令および/またはデータを受信、送信または記憶することをさらに含むことができる。
一般的に言えば、コンピュータアクセス可能媒体は、ディスクまたはDVD/CD-RO
Mなどの磁気または光媒体、RAM(例えば、SDRAM、DDR、RDRAM、SRA
Mなど)、ROMなどの揮発性または不揮発性媒体、ならびにネットワークおよび/また
は無線リンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、またはデジタ
ル信号などの伝送媒体または信号を含むことができる。
【0094】
図面に示され、本明細書に記載されるような様々な方法は方法の例示的な実施形態を表
す。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装することが
できる。方法の順序は変更されてもよく、様々な要素が追加、並べ替え、結合、省略、修
正などされてもよい。
【0095】
本開示の恩恵を受ける当業者に明らかであるように、様々な修正および変更がなされ得
る。そのような修正および変更をすべて包含し、したがって上記の説明を限定的な意味で
はなく例示的な意味で見なすことを意図している。
【手続補正書】
【提出日】2022-03-31
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサ及びメモリを含む1つ以上のコンピューティングデバイスを備えるシステムであって、前記プロセッサ及び前記メモリは、仮想ネットワーク検証サービスを実装するように構成され、前記仮想ネットワーク検証サービスは:
クライアントから仮想ネットワークに対するクエリを受信し、前記クエリは、前記仮想ネットワークに関する1つ以上の制約問題として表現され、
前記仮想ネットワークのためのエンコードされた仮想ネットワーキングルールを取得し、前記仮想ネットワーキングルールは、宣言型論理プログラミング言語に従ってエンコードされ、
前記仮想ネットワークのエンコードされた記述を取得し、
制約ソルバーエンジンを使用して、前記エンコードされた仮想ネットワーキングルールに従って、前記仮想ネットワークの前記エンコードされた記述に対するクエリを解決し、
前記仮想ネットワークに対するクエリ解決の結果を前記クライアントに提供する、
ように構成される、システム。
【請求項2】
前記仮想ネットワーク検証サービスは、さらに、
前記仮想ネットワークの前記エンコードされた記述に対する前記クエリ解決の結果に基づいて、前記クエリによって指定された制約を満たす前記仮想ネットワークのための構成を生成する、
ように構成される、請求項1に記載のシステム。
【請求項3】
前記仮想ネットワークのためのエンコードされた仮想ネットワーキングルールを取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記仮想ネットワークのためのルールを取得し、
前記仮想ネットワークのための前記ルールを前記宣言型論理プログラミング言語に従ってエンコードし、前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを生成する、
ように構成される、請求項1に記載のシステム。
【請求項4】
前記仮想ネットワークの前記エンコードされた記述を取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記仮想ネットワークに対する記述的情報を取得し、
前記仮想ネットワークに対する前記記述的情報を前記宣言型論理プログラミング言語に従ってエンコードし、前記仮想ネットワークの前記エンコードされた記述を生成する、
ように構成される、請求項1に記載のシステム。
【請求項5】
前記仮想ネットワークに対する前記記述的情報を取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記クライアントから前記仮想ネットワークに対する前記記述的情報を受信する、
ように構成される、請求項4に記載のシステム。
【請求項6】
前記仮想ネットワークに対する前記記述的情報を取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記クライアントから、前記仮想ネットワークに対する前記記述的情報を1つ以上のプロバイダネットワークサービスから得るための許可を取得し、
前記1つ以上のプロバイダネットワークサービスから、前記プロバイダネットワーク上の前記仮想ネットワークに対する前記記述的情報を取得する、
ように構成される、請求項4に記載のシステム。
【請求項7】
前記仮想ネットワーク検証サービスは、さらに、
前記仮想ネットワークに対するネットワーキングプリミティブの指定仕様を取得する、
ように構成され、
前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティブに少なくとも部分的に基づいて、前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを生成する、
ように構成され、
前記仮想ネットワークの前記エンコードされた記述を取得するために、前記仮想ネットワーク検証サービスは、さらに、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティブに少なくとも部分的に基づいて、前記仮想ネットワークの前記エンコードされた記述を生成する、
ように構成される、請求項1に記載のシステム。
【請求項8】
1つ以上のコンピューティングデバイスによって実装される仮想ネットワーク検証サービスによって実行される方法であって、以下のステップ:
クライアントから仮想ネットワークに対するクエリを受信するステップであって、前記クエリは、前記仮想ネットワークに関する1つ以上の制約問題として表現される、ステップと、
前記仮想ネットワークのためのエンコードされた仮想ネットワーキングルールを取得するステップであって、前記仮想ネットワーキングルールは宣言型論理プログラミング言語に従ってエンコードされている、ステップと
前記仮想ネットワークの前記エンコードされた記述を取得するステップと、
制約ソルバーエンジンを使用して、前記エンコードされた仮想ネットワーキングルールに従って、前記仮想ネットワークの前記エンコードされた記述に対する前記クエリを解決するステップと、
前記仮想ネットワークに対するクエリ解決の結果を前記クライアントに提供するステップ、
を備える、方法。
【請求項9】
さらに、前記仮想ネットワークの前記エンコードされた記述に対する前記クエリ解決の結果に基づいて、前記クエリによって指定された制約を満たす前記仮想ネットワークの構成を生成するステップ、
ことを含む、請求項8に記載の方法。
【請求項10】
前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを取得するステップは、さらに、
前記仮想ネットワークのためのルールを取得するステップと、
前記仮想ネットワークのためのルールを前記宣言型論理プログラミング言語に従ってエンコードし、前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを生成するステップ、
を含む、請求項8に記載の方法。
【請求項11】
前記仮想ネットワークの前記エンコードされた記述を取得するステップは、さらに、
前記仮想ネットワークに対する記述情報を取得するステップと、
前記仮想ネットワークに対する前記記述情報を前記宣言型論理プログラミング言語に従ってエンコードし、前記仮想ネットワークの前記エンコードされた記述を生成するステップ、
を備える、請求項8に記載の方法。
【請求項12】
前記仮想ネットワークに対する前記記述情報を取得するステップは、さらに、
前記クライアントから前記仮想ネットワークに対する前記記述情報を受信するステップ、
を備える、請求項11に記載の方法。
【請求項13】
前記仮想ネットワークに対する前記記述情報を取得するステップは、さらに、
前記クライアントから、前記仮想ネットワークに対する前記記述情報を1つ以上のプロバイダネットワークサービスから取得する許可を取得するステップと、
前記1つ以上のプロバイダネットワークサービスから、前記プロバイダネットワーク上の前記仮想ネットワークに対する前記記述情報を取得するステップ、
を備える、請求項11に記載の方法。
【請求項14】
前記仮想ネットワークに対するネットワーキングプリミティブの指定仕様を取得するステップをさらに備え、
前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを取得するステップが、さらに、
宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティブに少なくとも部分的に基づいて、前記仮想ネットワークのための前記エンコードされた仮想ネットワーキングルールを生成するステップを備え、
前記仮想ネットワークの前記エンコードされた記述を取得するステップが、さらに、
前記宣言型論理プログラミング言語に従って、前記指定されたネットワーキングプリミティブに少なくとも部分的に基づいて、前記仮想ネットワークの前記エンコードされた記述を生成するステップを備える、
請求項8に記載の方法。
【請求項15】
プログラム命令を格納した1つ以上の非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は、仮想ネットワーク検証サービスの1つ以上のプロセッサ上またはプロセッサ間で実行されると、前記1つ以上のプロセッサに、
クライアントから仮想ネットワークに対するクエリを受信するステップであって、前記クエリは、前記仮想ネットワークに関する1つ以上の制約問題として表現される、ステップと、
前記仮想ネットワークのためのエンコードされた仮想ネットワーキングルールを取得するステップであって、前記仮想ネットワーキングルールは、宣言型論理プログラミング言語に従ってエンコードされる、ステップと、
前記仮想ネットワークのエンコードされた記述を取得するステップと、
制約ソルバーエンジンを使用して、前記エンコードされた仮想ネットワーキングルールに従って、前記仮想ネットワークの前記エンコードされた記述に対するクエリを解決するステップと、
前記仮想ネットワークに対するクエリ解決の結果を前記クライアントに提供するステップと、
を実行させる、
非一時的コンピュータ可読記憶媒体。
【外国語明細書】