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