(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】画像処理装置のルーティングポリシー
(51)【国際特許分類】
H04L 45/76 20220101AFI20240723BHJP
H04L 45/24 20220101ALI20240723BHJP
【FI】
H04L45/76
H04L45/24
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023579271
(86)(22)【出願日】2022-06-23
(85)【翻訳文提出日】2024-02-20
(86)【国際出願番号】 US2022034788
(87)【国際公開番号】W WO2022271990
(87)【国際公開日】2022-12-29
(32)【優先日】2021-06-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-05-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブラール,ジャグウィンダー・シング
(72)【発明者】
【氏名】ベッカー,デイビッド・デイル
(72)【発明者】
【氏名】シュレック,ルーカス
(72)【発明者】
【氏名】ユッカー,ジェイコブ・ロバート
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030KA05
5K030LB05
5K030MD02
(57)【要約】
クラウド環境において、いくつかのホストマシン上でホストされている画像処理装置(GPU)のためのルーティングメカニズムが、本明細書において論じられる。ホストマシンのGPUによって送信され、ネットワークデバイスによって受信されたパケットについて、ネットワークデバイスは、パケットが受信されたネットワークデバイスの着信ポート-リンクを決定する。ネットワークデバイスは、GPUルーティングポリシーに基づいて、着信ポート-リンクに対応するネットワークデバイスの発信ポート-リンクを特定する。GPUルーティングポリシーは、パケットを受信する前に事前に構成され、ネットワークデバイスの一意の発信ポート-リンクに対するネットワークデバイスの各着信ポート-リンクのマッピングを確立する。パケットは、ネットワークデバイスの発信ポート-リンクで転送される。
【特許請求の範囲】
【請求項1】
方法であって、
ホストマシンの画像処理装置(GPU)によって送信され、ネットワークデバイスによって受信されるパケットについて、
前記ネットワークデバイスが、前記パケットが受信された前記ネットワークデバイスの着信ポート-リンクを決定することと、
前記ネットワークデバイスが、GPUルーティングポリシーに基づいて、前記着信ポート-リンクに対応する発信ポート-リンクを特定することと、
を含み、
前記GPUルーティングポリシーは、前記パケットを受信する前に事前に構成され、前記ネットワークデバイスの一意の発信ポート-リンクに対する前記ネットワークデバイスの各着信ポート-リンクのマッピングを確立し、
前記方法は、前記パケットについて、
前記ネットワークデバイスが、前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送すること
をさらに含む、方法。
【請求項2】
前記転送するステップは、
前記ネットワークデバイスが、前記ネットワークデバイスの前記発信ポート-リンクに関連する条件を検証することと、
前記条件が満たされたことに応じて、前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送することと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記条件は、前記ネットワークデバイスの前記発信ポート-リンクがアクティブであるか否かを決定することに対応する、請求項2に記載の方法。
【請求項4】
前記条件が満たされないことに応じて、
前記ネットワークデバイスが、前記パケットに関連するフロー情報を取得することと、
前記ネットワークデバイスが、前記フロー情報に基づいて、前記ネットワークデバイスの新たな発信ポート-リンクを取得するために、等コストマルチパスアルゴリズムを実行することと、
前記ネットワークデバイスが、前記ネットワークデバイスの前記新たな発信ポート-リンクで前記パケットを転送することと、
をさらに含む、請求項2に記載の方法。
【請求項5】
前記パケットに関連する前記フロー情報は、送信元ポート、宛先ポート、送信元IPアドレス、および宛先IPアドレスに関連する情報を少なくとも含む、請求項4に記載の方法。
【請求項6】
前記ネットワークデバイスは、トップオブラック(TOR)スイッチである、請求項1に記載の方法。
【請求項7】
前記TORおよび前記ホストマシンは、ラックに含まれ、前記ホストマシンは、複数のリンクを介して前記TORと通信可能に連結され、各リンクは、ネットワークインターフェースカードに関連付けられる、請求項6に記載の方法。
【請求項8】
前記ネットワークデバイスの前記着信ポート-リンクは、前記ホストマシンを前記TORに接続する第1のリンクであり、前記ネットワークデバイスの前記発信ポート-リンクは、前記TORをスパインスイッチに接続する第2のリンクである、請求項6に記載の方法。
【請求項9】
前記パケットは、GPUワークロードに属する、請求項1に記載の方法。
【請求項10】
ネットワークデバイスであって、
プロセッサと、
命令を含むメモリと、
を備え、前記命令は、前記プロセッサによって実行されると、前記ネットワークデバイスに、少なくとも、
ホストマシンの画像処理装置(GPU)によって送信され、前記ネットワークデバイスによって受信されるパケットについて、
前記パケットが受信された前記ネットワークデバイスの着信ポート-リンクを決定することと、
GPUルーティングポリシーに基づいて、前記着信ポート-リンクに対応する発信ポート-リンクを特定することと、
を行わせ、
前記GPUルーティングポリシーは、前記パケットを受信する前に事前に構成され、前記ネットワークデバイスの一意の発信ポート-リンクに対する前記ネットワークデバイスの各着信ポート-リンクのマッピングを確立し、
前記命令は、前記プロセッサによって実行されると、前記ネットワークデバイスに、少なくとも、
前記パケットについて、
前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送すること
をさらに行わせる、ネットワークデバイス。
【請求項11】
前記ネットワークデバイスの前記発信ポート-リンクに関連する条件を検証し、
前記条件が満たされたことに応じて、前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送する
ようにさらに構成されている、請求項10に記載のネットワークデバイス。
【請求項12】
前記条件は、前記ネットワークデバイスの前記発信ポート-リンクがアクティブであるか否かを決定することに対応する、請求項11に記載のネットワークデバイス。
【請求項13】
前記条件が満たされないことに応じて、
前記パケットに関連するフロー情報を取得し、
前記フロー情報に基づいて、前記ネットワークデバイスの新たな発信ポート-リンクを取得するために、等コストマルチパスアルゴリズムを実行し、
前記ネットワークデバイスの前記新たな発信ポート-リンクで前記パケットを転送する
ようにさらに構成されている、請求項11に記載のネットワークデバイス。
【請求項14】
前記パケットに関連する前記フロー情報は、送信元ポート、宛先ポート、送信元IPアドレス、および宛先IPアドレスに関連する情報を少なくとも含む、請求項13に記載のネットワークデバイス。
【請求項15】
前記ネットワークデバイスは、トップオブラック(TOR)スイッチである、請求項10に記載のネットワークデバイス。
【請求項16】
前記TORおよび前記ホストマシンは、ラックに含まれ、前記ホストマシンは、複数のリンクを介して前記TORと通信可能に連結され、各リンクは、ネットワークインターフェースカードに関連付けられる、請求項15に記載のネットワークデバイス。
【請求項17】
前記ネットワークデバイスの前記着信ポート-リンクは、前記ホストマシンを前記TORに接続する第1のリンクであり、前記ネットワークデバイスの前記発信ポート-リンクは、前記TORをスパインスイッチに接続する第2のリンクである、請求項15に記載のネットワークデバイス。
【請求項18】
前記パケットは、GPUワークロードに属する、請求項10に記載のネットワークデバイス。
【請求項19】
特定のコンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、コンピュータシステムに、
ホストマシンの画像処理装置(GPU)によって送信され、ネットワークデバイスによって受信されるパケットについて、
前記ネットワークデバイスが、前記パケットが受信された前記ネットワークデバイスの着信ポート-リンクを決定することと、
前記ネットワークデバイスが、GPUルーティングポリシーに基づいて、前記着信ポート-リンクに対応する発信ポート-リンクを特定することと、
を行わせ、
前記GPUルーティングポリシーは、前記パケットを受信する前に事前に構成され、前記ネットワークデバイスの一意の発信ポート-リンクに対する前記ネットワークデバイスの各着信ポート-リンクのマッピングを確立し、
前記命令は、前記プロセッサによって実行されると、前記コンピュータシステムに、
前記パケットについて、
前記ネットワークデバイスが、前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送すること
をさらに行わせる、特定のコンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体。
【請求項20】
前記転送するステップは、
前記ネットワークデバイスが、前記ネットワークデバイスの前記発信ポート-リンクに関連する条件を検証することと、
前記条件が満たされたことに応じて、前記ネットワークデバイスの前記発信ポート-リンクで前記パケットを転送することと、
をさらに含む、請求項19に記載の、特定のコンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年6月25日に出願された米国仮特許出願第63/215,264号および2022年5月2日に出願された米国特許出願第17/734,833号の米国特許法第119条(e)に基づく利益および優先権を主張する。前述した出願の内容全体が、あらゆる目的のために参照によりその全体が本明細書に組み込まれる。
【0002】
分野
本開示は、クラウド環境において、いくつかのホストマシン上でホストされている画像処理装置(GPU)のためのフレームワークおよびルーティングメカニズムに関する。
【背景技術】
【0003】
背景
組織は、オンプレミスのハードウェアおよびソフトウェアを購入、更新、および保守するコストを削減するために、ビジネスアプリケーションおよびデータベースをクラウドに移行し続けている。高性能計算(HPC:high performance compute)アプリケーションは、特定の成果または結果を達成するために、利用可能な計算能力を常に100パーセント消費する。HPCアプリケーションは、専用のネットワークパフォーマンス、高速ストレージ、高い計算能力、および大量のメモリリソース、すなわち、今日のコモディティクラウドを構成する仮想化インフラストラクチャでは不足しているリソースを必要とする。
【0004】
クラウドインフラストラクチャサービスプロバイダは、HPCアプリケーションの要件に対処するために、より新しくかつ高速なCPUおよび画像処理装置(GPU)を提供している。通常、互いに通信するようにいくつかのホストマシン上でホストされているさまざまなGPUをプロビジョニングするために、仮想トポロジが構築される。実際には、さまざまなGPUを接続するためにリングトポロジが利用される。しかしながら、リングネットワークは、本質的に必ずブロックしている。そのため、システム全体の性能が低下する。本明細書において論じられる実施形態は、いくつかのホストマシンにわたるGPUの接続性に関するこれらおよび他の問題に対処する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
概要
本開示は、一般に、クラウド環境において、いくつかのホストマシン上でホストされている画像処理装置(GPU)のためのルーティングメカニズムに関する。本明細書では、方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を格納する非一時的コンピュータ可読記憶媒体などを含む、さまざまな実施形態について説明する。これらの例示的な実施形態は、本開示を限定または定義するためではなく、本開示の理解を助けるための例を提供するために言及するものである。詳細な説明のセクションで追加の実施形態について論じ、そこでさらなる説明を提供する。
【0006】
本開示の1つの実施形態は、方法であって、ホストマシンの画像処理装置(GPU)によって送信され、ネットワークデバイスによって受信されるパケットについて、ネットワークデバイスが、パケットが受信されたネットワークデバイスの着信ポート-リンクを決定することを含む。方法は、ネットワークデバイスが、GPUルーティングポリシーに基づいて、着信ポート-リンクに対応する発信ポート-リンクを特定することを含む。GPUルーティングポリシーは、パケットを受信する前に事前に構成され、ネットワークデバイスの一意の発信ポート-リンクに対するネットワークデバイスの各着信ポート-リンクのマッピングを確立する。方法は、ネットワークデバイスが、ネットワークデバイスの発信ポート-リンクでパケットを転送することを含む。
【0007】
本開示の一態様は、1つまたは複数のデータプロセッサと、1つまたは複数のデータプロセッサによって実行されると、1つまたは複数のデータプロセッサに本明細書に開示する1つまたは複数の方法のうちの一部またはすべてを実施させる命令を含む非一時的コンピュータ可読記憶媒体とを備えるシステムを提供する。
【0008】
本開示の別の態様は、1つまたは複数のデータプロセッサに本明細書に開示する1つまたは複数の方法のうちの一部またはすべてを実施させるように構成された命令を含む、非一時的機械可読記憶媒体に有形に具現化されたコンピュータプログラム製品を提供する。
【0009】
上述したことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付図面を参照することにより、より明らかになるであろう。
【0010】
本開示の特徴、実施形態、および利点は、以下の詳細な説明を添付の図面を参照して読むと、よりよく理解される。
【図面の簡単な説明】
【0011】
【
図1】いくつかの実施形態による、クラウドサービスプロバイダのインフラストラクチャによってホストされている仮想またはオーバーレイクラウドネットワークを示す分散環境の概要図である。
【
図2】いくつかの実施形態による、CSPI内の物理ネットワークにおける物理コンポーネントの簡略化されたアーキテクチャ図である。
【
図3】いくつかの実施形態による、ホストマシンが複数のネットワーク仮想化デバイス(NVD)に接続されているCSPI内の配置例を示す図である。
【
図4】いくつかの実施形態による、マルチテナンシをサポートするI/O仮想化を提供するための、ホストマシンとNVDとの間の接続性を示す図である。
【
図5】いくつかの実施形態による、CSPIによって提供される物理ネットワークの簡略化されたブロック図である。
【
図6】いくつかの実施形態による、CLOSネットワーク配置を組み込んだクラウドインフラストラクチャの簡略化されたブロック図である。
【
図7】いくつかの実施形態による、
図6のクラウドインフラストラクチャにおけるフロー衝突を示すシナリオ例を示す図である。
【
図8】いくつかの実施形態による、クラウドインフラストラクチャに実装されたポリシーベースのルーティングメカニズムを示す図である。
【
図9】いくつかの実施形態による、クラウドインフラストラクチャ内の異なるタイプの接続を示すクラウドインフラストラクチャのブロック図である。
【
図10】いくつかの実施形態による、クラウドインフラストラクチャに含まれるラックの構成例を示す図である。
【
図11A】いくつかの実施形態による、パケットをルーティングする際にネットワークデバイスによって実行されるステップを示すフローチャートである。
【
図11B】いくつかの実施形態による、パケットをルーティングする際にネットワークデバイスによって実行されるステップを示す別のフローチャートである。
【
図12】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図13】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図14】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図15】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図16】少なくとも1つの実施形態による、コンピュータシステム例を示すブロック図である。
【発明を実施するための形態】
【0012】
詳細な説明
以下の説明では、説明の目的で、いくつかの実施形態が完全に理解されるように、具体的な詳細を示す。しかしながら、さまざまな実施形態をこれらの具体的な詳細なしに実施してもよいことは明らかであろう。図および説明は、制限的であるようには意図されていない。「例示的な」という語は、本明細書では、「例、実例、または例証としての役割を果たす」という意味で使用する。本明細書において「例示的な」として記載する実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいかまたは有利であると解釈されるべきではない。
クラウドインフラストラクチャのアーキテクチャ例
クラウドサービスという用語は、一般に、クラウドサービスプロバイダ(CSP)により、CSPによって提供されるシステムおよびインフラストラクチャ(クラウドインフラストラクチャ)を使用して、オンデマンドで(たとえば、サブスクリプションモデルを介して)ユーザまたは顧客が利用することができるようになるサービスを指すために使用される。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは別個である。したがって、顧客は、サービスのためのハードウェアおよびソフトウェアリソースを別途購入する必要なしに、CSPによって提供されるクラウドサービスを利用することができる。クラウドサービスは、サブスクライブする顧客に、サービスを提供するために使用されるインフラストラクチャを獲得するのに投資する必要なしに、アプリケーションおよびコンピューティングリソースへの容易でスケーラブルなアクセスを提供するように設計されている。
【0013】
さまざまなタイプのクラウドサービスを提供するいくつかのクラウドサービスプロバイダがある。サービスとしてのソフトウェア(SaaS:Software-as-a-Service)、サービスとしてのプラットフォーム(PaaS:Platform-as-a-Service)、サービスとしてのインフラストラクチャ(IaaS:Infrastructure-as-a-Service)などを含む、さまざまな異なるタイプまたはモデルのクラウドサービスがある。
【0014】
顧客は、CSPによって提供される1つまたは複数のクラウドサービスにサブスクライブすることができる。顧客は、個人、組織、企業などの任意のエンティティであり得る。顧客がCSPによって提供されるサービスにサブスクライブまたは登録すると、その顧客のためにテナンシまたはアカウントが作成される。その後、顧客は、このアカウントを介して、アカウントに関連付けられたサブスクライブされた1つまたは複数のクラウドリソースにアクセスすることができる。
【0015】
上述したように、サービスとしてのインフラストラクチャ(IaaS)は、1つの特定のタイプのクラウドコンピューティングサービスである。IaaSモデルでは、CSPは、インフラストラクチャ(クラウドサービスプロバイダインフラストラクチャすなわちCSPIと称される)を提供し、顧客はこれを使用してカスタマイズ可能なネットワークを構築し、顧客のリソースをデプロイすることができる。このように、顧客のリソースおよびネットワークは、CSPによって提供されるインフラストラクチャによって分散環境においてホストされる。これは、顧客のリソースおよびネットワークが顧客によって提供されるインフラストラクチャによってホストされる従来のコンピューティングとは異なる。
【0016】
CSPIは、基盤ネットワークまたはアンダーレイネットワークとも称される物理ネットワークを形成する、さまざまなホストマシン、メモリリソース、およびネットワークリソースを含む相互接続された高性能コンピュートリソースを含むことができる。CSPIのリソースは、1つまたは複数の地理的なリージョンにわたって地理的に分散されている可能性がある1つまたは複数のデータセンタにわたって分散されている場合がある。仮想化ソフトウェアは、これらの物理リソースによって実行され、仮想化分散環境を提供することができる。仮想化により、物理ネットワーク上に(ソフトウェアベースネットワーク、ソフトウェア定義ネットワーク、仮想ネットワークとしても知られる)オーバーレイネットワークが作成される。CSPI物理ネットワークは、物理ネットワークの上に1つまたは複数のオーバーレイネットワークまたは仮想ネットワークを作成するための基礎を提供する。仮想またはオーバーレイネットワークは、1つまたは複数の仮想クラウドネットワーク(VCN)を含むことができる。仮想ネットワークは、ソフトウェア仮想化技術(たとえば、ハイパーバイザ、ネットワーク仮想化デバイス(NVD)(たとえば、スマートNIC)によって実行される機能、トップオブラック(TOR)スイッチ、NVDによって実行される1つまたは複数の機能を実装するスマートTOR、および他のメカニズム)を使用して実装されて、物理ネットワークの上で実行することができるネットワーク抽象化のレイヤを作成する。仮想ネットワークは、ピアツーピアネットワーク、IPネットワークなどを含む、多くの形態をとることができる。仮想ネットワークは、通常、レイヤ3IPネットワークまたはレイヤ2VLANのいずれかである。このような仮想またはオーバーレイネットワーキングの方法は、仮想またはオーバーレイレイヤ3ネットワーキングと称されることが多い。仮想ネットワークのために開発されたプロトコルの例としては、IP-in-IP(または汎用ルーティングカプセル化(GRE:Generic Routing Encapsulation))、仮想拡張可能LAN(VXLAN:Virtual Extensible LAN-IETF RFC7348)、仮想プライベートネットワーク(VPN:Virtual Private Network)(たとえば、MPLSレイヤ3仮想プライベートネットワーク(RFC 4364))、VMwareのNSX、GENEVE(汎用ネットワーク仮想化カプセル化(Generic Network Virtualization Encapsulation))などが挙げられる。
【0017】
IaaSの場合、CSPによって提供されたインフラストラクチャ(CSPI)は、公衆ネットワーク(たとえば、インターネット)を介して仮想化コンピューティングリソースを提供するように構成することができる。IaaSモデルにおいて、クラウドコンピューティングサービスプロバイダは、インフラストラクチャコンポーネント(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザレイヤ)など)をホストすることができる。場合によっては、IaaSプロバイダは、それらのインフラストラクチャコンポーネントに付随する種々のサービス(たとえば、課金、監視、ロギング、セキュリティ、負荷分散、およびクラスタリングなど)も提供することができる。したがって、これらのサービスがポリシー駆動型である可能性があるため、IaaSユーザは、負荷分散を駆動するためのポリシーを実装して、アプリケーションの可用性および性能を維持することができる可能性がある。CSPIは、インフラストラクチャおよび一連の補完的なクラウドサービスを提供し、これらによって、顧客は、可用性の高いホスト型分散環境で広範囲のアプリケーションおよびサービスを構築し、実行することができる。CSPIは、顧客のオンプレミスネットワークからなど、さまざまなネットワーク拠点から安全にアクセスすることができる柔軟な仮想ネットワーク上で高性能のコンピュートリソースおよび能力ならびに記憶容量を提供する。顧客がCSPによって提供されるIaaSサービスをサブスクライブまたは登録すると、その顧客のために作成されたテナンシは、CSPI内のセキュアで隔離されたパーティションとなり、顧客はそこで、クラウドリソースを作成、整理、管理することができる。
【0018】
顧客は、CSPIによって提供されるコンピュートリソース、メモリリソース、およびネットワーキングリソースを使用して、独自の仮想ネットワークを構築することができる。これらの仮想ネットワーク上に、コンピュートインスタンスなどの1つまたは複数の顧客リソースまたはワークロードをデプロイすることができる。たとえば、顧客は、CSPIによって提供されるリソースを使用して、仮想クラウドネットワーク(VCN)と称される1つまたは複数のカスタマイズ可能なプライベート仮想ネットワークを構築することができる。顧客は、顧客VCN上で1つまたは複数の顧客リソース、たとえばコンピュートインスタンスをデプロイすることができる。コンピュートインスタンスは、仮想マシン、ベアメタルインスタンスなどの形態をとることができる。したがって、CSPIは、顧客が可用性の高い仮想ホスト環境において広範囲のアプリケーションおよびサービスを構築および実行することを可能にするインフラストラクチャおよび一連の相補的なクラウドサービスを提供する。顧客は、CSPIによって提供される基礎となる物理リソースを管理または制御しないが、オペレーティングシステム、ストレージ、およびデプロイされたアプリケーションを制御し、場合によっては、選択されたネットワーキングコンポーネント(たとえば、ファイアウォール)を限定的に制御する。
【0019】
CSPは、顧客およびネットワーク管理者がCSPIリソースを使用してクラウドにデプロイされたリソースを構成、アクセス、および管理することを可能にするコンソールを提供することができる。いくつかの実施形態では、コンソールは、CSPIにアクセスしCSPIを管理するために使用することができるウェブベースのユーザインターフェースを提供する。いくつかの実施形態では、コンソールは、CSPによって提供されるウェブベースのアプリケーションである。
【0020】
CSPIは、シングルテナンシアーキテクチャまたはマルチテナンシアーキテクチャをサポートすることができる。シングルテナンシアーキテクチャでは、ソフトウェア(たとえば、アプリケーション、データベース)またはハードウェアコンポーネント(たとえば、ホストマシンまたはサーバ)は、単一の顧客またはテナントにサービスを提供する。マルチテナンシアーキテクチャでは、ソフトウェアまたはハードウェアコンポーネントは、複数の顧客またはテナントにサービスを提供する。したがって、マルチテナンシアーキテクチャでは、CSPIリソースは、複数の顧客またはテナントの間で共有される。マルチテナンシの状況では、各テナントのデータが分離され、他のテナントから見えないようにするために、CSPIには予防措置および保護措置が講じられる。
【0021】
物理ネットワークにおいて、ネットワークエンドポイント(「エンドポイント」)は、物理ネットワークに接続され、接続されているネットワークと双方向に通信する、コンピューティングデバイスまたはシステムを指す。物理ネットワークのネットワークエンドポイントは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、または他のタイプの物理ネットワークに接続される場合がある。物理ネットワークの従来のエンドポイントの例としては、モデム、ハブ、ブリッジ、スイッチ、ルータ、および他のネットワーキングデバイス、物理コンピュータ(またはホストマシン)などが挙げられる。物理ネットワークの各物理デバイスは、このデバイスと通信するために使用することができる固定ネットワークアドレスを有する。この固定ネットワークアドレスは、レイヤ2アドレス(たとえば、MACアドレス)、固定レイヤ3アドレス(たとえば、IPアドレス)などであり得る。仮想化環境または仮想ネットワークにおいて、エンドポイントは、物理ネットワークのコンポーネントによってホストされている(たとえば、物理ホストマシンによってホストされている)仮想マシンなどのさまざまな仮想エンドポイントを含むことができる。仮想ネットワークのこれらのエンドポイントは、オーバーレイレイヤ2アドレス(たとえば、オーバーレイMACアドレス)およびオーバーレイレイヤ3アドレス(たとえば、オーバーレイIPアドレス)などのオーバーレイアドレスによってアドレス指定される。ネットワークオーバーレイは、ネットワーク管理者がソフトウェア管理を用いて(たとえば、仮想ネットワークの制御プレーンを実装するソフトウェアを介して)ネットワークエンドポイントに関連付けられたオーバーレイアドレスを移動させることができるようにすることによって柔軟性を可能にする。したがって、物理ネットワークとは異なり、仮想ネットワークでは、ネットワーク管理ソフトウェアを使用して、オーバーレイアドレス(たとえば、オーバーレイIPアドレス)を1つのエンドポイントから別のエンドポイントに移動させることができる。仮想ネットワークが物理ネットワーク上に構築されているため、仮想ネットワークのコンポーネント間の通信には、仮想ネットワークおよび基礎となる物理ネットワークの両方が関与する。このような通信を容易にするために、CSPIのコンポーネントは、仮想ネットワークのオーバーレイアドレスを基盤ネットワークの実際の物理アドレスにまたは基盤ネットワークの実際の物理アドレスを仮想ネットワークのオーバーレイアドレスにマッピングするマッピングを学習および格納するように構成されている。そして、これらのマッピングを使用して、通信を容易にする。仮想ネットワークのルーティングを容易にするために、顧客トラフィックは、カプセル化される。
【0022】
したがって、物理アドレス(たとえば、物理IPアドレス)は、物理ネットワークのコンポーネントに関連付けられ、オーバーレイアドレス(たとえば、オーバーレイIPアドレス)は、仮想ネットワークのエンティティに関連付けられる。物理IPアドレスおよびオーバーレイIPアドレスは、いずれも実IPアドレスのタイプである。これらは、仮想IPアドレスとは別物であり、仮想IPアドレスは、複数の実IPアドレスにマッピングされる。仮想IPアドレスは、仮想IPアドレスと複数の実IPアドレスとの間の1対多マッピングを提供する。
【0023】
クラウドインフラストラクチャまたはCSPIは、世界中の1つまたは複数のリージョンの1つまたは複数のデータセンタにおいて物理的にホストされている。CSPIは、物理ネットワークまたは基盤ネットワークのコンポーネントと、物理ネットワークコンポーネントの上に構築された仮想ネットワークの仮想化コンポーネント(たとえば、仮想ネットワーク、コンピュートインスタンス、仮想マシンなど)とを含むことができる。いくつかの実施形態では、CSPIは、レルム、リージョン、および可用性ドメインにおいて編成およびホストされている。リージョンは、典型的には、1つまたは複数のデータセンタを含む局所的な地理領域である。リージョンは、一般に互いに独立しており、たとえば、国またはさらには大陸を越えて広大な距離によって分離される場合もある。たとえば、第1のリージョンはオーストラリアにあってもよく、別のリージョンは日本にあってもよく、さらに別のリージョンはインドにあってもよい、などである。CSPIリソースは、各リージョンがそれ自体の独立したCSPIリソースのサブセットを有するようにリージョン間で分割される。各リージョンは、コンピュートリソース(たとえば、ベアメタルサーバ、仮想マシン、コンテナ、および関連インフラストラクチャなど)、ストレージリソース(たとえば、ブロックボリュームストレージ、ファイルストレージ、オブジェクトストレージ、アーカイブストレージ)、ネットワーキングリソース(たとえば、仮想クラウドネットワーク(VCN)、負荷分散リソース、オンプレミスネットワークへの接続)、データベースリソース、エッジネットワーキングリソース(たとえば、DNS)、ならびにアクセス管理およびモニタリングリソースなど、一組のコアインフラストラクチャサービスおよびリソースを提供することができる。各リージョンは、一般に、そのリージョンをレルム内の他のリージョンに接続する複数の経路を有する。
【0024】
一般的に、アプリケーションは、近くのリソースを使用する方が遠くのリソースを使用するよりも高速であるため、最も多く使用されるリージョンにデプロイされる(すなわち、そのリージョンに関連するインフラストラクチャ上にデプロイされる)。また、アプリケーションは、大規模な気象システムまたは地震などのリージョン全体のイベントのリスクを軽減するための冗長性、法的管轄、税領域、および他のビジネスまたは社会的基準に対するさまざまな要件を満たすためなどの冗長性など、さまざまな理由で異なるリージョンにデプロイすることもできる。
【0025】
リージョン内のデータセンタは、さらに編成され、可用性ドメイン(AD)に細分化することができる。可用性ドメインは、あるリージョン内に位置する1つまたは複数のデータセンタに対応してもよい。リージョンは、1つまたは複数の可用性ドメインによって構成してもよい。このような分散環境において、CSPIリソースは、仮想クラウドネットワーク(VCN)などのリージョンに固有であるか、またはコンピュートインスタンスなどの可用性ドメインに固有である。
【0026】
1つのリージョン内のADは、互いに分離され、フォールトトレラントであり、同時に故障する可能性が非常に低くなるように構成されている。これは、1つのリージョン内の1つのADの障害が同じリージョン内の他のADの可用性に影響を与える可能性がほとんどないように、ADが、ネットワーキング、物理ケーブル、ケーブル経路、ケーブルエントリポイントなどの重要なインフラストラクチャリソースを共有しないようにすることによって達成される。同じリージョン内のADを低遅延、高帯域のネットワークで互いに接続することができ、これによって、他のネットワーク(たとえば、インターネット、顧客のオンプレミスネットワークなど)への高可用性接続を提供し、複数のADにおいて高可用性および災害復旧の両方のための複製システムを構築することが可能になる。クラウドサービスは、複数のADを使用して、高可用性を確保するとともに、リソースの障害から保護する。IaaSプロバイダによって提供されるインフラストラクチャが成長するに従い、より多くのリージョンおよびADを追加して容量を追加することができる。可用性ドメイン間のトラフィックは、通常、暗号化される。
【0027】
いくつかの実施形態では、リージョンは、レルムにグループ化される。レルムは、リージョンの論理的な集まりである。レルムは、互いに隔離されており、いかなるデータも共有しない。同じレルム内のリージョンは、互いに通信することができるが、異なるレルム内のリージョンは、通信することができない。CSPの顧客のテナンシまたはアカウントは、単一のレルムに存在し、そのレルムに属する1つまたは複数のリージョンにまたがることができる。典型的には、顧客がIaaSサービスをサブスクライブすると、レルム内の顧客指定リージョン(「ホーム」リージョンと称される)に、その顧客に対するテナンシまたはアカウントが作成される。顧客は、顧客のテナンシをレルム内の1つまたは複数の他のリージョンに拡張することができる。顧客は、顧客のテナンシが存在するレルム内に存在していないリージョンにアクセスすることはできない。
【0028】
IaaSプロバイダは、複数のレルムを提供することができ、各レルムは、特定の組の顧客またはユーザに対応する。たとえば、商用顧客のために商用レルムを提供することができる。別の例として、レルムは、特定の国のその国の顧客のために提供することができる。さらに別の例として、たとえば政府のために政府用レルムを提供するなどが可能である。たとえば、政府用レルムは、特定の政府のために作成することができ、商用レルムよりも高いセキュリティレベルを有することができる。たとえば、オラクルクラウドインフラストラクチャ(OCI:Oracle Cloud Infrastructure)は、目下、商用リージョン向けのレルムと、政府クラウドリージョン向けの2つのレルム(たとえば、FedRAMP認可およびIL5認可)とを提供する。
【0029】
いくつかの実施形態では、ADは、1つまたは複数のフォールトドメインに細分化することができる。フォールトドメインは、アンチアフィニティ(anti-affinity)を提供するために、AD内のインフラストラクチャリソースをグループ化したものである。フォールトドメインは、コンピュートインスタンスの分散を可能にして、コンピュートインスタンスが単一のAD内の同じ物理ハードウェア上にないようにする。これは、アンチアフィニティとして知られている。フォールトドメインは、単一の障害点を共有する一組のハードウェアコンポーネント(コンピュータ、スイッチなど)を指す。コンピュートプールは、フォールトドメインに論理的に分割される。このため、1つのフォールトドメインに影響を与えるハードウェア障害またはコンピュートハードウェア保守イベントは、他のフォールトドメインのインスタンスに影響を与えない。実施形態に応じて、各ADのフォールトドメインの数は、異なる可能性がある。たとえば、いくつかの実施形態では、各ADは、3つのフォールトドメインを含む。フォールトドメインは、AD内の論理データセンタとして機能する。
【0030】
顧客がIaaSサービスにサブスクライブすると、CSPIからのリソースは、顧客にプロビジョニングされ、顧客のテナンシに関連付けられる。顧客は、これらのプロビジョニングされたリソースを使用して、プライベートネットワークを構築し、これらのネットワーク上にリソースをデプロイすることができる。CSPIによってクラウドにホストされる顧客ネットワークは、仮想クラウドネットワーク(VCN)と称される。顧客は、顧客用に割り当てられたCSPIリソースを使用して、1つまたは複数の仮想クラウドネットワーク(VCN)をセットアップすることができる。VCNとは、仮想またはソフトウェア定義のプライベートネットワークである。顧客のVCNにデプロイされる顧客リソースは、コンピュートインスタンス(たとえば、仮想マシン、ベアメタルインスタンス)および他のリソースを含むことができる。これらのコンピュートインスタンスは、アプリケーション、ロードバランサ、データベースなどのさまざまな顧客ワークロードを表すことができる。VCN上にデプロイされたコンピュートインスタンスは、インターネットなどの公衆ネットワークを介して、パブリックアクセス可能なエンドポイント(「パブリックエンドポイント」)と通信することができ、同じVCNまたは他のVCN(たとえば、顧客の他のVCN、または顧客に属さないVCN)内の他のインスタンスと通信することができ、顧客のオンプレミスデータセンタまたはネットワークと通信することができ、サービスエンドポイント、および他のタイプのエンドポイントと通信することができる。
【0031】
CSPは、CSPIを使用してさまざまなサービスを提供することができる。いくつかの事例では、CSPIの顧客自身は、サービスプロバイダのように振る舞い、CSPIリソースを使用してサービスを提供することができる。サービスプロバイダは、識別情報(たとえば、IPアドレス、DNS名、およびポート)によって特徴付けられるサービスエンドポイントを公開することができる。顧客のリソース(たとえば、コンピュートインスタンス)は、サービスによって公開されたその特定のサービスのサービスエンドポイントにアクセスすることによって、特定のサービスを消費することができる。これらのサービスエンドポイントは、一般的に、ユーザがエンドポイントに関連付けられた公衆IPアドレスを使用して、インターネットなどの公衆通信ネットワークを介してパブリックにアクセス可能なエンドポイントである。パブリックにアクセス可能なネットワークエンドポイントは、パブリックエンドポイントと称されることもある。
【0032】
いくつかの実施形態では、サービスプロバイダは、サービスのエンドポイント(サービスエンドポイントと称されることもある)を介してサービスを公開することができる。そして、サービスの顧客は、このサービスエンドポイントを使用してサービスにアクセスすることができる。いくつかの実施態様では、サービスのために提供されるサービスエンドポイントは、そのサービスを消費しようとする複数の顧客によってアクセスすることができる。他の実施態様では、専用のサービスエンドポイントを顧客に提供して、その顧客のみがその専用サービスエンドポイントを使用してサービスにアクセスすることができるようにしてもよい。
【0033】
いくつかの実施形態では、VCNは、作成されると、そのVCNに割り当てられたプライベートオーバーレイIPアドレスの範囲(たとえば、10.0/16)である、プライベートオーバーレイクラスレスドメイン間ルーティング(CIDR:Classless Inter-Domain Routing)アドレス空間に関連付けられる。VCNは、関連するサブネット、ルートテーブル、およびゲートウェイを含む。VCNは、単一のリージョン内に存在するが、リージョンの可用性ドメインのうちの1つもしくは複数またはすべてにまたがることができる。ゲートウェイは、VCN用に構成され、VCNとVCN外部の1つまたは複数のエンドポイントとの間のトラフィックの通信を可能にする、仮想インターフェースである。VCNに対して1つまたは複数の異なるタイプのゲートウェイを構成して、異なるタイプのエンドポイント間の通信を可能にすることができる。
【0034】
VCNは、1つまたは複数のサブネットなどの1つまたは複数のサブネットワークに細分化することができる。したがって、サブネットは、VCN内で作成することができる構成単位または細分である。VCNは、1つまたは複数のサブネットを有することができる。VCN内の各サブネットは、そのVCN内の他のサブネットと重複せず、そのVCNのアドレス空間内のアドレス空間サブセットを表す、オーバーレイIPアドレス(たとえば、10.0.0.0/24および10.0.1.0/24)の連続した範囲に関連付けられる。
【0035】
各コンピュートインスタンスは、仮想ネットワークインターフェースカード(VNIC)に関連付けられ、これによって、コンピュートインスタンスは、VCNのサブネットに参加することができる。VNICは、物理ネットワークインターフェースカード(NIC)の論理表現である。一般的に、VNICは、エンティティ(たとえば、コンピュートインスタンス、サービス)と仮想ネットワークとの間のインターフェースである。VNICは、サブネットに存在し、1つまたは複数の関連するIPアドレスと、関連するセキュリティルールまたはポリシーとを有する。VNICは、スイッチ上のレイヤ2ポートに相当する。VNICは、コンピュートインスタンスと、VCN内のサブネットとに接続されている。コンピュートインスタンスに関連付けられたVNICは、コンピュートインスタンスがVCNのサブネットの一部であることを可能にし、コンピュートインスタンスが、コンピュートインスタンスと同じサブネット上にあるエンドポイントと、VCN内の異なるサブネット内のエンドポイントと、またはVCN外部のエンドポイントと通信する(たとえば、パケットを送受信する)ことを可能にする。したがって、コンピュートインスタンスに関連するVNICは、コンピュートインスタンスがVCNの内部および外部のエンドポイントといかに接続しているかを決定する。コンピュートインスタンスのVNICは、コンピュートインスタンスが作成され、VCN内のサブネットに追加されるときに作成され、そのコンピュートインスタンスに関連付けられる。サブネットは、コンピュートインスタンスのセットを含む場合、コンピュートインスタンスのセットに対応するVNICを含み、各VNICは、コンピュートインスタンスのセット内のコンピュートインスタンスに接続されている。
【0036】
コンピュートインスタンスに関連付けられたVNICを介して、各コンピュートインスタンスにはプライベートオーバーレイIPアドレスが割り当てられる。このプライベートオーバーレイIPアドレスは、コンピュートインスタンスが作成されるときにコンピュートインスタンスに関連付けられたVNICに割り当てられ、コンピュートインスタンスとの間でトラフィックをルーティングするために使用される。所与のサブネット内のすべてのVNICは、同じルートテーブル、セキュリティリスト、およびDHCPオプションを使用する。上述したように、VCN内の各サブネットは、そのVCN内の他のサブネットと重複せず、そのVCNのアドレス空間のアドレス空間サブセットを表す、オーバーレイIPアドレス(たとえば、10.0.0.0/24および10.0.1.0/24)の連続した範囲に関連付けられる。VCNの特定のサブネット上のVNICの場合、VNICに割り当てられたプライベートオーバーレイIPアドレスは、サブネットに割り当てられたオーバーレイIPアドレスの連続した範囲からのアドレスである。
【0037】
いくつかの実施形態では、コンピュートインスタンスに、プライベートオーバーレイIPアドレスに加えて、たとえば、パブリックサブネットにある場合の1つまたは複数の公衆IPアドレスなど、追加のオーバーレイIPアドレスを、任意選択的に割り当てることができる。これらの複数のアドレスは、同じVNIC上に、またはコンピュートインスタンスに関連付けられた複数のVNICにわたって割り当てられる。しかしながら、各インスタンスは、インスタンス起動中に作成され、インスタンスに割り当てられたオーバーレイプライベートIPアドレスに関連付けられた、プライマリVNICを有し、このプライマリVNICは、削除することができない。プライマリVNICと同じ可用性ドメイン内の既存のインスタンスに、セカンダリVNICと称される追加のVNICを追加することができる。すべてのVNICは、インスタンスと同じ可用性ドメインにある。セカンダリVNICは、プライマリVNICと同じVCNのサブネットにあり得るか、または同じVCNまたは異なるVCNのいずれかにある異なるサブネットにあり得る。
【0038】
コンピュートインスタンスがパブリックサブネットにある場合、任意選択的にそのコンピュートインスタンスに公衆IPアドレスを割り当てることができる。サブネットが作成されるときに、そのサブネットをパブリックサブネットまたはプライベートサブネットのいずれかとして指定することができる。プライベートサブネットとは、そのサブネット内のリソース(たとえば、コンピュートインスタンス)および関連するVNICが、パブリックオーバーレイIPアドレスを有することができないことを意味する。パブリックサブネットとは、そのサブネット内のリソースおよび関連するVNICが公衆IPアドレスを有することができることを意味する。顧客は、リージョンまたはレルム内の単一の可用性ドメイン内にまたは複数の可用性ドメインにわたって存在するサブネットを指定することができる。
【0039】
上述したように、VCNは、1つまたは複数のサブネットに細分化することができる。いくつかの実施形態では、VCNのために構成された仮想ルータ(VR)(VCN VRまたは単にVRと称される)は、VCNのサブネット間の通信を可能にする。VCN内のサブネットの場合、VRは、サブネット(すなわち、そのサブネット上のコンピュートインスタンス)が、VCN内の他のサブネット上のエンドポイントおよびVCN外部の他のエンドポイントと通信することを可能にする、そのサブネットの論理ゲートウェイを表す。VCN VRは、VCN内のVNICと、VCNに関連付けられた仮想ゲートウェイ(「ゲートウェイ」)との間でトラフィックをルーティングするように構成された論理エンティティである。ゲートウェイについては、
図1に関してさらに後に説明する。VCN VRは、レイヤ3/IPレイヤの概念である。1つの実施形態では、1つのVCNに対して1つのVCN VRがあり、このVCN VRは、IPアドレスによってアドレス指定された無制限の数のポートを潜在的に有し、VCNの各サブネットに対して1つのポートを有する。このように、VCN VRは、VCN VRが接続されているVCNの各サブネットに対して異なるIPアドレスを有する。VRは、また、VCNのために構成されたさまざまなゲートウェイにも接続されている。いくつかの実施形態では、サブネットのオーバーレイIPアドレス範囲からの特定のオーバーレイIPアドレスは、そのサブネットのVCN VRのポートのために予約される。たとえば、それぞれアドレス範囲10.0/16および10.1/16が関連付けられた2つのサブネットを有するVCNを考慮する。アドレス範囲10.0/16を有するVCN内の第1のサブネットの場合、この範囲からのアドレスは、そのサブネットのVCN VRのポートのために予約される。いくつかの事例では、この範囲からの第1のIPアドレスは、VCN VRのために予約してもよい。たとえば、オーバーレイIPアドレス範囲10.0/16を有するサブネットの場合、IPアドレス10.0.0.1は、そのサブネットのVCN VRのポートのために予約してもよい。同じVCN内のアドレス範囲10.1/16を有する第2のサブネットの場合、VCN VRは、IPアドレス10.1.0.1を有するその第2のサブネットのためのポートを有してもよい。VCN VRは、VCN内の各サブネットの各々に対して異なるIPアドレスを有する。
【0040】
他のいくつかの実施形態では、VCN内の各サブネットは、独自の関連付けられたVRを有していてもよく、VRは、そのVRに関連付けられた予約済みまたはデフォルトのIPアドレスを使用してサブネットによってアドレス指定可能である。予約済みまたはデフォルトのIPアドレスは、たとえば、そのサブネットに関連付けられたIPアドレスの範囲からの第1のIPアドレスであってもよい。サブネット内のVNICは、このデフォルトまたは予約済みのIPアドレスを使用して、サブネットに関連付けられたVRと通信する(たとえば、パケットを送受信する)ことができる。このような実施形態では、VRは、そのサブネットのイングレス/エグレスポイントである。VCN内のサブネットに関連付けられたVRは、VCN内の他のサブネットに関連付けられた他のVRと通信することができる。VRはまた、VCNに関連付けられたゲートウェイと通信することもできる。サブネットのVR機能は、サブネット内のVNICのVNIC機能を実行する1つまたは複数のNVD上で実行しており、またはそうしたNVDによって実行される。
【0041】
ルートテーブル、セキュリティルール、およびDHCPオプションは、VCNのために構成することができる。ルートテーブルは、VCNの仮想ルートテーブルであり、ゲートウェイまたは特別に構成されたインスタンスを経由して、トラフィックをVCN内のサブネットからVCN外部の宛先にルーティングするためのルールを含む。VCNとの間でパケットをいかに転送/ルーティングするかを制御するために、VCNのルートテーブルをカスタマイズすることができる。DHCPオプションは、インスタンスの起動時にインスタンスに自動的に提供される構成情報を指す。
【0042】
VCNのために構成されたセキュリティルールは、VCNのオーバーレイファイアウォールルールを表す。セキュリティルールは、イングレスルールおよびエグレスルールを含むことができ、(たとえば、プロトコルおよびポートに基づいて)VCN内のインスタンスに出入りすることを許可されるトラフィックの種類を指定することができる。顧客は、所与のルールがステートフルであるかまたはステートレスであるかを選択することができる。たとえば、顧客は、送信元CIDR0.0.0.0/0および宛先TCPポート22を含むステートフルイングレスルールを設定することによって、任意の場所からインスタンスのセットへの着信SSHトラフィックを許可することができる。セキュリティルールは、ネットワークセキュリティグループまたはセキュリティリストを使用して実装することができる。ネットワークセキュリティグループは、そのグループ内のリソースのみに適用されるセキュリティルールのセットからなる。一方、セキュリティリストは、そのセキュリティリストを使用するサブネット内のすべてのリソースに適用されるルールを含む。VCNには、デフォルトセキュリティルールとともにデフォルトセキュリティリストを提供することができる。VCNのために構成されたDHCPオプションは、VCN内のインスタンスが起動するときにそのインスタンスに自動的に提供される構成情報を提供する。
【0043】
いくつかの実施形態では、VCNの構成情報は、VCN制御プレーンによって決定および格納される。VCNの構成情報は、たとえば、VCNに関連付けられたアドレス範囲、VCN内のサブネットおよび関連情報、VCNに関連付けられた1つまたは複数のVR、VCN内のコンピュートインスタンスおよび関連VNIC、VCNに関連付けられたさまざまな仮想化ネットワーク機能(たとえば、VNIC、VR、ゲートウェイ)を実行するNVD、VCNの状態情報、ならびに他のVCN関連情報を含むことができる。いくつかの実施形態では、VCN配信サービスは、VCN制御プレーンによって格納された構成情報またはその一部をNVDに公開する。配信された情報を使用して、NVDによって格納および使用される情報(たとえば、転送テーブル、ルーティングテーブルなど)を更新して、VCN内のコンピュートインスタンスとの間でパケットを転送することができる。
【0044】
いくつかの実施形態では、VCNおよびサブネットの作成はVCN制御プレーン(CP)によって処理され、コンピュートインスタンスの起動はコンピュート制御プレーンによって処理される。コンピュート制御プレーンは、コンピュートインスタンスの物理リソースの割り当てを担当し、次いで、VCN制御プレーンを呼び出してVNICを作成し、コンピュートインスタンスにアタッチする。また、VCN CPは、パケット転送およびルーティング機能を実行するように構成されているVCNデータプレーンに、VCNデータマッピングを送信する。いくつかの実施形態では、VCN CPは、VCNデータプレーンに更新の提供を担当する配信サービスを提供する。VCN制御プレーンの例については、
図12、
図13、
図14、および
図15(参照番号1216、1316、1416、および1516参照)にも示し、後に説明する。
【0045】
顧客はCSPIによってホストされているリソースを使用して、1つまたは複数のVCNを作成することができる。顧客VCN上にデプロイされたコンピュートインスタンスは、異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPIによってホストされているエンドポイントとCSPIの外部のエンドポイントとを含むことができる。
【0046】
CSPIを使用してクラウドベースのサービスを実装するためのさまざまな異なるアーキテクチャについて、
図1、
図2、
図3、
図4、
図5、
図12、
図13、
図14、および
図15に示し、以下に説明する。
図1は、いくつかの実施形態による、CSPIによってホストされているオーバーレイVCNまたは顧客VCNを示す分散環境100の概要図である。
図1に示す分散環境は、オーバーレイネットワーク内の複数のコンポーネントを含む。
図1に示す分散環境100は、単なる一例であり、特許請求する実施形態の範囲を不当に制限するようには意図されていない。多くのバリエーション、代替形態、および変形形態が可能である。たとえば、いくつかの実施態様では、
図1に示す分散環境は、
図1に示したものよりも多いかまたは少ないシステムまたはコンポーネントを有していてもよく、2つ以上のシステムを組み合わせてもよく、またはシステムの異なる構成もしくは配置を有していてもよい。
【0047】
図1に示す例に示すように、分散環境100は、顧客がサブスクライブして自身の仮想クラウドネットワーク(VCN)を構築するために使用することができるサービスおよびリソースを提供するCSPI101を含む。いくつかの実施形態では、CSPI101は、サブスクライブする顧客にIaaSサービスを提供する。CSPI101内のデータセンタは、1つまたは複数のリージョンに編成してもよい。
図1に、1つのリージョン例「USリージョン」102を示す。顧客はリージョン102に対して顧客VCN104を構成している。顧客はVCN104上にさまざまなコンピュートインスタンスをデプロイすることができ、そこでは、コンピュートインスタンスは仮想マシンまたはベアメタルインスタンスを含むことができる。インスタンスの例としては、アプリケーション、データベース、ロードバランサなどが挙げられる。
【0048】
図1に示す実施形態では、顧客VCN104は、2つのサブネット、すなわち「サブネット-1」および「サブネット-2」を含み、各サブネットは、独自のCIDR IPアドレス範囲を有する。
図1では、サブネット-1のオーバーレイIPアドレス範囲は10.0/16であり、サブネット-2のアドレス範囲は10.1/16である。VCN仮想ルータ105は、VCN104のサブネット間およびVCNの外部の他のエンドポイントとの通信を可能にするVCNの論理ゲートウェイを表す。VCN VR105は、VCN104内のVNICとVCN104に関連付けられたゲートウェイとの間でトラフィックをルーティングするように構成されている。VCN VR105はVCN104の各サブネットにポートを提供する。たとえば、VR105は、IPアドレス10.0.0.1を有するポートをサブネット-1に提供し、IPアドレス10.1.0.1を有するポートをサブネット-2に提供することができる。
【0049】
各サブネット上に複数のコンピュートインスタンスをデプロイすることができ、そこでは、コンピュートインスタンスは仮想マシンインスタンス、および/またはベアメタルインスタンスであり得る。サブネット内のコンピュートインスタンスは、CSPI101内の1つまたは複数のホストマシンによってホストされる場合がある。コンピュートインスタンスは、コンピュートインスタンスに関連付けられたVNICを介してサブネットに参加する。たとえば、
図1に示すように、コンピュートインスタンスC1は、コンピュートインスタンスに関連付けられたVNICを介するサブネット-1の一部である。同様に、コンピュートインスタンスC2は、C2に関連付けられたVNICを介するサブネット-1の一部である。同様に、仮想マシンインスタンスまたはベアメタルインスタンスであり得る複数のコンピュートインスタンスは、サブネット-1の一部であり得る。各コンピュートインスタンスには、その関連するVNICを介して、プライベートオーバーレイIPアドレスおよびMACアドレスが割り当てられる。たとえば、
図1では、コンピュートインスタンスC1は、10.0.0.2のオーバーレイIPアドレスとM1のMACアドレスとを有し、コンピュートインスタンスC2は、10.0.0.3のプライベートオーバーレイIPアドレスとM2のMACアドレスとを有する。コンピュートインスタンスC1およびC2を含むサブネット-1内の各コンピュートインスタンスは、サブネット-1のVCN VR105のポートのIPアドレスであるIPアドレス10.0.0.1を使用して、VCN VR105へのデフォルトルートを有する。
【0050】
サブネット-2には、仮想マシンインスタンスおよび/またはベアメタルインスタンスを含む複数のコンピュートインスタンスをデプロイすることができる。たとえば、
図1に示すように、コンピュートインスタンスD1およびD2は、それぞれのコンピュートインスタンスに関連付けられたVNICを介するサブネット-2の一部である。
図1に示す実施形態では、コンピュートインスタンスD1は、10.1.0.2のオーバーレイIPアドレスとMM1のMACアドレスとを有し、コンピュートインスタンスD2は、10.1.0.3のプライベートオーバーレイIPアドレスとMM2のMACアドレスとを有する。コンピュートインスタンスD1およびD2を含むサブネット-2内の各コンピュートインスタンスは、サブネット-2のVCN VR105のポートのIPアドレスであるIPアドレス10.1.0.1を使用して、VCN VR105へのデフォルトルートを有する。
【0051】
VCN A104もまた、1つまたは複数のロードバランサを含むことができる。たとえば、ロードバランサはサブネットに対して提供してもよく、サブネット上の複数のコンピュートインスタンス間でトラフィックを負荷分散するように構成してもよい。ロードバランサはまた、VCN内のサブネット間でトラフィックを負荷分散するように提供してもよい。
【0052】
VCN104上にデプロイされた特定のコンピュートインスタンスは、さまざまな異なるエンドポイントと通信することができる。これらのエンドポイントとしては、CSPI200によってホストされているエンドポイントと、CSPI200の外部のエンドポイントとを含むことができる。CSPI101によってホストされているエンドポイントは、特定のコンピュートインスタンスと同じサブネット上のエンドポイント(たとえば、サブネット-1内の2つのコンピュートインスタンス間の通信)、異なるサブネットにあるが同じVCN内のエンドポイント(たとえば、サブネット-1内のコンピュートインスタンスとサブネット-2内のコンピュートインスタンスとの間の通信)、同じリージョン内の異なるVCN内のエンドポイント(たとえば、サブネット-1内のコンピュートインスタンスと、同じリージョン106または110のVCN内のエンドポイントとの間の通信、サブネット-1内のコンピュートインスタンスと、同じリージョンのサービスネットワーク110内のエンドポイントとの間の通信)、または異なるリージョン内のVCN内のエンドポイント(たとえば、サブネット-1内のコンピュートインスタンスと、異なるリージョン108内のVCN内のエンドポイントとの間の通信)を挙げることができる。CSPI101によってホストされているサブネット内のコンピュートインスタンスは、CSPI101によってホストされていない(すなわち、CSPI101の外部にある)エンドポイントとも通信することができる。これらの外部のエンドポイントとしては、顧客のオンプレミスネットワーク116内のエンドポイント、他のリモートクラウドホストネットワーク118内のエンドポイント、インターネットなどの公衆ネットワークを介してアクセス可能なパブリックエンドポイント114、および他のエンドポイントが挙げられる。
【0053】
同じサブネット上のコンピュートインスタンス間の通信は、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスに関連付けられたVNICを使用して促進される。たとえば、サブネット-1内のコンピュートインスタンスC1は、サブネット-1内のコンピュートインスタンスC2にパケットを送信したい場合がある。送信元コンピュートインスタンスを起点とし、宛先が同じサブネット内の別のコンピュートインスタンスであるパケットの場合、パケットは、最初に、送信元コンピュートインスタンスに関連付けられたVNICによって処理される。送信元コンピュートインスタンスに関連付けられたVNICによって実行される処理としては、パケットヘッダからパケットの宛先情報を決定することと、送信元コンピュートインスタンスに関連付けられたVNICに対して構成されたポリシー(たとえば、セキュリティリスト)を特定することと、パケットのネクストホップを決定することと、必要に応じて任意のパケットのカプセル化/非カプセル化機能を実行することと、次いで、パケットのその意図された宛先への通信を容易にする目的で、パケットをネクストホップに転送/ルーティングすることとを挙げることができる。宛先コンピュートインスタンスが送信元コンピュートインスタンスと同じサブネットにある場合、送信元のコンピュートインスタンスに関連付けられたVNICは、宛先コンピュートインスタンスに関連付けられたVNICを特定し、処理するためにパケットをそのVNICに転送するように構成されている。次いで、宛先コンピュートインスタンスに関連付けられたVNICは、実行され、パケットを宛先コンピュートインスタンスに転送する。
【0054】
サブネット内のコンピュートインスタンスから同じVCN内の異なるサブネット内のエンドポイントにパケットを通信する場合、通信は、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスに関連付けられたVNICとVCN VRとによって促進される。たとえば、
図1のサブネット-1内のコンピュートインスタンスC1が、サブネット-2内のコンピュートインスタンスD1にパケットを送信したい場合、パケットは、最初に、コンピュートインスタンスC1に関連付けられたVNICによって処理される。コンピュートインスタンスC1に関連付けられたVNICは、VCN VRのデフォルトルートまたはポート10.0.0.1を使用して、パケットをVCN VR105にルーティングするように構成されている。VCN VR105は、ポート10.1.0.1を使用して、パケットをサブネット-2にルーティングするように構成されている。その後、パケットは、D1に関連付けられたVNICによって受信および処理され、VNICは、パケットをコンピュートインスタンスD1に転送する。
【0055】
VCN104内のコンピュートインスタンスからVCN104の外部のエンドポイントにパケットを通信する場合、通信は、送信元コンピュートインスタンスに関連付けられたVNIC、VCN VR105、およびVCN104に関連付けられたゲートウェイによって促進される。1つまたは複数のタイプのゲートウェイをVCN104に関連付けることができる。ゲートウェイは、VCNと別のエンドポイントとの間のインターフェースであり、ここでは、別のエンドポイントはVCNの外部にある。ゲートウェイはレイヤ3/IPレイヤの概念であり、VCNがVCNの外部のエンドポイントと通信することを可能にする。したがって、ゲートウェイは、VCNと他のVCNまたはネットワークとの間のトラフィックフローを促進する。異なるタイプのエンドポイントとの異なるタイプの通信を促進するために、VCNに対してさまざまな異なるタイプのゲートウェイを構成することができる。ゲートウェイに応じて、通信は、公衆ネットワーク(たとえば、インターネット)を介する場合もあれば、プライベートネットワークを介する場合もある。これらの通信には、さまざまな通信プロトコルを使用することができる。
【0056】
たとえば、コンピュートインスタンスC1は、VCN104の外部のエンドポイントと通信したい場合がある。パケットは、最初に、送信元コンピュートインスタンスC1に関連付けられたVNICによって処理することができる。VNICの処理により、パケットの宛先がC1のサブネット-1の外部にあると決定される。C1に関連付けられたVNICは、パケットをVCN104のVCN VR105に転送することができる。次いで、VCN VR105は、パケットを処理し、処理の一部として、パケットの宛先に基づいて、VCN104に関連付けられた特定のゲートウェイをパケットのネクストホップとして決定する。次いで、VCN VR105は、特定の特定されたゲートウェイにパケットを転送することができる。たとえば、宛先が顧客のオンプレミスネットワーク内のエンドポイントである場合、パケットは、VCN VR105によって、VCN104のために構成されたダイナミックルーティングゲートウェイ(DRG)ゲートウェイ122に転送することができる。その後、パケットは、ゲートウェイからネクストホップに転送され、その最終的な意図された宛先へのパケットの通信を促進することができる。
【0057】
VCNのために、さまざまな異なるタイプのゲートウェイを構成することができる。VCNのために構成することができるゲートウェイの例については、
図1に示し、後に説明する。VCNに関連付けられたゲートウェイの例については、
図12、
図13、
図14、および
図15にも示し(たとえば、参照番号1234、1236、1238、1334、1336、1338、1434、1436、1438、1534、1536、および1538によって参照するゲートウェイ)、後に説明する。
図1に示す実施形態に示すように、ダイナミックルーティングゲートウェイ(DRG)122は、顧客VCN104に追加するか、または顧客VCN104に関連付けることができ、顧客VCN104と別のエンドポイントとの間のプライベートネットワークトラフィック通信のための経路を提供し、そこでは、別のエンドポイントは、顧客のオンプレミスネットワーク116、CSPI101の異なるリージョンにあるVCN108、またはCSPI101によってホストされていない他のリモートクラウドネットワーク118であり得る。顧客オンプレミスネットワーク116は、顧客ネットワーク、または顧客のリソースを使用して構築された顧客データセンタであってもよい。顧客オンプレミスネットワーク116へのアクセスは、一般的に厳しく制限される。顧客オンプレミスネットワーク116と、CSPI101によってクラウドにデプロイまたはホストされる1つまたは複数のVCN104との両方を有する顧客の場合、顧客は、自身のオンプレミスネットワーク116および自身のクラウドベースのVCN104が互いに通信することができることを望む場合がある。これによって、顧客は、CSPI101によってホストされている顧客のVCN104と自身のオンプレミスネットワーク116と含む拡張ハイブリッド環境を構築することができる。DRG122によって、このような通信が可能になる。このような通信を可能にするために、通信チャネル124が設定され、そこでは、チャネルの一方のエンドポイントは顧客のオンプレミスネットワーク116内にあり、他方のエンドポイントはCSPI101内にあり、顧客のVCN104に接続されている。通信チャネル124は、インターネットなどの公衆通信ネットワーク、またはプライベート通信ネットワークを介することができる。インターネットなどの公衆通信ネットワーク上のIPsec VPN技術、公衆ネットワークの代わりにプライベートネットワークを使用するオラクル(Oracle)のFastConnect技術など、さまざまな異なる通信プロトコルを使用することができる。通信チャネル124の1つのエンドポイントを形成する顧客オンプレミスネットワーク116内のデバイスまたは機器は、
図1に示すCPE126などの顧客構内設備(CPE)と称される。CSPI101側では、エンドポイントは、DRG122を実行するホストマシンであってもよい。いくつかの実施形態では、リモートピアリング接続(RPC)をDRGに追加することができ、これによって、顧客は、1つのVCNを別のリージョン内の別のVCNとピアリングすることができる。このようなRPCを使用して、顧客VCN104は、DRG122を使用して、別のリージョン内のVCN108と接続することができる。DRG122を使用して、Microsoft Azureクラウド、Amazon AWSクラウドなど、CSPI101によってホストされていない他のリモートクラウドネットワーク118と通信することもできる。
【0058】
図1に示すように、顧客VCN104にインターネットゲートウェイ(IGW)120を構成することができ、これによって、VCN104上のコンピュートインスタンスが、インターネットなどの公衆ネットワークを介してアクセス可能なパブリックエンドポイント114と通信することができる。IGW1120は、VCNをインターネットなどの公衆ネットワークに接続するゲートウェイである。IGW120は、VCN104などのVCN内のパブリックサブネット(そこでは、パブリックサブネット内のリソースは、パブリックオーバーレイIPアドレスを有する)が、インターネットなどの公衆ネットワーク114上のパブリックエンドポイント112に直接アクセスすることを可能にする。IGW120を使用して、VCN104内のサブネットからまたはインターネットから、接続を開始することができる。
【0059】
顧客VCN104にネットワークアドレス変換(NAT)ゲートウェイ128を構成することができ、NATゲートウェイ128は、専用のパブリックオーバーレイIPアドレスを有していない顧客VCN内のクラウドリソースが、それらのリソースを直接着信インターネット接続(たとえば、L4-L7接続)にさらすことなくインターネットにアクセスすることができるようにする。これによって、VCN104内のプライベートサブネット-1などのVCN内のプライベートサブネットが、インターネット上のパブリックエンドポイントにプライベートアクセスすることができる。NATゲートウェイでは、接続はプライベートサブネットから公衆インターネットにのみ開始することができ、インターネットからプライベートサブネットには開始することができない。
【0060】
いくつかの実施形態では、顧客VCN104にサービスゲートウェイ(SGW)126を構成することができ、SGW126は、VCN104とサービスネットワーク110においてサポートされているサービスエンドポイントとの間のプライベートネットワークトラフィックの経路を提供する。いくつかの実施形態では、サービスネットワーク110は、CSPによって提供してもよく、さまざまなサービスを提供することができる。このようなサービスネットワークの一例は、顧客が使用することができるさまざまなサービスを提供する、オラクル(Oracle)のサービスネットワークである。たとえば、顧客VCN104のプライベートサブネット内のコンピュートインスタンス(たとえば、データベースシステム)は、公衆IPアドレスもインターネットへのアクセスも必要とすることなく、サービスエンドポイント(たとえば、オブジェクトストレージ)にデータをバックアップすることができる。いくつかの実施形態では、VCNは、1つのSGWのみを有することができ、接続は、VCN内のサブネットからのみ開始することができ、サービスネットワーク110からは開始することができない。あるVCNが別のVCNとピアリングされる場合、他のVCN内のリソースは、通常、SGWにアクセスすることができない。FastConnectまたはVPN ConnectでVCNに接続されているオンプレミスネットワーク内のリソースも、そのVCNに構成されたサービスゲートウェイを使用することができる。
【0061】
いくつかの実施態様では、SGW126は、サービスクラスレスドメイン間ルーティング(CIDR:Classless Inter-Domain Routing)ラベルの概念を使用し、CIDRラベルは、関心のあるサービスまたはサービスのグループに対するすべてのリージョン公衆IPアドレス範囲を表す文字列である。顧客は、SGWおよび関連するルーティングルールを構成するときにサービスCIDRラベルを使用して、サービスへのトラフィックを制御する。顧客は、将来サービスの公衆IPアドレスが変化した場合、セキュリティルールを調整する必要なく、セキュリティルールを構成するときに任意選択的にサービスCIDRラベルを使用することができる。
【0062】
ローカルピアリングゲートウェイ(LPG)132は、顧客VCN104に追加することができるゲートウェイであり、VCN104が同じリージョン内の別のVCNとピアリングすることを可能にするものである。ピアリングとは、トラフィックがインターネットなどの公衆ネットワークを経由することなく、かつ顧客のオンプレミスネットワーク116を通してトラフィックをルーティングすることなく、VCNがプライベートIPアドレスを使用して通信することを意味する。好ましい実施形態では、VCNは、確立する各ピアリングに対して個別のLPGを有する。ローカルピアリングまたはVCNピアリングは、異なるアプリケーション間またはインフラストラクチャ管理機能間のネットワーク接続を確立するために使用される一般的な慣行である。
【0063】
サービスネットワーク110内のサービスのプロバイダなどのサービスプロバイダは、異なるアクセスモデルを使用してサービスへのアクセスを提供することができる。パブリックアクセスモデルによれば、サービスは、インターネットなどの公衆ネットワークを介して顧客VCN内のコンピュートインスタンスによってパブリックにアクセス可能であるパブリックエンドポイントとして公開してもよく、かつ/またはSGW126を介してプライベートにアクセス可能である。特定のプライベートアクセスモデルによれば、サービスは、顧客VCN内のプライベートサブネット内のプライベートIPエンドポイントとしてアクセス可能となる。これは、プライベートエンドポイント(PE)アクセスと称され、サービスプロバイダがそのサービスを顧客のプライベートネットワーク内のインスタンスとして公開することを可能にする。プライベートエンドポイントリソースは、顧客のVCN内のサービスを表す。各PEは、顧客が顧客VCN内のサブネットから選択したVNIC(PE-VNICと称され、1つまたは複数のプライベートIPを有する)として現れる。したがって、PEは、VNICを使用して顧客のプライベートVCNサブネット内でサービスを提示する方法を提供する。エンドポイントがVNICとして公開されるため、ルーティングルールおよびセキュリティリストなど、VNICに関連付けられたすべての機能がPE VNICで利用可能となる。
【0064】
サービスプロバイダは、それらのサービスを登録して、PEを介するアクセスを可能にすることができる。プロバイダは、顧客テナンシへのサービスの可視性を制限するポリシーをサービスに関連付けることができる。プロバイダは、特にマルチテナントサービスの場合、単一の仮想IPアドレス(VIP)の下に複数のサービスを登録することができる。(複数のVCNにおいて)同じサービスを表すプライベートエンドポイントが複数存在する可能性がある。
【0065】
次いで、プライベートサブネット内のコンピュートインスタンスは、PE VNICのプライベートIPアドレスまたはサービスDNS名を使用して、サービスにアクセスすることができる。顧客VCN内のコンピュートインスタンスは、顧客VCN内のPEのプライベートIPアドレスにトラフィックを送信することによって、サービスにアクセスすることができる。プライベートアクセスゲートウェイ(PAGW)130は、顧客サブネットプライベートエンドポイントから/顧客サブネットプライベートエンドポイントへのすべてのトラフィックのイングレスポイント/エグレスポイントとして作用するサービスプロバイダVCN(たとえば、サービスネットワーク110内のVCN)にアタッチすることができるゲートウェイリソースである。PAGW130によって、プロバイダは、その内部IPアドレスリソースを利用することなく、PE接続の数を拡張することができる。プロバイダは、単一のVCNに登録された任意の数のサービスに対して1つのPAGWを構成するだけでよい。プロバイダは、1または複数の顧客の複数のVCNにおいて、サービスをプライベートエンドポイントとして表すことができる。顧客の観点から、PE VNICは、顧客のインスタンスにアタッチされているのではなく、顧客がインタラクトしたいサービスにアタッチされているように見える。プライベートエンドポイントに向けられたトラフィックは、PAGW130を介してサービスにルーティングされる。これらは、顧客対サービスプライベート接続(C2S接続)と称される。
【0066】
PE概念を使用して、トラフィックがFastConnect/IPsecリンクおよび顧客VCN内のプライベートエンドポイントを通って流れることを可能にすることによって、サービスのプライベートアクセスを顧客のオンプレミスネットワークおよびデータセンタに拡張することもできる。トラフィックがLPG132と顧客のVCN内のPEとの間を通って流れることを可能にすることによって、サービスのプライベートアクセスを顧客のピアリングVCNに拡張することもできる。
【0067】
顧客は、サブネットレベルでVCNのルーティングを制御することができるため、VCN104などの顧客VCNにおいて各ゲートウェイを使用するサブネットを指定することができる。VCNのルートテーブルを使用して、トラフィックが特定のゲートウェイを介してVCNの外部に出ることができるか否かが決定される。たとえば、特定の事例において、顧客VCN104内のパブリックサブネットのルートテーブルは、IGW120を介して非ローカルトラフィックを送信することができる。同じ顧客VCN104内のプライベートサブネットのルートテーブルは、SGW126を介してCSPサービスに向けられたトラフィックを送信することができる。残りのすべてのトラフィックは、NATゲートウェイ128を介して送信することができる。ルートテーブルは、VCNから出るトラフィックのみを制御する。
【0068】
VCNに関連付けられたセキュリティリストを使用して、インバウンド接続によってゲートウェイを介してVCNに入来するトラフィックが制御される。サブネット内のすべてのリソースは、同じルートテーブルおよびセキュリティリストを使用する。セキュリティリストを使用して、VCNのサブネット内のインスタンスに出入りすることができる特定のタイプのトラフィックを制御することができる。セキュリティリストルールは、イングレス(インバウンド)ルールとエグレス(アウトバウンド)ルールとを含むことができる。たとえば、イングレスルールは、許可された送信元アドレス範囲を指定することができ、エグレスルールは、許可された宛先アドレス範囲を指定することができる。セキュリティルールは、特定のプロトコル(たとえば、TCP、ICMP)、特定のポート(たとえば、SSHの場合ポート22、Windows RDPの場合ポート3389)などを指定することができる。いくつかの実施態様では、インスタンスのオペレーティングシステムは、セキュリティリストルールと一致する独自のファイアウォールルールを実施することができる。ルールは、ステートフル(たとえば、接続が追跡され、応答トラフィックに対する明示的なセキュリティリストルールなしで応答が自動的に許可される)であっても、ステートレスであってもよい。
【0069】
顧客VCNからの(すなわち、VCN104上にデプロイされたリソースまたはコンピュートインスタンスによる)アクセスは、パブリックアクセス、プライベートアクセス、または専用アクセスとして分類することができる。パブリックアクセスは、公衆IPアドレスまたはNATを使用してパブリックエンドポイントにアクセスするアクセスモデルを指す。プライベートアクセスにより、プライベートIPアドレス(たとえば、プライベートサブネット内のリソース)を有するVCN104内の顧客ワークロードが、インターネットなどの公衆ネットワークを経由することなく、サービスにアクセスすることができる。いくつかの実施形態では、CSPI101により、プライベートIPアドレスを有する顧客VCNワークロードが、サービスゲートウェイを使用して、サービス(のパブリックサービスエンドポイント)にアクセスすることができる。したがって、サービスゲートウェイは、顧客のVCNと顧客のプライベートネットワークの外部に存在するサービスのパブリックエンドポイントとの間に仮想リンクを確立することによって、プライベートアクセスモデルを提供する。
【0070】
さらに、CSPIは、FastConnectパブリックピアリングなどの技術を使用する専用パブリックアクセスを提供することができ、この場合、顧客オンプレミスインスタンスは、インターネットなどの公衆ネットワークを経由することなく、FastConnect接続を使用して顧客VCN内の1つまたは複数のサービスにアクセスすることができる。CSPIは、FastConnectプライベートピアリングを使用する専用プライベートアクセスを提供することもでき、この場合、プライベートIPアドレスを有する顧客オンプレミスインスタンスは、FastConnect接続を使用して顧客のVCNワークロードにアクセスすることができる。FastConnectは、公衆インターネットを使用して顧客のオンプレミスネットワークをCSPIおよびそのサービスに接続する代わりに使用されるネットワーク接続である。FastConnectは、インターネットベースの接続と比較した場合、より高い帯域幅オプションとより信頼性の高い一貫したネットワーキング体験とを有する専用のプライベート接続を、簡単で、柔軟でかつ経済的に作成する方法を提供する。
【0071】
図1および上記の添付の説明は、仮想ネットワーク例におけるさまざまな仮想化コンポーネントについて説明している。上述したように、仮想ネットワークは、基礎となる物理ネットワークまたは基盤ネットワーク上に構築される。
図2は、いくつかの実施形態による、仮想ネットワークのアンダーレイを提供するCSPI200内の物理ネットワーク内の物理コンポーネントの簡略化アーキテクチャ図を示す。図示するように、CSPI200は、クラウドサービスプロバイダ(CSP)によって提供されるコンポーネントおよびリソース(たとえば、コンピュートリソース、メモリリソース、およびネットワーキングリソース)を含む分散環境を提供する。これらのコンポーネントおよびリソースを使用して、サブスクライブしている顧客、すなわち、CSPによって提供される1つまたは複数のサービスにサブスクライブしている顧客にクラウドサービス(たとえば、IaaSサービス)が提供される。顧客がサブスクライブしているサービスに基づいて、CSPI200のリソース(たとえば、コンピュートリソース、メモリリソース、およびネットワーキングリソース)の一部が顧客にプロビジョニングされる。その後、顧客は、CSPI200によって提供される物理的なコンピュートリソース、メモリリソース、およびネットワーキングリソースを使用して、独自のクラウドベース(すなわち、CSPIホスト型)のカスタマイズ可能なプライベート仮想ネットワークを構築することができる。前述したように、これらの顧客ネットワークは、仮想クラウドネットワーク(VCN)と称される。顧客は、これらの顧客VCNに、コンピュートインスタンスなどの1つまたは複数の顧客リソースをデプロイすることができる。コンピュートインスタンスは、仮想マシン、ベアメタルインスタンスなどの形態であり得る。CSPI200は、顧客が高可用性のホスト環境において広範なアプリケーションおよびサービスを構築および実行することができるようにする、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。
【0072】
図2に示す実施形態例では、CSPI200の物理コンポーネントは、1つまたは複数の物理ホストマシンまたは物理サーバ(たとえば、202、206、208)、ネットワーク仮想化デバイス(NVD)(たとえば、210、212)、トップオブラック(TOR)スイッチ(たとえば、214、216)、および物理ネットワーク(たとえば、218)、ならびに物理ネットワーク218内のスイッチを含む。物理ホストマシンまたはサーバは、VCNの1つまたは複数のサブネットに参加しているさまざまなコンピュートインスタンスをホストおよび実行することができる。コンピュートインスタンスは、仮想マシンインスタンスおよびベアメタルインスタンスを含むことができる。たとえば、
図1に示すさまざまなコンピュートインスタンスは、
図2に示す物理ホストマシンによってホストしてもよい。VCN内の仮想マシンコンピュートインスタンスは、1つのホストマシンによって実行しても、複数の異なるホストマシンによって実行してもよい。物理ホストマシンは、仮想ホストマシン、コンテナベースのホストまたは機能などをホストすることもできる。
図1に示すVNICおよびVCN VRは、
図2に示すNVDによって実行してもよい。
図1に示すゲートウェイは、
図2に示すホストマシンおよび/またはNVDによって実行してもよい。
【0073】
ホストマシンまたはサーバは、ホストマシン上で仮想化環境を作成するとともに可能にするハイパーバイザ(仮想マシンモニタまたはVMMとも称される)を実行することができる。仮想化または仮想化環境は、クラウドベースコンピューティングを容易にする。1つまたは複数のコンピュートインスタンスは、ホストマシン上のハイパーバイザによって、ホストマシン上で作成し、実行し、管理することができる。ホストマシン上のハイパーバイザにより、ホストマシンの物理的なコンピューティングリソース(たとえば、コンピュートリソース、メモリリソース、およびネットワーキングリソース)を、ホストマシンによって実行されるさまざまなコンピュートインスタンス間で共有することができる。
【0074】
たとえば、
図2に示すように、ホストマシン202および208は、それぞれハイパーバイザ260および266を実行する。これらのハイパーバイザは、ソフトウェア、ファームウェア、もしくはハードウェア、またはそれらの組み合わせを使用して実装することができる。典型的には、ハイパーバイザは、ホストマシンのオペレーティングシステム(OS)の上に位置するプロセスまたはソフトウェアレイヤであり、OSは、さらに、ホストマシンのハードウェアプロセッサ上で実行する。ハイパーバイザは、ホストマシンの物理的なコンピューティングリソース(たとえば、プロセッサ/コア、メモリリソース、ネットワーキングリソースなどの処理リソース)を、ホストマシンによって実行されるさまざまな仮想マシンコンピュートインスタンス間で共有することができるようにすることによって、仮想化環境を提供する。たとえば、
図2において、ハイパーバイザ260は、ホストマシン202のOSの上に位置することができ、ホストマシン202のコンピューティングリソース(たとえば、処理リソース、メモリリソース、およびネットワーキングリソース)を、ホストマシン202によって実行されるコンピュートインスタンス(たとえば、仮想マシン)間で共有することができるようにする。仮想マシンは、独自のオペレーティングシステム(ゲストオペレーティングシステムと称される)を有することができ、このオペレーティングシステムは、ホストマシンのOSと同じであっても、異なっていてもよい。ホストマシンによって実行される仮想マシンのオペレーティングシステムは、同じホストマシンによって実行される別の仮想マシンのOSと同じであっても、異なっていてもよい。したがって、ハイパーバイザにより、複数のオペレーティングシステムを、ホストマシンの同じコンピューティングリソースを共有しながら、並行して実行することができる。
図2に示すホストマシンは、同じタイプのハイパーバイザを有しても、異なるタイプのハイパーバイザを有してもよい。
【0075】
コンピュートインスタンスは、仮想マシンインスタンスまたはベアメタルインスタンスであり得る。
図2において、ホストマシン202上のコンピュートインスタンス268およびホストマシン208上のコンピュートインスタンス274は、仮想マシンインスタンスの例である。ホストマシン206は、顧客に提供されるベアメタルインスタンスの一例である。
【0076】
いくつかの事例では、ホストマシンの全体を、単一の顧客にプロビジョニングしてもよく、そのホストマシンによってホストされている1つまたは複数のコンピュートインスタンス(仮想マシンまたはベアメタルインスタンスのいずれか)は、すべてその同じ顧客に属してもよい。他の事例では、ホストマシンは、複数の顧客(すなわち、複数のテナント)間で共有してもよい。このようなマルチテナントシナリオにおいて、ホストマシンは、異なる顧客に属する仮想マシンコンピュートインスタンスをホストすることができる。これらのコンピュートインスタンスは、異なる顧客の異なるVCNのメンバであってもよい。いくつかの実施形態では、ベアメタルコンピュートインスタンスは、ハイパーバイザのないベアメタルサーバによってホストされている。ベアメタルコンピュートインスタンスがプロビジョニングされる場合、単一の顧客またはテナントは、ベアメタルインスタンスをホストしているホストマシンの物理CPU、メモリ、およびネットワークインターフェースの制御を維持し、ホストマシンは、他の顧客またはテナントに共有されない。
【0077】
前述したように、VCNの一部である各コンピュートインスタンスは、コンピュートインスタンスがVCNのサブネットのメンバになることを可能にするVNICに関連付けられる。コンピュートインスタンスに関連付けられたVNICは、コンピュートインスタンスとの間のパケットまたはフレームの通信を容易にする。VNICは、コンピュートインスタンスが作成されるときにコンピュートインスタンスに関連付けられる。いくつかの実施形態では、ホストマシンによって実行されるコンピュートインスタンスについて、そのコンピュートインスタンスに関連付けられたVNICは、ホストマシンに接続されたNVDによって実行される。たとえば、
図2において、ホストマシン202は、VNIC276に関連付けられた仮想マシンコンピュートインスタンス268を実行し、VNIC276は、ホストマシン202に接続されたNVD210によって実行される。別の例として、ホストマシン206によってホストされているベアメタルインスタンス272は、ホストマシン206に接続されたNVD212によって実行されるVNIC280に関連付けられる。さらに別の例として、VNIC284は、ホストマシン208によって実行されるコンピュートインスタンス274に関連付けられ、VNIC284は、ホストマシン208に接続されたNVD212によって実行される。
【0078】
ホストマシンによってホストされているコンピュートインスタンスについて、そのホストマシンに接続されたNVDは、コンピュートインスタンスがメンバであるVCNに対応するVCN VRも実行する。たとえば、
図2に示す実施形態では、NVD210は、コンピュートインスタンス268がメンバであるVCNに対応するVCN VR277を実行する。NVD212もまた、ホストマシン206および208によってホストされているコンピュートインスタンスに対応するVCNに対応する1つまたは複数のVCN VR283を実行することができる。
【0079】
ホストマシンは、ホストマシンが他のデバイスに接続されることを可能にする1つまたは複数のネットワークインターフェースカード(NIC)を含むことができる。ホストマシン上のNICは、ホストマシンが別のデバイスに通信可能に接続されることを可能にする1つまたは複数のポート(またはインターフェース)を提供することができる。たとえば、ホストマシンおよびNVDに設けられた1つまたは複数のポート(またはインターフェース)を使用して、ホストマシンをNVDに接続することができる。ホストマシンを別のホストマシンなどの他のデバイスに接続することもできる。
【0080】
たとえば、
図2において、ホストマシン202は、ホストマシン202のNIC232によって提供されるポート234とNVD210のポート236との間に延びるリンク220を使用して、NVD210に接続されている。ホストマシン206は、ホストマシン206のNIC244によって提供されるポート246とNVD212のポート248との間に延びるリンク224を使用して、NVD212に接続されている。ホストマシン208は、ホストマシン208のNIC250によって提供されるポート252とNVD212のポート254との間に延びるリンク226を使用して、NVD212に接続されている。
【0081】
NVDは、さらに、通信リンクを介して、(スイッチファブリックとも称される)物理ネットワーク218に接続されているトップオブラック(TOR)スイッチに接続されている。いくつかの実施形態では、ホストマシンとNVDとの間のリンクおよびNVDとTORスイッチとの間のリンクは、イーサネット(Ethernet)リンクである。たとえば、
図2において、NVD210および212は、リンク228および230を使用して、TORスイッチ214および216にそれぞれ接続されている。いくつかの実施形態では、リンク220、224、226、228、および230は、イーサネットリンクである。TORに接続されているホストマシンおよびNVDの集合体は、ラックと称されることがある。
【0082】
物理ネットワーク218は、TORスイッチが互いに通信することを可能にする通信ファブリックを提供する。物理ネットワーク218は、多層ネットワークであり得る。いくつかの実施態様では、物理ネットワーク218は、スイッチの多層Closネットワークであり、TORスイッチ214および216は、多層およびマルチノード物理スイッチングネットワーク218のリーフレベルノードを表す。限定されないが、2層ネットワーク、3層ネットワーク、4層ネットワーク、5層ネットワーク、および概して「n」層ネットワークを含む、異なるClosネットワーク構成が可能である。CIosネットワークの一例については、
図5に示し、後に説明する。
【0083】
ホストマシンとNVDとの間には、1対1構成、多対1構成、および1対多構成などのさまざまな異なる接続構成が可能である。1対1構成の実施態様では、各ホストマシンは、それ自体の別個のNVDに接続されている。たとえば、
図2において、ホストマシン202は、ホストマシン202のNIC232を介してNVD210に接続されている。多対1構成では、複数のホストマシンは、1つのNVDに接続されている。たとえば、
図2において、ホストマシン206および208は、それぞれNIC244および250を介して同じNVD212に接続されている。
【0084】
1対多構成では、1つのホストマシンは、複数のNVDに接続されている。
図3は、ホストマシンが複数のNVDに接続されているCSPI300内の一例を示す。
図3に示すように、ホストマシン302は、複数のポート306および308を含むネットワークインターフェースカード(NIC)304を備える。ホストマシン300は、ポート306およびリンク320を介して第1のNVD310に接続され、ポート308およびリンク322を介して第2のNVD312に接続されている。ポート306および308は、イーサネットポートであってもよく、ホストマシン302とNVD310および312との間のリンク320および322は、イーサネットリンクであってもよい。NVD310は、さらに、第1のTORスイッチ314に接続され、NVD312は、第2のTORスイッチ316に接続されている。NVD310および312とTORスイッチ314および316との間のリンクは、イーサネットリンクであってもよい。TORスイッチ314および316は、多層物理ネットワーク318内の層-0スイッチングデバイスを表す。
【0085】
図3に示す配置は、物理スイッチネットワーク318からホストマシン302への2つの別々の物理ネットワーク経路、すなわち、TORスイッチ314を介してNVD310を経由してホストマシン302への第1の経路と、TORスイッチ316を介してNVD312を経由してホストマシン302への第2の経路とを提供する。別々の経路により、ホストマシン302の強化された可用性(高可用性と称する)が提供される。経路の一方に問題がある(たとえば、経路の一方のリンクが故障した)場合またはデバイスに問題がある(たとえば、特定のNVDが機能していない)場合、ホストマシン302との間の通信に他方の経路を使用することができる。
【0086】
図3に示す構成では、ホストマシンは、ホストマシンのNICによって提供される2つの異なるポートを使用して2つの異なるNVDに接続されている。他の実施形態では、ホストマシンは、ホストマシンの複数のNVDへの接続を可能にする複数のNICを含んでもよい。
【0087】
再び
図2を参照すると、NVDは、1つまたは複数のネットワーク仮想化機能および/またはストレージ仮想化機能を実行する物理デバイスまたはコンポーネントである。NVDは、1つまたは複数の処理装置(たとえば、CPU、ネットワーク処理装置(NPU)、FPGA、パケット処理パイプラインなど)、キャッシュを含むメモリ、およびポートを有する任意のデバイスであり得る。さまざまな仮想化機能は、NVDの1つまたは複数の処理装置によって実行されるソフトウェア/ファームウェアによって実行される場合がある。
【0088】
NVDは、さまざまな異なる形で実装することができる。たとえば、いくつかの実施形態では、NVDは、組み込みプロセッサを搭載したスマートNICまたはインテリジェントNICと称されるインターフェースカードとして実装される。スマートNICは、ホストマシン上のNICとは別個のデバイスである。
図2において、それぞれ、NVD210は、ホストマシン202に接続されているスマートNICとして実装することができ、NVD212は、ホストマシン206および208に接続されているスマートNICとして実装することができる。
【0089】
しかしながら、スマートNICは、NVD実施態様の一例にすぎない。さまざまな他の実施態様が可能である。たとえば、いくつかの他の実施態様では、NVD、またはNVDによって実行される1つまたは複数の機能は、CSPI200の1つまたは複数のホストマシン、1つまたは複数のTORスイッチ、および他のコンポーネントに組み込むか、またはそれらによって実行してもよい。たとえば、NVDは、ホストマシンに組み込んでもよく、この場合、NVDによって実行される機能は、ホストマシンによって実行される。別の例として、NVDは、TORスイッチの一部であってもよく、またはTORスイッチは、TORスイッチがパブリッククラウドに使用されるさまざまな複雑なパケット変換を実行することができるようにするNVDによって実行される機能を実行するように構成してもよい。NVDの機能を実行するTORは、スマートTORと称される場合がある。ベアメタル(BM)インスタンスではなく仮想マシン(VM)インスタンスが顧客に提供されるさらに他の実施態様では、NVDによって実行される機能は、ホストマシンのハイパーバイザの内部に実装してもよい。他のいくつかの実施態様では、NVDの機能のうちのいくつかは、ホストマシンのフリート上で実行している集中型サービスにオフロードしてもよい。
【0090】
図2に示すようにスマートNICとして実装される場合などのいくつかの実施形態では、NVDは、NVDが1つまたは複数のホストマシンおよび1つまたは複数のTORスイッチに接続されることを可能にする複数の物理ポートを備えることができる。NVD上のポートは、ホスト側ポート(「サウスポート」(south port)とも称される)またはネットワーク側もしくはTOR側ポート(「ノースポート」(north port)とも称される)に分類することができる。NVDのホスト側ポートは、NVDをホストマシンに接続するために使用されるポートである。
図2においてホスト側ポートの例は、NVD210のポート236、ならびにNVD212のポート248および254を含む。NVDのネットワーク側ポートは、NVDをTORスイッチに接続するために使用されるポートである。
図2のネットワーク側ポートの例は、NVD210のポート256、およびNVD212のポート258を含む。
図2に示すように、NVD210は、NVD210のポート256からTORスイッチ214まで延びるリンク228を使用してTORスイッチ214に接続されている。同様に、NVD212は、NVD212のポート258からTORスイッチ216まで延びるリンク230を使用してTORスイッチ216に接続されている。
【0091】
NVDは、ホスト側ポートを介して、ホストマシンからパケットおよびフレーム(たとえば、ホストマシンによってホストされているコンピュートインスタンスによって生成されたパケットおよびフレーム)を受信し、必要なパケット処理を実行した後、NVDのネットワーク側ポートを介してパケットおよびフレームをTORスイッチに転送することができる。NVDは、NVDのネットワーク側ポートを介してTORスイッチからパケットおよびフレームを受信することができ、必要なパケット処理を実行した後、NVDのホスト側ポートを介してパケットおよびフレームをホストマシンに転送することができる。
【0092】
いくつかの実施形態では、NVDとTORスイッチとの間に複数のポートおよび関連するリンクがあり得る。これらのポートおよびリンクを集約して、複数のポートまたはリンクのリンクアグリゲータグループ(LAGと称される)を形成することができる。リンクの集約により、2つのエンドポイント間(たとえば、NVDとTORスイッチとの間)の複数の物理リンクを単一の論理リンクとして扱うことができる。所与のLAG内のすべての物理リンクは、同じ速度で、全二重モードで動作することができる。LAGは、2つのエンドポイント間の接続の帯域幅および信頼性を高めるのに役立つ。LAG内の物理リンクのうちの1つが故障した場合、トラフィックは、LAG内の他の物理リンクのうちの1つに動的にかつ透過的に再割り当てされる。集約された物理リンクは、各個々のリンクよりも高い帯域幅を提供する。LAGに関連付けられた複数のポートは、単一の論理ポートとして扱われる。トラフィックをLAGの複数の物理リンクに負荷分散することができる。2つのエンドポイント間に1つまたは複数のLAGを構成することができる。2つのエンドポイントは、NVDとTORスイッチとの間、ホストマシンとNVDとの間などにあり得る。
【0093】
NVDは、ネットワーク仮想化機能を実装または実行する。これらの機能は、NVDによって実行されるソフトウェア/ファームウェアによって実行される。ネットワーク仮想化機能の例としては、限定なしに、パケットのカプセル化および非カプセル化機能、VCNネットワークを作成する機能、VCNセキュリティリスト(ファイアウォール)機能などのネットワークポリシーを実装する機能、VCN内のコンピュートインスタンスとの間のパケットのルーティングおよび転送を容易にする機能などが挙げられる。いくつかの実施形態では、NVDは、パケットを受信したとき、パケットを処理し、パケットをいかに転送またはルーティングするかを決定するパケット処理パイプラインを実行するように構成されている。このパケット処理パイプラインの一部として、NVDは、VCN内のcisに関連付けられたVNICの実行、VCNに関連付けられた仮想ルータ(VR)の実行、仮想ネットワーク内の転送またはルーティングを容易にするためのパケットのカプセル化および非カプセル化、いくつかのゲートウェイ(たとえば、ローカルピアリングゲートウェイ)の実行、セキュリティリストの実装、ネットワークセキュリティグループ、ネットワークアドレス変換(NAT)機能(たとえば、ホスト単位でのホスト上での公衆IPからプライベートIPへの変換)、スロットリング機能など、オーバーレイネットワークに関連する1つまたは複数の仮想機能を実行することができる。
【0094】
いくつかの実施形態では、NVD内のパケット処理データ経路は、複数のパケットパイプラインを含むことができ、各パケットパイプラインは、一連のパケット変換ステージから構成されている。いくつかの実施態様では、パケットを受信したとき、そのパケットは、解析され、単一のパイプラインに分類される。次いで、パケットは、ドロップされるかまたはNVDのインターフェースを介して送出されるまで、線形方式でステージごとに処理される。これらのステージは、基本機能のパケット処理ビルディングブロック(たとえば、ヘッダの検証、スロットルの実行、新たなレイヤ2ヘッダの挿入、L4ファイアウォールの実行、VCNカプセル化/非カプセル化など)を提供し、それにより、既存のステージを組み立てることによって新たなパイプラインを構築することができ、新たなステージを作成して既存のパイプラインに挿入することによって、新たな機能を追加することができる。
【0095】
NVDは、VCNの制御プレーンおよびデータプレーンに対応する制御プレーン機能およびデータプレーン機能の両方を実行することができる。VCN制御プレーンの例については、
図12、
図13、
図14、および
図15(参照番号1216、1316、1416、および1516参照)にも示し、後に説明する。VCNデータプレーンの例については、
図12、
図13、
図14、および
図15(参照番号1218、1318、1418、および1518参照)に示し、後に説明する。制御プレーン機能は、データがいかに転送されるかを制御するネットワークの構成(たとえば、ルートおよびルートテーブルの設定、VNICの構成など)に使用される機能を含む。いくつかの実施形態では、すべてのオーバーレイと基盤とのマッピングを集中的に計算し、それらを、NVD、およびDRG、SGW、IGWなどのさまざまなゲートウェイ仮想ネットワークエッジデバイスに公開する、VCN制御プレーンが提供される。同じメカニズムを使用してファイアウォールルールを公開することもできる。いくつかの実施形態では、NVDは、そのNVDに関連するマッピングのみを取得する。データプレーン機能は、制御プレーンを使用して設定された構成に基づいて、パケットの実際のルーティング/転送を行う機能を含む。VCNデータプレーンは、基盤ネットワークを通過する前の顧客のネットワークパケットをカプセル化することによって実装される。カプセル化/非カプセル化機能は、NVDに実装される。いくつかの実施形態では、NVDは、ホストマシンに出入りするすべてのネットワークパケットをインターセプトし、ネットワーク仮想化機能を実行するように構成されている。
【0096】
上述したように、NVDは、VNICおよびVCN VRを含むさまざまな仮想化機能を実行する。NVDは、VNICに接続された1つまたは複数のホストマシンによってホストされているコンピュートインスタンスに関連付けられたVNICを実行することができる。たとえば、
図2に示すように、NVD210は、NVD210に接続されたホストマシン202によってホストされているコンピュートインスタンス268に関連付けられているVNIC276の機能を実行する。別の例として、NVD212は、ホストマシン206によってホストされているベアメタルコンピュートインスタンス272に関連付けられているVNIC280を実行し、ホストマシン208によってホストされているコンピュートインスタンス274に関連付けられているVNIC284を実行する。ホストマシンは、異なる顧客に属する異なるVCNに属するコンピュートインスタンスをホストすることができ、ホストマシンに接続されたNVDは、コンピュートインスタンスに対応するVNICを実行する(すなわち、VNICに関連する機能を実行する)ことができる。
【0097】
NVDは、コンピュートインスタンスのVCNに対応するVCN仮想ルータも実行する。たとえば、
図2に示す実施形態では、NVD210は、コンピュートインスタンス268が属するVCNに対応するVCN VR277を実行する。NVD212は、ホストマシン206および208にホストされているコンピュートインスタンスが属する1つまたは複数のVCNに対応する1つまたは複数のVCN VR283を実行する。いくつかの実施形態では、そのVCNに対応するVCN VRは、そのVCNに属する少なくとも1つのコンピュートインスタンスをホストするホストマシンに接続されたすべてのNVDによって実行される。ホストマシンが異なるVCNに属するコンピュートインスタンスをホストする場合、そのホストマシンに接続されたNVDは、それらの異なるVCNに対応するVCN VRを実行することができる。
【0098】
VNICおよびVCN VRに加えて、NVDは、さまざまなソフトウェア(たとえば、デーモン)を実行し、NVDによって実行されるさまざまなネットワーク仮想化機能を容易にする1つまたは複数のハードウェアコンポーネントを含むことができる。簡略化のために、これらのさまざまなコンポーネントは、
図2に示す「パケット処理コンポーネント」として合わせてグループ化される。たとえば、NVD210は、パケット処理コンポーネント286を含み、NVD212は、パケット処理コンポーネント288を含む。たとえば、NVDのパケット処理コンポーネントは、NVDのポートおよびハードウェアインターフェースと相互作用して、NVDによって受信されるとともにNVDを使用して通信されるすべてのパケットを監視し、ネットワーク情報を格納するように構成された、パケットプロセッサを含むことができる。ネットワーク情報は、たとえば、NVDによって処理される異なるネットワークフローを特定するネットワークフロー情報と、フローごとの情報(たとえば、フローごとの統計情報)とを含むことができる。いくつかの実施形態では、ネットワークフロー情報は、VNIC単位で格納してもよい。パケットプロセッサは、ステートフルNATおよびL4ファイアウォール(FW)を実装するだけでなく、パケット単位の操作を実行してもよい。別の例として、パケット処理コンポーネントは、NVDによって格納された情報を1つまたは複数の異なるレプリケーションターゲットストアにレプリケートするように構成されたレプリケーションエージェントを含むことができる。さらに別の例として、パケット処理コンポーネントは、NVDのロギング機能を実行するように構成されたロギングエージェントを含むことができる。パケット処理コンポーネントは、NVDの性能および健全性を監視し、場合によっては、NVDに接続されている他のコンポーネントの状態および健全性を監視するソフトウェアも含むことができる。
【0099】
図1は、VCNと、VCN内のサブネットと、サブネット上にデプロイされたコンピュートインスタンスと、コンピュートインスタンスに関連付けられたVNICと、VCNのVRと、VCNのために構成された一組のゲートウェイとを含む、仮想またはオーバーレイネットワーク例のコンポーネントを示す。
図1に示すオーバーレイコンポーネントは、
図2に示す物理コンポーネントのうちの1つまたは複数によって実行またはホストすることができる。たとえば、VCN内のコンピュートインスタンスは、
図2に示す1つまたは複数のホストマシンによって実行またはホストすることができる。ホストマシンによってホストされているコンピュートインスタンスの場合、そのコンピュートインスタンスに関連付けられたVNICは、典型的には、そのホストマシンに接続されたNVDによって実行される(すなわち、VNIC機能は、そのホストマシンに接続されたNVDによって提供される)。VCNのVCN VR機能は、そのVCNの一部であるコンピュートインスタンスをホストまたは実行するホストマシンに接続されているすべてのNVDによって実行される。VCNに関連付けられたゲートウェイは、1つまたは複数の異なるタイプのNVDによって実行してもよい。たとえば、いくつかのゲートウェイは、スマートNICによって実行してもよく、他のゲートウェイは、1つまたは複数のホストマシンまたはNVDの他の実施態様によって実行してもよい。
【0100】
上述したように、顧客VCN内のコンピュートインスタンスは、送信元コンピュートインスタンスと同じサブネットにあり得るか、異なるサブネット内であるが送信元コンピュートインスタンスと同じVCNにあり得る、さまざまな異なるエンドポイントと通信することができ、または送信元コンピュートインスタンスのVCNの外部のエンドポイントと通信することができる。これらの通信は、コンピュートインスタンスに関連付けられたVNIC、VCN VR、およびVCNに関連付けられたゲートウェイを使用して促進される。
【0101】
VCN内の同じサブネット上の2つのコンピュートインスタンス間の通信では、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスに関連付けられたVNICを使用して、通信が促進される。送信元コンピュートインスタンスおよび宛先コンピュートインスタンスは、同じホストマシンによってホストしても、異なるホストマシンによってホストしてもよい。送信元コンピュートインスタンスから発信されたパケットは、送信元コンピュートインスタンスをホストしているホストマシンから、そのホストマシンに接続されたNVDに転送することができる。NVDにおいて、パケットは、パケット処理パイプラインを使用して処理され、このパイプラインは、送信元コンピュートインスタンスに関連付けられたVNICの実行を含むことができる。パケットの宛先エンドポイントが同じサブネット内にあるため、送信元コンピュートインスタンスに関連付けられたVNICの実行により、パケットは、宛先コンピュートインスタンスに関連付けられたVNICを実行するNVDに転送され、NVDは、パケットを処理し、宛先コンピュートインスタンスに転送する。送信元コンピュートインスタンスおよび宛先コンピュートインスタンスに関連付けられたVNICは、(たとえば、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行してもよく、(たとえば、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行してもよい。VNICは、NVDによって格納されたルーティング/転送テーブルを使用して、パケットのネクストホップを決定することができる。
【0102】
サブネット内のコンピュートインスタンスから同じVCN内の異なるサブネット内のエンドポイントにパケットを通信する場合、送信元コンピュートインスタンスから発信されたパケットは、送信元コンピュートインスタンスをホストしているホストマシンから、そのホストマシンに接続されたNVDに通信される。NVDにおいて、パケットは、1つまたは複数のVNICの実行を含むことができるパケット処理パイプライン、およびVCNに関連付けられたVRを使用して処理される。たとえば、NVDは、パケット処理パイプラインの一部として、送信元コンピュートインスタンスに関連付けられたVNICに対応する機能を実行するかまたは呼び出す(VNICを実行するとも称される)。VNICによって実行される機能は、パケット上のVLANタグを調べることを含むことができる。パケットの宛先がサブネットの外部にあるため、VCN VR機能は、次に呼び出され、NVDによって実行される。その後、VCN VRは、パケットを、宛先コンピュートインスタンスに関連付けられたVNICを実行するNVDにルーティングする。そして、宛先コンピュートインスタンスに関連付けられたVNICは、パケットを処理し、パケットを宛先コンピュートインスタンスに転送する。送信元コンピュートインスタンスおよび宛先コンピュートインスタンスに関連付けられたVNICは、(たとえば、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行してもよく、(たとえば、送信元コンピュートインスタンスおよび宛先コンピュートインスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行してもよい。
【0103】
パケットの宛先が送信元コンピュートインスタンスのVCNの外部にある場合、送信元コンピュートインスタンスから発信されたパケットは、送信元コンピュートインスタンスをホストしているホストマシンから、そのホストマシンに接続されたNVDに通信される。NVDは、送信元コンピュートインスタンスに関連付けられたVNICを実行する。パケットの宛先エンドポイントがVCNの外部にあるため、パケットは、その後、そのVCNのVCN VRによって処理される。NVDは、VCN VR機能を呼び出し、その結果、パケットは、VCNに関連付けられた適切なゲートウェイを実行するNVDに転送される場合がある。たとえば、宛先が顧客のオンプレミスネットワーク内のエンドポイントである場合、パケットは、VCN VRによって、VCNのために構成されたDRGゲートウェイを実行するNVDに転送される場合がある。VCN VRは、送信元コンピュートインスタンスに関連付けられたVNICを実行するNVDと同じNVD上で実行してもよく、異なるNVDによって実行してもよい。ゲートウェイは、スマートNIC、ホストマシン、または他のNVD実施態様であり得るNVDによって実行してもよい。次いで、パケットは、ゲートウェイによって処理され、意図された宛先エンドポイントへのパケットの通信を容易にするネクストホップに転送される。たとえば、
図2に示す実施形態では、コンピュートインスタンス268から発信されたパケットは、(NIC232を使用して)リンク220を介してホストマシン202からNVD210に通信してもよい。NVD210において、VNIC276は、送信元コンピュートインスタンス268に関連付けられたVNICであるため、呼び出される。VNIC276は、パケット内のカプセル化情報を検査し、その意図された宛先エンドポイントへのパケットの通信を容易にする目的でパケットを転送するためのネクストホップを決定し、決定したネクストホップにパケットを転送するように構成されている。
【0104】
VCN上にデプロイされたコンピュートインスタンスは、さまざまな異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPI200によってホストされているエンドポイントと、CSPI200外部のエンドポイントとを含むことができる。CSPI200によってホストされているエンドポイントは、顧客のVCN、または顧客に属さないVCNであり得る、同じVCNまたは他のVCN内のインスタンスを含むことができる。CSPI200によってホストされているエンドポイント間の通信は、物理ネットワーク218を介して実行してもよい。コンピュートインスタンスは、CSPI200によってホストされていないかまたはCSPI200の外部にあるエンドポイントと、通信することもできる。これらのエンドポイントの例としては、顧客のオンプレミスネットワークまたはデータセンタ内のエンドポイント、またはインターネットなどの公衆ネットワークを介してアクセス可能なパブリックエンドポイントが挙げられる。CSPI200の外部のエンドポイントとの通信は、さまざまな通信プロトコルを使用して、公衆ネットワーク(たとえば、インターネット)(
図2に図示せず)またはプライベートネットワーク(
図2に図示せず)を介して実行してもよい。
【0105】
図2に示すCSPI200のアーキテクチャは、単なる一例であり、限定的であるようには意図されていない。代替実施形態では、バリエーション、代替形態、および変形形態が可能である。たとえば、いくつかの実施態様では、CSPI200は、
図2に示すものよりも多いかまたは少ないシステムまたはコンポーネントを有してもよく、2つ以上のシステムを組み合わせてもよく、または異なるシステムの構成または配置を有してもよい。
図2に示すシステム、サブシステム、および他のコンポーネントは、それぞれのシステムの1つまたは複数の処理装置(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で、ハードウェアを使用して、またはそれらの組み合わせで実装することができる。ソフトウェアは、非一時的記憶媒体(たとえば、メモリデバイス)に格納することができる。
【0106】
図4は、いくつかの実施形態による、マルチテナンシをサポートするためのI/O仮想化を提供する、ホストマシンとNVDとの間の接続を示す。
図4に示すように、ホストマシン402は、仮想化環境を提供するハイパーバイザ404を実行する。ホストマシン402は、2つの仮想マシンインスタンス、すなわち、顧客/テナント#1に属するVM1 406と、顧客/テナント#2に属するVM2 408とを実行する。ホストマシン402は、リンク414を介してNVD412に接続されている物理NIC410を含む。コンピュートインスタンスの各々は、NVD412によって実行されるVNICにアタッチされている。
図4の実施形態では、VM1 406は、VNIC-VM1 420にアタッチされ、VM2 408は、VNIC-VM2 422にアタッチされている。
【0107】
図4に示すように、NIC410は、2つの論理NIC、すなわち、論理NIC A416および論理NIC B418を含む。各仮想マシンは、それ自体の論理NICにアタッチされるとともに、それ自体の論理NICとともに動作するように構成されている。たとえば、VM1 406は、論理NIC A416にアタッチされ、VM2 408は、論理NIC B418にアタッチされている。ホストマシン402が複数のテナントによって共有されている1つの物理NIC410のみを含むにも関わらず、論理NICにより、各テナントの仮想マシンは、独自のホストマシンおよびNICを有していると考える。
【0108】
いくつかの実施形態では、各論理NICには、独自のVLAN IDが割り当てられる。したがって、テナント#1の論理NIC A416には特定のVLAN IDが割り当てられ、テナント#2の論理NIC B418には別のVLAN IDが割り当てられる。VM1 406からパケットが通信されると、ハイパーバイザにより、テナント#1に割り当てられたタグがパケットに付与され、その後、パケットは、リンク414を介してホストマシン402からNVD412に通信される。同様に、VM2 408からパケットが通信されると、ハイパーバイザにより、テナント#2に割り当てられたタグがパケットに付与され、その後、パケットは、リンク414を介してホストマシン402からNVD412に通信される。したがって、ホストマシン402からNVD412に通信されたパケット424は、特定のテナントおよび関連するVMを特定する関連タグ426を有する。NVDでは、ホストマシン402から受信されたパケット424に対して、そのパケットに関連付けられたタグ426を使用して、そのパケットがVNIC-VM1 420によって処理されるべきか、VNIC-VM2 422によって処理されるべきかが決定される。そして、パケットは、対応するVNICによって処理される。
図4に示す構成により、各テナントのコンピュートインスタンスは、独自のホストマシンおよびNICを所有していると考えることができる。
図4に示すセットアップは、マルチテナンシをサポートするためのI/O仮想化を提供する。
【0109】
図5は、いくつかの実施形態による物理ネットワーク500の簡略化されたブロック図を示す。
図5に示す実施形態は、Closネットワークとして構造化されている。Closネットワークは、高い二分割帯域幅および最大リソース利用率を維持しながら、接続冗長性を提供するように設計された特定のタイプのネットワークトポロジである。Closネットワークは、非ブロッキング、多段または多層スイッチングネットワークの一種であり、そこでは、段または層の数は、2、3、4、5などであり得る。
図5に示す実施形態は、層1、層2、および層3を含む3層ネットワークである。TORスイッチ504は、Closネットワークの層-0スイッチを表す。1つまたは複数のNVDは、TORスイッチに接続されている。層-0スイッチは、物理ネットワークのエッジデバイスとも称される。層-0スイッチは、リーフスイッチとも称される層-1スイッチに接続されている。
図5に示す実施形態において、「n」個の層-0TORスイッチのセットは、「n」個の層-1スイッチのセットに接続され、合わせてポッドを形成している。ポッド内の各層-0スイッチは、ポッド内のすべての層-1スイッチに相互接続されるが、ポッド間のスイッチは、接続されていない。いくつかの実施態様では、2つのポッドは、ブロックと称される。各ブロックは、「n」個の層-2スイッチ(スパインスイッチと称される場合もある)のセットによってサービスを提供されるかまたはそれに接続されている。物理ネットワークトポロジに、いくつかのブロックがあり得る。そして、層-2スイッチは、「n」個の層-3スイッチ(スーパースパインスイッチとも称される)に接続されている。物理ネットワーク500を介するパケットの通信は、典型的には、1つまたは複数のレイヤ3通信プロトコルを使用して実行される。典型的には、TORレイヤを除く物理ネットワークのすべてのレイヤは、nウェイ冗長であり、したがって高可用性を可能にする。ポッドおよびブロックにポリシーを指定して、物理ネットワークのスイッチの相互の可視性を制御することによって、物理ネットワークの拡張を可能にすることができる。
【0110】
Closネットワークの特徴は、ある層-0スイッチから別の層-0スイッチに到達する(または、層-0スイッチに接続されたNVDから層-0スイッチに接続された別のNVDに到達する)最大ホップカウントが一定であることである。たとえば、3層Closネットワークにおいて、パケットが1つのNVDから別のNVDに到達するために最大7つのホップが必要とされ、この場合、ソースNVDおよびターゲットNVDは、Closネットワークのリーフ層に接続されている。同様に、4層Closネットワークにおいて、パケットが1つのNVDから別のNVDに到達するために最大9つのホップが必要とされ、この場合、ソースNVDおよびターゲットNVDは、Closネットワークのリーフ層に接続されている。したがって、Closネットワークアーキテクチャは、データセンタ内およびデータセンタ間の通信に重要なネットワーク全体を通して一貫したレイテンシを維持する。Closトポロジは、水平方向に拡張し、コスト効率に優れている。さまざまな層により多くのスイッチ(たとえば、より多くのリーフスイッチおよびスパインスイッチ)を増設することによって、かつ隣接する層のスイッチ間のリンクの数を増やすことによって、ネットワークの帯域幅/スループットキャパシティを容易に増加させることができる。
【0111】
いくつかの実施形態では、CSPI内の各リソースには、クラウド識別子(CID)と呼ばれる一意の識別子が割り当てられる。この識別子は、リソースの情報の一部として含まれ、たとえばコンソールを介して、またはAPIを介して、リソースを管理するために使用することができる。CIDのシンタックス例は、
ocid1.<RESOURCE TYPE>.<REALM>.[REGION][.FUTURE USE].<UNIQUE ID>
であり、式中、以下の通りである。
「ocid1」:CIDのバージョンを示す文字列。
「resource type」:リソースのタイプ(たとえば、インスタンス、ボリューム、VCN、サブネット、ユーザ、グループなど)。
「realm」:リソースが存在するレルム。値例は、商用レルムの「c1」、政府クラウドレルムの「c2」、または連邦政府クラウドレルムの「c3」などである。各レルムは、独自のドメイン名を有することができる。
「region」:リソースが存在するリージョン。リージョンがリソースに適用可能でない場合、この部分は空白であり得る。
「future use」:将来の使用のために予約されている。
「unique ID」:IDの一意の部分。フォーマットは、リソースまたはサービスのタイプに応じて異なる場合がある。
【0112】
図6は、いくつかの実施形態による、CLOSネットワーク配置を組み込んだクラウドインフラストラクチャ600のブロック図を示す。クラウドインフラストラクチャ600は、複数のラック(たとえば、ラック1 610…ラックM、620)を含む。各ラックは、複数のホストマシン(本明細書ではホストとも称する)を含む。たとえば、ラック1 610は、複数のホスト(たとえば、K台のホストマシン)ホスト1-A、612~ホスト1-K、614を含み、ラックMは、K台のホストマシン、すなわちホストM-A、622~ホストM-K、624を含む。
図6の図示(すなわち、各ラックが同じ数のホストマシン、たとえばK台のホストマシンを含む)は、例示的であり非限定的であるように意図されていることが理解される。たとえば、ラックM、620は、ラック1、610に含まれるホストマシンの数と比較して、より多いかまたはより少ない数のホストマシンを有することができる。
【0113】
各ホストマシンは、複数の画像処理装置(GPU)を含む。たとえば、
図6に示すように、ホストマシン1-A 612は、N個のGPUたとえばGPU1、613を含む。さらに、(各ホストマシンが同じ数のGPU、すなわちN個のGPUを含むという)
図6の図示は、例示的であり非限定的であるように意図されており、すなわち、各ホストマシンが異なる数のGPUを含むことができることが理解される。各ラックは、ホストマシン上でホストされているGPUと通信可能に連結されるトップオブラック(TOR)スイッチを含む。たとえば、ラック1 610は、ホスト1-A、612およびホスト1-K、614に通信可能に連結されるTORスイッチ(すなわち、TOR 1)616を含み、ラックM 620は、ホストM-A、622およびホストM-K、624に通信可能に連結されるTORスイッチ(すなわち、TOR M)626を含む。
図6に示すTORスイッチ(すなわち、TOR 1 616、およびTOR M 626)は、各々、ラックに含まれる各ホストマシン上でホストされているN個のGPUにTORスイッチを通信可能に連結するために使用されるN個のポートを含むことが理解される。
図6に示すようなTORスイッチのGPUへの連結は、例示的であり非限定的であることが意図されている。たとえば、いくつかの実施形態では、TORスイッチは、複数のポートを有することができ、それらの各々は、各ホストマシン上のGPUに対応し、すなわち、ホストマシン上のGPUは、通信リンクを介してTORの一意のポートに接続することができる。さらに、ネットワークデバイス(たとえば、TOR 1 616)によって受信されたトラフィックは、本明細書では、ネットワークデバイスの特定の着信ポート-リンクで受信されたトラフィックとして特徴付けられる。たとえば、ホスト1-A 612のGPU 1 613が(リンク617を使用して)データパケットをTOR 1 616に送信した場合、データパケットは、TOR 1スイッチのポート619で受信される。TOR 1 616は、このデータパケットをTORの第1の着信ポート-リンクで受信した情報として特徴付ける。同様の概念をTORのすべての発信ポート-リンクに適用することができることが理解される。
【0114】
各ラックからのTORスイッチは、複数のスパインスイッチ、たとえばスパインスイッチ1、630およびスパインスイッチP 640に通信可能に連結される。
図6に示すように、TOR1、616は、それぞれ、2つのリンクを介してスパインスイッチ1 630に接続され、別の2つのリンクを介してスパインスイッチP、640に接続される。特定のTORスイッチからスパインスイッチに送信される情報は、本明細書では、アップリンクを介して行われる通信と称し、一方、スパインスイッチからTORスイッチに送信される情報は、本明細書では、ダウンリンクを介して行われる通信と称する。いくつかの実施形態によれば、TORスイッチおよびスパインスイッチは、CLOSネットワーク配置(たとえば、多段スイッチングネットワーク)で接続され、各TORスイッチは、CLOSネットワークの「リーフ」ノードを形成する。
【0115】
いくつかの実施形態によれば、ホストマシンに含まれるGPUは、機械学習に関連するタスクを実行する。このような設定では、単一のタスクが、さらに、複数のホストマシンにわたって、かつ複数のラックにわたって拡散させることができる多数(たとえば、64個)のGPUにわたって実行/拡散される可能性がある。これらのGPUのすべてが、同じタスク(すなわち、ワークロード)を処理しているため、時間的に同期して互いに通信する必要がある。さらに、任意の所与の瞬間に、GPUは計算モードか通信モードのうちのいずれか一方にあり、すなわち、GPUは、ほぼ同じ瞬間に互いに通信する。ワークロードの速度は、最も遅いGPUの速度によって決まる。
【0116】
典型的には、パケットを送信元GPU(たとえば、ホスト1-A 612のGPU1、613)から宛先GPU(たとえば、ホストM-A 622のGPU1、623)にルーティングするために、等コストマルチパス(ECMP:equal cost multipath)ルーティングが利用される。ECMPルーティングでは、送信側から受信側へのトラフィックのルーティングに利用可能な複数の等コストの経路がある場合、特定の経路を選択するために選択技術が使用される。したがって、トラフィックを受信しているネットワークデバイス(たとえば、TORスイッチまたはスパインスイッチ)では、選択アルゴリズムを使用して、ネットワークデバイスから別のネットワークデバイスへのネクストホップでトラフィックを転送するために使用される発信リンクが選択される。このような発信リンクの選択は、送信側から受信側までの経路における各ネットワークデバイスで行われる。ハッシュベースの選択アルゴリズムが、広く使用されているECMPの選択技術であり、そこでは、ハッシュはパケットの4タプル(たとえば、送信元ポート、宛先ポート、送信元IP、宛先IP)に基づくことができる。
【0117】
ECMPルーティングはフロー認識(flow aware)ルーティング技術であり、そこでは、各フロー(すなわち、データパケットのストリーム)は、フローの期間にわたって、特定の経路にハッシュされる。したがって、フロー内のパケットは、特定の発信ポート/リンクを使用してネットワークデバイスから転送される。これは通常、フロー内のパケットが順番に到着する、すなわち、パケットの再順序付けが不要であることを確実にするために行われる。しかしながら、ECMPルーティングは、帯域幅(またはスループット)非認識(unaware)である。言い換えれば、TORスイッチおよびスパインスイッチは、並列リンク上のフローの統計的なフロー認識(スループット非認識)ECMP負荷分散を実行する。
【0118】
標準ECMPルーティング(すなわち、フローのみ認識するルーティング)では、ネットワークデバイスが2つの別々の着信リンクを介して受信したフローが、同じ発信リンクにハッシュされる可能性があり、それによってフロー衝突が発生するという問題がある。たとえば、2つのフローが2つの別々の着信100Gリンク経由で着信し、フローの各々が同じ100G発信リンクにハッシュされる状況を考慮する。このような状況では、着信帯域幅は200Gであるが、発信帯域幅は100Gであるため、輻輳(すなわち、フロー衝突)が発生し、パケットがドロップされることになる。たとえば、以下に説明する
図7は、フロー衝突の例示的なシナリオ700を示す。
【0119】
図7に示すように、2つのフロー、すなわち、ホストマシンホスト1-A、612の第1のGPUからTORスイッチ616に向けられるフロー1 710(実線で示す)と、同じホストマシン612上の別のGPUからTORスイッチ616に向けられるフロー2 720(破線で示す)とがある。2つのフローは、別々のリンク、すなわちTORの別々の着信ポート-リンクでTORスイッチ616に向けられることに留意されたい。
図7に示すすべてのリンクが100Gの容量(すなわち、帯域幅)を有すると仮定する。TORスイッチ616がECMPルーティングアルゴリズムを実行する場合、2つのフローがTORの同じ発信ポート-リンク、たとえば、TORスイッチ616をスパインスイッチ630に接続するリンク730に接続されたTORのポートを使用するようにハッシュされる可能性がある。この場合、2つのフロー間で衝突が発生し(「X」マークで表す)、パケットがドロップされることになる。
【0120】
このような衝突シナリオは、一般に、プロトコルに関係なく、すべてのタイプのトラフィックに問題がある。たとえば、TCPは、パケットがドロップされ、送信側がそのドロップされたパケットに対する確認応答を受け取らなかった場合、パケットが再送信されるという点でインテリジェントである。しかしながら、リモートダイレクトメモリアクセス(RDMA)タイプのトラフィックでは、状況は悪化する。RDMAネットワークは、種々の理由からTCPを使用しない(たとえば、TCPは、低レイテンシおよび高性能に適していない複雑なロジックを有する)。RDMAネットワークは、RDMAオーバーインフィニバンド(RDMA over Infiniband)またはRDMAオーバーコンバージドイーサネット(RoCE:RDMA over converged Ethernet)などのプロトコルを使用する。RoCEでは、輻輳制御アルゴリズムがあり、そこでは、送信側が輻輳またはドロップされたパケットの発生を特定すると、送信側はパケットの送信を遅くする。ドロップされたパケットの場合、そのドロップされたパケットだけでなく、ドロップされたパケットの周囲のいくつかのパケットもまた再送信され、それにより、利用可能な帯域幅がさらに消費され、パフォーマンスが低下することになる。
【0121】
上述したフロー衝突問題を克服する技術について以下に説明する。フロー衝突問題は、CPUおよびGPUからのトラフィックに影響することが理解される。しかしながら、フロー衝突問題は、時間同期要件が厳しいため、GPUにとってはるかに大きな問題である。さらに、標準的なECMPルーティングメカニズムは、統計的な帯域幅非認識の方法で情報をルーティングするという固有の特性により、ネットワークがオーバーサブスクライブされるかアンダーサブスクライブされるかに関係なく、フロー衝突シナリオを引き起こすことが理解されるべきである。オーバーサブスクリプションのないネットワークは、あるデバイス(たとえば、TOR、スパインスイッチ)への着信リンクの帯域幅が、発信リンクの帯域幅と同じであるネットワークである。すべてのリンクが同じ帯域幅容量を有する場合、着信リンクの数は発信リンクの数と同じであることに留意されたい。
【0122】
いくつかの実施形態によれば、上述したフロー衝突問題を克服する技術としては、GPUベースのポリシールーティングメカニズム(本明細書ではGPUベースのトラフィックエンジニアリングメカニズムとも称する)と、修正ECMPルーティングメカニズムとが挙げられる。これらの技術の各々について、以下にさらに詳細に説明する。
【0123】
図8は、いくつかの実施形態による、
図6のクラウドインフラストラクチャのネットワークデバイスに実装されたポリシーベースのルーティングメカニズムを示す。具体的には、クラウドインフラストラクチャ800は、複数のラック、たとえば、ラック1 810~ラックM 820を含む。各ラックは、複数のGPUを含むホストマシンを含む。たとえば、ラック1 810は、ホストマシン、すなわちホスト1-A 812を含み、ラックM 820は、ホストマシン、すなわちホストM-A 822を含む。各ラックはTORスイッチを含み、たとえば、ラック1 810はTOR 1スイッチ814を含み、ラックM 820はTOR Mスイッチ824を含む。各ラック内のホストマシンは、ラック内のそれぞれのTORスイッチに通信可能に連結されている。TORスイッチ、すなわちTORスイッチ1、814およびTORスイッチM 824は、さらにスパインスイッチ、すなわちスパインスイッチ830およびスパインスイッチ840に通信可能に連結されている。ポリシーベースのルーティングについて説明するために、かつ例示のために、クラウドインフラストラクチャ800は、ラックごとに単一のホストマシンを含むものとして示す。しかしながら、インフラストラクチャ内の各ラックは、2つ以上のホストマシンを有することができることが理解される。
【0124】
いくつかの実施形態によれば、送信側から受信側へのデータパケットは、ホップバイホップベースで、ネットワーク内でルーティングされる。ルーティングポリシーは、着信ポート-リンクを発信ポート-リンクに結び付ける各ネットワークデバイスにおいて構成される。ネットワークデバイスは、TORスイッチまたはスパインスイッチであり得る。
図8を参照すると、2つのフロー、すなわち、意図された宛先がホストマシン822上のGPU 1であるホストマシン812上のGPU 1からのフロー1と、意図された宛先がホストマシン822上のGPU Nであるホストマシン812上のGPU Nからのフロー2とが示されている。ネットワークデバイス、すなわち、TOR 1 814、スパイン1 830、TOR M 824、およびスパインP 840は、着信ポート-リンクを発信ポート-リンクに結び付ける(またはマッチングさせる)ように構成されている。着信ポート-リンクの発信ポート-リンクへのマッチングは、各ネットワークデバイスで(たとえば、ポリシーテーブルで)維持される。
【0125】
図8を参照すると、フロー1(すなわち、実線で示すフロー)に関して、TOR 1 814は、リンク850でパケットを受信すると、受信したパケットを発信リンク855で転送するように構成されていることを観察することができる。同様に、スパインスイッチ830は、リンク855を介してパケットを受信すると、そのパケットを発信リンク860で転送するように構成されている。最終的に、TOR M 824は、リンク860でパケットを受信すると、そのパケットをその意図された宛先、すなわちホストマシン822上のGPU 1に送信するために、パケットを発信リンク865で転送するように構成されている。同様に、フロー2(すなわち、破線で示すフロー)に関して、TOR 1 814は、リンク870でパケットを受信すると、受信したパケットを発信リンク875でスパインP 840に転送するように構成されている。スパインスイッチ840は、リンク875を介してパケットを受信すると、そのパケットを発信リンク880で転送するように構成されている。最終的に、TOR M 824は、リンク880でパケットを受信すると、そのパケットをその意図された宛先、すなわちホストマシン822上のGPU Nに送信するために、パケットを発信リンク885で転送するように構成されている。
【0126】
このように、GPUポリシーベースのルーティングメカニズムに従って、各ネットワークデバイスは、衝突を回避するために、着信ポート/リンクを発信ポート/リンクに結び付けるように構成されている。たとえば、フロー1およびフロー2の第1のホップフローを考慮すると、TOR 1 814は、リンク850で(フロー1に対応する)第1のデータパケットを受信し、リンク870で(フロー2に対応する)第2のデータパケットを受信する。TOR 1 814は、着信リンク/ポート850で受信したデータパケットを発信リンク/ポート855に転送し、着信リンク/ポート870で受信したデータパケットを発信リンク/ポート875に転送するように構成されているため、第1のデータパケットと第2のデータパケットが衝突しないことが確実になる。クラウドインフラストラクチャ内の各ネットワークデバイスにおいて、着信ポート-リンクと発信ポート-リンクとの間に1-1の対応があり、すなわち、着信ポート-リンクと発信ポート-リンクとの間のマッピングが、フローおよび/またはフローによって実行されるプロトコルとは無関係に実行されることが理解される。さらに、いくつかの実施形態によれば、特定のネットワークデバイスの発信リンクに障害が発生した場合、ネットワークデバイスは、そのルーティングポリシーをGPUポリシーベースのルーティングから標準ECMPルーティングに切り替えて、(さまざまな利用可能な出力リンクから)新たな利用可能な出力リンクを取得し、フローをその新たな出力リンクに送信するように構成されている。この場合、輻輳の原因となるフロー衝突が発生する可能性があることが留意される。
【0127】
次に
図9を参照すると、いくつかの実施形態による、異なるタイプの接続を示すクラウドインフラストラクチャ900のブロック図が示されている。インフラストラクチャ900は、複数のラック、たとえば、ラック1 910、ラックD 920、およびラックM、930を含む。ラック910および930は、複数のホストマシンを含む。たとえば、ラック1 910は、複数のホスト(たとえば、K台のホストマシン)、すなわちホスト1-A、912~ホスト1-K、914を含み、ラックMは、K台のホストマシン、すなわちホストM-A、932~ホストM-K、934を含む。ラックD 920は、1つまたは複数のホストマシン922を含み、ホストマシン922の各々が複数のCPUを含み、すなわち、ホストマシン922は非GPUホストマシンである。ラック910、920、および930の各々は、TORスイッチ、すなわち、それぞれ、それぞれのラック内のホストマシンに通信可能に連結されているTOR 1、916、TOR D 926、およびTOR M 936を含む。さらに、TORスイッチ916、926、および936は、複数のスパインスイッチ、すなわちスパインスイッチ940および950に通信可能に連結されている。
【0128】
図9に示すように、GPUホスト(すなわち、ホスト1-A 912)から別のGPUホスト(すなわち、ホストM-A 932)への第1の接続(すなわち、破線で示す接続1)が存在し、GPUホスト(すなわち、ホスト1-K 914)から非GPUホスト(すなわち、ホストD 922)への第2の接続(すなわち、点線で示す接続2)が存在する。接続1に関して、フローに関連するデータパケットは、
図8で前述したように、GPUベースのポリシールーティングメカニズムに基づいて各中間ネットワークデバイスを構成することによって、ホップバイホップベースでルーティングされる。具体的には、接続1のデータパケットは、
図9に示す破線のリンクに沿って、すなわち、ホスト1-AからTOR 1へ、TOR 1からスパインスイッチ1へ、スパインスイッチ1からTOR Mへ、最終的にTOR MからホストM-Aへルーティングされる。ネットワークデバイスの各々は、ネットワークデバイスの着信リンク-ポートを発信リンク-ポートに結び付けるように構成されている。
【0129】
対照的に、接続2は、GPUベースのホスト(すなわち、ホスト1-K 914)から非GPUベースのホスト(すなわち、ホストD 922)までである。この場合、TOR 1 916は、着信リンク-ポート、すなわちGPUベースのホストからデータパケットを受信するポートおよびリンク(971)を、発信リンク-ポート、すなわち出力ポートおよび出力ポートに接続されたリンク972に結び付けるように構成されている。したがって、TOR 1は、発信リンク972を使用してデータパケットをスパインスイッチ1 940に転送する。データパケットは非GPUベースのホストに向けられるため、スパインスイッチ1 940はパケットをTOR Dに転送するためにポリシーベースのルーティングメカニズムを利用しない。むしろ、スパインスイッチ1 940は、ECMPルーティングメカニズムを利用して、利用可能なリンク980のうちの1つを選択してパケットをTOR Dに転送し、TOR DはデータパケットをホストD 922に転送する。
【0130】
いくつかの実施形態では、
図7を参照して前述したフロー衝突は、ECMPルーティングの修正バージョンを実装することによって、本明細書に記載するクラウドインフラストラクチャのネットワークデバイスによって回避される。この場合、ECMPハッシュアルゴリズムは、ネットワークデバイスの特定の着信ポート-リンクを介して着信するトラフィックが、ネットワークデバイスの同じ発信ポート-リンクにハッシュされる(かつ向けられる)ように修正される。具体的には、各ネットワークデバイスは、パケットの転送に使用される出力ポート-リンクを決定するために修正ECMPアルゴリズムを実装し、そこでは、修正ECMPアルゴリズムにより、特定の着信ポート-リンクで受信されたいかなるパケットも、常に同じ発信ポート-リンクにハッシュする。たとえば、ネットワークデバイスの第1の着信ポート-リンクで第1のパケットおよび第2のパケットが受信され、ネットワークデバイスの第2の着信ポート-リンクで第3のパケットおよび第4のパケットが受信される場合を考慮する。このような状況において、ネットワークデバイスは、修正ECMPアルゴリズムを実装するように構成され、そこでは、ネットワークデバイスは、ネットワークデバイスの第1の発信ポート-リンクで第1のパケットおよび第2のパケットを送信し、ネットワークデバイスの第2の発信ポート-リンクで第3のパケットおよび第4のパケットを送信し、ネットワークデバイスの第1の着信ポート-リンクはネットワークデバイスの第2の着信ポート-リンクとは異なり、ネットワークデバイスの第1の発信ポート-リンクはネットワークデバイスの第2の発信ポート-リンクとは異なる。いくつかの実施態様では、転送情報データベース(たとえば、転送テーブル、ECMPテーブルなど)に格納されている情報を変更して、上述した機能を有効にすることができる。
【0131】
次に
図10を参照すると、いくつかの実施形態によるラック1000の例示的な構成が示されている。
図10に示すように、ラック1000は、2つのホストマシン、すなわちホストマシン1010およびホストマシン1020を含む。ラック1000が2つのホストマシンを含むように示すが、ラック1000は、より多くの数のホストマシンを含んでもよいことが理解される。各ホストマシンは、複数のGPUおよび複数のCPUを含む。たとえば、ホストマシン1010は、複数のCPU1012および複数のGPU1014を含み、ホストマシン1020は、複数のCPU1022および複数のGPU1024を含む。
【0132】
ホストマシンは、異なるTORスイッチを介して異なるネットワークファブリックに通信可能に連結される。たとえば、ホストマシン1010および1020は、TORスイッチ、すなわちTOR 1スイッチ1050を介して、ネットワークファブリック(本明細書ではラック1000のフロントエンドネットワークと称する)に通信可能に連結される。フロントエンドネットワークは、外部ネットワークに対応してもよい。より具体的には、ホストマシン1010は、TOR 1スイッチ1050に連結されたネットワークインターフェースカード(NIC)1030およびネットワーク仮想化デバイス(NVD)1035を介して、フロントエンドネットワークに接続される。ホストマシン1020は、NIC1040と、TOR 1スイッチ1050に連結されたNVD1045とを介して、フロントエンドネットワークに接続される。したがって、いくつかの実施形態によって、各ホストマシンのCPUは、NIC、NVD、およびTORスイッチを介してフロントエンドネットワークと通信することができる。たとえば、ホストマシン1010のCPU1012は、NIC1030、NVD1035、およびTOR 1スイッチ1050を介してフロントエンドネットワークと通信することができる。
【0133】
ホストマシン1010および1020は、他方でサービス品質(QoS)対応のバックエンドネットワークに接続されている。(QoS)対応のバックエンドネットワークは、本明細書では、
図6に示すようにGPUクラスタネットワークに対応するバックエンドネットワークと称する。ホストマシン1010は、別のNIC1065を介して、ホストマシン1010をバックエンドネットワークに通信可能に連結するTOR 2スイッチ1060に接続されている。同様に、ホストマシン1020は、NIC1080を介して、ホストマシン1020をバックエンドネットワークに通信可能に連結するTOR 2スイッチ1060に接続されている。このように、各ホストマシンの複数のGPUは、NICおよびTORスイッチを介してバックエンドネットワークと通信することができる。このように、複数のCPUは、フロントエンドおよびバックエンドネットワークとそれぞれ通信するために、(GPUによって利用されるNICのセットと比較して)別々のNICのセットを利用する。
【0134】
図11Aは、いくつかの実施形態による、パケットをルーティングする際にネットワークデバイスによって実行されるステップを示す例示的なフローチャート1100を示す。
図11Aに示す処理は、それぞれのシステム、ハードウェア、またはそれらの組み合わせの1つまたは複数の処理装置(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で実装することができる。ソフトウェアは、非一時的記憶媒体に(たとえば、メモリデバイスに)格納することができる。
図11Aに提示するとともに以下に説明する方法は、例示的であり非限定的であるように意図されている。
図11Aは、特定のシーケンスまたは順序で発生するさまざまな処理ステップを示すが、これは限定的であるようには意図されていない。いくつかの代替的な実施形態において、ステップをいくつかの異なる順序で実行してもよく、またはいくつかのステップを並行して実行してもよい。
【0135】
プロセスはステップ1105で開始し、そこで、ネットワークデバイスが、ホストマシンの画像処理装置(GPU)によって送信されたデータパケットを受信する。ステップ1110において、ネットワークデバイスは、パケットが受信された着信ポート/リンクを決定する。ステップ1115において、ネットワークデバイスは、ポリシールーティング情報に基づいて、(パケットが受信された)着信ポート/リンクに対応する発信ポート/リンクを特定する。いくつかの実施形態によれば、ポリシールーティング情報は、ネットワークデバイスの各着信ポート-リンクをネットワークデバイスの一意の発信リンク-ポートに結び付ける、ネットワークデバイスのための事前に構成されたGPUルーティングテーブルに対応する。
【0136】
次に、プロセスはステップ1120に移り、そこで、発信ポート-リンクが機能状態にあるか否か、たとえば、発信リンクがアクティブであるか否かを決定する問い合わせが実行される。問い合わせに対する応答が肯定的である(すなわち、リンクがアクティブである)場合、プロセスはステップ1125に移り、問い合わせに対する応答が否定的である(すなわち、リンクが故障状態/非アクティブ状態である)場合、プロセスはステップ1130に移る。ステップ1125において、ネットワークデバイスは、(ステップ1115で特定された)発信ポート-リンクを利用して、受信データパケットを別のネットワークデバイスに転送する。ステップ1130において、ネットワークデバイスは、データパケットのフロー情報を取得し、たとえば、フロー情報は、パケットに関連付けられた4タプル(すなわち、送信元ポート、宛先ポート、送信元IPアドレス、宛先IPアドレス)に対応してもよい。取得されたフロー情報に基づいて、ネットワークデバイスは、ECMPルーティングを利用して、新たな発信ポート-リンク、すなわち利用可能な発信ポート-リンクを特定する。その後、プロセスはステップ1135に移り、そこで、ネットワークデバイスは、新たに取得した発信ポート-リンクを利用して、ステップ1105で受信したデータパケットを転送する。
【0137】
図11Bは、いくつかの実施形態による、パケットをルーティングする際にネットワークデバイスによって実行されるステップを示す別の例示的なフローチャート1150を示す。
図11Bに示す処理は、それぞれのシステム、ハードウェア、またはそれらの組み合わせの1つまたは複数の処理装置(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で実装することができる。ソフトウェアは、非一時的記憶媒体に(たとえば、メモリデバイスに)格納することができる。
図11Bに提示するとともに以下に説明する方法は、例示的であり非限定的であるように意図されている。
図11Bは、特定のシーケンスまたは順序で発生するさまざまな処理ステップを示すが、これは限定的であるようには意図されていない。いくつかの代替的な実施形態において、ステップをいくつかの異なる順序で実行してもよく、またはいくつかのステップを並行して実行してもよい。
【0138】
プロセスはステップ1155で開始し、そこで、ネットワークデバイスが、ホストマシンの画像処理装置(GPU)によって送信されたデータパケットを受信する。ステップ1160において、ネットワークデバイスは、受信したパケットのフロー情報を決定する。いくつかの実施態様では、フロー情報は、パケットに関連付けられた4タプル(すなわち、送信元ポート、宛先ポート、送信元IPアドレス、宛先IPアドレス)に対応してもよい。ステップ1165において、ネットワークデバイスは、ECMPルーティングの修正バージョンを実装することによって、発信ポート-リンクを計算する。修正ECMPアルゴリズムにより、特定の着信ポート-リンクで受信されたいかなるパケットも、常に同じ発信ポート-リンクで送信されるようにハッシュされる。
【0139】
次に、プロセスはステップ1170に移り、そこで、(ステップ1165で決定された)発信ポート-リンクが機能状態にあるか否か、たとえば、発信リンクがアクティブであるか否かを決定する問い合わせが実行される。問い合わせに対する応答が肯定的である(すなわち、リンクがアクティブである)場合、プロセスはステップ1175に移り、問い合わせに対する応答が否定的である(すなわち、リンクが故障状態/非アクティブ状態である)場合、プロセスはステップ1180に移る。ステップ1175において、ネットワークデバイスは(ステップ1165で特定された)発信ポート-リンクを利用して、受信データパケットを別のネットワークデバイスに転送する。(ステップ1165の)特定された発信ポート-リンクが非アクティブ状態であると決定された場合、プロセスはステップ1180に移る。ステップ1180において、ネットワークデバイスは、ECMPルーティング(すなわち、標準ECMPルーティング)を実装して、新しい発信ポート-リンクを特定する。その後、プロセスはステップ1185に移り、そこで、ネットワークデバイスは、新たに計算された発信ポート-リンクを利用して、ステップ1155で受信したデータパケットを転送する。
【0140】
ホストマシンのGPUから発信されるデータパケットをルーティングする上述した技術により、スループットが、小規模なクラスタでは20%、大規模なクラスタでは70%増加することになる(すなわち、標準ECMPルーティングアルゴリズムに対して3倍の改善)ことが留意される。
【0141】
クラウドインフラストラクチャ実施形態例
上述したように、サービスとしてのインフラストラクチャ(IaaS)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、公衆ネットワーク(たとえば、インターネット)を介して仮想化コンピューティングリソースを提供するように構成することができる。IaaSモデルにおいて、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、デプロイメントソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザレイヤ)など)をホストすることができる。場合によっては、IaaSプロバイダは、インフラストラクチャコンポーネントに付随する種々のサービス(たとえば、課金、監視、ロギング、セキュリティ、負荷分散、およびクラスタリングなど)を提供することもできる。したがって、これらのサービスがポリシー駆動型であり得るため、IaaSユーザは、アプリケーションの可用性および性能を維持するために、負荷分散を駆動するポリシーを実装することができる可能性がある。
【0142】
いくつかの事例では、IaaS顧客は、インターネットなどの広域ネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウェアをデプロイし、ワークロードおよびバックアップのためのストレージバケットを作成し、さらにはそのVMにエンタープライズソフトウェアをインストールすることができる。顧客は、その後、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーションのトラブルシューティング、パフォーマンスの監視、ディザスタリカバリの管理などを含む、さまざまな機能を実行することができる。
【0143】
大部分の場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とする。クラウドプロバイダは、必須ではないが、IaaSの提供(たとえば、オファー、レンタル、販売)に特化したサードパーティサービスであってもよい。エンティティが、プライベートクラウドをデプロイし、インフラストラクチャサービスの独自のプロバイダになるように決めてもよい。
【0144】
いくつかの例では、IaaSデプロイメントとは、新たなアプリケーション、またはアプリケーションの新たなバージョンを、準備されたアプリケーションサーバなどに配置するプロセスである。IaaSデプロイメントは、サーバを準備する(たとえば、ライブラリ、デーモンなどをインストールする)プロセスを含んでもよい。IaaSデプロイメントは、多くの場合、クラウドプロバイダによって、ハイパーバイザレイヤ(たとえば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、(OS)、ミドルウェア、および/または(たとえば、(たとえば、オンデマンドでスピンアップすることができる)セルフサービス仮想マシンでの)アプリケーションデプロイメントなどの処理を担当することができる。
【0145】
いくつかの例では、IaaSのプロビジョニングは、使用されるコンピュータまたは仮想ホストを取得すること、およびさらにはコンピュータまたは仮想ホスト上に必要なライブラリまたはサービスをインストールすることを指す場合がある。大部分の場合、デプロイメントはプロビジョニングを含まず、プロビジョニングは、最初に実行する必要がある。
【0146】
場合によっては、IaaSのプロビジョニングには2つの異なる課題がある。第1に、何も実行しないうちに、インフラストラクチャの初期セットをプロビジョニングするという初期課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させる(たとえば、新たなサービスの追加、サービスの変更、サービスの削除など)という課題がある。場合によっては、インフラストラクチャの構成を宣言的に定義することを可能にすることによって、これらの2つの課題に対処することができる。言い換えれば、インフラストラクチャ(たとえば、いずれのコンポーネントが必要とされるか、およびこれらのコンポーネントがいかに相互作用するか)は、1つまたは複数の構成ファイルによって定義することができる。したがって、インフラストラクチャの全体的なトポロジ(たとえば、いずれのリソースがいずれに依存し、それらの各々いかに連携するか)を、宣言的に記述することができる。いくつかの事例では、トポロジが定義されると、構成ファイルに記述された異なるコンポーネントを作成および/または管理するためのワークフローを生成することができる。
【0147】
いくつかの例では、インフラストラクチャは、多くの相互接続された要素を有することができる。たとえば、コアネットワークとしても知られている1つまたは複数の仮想プライベートクラウド(VPC)(たとえば、構成可能なかつ/または共有されたコンピューティングリソースの潜在的なオンデマンドプール)があってもよい。いくつかの例では、ネットワークのセキュリティがいかにセットアップされるかを定義するためにプロビジョニングされた1つまたは複数のセキュリティグループルール、および1つまたは複数の仮想マシン(VM)もまたあり得る。ロードバランサ、データベースなどの他のインフラストラクチャ要素もまたプロビジョニングしてもよい。さらに多くのインフラストラクチャ要素が望まれかつ/または追加されるに従い、インフラストラクチャは、漸進的に進化することができる。
【0148】
いくつかの事例では、さまざまな仮想コンピューティング環境にわたってインフラストラクチャコードのデプロイメントを可能にするために、連続デプロイメント技術を採用してもよい。さらに、記載した技術は、これらの環境内のインフラストラクチャ管理を可能にすることができる。いくつかの例では、サービスチームは、1つまたは複数の、ただし多くの場合は多くの異なる生産環境に(たとえば、全世界に及ぶ場合もある、さまざまな異なる地理的場所にわたって)デプロイされることが望まれるコードを書くことができる。しかしながら、いくつかの例では、コードがデプロイされるインフラストラクチャを最初にセットアップしなければならない。いくつかの事例では、プロビジョニングは、手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、かつ/またはインフラストラクチャがプロビジョニングされた後、デプロイツールを利用してコードをデプロイすることができる。
【0149】
図12は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック
図1200である。サービスオペレータ1202は、仮想クラウドネットワーク(VCN)1206およびセキュアホストサブネット1208を含むことができるセキュアホストテナンシ1204に通信可能に連結することができる。いくつかの例では、サービスオペレータ1202は、1つまたは複数のクライアントコンピューティングデバイスを使用している場合があり、1つまたは複数のクライアントコンピューティングデバイスは、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/またはiOS、Windows Phone、Android、BlackBerry8、PalmOSなどの種々のモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)または他の通信プロトコルが使用可能である、ポータブルハンドヘルドデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、またはウェアラブルデバイス(Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。代替的に、クライアントコンピューティングデバイスは、例として、Microsoft Windows(登録商標)オペレーティングシステム、Apple Macintosh(登録商標)オペレーティングシステム、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行しているパーソナルコンピュータおよび/またはラップトップコンピュータを含む、汎用パーソナルコンピュータであってもよい。クライアントコンピューティングデバイスは、限定なしに、たとえばGoogle Chrome OSなど、種々のGNU/Linuxオペレーティングシステムを含む、種々の市販のUNIX(登録商標)またはUNIX系オペレーティングシステムを実行している、ワークステーションコンピュータであり得る。代替的にまたは加えて、クライアントコンピューティングデバイスは、VCN1206および/またはインターネットにアクセスすることができるネットワークを介して通信することができる、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを有するかまたは有していないMicrosoft Xboxゲーム機)、および/またはパーソナルメッセージングデバイスなどの他の任意の電子デバイスであってもよい。
【0150】
VCN1206は、ローカルピアリングゲートウェイ(LPG)1210を含むことができ、LPG1210は、セキュアシェル(SSH)VCN1212に、SSH VCN1212に含まれるLPG1210を介して通信可能に連結することができる。SSH VCN1212は、SSHサブネット1214を含むことができ、SSH VCN1212は、制御プレーンVCN1216に、制御プレーンVCN1216に含まれるLPG1210を介して通信可能に連結することができる。また、SSH VCN1212は、LPG1210を介して、データプレーンVCN1218に通信可能に連結することができる。制御プレーンVCN1216およびデータプレーンVCN1218は、IaaSプロバイダによって所有および/または運営することができるサービステナンシ1219に含めることができる。
【0151】
制御プレーンVCN1216は、境界ネットワーク(たとえば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として作用する制御プレーン非武装地帯(DMZ:demilitarized zone)層1220を含むことができる。DMZベースのサーバは、制限された信頼性を有し、セキュリティ侵害を抑制するのに役立つことができる。さらに、DMZ層1220は、1つまたは複数のロードバランサ(LB)サブネット1222と、アプリサブネット1226を含むことができる制御プレーンアプリ層1224と、データベース(DB)サブネット1230(たとえば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層1228とを含むことができる。制御プレーンDMZ層1220に含まれるLBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226と制御プレーンVCN1216に含めることができるインターネットゲートウェイ1234とに通信可能に連結することができ、アプリサブネット1226は、制御プレーンデータ層1228に含まれるDBサブネット1230と、サービスゲートウェイ1236と、ネットワークアドレス変換(NAT)ゲートウェイ1238とに通信可能に連結することができる。制御プレーンVCN1216は、サービスゲートウェイ1236およびNATゲートウェイ1238を含むことができる。
【0152】
制御プレーンVCN1216は、アプリサブネット1226を含むことができるデータプレーンミラーアプリ層1240を含むことができる。データプレーンミラーアプリ層1240に含まれるアプリサブネット1226は、コンピュートインスタンス1244を実行することができる仮想ネットワークインターフェースコントローラ(VNIC)1242を含むことができる。コンピュートインスタンス1244は、データプレーンミラーアプリ層1240のアプリサブネット1226を、データプレーンアプリ層1246に含めることができるアプリサブネット1226に通信可能に連結することができる。
【0153】
データプレーンVCN1218は、データプレーンアプリ層1246と、データプレーンDMZ層1248と、データプレーンデータ層1250とを含むことができる。データプレーンDMZ層1248は、データプレーンアプリ層1246のアプリサブネット1226およびデータプレーンVCN1218のインターネットゲートウェイ1234に通信可能に連結することができるLBサブネット1222を含むことができる。アプリサブネット1226は、データプレーンVCN1218のサービスゲートウェイ1236およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に連結することができる。データプレーンデータ層1250は、データプレーンアプリ層1246のアプリサブネット1226に通信可能に連結することができるDBサブネット1230も含むことができる。
【0154】
制御プレーンVCN1216のインターネットゲートウェイ1234およびデータプレーンVCN1218のインターネットゲートウェイ1234は、公衆インターネット1254に通信可能に連結することができるメタデータ管理サービス1252に通信可能に連結することができる。公衆インターネット1254は、制御プレーンVCN1216のNATゲートウェイ1238およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に連結することができる。制御プレーンVCN1216のサービスゲートウェイ1236およびデータプレーンVCN1218のサービスゲートウェイ1236は、クラウドサービス1256に通信可能に連結することができる。
【0155】
いくつかの例では、制御プレーンVCN1216またはデータプレーンVCN1218のサービスゲートウェイ1236は、公衆インターネット1254を経由することなく、クラウドサービス1256へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ1236からのクラウドサービス1256へのAPI呼び出しは、一方向であり得る。すなわち、サービスゲートウェイ1236は、クラウドサービス1256へのAPI呼び出しを行うことができ、クラウドサービス1256は、要求されたデータをサービスゲートウェイ1236に送信することができる。しかしながら、クラウドサービス1256は、サービスゲートウェイ1236へのAPI呼び出しを開始することができない。
【0156】
いくつかの例では、セキュアホストテナンシ1204は、本来は隔離される可能性があるサービステナンシ1219に直接接続することができる。セキュアホストサブネット1208は、隔離されたシステムでの双方向通信を可能にすることができるLPG1210を介して、SSHサブネット1214と通信することができる。セキュアホストサブネット1208をSSHサブネット1214に接続することによって、セキュアホストサブネット1208は、サービステナンシ1219内の他のエンティティにアクセスすることができる。
【0157】
制御プレーンVCN1216は、サービステナンシ1219のユーザが所望のリソースをセットアップするかまたは他の方法でプロビジョニングすることを可能にすることができる。制御プレーンVCN1216においてプロビジョニングされた所望のリソースは、データプレーンVCN1218においてデプロイするかまたは他の方法で使用することができる。いくつかの例では、制御プレーンVCN1216は、データプレーンVCN1218から隔離することができ、制御プレーンVCN1216のデータプレーンミラーアプリ層1240は、データプレーンミラーアプリ層1240およびデータプレーンアプリ層1246に含めることができるVNIC1242を介して、データプレーンVCN1218のデータプレーンアプリ層1246と通信することができる。
【0158】
いくつかの例では、システムのユーザまたは顧客は、公衆インターネット1254を介して、たとえば、作成、読み取り、更新、または削除(CRUD)操作などの要求を行うことができ、公衆インターネット1254は、そうした要求をメタデータ管理サービス1252に通信することができる。メタデータ管理サービス1252は、インターネットゲートウェイ1234を介して、要求を制御プレーンVCN1216に通信することができる。要求は、制御プレーンDMZ層1220に含まれるLBサブネット1222によって受信することができる。LBサブネット1222は、要求が有効であると決定する場合があり、この決定に応答して、LBサブネット1222は、要求を制御プレーンアプリ層1224に含まれるアプリサブネット1226に送信することができる。要求が検証され、公衆インターネット1254への呼び出しを必要とする場合、公衆インターネット1254への呼び出しを、公衆インターネット1254への呼び出しを行うことができるNATゲートウェイ1238に送信することができる。要求によって格納することが望まれ得るメモリは、DBサブネット1230に格納することができる。
【0159】
いくつかの例では、データプレーンミラーアプリ層1240は、制御プレーンVCN1216とデータプレーンVCN1218との間の直接通信を容易にすることができる。たとえば、データプレーンVCN1218に含まれるリソースに対して、構成に対する変更、更新、または他の好適な修正が適用されることが望まれる場合がある。制御プレーンVCN1216は、VNIC1242を介して、データプレーンVCN1218に含まれるリソースと直接通信することができ、それによって、リソースに対する構成に対する変更、更新、または他の適切な修正を実行することができる。
【0160】
いくつかの実施形態では、制御プレーンVCN1216およびデータプレーンVCN1218は、サービステナンシ1219に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN1216およびデータプレーンVCN1218のいずれも所有および操作しなくてもよい。代わりに、IaaSプロバイダが、制御プレーンVCN1216およびデータプレーンVCN1218を所有または操作することができ、これらの両方は、サービステナンシ1219に含めることができる。この実施形態により、ネットワークの隔離を可能にすることができ、それにより、ユーザまたは顧客が、他のユーザのリソースまたは他の顧客のリソースとインタラクトすることを防止することができる。また、この実施形態により、システムのユーザまたは顧客が、格納するのに所望のレベルのセキュリティレベルを有していない可能性のある公衆インターネット1254に依存する必要なく、データベースをプライベートに格納することができるようにすることができる。
【0161】
他の実施形態では、制御プレーンVCN1216に含まれるLBサブネット1222は、サービスゲートウェイ1236から信号を受信するように構成することができる。この実施形態では、制御プレーンVCN1216およびデータプレーンVCN1218は、公衆インターネット1254を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成することができる。顧客が使用するデータベースは、IaaSプロバイダによって制御することができ、公衆インターネット1254から隔離することができるサービステナンシ1219に格納することができるため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0162】
図13は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1300である。サービスオペレータ1302(たとえば、
図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1306(たとえば、
図12のVCN1206)およびセキュアホストサブネット1308(たとえば、
図12のセキュアホストサブネット1208)を含むことができるセキュアホストテナンシ1304(たとえば、
図12のセキュアホストテナンシ1204)に通信可能に連結することができる。VCN1306は、ローカルピアリングゲートウェイ(LPG)1310(たとえば、
図12のLPG1210)を含むことができ、LPG1310は、セキュアシェル(SSH)VCN1312(たとえば、
図12のSSH VCN1212)に、SSH VCN1312に含まれるLPG1310を介して通信可能に連結することができる。SSH VCN1312は、SSHサブネット1314(たとえば、
図12のSSHサブネット1214)を含むことができ、SSH VCN1312は、制御プレーンVCN1316(たとえば、
図12の制御プレーンVCN1216)に、制御プレーンVCN1316に含まれるLPG1310を介して通信可能に連結することができる。制御プレーンVCN1316は、サービステナンシ1319(たとえば、
図12のサービステナンシ1219)に含めることができ、データプレーンVCN1318(たとえば、
図12のデータプレーンVCN1218)は、システムのユーザまたは顧客が所有または運営する可能性がある顧客テナンシ1321に含めることができる。
【0163】
制御プレーンVCN1316は、LBサブネット1322(たとえば、
図12のLBサブネット1222)を含むことができる制御プレーンDMZ層1320(たとえば、
図12の制御プレーンDMZ層1220)と、アプリサブネット1326(たとえば、
図12のアプリサブネット1226)を含むことができる制御プレーンアプリ層1324(たとえば、
図12の制御プレーンアプリ層1224)と、(たとえば、
図12のDBサブネット1230と同様の)データベース(DB)サブネット1330を含むことができる制御プレーンデータ層1328(たとえば、
図12の制御プレーンデータ層1228)とを含むことができる。制御プレーンDMZ層1320に含まれるLBサブネット1322は、制御プレーンアプリ層1324に含まれるアプリサブネット1326と、制御プレーンVCN1316に含めることができるインターネットゲートウェイ1334(たとえば、
図12のインターネットゲートウェイ1234)とに通信可能に連結することができ、アプリサブネット1326は、制御プレーンデータ層1328に含まれるDBサブネット1330と、サービスゲートウェイ1336(たとえば、
図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1338(たとえば、
図12のNATゲートウェイ1238)とに通信可能に連結することができる。制御プレーンVCN1316は、サービスゲートウェイ1336およびNATゲートウェイ1338を含むことができる。
【0164】
制御プレーンVCN1316は、アプリサブネット1326を含むことができるデータプレーンミラーアプリ層1340(たとえば、
図12のデータプレーンミラーアプリ層1240)を含むことができる。データプレーンミラーアプリ層1340に含まれるアプリサブネット1326は、(たとえば、
図12のコンピュートインスタンス1244と同様の)コンピュートインスタンス1344を実行することができる仮想ネットワークインターフェースコントローラ(VNIC)1342(たとえば、VNIC1242)を含むことができる。コンピュートインスタンス1344は、データプレーンミラーアプリ層1340に含まれるVNIC1342およびデータプレーンアプリ層1346に含まれるVNIC1342を介して、データプレーンミラーアプリ層1340のアプリサブネット1326と、データプレーンアプリ層1346(たとえば、
図12のデータプレーンアプリ層1246)に含めることができるアプリサブネット1326との間の通信を促進することができる。
【0165】
制御プレーンVCN1316に含まれるインターネットゲートウェイ1334は、公衆インターネット1354(たとえば、
図12の公衆インターネット1254)に通信可能に連結することができるメタデータ管理サービス1352(たとえば、
図12のメタデータ管理サービス1252)に通信可能に連結することができる。公衆インターネット1354は、制御プレーンVCN1316に含まれるNATゲートウェイ1338に通信可能に連結することができる。制御プレーンVCN1316に含まれるサービスゲートウェイ1336は、クラウドサービス1356(たとえば、
図12のクラウドサービス1256)に通信可能に連結することができる。
【0166】
いくつかの例では、データプレーンVCN1318は、顧客テナンシ1321に含めることができる。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN1316を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナンシ1319に含まれる一意のコンピュートインスタンス1344をセットアップすることができる。各コンピュートインスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316と、顧客テナンシ1321に含まれるデータプレーンVCN1318との間の通信を可能にすることができる。コンピュートインスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316においてプロビジョニングされるリソースが、顧客テナンシ1321に含まれるデータプレーンVCN1318にデプロイされるかまたは他の方法で使用されることを可能にすることができる。
【0167】
他の例では、IaaSプロバイダの顧客は、顧客テナンシ1321に存在するデータベースを有することができる。この例では、制御プレーンVCN1316は、アプリサブネット1326を含むことができるデータプレーンミラーアプリ層1340を含むことができる。データプレーンミラーアプリ層1340は、データプレーンVCN1318に常駐することができ、データプレーンVCN1318に存在する可能性はない。すなわち、データプレーンミラーアプリ層1340は、顧客テナンシ1321にアクセスすることができるが、データプレーンVCN1318に存在しなくてもよく、IaaSプロバイダの顧客が所有および運営しなくてもよい。データプレーンミラーアプリ層1340は、データプレーンVCN1318への呼び出しを行うように構成してもよいが、制御プレーンVCN1316に含まれる任意のエンティティへの呼び出しを行うようには構成しなくてもよい。顧客は、制御プレーンVCN1316にプロビジョニングされている、データプレーンVCN1318内のリソースをデプロイするかまたは他の方法で使用することを望む場合があり、データプレーンミラーアプリ層1340は、顧客のリソースの所望のデプロイメントまたは他の使用を促進することができる。
【0168】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN1318にフィルタを適用することができる。この実施形態では、顧客は、データプレーンVCN1318がアクセスできるものを決定することができ、顧客は、データプレーンVCN1318からの公衆インターネット1354へのアクセスを制限することができる。IaaSプロバイダは、データプレーンVCN1318から任意の外部ネットワークまたはデータベースへのアクセスにフィルタを適用するかまたはそうしたアクセスを制御することができない場合がある。顧客が顧客テナンシ1321に含まれるデータプレーンVCN1318にフィルタおよび制御を適用することは、データプレーンVCN1318を他の顧客および公衆インターネット1354から隔離するのに役立つことができる。
【0169】
いくつかの実施形態では、サービスゲートウェイ1336が、公衆インターネット1354上に、制御プレーンVCN1316上に、またはデータプレーンVCN1318上に存在していない可能性があるサービスにアクセスするために、クラウドサービス1356を呼び出すことができる。クラウドサービス1356と制御プレーンVCN1316またはデータプレーンVCN1318との間の接続は、ライブでも連続的でなくてもよい。クラウドサービス1356は、IaaSプロバイダによって所有または運営されている別のネットワーク上に存在してもよい。クラウドサービス1356は、サービスゲートウェイ1336から呼び出しを受信するように構成してもよく、公衆インターネット1354から呼び出しを受信しないように構成してもよい。いくつかのクラウドサービス1356は、他のクラウドサービス1356から隔離されている場合があり、制御プレーンVCN1316は、制御プレーンVCN1316と同じリージョンにない可能性があるクラウドサービス1356から隔離されている場合がある。たとえば、制御プレーンVCN1316は、「リージョン1」に位置する場合があり、クラウドサービス「デプロイメント12」は、「リージョン1」および「リージョン2」に位置する場合がある。デプロイメント12への呼び出しが、リージョン1に位置する制御プレーンVCN1316に含まれるサービスゲートウェイ1336によって行われる場合、この呼び出しは、リージョン1内のデプロイメント12に送信することができる。この例では、制御プレーンVCN1316またはリージョン1のデプロイメント12は、リージョン2のデプロイメント12と通信可能に連結されないか、または他の方法で通信していない可能性がある。
【0170】
図14は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1400である。サービスオペレータ1402(たとえば、
図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1406(たとえば、
図12のVCN1206)およびセキュアホストサブネット1408(たとえば、
図12のセキュアホストサブネット1208)を含むことができるセキュアホストテナンシ1404(たとえば、
図12のセキュアホストテナンシ1204)に通信可能に連結することができる。VCN1406は、SSH VCN1412(たとえば、
図12のSSH VCN1212)に、SSH VCN1412に含まれるLPG1410を介して通信可能に連結することができる、LPG1410(たとえば、
図12のLPG1210)を含むことができる。SSH VCN1412は、SSHサブネット1414(たとえば、
図12のSSHサブネット1214)を含むことができ、SSH VCN1412は、制御プレーンVCN1416(たとえば、
図12の制御プレーンVCN1216)に、制御プレーンVCN1416に含まれるLPG1410を介して、かつデータプレーンVCN1418(たとえば、
図12のデータプレーン1218)に、データプレーンVCN1418に含まれるLPG1410を介して、通信可能に連結することができる。制御プレーンVCN1416およびデータプレーンVCN1418は、サービステナンシ1419(たとえば、
図12のサービステナンシ1219)に含めることができる。
【0171】
制御プレーンVCN1416は、ロードバランサ(LB)サブネット1422(たとえば、
図12のLBサブネット1222)を含むことができる制御プレーンDMZ層1420(たとえば、
図12の制御プレーンDMZ層1220)と、(たとえば、
図12のアプリサブネット1226と同様の)アプリサブネット1426を含むことができる制御プレーンアプリ層1424(たとえば、
図12の制御プレーンアプリ層1224)と、DBサブネット1430を含むことができる制御プレーンデータ層1428(たとえば、
図12の制御プレーンデータ層1228)とを含むことができる。制御プレーンDMZ層1420に含まれるLBサブネット1422は、制御プレーンアプリ層1424に含まれるアプリサブネット1426と、制御プレーンVCN1416に含めることができるインターネットゲートウェイ1434(たとえば、
図12のインターネットゲートウェイ1234)とに通信可能に連結することができ、アプリサブネット1426は、制御プレーンデータ層1428に含まれるDBサブネット1430と、サービスゲートウェイ1436(たとえば、
図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1438(たとえば、
図12のNATゲートウェイ1238)とに通信可能に連結することができる。制御プレーンVCN1416は、サービスゲートウェイ1436およびNATゲートウェイ1438を含むことができる。
【0172】
データプレーンVCN1418は、データプレーンアプリ層1446(たとえば、
図12のデータプレーンアプリ層1246)と、データプレーンDMZ層1448(たとえば、
図12のデータプレーンDMZ層1248)と、データプレーンデータ層1450(たとえば、
図12のデータプレーンデータ層1250)とを含むことができる。データプレーンDMZ層1448は、データプレーンVCN1418に含まれる、データプレーンアプリ層1446の信頼できるアプリサブネット1460および信頼できないアプリサブネット1462、ならびにインターネットゲートウェイ1434に、通信可能に連結することができる、LBサブネット1422を含むことができる。信頼できるアプリサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、データプレーンVCN1418に含まれるNATゲートウェイ1438、およびデータプレーンデータ層1450に含まれるDBサブネット1430に、通信可能に連結することができる。信頼できないアプリサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に連結することができる。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に連結することができるDBサブネット1430を含むことができる。
【0173】
信頼できないアプリサブネット1462は、テナント仮想マシン(VM)1466(1)~(N)に通信可能に連結することができる、1つまたは複数のプライマリVNIC1464(1)~(N)を含むことができる。各テナントVM1466(1)~(N)は、それぞれの顧客テナンシ1470(1)~(N)に含めることができるそれぞれのコンテナエグレスVCN1468(1)~(N)に含めることができるそれぞれのアプリサブネット1467(1)~(N)に、通信可能に連結することができる。それぞれのセカンダリVNIC1472(1)~(N)が、データプレーンVCN1418に含まれる信頼できないアプリサブネット1462と、コンテナエグレスVCN1468(1)~(N)に含まれるアプリサブネットとの間の通信を促進することができる。各コンテナエグレスVCN1468(1)~(N)は、公衆インターネット1454(たとえば、
図12の公衆インターネット1254)に通信可能に連結することができる、NATゲートウェイ1438を含むことができる。
【0174】
制御プレーンVCN1416に含まれるインターネットゲートウェイ1434およびデータプレーンVCN1418に含まれるインターネットゲートウェイ1434は、公衆インターネット1454に通信可能に連結することができるメタデータ管理サービス1452(たとえば、
図12のメタデータ管理システム1252)に、通信可能に連結することができる。公衆インターネット1454は、制御プレーンVCN1416に含まれるNATゲートウェイ1438およびデータプレーンVCN1418に含まれるNATゲートウェイ1438に、通信可能に連結することができる。制御プレーンVCN1416に含まれるサービスゲートウェイ1436およびデータプレーンVCN1418に含まれるサービスゲートウェイ1436は、クラウドサービス1456に通信可能に連結することができる。
【0175】
いくつかの実施形態では、データプレーンVCN1418は、顧客テナンシ1470と統合することができる。この統合は、コードを実行するときにサポートを望む可能性がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましい可能性がある。顧客は、破壊的であり得る、他の顧客リソースと通信する可能性がある、または望ましくない影響を引き起こす可能性があるコードを、実行するように提供する場合がある。これに応じて、IaaSプロバイダは、顧客がIaaSプロバイダに与えたコードを実行するか否かを決定することができる。
【0176】
いくつかの例では、IaaSプロバイダの顧客は、一時的なネットワークアクセスをIaaSプロバイダに許可し、データプレーン層アプリ1446にアタッチすべき機能を要求することができる。機能を実行するコードは、VM1466(1)~(N)で実行することができ、データプレーンVCN1418上の他のいかなる場所でも実行されるように構成しなくてもよい。各VM1466(1)~(N)は、1つの顧客テナンシ1470に接続することができる。VM1466(1)~(N)に含まれるそれぞれのコンテナ1471(1)~(N)は、コードを実行するように構成することができる。この場合、二重の隔離(たとえば、コンテナ1471(1)~(N)がコードを実行し、コンテナ1471(1)~(N)は、少なくとも、信頼できないアプリサブネット1462に含まれるVM1466(1)~(N)に含めることができる)があり得る。これは、間違ったまたは他の意味で望ましくないコードが、IaaSプロバイダのネットワークに損害を与えること、または異なる顧客のネットワークに損害を与えることを防止するのに役立つことができる。コンテナ1471(1)~(N)は、顧客テナンシ1470に通信可能に連結することができ、顧客テナンシ1470からデータを送信または受信するように構成することができる。コンテナ1471(1)~(N)は、データプレーンVCN1418内の他の任意のエンティティからデータを送信または受信するように構成しなくてもよい。コードの実行が完了したとき、IaaSプロバイダは、コンテナ1471(1)~(N)を強制停止するまたは他の方法で廃棄することができる。
【0177】
いくつかの実施形態では、信頼できるアプリサブネット1460は、IaaSプロバイダが所有または操作することができるコードを実行することができる。この実施形態では、信頼できるアプリサブネット1460は、DBサブネット1430に通信可能に連結し、DBサブネット1430においてCRUD操作を実行するように構成することができる。信頼できないアプリサブネット1462は、DBサブネット1430に通信可能に連結することができるが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1430内で読み取り操作を実行するように構成することができる。各顧客のVM1466(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ1471(1)~(N)は、DBサブネット1430と通信可能に連結しなくてもよい。
【0178】
他の実施形態では、制御プレーンVCN1416およびデータプレーンVCN1418は、直接通信可能に連結しなくてもよい。この実施形態では、制御プレーンVCN1416とデータプレーンVCN1418との間に直接の通信はなくてもよい。しかしながら、通信は、少なくとも1つの方法により、間接的に起こり得る。IaaSプロバイダによって、制御プレーンVCN1416とデータプレーンVCN1418との間の通信を容易にすることができるLPG1410を確立してもよい。別の例では、制御プレーンVCN1416またはデータプレーンVCN1418は、サービスゲートウェイ1436を介してクラウドサービス1456への呼び出しを行うことができる。たとえば、制御プレーンVCN1416からクラウドサービス1456への呼び出しは、データプレーンVCN1418と通信することができるサービスの要求を含むことができる。
【0179】
図15は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1500である。サービスオペレータ1502(たとえば、
図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1506(たとえば、
図12のVCN1206)およびセキュアホストサブネット1508(たとえば、
図12のセキュアホストサブネット1208)を含むことができるセキュアホストテナンシ1504(たとえば、
図12のセキュアホストテナンシ1204)に通信可能に連結することができる。VCN1506は、LPG1510(たとえば、
図12のLPG1210)を含むことができ、LPG1510は、SSH VCN1512(たとえば、
図12のSSH VCN1212)に、SSH VCN1512に含まれるLPG1510を介して通信可能に連結することができる。SSH VCN1512は、SSHサブネット1514(たとえば、
図12のSSHサブネット1214)を含むことができ、SSH VCN1512は、制御プレーンVCN1516(たとえば、
図12の制御プレーンVCN1216)に、制御プレーンVCN1516に含まれるLPG1510を介して、かつデータプレーンVCN1518(たとえば、
図12のデータプレーン1218)に、データプレーンVCN1518に含まれるLPG1510を介して、通信可能に連結することができる。制御プレーンVCN1516およびデータプレーンVCN1518は、サービステナンシ1519(たとえば、
図12のサービステナンシ1219)に含めることができる。
【0180】
制御プレーンVCN1516は、LBサブネット1522(たとえば、
図12のLBサブネット1222)を含むことができる制御プレーンDMZ層1520(たとえば、
図12の制御プレーンDMZ層1220)と、アプリサブネット1526(たとえば、
図12のアプリサブネット1226)を含むことができる制御プレーンアプリ層1524(たとえば、
図12の制御プレーンアプリ層1224)と、DBサブネット1530(たとえば、
図14のDBサブネット1430)を含むことができる制御プレーンデータ層1528(たとえば、
図12の制御プレーンデータ層1228)とを含むことができる。制御プレーンDMZ層1520に含まれるLBサブネット1522は、制御プレーンアプリ層1524に含まれるアプリサブネット1526に、かつ制御プレーンVCN1516に含めることができるインターネットゲートウェイ1534(たとえば、
図12のインターネットゲートウェイ1234)に通信可能に連結することができ、アプリサブネット1526は、制御プレーンデータ層1528に含まれるDBサブネット1530に、かつサービスゲートウェイ1536(たとえば、
図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1538(たとえば、
図12のNATゲートウェイ1238)に、通信可能に連結することができる。制御プレーンVCN1516は、サービスゲートウェイ1536およびNATゲートウェイ1538を含むことができる。
【0181】
データプレーンVCN1518は、データプレーンアプリ層1546(たとえば、
図12のデータプレーンアプリ層1246)と、データプレーンDMZ層1548(たとえば、
図12のデータプレーンDMZ層1248)と、データプレーンデータ層1550(たとえば、
図12のデータプレーンデータ層1250)とを含むことができる。データプレーンDMZ層1548は、データプレーンVCN1518に含まれる、データプレーンアプリ層1546の信頼できるアプリサブネット1560(たとえば、
図14の信頼できるアプリサブネット1460)および信頼できないアプリサブネット1562(たとえば、
図14の信頼できないアプリサブネット1462)、ならびにインターネットゲートウェイ1534に、通信可能に連結することができる、LBサブネット1522を含むことができる。信頼できるアプリサブネット1560は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、データプレーンVCN1518に含まれるNATゲートウェイ1538、およびデータプレーンデータ層1550に含まれるDBサブネット1530に、通信可能に連結することができる。信頼できないアプリサブネット1562は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、およびデータプレーンデータ層1550に含まれるDBサブネット1530に、通信可能に連結することができる。データプレーンデータ層1550は、データプレーンVCN1518に含まれるサービスゲートウェイ1536に通信可能に連結することができるDBサブネット1530を含むことができる。
【0182】
信頼できないアプリサブネット1562は、信頼できないアプリサブネット1562内に常駐するテナント仮想マシン(VM)1566(1)~(N)に通信可能に連結することができる、プライマリVNIC1564(1)~(N)を含むことができる。各テナントVM1566(1)~(N)は、それぞれのコンテナ1567(1)~(N)においてコードを実行することができ、コンテナエグレスVCN1568に含めることができるデータプレーンアプリ層1546に含めることができるアプリサブネット1526に、通信可能に連結することができる。それぞれのセカンダリVNIC1572(1)~(N)が、データプレーンVCN1518に含まれる信頼できないアプリサブネット1562とコンテナエグレスVCN1568に含まれるアプリサブネットとの間の通信を促進することができる。コンテナエグレスVCNは、公衆インターネット1554(たとえば、
図12の公衆インターネット1254)に通信可能に連結することができる、NATゲートウェイ1538を含むことができる。
【0183】
制御プレーンVCN1516に含まれるインターネットゲートウェイ1534およびデータプレーンVCN1518に含まれるインターネットゲートウェイ1534は、公衆インターネット1554に通信可能に連結することができるメタデータ管理サービス1552(たとえば、
図12のメタデータ管理システム1252)に、通信可能に連結することができる。公衆インターネット1554は、制御プレーンVCN1516に含まれるNATゲートウェイ1538およびデータプレーンVCN1518に含まれるNATゲートウェイ1538に、通信可能に連結することができる。制御プレーンVCN1516に含まれるサービスゲートウェイ1536およびデータプレーンVCN1518に含まれるサービスゲートウェイ1536は、クラウドサービス1556に通信可能に連結することができる。
【0184】
いくつかの例では、
図15のブロック
図1500のアーキテクチャによって示すパターンは、
図14のブロック
図1400のアーキテクチャによって示すパターンの例外と見なしてもよく、IaaSプロバイダが顧客と直接通信することができない場合(たとえば、非接続リージョン)、IaaSプロバイダの顧客にとって望ましい場合がある。顧客は、各顧客のVM1566(1)~(N)に含まれるそれぞれのコンテナ1567(1)~(N)に、リアルタイムでアクセスすることができる。コンテナ1567(1)~(N)は、コンテナエグレスVCN1568に含めることができるデータプレーンアプリ層1546のアプリサブネット1526に含まれるそれぞれのセカンダリVNIC1572(1)~(N)を呼び出すように構成することができる。セカンダリVNIC1572(1)~(N)は、公衆インターネット1554に呼び出しを送信することができるNATゲートウェイ1538に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスすることができるコンテナ1567(1)~(N)は、制御プレーンVCN1516から隔離することができ、データプレーンVCN1518に含まれる他のエンティティから隔離することができる。コンテナ1567(1)~(N)は、他の顧客のリソースから隔離することもできる。
【0185】
他の例では、顧客は、コンテナ1567(1)~(N)を使用して、クラウドサービス1556を呼び出すことができる。この例では、顧客は、コンテナ1567(1)~(N)において、クラウドサービス1556にサービスを要求するコードを実行することができる。コンテナ1567(1)~(N)は、この要求をセカンダリVNIC1572(1)~(N)に送信することができ、セカンダリVNIC1572(1)~(N)は、要求を公衆インターネット1554に送信することができるNATゲートウェイに要求を送信することができる。公衆インターネット1554は、インターネットゲートウェイ1534を介して、制御プレーンVCN1516に含まれるLBサブネット1522にこの要求を送信することができる。要求が有効であると決定することに応答して、LBサブネットは、この要求をアプリサブネット1526に送信することができ、アプリサブネット1526は、サービスゲートウェイ1536を介して、この要求をクラウドサービス1556に要求を送信することができる。
【0186】
図に示すIaaSアーキテクチャ1200、1300、1400、1500は、図示するもの以外のコンポーネントを含んでもよいことが理解されるべきである。さらに、図に示す実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一部の例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図に示すものよりも多いかまたは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成または配置を有してもよい。
【0187】
いくつかの実施形態では、本明細書に記載するIaaSシステムは、セルフサービスの、サブスクリプションベースの、弾力的にスケーラブルであり、信頼性が高く、高可用性であり、セキュアな方法で顧客に提供される、アプリケーション、ミドルウェア、およびデータベースサービス提供品の一式を含むことができる。このようなIaaSシステムの一例は、本譲受人によって提供されるOracle Cloud Infrastructure(OCI)である。
【0188】
図16は、さまざまな実施形態を実装することができるコンピュータシステム例1600を示す。システム1600を使用して、上述したコンピュータシステムのうちの任意のものを実装することができる。図に示すように、コンピュータシステム1600は、バスサブシステム1602を介して多数の周辺サブシステムと通信する処理装置1604を含む。これらの周辺サブシステムは、処理加速装置1606、I/Oサブシステム1608、ストレージサブシステム1618、および通信サブシステム1624を含むことができる。ストレージサブシステム1618は、有形のコンピュータ可読記憶媒体1622およびシステムメモリ1610を含む。
【0189】
バスサブシステム1602は、コンピュータシステム1600のさまざまなコンポーネントおよびサブシステムを、意図されるように相互に通信させる機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示すが、バスサブシステムの代替実施形態は、複数のバスを利用してもよい。バスサブシステム1602は、メモリバスまたはメモリコントローラ、周辺バス、および種々のバスアーキテクチャのうちの任意のものを使用するローカルバスを含む、いくつかのタイプのバス構造のうちの任意のものであり得る。たとえば、このようなアーキテクチャとしては、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびIEEE P1386.1標準規格に準拠して製造されたメザニンバスとして実装することができる周辺機器相互接続(PCI)バスを挙げることができる。
【0190】
処理装置1604は、1つまたは複数の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム1600の動作を制御する。処理装置1604には、1つまたは複数のプロセッサが含まれる場合がある。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含むことができる。いくつかの実施形態では、処理装置1604は、各処理装置に含まれるシングルコアまたはマルチコアプロセッサを有する1つまたは複数の独立した処理装置1632および/または1634として実装してもよい。他の実施形態では、処理装置1604は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されたクワッドコア処理装置として実装してもよい。
【0191】
さまざまな実施形態において、処理装置1604は、プログラムコードに応答して種々のプログラムを実行することができ、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の所与の時点で、実行すべきプログラムコードの一部またはすべてが、プロセッサ1604および/またはストレージサブシステム1618に常駐することができる。プロセッサ1604は、好適なプログラミングを通して、上述したさまざまな機能性を提供することができる。コンピュータシステム1600は、デジタル信号プロセッサ(DSP)、専用プロセッサなどを含むことができる、処理加速装置1606をさらに含んでもよい。
【0192】
I/Oサブシステム1608は、ユーザインターフェース入力デバイスおよびユーザインターフェース出力デバイスを含むことができる。ユーザインターフェース入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声命令認識システムを有する音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含むことができる。ユーザインターフェース入力デバイスは、たとえば、Microsoft Kinect(登録商標)モーションセンサなどのモーション検知および/またはジェスチャ認識デバイスを含んでもよく、Microsoft Kinect(登録商標)モーションセンサにより、ユーザは、ジェスチャおよび音声コマンドを使用するナチュラルユーザインターフェース(NUI)を介して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力デバイスを制御するとともに、それとインタラクトすることができる。ユーザインターフェース入力デバイスはまた、Google Glass(登録商標)瞬き検出器などの眼球ジェスチャ認識デバイスも含むことができ、Google Glass(登録商標)瞬き検出器は、ユーザから眼球活動(たとえば、写真を撮影するときおよび/またはメニューを選択するときの「瞬き」)を検出し、その眼球活動を入力デバイス(たとえば、Google Glass(登録商標))への入力に変換する。さらに、ユーザインターフェース入力デバイスは、ユーザが音声命令を介して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とインタラクトすることができるようにする、音声認識検知デバイスを含んでもよい。
【0193】
また、ユーザインターフェース入力デバイスは、限定なしに、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラなどのオーディオ/ビジュアルデバイス、イメージスキャナ、指紋スキャナ、バーコードリーダ、3Dスキャナ、3Dプリンタ、レーザ距離計、ならびに視線追跡デバイスも含むことができる。さらに、ユーザインターフェース入力デバイスは、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン断層撮影装置、および医療用超音波検査装置などの医療用撮像入力デバイスを含むことができる。また、ユーザインターフェース入力デバイスは、たとえば、MIDIキーボードおよび電子楽器などのオーディオ入力デバイスも含むことができる。
【0194】
ユーザインターフェース出力デバイスは、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイスなどの非視覚ディスプレイを含むことができる。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、投射装置、タッチスクリーンなどであり得る。一般に、「出力デバイス」という用語を使用する場合、コンピュータシステム1600からユーザまたは他のコンピュータに情報を出力するためのすべてのあり得るタイプのデバイスおよび機構を含むように意図されている。たとえば、ユーザインターフェース出力デバイスは、限定なしに、モニタ、プリンタ、スピーカ、ヘッドフォン、カーナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムなど、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示デバイスを含むことができる。
【0195】
コンピュータシステム1600は、ストレージサブシステム1618を含むことができ、ストレージサブシステム1618は、ここではシステムメモリ1610内に位置しているように示すソフトウェアコンポーネントを含むことができる。システムメモリ1610は、処理装置1604にロード可能であるとともにそこで実行可能であるプログラム命令、およびこれらのプログラムの実行により生成されるデータを格納することができる。
【0196】
コンピュータシステム1600の構成およびタイプに応じて、システムメモリ1610は、揮発性メモリ(ランダムアクセスメモリ(RAM)など)および/または、不揮発性メモリ(リードオンリメモリ(ROM)、フラッシュメモリなど)であり得る。RAMは、通常、処理装置1604が即座にアクセス可能なデータおよび/またはプログラムモジュール、および/または、処理装置1604によって目下操作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実施態様では、システムメモリ1610は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含むことができる。いくつかの実施態様では、通常、ROMには、起動中などにコンピュータシステム1600内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)を格納することができる。限定ではなく例として、システムメモリ1610は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含むことができるアプリケーションプログラム1612、プログラムデータ1614、およびオペレーティングシステム1616も示す。例として、オペレーティングシステム1616は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinuxオペレーティングシステム、(限定なしに種々のGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含む)種々の市販のUNIX(登録商標)もしくはUNIX系オペレーティングシステム、および/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10 OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含むことができる。
【0197】
ストレージサブシステム1618はまた、いくつかの実施形態の機能性を提供する基本的なプログラミングおよびデータ構造を格納する有形のコンピュータ可読記憶媒体も提供することができる。ストレージサブシステム1618に、プロセッサによって実行されたときに上述した機能性を提供するソフトウェア(プログラム、コードモジュール、命令)を格納することができる。これらのソフトウェアモジュールまたは命令は、処理装置1604が実行することができる。ストレージサブシステム1618はまた、本開示に従って使用されるデータを格納するためのリポジトリも提供することができる。
【0198】
ストレージサブシステム1610はまた、コンピュータ可読記憶媒体リーダ1620も含むことができ、コンピュータ可読記憶媒体リーダ1620はコンピュータ可読記憶媒体1622にさらに接続することができる。コンピュータ可読記憶媒体1622は、システムメモリ1610とともに、または任意選択的にシステムメモリ1610と組み合わせて、コンピュータ可読情報を一時的にかつ/またはより恒久的に収容、格納、送信、および検索するための、記憶媒体に加えてリモート、ローカル、固定、および/または取外し可能なストレージデバイスを、包括的に表すことができる。
【0199】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1622はまた、限定されないが、情報の格納および/または送信のための任意の方法または技術において実装される揮発性および不揮発性の、取外し可能および取外し不可能な媒体など、記憶媒体および通信媒体を含む、本技術分野において既知のまたは使用される任意の適切な媒体を含むことができる。これは、RAM、ROM、電子的に消去可能なプログラム可能ROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の有形のコンピュータ可読媒体など、有形のコンピュータ可読記憶媒体を含むことができる。これはまた、データ信号、データ送信などの無形のコンピュータ可読媒体、または、所望の情報を送信するために使用することができるとともにコンピュータシステム1600がアクセスすることができる他の任意の媒体も含むことができる。
【0200】
例として、コンピュータ可読記憶媒体1622は、取外し不可能な不揮発性磁気媒体から読み取るかまたはそうした媒体に書き込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読み取るかまたはそうしたディスクに書き込む磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu-Ray(登録商標)ディスクまたは他の光媒体などの取外し可能な不揮発性光ディスクから読み取るかまたはそうしたディスクに書き込む光ディスクドライブを含むことができる。コンピュータ可読記憶媒体1622は、限定されないが、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含むことができる。コンピュータ可読記憶媒体1622はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含むことができる。ディスクドライブおよびそれらの関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶装置をコンピュータシステム1600に提供することができる。
【0201】
通信サブシステム1624は、他のコンピュータシステムおよびネットワークとのインターフェースを提供する。通信サブシステム1624は、他のシステムからデータを受信し、コンピュータシステム1600から他のシステムにデータを送信するためのインターフェースの役割を果たす。たとえば、通信サブシステム1624は、コンピュータシステム1600がインターネットを介して1つまたは複数のデバイスに接続することを可能にすることができる。いくつかの実施形態では、通信サブシステム1624は、(たとえば、携帯電話技術、3G、4G、もしくはEDGE(enhanced data rates for global evolution)などの高度データネットワーク技術、WiFi(IEEE1602.11ファミリ標準規格)、または他のモバイル通信技術、またはそれらの任意の組み合わせを使用する)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、全地球測位システム(GPS)受信機コンポーネント、および/または他のコンポーネントを含むことができる。いくつかの実施形態では、通信サブシステム1624は、無線インターフェースに加えてまたは無線インターフェースの代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供することができる。
【0202】
いくつかの実施形態では、通信サブシステム1624はまた、コンピュータシステム1600を使用することができる1または複数のユーザに代わって、構造化および/または非構造化データフィード1626、イベントストリーム1628、イベント更新1630などの形式で入力通信を受信することもできる。
【0203】
例として、通信サブシステム1624は、ソーシャルネットワークおよび/または他の通信サービスのユーザから、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリ(RSS:Rich Site Summary)フィードなどのウェブフィードなどのデータフィード1626をリアルタイムで受信し、かつ/または、1つまたは複数の第三者情報源からリアルタイム更新を受信するように構成することができる。
【0204】
さらに、通信サブシステム1624は、明確な終わりがない本質的に連続的であるかまたは境界がない可能性がある、リアルタイムイベントのイベントストリーム1628および/またはイベント更新1630を含む場合がある、連続的なデータストリームの形式のデータを受信するように構成することもできる。連続的なデータを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場標示機、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを挙げることができる。
【0205】
通信サブシステム1624はまた、構造化および/または非構造化データフィード1626、イベントストリーム1628、イベント更新1630などを、コンピュータシステム1600に連結された1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0206】
コンピュータシステム1600は、ハンドヘルドポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または他の任意のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
【0207】
コンピュータおよびネットワークの性質は常に変化し続けるため、図に示すコンピュータシステム1600の説明は、具体的な例としてのみ意図されている。図に示すシステムよりも多いかまたは少ない数のコンポーネントを有する他の多くの構成が可能である。たとえば、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組み合わせにおいて、カスタマイズされたハードウェアを使用してもよく、かつ/または、特定の要素を実装してもよい。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続を採用してもよい。本明細書で提供する開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装する他の手段および/または方法を理解するであろう。
【0208】
具体的な実施形態について説明してきたが、さまざまな変形形態、変更形態、代替構造、および均等物も、本開示の範囲内に包含される。実施形態は、ある特定のデータ処理環境内で動作するようには限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、実施形態について、特定の一連のトランザクションおよびステップを用いて説明してきたが、本開示の範囲が記載した一連のトランザクションおよびステップに限定されないことは、当業者には明らかなはずである。上述した実施形態のさまざまな特徴および態様は、個別に使用しても共同で使用してもよい。
【0209】
さらに、実施形態について、ハードウェアおよびソフトウェアの特定の組み合わせを用いて説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内にあることが認識されるべきである。実施形態は、ハードウェアのみで実装しても、またはソフトウェアのみで実装しても、またはそれらの組み合わせを用いて実装してもよい。本明細書に記載するさまざまなプロセスは、同じプロセッサで実装することも、任意の組み合わせの異なるプロセッサで実装することもできる。したがって、コンポーネントまたはモジュールについて、いくつかの動作を実行するように説明している場合、そのような構成は、たとえば、その動作を実行するように電子回路を設計することによって、その動作を実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの組み合わせによって、実現することができる。プロセスは、限定されないが、プロセス間通信を行う従来の技術を含む種々の技術を用いて、通信することができ、プロセスの異なる対は、異なる技術を使用することができ、または、プロセスの同じ対は、異なる時点で異なる技術を使用することができる。
【0210】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。しかしながら、特許請求の範囲に示すようなより広義の趣旨および範囲から逸脱することなく、追加、削減、削除、および他の変形および変更を行ってもよいことは、明らかとなろう。したがって、具体的な開示の実施形態について説明してきたが、これらは、限定的であるようには意図されていない。さまざまな変形形態および均等物は、続く特許請求の範囲内にある。
【0211】
開示する実施形態について説明する文脈において(特に続く特許請求の範囲の文脈において)「1つの、ある(a、an)」、および「その(the)」という用語および同様の指示対象の使用は、本開示において別段の指示がなく、かつ文脈上明らかに矛盾しないかぎり、単数および複数の両方を包含するように解釈されるべきである。「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」という用語は、特に断りのないかぎり、非限定的な(open-ended)用語(すなわち、「を含むが、限定されない」を意味する)として解釈されるべきである。「接続され」という用語は、介在するものがあっても、その部分的にまたは全体として、内部に含まれている、取り付けられている、または互いに接合されていると解釈されるべきである。本明細書における値の範囲の列挙は、本明細書において別段の指示のないかぎり、単にその範囲内にある各個別の値を個々に言及する略記方法としての役割を果たすように意図されているにすぎず、各個別の値は、本開示に個々に列挙されているかのように、本開示に組み込まれる。本開示において別段の指示がなく、かつ文脈上明らかに矛盾しないかぎり、本開示に記載するすべての方法は、任意の好適な順序で行うことができる。本開示に提供するありとあらゆる例、または例示的な文言(たとえば、「など」)の使用は、単に実施形態をより明瞭にするよう意図されるものであり、別段の主張のないかぎり、本開示の範囲を限定するものではない。本明細書中のいかなる文言も、請求されていないいかなる要素も本開示の実施に不可欠であるものとして示すものとしても解釈されるべきではない。
【0212】
「X、Y、またはZのうちの少なくとも1つ」という句など、選言的な文言は、具体的に別段の定めのないかぎり、項目、用語などがX、Y、もしくはZのいずれか、またはそれらの任意の組み合わせ(たとえば、X、Y、および/またはZ)であってもよいことを示すために一般的に用いられるものとして文脈内で理解されるように意図されている。したがって、このような選言的な文言は、一般に、いくつかの実施形態が、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つが各々存在することを必要とすることを、意味するようには意図されておらず、かつ意味するべきではない。
【0213】
本明細書では、本開示を実施するために知られている最良の形態を含む、本開示の好ましい実施形態について説明している。当業者には、前述の説明を読むことにより、これらの好ましい実施形態の変形形態が明らかになるであろう。当業者であれば、このような変形形態を適宜採用することができるはずであり、本開示は、本明細書に具体的に説明したもの以外の方法で実施してもよい。したがって、本開示は、適用法によって許容される、本明細書に添付の特許請求の範囲に記載する主題のすべての変形形態および均等物を含む。さらに、本明細書において別段の指示のないかぎり、そのすべてのあり得る変形における上述した要素の任意の組み合わせは、本開示に包含される。
【0214】
本明細書に引用した刊行物、特許出願、および特許を含むすべての参考文献は、各文献が参照により組み込まれることが個々にかつ具体的に示され、その全体が本明細書に記載された場合と同じ程度に、参照により組み込まれる。前述の明細書において、本開示の態様について、その具体的な実施形態を参照して説明しているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述した開示のさまざまな特徴および態様は、個々にまたは協働して使用してもよい。さらに、実施形態は、本明細書のより広義の趣旨および範囲から逸脱することなく、本明細書に記載したものを超える任意の数の環境および用途において利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【国際調査報告】