IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特表2024-503599高度に利用可能なフローのための通信チャネル状態情報の同期
<>
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図1
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図2
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図3
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図4
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図5
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図6
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図7A
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図7B
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図8
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図9
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図10
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図11
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図12
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図13
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図14
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図15
  • 特表-高度に利用可能なフローのための通信チャネル状態情報の同期 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-26
(54)【発明の名称】高度に利用可能なフローのための通信チャネル状態情報の同期
(51)【国際特許分類】
   H04L 67/1095 20220101AFI20240119BHJP
   H04L 67/1034 20220101ALI20240119BHJP
   G06F 11/20 20060101ALI20240119BHJP
   H04L 9/16 20060101ALI20240119BHJP
【FI】
H04L67/1095
H04L67/1034
G06F11/20 620
H04L9/16
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023540145
(86)(22)【出願日】2021-12-21
(85)【翻訳文提出日】2023-08-25
(86)【国際出願番号】 US2021064612
(87)【国際公開番号】W WO2022146787
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】63/132,036
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/556,540
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】キーン,ジョン・エリック
(72)【発明者】
【氏名】キング,マイロン・デッカー
(72)【発明者】
【氏名】クレーガー-スティクルズ,ルーカス・マイケル
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034BB02
5B034CC01
(57)【要約】
顧客オンプレミスネットワーク内の第1のエンドポイントとクラウドサービスプロバイダインフラストラクチャ内のプライマリホストマシン上の第2のエンドポイントとを有する通信チャネルに対して、プライマリホストマシンは、通信チャネルの状態情報の変更を決定し、通信チャネルのバックアップホストマシンを特定する。プライマリホストマシンは、状態情報の変更をバックアップホストマシンに複製する。フェイルオーバによってバックアップホストマシンが通信チャネルの第2のエンドポイントになったときに、バックアップホストマシンに複製され、記憶されている状態情報は、バックアップホストマシンによって使用可能である。
【特許請求の範囲】
【請求項1】
方法であって、
顧客オンプレミスネットワーク内の第1のエンドポイントとクラウドサービスプロバイダインフラストラクチャ内のプライマリホストマシン上の第2のエンドポイントとを有する通信チャネルに対して、前記プライマリホストマシンが、前記通信チャネルの状態情報の変更を決定することと、
前記プライマリホストマシンが、前記通信チャネルのバックアップホストマシンを特定することと、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに複製することを含み、フェイルオーバによって前記バックアップホストマシンが前記通信チャネルの前記第2のエンドポイントになったときに、前記バックアップホストマシンに複製され、記憶されている前記状態情報は、前記バックアップホストマシンによって使用可能である、方法。
【請求項2】
前記通信チャネルの前記状態情報の前記変更を前記バックアップホストマシンに複製することは、
前記プライマリホストマシンが、前記状態情報の前記変更の前記複製がセーフモードで実行されているかを判断することを含み、前記状態情報の前記変更は、前記プライマリホストマシンによって受信されたパケットを解析することによって特定され、
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていると判断した場合、
前記プライマリホストマシンが、前記パケットの処理を中断し、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに通信し、前記バックアップホストマシンは、複製チェーン内の前記プライマリホストマシンの後継ホストマシンであり、
前記プライマリホストマシンが、前記バックアップホストマシンが前記状態情報を複製したことを示す確認応答を受信し、
前記確認応答を受信したことに応答して、前記プライマリホストマシンが、前記パケットの処理を再開することを含む、請求項1に記載の方法。
【請求項3】
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていないと判定した場合、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに通信し、
前記プライマリホストマシンが、前記パケットを処理することをさらに含む、請求項2に記載の方法。
【請求項4】
前記通信チャネルの前記状態情報は、シーケンス番号、暗号状態情報、インターネット鍵交換(IKE)状態情報、およびボーダゲートウェイプロトコル(BGP)状態情報のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項5】
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていると判断するステップは、前記プライマリホストマシンが、前記プライマリホストマシンのダウンタイムが閾値期間内にスケジュールされていると判断することをさらに含む、請求項2に記載の方法。
【請求項6】
前記通信チャネルの前記状態情報の前記変更を決定することは、
前記プライマリホストマシンが、前記通信チャネルの前記状態情報の前記変更をトリガするイベントを検出することと、
前記プライマリホストマシンが、前記イベントに関連するパケットを解析することによって、前記状態情報の前記変更を決定することとをさらに含む、請求項1に記載の方法。
【請求項7】
前記状態情報の前記変更をトリガする前記イベントは、
前記プライマリホストマシンがパケットを受信することと、
前記通信チャネルの接続に関連する暗号化または復号化情報の変更を受信することと、
前記接続に関連するボーダゲートウェイプロトコル(BGP)状態情報の変更を受信することとのうちの少なくとも1つである、請求項6に記載の方法。
【請求項8】
前記通信チャネルの前記バックアップホストマシンを特定することは、
前記プライマリホストマシンが、ディスクバックアップストレージサーバに照会することによって、前記通信チャネルの前記複製チェーンを特定することと、
前記プライマリホストマシンが、前記複製チェーン内の前記通信チャネルの前記バックアップホストマシンを決定することとをさらに含み、
前記プライマリホストマシンは、前記複製チェーンのヘッドであり、
前記バックアップホストマシンは、前記複製チェーン内の前記プライマリホストマシンの後継ホストマシンである、請求項2に記載の方法。
【請求項9】
前記プライマリホストマシンによって受信されたパケットを解析することは、
前記プライマリホストマシンが、前記パケットの一部をハッシュすることによって、ハッシュ結果を生成することと、
前記プライマリホストマシンが、前記ハッシュ結果に基づいて前記通信チャネルの前記状態情報を特定することとをさらに含む、請求項2に記載の方法。
【請求項10】
前記通信チャネルは、インターネットプロトコルセキュリティ(IPSec)トンネルである、請求項1に記載の方法。
【請求項11】
実行されると、コンピュータシステムのプロセッサに方法を実行させるコンピュータ実行可能な命令を記憶する非一時的なコンピュータ可読記憶媒体であって、
前記方法は、
顧客オンプレミスネットワーク内の第1のエンドポイントとクラウドサービスプロバイダインフラストラクチャ内のプライマリホストマシン上の第2のエンドポイントとを有する通信チャネルに対して、前記プライマリホストマシンが、前記通信チャネルの状態情報の変更を決定することと、
前記プライマリホストマシンが、前記通信チャネルのバックアップホストマシンを特定することと、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに複製することを含み、フェイルオーバによって前記バックアップホストマシンが前記通信チャネルの前記第2のエンドポイントになったときに、前記バックアップホストマシンに複製され、記憶されている前記状態情報は、前記バックアップホストマシンによって使用可能である、非一時的なコンピュータ可読記憶媒体。
【請求項12】
前記通信チャネルの前記状態情報の前記変更を前記バックアップホストマシンに複製することは、
前記プライマリホストマシンが、前記状態情報の前記変更の前記複製がセーフモードで実行されているかを判断することを含み、前記状態情報の前記変更は、前記プライマリホストマシンによって受信されたパケットを解析することによって特定され、
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていると判断した場合、
前記プライマリホストマシンが、前記パケットの処理を中断し、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに通信し、前記バックアップホストマシンは、複製チェーン内の前記プライマリホストマシンの後継ホストマシンであり、
前記プライマリホストマシンが、前記バックアップホストマシンが前記状態情報を複製したことを示す確認応答を受信し、
前記確認応答を受信したことに応答して、前記プライマリホストマシンが、前記パケットの処理を再開することを含む、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項13】
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていないと判定した場合、
前記プライマリホストマシンが、前記状態情報の前記変更を前記バックアップホストマシンに通信し、
前記プライマリホストマシンが、前記パケットを処理することをさらに含む、請求項12に記載の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記通信チャネルの前記状態情報は、シーケンス番号、暗号状態情報、インターネット鍵交換(IKE)状態情報、およびボーダゲートウェイプロトコル(BGP)状態情報のうちの少なくとも1つを含む、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記状態情報の前記変更の前記複製が前記セーフモードで実行されていると判断するステップは、前記プライマリホストマシンが、前記プライマリホストマシンのダウンタイムが閾値期間内にスケジュールされていると判断することをさらに含む、請求項12に記載の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記通信チャネルの前記状態情報の前記変更を決定することは、
前記プライマリホストマシンが、前記通信チャネルの前記状態情報の前記変更をトリガするイベントを検出することと、
前記プライマリホストマシンが、前記イベントに関連するパケットを解析することによって、前記状態情報の前記変更を決定することとをさらに含む、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記状態情報の前記変更をトリガする前記イベントは、
前記プライマリホストマシンがパケットを受信することと、
前記通信チャネルの接続に関連する暗号化または復号化情報の変更を受信することと、
前記接続に関連するボーダゲートウェイプロトコル(BGP)状態情報の変更を受信することとのうちの少なくとも1つである、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記通信チャネルの前記バックアップホストマシンを特定することは、
前記プライマリホストマシンが、ディスクバックアップストレージサーバに照会することによって、前記通信チャネルの前記複製チェーンを特定することと、
前記プライマリホストマシンが、前記複製チェーン内の前記通信チャネルの前記バックアップホストマシンを決定することとをさらに含み、
前記プライマリホストマシンは、前記複製チェーンのヘッドであり、
前記バックアップホストマシンは、前記複製チェーン内の前記プライマリホストマシンの後継ホストマシンである、請求項12に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記プライマリホストマシンによって受信されたパケットを解析することは、
前記プライマリホストマシンが、前記パケットの一部をハッシュすることによって、ハッシュ結果を生成することと、
前記プライマリホストマシンが、前記ハッシュ結果に基づいて前記通信チャネルの前記状態情報を特定することとをさらに含む、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記通信チャネルは、インターネットプロトコルセキュリティ(IPSec)トンネルである、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、米国特許法第119条(e)に基づいて、2020年12月30日に出願された米国仮出願第63/132036号および2021年12月20日に出願された米国非仮出願第17/556540号の利益および優先権を主張する。前述した出願の全ての内容は、あらゆる目的で参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
クラウドベースのサービスに対する需要は、急速に増加し続けている。クラウドサービスという用語は、一般的に、クラウドサービスプロバイダによって提供されたシステムおよびインフラストラクチャ(クラウドインフラストラクチャ)を用いて、(例えば、加入モデルを介して)オンデマンドでユーザまたは顧客に提供されるサービスを指す。通常、クラウドサービスプロバイダのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは別個である。したがって、顧客は、サービスのためにハードウェアリソースおよびソフトウェアリソースを別途購入する必要なく、クラウドサービスプロバイダによって提供されているクラウドサービスを利用することができる。クラウドサービスは、様々な異なる種類のサービス、例えば、SaaS(Software-as-a-Service)、PaaS(Platform-as-a-Service)、IaaS(Infrastructure-as-a-Service)を含む。
【0003】
IaaSモデルにおいて、クラウドセンデスプロバイダは、インフラストラクチャリソース(例えば、計算リソース、メモリリソース、サーバなどのネットワーキングリソース、記憶装置)を提供し、顧客は、これらのインフラストラクチャリソースを用いて、自身のリソースおよび仮想ネットワークを構築することができる。IaaSクラウドサービスプロバイダによって提供され、相互に接続された高性能コンピュータ、メモリ、およびネットワークリソースまたはコンポーネントを含むインフラストラクチャは、(基板ネットワークまたはアンダーレイネットワークとも呼ばれる)物理ネットワークを形成する。物理ネットワークは、物理ネットワーク上で(オーバーレイネットワークとも呼ばれる)顧客仮想ネットワークを作成するための基礎を提供する。
【0004】
クラウドサービスプロバイダは、一般的に、広範囲のアプリケーション、サービス、およびAPIを提供する。これによって、顧客(例えば、企業)は、高度に利用可能な分散環境において、仮想ネットワークを効率的に構築し、これらの仮想ネットワークに様々な仮想作業負荷(例えば、仮想マシン、コンテナ、アプリケーション)を配置および管理することができる。顧客は、一般的に、オンプレミスワークロードの管理と同じ方法で、クラウドベースのワークロードを管理することができ、オンプレミスネットワークと同じ制御、隔離、セキュリティおよび予測可能な性能で、高性能のコンピューティング能力およびネットワーク能力の全てのメリットを得ることができる。
【0005】
顧客は、一般的に、1つ以上の顧客オンプレミスネットワークと、クラウドサービスプロバイダによって提供されたインフラストラクチャを用いてクラウドに展開された1つ以上の仮想ネットワークとを有する。顧客オンプレミスネットワークは、様々な異なる通信機構を提供しているため、顧客仮想クラウドネットワークと通信することができる。通信を設立するために、これらの通信に参加できるように、顧客オンプレミスネットワーク内の装置または機器を構成する必要がある。例えば、顧客オンプレミスネットワークと、クラウドサービスインフラストラクチャ(CSPI)上でホストされている顧客仮想ネットワーク内の別のエンドポイントであるホストマシンとの間の通信チャネルの1つのエンドポイントである顧客構内機器(CPE)を適切に構成する必要がある。CPEエンドポイントとCSPIエンドポイントとの間のトラフィックを安全に処理するために、インターネットプロトコルセキュリティ(IPsec)トンネルを構成する必要がある。
【0006】
顧客は、基礎インフラストラクチャに問題があっても(例えば、ホストマシンがダウンしても、ケーブル配線に問題があっても)、ダウンタイムを最小限に抑えて、クラウドサービスの高度な可用性を期待している。これを実現するために、クラウドサービスプロバイダは、インフラストラクチャに冗長性を組み込んでいる。例えば、ネットワークパケットを処理するホストマシンには、1つ以上のバックアップシステム(バックアップホストマシン)が指定される。これによって、ホストマシンに何らかの問題が発生してパケットを処理できなくなった場合、バックアップホストマシンのうちの1つがパケットの処理を引き受ける。これによって、顧客に対して中断があったとしても、最小限に抑えられる。通常、ホストマシンがダウンすると、当該ホストマシンに関連する通信チャネルもダウンするため、双方向の全てのトラフィックが破棄される。
【0007】
顧客仮想ネットワーク内のエンドポイントまたはホストマシンがダウンした場合、バックアップシステムが新しい通信チャネルをネゴシエートするのに長い時間(例えば、数秒から数分)がかかることがある。顧客仮想クラウドネットワークがエンドポイント故障時にパケットを処理するためのバックアップ通信チャネルを装備している場合、バックアップチャネルを設立し、フェイルオーバ中にパケットをバックアップチャネルに動的にルーティングするという解決策は、非常に複雑であり、特にこの解決策を分散環境の全体に展開する場合に時間がかかる。
【発明の概要】
【0008】
概要
本開示は、一般的に、クラウドサービスの可用性を改善するための技術に関し、より詳しくは、複数のホストマシン間の通信チャネル関連の状態情報を維持および複製するための技術に関する。本明細書は、方法、システム、および1つ以上のプロセッサによって実行可能なプログラム、コードまたは命令を記憶する非一時的なコンピュータ可読記憶媒体を含む様々な実施形態を記載する。
【0009】
本開示の態様は、方法を提供する。この方法は、顧客オンプレミスネットワーク内の第1のエンドポイントとクラウドサービスプロバイダインフラストラクチャ内のプライマリホストマシン上の第2のエンドポイントとを有する通信チャネルに対して、プライマリホストマシンが、通信チャネルの状態情報の変更を決定することと、プライマリホストマシンが、通信チャネルのバックアップホストマシンを特定することと、プライマリホストマシンが、状態情報の変更をバックアップホストマシンに複製することを含み、フェイルオーバによってバックアップホストマシンが通信チャネルの第2のエンドポイントになったときに、バックアップホストマシンに複製され、記憶されている状態情報は、バックアップホストマシンによって使用可能である。
【0010】
本開示の別の態様は、実行されると、コンピュータシステムのプロセッサに方法を実行させるコンピュータ実行可能な命令を記憶する非一時的なコンピュータ可読記憶媒体を提供する。この方法は、顧客オンプレミスネットワーク内の第1のエンドポイントとクラウドサービスプロバイダインフラストラクチャ内のプライマリホストマシン上の第2のエンドポイントとを有する通信チャネルに対して、プライマリホストマシンが、通信チャネルの状態情報の変更を決定することと、プライマリホストマシンが、通信チャネルのバックアップホストマシンを特定することと、プライマリホストマシンが、状態情報の変更をバックアップホストマシンに複製することを含み、フェイルオーバによってバックアップホストマシンが通信チャネルの第2のエンドポイントになったときに、バックアップホストマシンに複製され、記憶されている状態情報は、バックアップホストマシンによって使用可能である。
【0011】
本明細書は、方法、システム、および1つ以上のプロセッサによって実行可能なプログラム、コードまたは命令を記憶する非一時的なコンピュータ可読記憶媒体を含む様々な実施形態を記載する。これらの例示的な実施形態は、本開示を限定または定義するためではなく、その理解を助けるための例を提供するために記載されている。追加の実施形態は、詳細な説明にさらに記載され、検討される。
【0012】
本開示の特徴、実施形態、および利点は、添付の図面を参照して以下の詳細な説明を読めば、よりよく理解される。
【図面の簡単な説明】
【0013】
図1】特定の実施形態に従って、クラウドサービスプロバイダインフラストラクチャによってホストされている仮想またはオーバーレイクラウドネットワークを示す分散環境のハイレベル図である。
図2】特定の実施形態に従って、CSPI内の物理ネットワークの物理要素を示すアーキテクチャ概略図である。
図3】特定の実施形態に従って、ホストマシンが複数のネットワーク仮想化装置(NVD)に接続されているCSPIの例示的な配置を示す図である。
図4】特定の実施形態に従って、ホストマシンとマルチテナント機能をサポートするためのI/O仮想化を提供するNVDとの間の接続を示す図である。
図5】特定の実施形態に従って、CSPIによって提供された物理ネットワークを示す概略ブロック図である。
図6】特定の実施形態に従って、通信チャネル関連の状態情報を複製するための例示的な実施形態を組み込む分散環境を示す概略ブロック図である。
図7A】特定の実施形態に従って、複製チェーン内の複数のホストマシンを示す例示的なブロック図である。
図7B】特定の実施形態に従って、複製チェーン内の複数のホストマシンを示す別の例示的なブロック図である。
図8】特定の実施形態に従って、通信チャネル関連の状態情報をバックアップホストマシンに複製するための方法を示す概略フローチャートである。
図9】特定の実施形態に従って、複製チャネルが通信チャネル関連の状態情報を複製することを示す概略フローチャートである。
図10】特定の実施形態に従って、通信チャネル関連の状態情報を複製するためにプライマリホストマシンによって実行された詳細な処理を示す概略フローチャートである。
図11】特定の実施形態に従って、プライマリホストマシンのフェイルオーバ中にパケット処理を処理するために実行されたステップを示す概略フローチャートである。
図12】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための1つのパターンを示すブロック図である。
図13】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図14】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図15】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図16】少なくとも1つの実施形態に従って、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0014】
詳細な説明
以下の説明において、説明の目的で、特定の詳細が特定の実施形態の完全な理解を提供するために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図面および説明は、限定的であることを意図しない。「例示的」という用語は、本開示において、「例示、事例または図示として機能する」ことを意味するために使用される。本開示において「例示的」として記載されたいかなる実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0015】
本開示は、高度に利用可能なフローのために、クラウドサービスプロバイダインフラストラクチャ(CSPI)によってホストされている複数のホストマシンの通信チャネルの状態情報を同期するための技術を記載する。より具体的には、顧客オンプレミスネットワーク内のエンドポイントと、クラウドサービスプロバイダインフラストラクチャ(CSPI)上でホストされている仮想ネットワーク内のエンドポイントとの間のトラフィックを処理する通信チャネルの状態情報を同期するための技術が記載されている。
【0016】
顧客は、クラウドサービスプロバイダ(CSP)がCSPIを用いて提供した1つ以上のクラウドサービスに加入する。通信チャネル(例えば、IPsecトンネル)は、顧客オンプレミスネットワーク内の通信エンドポイントである顧客構内機器(CPE)と、クラウドサービスインフラストラクチャ(CSPI)の顧客仮想ネットワーク内のプライマリエンドポイントであるホストマシンとの間でパケットを安全に送信するように構成されてもよい。2つのエンドポイントは、互いにネゴシエートすることによって通信チャネルを設立する。具体的には、暗号化および認証に関連する一連のメッセージを2つのエンドポイント間で送受信することによって、通信のために使用される暗号化および認証関連パラメータに関与する合意をネゴシエートすることができる。ネゴシエートすることによって、2つのエンドポイント間のセキュリティアソシエーション(SA)が決定され、SAは、通信するエンドポイントによって合意され、承認されたセキュリティ特性を指定する。単一のSAは、一方向のデータを保護することができる。SAは、2つのエンドポイント間の通信パケットを暗号化および復号する方法に関する詳細を両方のエンドポイントに提供する。
【0017】
通常、トラフィックを受信しているエンドポイントが何らかの理由(例えば、フェイルオーバまたはメンテナンス)でダウンした場合、通信チャネルまたはトンネルもダウンするため、双方向の全てのトラフィックが破棄される。クラウドインフラストラクチャ(CSPI)内のエンドポイントがダウンした場合、インフラストラクチャは、CPEのエンドポイントとCSPIとの間のトラフィックの処理を引き受けるためのバックアップシステムを提供することができる。しかしながら、バックアップシステムは、バックアップシステム上のトラフィックを送受信するために、CPEのエンドポイントと新しいトンネルをネゴシエートする必要があるため、複雑で時間がかかる可能性がある。
【0018】
フェイルオーバの場合に新しいトンネルを設立することは、エンドポイント間で一連のネゴシエーションおよび構成を行う必要があるため、数分かかる可能性がある。バックアップトンネルを設立する間に、特定種類の接続、例えばTCP接続を使用しているアプリケーションは、タイムアウトする場合があり、顧客にとって受け入れがたいものである。例えば、オンライン買物客がウェブサイト上で買い物をしており、ウェブサイトのデータベースがサービスプロバイダによって提供されたクラウドネットワーク上にある場合、データベースを管理しているクラウドネットワーク内のエンドポイントに障害が検出されると、ショッピング取引が失敗したり、ショッピングカートがタイムアウトしたりする可能性がある。このようなことは、クラウドサービスの顧客にとって受け入れがたいものである。特定のサービスプロバイダは、CSPI上でホストされているプライマリエンドポイントに障害が発生した場合に備えて、CPEエンドポイントとバックアップシステムとの間のトラフィックを処理するためのバックアップトンネルを提供する。しかしながら、バックアップシステムへのバックアップトンネルを用いてトラフィックを処理することは、プライマリエンドポイントがダウンするたびに、バックアップトンネルを設立し、トラフィックをバックアップトンネルに複雑且つ動的にルーティングする必要がある。これらの解決策は、CSPI内のシステムがレイヤ3プロトコルを用いて通信している多数の顧客を管理しているクラウドコンピューティング環境に実装するのには複雑で時間がかかる。
【0019】
本開示は、CPEのエンドポイントとCSPIのプライマリエンドポイントとの間のパケットを処理するために使用されたバックアップエンドポイントへの通信チャネルと同じものを用いて、ネットワークトラフィックを処理するための方法を検討する。この方法は、2つのトンネルを持つことによる複雑さおよびバックアップトンネルの新しい接続をネゴシエートしている間に接続を失うリスクを回避しながら、異なるエンドポイントでトラフィックを処理することができる高可用性のトンネルを提供する。
【0020】
クラウドサービスという用語は、一般的に、クラウドサービスプロバイダ(CSP)が、システムおよびインフラストラクチャ(クラウドインフラストラクチャ)を用いて、(例えば、サブスクリプションモデルを介して)オンデマンドでユーザまたは顧客に提供されるサービスを指す。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムから離れている。したがって、顧客は、サービス用のハードウェアリソースおよびソフトウェアリソースを別途購入することなく、CSPによって提供されるクラウドサービスを利用することができる。クラウドサービスは、サービスを提供するために使用されるインフラストラクチャの調達に顧客が投資する必要がなく、アプリケーションおよび計算リソースへの容易且つ拡張可能なアクセスを加入している顧客に提供するように設計されている。
【0021】
いくつかのクラウドサービスプロバイダ(CSP)は、様々な種類のクラウドサービスを提供する。クラウドサービスは、SaaS(Software-as-a-Service)、PaaS(Platform-as-a-Service)、IaaS(Infrastructure-as-a-Service)などの様々な異なる種類またはモデルを含む。
【0022】
顧客は、CSPによって提供される1つ以上のクラウドサービスに加入することができる。顧客は、個人、組織、企業などの任意のエンティティであってもよい。顧客がCSPによって提供されるサービスに加入または登録すると、その顧客のテナントまたはアカウントが作成される。その後、顧客は、このアカウントを介して、アカウントに関連する1つ以上の加入済みクラウドリソースにアクセスすることができる。
【0023】
上述したように、IaaS(Infrastructure as a Service)は、1つの特定種類のクラウドコンピューティングサービスである。IaaSモデルにおいて、CSPは、顧客が自身のカスタマイズ可能なネットワークを構築し、顧客リソースを展開するために使用できるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャまたはCSPIと呼ばれる)を提供する。したがって、顧客のリソースおよびネットワークは、CSPによって提供されたインフラストラクチャによって分散環境にホストされる。これは、顧客のインフラストラクチャが顧客のリソースおよびネットワークをホストする従来のコンピューティングとは異なる。
【0024】
CSPIは、基板ネットワークまたはアンダーレイネットワークとも呼ばれる物理ネットワークを形成する、様々なホストマシン、メモリリソース、およびネットワークリソースを含む相互接続された高性能の計算リソースを含んでもよい。CSPIのリソースは、1つ以上の地理的な地域にわたって地理的に分散されている1つ以上のデータセンタに分散されてもよい。仮想化ソフトウェアは、これらの物理リソースによって実行され、仮想化分散環境を提供することができる。仮想化は、物理ネットワーク上に(ソフトウェアベースネットワーク、ソフトウェア定義ネットワーク、または仮想ネットワークとも呼ばれる)オーバーレイネットワークを作成する。CSPI物理ネットワークは、物理ネットワークの上に1つ以上のオーバーレイまたは仮想ネットワークを作成するための基礎を提供する。仮想またはオーバーレイネットワークは、1つ以上の仮想クラウドネットワーク(VCN)を含むことができる。仮想ネットワークは、ソフトウェア仮想化技術(例えば、ハイパーバイザ、ネットワーク仮想化装置(NVD)(例えば、スマートNIC)によって実行される機能、トップオブラック(TOR)スイッチ、NVDによって実行される1つ以上の機能を実装するスマートTOR、および他のメカニズム)を用いて実装され、物理ネットワークの上で実行できるネットワーク抽象化層を作成する。仮想ネットワークは、ピアツーピアネットワーク、IPネットワークなどの様々な形態をとることができる。仮想ネットワークは、典型的には、レイヤ3IPネットワークまたはレイヤ2VLANのいずれかである。このような仮想ネットワークまたはオーバーレイネットワークは、しばしば仮想レイヤ3ネットワークまたはオーバーレイレイヤ3ネットワークと呼ばれる。仮想ネットワークのために開発されたプロトコルの例は、IP-in-IP(またはGRE(Generic Routing Encapsulation))、仮想拡張可能LAN(VXLAN-IETF RFC7348)、仮想プライベートネットワーク(VPN)(例えば、MPLSレイヤ3仮想プライベートネットワーク(RFC4364))、VMware NSX、GENEVE(Generic Network Virtualization Encapsulation)などを含む。
【0025】
IaaSの場合、CSPによって提供されたインフラストラクチャ(CSPI)は、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成されてもよい。IaaSモデルにおいて、クラウドコンピューティングサービスプロバイダは、インフラストラクチャ要素(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、それらのインフラストラクチャ要素に付随する様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を提供することができる。これらのサービスがポリシー駆動型であるため、IaaSユーザは、負荷分散を駆動するためのポリシーを実装することによって、アプリケーションの可用性および性能を維持することができる。CSPIは、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。これによって、顧客は、可用性の高いホスト型分散環境で幅広いアプリケーションおよびサービスを構築し、実行することができる。CSPIは、顧客オンプレミスネットワークなどの様々なネットワーク拠点から安全にアクセスできる柔軟な仮想ネットワーク上で高性能の計算リソースおよび能力ならびに記憶容量を提供する。顧客がCSPによって提供されたIaaSサービスに加入または登録すると、その顧客のために作成されたテナンシは、CSPIから安全に分離されたパーティションとなり、顧客は、クラウドリソースを作成、整理、管理することができる。
【0026】
顧客は、CSPIによって提供された計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自の仮想ネットワークを構築することができる。これらの仮想ネットワーク上に、計算インスタンスなどの1つ以上の顧客リソースまたはワークロードを展開することができる。例えば、顧客は、CSPIによって提供されたリソースを使用して、仮想クラウドネットワーク(VCN)と呼ばれる1つ以上のカスタマイズ可能なプライベート仮想ネットワークを構築することができる。顧客は、顧客VCN上で1つ以上の顧客リソース、例えば計算インスタンスを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどであってもよい。したがって、CSPIは、顧客が可用性の高い仮想ホスト環境において様々なアプリケーションおよびサービスを構築および実行することを可能にするインフラストラクチャおよび一連の相補的なクラウドサービスを提供する。顧客は、CSPIによって提供された基礎的な物理リソースを管理または制御しないが、オペレーティングシステム、記憶、および展開されたアプリケーションを制御し、場合によっては一部のネットワーキングコンポーネント(例えば、ファイアウォール)を限定的に制御する。
【0027】
CSPは、顧客およびネットワーク管理者がCSPIリソースを使用してクラウドに展開されたリソースを構成、アクセス、および管理することを可能にするコンソールを提供することができる。特定の実施形態において、コンソールは、CSPIを利用および管理するために使用することができるウェブベースのユーザインターフェイスを提供する。いくつかの実施形態において、コンソールは、CSPによって提供されたウェブベースのアプリケーションである。
【0028】
CSPIは、シングルテナンシアーキテクチャまたはマルチテナンシアーキテクチャをサポートすることができる。シングルテナンシアーキテクチャにおいて、ソフトウェア(例えば、アプリケーション、データベース)またはハードウェア要素(例えば、ホストマシンまたはサーバ)は、単一の顧客またはテナントにサービスを提供する。マルチテナンシアーキテクチャにおいて、ソフトウェアまたはハードウェア要素は、複数の顧客またはテナントにサービスを提供する。したがって、マルチテナンシアーキテクチャにおいて、CSPIリソースは、複数の顧客またはテナントの間で共有される。マルチテナンシ環境において、各テナントのデータが分離され、他のテナントから見えないようにするために、CSPIには予防措置および保護措置が講じられる。
【0029】
物理ネットワークにおいて、ネットワークエンドポイント(エンドポイント)は、物理ネットワークに接続され、接続されているネットワークと双方向に通信するコンピューティング装置またはシステムを指す。物理ネットワークのネットワークエンドポイントは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、または他の種類の物理ネットワークに接続されてもよい。物理ネットワークの従来のエンドポイントの例は、モデム、ハブ、ブリッジ、スイッチ、ルータ、および他のネットワーキング装置、物理コンピュータ(またはホストマシン)などを含む。物理ネットワークの各物理装置は、当該装置と通信するために使用できる固定ネットワークアドレスを有する。この固定ネットワークアドレスは、レイヤ2アドレス(例えば、MACアドレス)、固定レイヤ3アドレス(例えば、IPアドレス)などであってもよい。仮想化環境または仮想ネットワークにおいて、エンドポイントは、物理ネットワークの要素によってホストされている(例えば、物理ホストマシンによってホストされている)仮想マシンなどの様々な仮想エンドポイントを含むことができる。仮想ネットワークのこれらのエンドポイントは、オーバーレイレイヤ2アドレス(例えば、オーバーレイMACアドレス)およびオーバーレイレイヤ3アドレス(例えば、オーバーレイIPアドレス)などのオーバーレイアドレスによってアドレス指定されている。ネットワークオーバーレイは、ネットワーク管理者がソフトウェア管理を用いて(例えば、仮想ネットワークの制御プレーンを実装するソフトウェアを介して)ネットワークエンドポイントに関連付けられたオーバーレイアドレスを移動できるようにすることによって柔軟性を実現する。したがって、物理ネットワークとは異なり、仮想ネットワークにおいて、ネットワーク管理ソフトウェアを使用して、オーバーレイアドレス(例えば、オーバーレイIPアドレス)を1つのエンドポイントから別のエンドポイントに移動することができる。仮想ネットワークが物理ネットワーク上に構築されているため、仮想ネットワークおよび基礎物理ネットワークの両方は、仮想ネットワークの要素間の通信に関与する。このような通信を容易にするために、CSPIの各要素は、仮想ネットワークのオーバーレイアドレスを基板ネットワークの実際の物理アドレスにまたは基板ネットワークの実際の物理アドレスを仮想ネットワークのオーバーレイアドレスにマッピングするマッピングを学習および記憶するように構成されている。これらのマッピングは、通信を容易にするために使用される。仮想ネットワークのルーティングを容易にするために、顧客トラフィックは、カプセル化される。
【0030】
したがって、物理アドレス(例えば、物理IPアドレス)は、物理ネットワークの要素に関連付けられ、オーバーレイアドレス(例えば、オーバーレイIPアドレス)は、仮想ネットワークのエンティティに関連付けられる。物理IPアドレスとオーバーレイIPアドレスは、いずれも実IPアドレスである。これらは、仮想IPアドレスとは別物である。仮想IPアドレスは、複数の実IPアドレスにマッピングされる。仮想IPアドレスは、仮想IPアドレスと複数の実IPアドレスとの間の1対多マッピングを提供する。
【0031】
クラウドインフラストラクチャまたはCSPIは、世界中の1つ以上の地域の1つ以上のデータセンタにおいて物理的にホストされている。CSPIは、物理ネットワークまたは基板ネットワークの要素と、物理ネットワーク要素上に構築された仮想ネットワークの仮想化要素(例えば、仮想ネットワーク、計算インスタンス、仮想マシン)とを含んでもよい。特定の実施形態において、CSPIは、レルム(realm)、地域(region)、および利用可能なドメイン(domain)において編成およびホストされている。地域は、典型的には、1つ以上のデータセンタを含む局所的な地理領域である。地域は、一般的に互いに独立しており、例えば、国または大陸を跨ぐ広大な距離によって分離されてもよい。例えば、第1の地域は、オーストラリアにあってもよく、別の地域は、日本にあってもよく、さらに別の地域は、インドにあってもよい。CSPIリソースは、各地域が独立したCSPIリソースのサブセットを有するようにこれらの地域間で分割される。各地域は、一連のコアインフラストラクチャサービスおよびリソース、例えば、計算リソース(例えば、ベアメタルサーバ、仮想マシン、コンテナおよび関連インフラストラクチャ)、記憶リソース(例えば、ブロックボリューム記憶、ファイル記憶、オブジェクト記憶、アーカイブ記憶)、ネットワーキングリソース(例えば、仮想クラウドネットワーク(VCN)、負荷分散リソース、オンプレミスネットワークへの接続)、データベースリソース、エッジネットワーキングリソース(例えば、DNS)、アクセス管理、および監視リソースなどを提供することができる。各地域は、一般的に、当該地域をレルム内の他の地域に接続するための複数の経路を持つ。
【0032】
一般的に、アプリケーションは、近くのリソースを使用する場合に遠くのリソースを使用することよりも速いため、最も多く使用される地域に展開される(すなわち、その地域に関連するインフラストラクチャ上に展開される)。また、アプリケーションは、大規模な気象システムまたは地震などの地域全体のイベントのリスクを軽減するための冗長性、法的管轄、税金ドメイン、および他のビジネスまたは社会的基準に対する様々な要件を満たすための冗長性など、様々な理由で異なる地域に展開されてもよい。
【0033】
地域内のデータセンタは、さらに編成され、利用可能なドメイン(availability domain:AD)に細分化されてもよい。利用可能なドメインは、ある地域に配置された1つ以上のデータセンタに対応してもよい。地域は、1つ以上の利用可能なドメインによって構成されてもよい。このような分散環境において、CSPIリソースは、仮想クラウドネットワーク(VCN)などの地域に固有なものまたは計算インスタンスなどの利用可能なドメインに固有なものである。
【0034】
1つの地域内のADは、フォールトトレラント(fault tolerant)になるように互いに分離され、同時に故障する可能性が非常に低くなるように構成されている。これは、1つの地域内の1つのADの障害が同じ地域内の他のADの可用性に影響を与えることが殆どないように、ネットワーキング、物理ケーブル、ケーブル経路、ケーブル入口などの重要なインフラストラクチャリソースを共有しないように、ADを構成することによって達成される。同じ地域内のADを低遅延広帯域のネットワークで互いに接続することによって、他のネットワーク(例えば、インターネット、顧客オンプレミスネットワーク)への高可用性接続を提供し、複数のADにおいて高可用性および災害復旧の両方のための複製システムを構築することができる。クラウドサービスは、複数のADを利用して、高可用性を確保すると共に、リソースの障害から保護する。IaaSプロバイダによって提供されたインフラストラクチャが成長するにつれて、追加の容量と共により多くの地域およびADを追加してもよい。利用可能なドメイン間のトラフィックは、通常、暗号化される。
【0035】
特定の実施形態において、地域は、レルムにグループ化される。レルムは、地域の論理集合である。レルムは、互いに隔離されており、いかなるデータを共有しない。同じレルム内の地域は、互いに通信することができるが、異なるレルム内の地域は、通信することができない。CSPの顧客のテナンシまたはアカウントは、単一のレルムに存在し、その単一のレルムに属する1つ以上の地域を跨ることができる。典型的には、顧客がIaaSサービスに加入すると、レルム内の顧客指定地域(「ホーム」地域と呼ばれる)に、その顧客のテナンシまたはアカウントが作成される。顧客は、顧客のテナンシをレルム内の1つ以上の他の地域に拡張することができる。顧客は、顧客のテナンシが存在するレルム内に存在していない地域にアクセスすることができない。
【0036】
IaaSプロバイダは、複数のレルムを提供することができ、各レルムは、特定の組の顧客またはユーザに対応する。例えば、商用レルムは、商用顧客のために提供されてもよい。別の例として、レルムは、特定の国のためにまたはその国の顧客のために提供されてもよい。さらに別の例として、政府用レルムは、例えば政府のために提供されてもよい。例えば、政府用レルムは、特定の政府のために作成されてもよく、商用レルムよりも高いセキュリティレベルを有してもよい。例えば、オラクル(登録商標)クラウドインフラストラクチャ(OCI)は、現在、商用領域向けのレルムと、政府クラウド領域向けの2つのレルム(例えば、FedRAMP認可およびIL5認可)とを提供する。
【0037】
特定の実施形態において、ADは、1つ以上の障害ドメイン(fault domain)に細分化することができる。障害ドメインは、反親和性(anti-affinity)を提供するために、AD内のインフラストラクチャリソースをグループ化したものである。障害ドメインは、計算インスタンスを分散することができる。これによって、計算インスタンスは、1つのAD内の同じ物理ハードウェア上に配置されない。これは、反親和性として知られている。障害ドメインは、1つの障害点を共有するハードウェア要素(コンピュータ、スイッチなど)の集合を指す。計算プールは、障害ドメインに論理的に分割される。このため、1つの障害ドメインに影響を与えるハードウェア障害または計算ハードウェア保守イベントは、他の障害ドメインのインスタンスに影響を与えない。実施形態によっては、各ADの障害ドメインの数は、異なってもよい。例えば、特定の実施形態において、各ADは、3つの障害ドメインを含む。障害ドメインは、AD内の論理データセンタとして機能する。
【0038】
顧客がIaaSサービスに加入すると、CSPIからのリソースは、顧客にプロビジョニングされ、顧客のテナンシに関連付けられる。顧客は、これらのプロビジョニングされたリソースを使用して、プライベートネットワークを構築し、これらのネットワーク上にリソースを展開することができる。CSPIによってクラウド上でホストされている顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、顧客用に割り当てられたCSPIリソースを使用して、1つ以上の仮想クラウドネットワーク(VCN)を構成することができる。VCNとは、仮想またはソフトウェア定義のプライベートネットワークである。顧客のVCNに配備された顧客リソースは、計算インスタンス(例えば、仮想マシン、ベアメタルインスタンス)および他のリソースを含むことができる。これらの計算インスタンスは、アプリケーション、ロードバランサ、データベースなどの様々な顧客作業負荷を表してもよい。VCN上に配備された計算インスタンスは、インターネットなどのパブリックネットワークを介して公的にアクセス可能なエンドポイント(パブリックエンドポイント)と通信することができ、同じVCNまたは他のVCN(例えば、顧客の他のVCN、または顧客に属さないVCN)内の他のインスタンスと通信することができ、顧客オンプレミスデータセンタまたはネットワークと通信することができ、サービスエンドポイントと通信することができ、および他の種類のエンドポイントと通信することができる。
【0039】
CSPは、CSPIを用いて様々なサービスを提供することができる。場合によっては、CSPIの顧客自身は、サービスプロバイダのように振る舞い、CSPIリソースを使用してサービスを提供することができる。サービスプロバイダは、識別情報(例えば、IPアドレス、DNS名およびポート)によって特徴付けられるサービスエンドポイントを公開することができる。顧客のリソース(例えば、計算インスタンス)は、サービスによって公開されたその特定のサービスのサービスエンドポイントにアクセスすることによって、特定のサービスを消費することができる。これらのサービスエンドポイントは、一般的に、ユーザがエンドポイントに関連付けられたパブリックIPアドレスを使用して、インターネットなどのパブリック通信ネットワークを介して公的にアクセス可能なエンドポイントである。公的にアクセス可能なネットワークエンドポイントは、パブリックエンドポイントと呼ばれることもある。
【0040】
特定の実施形態において、サービスプロバイダは、(サービスエンドポイントと呼ばれることもある)サービスのエンドポイントを介してサービスを公開することができる。サービスの顧客は、このサービスエンドポイントを使用してサービスにアクセスすることができる。特定の実施形態において、サービスのために提供されたサービスエンドポイントは、そのサービスを消費しようとする複数の顧客によってアクセスすることができる。他の実装形態において、専用のサービスエンドポイントを顧客に提供してもよい。したがって、その顧客のみは、その専用サービスエンドポイントを使用してサービスにアクセスすることができる。
【0041】
特定の実施形態において、VCNは、作成されると、そのVCNに割り当てられたプライベートオーバーレイIPアドレス範囲(例えば、10.0/16)であるプライベートオーバーレイクラスレスドメイン間ルーティング(Classless Inter-Domain Routing:CIDR)アドレス空間に関連付けられる。VCNは、関連するサブネット、ルートテーブル、およびゲートウェイを含む。VCNは、単一の地域内に存在するが、地域の1つ以上または全ての利用可能なドメインに拡張することができる。ゲートウェイは、VCN用に構成され、VCNとVCN外部の1つ以上のエンドポイントとの間のトラフィック通信を可能にする仮想インターフェイスである。VCNの1つ以上の異なる種類のゲートウェイを構成することによって、異なる種類のエンドポイント間の通信を可能にすることができる。
【0042】
VCNは、1つ以上のサブネットなどの1つ以上のサブネットワークに細分化されてもよい。したがって、サブネットは、VCN内で作成され得る構成単位または区画である。VCNは、1つ以上のサブネットを持つことができる。VCN内の各サブネットは、当該VCN内の他のサブネットと重複せず、当該VCNのアドレス空間のアドレス空間サブセットを表すオーバーレイIPアドレス(例えば、10.0.0.0/24および10.0.1.0/24)の連続範囲に関連付けられる。
【0043】
各計算インスタンスは、仮想ネットワークインターフェイスカード(VNIC)に関連付けられる。これによって、各計算インスタンスは、VCNのサブネットに参加することができる。VNICは、物理ネットワークインターフェイスカード(NIC)の論理表現である。一般的に、VNICは、エンティティ(例えば、計算インスタンス、サービス)と仮想ネットワークとの間のインターフェイスである。VNICは、サブネットに存在し、1つ以上の関連するIPアドレスと、関連するセキュリティルールまたはポリシーとを有する。VNICは、スイッチ上のレイヤ2ポートに相当する。VNICは、計算インスタンスと、VCN内のサブネットとに接続されている。計算インスタンスに関連付けられたVNICは、計算インスタンスがVCNのサブネットの一部であることを可能にし、計算インスタンスが、計算インスタンスと同じサブネット上にあるエンドポイントと、VCN内の異なるサブネット内のエンドポイントと、またはVCN外部のエンドポイントと通信する(例えば、パケットを送信および受信する)ことを可能にする。したがって、計算インスタンスに関連するVNICは、計算インスタンスがVCNの内部および外部のエンドポイントとどのように接続しているかを判断する。計算インスタンスのVNICは、計算インスタンスが作成され、VCN内のサブネットに追加されるときに作成され、その計算インスタンスに関連付けられる。サブネットは、計算インスタンスのセットからなる場合、計算インスタンスのセットに対応するVNICを含み、各VNICは、コンピュータインスタンスのセット内の計算インスタンスに接続されている。
【0044】
計算インスタンスに関連するVNICを介して、各計算インスタンスにはプライベートオーバーレイIPアドレスが割り当てられる。このプライベートオーバーレイIPアドレスは、計算インスタンスの作成時に計算インスタンスに関連するVNICに割り当てられ、計算インスタンスのトラフィックをルーティングするために使用される。特定のサブネット内の全てのVNICは、同じルートテーブル、セキュリティリスト、およびDHCPオプションを使用する。上述したように、VCN内の各サブネットは、当該VCN内の他のサブネットと重複せず、当該VCNのアドレス空間のアドレス空間サブセットを表すオーバーレイIPアドレス(例えば、10.0.0.0/24および10.0.1.0/24)の連続範囲に関連付けられる。VCNの特定のサブネット上のVNICの場合、VNICに割り当てられたオーバーレイIPアドレスは、サブネットに割り当てられたオーバーレイIPアドレスの連続範囲からのアドレスである。
【0045】
特定の実施形態において、必要に応じて、計算インスタンスには、プライベートオーバーレイIPアドレスに加えて、追加のオーバーレイIPアドレス、例えば、パブリックサブネットの場合に1つ以上のパブリックIPアドレスを割り当てることができる。これらの複数のアドレスは、同じVNIC、または計算インスタンスに関連付けられた複数のVNICに割り当てられる。しかしながら、各インスタンスは、インスタンス起動時に作成され、インスタンスに割り当てられたオーバーレイプライベートIPアドレスに関連付けられたプライマリVNICを有する。このプライマリVNICは、削除することができない。セカンダリVNICと呼ばれる追加のVNICは、プライマリVNICと同じ利用可能なドメイン内の既存のインスタンスに追加することができる。全てのVNICは、インスタンスと同じ利用可能なドメインにある。セカンダリVNICは、プライマリVNICと同じVCNのサブネットにあってもよく、または同じVCNまたは異なるVCNの異なるサブネットにあってもよい。
【0046】
計算インスタンスは、パブリックサブネットにある場合、オプションでパブリックIPアドレスを割り当てられることができる。サブネットを作成するときに、当該サブネットをパブリックサブネットまたはプライベートサブネットのいずれかとして指定することができる。プライベートサブネットとは、当該サブネット内のリソース(例えば、計算インスタンス)および関連するVNICがパブリックオーバーレイIPアドレスを持つことができないことを意味する。パブリックサブネットとは、サブネット内のリソースおよび関連するVNICがパブリックIPアドレスを持つことができることを意味する。顧客は、地域またはレルム内の単一の利用可能なドメインまたは複数の利用可能なドメインにわたって存在するサブネットを指定することができる。
【0047】
上述したように、VCNは、1つ以上のサブネットに細分化されてもよい。特定の実施形態において、VCNのために構成された仮想ルータ(VCN VRまたは単にVRと呼ばれる)は、VCNのサブネット間の通信を可能にする。VCN内のサブネットの場合、VRは、サブネット(すなわち、当該サブネット上の計算インスタンス)と、VCN内部の他のサブネット上のエンドポイントおよびVCN外部の別のエンドポイントとの通信を可能にする当該サブネットの論理ゲートウェイを表す。VCN VRは、VCN内のVNICと、VCNに関連する仮想ゲートウェイ(ゲートウェイ)との間のトラフィックをルーティングするように構成された論理エンティティである。ゲートウェイは、図1に関して以下でさらに説明される。VCN VRは、レイヤ3/IPレイヤの概念である。一実施形態において、1つのVCNに対して1つのVCN VRが存在する。このVCN VRは、IPアドレスによってアドレス指定された無制限の数のポートを潜在的に有し、VCNの各サブネットに対して1つのポートを有する。このようにして、VCN VRは、VCN VRが接続されているVCNの各サブネットに対して異なるIPアドレスを有する。また、VRは、VCNのために構成された様々なゲートウェイに接続されている。特定の実施形態において、サブネットのオーバーレイIPアドレス範囲からの特定のオーバーレイIPアドレスは、そのサブネットのVCN VRのポートに保留される。例えば、関連するアドレス範囲10.0/16および10.1/16を各々有する2つのサブネットを有するVCNを考える。アドレス範囲10.0/16を有するVCNの第1のサブネットの場合、この範囲からのアドレスは、そのサブネットのVCN VRのポートに保留される。場合によっては、この範囲からの第1のIPアドレスは、VCN VRに保留されてもよい。例えば、オーバーレイIPアドレス範囲10.0/16を有するサブネットの場合、IPアドレス10.0.0.1は、そのサブネットのVCN VRのポートに保留されてもよい。同じVCN内のアドレス範囲10.1/16を有する第2のサブネットの場合、VCN VRは、IPアドレス10.1.0.1を有する第2のサブネットのポートを有してもよい。VCN VRは、VCN内の各サブネットに対して異なるIPアドレスを有する。
【0048】
いくつかの他の実施形態において、VCN内の各サブネットは、VRに関連付けられた保留またはデフォルトIPアドレスを使用してサブネットによってアドレス指定可能な、それ自身に関連するVRを有してもよい。保留またはデフォルトIPアドレスは、例えば、そのサブネットに関連付けられたIPアドレスの範囲からの第1のIPアドレスであってもよい。サブネット内のVNICは、このデフォルトまたは保留IPアドレスを使用して、サブネットに関連付けられたVRと通信(例えば、パケットを送信および受信)することができる。このような実施形態において、VRは、そのサブネットの着信/送信ポイントである。VCN内のサブネットに関連付けられたVRは、VCN内の他のサブネットに関連付けられた他のVRと通信することができる。また、VRは、VCNに関連付けられたゲートウェイと通信することができる。サブネットのVR機能は、サブネット内のVNICのVNIC機能を実行する1つ以上のNVD上で実行され、またはそれによって実行される。
【0049】
ルートテーブル、セキュリティルール、およびDHCPオプションは、VCNのために構成されてもよい。ルートテーブルは、VCNの仮想ルートテーブルであり、ゲートウェイまたは特別に構成されたインスタンスを経由して、トラフィックをVCN内部のサブネットからVCN外部の宛先にルーティングするためのルールを含む。VCNとの間でパケットの転送/ルーティングを制御するために、VCNのルートテーブルをカスタマイズすることができる。DHCPオプションは、インスタンスの起動時にインスタンスに自動的に提供される構成情報を指す。
【0050】
VCNのために構成されたセキュリティルールは、VCNのオーバーレイファイアウォールルールを表す。セキュリティルールは、受信ルールおよび送信ルールを含むことができ、(例えば、プロトコルおよびポートに基づいて)VCN内のインスタンスに出入りすることを許可されるトラフィックの種類を指定することができる。顧客は、特定の規則をステートフルまたはステートレスにするかを選択することができる。例えば、顧客は、ソースCIDR0.0.0.0/0および宛先TCPポート22を含むステートフル受信ルールを設定することによって、任意の場所から1組のインスタンスへの着信SSHトラフィックを許可することができる。セキュリティルールは、ネットワークセキュリティグループまたはセキュリティリストを使用して実装されてもよい。ネットワークセキュリティグループは、そのグループ内のリソースのみに適用されるセキュリティルールのセットからなる。一方、セキュリティリストは、そのセキュリティリストを使用するサブネット内の全てのリソースに適用されるルールを含む。VCNは、デフォルトセキュリティルールとデフォルトセキュリティリストを含んでもよい。VCNのために構成されたDHCPオプションは、VCN内のインスタンスが起動するときに自動的に提供される構成情報を提供する。
【0051】
特定の実施形態において、VCNの構成情報は、VCN制御プレーンによって決定され、記憶される。VCNの構成情報は、例えば、VCNに関連するアドレス範囲、VCN内のサブネットおよび関連情報、VCNに関連する1つ以上のVR、VCN内の計算インスタンスおよび関連VNIC、VCNに関連する種々の仮想化ネットワーク機能(例えば、VNIC、VR、ゲートウェイ)を実行するNVD、VCNの状態情報、および他のVCN関連情報を含んでもよい。特定の実施形態において、VCN配信サービスは、VCN制御プレーンによって記憶されている構成情報またはその一部をNVDに公開する。配信された情報を用いて、NVDによって記憶および使用される情報(例えば、転送テーブル、ルーティングテーブルなど)を更新することによって、VCN内の計算インスタンスとの間でパケットを転送することができる。
【0052】
特定の実施形態において、VCNおよびサブネットの作成は、VCN制御プレーン(CP)によって処理され、計算インスタンスの起動は、計算制御プレーンによって処理される。計算制御プレーンは、計算インスタンスの物理リソースを割り当て、次にVCN制御プレーンを呼び出して、VNICを作成し、計算インスタンスに接続するように構成される。また、VCN CPは、パケットの転送およびルーティング機能を実行するように構成されたVCNデータプレーンに、VCNデータマッピングを送信する。特定の実施形態において、VCN CPは、更新をVCNデータプレーンに提供するように構成された配信サービスを提供する。VCN制御プレーンの例は、図12、13、14、および15(参照番号1216、1316、1416、および1516を参照)に示され、以下に説明される。
【0053】
顧客は、CSPIによってホストされているリソースを用いて、1つ以上のVCNを作成することができる。顧客VCN上に展開された計算インスタンスは、異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPIによってホストされているエンドポイントおよびCSPL外部のエンドポイントを含むことができる。
【0054】
CSPIを用いてクラウドベースのサービスを実装するための様々な異なるアーキテクチャは、図1、2、3、4、5、12、13、14、および15に示され、以下に説明される。図1は、特定の実施形態に従って、CSPIによってホストされているオーバーレイVCNまたは顧客VCNを示す分散環境100のハイレベル図である。図1に示された分散環境は、オーバーレイネットワーク内の複数の要素を含む。図1に示された分散環境100は、単なる例であり、特許請求された実施形態の範囲を不当に限定することを意図していない。多くの変形例、代替例、および修正例が可能である。例えば、いくつかの実装形態において、図1に示された分散環境は、図1に示されたものより多いまたは少ないシステムまたは要素を有してもよく、2つ以上のシステムを組み合わせてもよく、または異なるシステムの構成または配置を有してもよい。
【0055】
図1の例に示すように、分散環境100は、顧客が加入して仮想クラウドネットワーク(VCN)を構築するために使用することができるサービスおよびリソースを提供するCSPI101を含む。特定の実施形態において、CSPI101は、加入顧客にIaaSサービスを提供する。CSPI101内のデータセンタは、1つ以上の地域に編成されてもよい。図1は、地域の一例である「US地域」102を示す。顧客は、地域102に対して顧客VCN104を構成している。顧客は、VCN104上に様々な計算インスタンスを展開することができ、計算インスタンスは、仮想マシンまたはベアメタルインスタンスを含むことができる。インスタンスの例は、アプリケーション、データベース、ロードバランサなどを含む。
【0056】
図1に示された実施形態において、顧客VCN104は、2つのサブネット、すなわち、「サブネット-1」および「サブネット-2」を含み、各サブネットは、各自のCIDR IPアドレス範囲を有する。図1において、サブネット-1のオーバーレイIPアドレス範囲は、10.0/16であり、サブネット-2のアドレス範囲は、10.1/16である。VCN仮想ルータ105は、VCN104のサブネット間の通信およびVCN外部の別のエンドポイントとの通信を可能にするVCNの論理ゲートウェイを表す。VCN VR105は、VCN104内のVNICとVCN104に関連するゲートウェイとの間でトラフィックをルーティングするように構成される。VCN VR105は、VCN104の各サブネットにポートを提供する。例えば、VR105は、IPアドレス10.0.0.1を有するポートをサブネット-1に提供することができ、IPアドレス10.1.0.1を有するポートをサブネット-2に提供することができる。
【0057】
各サブネット上に複数の計算インスタンスを展開することができる。この場合、計算インスタンスは、仮想マシンインスタンスおよび/またはベアメタルインスタンスであってもよい。サブネット内の計算インスタンスは、CSPI101内の1つ以上のホストマシンによってホストされてもよい。計算インスタンスは、当該計算インスタンスに関連するVNICを介してサブネットに参加する。例えば、図1に示すように、計算インスタンスC1は、当該計算インスタンスに関連するVNICを介したサブネット-1の一部である。同様に、計算インスタンスC2は、C2に関連するVNICを介したサブネット-1の一部である。同様に、仮想マシンインスタンスまたはベアメタルインスタンスであり得る複数の計算インスタンスは、サブネット-1の一部であってもよい。各計算インスタンスには、関連するVNICを介して、プライベートオーバーレイIPアドレスおよびMACアドレスが割り当てられる。例えば、図1において、計算インスタンスC1は、オーバーレイIPアドレス10.0.0.2およびMACアドレスM1を有し、計算インスタンスC2は、プライベートオーバーレイIPアドレス10.0.0.3およびMACアドレスM2を有する。計算インスタンスC1およびC2を含むサブネット-1内の各計算インスタンスは、サブネット-1のVCN VR105のポートのIPアドレスであるIPアドレス10.0.0.1を使用して、VCN VR105へのデフォルトルートを有する。
【0058】
サブネット-2には、仮想マシンインスタンスおよび/またはベアメタルインスタンスを含む複数の計算インスタンスを展開することができる。例えば、図1に示すように、計算インスタンスDlおよびD2は、それぞれの計算インスタンスに関連するVNICを介したサブネット-2の一部である。図1に示す実施形態において、計算インスタンスD1は、オーバーレイIPアドレス10.1.0.2およびMACアドレスMM1を有し、計算インスタンスD2は、プライベートオーバーレイIPアドレス10.1.0.3およびMACアドレスMM2を有する。計算インスタンスD1およびD2を含むサブネット-2内の各計算インスタンスは、サブネット-2のVCN VR105のポートのIPアドレスであるIPアドレス10.1.0.1を使用して、VCN VR105へのデフォルトルートを有する。
【0059】
また、VCN A104は、1つ以上のロードバランサを含んでもよい。例えば、ロードバランサは、サブネットに対して提供されてもよく、サブネット上の複数の計算インスタンス間でトラフィックをロードバランスするように構成されてもよい。また、ロードバランサは、VCN内のサブネット間でトラフィックをロードバランスするように提供されてもよい。
【0060】
VCN104上に展開された特定の計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPI200によってホストされているエンドポイントと、CSPI200外部のエンドポイントとを含んでもよい。CSPI101によってホストされているエンドポイントは、特定の計算インスタンスと同じサブネット上のエンドポイント(例えば、サブネット-1の2つの計算インスタンス間の通信)、異なるサブネットにあるが同じVCN内のエンドポイント(例えば、サブネット-1の計算インスタンスとサブネット-2の計算インスタンスとの間の通信)、同じ地域の異なるVCN内のエンドポイント(例えば、サブネット-1の計算インスタンスと、同じ地域106または110のVCN内のエンドポイントとの間の通信、サブネット-1内の計算インスタンスと、同じ地域のサービスネットワーク110内のエンドポイントとの間の通信)、または異なる地域のVCN内のエンドポイント(例えば、サブネット-1の計算インスタンスと、異なる地域108のVCN内のエンドポイントとの間の通信)を含んでもよい。また、CSPI101によってホストされているサブネット内の計算インスタンスは、CSPI101によってホストされていない(すなわち、CSPI101の外部にある)エンドポイントと通信することができる。これらの外部のエンドポイントは、顧客オンプレミスネットワーク116内のエンドポイント、他のリモートクラウドホストネットワーク118内のエンドポイント、インターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイント114、および別のエンドポイントを含む。
【0061】
同じサブネット上の計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICを使用して促進される。例えば、サブネット-1内の計算インスタンスC1は、サブネット-1内の計算インスタンスC2にパケットを送信したいことがある。ソース計算インスタンスから送信され、その宛先が同じサブネット内の別の計算インスタンスであるパケットの場合、このパケットは、まず、ソース計算インスタンスに関連するVNICによって処理される。ソース計算インスタンスに関連するVNICによって実行される処理は、パケットヘッダからパケットの宛先情報を決定することと、ソース計算インスタンスに関連するVNICに対して構成された任意のポリシー(例えば、セキュリティリスト)を特定することと、パケットのネクストホップ(next hop)を決定することと、必要に応じて任意のパケットのカプセル化/デカプセル化機能を実行することと、パケットの意図した宛先への通信を容易にするためにパケットをネクストホップに転送/ルーティングすることとを含んでもよい。宛先計算インスタンスがソース計算インスタンスと同じサブネットにある場合、ソース計算インスタンスに関連するVNICは、宛先計算インスタンスに関連するVNICを特定し、処理するためのパケットをそのVNICに転送するように構成されている。次いで、宛先計算インスタンスに関連するVNICは、実行され、パケットを宛先計算インスタンスに転送する。
【0062】
サブネット内の計算インスタンスから同じVCNの異なるサブネット内のエンドポイントにパケットを通信する場合、通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICと、VCN VRとによって促進される。例えば、図1のサブネット-1の計算インスタンスC1がサブネット-2の計算インスタンスD1にパケットを送信したい場合、パケットは、まず、計算インスタンスC1に関連するVNICによって処理される。計算インスタンスC1に関連するVNICは、VCN VRのデフォルトルートまたはポート10.0.0.1を使用して、パケットをVCN VR105にルーティングするように構成されている。VCN VR105は、ポート10.1.0.1を使用してパケットをサブネット-2にルーティングするように構成されている。その後、パケットは、D1に関連するVNICによって受信および処理され、VNICは、パケットを計算インスタンスD1に転送する。
【0063】
VCN104内の計算インスタンスからVCN104の外部のエンドポイントにパケットを通信するために、通信は、ソース計算インスタンスに関連するVNIC、VCN VR105、およびVCN104に関連するゲートウェイによって促進される。1つ以上の種類のゲートウェイをVCN104に関連付けることができる。ゲートウェイは、VCNと別のエンドポイントとの間のインターフェイスであり、別のエンドポイントは、VCNの外部にある。ゲートウェイは、レイヤ3/IPレイヤ概念であり、VCNとVCNの外部のエンドポイントとの通信を可能にする。したがって、ゲートウェイは、VCNと他のVCNまたはネットワークとの間のトラフィックフローを容易にする。異なる種類のエンドポイントとの異なる種類の通信を容易にするために、様々な異なる種類のゲートウェイをVCNに設定することができる。ゲートウェイによって、通信は、パブリックネットワーク(例えば、インターネット)またはプライベートネットワークを介して行われてもよい。これらの通信には、様々な通信プロトコルを使用してもよい。
【0064】
例えば、計算インスタンスC1は、VCN104の外部のエンドポイントと通信したい場合がある。パケットは、まず、ソース計算インスタンスC1に関連するVNICによって処理されてもよい。VNIC処理は、パケットの宛先がClのサブネット-1の外部にあると判断する。C1に関連するVNICは、パケットをVCN104のVCN VR105に転送することができる。次いで、VCN VR105は、パケットを処理し、処理の一部として、パケットの宛先に基づいて、VCN104に関連する特定のゲートウェイをパケットのネクストホップとして決定する。その後、VCN VR105は、パケットを特定のゲートウェイに転送することができる。例えば、宛先が顧客のオペプレミスネットワーク内のエンドポイントである場合、パケットは、VCN VR105によって、VCN104のために構成された動的ルーティングゲートウェイ(DRG)122に転送されてもよい。その後、パケットは、ゲートウェイからネクストホップに転送され、意図した最終の宛先へのパケットの通信を容易にすることができる。
【0065】
VCNのために様々な異なる種類のゲートウェイを構成してもよい。VCNのために構成され得るゲートウェイの例は、図1に示され、以下に説明される。VCNに関連するゲートウェイの例は、図12、13、14、および15(例えば、参照番号1234、1236、1238、1334、1336、1338、1434、1436、1438、1534、1536、および1538によって示されたゲートウェイ)にも示され、以下に説明される。図1に示された実施形態に示されるように、動的ルーティングゲートウェイ(DRG)122は、顧客VCN104に追加されてもよく、またはそれに関連付けられてもよい。DRG122は、顧客VCN104と別のエンドポイントとの間のプライベートネットワークトラフィック通信を行うための経路を提供する。別のエンドポイントは、顧客オンプレミスネットワーク116、CSPI101の異なる地域内のVCN108、またはCSPI101によってホストされていない他のリモートクラウドネットワーク118であってもよい。顧客オンプレミスネットワーク116は、顧客のリソースを用いて構築された顧客ネットワークまたは顧客データセンタであってもよい。顧客オンプレミスネットワーク116へのアクセスは、一般的に厳しく制限される。顧客オンプレミスネットワーク116と、CSPI101によってクラウドに展開またはホストされる1つ以上のVCN104との両方を有する顧客の場合、顧客は、オンプレミスネットワーク116およびクラウドベースのVCN104が互いに通信できることを望む場合がある。これによって、顧客は、CSPI101によってホストされている顧客のVCN104とオンプレミスネットワーク116とを含む拡張ハイブリッド環境を構築することができる。DRG122は、このような通信を可能にする。このような通信を可能にするために、通信チャネル124が設定される。この場合、通信チャネルの一方のエンドポイントは、顧客オンプレミスネットワーク116に配置され、他方のエンドポイントは、CSPI101に配置され、顧客VCN104に接続されている。通信チャネル124は、インターネットなどのパブリック通信ネットワーク、またはプライベート通信ネットワークを経由することができる。インターネットなどのパブリック通信ネットワーク上のIPsec VPN技術、パブリックネットワークの代わりにプライベートネットワークを使用するオラクル(登録商標)のFastConnect技術などの様々な異なる通信プロトコルを使用することができる。通信チャネル124の1つのエンドポイントを形成する顧客オンプレミスネットワーク116内の装置または機器は、図1に示されたCPE126などの顧客構内機器(CPE)と呼ばれる。CSPI101側のエンドポイントは、DRG122を実行するホストマシンであってもよい。特定の実施形態において、リモートピアリング接続(RPC)をDRGに追加することができる。これによって、顧客は、1つのVCNを別の地域内の別のVCNとピアリングすることができる。このようなRPCを使用して、顧客VCN104は、DRG122を使用して、別の地域内のVCN108に接続することができる。また、DRG122は、CSPI101によってホストされていない他のリモートクラウドネットワーク118、例えば、マイクロソフト(登録商標)Azureクラウド、アマゾン(登録商標)AWSクラウドと通信するために使用されてもよい。
【0066】
図1に示すように、顧客VCN104上の計算インスタンスがインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイント114と通信することを可能にするように、顧客VCN104にインターネットゲートウェイ(IGW)120を構成することができる。IGW1120は、VCNをインターネットなどのパブリックネットワークに接続するためのゲートウェイである。IGW120は、VCN104などのVCN内のパブリックサブネット(パブリックサブネット内のリソースは、パブリックオーバーレイIPアドレスを有する)がインターネットなどのパブリックネットワーク114上のパブリックエンドポイント112に直接アクセスすることを可能にする。IGW120を使用して、VCN104内のサブネットからまたはインターネットからの接続を開始することができる。
【0067】
顧客VCN104にネットワークアドレス変換(NAT)ゲートウェイ128を構成することができる。NATゲートウェイ128は、顧客VCN内の専用のパブリックオーバーレイIPアドレスを有しないクラウドリソースを、直接着信インターネット接続(例えば、L4-L7接続)に曝すことなくインターネットにアクセスすることを可能にする。これによって、VCN104のプライベートサブネット-1などのVCN内のプライベートサブネットがインターネット上のパブリックエンドポイントにプライベートアクセスすることを可能にする。NATゲートウェイにおいて、プライベートサブネットからパブリックインターネットに接続を開始することができるが、インターネットからプライベートサブネットに接続を開始することができない。
【0068】
特定の実施形態において、顧客VCN104にサービスゲートウェイ(SGW)126を構成することができる。SGW126は、VCN104とサービスネットワーク110にサポートされているサービスエンドポイントとの間のプライベートネットワークトラフィックの経路を提供する。特定の実施形態において、サービスネットワーク110は、CSPによって提供されてもよく、様々なサービスを提供することができる。このようなサービスネットワークの例は、顧客が使用できる様々なサービスを提供するオラクル(登録商標)サービスネットワークである。例えば、顧客VCN104のプライベートサブネット内の計算インスタンス(例えば、データベースシステム)は、パブリックIPアドレスまたはインターネットへのアクセスを必要とすることなく、サービスエンドポイント(例えば、オブジェクト記憶装置)にデータをバックアップすることができる。いくつかの実施形態において、VCNは、1つのみのSGWを有することができ、VCN内のサブネットのみから接続を開始することができ、サービスネットワーク110から接続を開始することができない。VCNを他のVCNにピアリングする場合、他のVCN内のリソースは、通常SGWにアクセスすることができない。FastConnectまたはVPN ConnectでVCNに接続されているオンプレミスネットワーク内のリソースも、そのVCNに構成されたサービスゲートウェイを使用することができる。
【0069】
いくつかの実装形態において、SGW126は、サービスクラスレスドメイン間ルーティング(CIDR)ラベルを使用する。CIDRラベルは、関心のあるサービスまたはサービスのグループに対する全ての地域公開IPアドレス範囲を表す文字列である。顧客は、SGWおよび関連するルーティングルールを設定する際に、サービスCIDRラベルを使用してサービスへのトラフィックを制御する。顧客は、サービスのパブリックIPアドレスが将来に変化する場合、セキュリティルールを調整する必要なく、セキュリティルールを設定するときにオプションとしてサービスCIDRラベルを使用することができる。
【0070】
ローカルピアリングゲートウェイ(LPG)132は、顧客VCN104に追加可能なゲートウェイであり、VCN104が同じ地域内の別のVCNとピアリングすることを可能にするものである。ピアリングとは、トラフィックがインターネットなどのパブリックネットワークを経由することなく、または顧客オンプレミスネットワーク116を通してトラフィックをルーティングすることなく、VCNがプライベートIPアドレスを使用して通信することを意味する。好ましい実施形態において、VCNは、確立した各ピアリングに対して個別のLPGを有する。ローカルピアリングまたはVCNピアリングは、異なるアプリケーション間またはインフラストラクチャ管理機能間のネットワーク接続を確立するために使用される一般的な慣行である。
【0071】
サービスネットワーク110のサービスのプロバイダなどのサービスプロバイダは、異なるアクセスモデルを使用してサービスへのアクセスを提供することができる。パブリックアクセスモデルによれば、サービスは、インターネットなどのパブリックネットワークを介して顧客VCN内の計算インスタンスによって公的にアクセス可能なパブリックエンドポイントとして公開されてもよく、またはSGW126を介してプライベートにアクセスされてもよい。特定のプライベートアクセスモデルによれば、サービスは、顧客VCN内のプライベートサブネット内のプライベートIPエンドポイントとしてアクセスされてもよい。これは、プライベートエンドポイント(PE)アクセスと呼ばれ、サービスプロバイダがそのサービスを顧客のプライベートネットワーク内のインスタンスとして公開することを可能にする。プライベートエンドポイントリソースは、顧客VCN内のサービスを表す。各PEは、顧客が顧客VCN内のサブネットから選択したVNIC(PE-VNICと呼ばれ、1つまたは複数のプライベートIPを持つ)として現れる。従って、PEは、VNICを使用して顧客のプライベートVCNサブネット内でサービスを提供する方法を提供する。エンドポイントがVNICとして公開されるため、PE VNICは、VNICに関連する全ての機能、例えば、ルーティングルールおよびセキュリティリストなどを利用することができる。
【0072】
サービスプロバイダは、サービスを登録することによって、PEを介したアクセスを可能にする。プロバイダは、顧客テナントへのサービスの表示を規制するポリシーをサービスに関連付けることができる。プロバイダは、特にマルチテナントサービスの場合、単一の仮想IPアドレス(VIP)の下に複数のサービスを登録することができる。(複数のVCNにおいて)同じサービスを表すプライベートエンドポイントが複数存在する場合もある。
【0073】
その後、プライベートサブネット内の計算インスタンスは、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接続)と呼ばれる。
【0074】
また、PE概念を用いて、トラフィックがFastConnect/IPsecリンクおよび顧客VCN内のプライベートエンドポイントを通って流れることを可能にすることで、サービスのプライベートアクセスを顧客オンプレミスネットワークおよびデータセンタに拡張することもできる。また、トラフィックがLPG132および顧客VCN内のPE間を通って流れることを可能にすることで、サービスのプライベートアクセスを顧客ピアリングVCNに拡張することもできる。
【0075】
顧客は、サブネットレベルでVCNのルーティングを制御することができるため、VCN104などの顧客VCNにおいて各ゲートウェイを使用するサブネットを指定することができる。VCNのルートテーブルを用いて、特定のゲートウェイを介してトラフィックをVCNの外部にルーティングできるか否かを判断することができる。例えば、特定の事例において、顧客VCN104内のパブリックサブネットのルートテーブルは、IGW120を介して非ローカルトラフィックを送信することができる。同じ顧客VCN104内のプライベートサブネットのルートテーブルは、SGW126を介してCSPサービスへのトラフィックを送信することができる。残りの全てのトラフィックは、NATゲートウェイ128を介して送信されてもよい。ルートテーブルは、VCNから出るトラフィックのみを制御する。
【0076】
VCNに関連するセキュリティリストは、インバウンド接続およびゲートウェイを介してVCNに入来するトラフィックを制御するために使用される。サブネット内の全てのリソースは、同じミュートテーブルおよびセキュリティリストを使用する。セキュリティリストは、VCNのサブネット内のインスタンスに出入りする特定の種類のトラフィックを制御するために使用されてもよい。セキュリティリストルールは、受信(インバウンド)ルールと、送信(アウトバウンド)ルールとを含んでもよい。例えば、受信ルールは、許可されたソースアドレス範囲を指定することができ、送信ルールは、許可された宛先アドレス範囲を指定することができる。セキュリティルールは、特定のプロトコル(例えば、TCP、ICMP)、特定のポート(例えば、SSHの場合ポート22、ウインドウズ(登録商標)RDPの場合ポート3389)などを指定することができる。特定の実装形態において、インスタンスのオペレーティングシステムは、セキュリティリストルールと一致する独自のファイアウォールルールを実施することができる。ルールは、ステートフル(例えば、接続が追跡され、応答トラフィックに対する明示的なセキュリティのリストルールなしで応答が自動的に許可される)またはステートレスであってもよい。
【0077】
顧客VCN(すなわち、VCN104上に展開されたリソースまたは計算インスタンス)からのアクセスは、パブリックアクセス、プライベートアクセス、または専用アクセスとして分類されてもよい。パブリックアクセスは、パブリックIPアドレスまたはNATを用いてパブリックエンドポイントにアクセスするためのアクセスモデルを指す。プライベートアクセスは、プライベートIPアドレス(例えば、プライベートサブネット内のリソース)を持つVCN104内の顧客ワークロードが、インターネットなどのパブリックネットワークを経由することなく、サービスにアクセスすることを可能にする。特定の実施形態において、CSPI101は、プライベートIPアドレスを持つ顧客VCNワークロードが、サービスゲートウェイを使用して、サービスのパブリックサービスエンドポイントにアクセスすることを可能にする。したがって、サービスゲートウェイは、顧客VCNと顧客プライベートネットワークの外部に存在するサービスのパブリックエンドポイントとの間に仮想リンクを確立することによって、プライベートアクセスモデルを提供する。
【0078】
さらに、CSPIは、FastConnectパブリックピアリングなどの技術を使用する専用パブリックアクセスを提供することができる。この場合、顧客オンプレミスインスタンスは、インターネットなどのパブリックネットワークを経由することなく、FastConnect接続を用いて顧客VCN内の1つ以上のサービスにアクセスすることができる。また、CSPIは、FastConnectプライベートピアリングを使用する専用プライベートアクセスを提供することもできる。この場合、プライベートIPアドレスを持つ顧客オンプレミスインスタンスは、FastConnect接続を用いて顧客VCNワークロードにアクセスすることができる。FastConnectは、パブリックインターネットを用いて顧客オンプレミスネットワークをCSPIおよびそのサービスに接続する代わりに使用されるネットワーク接続である。FastConnectは、インターネットベースの接続と比較して、より高い帯域幅オプションと信頼性の高い一貫したネットワーキング体験を持つ専用のプライベート接続を、簡単、柔軟且つ経済的に作成する方法を提供する。
【0079】
図1および上記の添付の説明は、例示的な仮想ネットワークにおける様々な仮想化要素を説明する。上述したように、仮想ネットワークは、基礎物理ネットワークまたは基板ネットワーク上に構築される。図2は、特定の実施形態に従って、仮想ネットワークの基盤を提供するCSPI200内の物理ネットワーク内の物理要素を示す簡略化アーキテクチャ図である。図示のように、CSPI200は、クラウドサービスプロバイダ(CSP)によって提供された要素およびリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を含む分散環境を提供する。これらの要素およびリソースは、加入している顧客、すなわち、CSPによって提供された1つ以上のサービスに加入している顧客にクラウドサービス(例えば、IaaSサービス)を提供するために使用される。顧客が加入しているサービスに基づいて、CSPI200は、一部のリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を顧客に提供する。その後、顧客は、CSPI200によって提供された物理的な計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自のクラウドベースの(すなわち、CSPIホスト型)カスタマイズ可能なプライベート仮想ネットワークを構築することができる。前述したように、これらの顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、これらの顧客VCNに、計算インスタンスなどの1つ以上の顧客リソースを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどであってもよい。CSPI200は、顧客が高可用性のホスト環境において広範なアプリケーションおよびサービスを構築および実行することを可能にする、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。
【0080】
図2に示す例示的な実施形態において、CSPI200の物理要素は、1つ以上の物理ホストマシンまたは物理サーバ(例えば、202、206、208)、ネットワーク仮想化装置(NVD)(例えば、210、212)、トップオブラック(TOR)スイッチ(例えば、214、216)、物理ネットワーク(例えば、218)、および物理ネットワーク218内のスイッチを含む。物理ホストマシンまたはサーバは、VCNの1つ以上のサブネットに参加している様々な計算インスタンスをホストし、実行することができる。計算インスタンスは、仮想マシンインスタンスおよびベアメタルインスタンスを含んでもよい。例えば、図1に示された様々な計算インスタンスは、図2に示された物理的ホストマシンによってホストされてもよい。VCN内の仮想マシン計算インスタンスは、1つのホストマシンによって実行されてもよく、または複数の異なるホストマシンによって実行されてもよい。また、物理ホストマシンは、仮想ホストマシン、コンテナベースのホストまたは機能などをホストすることができる。図1に示されたVICおよびVCN VRは、図2に示されたFTVDによって実行されてもよい。図1に示されたゲートウェイは、図2に示されたホストマシンおよび/またはNVDによって実行されてもよい。
【0081】
ホストマシンまたはサーバは、ホストマシン上で仮想化環境を作成するおよび可能にするハイパーバイザ(仮想マシンモニタまたはVMMとも呼ばれる)を実行することができる。仮想化または仮想化環境は、クラウドベースコンピューティングを容易にする。1つ以上の計算インスタンスは、ホストマシン上のハイパーバイザによって、ホストマシン上で作成され、実行され、管理されてもよい。ホストマシン上のハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)をホストマシン上で実行される様々な計算インスタンス間で共有させることができる。
【0082】
例えば、図2に示すように、ホストマシン202および208は、ハイパーバイザ260および266をそれぞれ実行する。これらのハイパーバイザは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを使用して実装されてもよい。典型的には、ハイパーバイザは、ホストマシンのオペレーティングシステム(OS)に常駐するプロセスまたはソフトウェア層であり、OSは、ホストマシンのハードウェアプロセッサ上で実行される。ハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、プロセッサ/コア、メモリリソース、ネットワーキングリソースなどの処理リソース)を、ホストマシンによって実行される様々な仮想マシン計算インスタンスの間で共有させる仮想化環境を提供する。例えば、図2において、ハイパーバイザ260は、ホストマシン202のOSに常駐し、ホストマシン202の計算リソース(例えば、処理リソース、メモリリソース、およびネットワーキングリソース)を、ホストマシン202によって実行されるコンピューティングインスタンス(例えば、仮想マシン)間で共有させることができる。仮想マシンは、独自のOS(ゲストOSと呼ばれる)を持つことができる。このゲストOSは、ホストマシンのOSと同じであってもよく、異なってもよい。ホストマシンによって実行される仮想マシンのOSは、同じホストマシンによって実行される他の仮想マシンのOSと同じであってもよく、異なってもよい。したがって、ハイパーバイザは、ホストマシンの同じ計算リソースを共有させながら、複数のOSを並行して実行することができる。図2に示されたホストマシンは、同じ種類のハイパーバイザを有してもよく、異なる種類のハイパーバイザを有してもよい。
【0083】
計算インスタンスは、仮想マシンインスタンスまたはベアメタルインスタンスであってもよい。図2において、ホストマシン202上の計算インスタンス268およびホストマシン208上の計算インスタンス274は、仮想マシンインスタンスの一例である。ホストマシン206は、顧客に提供されるベアメタルインスタンスの一例である。
【0084】
特定の例において、ホストマシンの全体は、単一の顧客に提供されてもよく、そのホストマシンによってホストされている1つ以上の計算インスタンス(仮想マシンまたはベアメタルインスタンスのいずれか)は、全て同じ顧客に属してもよい。他の例において、ホストマシンは、複数の顧客(すなわち、複数のテナント)間で共有されてもよい。このようなマルチテナントシナリオにおいて、ホストマシンは、異なる顧客に属する仮想マシン計算インスタンスをホストすることができる。これらの計算インスタンスは、異なる顧客の異なるVCNのメンバであってもよい。特定の実施形態において、ベアメタル計算インスタンスは、ハイパーバイザを設けていないベアメタルサーバによってホストされている。ベアメタル計算インスタンスが提供される場合、単一の顧客またはテナントは、ベアメタルインスタンスをホストするホストマシンの物理CPU、メモリ、およびネットワークインターフェイスの制御を維持し、ホストマシンは、他の顧客またはテナントに共有されない。
【0085】
前述したように、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によって実行される。
【0086】
ホストマシンによってホストされている計算インスタンスについて、そのホストマシンに接続されたNVDは、計算インスタンスがメンバであるVCNに対応するVCN VRを実行する。例えば、図2に示された実施形態において、NVD210は、計算インスタンス268がメンバであるVCNに対応するVCN VR277を実行する。また、NVD212は、ホストマシン206および208によってホストされている計算インスタンスに対応するVCNに対応する1つ以上のVCN VR283を実行することができる。
【0087】
ホストマシンは、当該ホストマシンを他の装置に接続するための1つ以上のネットワークインターフェイスカード(NIC)を含むことができる。ホストマシン上のNICは、ホストマシンを別の装置に通信可能に接続するための1つ以上のポート(またはインターフェイス)を提供することができる。例えば、ホストマシンおよびNVDに設けられた1つ以上のポート(またはインターフェイス)を用いて、当該ホストマシンを当該NVDに接続することができる。また、ホストマシンを他のホストマシンなどの他の装置に接続することもできる。
【0088】
例えば、図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に接続されている。
【0089】
同様に、NVDは、通信リンクを介して、(スイッチファブリックとも呼ばれる)物理ネットワーク218に接続されているトップオブラック(TOR)スイッチに接続されている。特定の実施形態において、ホストマシンとNVDとの間のリンクおよびNVDとTORスイッチとの間のリンクは、イーサネット(登録商標)リンクである。例えば、図2において、NVD210および212は、リンク228および230を介して、TORスイッチ214および216にそれぞれ接続される。特定の実施形態において、リンク220、224、226、228、および230は、イーサネットリンクである。TORに接続されているホストマシンおよびNVDの集合は、ラックと呼ばれることがある。
【0090】
物理ネットワーク218は、TORスイッチの相互通信を可能にする通信ファブリックを提供する。物理ネットワーク218は、多層ネットワークであってもよい。特定の実装形態において、物理ネットワーク218は、スイッチの多層Closネットワークであり、TORスイッチ214および216は、多層およびマルチノード物理スイッチングネットワーク218のリーフレベルノードを表す。2層ネットワーク、3層ネットワーク、4層ネットワーク、5層ネットワーク、および一般的に「n」層ネットワークを含むがこれらに限定されない異なるClosネットワーク構成は、可能である。CIosネットワークの一例は、図5に示され、以下に説明される。
【0091】
ホストマシンとN個のVDとの間には、1対1構成、多対1構成、および1対多構成などの様々な異なる接続構成が可能である。1対1構成の実装例において、各ホストマシンは、それ自体の別個のNVDに接続されている。例えば、図2において、ホストマシン202は、ホストマシン202のNIC232を介してNVD210に接続されている。多対1の構成において、複数のホストマシンは、1つのNVDに接続されている。例えば、図2において、ホストマシン206および208は、それぞれNIC244および250を介して同じNVD212に接続されている。
【0092】
1対多の構成において、1つのホストマシンは、複数のNVDに接続されている。図3は、ホストマシンが複数のNVDに接続されているCSPI300内の一例を示す。図3に示すように、ホストマシン302は、複数のポート306および30Sを含むネットワークインターフェイスカード(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スイッチング装置を表す。
【0093】
図3に示す構成は、物理スイッチネットワーク318からホストマシン302への2つの別々の物理ネットワーク経路、すなわち、TORスイッチ314からNVD310を経由してホストマシン302への第1の経路と、TORスイッチ316からNVD312を経由してホストマシン302への第2の経路とを提供する。別々の経路は、ホストマシン302の強化された可用性(高可用性と呼ばれる)を提供する。経路の一方に問題がある(例えば、経路の一方のリンクが故障する)場合または装置に問題がある(例えば、特定のNVDが機能していない)場合、ホストマシン302との間の通信に他方の経路を使用することができる。
【0094】
図3に示された構成において、ホストマシンは、ホストマシンのNICによって提供された2つの異なるポートを用いて2つの異なるNVDに接続されている。他の実施形態において、ホストマシンは、ホストマシンと複数のNVDとの接続を可能にする複数のNICを含んでもよい。
【0095】
再び図2を参照して、NVDは、1つ以上のネットワーク仮想化機能および/または記憶仮想化機能を実行する物理装置または要素である。NVDは、1つ以上の処理ユニット(例えば、CPU、ネットワーク処理ユニット(NPU)、FPGA、パケット処理パイプライン)、キャッシュを含むメモリ、およびポートを有する任意の装置であってもよい。様々な仮想化機能は、NVDの1つ以上の処理ユニットによって実行されるソフトウェア/ファームウェアによって実行されてもよい。
【0096】
NVDは、様々な異なる形で実装されてもよい。例えば、特定の実施形態において、NVDは、内蔵プロセッサを搭載したスマートNICまたはインテリジェントNICと呼ばれるインターフェイスカードとして実装される。スマートNICは、ホストマシン上のNICとは別個の装置である。図2において、NVD210は、ホストマシン202に接続されているスマートNICとして実装されてもよく、NVD212は、ホストマシン206および208に接続されているスマートNICとして実装されてもよい。
【0097】
しかしながら、スマートNICは、NVD実装の一例にすぎない。様々な他の実装が可能である。例えば、いくつかの他の実装例において、NVDまたはNVDによって実行される1つ以上の機能は、CSPI200の1つ以上のホストマシン、1つ以上のTORスイッチ、および他の要素に組み込まれてもよく、またはそれらによって実行されてもよい。例えば、NVDは、ホストマシンに統合されてもよい。この場合、NVDによって実行される機能は、ホストマシンによって実行される。別の例として、NVDは、TORスイッチの一部であってもよく、またはTORスイッチは、TORスイッチがパブリッククラウドに使用される様々な複雑なパケット変換を実行することを可能にするNVDによって実行される機能を実行するように構成されてもよい。NVDの機能を実行するTORは、スマートTORと呼ばれることがある。ベアメタル(BM)インスタンスではなく仮想マシン(VM)インスタンスを顧客に提供するさらに他の実装形態において、NVDによって提供される機能は、ホストマシンのハイパーバイザの内部に実装されてもよい。いくつかの他の実装形態において、NVDの機能の一部は、一組のホストマシン上で動作する集中型サービスにオフロードされてもよい。
【0098】
図2に示すように、スマートNICとして実装される場合などの特定の実施形態において、NVDは、当該NVDを1つ以上のホストマシンおよび1つ以上のTORスイッチに接続することを可能にする複数の物理ポートを備えてもよい。NVD上のポートは、ホスト向きポート(「サウスポート」(south port)とも呼ばれる)またはネットワーク向きもしくはTOR向きポート(「ノースポート」(north port)とも呼ばれる)に分類することができる。NVDのホスト向きポートは、NVDをホストマシンに接続するために使用されるポートである。図2においてホスト向きポートの例は、NVD210のポート236、およびNVD212のポート248および254を含む。NVDのネットワーク向きポートは、NVDをTORスイッチに接続するために使用されるポートである。図2のネットワーク向きポートの例は、NVD210のポート256、およびNVD212のポート258を含む。図2に示すように、NVD210は、NVD210のポート256からTORスイッチ214まで延びるリンク228を介してTORスイッチ214に接続されている。同様に、NVD212は、NVD212のポート258からTORスイッチ216まで延びるリンク230を介してTORスイッチ216に接続されている。
【0099】
NVDは、ホスト向きポートを介して、ホストマシンからパケットおよびフレーム(例えば、ホストマシンによってホストされている計算インスタンスによって生成されたパケットおよびフレーム)を受信し、必要なパケット処理を実行した後、NVDのネットワーク向きポートを介してパケットおよびフレームをTORスイッチに転送することができる。NVDは、NVDのネットワーク向きポートを介してTORスイッチからパケットおよびフレームを受信し、必要なパケット処理を実行した後、NVDのホスト向きポートを介してパケットおよびフレームをホストマシンに転送することができる。
【0100】
特定の実施形態において、NVDとTORスイッチとの間に複数のポートおよび関連するリンクを設けてもよい。これらのポートおよびリンクを集約することによって、複数のポートまたはリンクのリンクアグリゲータグループ(LAGと称される)を形成することができる。リンクの集約は、2つのエンドポイント間(例えば、NVDとTORスイッチとの間)の複数の物理リンクを単一の論理リンクとして扱うことを可能にする。所定のLAG内の全ての物理リンクは、全二重モードで同じ速度で動作することができる。LAGは、2つのエンドポイント間の接続の帯域幅および信頼性を高めるのに役立つ。LAG内の物理リンクのうちの1つが故障した場合、トラフィックは、LAG内の別の物理リンクに動的かつ透過的に再割り当てられる。集約された物理リンクは、個々のリンクよりも高い帯域幅を提供する。LAGに関連付けられた複数のポートは、単一の論理ポートとして扱われる。トラフィックをLAGの複数の物理リンクに負荷分散することができる。2つのエンドポイント間に1つ以上のLAGを構成することができる。2つのエンドポイントは、例えば、NVDとTORスイッチとの間にあってもよく、ホストマシンとNVDとの間にであってもよい。
【0101】
NVDは、ネットワーク仮想化機能を実装または実行する。これらの機能は、NVDによって実行されるソフトウェア/ファームウェアによって実行される。ネットワーク仮想化機能の例は、限定されないが、パケットのカプセル化およびデカプセル化機能、VCNネットワークを作成するための機能、VCNセキュリティリスト(ファイアウォール)機能などのネットワークポリシーを実装するための機能、VCN内の計算インスタンスとの間のパケットのルーティングおよび転送を容易にするための機能などを含む。特定の実施形態において、パケットを受信すると、NVDは、パケットを処理し、パケットをどのように転送またはルーティングするかを判断するパケット処理パイプラインを実行するように構成されている。このパケット処理パイプラインの一部として、NVDは、オーバーレイネットワークに関連する1つ以上の仮想機能の実行、例えば、VCN内の計算インスタンスに関連するVNICの実行、VCNに関連する仮想ルータ(VR)の実行、仮想ネットワーク内の転送またはルーティングを容易にするためのパケットのカプセル化およびデカプセル化、特定のゲートウェイ(例えば、ローカルピアリングゲートウェイ)の実行、セキュリティリストの実装、ネットワークセキュリティグループ、ネットワークアドレス変換(NAT)機能(例えば、ホスト毎にパブリックIPからプライベートIPへの変換)、スロットリング機能、および他の機能を提供する。
【0102】
いくつかの実施形態において、NVD内のパケット処理データ経路は、複数のパケットパイプラインを含んでもよい。各々のパケットパイプラインは、一連のパケット変換ステージから構成される。いくつかの実装形態において、パケットを受信すると、当該パケットは、解析され、単一のパイプラインに分類される。次いで、パケットは、破棄されるまたはNVDのインターフェイスを介して送出されるまで、線形方式でステージ毎に処理される。これらのステージは、基本機能のパケット処理ビルディングブロック(例えば、ヘッダの検証、スロットルの実行、新しいレイヤ2ヘッダの挿入、L4ファイアウォールの実行、VCNカプセル化/デカプセル化)を提供し、その結果、既存のステージを組み立てることによって新しいパイプラインを構築することができ、新しいステージを作成して既存のパイプラインに挿入することによって新しい機能を追加することができる。
【0103】
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は、ホストマシンに出入りする全てのネットワークパケットを傍受し、ネットワーク仮想化機能を実行するように構成されている。
【0104】
上述したように、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に関連する機能を実行する)ことができる。
【0105】
また、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を実行することができる。
【0106】
VNICおよびVCN VRに加えて、NVDは、様々なソフトウェア(例えば、デーモン)を実行し、NVDによって実行される様々なネットワーク仮想化機能を容易にする1つ以上のハードウェア要素を含むことができる。簡略化のために、これらの様々な要素は、図2に示す「パケット処理要素」としてグループ化される。例えば、NVD210は、パケット処理要素286を含み、NVD212は、パケット処理要素288を含む。例えば、NVDのパケット処理要素は、NVDのポートおよびハードワーキングインターフェイスと相互作用することによって、NVDを使用して受信され、通信される全てのパケットを監視し、ネットワーク情報を記憶するように構成されたパケットプロセッサを含んでもよい。ネットワーク情報は、例えば、NVDによって処理される異なるネットワークフローを特定するためのネットワークフロー情報および各フローの情報(例えば、各フローの統計情報)を含んでもよい。特定の実施形態において、ネットワークフロー情報は、VNIC単位で記憶されてもよい。別の例として、パケット処理要素は、NVDによって記憶されている情報を1つ以上の異なる複製ターゲットストアに複製するように構成された複製エージェント(replication agent)を含むことができる。さらに別の例として、パケット処理要素は、NVDのロギング機能を実行するように構成されたロギングエージェント(logging agent)を含んでもよい。また、パケット処理要素は、NVDの性能および健全性を監視し、場合によっては、NVDに接続されている他の要素の状態および健全性を監視するためのソフトウェアを含んでもよい。
【0107】
図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の他の実装形態によって実行されてもよい。
【0108】
上述したように、顧客VCN内の計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、ソース計算インスタンスと同じサブネットにあってもよく、異なるサブネット内であるがソース計算インスタンスと同じVCNにあってもよく、またはソース計算インスタンスのVCN外部のエンドポイントを含んでもよい。これらの通信は、計算インスタンスに関連付けられたVNIC、VCN VR、およびVCNに関連付けられたゲートウェイを用いて促進される。
【0109】
VCN内の同じサブネット上の2つの計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連付けられたVNICを用いて促進される。ソース計算インスタンスおよび宛先計算インスタンスは、同じホストマシンによってホストされてもよく、異なるホストマシンによってホストされてもよい。ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに転送されてもよい。NVDにおいて、パケットは、パケット処理パイプラインを用いて処理され、このパイプラインは、ソース計算インスタンスに関連するVNICの実行を含むことができる。パケットの宛先エンドポイントが同じサブネットにあるため、ソース計算インスタンスに関連付けられたVNICの実行により、パケットは、宛先計算インスタンスに関連付けられたVNICを実行するNVDに転送され、NVDは、パケットを処理し、宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスと宛先計算インスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、または(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。VNICは、NVDによって記憶されているルーティング/転送テーブルを使用して、パケットのネクストホップを決定することができる。
【0110】
サブネット内の計算インスタンスから同じVCN内の異なるサブネット内のエンドポイントにパケットを通信する場合、ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに通信される。NVDにおいて、パケットは、1つ以上のVNICの実行を含むことができるパケット処理パイプラインおよびVCNに関連するVRを用いて処理される。例えば、NVDは、パケット処理パイプラインの一部として、ソース計算インスタンスに関連するVNICに対応する機能を実行または呼び出す(VNICを実行するとも呼ばれる)。VNICによって実行される機能は、パケット上のVLANタグを検索することを含んでもよい。パケットの宛先がサブネットの外部にあるため、VCN VR機能は、呼び出され、NVDによって実行される。その後、VCN VRは、パケットを、宛先計算インスタンスに関連付けられたVNICを実行するNVDにルーティングする。そして、宛先計算インスタンスに関連付けられたVNICは、パケットを処理し、パケットを宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスと宛先計算インスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。
【0111】
パケットの宛先がソース計算インスタンスの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は、パケット内のカプセル化情報を検査し、意図した宛先エンドポイントへのパケットの通信を容易にする目的でパケットを転送するためのネクストホップを決定し、決定したネクストホップにパケットを転送するように構成されている。
【0112】
VCN上に展開された計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPI200によってホストされているエンドポイントと、CSPI200外部のエンドポイントとを含んでもよい。CSPI200によってホストされているエンドポイントは、(顧客VCN、または顧客に属さないVCNであり得る)同じVCNまたは他のVCN内のインスタンスを含んでもよい。CSPI200によってホストされているエンドポイント間の通信は、物理ネットワーク218を介して実行されてもよい。また、計算インスタンスは、CSPI200によってホストされていないまたはCSPI200の外部にあるエンドポイントと通信することもできる。これらのエンドポイントの例は、顧客オンプレミスネットワークまたはデータセンタ内のエンドポイント、またはインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイントを含む。CSPI200外部のエンドポイントとの通信は、様々な通信プロトコルを用いて、パブリックネットワーク(例えば、インターネット)(図2に図示せず)またはプライベートネットワーク(図2に図示せず)を介して実行されてもよい。
【0113】
図2に示されたCSPI200のアーキテクチャは、単なる一例であり、限定することを意図していない。代替的な実施形態において、変形、代替、および修正が可能である。例えば、いくつかの実装形態において、CSPI200は、図2に示されたものよりも多いまたは少ないシステムまたは要素を有してもよく、2つ以上のシステムを組み合わせてもよく、または異なるシステム構成または配置を有してもよい。図2に示されたシステム、サブシステム、および他の要素は、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実装されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
【0114】
図4は、特定の実施形態に従って、マルチテナント機能をサポートするためのI/O仮想化を提供するためのホストマシンとNVDとの間の接続を示す図である。図4に示すように、ホストマシン402は、仮想化環境を提供するハイパーバイザ404を実行する。ホストマシン402は、2つの仮想マシンインスタンス、すなわち、顧客/テナント#1に属するVM1 406と、顧客/テナント#2に属するVM2 408とを実行する。ホストマシン402は、リンク414を介してNVD412に接続されている物理NIC410を含む。計算インスタンスの各々は、NVD412によって実行されるVNICに接続されている。図4の実施形態において、VM1 406は、VNIC-VM1 420に接続され、VM2 408は、VNIC-VM2 422に接続されている。
【0115】
図4に示すように、NIC410は、2つの論理NIC、すなわち、論理NIC A 416および論理NIC B 418を含む。各仮想マシンは、それ自身の論理NICに接続され、それ自身の論理NICと共に動作するように構成される。例えば、VM1 406は、論理NIC A 416に接続され、VM2 408は、論理NIC B 418に接続されている。ホストマシン402が複数のテナントによって共有されている1つの物理NIC410のみからなるにもかかわらず、論理NICにより、各テナントの仮想マシンは、自分自身のホストマシンおよびNICを所有していると信じている。
【0116】
特定の実施形態において、各論理NICには、それ自身のVLAN IDが割り当てられる。したがって、テナント#1の論理NIC A 416には特定のVLAN IDが割り当てられ、テナント#2の論理NIC B 418には別のVLAN IDが割り当てられる。VM1 406からパケットが通信されると、ハイパーバイザは、テナント#1に割り当てられたタグをパケットに取り付けた後、リンク414を介してパケットをホストマシン402からNVD412に通信する。同様に、VM2 408からパケットが通信されると、ハイパーバイザは、テナント#2に割り当てられたタグをパケットに取り付けた後、リンク414を介してパケットをホストマシン402からNVD412に通信する。したがって、ホストマシン402からNVD412に通信されたパケット424は、特定のテナントおよび関連するVMを特定する関連タグ426を有する。NVD上でホストマシン402からパケット424を受信した場合、当該パケットに関連するタグ426を用いて、当該パケットがVNIC-VM1 420によって処理されるべきか、VNIC-VM2 422によって処理されるべきかを判断する。そして、パケットは、対応するVNICによって処理される。図4に示された構成は、各テナントの計算インスタンスが、自分自身のホストマシンおよびNICを所有していると信じることを可能にする。図4に示された構成は、マルチテナント機能をサポートするためのI/O仮想化を提供する。
【0117】
図5は、特定の実施形態に従って、物理ネットワーク500を示す概略ブロック図である。図5に示された実施形態は、Closネットワークとして構築される。Closネットワークは、高い二分割帯域幅および最大リソース利用率を維持しながら、接続冗長性を提供するように設計された特定の種類のネットワークトポロジである。Closネットワークは、一種の非ブロッキング、多段または多層スイッチングネットワークであり、段または層の数は、2、3、4、5などであってもよい。図5に示された実施形態は、層1、2および3を含む3層ネットワークである。TORスイッチ504は、Closネットワークの層-0スイッチを表す。1つ以上のNVDは、TORスイッチに接続されている。層-0スイッチは、物理ネットワークのエッジ装置とも呼ばれる。層-0スイッチは、リーフスイッチとも呼ばれる層-1スイッチに接続されている。図5に示された実施形態において、「n」個の層-0 TORスイッチは、「n」個の層-1スイッチに接続され、ポッドを形成する。ポッド内の各層-0スイッチは、ポッド内の全ての層-1スイッチに相互接続されるが、ポッド間のスイッチは、接続されない。特定の実装例において、2つのポッドは、ブロックと呼ばれる。各ブロックは、「n」個の層-2スイッチ(スパインスイッチとも呼ばれる)によってサービスを提供されるまたはそれに接続されている。物理ネットワークトポロジは、複数のブロックを含んでもよい。同様に、層-2スイッチは、「n」個の層-3スイッチ(スーパースパインスイッチとも呼ばれる)に接続されている。物理ネットワーク500を介したパケットの通信は、典型的には、1つ以上のレイヤ3通信プロトコルを使用して実行される。典型的には、TOR層を除く物理ネットワークの全ての層は、nウェイ冗長であり、したがって高い可用性を実現することができる。ポッドおよびブロックにポリシーを指定して、物理ネットワークのスイッチの相互可視性を制御することによって、物理ネットワークを拡張することができる。
【0118】
Closネットワークの特徴は、ある層-0スイッチから別の層-0スイッチに到達する(または、層-0スイッチに接続されたNVDから層-0スイッチに接続された別のNVDに到達する)最大ホップカウントが一定であることである。例えば、3層のClosネットワークにおいて、パケットが1つのNVDから別のNVDに到達するために最大7つのホップが必要とされる。この場合、ソースNVDおよびターゲットNVDは、Closネットワークのリーフ層に接続されている。同様に、4層のClosネットワークにおいて、パケットが1つのNVDから別のNVDに到達するために最大9つのホップが必要とされる。この場合、ソースNVDおよびターゲットNVDは、Closネットワークのリーフ層に接続されている。したがって、Closネットワークアーキテクチャは、データセンタ内およびデータセンタ間の通信に重要なネットワーク全体の遅延を一定に保つ。Closトポロジは、水平方向に拡張可能であり、コスト効率に優れている。各階層により多くのスイッチ(例えば、より多くのリーフスイッチおよびスパインスイッチ)を増設すること、および隣接する階層のスイッチ間にリンク数を増やすことによって、ネットワークの帯域幅/スループット容量を容易に増加させることができる。
【0119】
特定の実施形態において、CSPI内の各リソースには、クラウド識別子(CID)と呼ばれる固有の識別子が割り当てられる。この識別子は、リソースの情報の一部として含まれる。この識別子を用いて、例えば、コンソールまたはAPIを介してリソースを管理することができる。CIDの例示的なシンタックスは、以下の通りである。
【0120】
ocid1.<RESOURCE TYPE>.<REALM>.[REGION].[FUTURE USE].<UNIQUE ID>である。
式中、
「ocid1」は、CIDのバージョンを示す文字列である。
【0121】
「RESOURCE TYPE」は、リソースの種類(例えば、インスタンス、ボリューム、VCN、サブネット、ユーザ、グループ)を表す。
【0122】
「REALM」は、リソースが存在する領域を表す。例示的な値として、「c1」は、商業領域を表し、「c2」は、政府クラウド領域を表し、または「c3」は、連邦政府クラウド領域を表す。各領域は、独自のドメイン名を持つことができる。
【0123】
「REGION」は、リソースが属する地域を表す。地域がリソースに適用されない場合、この部分は空白であってもよい。
【0124】
「FUTURE USE」は、将来使用のために保留されていることを示す。
「UNIQUE ID」は、固有IDの部分である。このフォーマットは、リソースまたはサービスの種類によって異なる場合がある。
【0125】
図6は、特定の実施形態に従って、通信チャネル関連の状態情報を複製するための例示的な実施形態を組み込む分散環境600を示す概略ブロック図である。
【0126】
分散環境600は、通信チャネル616を介して互いに通信可能に接続されている複数のシステムを含んでもよい。例えば、図6の実施形態は、顧客オンプレミスネットワーク602とクラウドサービスプロバイダインフラストラクチャ(CSPI)660とを含む様々なシステムおよびネットワークを示している。これらのシステムは、通信チャネル616を介して互いに通信可能に接続されてもよい。図6に示された分散環境600は、単なる例であり、特許請求される実施形態の範囲を過度に限定することを意図していない。多くの変形例、代替例および修正例が可能である。例えば、いくつかの実装形態において、分散環境600は、図6に示すものよりも多いまたは少ないシステムまたは構成要素を有してもよく、2つ以上のシステムの組み合わせを有してもよく、または異なる構成もしくは配置のシステムを有してもよい。図6に示すシステム、サブシステムおよび他の構成要素は、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせを用いて実装されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)上に記憶されてもよい。
【0127】
例示的な実施形態において、図6に示すように、顧客オンプレミスネットワーク602は、顧客プレミス機器(CPE)608および構成情報607を含んでもよい。顧客オンプレミスネットワーク602は、1つ以上の顧客リソースからなるネットワーク、例えば1つ以上の顧客データセンタである。顧客オンプレミスネットワーク602へのアクセスは、一般に厳しく制限されている。
【0128】
通信チャネル616の1つのエンドポイントを形成する顧客オンプレミスネットワーク602内の装置または機器は、顧客構内機器(CPE)、例えば図6に示されているCPE608と呼ばれている。CPE608は、構成情報607を用いて通信チャネル616を設立し、通信チャネル616を用いて、顧客オンプレミスネットワーク602とCSPI660内のホストマシンまたはエンドポイント620との間の通信を可能にするように、適切に構成されなければならない。また、CPE608に適用される特定の構成情報は、使用されている特定のCPE608装置、確立されている通信チャネル616の特性(例えば、チャネルの種類、通信に使用されるプロトコルなど)、CSPI660機器、通信チャネルの他方のエンドポイントを形成するプライマリホストマシン620、および他の基準などの様々な他の要因に依存する。CPEは、異なるベンダからのものであってもよく、異なるCPEプラットフォームを有してもよく、異なるバージョンを有してもよい。
【0129】
例示的な実施形態において、図6に示すように、クラウドサービスプロバイダインフラストラクチャ(CSPI)660は、仮想クラウドネットワーク(VCN)640と、プライマリホストマシン620と、バックアップホストマシン630とを備えてもよい。クラウドサービスプロバイダインフラストラクチャ(CSPI)660は、クラウドサービスプロバイダ(CSP)によって提供され、1つ以上のクラウドサービスを提供するために使用されてもよい。顧客は、CSPがCSPI660を用いて提供されているクラウドサービスのうちの1つ以上に加入することができる。顧客は、CSPによって提供されているクラウドサービスに加入する任意のエンティティである。顧客は、異なる種類のサービス、例えばSaaS、PaaS、IaaS、および他の種類のクラウドサービスを含む1つ以上のクラウドサービスに加入することができる。顧客がCSPによって提供されているサービスに加入または登録すると、その顧客のテナンシまたはアカウントが作成される。顧客は、このアカウントにアクセスし、それを用いてアカウントに関連するクラウドリソースを利用することができる。
【0130】
特定の実施形態において、CSPは、IaaSモデルに基づいてサービスを提供することができる。この場合、CSPは、CSPI660などのインフラストラクチャを提供し、顧客は、これを用いて、独自のネットワークを構築し、顧客リソースを展開することができる。このような実施形態において、CSPI660は、様々なホストマシン(プライマリホストマシン620およびバックアップホストマシン630)を含む相互に接続された高性能コンピューティングリソースと、メモリリソースと、基板ネットワークまたはアンダーレイネットワークと呼ばれる物理ネットワークを形成するネットワークリソースとを含むことができる。CSPI660は、1つ以上のコンピューティングシステムを含むことができる。CSPI660内のリソースは、1つ以上の地域に地理的に分散され得る1つ以上のデータセンタに分散されてもよい。
【0131】
物理ネットワークは、物理ネットワークの上で1つ以上の仮想またはオーバーレイネットワークを作成するための基礎を提供する。(ソフトウェアベースネットワークまたはソフトウェア定義ネットワークとも呼ばれる)これらの仮想またはオーバーレイネットワークは、ソフトウェア仮想化技術を用いて実装され、物理ネットワークの上で実行することができるネットワーク抽象化層を作成する。オーバーレイネットワークは、様々な形を有することができる。オーバーレイネットワークは、典型的には、仮想IPアドレスでエンドポイントを指定するレイヤ3IPアドレス指定を使用する。このオーバーレイネットワーキング方法は、しばしば仮想レイヤ3ネットワーキングと呼ばれる。顧客がCSPによって提供されるIaaSサービスに加入または登録すると、その顧客のために作成されたテナンシは、CSPI660において隔離された安全なパーティションとなり、顧客は、このテナンシにおいてクラウドリソースを作成、整理、および管理することができる。
【0132】
顧客は、CSPI660によって提供されたリソースを用いて、ネットワークを構築することができる。これらのネットワークには、計算インスタンスなどの1つ以上の顧客リソースを配置することができる。例えば、顧客は、CSPI660によって提供されたリソースを用いて、仮想クラウドネットワーク(VCN)と呼ばれる1つ以上のカスタマイズ可能なプライベートネットワークを構築することができる。例えば、図6に示すように、顧客は、CSPI660によって提供されたリソースを用いて、顧客VCN640を構成している。顧客は、顧客VCN上で1つ以上の顧客リソース、例えば計算インスタンスを展開することができる。計算インスタンスは、仮想マシン、コンテナ、ベアメタルインスタンスなどであってもよい。したがって、CSPI660は、顧客が可用性の高いホスト環境において様々なアプリケーションおよびサービスを構築および実行することを可能にするインフラストラクチャおよび一連の相補的なクラウドサービスを提供する。顧客は、CSPI660によって提供された基礎的な物理リソースを管理または制御しないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御し、場合によっては一部のネットワーキング要素(例えば、ファイアウォール)を限定的に制御する。
【0133】
一般的に、顧客は、顧客オンプレミスネットワーク602と、CSPI660によってクラウドに展開またはホストされている1つ以上のVCNとの両方を有する場合、オンプレミスネットワーク602およびクラウドベースのVCNネットワーク、例えばVCN640が互いに通信できることを望んでいる。顧客オンプレミスネットワーク602とプロバイダVCN640との間の通信を可能にするために、通信チャネル616が設立される。この場合、通信チャネルの一方のエンドポイントは、顧客オンプレミスネットワーク602、例えばCPE108に配置され、通信チャネルの他方のエンドポイントは、VCN640、例えばプライマリホストマシン620に配置される。通信チャネル616は、インターネットなどのパブリックネットワークを含み得る1つ以上の通信ネットワーク614を横断することができる。様々な異なる通信プロトコルを用いて、通信チャネル616、例えばMPLS回路、仮想プライベートネットワーク(VPN)(例えば、インターネットプロトコルセキュリティ(IPSec)VPN)を使用するオンプレミスネットワーク602とVCN640との間の通信を促進することができる。
【0134】
2つのエンドポイント、すなわち、CPE608およびプライマリホストマシン620は、互いにネゴシエートすることによって、通信チャネルを設立することができる。具体的には、暗号化および認証に関する一連のメッセージを、2つのエンドポイント608と620との間に送受信することによって、通信のために使用される暗号化および認証関連パラメータに関与する合意をネゴシエートすることができる。ネゴシエートすることによって、2つのエンドポイント間のセキュリティアソシエーション(SA)は、通信するエンドポイント608および620によって合意され、承認されたセキュリティ特性を指定する。単一のSAは、一方向のデータを保護することができる。SAは、データを暗号化および復号する方法に関する詳細を両方のエンドポイントに提供する。
【0135】
CPE608に適用される特定の構成情報607は、使用されている特定のCPE608装置、確立されている通信チャネルの特性(例えば、チャネルの種類、通信に使用されるプロトコルなど)、通信チャネルの他のエンドポイントを形成するCSPI機器(プライマリホストマシン620)、および他の基準などの様々な他の要因に依存する。
【0136】
CSPI660内のインターネット鍵交換(IKE)デーモン650は、通信チャネルの暗号鍵(例えば、暗号化および復号鍵)を管理する。IKEデーモン650は、顧客オンプレミスネットワーク602内のエンドポイントとネゴシエートすることによって、安全な方法でセキュリティアソシエーション(SA)のために認証された鍵材料を提供することができる。
【0137】
図示のように、分散環境600は、VCN640においてプライマリホストマシン620に接続されたバックアップホストマシン630を含むことができる。両方のホストマシンは、CSPI660によってVCN640にホストされている。いくつかの実施形態において、プライマリホストマシン620、バックアップホストマシン630、および任意の追加のバックアップホストマシンは、複製チェーン(RC)650を形成することができる。複製チェーンは、ログベースの記憶システムを介して通信チャネル616の状態情報を管理および記憶するための一組のホストマシンを含むことができる。特定のホストマシン620に割り当てられた複製チェーンおよびバックアップホストマシンを特定する情報は、ディスクバックアップデータ記憶装置に記憶されてもよい。複製チェーン内のホストマシンは、線形に配置され、チェーンを形成する。チェーンのプライマリホストマシン620は、チェーンの「ヘッド」または「マスタ」として指定される。上記の例において、複製チェーン(RC)650は、2つのホスト(例えば、プライマリホストマシン620およびバックアップホストマシン630)を含み、プライマリホストマシン120は、チェーンのヘッドであり、バックアップホストマシン630は、RC650のテールである。
【0138】
通信ネットワーク614は、図6に示されている様々なシステムとネットワークとの間の通信を容易にする。通信ネットワーク614は、様々な種類を有し、1つ以上の通信ネットワークを含むことができる。通信ネットワーク614の例は、インターネットなどのパブリックネットワーク、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)ネットワーク、パブリックまたはプライベートネットワーク、有線ネットワーク、無線ネットワーク、およびそれらの組み合わせを含むが、これらに限定されない。異なる通信プロトコルを用いて、IEEE 802.XXスイートプロトコル、TCP/IP、IPX、SAN、AppleTalk(登録商標)、Bluetooth(登録商標)、および他のプロトコルなどの有線プロトコルおよび無線プロトコルの両方を含む通信を容易にすることができる。一般的に、通信ネットワーク614は、図6に示されている様々なシステム間の通信を容易にする任意のインフラストラクチャを含むことができる。
【0139】
図7Aは、特定の実施形態に従って、複製チェーン内の複数のホストマシンを示す例示的なブロック図である。例示的な実施形態において、図7Aに示すように、プライマリホストマシン620は、複製システム(RS)622および状態情報キャッシュ624を含む様々なコンポーネントまたはサブシステムを備えてもよい。バックアップホストマシン630は、複製システム(RS)632および複製状態情報キャッシュ634を含む様々なコンポーネントまたはサブシステムを備えてもよい。
【0140】
例示的な実施形態において、図7Aに示すように、RS622は、プライマリホストマシン620内のソフトウェアアプリケーションであり、(図6に示すように)CPE608とプライマリホストマシン620との間の通信チャネル616の状態情報の管理および複製に関連する処理を実行する。通信チャネル616の状態情報は、状態情報キャッシュ624に記憶されてもよい。状態情報キャッシュ624は、通信チャネル616の状態情報をキャッシュおよび管理するためのメモリ内鍵値ストアであってもよい。
【0141】
いくつかの実装形態において、RS622は、キャッシングアプリケーションプログラミングインターフェイス(API)を提供することができる。RSクライアント(例えば、パケットを処理するホストマシン内のプロセッサ)は、このAPIを用いて、通信チャネル616の状態情報を管理する動作を実行することができる。例えば、プライマリホストマシン620内のパケットプロセッサは、プライマリホストマシン620のインターネットプロトコル(IP)アドレスに送信されたパケットを受信することができる。パケットプロセッサは、パケットのヘッダをハッシュし、ハッシュデータを解析することによって、通信チャネル616の状態情報の変更を決定することができる。
【0142】
パケットのヘッダのハッシングは、タプルフィールド(例えば、パケット識別子、送信元IPアドレス、送信元ポート、宛先IPアドレス、宛先ポート、およびレイヤ4プロトコル)を特定することができる。パケットプロセッサは、この情報を用いて、通信チャネルに関連する状態情報(例えば、パケット番号)を特定する。プロセッサはさらに、この状態情報が、プライマリホストマシンに関連するキャッシュに記憶された通信チャネルの状態情報に対して変更されたか否かを判断することができる。状態情報が変更したと判断すると、パケットプロセッサは、通信チャネル616の状態情報の変更をバックアップホストマシンに記憶および複製するように、転送することができる。したがって、通信チャネル616に関連する任意の情報は、複製システム622によって受信される前に、パケットプロセッサによって受信および解析されてもよい。
【0143】
代替的な実装形態において、RS622は、パケットを受信して処理し、通信チャネル616の状態情報に関与するキャッシュを管理するための動作を実行するプロセッサである。ホストマシン620内のRS622は、パケットを受信し、通信チャネル616の状態情報を特定し、状態情報を状態情報キャッシュ624に転送することができる。RS622は、受信したパケットから状態情報を取得した後、複製チェーンのバックアップホストマシン上で状態情報を管理するために必要な処理を実行することができる。特定の実施形態において、RS622は、ディスクバックアップ記憶装置と通信することによって、複製チェーン650内のプライマリホストマシンに隣接する通信チャネルのバックアップホストマシンに関する情報を取得することができる。
【0144】
例示的な実施形態において、別のホストマシン630は、複製状態情報(RSI)キャッシュ634に接続されている別の複製システム(RS)632を含んでもよい。いくつかの実装形態において、ホストマシン(プライマリホストマシン620およびバックアップホストマシン630)の各々は、複製に関連する機能を開始および/または実行するように構成された別個の複製システム(622および632)を有する。プライマリホストマシン620の複製システム622は、バックアップホストマシンの複製システム632と直接に通信することによって、複製システム632が通信チャネル616の状態情報を複製することを可能にする。同様に、いくつかの実装形態において、複製チェーン(RC)650が3つ以上のホストマシンを含む場合、1つのホストマシンの複製システムは、チェーン内の後続ホストマシンと通信することによって、チェーンによって複製された通信チャネル616の状態情報に関連するエントリを挿入、更新、または削除することができる。
【0145】
一組の複製システムは、状態情報を複製するために協調的に動作することができる。上記の実施形態において、組内の各複製システムは、チェーンの構成を完全に認識する。構成情報は、チェーン内のホストマシン、チェーンのヘッド、チェーンのテールを特定することができる。したがって、各複製システムは、要求(例えば、通信チャネル状態のエントリを更新する要求、または通信チャネル状態の特定のエントリを無効にする要求)を送信する場所を知っている。いくつかの実装形態において、通信チャネル616のパケットをアクティブに処理するRC650内のプライマリホストマシン620は、チェーン650のヘッドであり、通信チャネルの状態情報の変更を複製するように通信チャネルの隣接するバックアップホストマシン(例えば、630)に要求することができる。
【0146】
図6および図7Aに示すように、チェーンRC650内のプライマリホストマシンおよびバックアップホストマシンは、通信チャネル616の状態情報を記憶するように構成されている。したがって、プライマリホストマシン620は、チェーンRC650のヘッドであり、バックアップホストマシン630は、チェーン650のテールである。プライマリホストマシン620に記憶されている状態情報は、バックアップホストマシン630内で複製される。具体的には、RS622は、状態情報の変更をバックアップホストマシン630のRS632に転送することができる。複製のステップは、図10を参照して以下で説明される。RS632は、状態情報を、複製状態情報(RSI)キャッシュ634に記憶することができる。
【0147】
通信チャネル616の状態情報は、通信チャネルに関連する複数の種類の状態情報を含むことができる。状態情報キャッシュ624は、状態情報テーブルを含むことができ、状態情報テーブルは、ホストマシン620によって受信されたパケットのシーケンス番号701の特定のエントリと、通信チャネルの暗号化および復号鍵702の情報と、ボーダゲートウェイプロトコル(BGP)状態情報703と、通信チャネル616のインターネット鍵交換(IKE)状態情報704とを含むことができる。
【0148】
特定のシナリオにおいて、プライマリホストマシンがパケットを受信するたびに、当該パケットのシーケンス番号などの状態情報を頻繁に更新することができる。パケットのシーケンス番号が異なってもよい。このことは、状態情報の変更を示唆する。例えば、プライマリホストマシン620がパケットを受信するたびに、パケットの状態情報のシーケンス番号は、増分される。複製システム622は、増分されたパケットのシーケンス番号を状態情報の変更として特定し、この変更をチェーン内の直近の後継者(例えば、630)に送信することができる。
【0149】
他のシナリオにおいて、2つのエンドポイント間で通信チャネル接続を確立する必要がある場合またはエンドポイント間で鍵を再ネゴシエートする必要がある場合、低頻度で、通常20分から1時間ごとに、通信チャネルの暗号化および復号鍵などの特定の状態情報を更新してもよい。通信チャネルのネゴシエーションに関与する状態は、IKE状態として呼ばれる。IPSEC SAの全てのパラメータをネゴシエートするIKEデーモンが各サイドに存在するため、それに関連する状態も複製する必要がある。暗号鍵に関連する状態と同様に、IKE状態は、頻繁に変更されない。
【0150】
複製状態情報キャッシュ634は、ホストマシン620によって受信したパケットのシーケンス番号706として図示されている状態情報キャッシュ624の状態情報のコピーと、通信チャネルの暗号化および復号鍵情報707と、ボーダゲートウェイプロトコル(BGP)状態情報708と、インターネット鍵交換(IKE)状態情報709とを含むことができる。
【0151】
例示的な実施形態において、プライマリホストマシン620にフェイルオーバが発生したときに、RC650内のプライマリホストマシンの直近の後継者であるバックアップホストマシンは、チェーンのヘッドになる可能性がある。複製チェーン650内のプライマリホストマシン620が故障し、複製チェーン(RC)650のヘッドを再構成する必要がある場合、新しいヘッドが再構成されるまで、チェーンへのアクセスをブロックする必要がある。いくつかのシナリオにおいて、チェーン内の他のホストマシン内の全ての複製システムは、最終的にヘッドの変更を知ることができる。他のシナリオにおいて、プライマリホストマシン620内の複製システム622は、チェーントポロジおよびチェーン内の全てのノードに関する追加の知識を有することなく、ホストマシンのバックアップである直近の後継者のみを認識することができる。フェイルオーバイベントについては、図11の説明でさらに説明する。
【0152】
複製システム622は、通信チャネル関連の状態情報を複製および管理するための(パケットプロセッサからの複製要求をサポートするための)getおよびput動作をサポートすることができる。複製システム622は、パケットプロセッサと同じマシン(例えば、620)上で動作することができ、またはパケットプロセッサとは異なるマシン上で動作することができる。RS622は、RC650内の他のホストマシンへのゲートウェイとして機能することができる。例示的な実施形態において、状態情報キャッシュ624内の状態情報テーブルエントリは、3つの基本動作を介して、すなわち、1)読み出し動作(複製システムは、特定の鍵エントリを検索し、関連する値を返すことができる)、2)書き込み動作(複製システムは、エントリをキャッシュに書き込むことができる)、および3)削除動作(複製システムは、キャッシュ内のエントリを削除することができる)を介して、RS622によって処理されてもよい。
【0153】
例示的な実施形態において、複製システム内の動作の高スループットを提供するために、動作要求(例えば、通信チャネルの状態情報の変更を記憶および複製するための要求)が複製システムに正常に送信された場合、複製システムは、(図10を参照してさらに説明するように)動作モードの種類に応じて、要求に対する応答を直ちにまたは後で提供することができる。複製システムが以前の複製要求を処理している間に、パケットプロセッサは、新しい要求を送信することができる。したがって、複製システムは、複製要求で完全にパイプライン化される可能性がある。
【0154】
例示的な実施形態において、複製システム622が状態情報を複製するための要求をバックアップホストマシン(例えば、630)内の別の複製システム632に転送する必要がある動作の場合、複製システム622は、それ自身の作業キューに要求を入れ、ピア複製システム632に送信して、動作を実行することができる。複製チェーンのピアツーピア通信は、メッセージを介して標準的なネットワークプロトコル上で行われてもよい。例示的な実施形態において、通信の順序を保証するために、TCPは、複製システムのピアツーピア通信に使用されてもよい。
【0155】
例示的な実施形態において、パケットプロセッサまたは状態監視システムは、複製システムによって管理されているエントリが一定時間後に期限切れになるように要求することができる。このような期限切れ動作が要求された場合、ヘッド複製システム(例えば、622)は、期限切れ時間を記憶し、期限切れ時間に到達した場合にマッピングを削除することができる。上記の実施形態において、エントリが他のマシンにもキャッシュされている場合、ヘッド複製システムは、自身のキャッシュから期限切れエントリを削除する前に、まず他のマシンにエントリを削除させる。代替的な実施形態において、パケットプロセッサまたは状態監視システムは、エントリが期限切れになるときに通知を要求することができる。したがって、ヘッド複製システムは、エントリが期限切れになるときにクライアントが追加のクリーンアップを実行できるように、期限切れたエントリの通知をプロセッサに提供することができる。
【0156】
例示的な実施形態において、複製システム622は、「共有」モードまたは「読み取り専用」モードでエントリを状態情報キャッシュ624にキャッシュするサポートを提供することができる。例示的な実施形態において、通信チャネル関連の状態情報に関与するエントリは、ヘッドまたはプライマリホストマシン620に関連する鍵値データベース(キャッシュ624)内の鍵値ペアの形でキャッシュされてもよい。例示的な実施形態において、通信チャネルの状態が更新される場合、複製システムは、それ自体(例えば、メモリ内鍵値記憶装置)内のエントリを更新し、その後、チェーン内の他の複製システムにエントリを更新させる。上記の実施形態において、この情報をチェーンに書き込むことによって、ヘッドが故障した場合にデータエントリを確実に保持することができる。
【0157】
例示的な実施形態において、複製システム622は、共有キャッシングを用いてネットワーク状態をキャッシュすることができる。共有キャッシュ設定において、RC650内の複数の複製システム(例えば、622および632)は、同じエントリのコピーを保持しているが、読み出しのためのみこれらのエントリを使用することができる。この場合、ヘッドまたはプライマリホストマシン内の複製システム622のみは、状態情報のエントリを編集することができる。RC650のヘッドは、状態情報を管理および複製し、チェーン(RC)650内の他のホストマシンに状態情報を渡すように機能する。したがって、ヘッドは、複製チェーン650内の状態情報に関連する変更を提案できる唯一のメンバである。
【0158】
例示的な実施形態において、エントリを更新する必要がある場合、プライマリホストマシン620の複製システム622は、複製チェーン内で更新を複製する前に、異なる状態情報をキャッシュしているバックアップホストマシン(例えば、630)に、状態情報に関連するエントリを無効にするように要求することができる。例示的な実施形態において、複製チェーン内の全てのホストマシンは、インフラストラクチャ内の全てのチェーンの構成を認識しておらず、その直近の後継者のみを認識している。したがって、全てのホストマシンは、複製要求をどこに送信するかを知っている。代替的な実施形態において、ホストマシンは、ディスクバックアップ記憶装置から、直近の後継者に関する情報を取得することができる。
【0159】
なお、図7Aに示された構成は、特許請求される実施形態の範囲を過度に限定することを意図しない。多くの変形例、代替例および修正例が可能である。例えば、図7Bは、複製システム622の集中型構成を示している。具体的には、複製システム622は、複製チェーン650に含まれているホストマシンに関連する複製動作を制御/管理する集中型エンティティであってもよい。複製システム622は、状態情報データを複製し、複製チェーン650に含まれているホストマシン(すなわち、プライマリホストマシン620、バックアップホストマシン630など)に関連するキャッシュにそれぞれ記憶することができる。
【0160】
図8は、特定の実施形態に従って、通信チャネル関連の状態情報をバックアップホストマシンに複製するための方法を示す概略フローチャート800を示している。図8に示された処理は、各システムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせを用いて実施されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。図8に示され、以下に説明される方法は、例示的且つ非限定的であることを意図している。図8は、特定のシーケンスまたは順序で発生する様々な処理ステップを示しているが、限定することを意図していない。特定の代替的な実施形態において、処理は、いくつかの異なる順序で実行されてもよく、またはいくつかのステップは、並行して実行されてもよい。特定の実施形態において、図8に示されたステップは、図7Aおよび7Bに示された1つ以上の構成要素によって実行されてもよい。
【0161】
例示的な実施形態において、図6図7Aおよび図7Bで説明したように、顧客オンプレミスネットワーク内のCPE608とクラウドサービスプロバイダインフラストラクチャ(CSPI)660内のプライマリホストマシン620との間のパケットを安全に処理するために、通信チャネル616が設立される。
【0162】
ステップ810において、通信チャネルのプライマリホストマシンおよびバックアップホストマシンを構成する。通信チャネル616のバックアップホストマシン630を構成するために、プライマリホストマシン内のRS622は、ディスクバックアップ記憶装置と通信することによって、通信チャネル616のバックアップホストマシンを特定することができる。したがって、いくつかの実装形態において、プライマリホストマシン620は、プライマリホストマシン620の起動またはブートストラップ処理中に、通信チャネル616の状態情報を記憶するためのバックアップホストマシン630を構成し、割り当てることができる。
【0163】
ステップ820において、通信チャネルの状態情報の変更を引き起こすイベントを検出する。具体的には、プライマリホストマシン620内のプロセッサまたは複製システム622は、状態情報キャッシュ624に記憶されている通信チャネルの状態情報の変更を引き起こすイベントを検出することができる。例えば、プライマリホストマシン620内のプロセッサがパケットを受信した場合、このパケットは、以前に記憶されたシーケンス番号とは異なるシーケンス番号を有する可能性がある。したがって、パケットを受信することは、状態情報の変更を引き起こすイベントである。同様に、通信チャネル616のプライマリホストマシン620とCPE608との間のセキュリティアソシエーション(SA)、すなわち、2つのエンドポイント間のSAを再ネゴシエートする必要がある場合、エンドポイント、例えばプライマリホストマシン620は、再ネゴシエートするために、暗号化鍵および復号鍵を有するパケットを受信することができる。これらの暗号化鍵を含むパケットは、通信チャネル616の状態情報の変更を引き起こすイベントの一種である。
【0164】
ステップ830において、プライマリホストマシンによって記憶されている通信チャネル関連の状態情報の変更を決定する。具体的には、いくつかの実装形態において、ステップ820でイベントを検出した後、複製システム622は、パケットからの状態情報をキャッシュ624内に記憶された状態情報と比較することによって、プライマリホストマシン620が受信したパケットを解析した後の状態情報の変更を決定する。例えば、複製システム622は、プライマリホストマシン620が受信したパケットを検査することができる。複製システム622は、プライマリホストマシン620が受信したパケットのヘッダをハッシュすることができる。複製システム622は、パケットのヘッダのハッシュからパケットのシーケンス番号を特定することができる。パケットのヘッダは、パケットのシーケンスまたは識別を含むことができる。新しいパケットは、ホストマシン620によって受信されると、以前に受信されたパケットとは異なるシーケンス番号を有する。
【0165】
いくつかの実装形態において、図7Aに関して上述したように、パケットプロセッサまたは監視システムは、通信チャネル616の状態情報に関連するプライマリホストマシン620に送信されたパケットを受信し、解析することができる。パケットプロセッサまたは監視システムが状態情報の変更を特定すると、プロセッサは、バックアップホストマシン630内の状態情報の変更を更新および複製するように、複製システム622に要求することができる。
【0166】
ステップ840において、通信チャネルの状態情報を記憶するためのバックアップホストマシンを特定する。具体的には、複製システム622は、ディスクバックアップデータ記憶装置に照会することによって、バックアップホストマシンを特定することができる。代替的には、複製システム622は、プライマリホストマシン620の構成データから、バックアップホストマシン情報を取得することができる。具体的には、複製システム622は、バックアップホストマシン(例えば、630)内の複製システム(例えば、632)のIPアドレスを取得することができる。
【0167】
ステップ850において、通信の状態情報の変更を特定されたバックアップホストマシンに複製する。具体的には、複製システム622は、状態情報の変更をバックアップホストマシン630内の複製システム632に送信することができ、複製システム632は、複製システム622から受信した状態情報の変更を複製状態情報キャッシュ634に記憶することができる。複製システム632は、状態情報の変更をキャッシュ634に記憶する前に、以前に記憶された状態情報のエントリを削除または無効化することができる。
【0168】
図9は、特定の実施形態に従って、複製チャネルが通信チャネル関連の状態情報を複製することを示すフローチャート900である。図9に示す処理は、各システムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせに実施されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。図9に示され、以下に説明される方法は、例示的且つ非限定的であることを意図している。図9は、特定のシーケンスまたは順序で発生する様々な処理ステップを示しているが、限定することを意図していない。
【0169】
いくつかの代替実施形態において、特定の代替的な実施形態において、処理は、いくつかの異なる順序で実行されてもよく、またはいくつかのステップは、並行して実行されてもよい。いくつかの実施形態において、図9に示された処理ステップは、図6、7Aおよび7Bに示されたホストマシン内の1つ以上の構成要素(例えば、複製システム)によって実行されてもよい。具体的には、図9は、特定の実施形態に従って、複製チェーン内で通信チャネル関連の状態情報を複製するために、(パケットを受信するホストマシン内の)構成要素によって実行されたステップを示すフローチャートである。例示的な実施形態において、図6に示すように、顧客オンプレミスネットワーク602内のCPE608とクラウドサービスプロバイダインフラストラクチャ(CSPI)660内のプライマリホストマシン620との間のパケットを安全に処理するために、通信チャネル616が設立される。
【0170】
ステップ910において、顧客オンプレミスネットワークとCSPIによってホストされている顧客仮想ネットワークとの間の通信チャネルに関連する状態情報を記憶するように、複製チェーンを構成する。複製チェーンは、通信チャネル関連の状態情報を記憶するための一組のホストマシンを含むことができる。複製チェーン内のホストマシンは、線形に配置され、チェーン(例えば、RC650)を形成する。チェーンのプライマリホストマシン620は、チェーンの「ヘッド」または「マスタ」として指定され、チェーンの残りのノードは、通信チャネル616のバックアップホストマシンとして指定される。
【0171】
ステップ920において、プライマリホストマシンに対応する複製チェーン内のノードを複製チェーンのヘッドノードとして指定する。具体的には、ホストマシン620が通信チャネル616の一方側のエンドポイントであり、通信チャネル616の他方側の第2のエンドポイント(CPE608)からトラフィックを受信する場合、ホストマシン620は、通信チャネル616のプライマリホストマシンとして指定される。したがって、複製チェーンにおいて、通信チャネルのプライマリホストマシンは、チェーンのヘッドノードとして指定される。
【0172】
ステップ930において、複製チェーンの残りのノード、すなわちバックアップホストマシンを複製チェーンのヘッドの後続ノードとして構成する。通信チャネル616の場合、CSPI660内のホストマシンが通信チャネル616のトラフィックを主に受信せず、通信チャネルの状態情報を記憶するように割り当てられている場合、ホストマシンは、通信チャネル616のバックアップホストマシン630として指定される。いくつかの実装形態において、複製チェーンは、図6に示すように、プライマリホストマシン620に対して単一のバックアップホストマシン630を含むことができる。他の実装形態において、複数のホストマシンは、通信チャネル616のバックアップホストマシンとして指定されてもよい。
【0173】
ステップ940において、複製チェーンのヘッドノードの障害を検出する。チェーンログ複製プロトコルを含む機構は、チェーン内のメンバシップを制御および管理することができる。この機構はさらに、チェーンのヘッドの健全性を監視することによって、障害を検出することができる。
【0174】
ステップ950において、複製チェーンのヘッドノードの障害を検出すると、複製チェーン内のヘッドノードの直近の後継ノードを複製チェーンの新しいヘッドノードとして設定する。したがって、直近の後継者(例えば、630)は、ヘッドノードに昇格される。いくつかのシナリオにおいて、プライマリホストマシンが障害モードから復帰すると、再びチェーンのヘッドノードになる。他のシナリオにおいて、プライマリホストマシンが障害モードから復帰すると、チェーンの最後に加わり、他のホストがチェーンから取り除かれる場合に昇格されてもよい。例示的な実装形態において、複数の通信チャネルを含む複数のチェーンが存在し、各ノードが2つ以上のチェーンのヘッドであってもよい。具体的には、各チェーンは、異なるセットのSAを処理することができ、1つのノードは、1つのチェーンのヘッドノードおよび別のチェーンの後継ノードになることができる。
【0175】
図10は、特定の実施形態に従って、通信チャネル関連の状態情報を複製するためにプライマリホストマシンによって実行された詳細な処理を示すフローチャート1000である。具体的には、フローチャートは、ヘッドホストマシンが特定のフローのパケットを受信したときにネットワーク状態情報を複製するためにヘッドホストマシンによって実行されたステップを提示する。
【0176】
ステップ1010において、通信チャネルの状態情報の変更を引き起こすイベントを検出する。具体的には、プライマリホストマシン620内の複製システム622は、状態情報キャッシュ624に記憶されている通信チャネルの状態情報の変更を引き起こすイベントを検出することができる。例えば、複製システム622は、プライマリホストマシン620が受信したパケットを解析することができる。複製システム622は、プライマリホストマシン620が受信したパケットのヘッダをハッシュすることができる。複製システム622は、パケットのヘッダのハッシュから、パケットのシーケンス番号を特定することができる。第1のパケットのヘッダは、ソースIPアドレス、ソースポート、宛先IPアドレス、宛先ポート、およびレイヤ4プロトコル(例えば、TCP、UDPなど)に関する情報を含む標準的な5タプルパケットヘッダであってもよい。また、パケットのヘッダは、シーケンス番号または識別番号、すなわち、パケットに関連する識別子を含む。新しいパケットは、ホストマシン620によって受信されると、以前に受信されたパケットとは異なるシーケンス番号を有するであろう。
【0177】
ステップ1015において、プライマリホストマシンによって記憶されている通信チャネル関連の状態情報の変更を決定する。具体的には、ステップ1010でイベントを検出した後、複製システム622は、プライマリホストマシン620が受信したパケットを解析した後の状態情報の変更を決定する。
【0178】
ステップ1017において、決定された通信チャネル関連の状態情報の変更を、プライマリホストマシン620のローカルキャッシュに記憶する。具体的には、ホストマシン620内のプロセッサは、変更を複製システム622に送信することができる。複製システム622は、状態情報の変更を状態情報キャッシュ624に記憶することができる。
【0179】
ステップ1020において、複製システム622は、通信チャネルに関する状態情報を記憶した後、バックアップホストマシン内の通信チャネル616の状態情報を複製するためのモードを決定する。いくつかの実施形態において、状態情報を複製するための動作モードは、セーフ動作モードおよびベストエフォート動作モードのうちの1つであってもよい。動作モードは、1つ以上の条件に基づいて決定されてもよい。例えば、プライマリホストマシン620のメンテナンスが、通信チャネル616の状態情報の変更を決定した後の閾値時間内にスケジュールされている場合、複製システム622は、複製を行うための動作モードをセーフモードに決定することができる。同様に、状態情報の変更が通信チャネル616の通信を確立することに関連すると複製システム622が判断した場合、動作モードは、状態情報を複製するセーフモードである。具体的には、次に説明するように、セーフ動作モードは、例えば、ホストマシンがメンテナンスのためにオフライン状態にあり得るシナリオにおいて、通信チャネルの継続的且つ正常な動作を保証する。
【0180】
ステップ1030において、通信チャネル関連の状態情報の変更がセーフモードで複製されていると判断した場合、プライマリホストマシン620上のパケットの処理を中止する。具体的には、複製システム622は、パケットを一時的に中止するようにパケットプロセッサに警告することができる。
【0181】
ステップ1035において、ホストマシン620がパケットの処理を中止すると、複製システム622は、通信チャネル616のために構成された複製チェーンを特定することができる。複製チェーンは、ディスクバックアップデータ記憶システムに照会することによって、通信チャネル616のために複製チェーンおよび複製チェーン内の1つ以上のバックアップホストマシンを特定することができる。いくつかのシナリオにおいて、通信チャネル616のための複製チェーンおよび1つ以上のバックアップホストマシンに関する情報は、プライマリホストマシン620に利用可能であり、起動時に設定されてもよい。
【0182】
ステップ1040において、通信チャネル616のために複製チェーンを特定した後、通信チャネル616のために1つ以上のバックアップホストマシンを特定する。具体的には、プライマリホスト620内の複製システム622は、(通信チャネル616のために)別の複製システム、すなわち、バックアップホストマシンに関連する複製システムを特定することができる。
【0183】
ステップ1045において、通信チャネル関連の状態情報の変更をバックアップホストマシンに複製する。具体的には、プライマリホストマシン620内の複製システム622は、通信チャネル関連の状態情報の変更を、プライマリホストマシン620の複製チェーンの後続ノードであるバックアップホストマシンに送信することができる。バックアップホストマシンとしての後続ノードは、複製チェーン内の次のバックアップホストマシンに状態情報を複製させることができる。したがって、複製チェーン内のバックアップホストマシンの各々は、状態情報の変更を複製する。具体的には、状態情報の変更は、複製チェーン内の各ホストマシンに順次的に複製される。チェーン内の全ての複製システムは、このエントリ、すなわち、状態情報の変更をローカルキャッシュにキャッシュすることができる。エントリがチェーン内の全てのホストマシンの間に複製されると、ヘッドホストマシンは、チェーンのテールホストマシンから確認または通知を受信することができる。
【0184】
一実施形態によれば、上述したように、複製チェーンのホストマシンにおいて実行される状態情報の変更を複製する機構において、ヘッドホストマシンは、ディスクバックアップ記憶装置にアクセスすることによって、複製チェーン内のピアホストマシンを特定することができる。上記の実施形態において、ヘッドホストマシンまたはホストマシン内のプロセッサは、エントリ情報と共にエントリ挿入メッセージを、チェーンから直近の後継ホストマシンまたはピアホストマシンに送信することができる。ピアホストマシンは、エントリをローカルキャッシュにキャッシュし、複製のために複製チェーン内の次のホストマシンに同様のエントリ挿入メッセージを送信することができる。
【0185】
ステップ1050において、ヘッドホストマシンは、状態情報がバックアップホストマシンによって複製されたことを示す確認応答メッセージを受信する。具体的には、ヘッドホストマシン内の複製システム622は、複製チェーン内のテールホストマシンから、通信チャネルの状態情報の変更が全ての中間ホストマシンに組み込まれたことを示す確認応答メッセージを受信する。なお、確認応答メッセージは、ホストマシン間の通信のために利用される任意の適切な通信プロトコルを用いて、テールホストマシンからヘッドホストマシンに送信されてもよい。
【0186】
例えば、いくつかの実施形態によれば、複製チェーンは、ログ構造化機構(例えば、チェーンログ複製プロトコル)を用いて、バックアップホストマシン内で複製を実行する。セーフ動作モードの下でのこのような種類の複製プロトコルは、状態情報の変更が全てのバックアップホストマシンに複製したことを保証するまで、パケットの処理を中止することによって、安全性を強化するためのオプションを提供する。
【0187】
いくつかの実施形態によれば、セーフモードは、異なる実装形態を有することができる。例えば、いくつかの実装形態において、セーフ動作モードにおいて、状態変化が特定のウィンドウ内で同期されている限り、状態が絶対的に同期されるまで、パケットを中止する必要はない。ウィンドウは、パケットの数で定義されてもよい。例えば、ウィンドウのサイズは、W=3パケットであってもよい。この動作モードは、緩和セーフ動作モードと呼ばれてもよい。プライマリホストマシンは、全ての状態変化がウィンドウ全体に対して複製される前に、パケットの処理を継続することができる。いくつかの実施形態によれば、状態情報を複製するための別の動作モードは、ベストエフォートモードであってもよい。この動作モードにおいて、緩和セーフ動作モードと同様に、チャネル情報は、パケット処理動作を停止または中止することなく複製される。しかしながら、ベストエフォート動作モードと緩和セーフ動作モードとの間の差異は、ベストエフォートモードの場合、ウィンドウのサイズが極めて大きく、すなわち、無限なサイズであることである。言い換えれば、ベストエフォート動作モードでは、ウィンドウのサイズは、パケット処理において制約条件ではない。
【0188】
ステップ1055において、状態情報が通信チャネル616のバックアップホストマシンによって複製されたことを示す確認応答を受信した後、通信チャネルを介したパケットの処理を(例えば、セーフモードで)再開する。
【0189】
ステップ1020に戻り、複製がセーフモードで実行されていないと判断した場合、例えば、複製がベストエフォートモードで実行されている場合、処理パケットを中止する必要はない。複製がセーフモードで実行されていないと判断した場合、パケットの処理を中止することなく、基本的に上述したステップ1035、1040および1045を用いて状態情報の複製を行う。
【0190】
なお、状態情報の複製が十分に速く行われない場合(例えば、複製速度が、プライマリホストマシンがパケットを受信する速度、すなわち、パケットの着信速度に追い付かない場合)、1つの可能な結果は、フェイルオーバの場合、すなわち、プライマリホストマシンが故障し、バックアップホストが複製チェーンの新しいヘッドになる場合、バックアップホストを新しいヘッドとして通信チャネルを再確立するときに、いくつかのパケットが破棄される可能性がある。このようなシナリオは、データ複製のベストエフォートモードに発生する可能性がある。なお、このようなフェイルオーバイベントは、顧客データの完全性を損なわないため、パケット処理にセキュリティの影響を与えない。
【0191】
言い換えれば、パケットのシーケンスが正しく同期されていない場合、パケットを破棄してもよい。複製に何らかの障害があった場合、すなわち、フェイルオーバがあった場合、引き継ぐと構成された後続者が、古くなったシーケンス番号を有し、監視しているパケットが同期されていないため、(完全に成功した方法で)接続をピックアップすることができないことを意味する。後続者は、このような状況をリプレイ攻撃として解釈することができ、いくつかのパケットを破棄することによって対応することができる。
【0192】
特定のシナリオにおいて、通信チャネル関連の状態情報のパケットのシーケンス番号に対処しながら、セーフモード、例えば、ベストエフォートモードまたは緩和セーフモードを使用せず、複製を実行する。いくつかの実装形態において、大量の状態変化の複製が特定の量、例えば特定の数のパケットで遅れている場合、フェイルオーバイベントの時に、バックアップホストマシンは、どの程度でジャンプする(またはシーケンス番号をオーバーシュートする)必要があるかを予測することができ、これによってウィンドウよりも遅れているパケットを破棄することができる。プロトコルは、単に、このようなパケット(すなわち、破棄されたパケット)が欠落していると仮定し、バックアップホストマシンは、そのパケットカウンタを更新することができる。したがって、バックアップホストマシンは、常に、監視しているシーケンス番号のうち、最も高く認証されたシーケンス番号に基づいている。したがって、緩和セーフ動作モードの場合、通信のシーケンス番号状態情報の複製が遅れたり、同期が取れなくなったりしても、バックアップホストマシンは、フェイルオーバ中に、予測量のパケット、例えば特定の数のパケットで前方にジャンプすることによって、ウィンドウに戻ることができる。これによって、最初に確立された通信チャネルは、バックアップホストを複製チェーンの新しいヘッドとして、引き続き動作することができる。
【0193】
したがって、セーフモードオプションを使用する場合、複製動作は、複製が完了するまでパケットの処理を中止するように実行される。例えば、エンドポイント間で暗号化/復号化情報を送信することによって接続を設立しているときに、セーフモードを使用することができる。しかしながら、接続を設立した後、セーフモードではなく、緩和セーフモードまたはベストエフォートモードで複製を実行することができる。さらに、状態変化が暗号状態情報内の変更を含む場合、複製モードは、セーフモードに切り替えられてもよい。セーフモードは、バックアップホストマシンにおいて状態情報の連続的/完全な複製を保証する。一方、ベストエフォートモードは、プライマリホストマシンのフェイルオーバシナリオ中に、状態情報を複製し、パケットを処理するためのベストエフォートを保証する。
【0194】
図11は、特定の実施形態に従って、プライマリホストマシンのフェイルオーバ中にパケット処理を処理するために実行されたステップを示すフローチャート1100である。
【0195】
ステップ1110において、プライマリホストマシンを含むデータプレーンは、プライマリホストマシンが利用不能であることを示す信号を受信する。プライマリホストマシンの利用不能は、意図的または非意図的な理由によるものであってもよい。例えば、プライマリホストマシンは、メンテナンスのために意図的に停止される可能性がある。他の場合において、プライマリホストマシンは、ホストマシン内の突然のフェイルオーバイベントに起因してダウンする可能性があり、これは意図的ではないフェイルオーバである。
【0196】
ステップ1120において、通信チャネルのバックアップホストマシンを特定することができる。具体的には、CSPI上でホストされているVCN内のデータプレーンまたはプロセッサは、通信チャネルに関する情報をディスクバックアップ記憶装置に照会することによって、通信チャネルのバックアップホストマシンを特定する。いくつかの実装形態において、バックアップホストマシンは、データプレーン内で特定され、構成されてもよい。
【0197】
ステップ1130において、通信チャネルによって処理されたパケットは、特定されたバックアップホストマシンに転送されてもよい。具体的には、VCNのデータプレーンは、パケットの宛先IPアドレスをバックアップホストマシンのIPアドレスに変更することができる。この例において、顧客端末のエンドポイント(CPE608)は、依然としてパケットをプライマリホストマシンのIPアドレスに送信しているが、これらのパケットは、データプレーンプロセッサによってバックアップホストマシンのIPアドレスにリダイレクトされる。
【0198】
ステップ1140において、バックアップホストマシンは、プライマリホストマシンからバックアップホストマシンに予め同期された通信チャネルの状態情報を用いて、パケットの処理を実行する。説明したように、プライマリホストマシンがオフラインになるようにスケジュールされるメンテナンスによるフェイルオーバの場合、(図10で説明したように)セーフモード下での複製は、全ての状態情報が同期されることを保証する。したがって、セーフモード下での複製は、プライマリホストマシンがメンテナンスのためにダウンするときに、バックアップホストマシンがパケットを正常に処理することを保証することができる。
【0199】
予想外のフェイルオーバが発生するシナリオの場合、全ての状態情報が同期されていることは保証されないが、(図10で説明したような)複製方法を使用すると、パケットのセキュリティを危険にさらすことなく、フェイルオーバシナリオを正常に処理できる確率が依然として高い。最悪の場合、接続のパラメータが失われ、通信チャネルのパラメータを再ネゴシエートする必要が生じる可能性がある。本開示の態様によって、単一の高可用性トンネルを用いて、トンネルを停止することなく、トンネルのエンドポイントにパッチを適用したいホストから別のホストに割り当てることができる。
【0200】
例示的なクラウドインフラストラクチャの実施形態
上述したように、IaaS(Infrastructure as a Service)は、1つの特定の種類のクラウドコンピューティングである。IaaSは、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成されてもよい。IaaSモデルにおいて、クラウドコンピューティングプロバイダは、インフラストラクチャ要素(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、インフラストラクチャ要素に付随する様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を提供することができる。したがって、これらのサービスがポリシー駆動型であり得るため、IaaSユーザは、アプリケーションの可用性および性能を維持するために、負荷分散を駆動するためのポリシーを実装することができる。
【0201】
いくつかの例において、IaaS顧客は、インターネットなどの広域ネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウェアを展開し、ワークロードおよびバックアップの記憶バケットを作成し、VMに企業ソフトウェアをインストールすることができる。顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーションのトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含む様々な機能を実行することができる。
【0202】
殆どの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、オファー、レンタル、販売)に特化した第3者サービスであってもよいが、その必要はない。また、企業は、プライベートクラウドを配置し、インフラストラクチャサービスを提供するプロバイダになることもできる。
【0203】
いくつかの例において、IaaSの配置は、用意したアプリケーションサーバなどに新しいアプリケーションまたは新しいバージョンのアプリケーションを配置するプロセスである。IaaSの配置は、サーバを用意する(例えば、ライブラリ、デーモンなどをインストールする)プロセスを含んでもよい。IaaSの配置は、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、OS、ミドルウェア、および/またはアプリケーションの展開(例えば、セルフサービス仮想マシン(例えば、オンデマンドでスピンアップできるもの)などを行うことができる。
【0204】
いくつかの例において、IaaSのプロビジョニングは、使用されるコンピュータまたは仮想ホストを取得すること、およびコンピュータまたは仮想ホスト上に必要なライブラリまたはサービスをインストールすることを含んでもよい。殆どの場合、配置は、プロビジョニングを含まず、まずプロビジョニングを実行する必要がある。
【0205】
場合によっては、IaaSのプロビジョニングには2つの異なる課題がある。第1に、何かを実行する前に、インフラストラクチャの初期セットをプロビジョニングするという課題がある。第2に、全てのものをプロビジョニングした後に、既存のインフラストラクチャを進化させる(例えば、新しいサービスの追加、サービスの変更、サービスの削除)という課題がある。場合によっては、インフラストラクチャの構成を宣言的に定義することを可能にすることによって、これらの2つの課題に対処することができる。言い換えれば、インフラストラクチャ(例えば、どの要素が必要とされるか、およびこれらの要素がどのように相互作用するか)は、1つ以上の構成ファイルによって定義されてもよい。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどれに依存し、どのように連携するか)は、宣言的に記述することができる。いくつかの例において、トポロジが定義されると、構成ファイルに記述された異なる要素を作成および/または管理するためのワークフローを生成することができる。
【0206】
いくつかの例において、インフラストラクチャは、多くの相互接続された要素を含むことができる。例えば、コアネットワークとしても知られている1つ以上の仮想プライベートクラウド(VPC)(例えば、構成可能な計算リソースおよび/または共有されている計算リソースの潜在的なオンデマンドプール)が存在してもよい。いくつかの例において、ネットワークのセキュリティをどのように設定するかを定義するためにプロビジョニングされる1つ以上のセキュリティグループルールと、1つ以上の仮想マシン(VM)とが存在する可能性がある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングされてもよい。ますます多くのインフラストラクチャ要素が望まれるおよび/または追加されるにつれて、インフラストラクチャは、漸進的に進化することができる。
【0207】
いくつかの例において、様々な仮想コンピューティング環境にわたってインフラストラクチャコードの展開を可能にするために、連続展開技法を採用してもよい。また、記載された技法は、これらの環境内のインフラストラクチャ管理を可能にすることができる。いくつかの例において、サービスチームは、1つ以上の、通常多くの異なる生産環境(例えば、時には全世界に及ぶ種々の異なる地理的場所にわたって)に展開されることが望まれるコードを書き込むことができる。しかしながら、いくつかの例において、コードを展開するためのインフラストラクチャを最初に設定しなければならない。いくつかの例において、プロビジョニングは、手動で行うことができ、プロビジョニングツールを用いてリソースをプロビジョニングすることができ、および/またはインフラストラクチャをプロビジョニングした後に、展開ツールを用いてコードを展開することができる。
【0208】
図12は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの例示的なパターンを示すブロック図1200である。サービスオペレータ1202は、仮想クラウドネットワーク(VCN)1206およびセキュアホストサブネット1208を含み得るセキュアホストテナンシ1204に通信可能に接続されてもよい。いくつかの例において、サービスオペレータ1202は、1つ以上のクライアントコンピューティング装置を使用することができる。1つ以上のクライアントコンピューティング装置は、例えば、Microsoft Windows Mobile(登録商標)のようなソフトウェア、および/またはiOS、Windowsフォン、アンドロイド(登録商標)、ブラックベリー8およびパームOSなどのさまざまなモバイルオペレーティングシステムを実行することができ、インターネット、電子メール、ショートメッセージサービス(SMS)、ブラックベリー(登録商標)または他の通信プロトコルが有効化された手持ち式携帯装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、タブレット、携帯情報端末(PDA)またはウェアラブル装置(Google(登録商標)Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。クライアントコンピューティング装置は、例示として、Microsoft Windows(登録商標)オペレーティングシステム、Apple Macintosh(登録商標)オペレーティングシステムおよび/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用のパーソナルコンピュータであってもよい。代替的には、クライアントコンピューティング装置は、例えば、さまざまなGNU/Linuxオペレーティングシステム、例えば、Google Chrome(登録商標)OSを含むがこれに限定されない市販のUNIX(登録商標)またはUNIXに類似するさまざまなオペレーティングシステムを実行するワークステーションコンピュータであってもよい。代替的にまたは追加的には、クライアントコンピューティング装置は、VCN1206および/またはインターネットにアクセスできるネットワークを介して通信可能な他の電子機器、例えば、シンクライアントコンピュータ、インターネット対応のゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置を備えるまたは備えないMicrosoft Xbox(登録商標)ゲームコンソール)、および/またはパーソナルメッセージング装置であってもよい。
【0209】
VCN1206は、SSH VCN1212に含まれるLPG1210を介して、セキュアシェル(SSH)VCN1212に通信可能に接続できるローカルピアリングゲートウェイ(LPG)1210を含むことができる。SSH VCN1212は、SSHサブネット1214を含むことができ、SSH VCN1212は、制御プレーンVCN1216に含まれるLPG1210を介して、制御プレーンVCN1216に通信可能に接続されてもよい。また、SSH VCN1212は、LPG1210を介して、データプレーンVCN1218に通信可能に接続されてもよい。制御プレーンVCN1216およびデータプレーンVCN1218は、IaaSプロバイダによって所有および/または運営され得るサービステナンシ1219に含まれてもよい。
【0210】
制御プレーンVCN1216は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンDMZ(demilitarized zone)層1220を含むことができる。DMZベースのサーバは、特定の信頼性を有し、セキュリティ侵害を封じ込めることができる。さらに、DMZ層1220は、1つ以上のロードバランサ(LB)サブネット1222と、アプリサブネット1226を含むことができる制御プレーンアプリ層1224と、データベース(DB)サブネット1230(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層1228とを含むことができる。制御プレーンDMZ層1220に含まれたLBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226と制御プレーンVCN1216に含まれ得るインターネットゲートウェイ1234とに通信可能に接続されてもよく、アプリサブリ1226は、制御プレーンデータ層1228に含まれるDBサブネット1230と、サービスゲートウェイ1236と、ネットワークアドレス変換(NAT)ゲートウェイ1238とに通信可能に接続されてもよい。制御プレーンVCN1216は、サービスゲートウェイ1236およびNATゲートウェイ1238を含むことができる。
【0211】
制御プレーンVCN1216は、データプレーンミラーアプリ層1240を含むことができ、データプレーンミラーアプリ層1240は、アプリサブネット1226を含むことができる。データプレーンミラーアプリ層1240に含まれたアプリサブネット1226は、計算インスタンス1244を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1242を含むことができる。計算インスタンス1244は、データプレーンミラーアプリ層1240のアプリサブネット1226を、データプレーンアプリ層1246に含まれ得るアプリサブネット1226に通信可能に接続することができる。
【0212】
データプレーンVCN1218は、データプレーンアプリ層1246と、データプレーンDMZ層1248と、データプレーンデータ層1250とを含むことができる。データプレーンDMZ層1248は、データプレーンアプリ層1246のアプリサブネット1226およびデータプレーンVCN1218のインターネットゲートウェイ1234に通信可能に接続され得るLBサブネット1222を含むことができる。アプリサブネット1226は、データプレーンVCN1218のサービスゲートウェイ1236およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に接続されてもよい。また、データプレーンデータ層1250は、データプレーンアプリ層1246のアプリサブネット1226に通信可能に接続され得るDBサブネット1230を含むことができる。
【0213】
制御プレーンVCN1216のインターネットゲートウェイ1234およびデータプレーンVCN1218のインターネットゲートウェイ1234は、パブリックインターネット1254に通信可能に接続され得るメタデータ管理サービス1252に通信可能に接続されてもよい。パブリックインターネット1254は、制御プレーンVCN1216のNATゲートウェイ1238およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に接続されてもよい。制御プレーンVCN1216のサービスゲートウェイ1236およびデータプレーンVCN1218のサービスゲートウェイ1236は、クラウドサービス1256に通信可能に接続されてもよい。
【0214】
いくつかの例において、制御プレーンVCN1216のサービスゲートウェイ1236またはデータプレーンVCN1218のサービスゲートウェイ1236は、パブリックインターネット1254を経由することなく、クラウドサービス1256へのアプリケーションプログラミングインターフェイス(API)呼び出しを行うことができる。サービスゲートウェイ1236からのクラウドサービス1256へのAPI呼び出しは、一方向であり得る。サービスゲートウェイ1236は、クラウドサービス1256へのAPI呼び出しを行うことができ、クラウドサービス1256は、要求データをサービスゲートウェイ1236に送信することができる。しかしながら、クラウドサービス1256は、サービスゲートウェイ1236へのAPI呼び出しを開始するこいとができない。
【0215】
いくつかの例において、セキュアホストテナンシ1204は、孤立であり得るサービステナンシ1219に直接に接続されてもよい。セキュアホストサブネット1208は、孤立のシステムとの双方向通信を可能にするLPG1210を介して、SSHサブネット1214と通信することができる。セキュアホストサブネット1208をSSHサブネット1214に接続することによって、セキュアホストサブネット1208は、サービステナンシ1219内の他のエンティティにアクセスすることができる。
【0216】
制御プレーンVCN1216は、サービステナンシ1219のユーザが所望のリソースを設定またはプロビジョニングすることを可能にする。制御プレーンVCN1216においてプロビジョニングされた所望のリソースは、データプレーンVCN1218において展開または使用されてもよい。いくつかの例において、制御プレーンVCN1216は、データプレーンVCN1218から隔離されてもよく、制御プレーンVCN1216のデータプレーンミラーアプリ層1240は、データプレーンミラーアプリ層1240およびデータプレーンアプリ層1246に含まれ得るVNIC1242を介して、データプレーンVCN1218のデータプレーンアプリ層1246と通信することができる。
【0217】
いくつかの例において、システムのユーザまたは顧客は、要求をメタデータ管理サービス1252に通信することができるパブリックインターネット1254を介して、例えば、作成、読み取り、更新、または削除(CRUD)操作などの要求を行うことができる。メタデータ管理サービス1252は、インターネットゲートウェイ1234を介して、要求を制御プレーンVCN1216に通信することができる。要求は、制御プレーンDMZ層1220に含まれるLBサブネット1222によって受信されてもよい。LBサブネット1222は、要求が有効であると判断することができ、この判断に応答して、LBサブネット1222は、要求を制御プレーンアプリ層1224に含まれるアプリサブネット1226に送信することができる。要求が検証され、パブリックインターネット1254への呼び出しを必要とする場合、パブリックインターネット1254への呼び出しを、パブリックインターネット1254への呼び出しを行うことができるNATゲートウェイ1238に送信することができる。要求を記憶するためのメモリは、DBサブネット1230に格納されてもよい。
【0218】
いくつかの例において、データプレーンミラーアプリ層1240は、制御プレーンVCN1216とデータプレーンVCN1218との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正は、データプレーンVCN1218に含まれるリソースに適用されることが望ましい場合がある。制御プレーンVCN1216は、VNIC1242を介して、データプレーンVCN1218に含まれるリソースと直接に通信することができるため、構成に対する変更、更新、または他の適切な修正を実行することができる。
【0219】
いくつかの実施形態において、制御プレーンVCN1216およびデータプレーンVCN1218は、サービステナンシ1219に含まれてもよい。この場合、システムのユーザまたは顧客は、制御プレーンVCN1216またはデータプレーンVCN1218のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN1216およびデータプレーンVCN1218を所有または操作してもよく、これらの両方は、サービステナンシ1219に含まれてもよい。この実施形態は、ネットワークの隔離を可能にすることによって、ユーザまたは顧客が他のユーザのリソースまたは他の顧客のリソースと対話することを防止できる。また、この実施形態は、システムのユーザまたは顧客が、記憶するための所望のレベルのセキュリティを有しない可能性のあるパブリックインターネット1254に依存する必要なく、データベースをプライベートに記憶することを可能にすることができる。
【0220】
他の実施形態において、制御プレーンVCN1216に含まれるLBサブネット1222は、サービスゲートウェイ1236から信号を受信するように構成されてもよい。この実施形態において、制御プレーンVCN1216およびデータプレーンVCN1218は、パブリックインターネット1254を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されてもよい。顧客が使用するデータベースは、IaaSプロバイダによって制御され、パブリックインターネット1254から隔離され得るサービステナンシ1219に格納され得るため、IaaSプロバイダの顧客は、この実施形態を望む場合がある。
【0221】
図13は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパラメータを示すブロック図1300である。サービスオペレータ1302(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1306(例えば、図12のVCN1206)およびセキュアホストサブネット1308(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1304(例えば、図12のセキュアホストテナンシ1204)に通信可能に接続されてもよい。VCN1306は、SSH VCN1312に含まれるLPG1310を介してセキュアシェル(SSH)VCN1312(例えば、図12のSSH VCN1212)に通信可能に接続され得るローカルピアリングゲートウェイ(LPG)1310(例えば、図12のLPG1210)を含むことができる。SSH VCN1312は、SSHサブネット1314(例えば、図12のSSHサブネット1214)を含むことができ、SSH VCN1312は、制御プレーンVCN1316に含まれるLPG1310を介して制御プレーンVCN1316(例えば、図12の制御プレーンVCN1216)に通信可能に接続することができる。制御プレーンVCN1316は、サービステナンシ1319(例えば、図12のサービステナンシ1219)に含まれてもよく、データプレーンVCN1318(例えば、図12のデータプレーンVCN1218)は、システムのユーザまたは顧客によって所有または運営され得る顧客テナンシ1321に含まれてもよい。
【0222】
制御プレーン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を含むことができる。
【0223】
制御プレーンVCN1316は、アプリサブネット1326を含むことができるデータプレーンミラーアプリ層1340(例えば、図12のデータプレーンミラーアプリ層1240)を含むことができる。データプレーンミラーアプリ層1340に含まれるアプリサブネット1326は、(例えば、図12の計算インスタンス1244と同様の)計算インスタンス1344を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1342(例えば、VNIC1242)を含むことができる。計算インスタンス1344は、データプレーンミラーアプリ層1340に含まれるVNIC1342およびデータプレーンアプリ層1346に含まれるVNIC1342を介して、データプレーンミラーアプリ層1340のアプリサブネット1326と、データプレーンアプリ層1346(例えば、図12のデータプレーンアプリ層1246)に含まれ得るアプリサブネット1326との間の通信を促進することができる。
【0224】
制御プレーンVCN1316に含まれるインターネットゲートウェイ1334は、パブリックインターネット1354(例えば、図12のパブリックインターネット1254)に通信可能に接続され得るメタデータ管理サービス1352(例えば、図12のメタデータ管理サービス1252)に通信可能に接続されてもよい。パブリックインターネット1354は、制御プレーンVCN1316に含まれるNATゲートウェイ1338に通信可能に接続されてもよい。制御プレーンVCN1316に含まれるサービスゲートウェイ1336は、クラウドサービス1356(例えば、図12のクラウドサービス1256)に通信可能に接続されてもよい。
【0225】
いくつかの例において、データプレーンVCN1318は、顧客テナンシ1321に含まれてもよい。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN1316を提供することができ、IaaSプロバイダは、顧客ごとに、サービステナンシ1319に含まれる固有の計算インスタンス1344を構成することができる。各計算インスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316と、顧客テナンシ1321に含まれるデータプレーンVCN1318との間の通信を許可することができる。計算インスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316においてプロビジョニングされるリソースを、顧客テナンシ1321に含まれるデータプレーンVCN1318に展開することまたは使用することを許可することができる。
【0226】
他の例において、IaaSプロバイダの顧客は、顧客テナンシ1321に存在するデータベースを有することができる。この例において、制御プレーンVCN1316は、アプリサブネット1326を含むことができるデータプレーンマイナーアプリ層1340を含むことができる。データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在してもよいが、データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在しなくてもよい。すなわち、データプレーンミラーアプリ層1340は、顧客テナンシ1321にアクセスすることができるが、データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在しなくてもよく、IaaSプロバイダの顧客によって所有または運営されなくてもよい。データプレーンミラーアプリ層1340は、データプレーンVCN1318への呼び出しを行うように構成されてもよいが、制御プレーンVCN1316に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN1316にプロビジョニングされたデータプレーンVCN1318内のリソースを展開することまたは使用することを望むことができ、データプレーンミラーアプリケーション階層1340は、顧客のリソースの所望の展開または他の使用を促進することができる。
【0227】
いくつかの実施形態において、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN1318に適用することができる。この実施形態において、顧客は、データプレーンVCN1318がアクセスできるものを判断することができ、顧客は、データプレーンVCN1318からのパブリックインターネット1354へのアクセスを制限することができる。IaaSプロバイダは、データプレーンVCN1318から任意の外部ネットワークまたはデータベースへのアクセスにフィルタを適用するまたは制御することができない場合がある。顧客が顧客テナンシ1321に含まれるデータプレーンVCN1318にフィルタおよび制御を適用することは、データプレーンVCN1318を他の顧客およびパブリックインターネット1354から隔離することを支援することができる。
【0228】
いくつかの実施形態において、クラウドサービス1356は、サービスゲートウェイ1336によって呼び出されて、パブリックインターネット1354上に、制御プレーンVCN1316上に、またはデータプレーンVCN1318上に存在していない可能性があるサービスにアクセスすることができる。クラウドサービス1356と制御プレーンVCN1316またはデータプレーンVCN1318との間の接続は、ライブまたは連続的でなくてもよい。クラウドサービス1356は、IaaSプロバイダによって所有または運営されている別のネットワーク上に存在してもよい。クラウドサービス1356は、サービスゲートウェイ1336から呼び出しを受信するように構成されてもよく、パブリックインターネット1354から呼び出しを受信しないように構成されてもよい。いくつかのクラウドサービス1356は、他のクラウドサービス1356から隔離されてもよく、制御プレーンVCN1316は、制御プレーンVCN1316と同じ地域に配置していない可能性があるクラウドサービス1356から隔離されてもよい。例えば、制御プレーンVCN1316は、「地域1」に配置されてもよく、クラウドサービス「展開12」は、「地域1」および「地域2」に配置されてもよい。展開12への呼び出しが地域1に配置された制御プレーンVCN1316に含まれるサービスゲートウェイ1336によって行われる場合、この呼び出しは、地域1内の展開12に送信されてもよい。この例において、制御プレーンVCN1316または地域1の展開12は、地域2の展開12と通信可能に接続されなくてもよい。
【0229】
図14は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1400である。サービスオペレータ1402(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1406(例えば、図12のVCN1206)およびセキュアホストサブネット1408(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1404(例えば、図12のセキュアホストテナンシ1204)に通信可能に接続されてもよい。VCN1406は、SSH VCN1412に含まれるLPG1410を介して、SSH VCN1412(例えば、図12のSSH VCN1212)に通信可能に接続され得るLPG1410(例えば、図12のLPG1210)を含むことができる。SSH VCN1412は、SSHサブネット1414(例えば、図12のSSHサブネット1214)を含むことができ、SSH VCN1412は、制御プレーンVCN1416に含まれるLPG1410を介して制御プレーンVCN1416(例えば、図12の制御プレーンVCN1216)に通信可能に接続されてもよく、データプレーンVCN1418に含まれるLPG1410を介してデータプレーンVCN1418(例えば、図12のデータプレーン1218)に通信可能に接続されてもよい。制御プレーンVCN1416およびデータプレーンVCN1418は、サービステナンシ1419(例えば、図12のサービステナント1219)に含まれてもよい。
【0230】
制御プレーン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を含むことができる。
【0231】
データプレーンVCN1418は、データプレーンアプリ層1446(例えば、図12のデータプレーンアプリ層1246)と、データプレーンDMZ層1448(例えば、図12のデータプレーンDMZ層1248)と、データプレーンデータ層1450(例えば、図12のデータプレーンデータ階層1250)とを含むことができる。データプレーンDMZ層1448は、データプレーンVCN1418に含まれるデータプレーンアプリ層1446およびインターネットゲートウェイ1434の信頼できるアプリサブネット1460および信頼できないアプリサブネット1462に通信可能に接続され得るLBサブネット1422を含むことができる。信頼できるアプリサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、データプレーンVCN1418に含まれるNATゲートウェイ1438、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続されてもよい。信頼できないアプリサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続されてもよい。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に接続され得るDBサブネット1430を含むことができる。
【0232】
信頼できないアプリサブネット1462は、テナント仮想マシン(VM)1466(1)~(N)に通信可能に接続され得る1つ以上のプライマリVNIC1464(1)~(N)を含むことができる。各テナントVM1466(1)~(N)は、それぞれの顧客テナンシ1470(1)~(N)に含まれ得るそれぞれのコンテナ送信VCN1468(1)~(N)に含まれ得るそれぞれのアプリサブネット1467(1)~(N)に通信可能に接続されてもよい。それぞれのセカンダリVNIC1472(1)~(N)は、データプレーンVCN1418に含まれる信頼できないアプリサブネット1462と、コンテナ送信VCN1468(1)~(N)に含まれるアプリサブネットとの間の通信を促進することができる。各コンテナ送信VCN1468(1)~(N)は、パブリックインターネット1454(例えば、図12のパブリックインターネット1254)に通信可能に接続され得るNATゲートウェイ1438を含むことができる。
【0233】
制御プレーンVCN1416に含まれるインターネットゲートウェイ1434およびデータプレーンVCN1418に含まれるインターネットゲートウェイ1434は、パブリックインターネット1454に通信可能に接続され得るメタデータ管理サービス1452(例えば、図12のメタデータ管理システム1252)に通信可能に接続されてもよい。パブリックインターネット1454は、制御プレーンVCN1416に含まれるNATゲートウェイ1438およびデータプレーンVCN1418に含まれるNATゲートウェイ1438に通信可能に接続されてもよい。制御プレーンVCN1416に含まれるサービスゲートウェイ1436およびデータプレーンVCN1418に含まれるサービスゲートウェイ1436は、クラウドサービス1456に通信可能に接続されてもよい。
【0234】
いくつかの実施形態において、データプレーンVCN1418は、顧客テナンシ1470に統合されてもよい。この統合は、コードを実行するときにサポートを望む場合がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましい場合がある。顧客は、実行すると、破壊的であり得る、他の顧客リソースと通信し得る、または望ましくない影響を引き起こし得るコードを提供することがある。従って、IaaSプロバイダは、顧客がIaaSプロバイダに提供したコードを実行するか否かを判断することができる。
【0235】
いくつかの例において、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(I)~(N)をキルするまたは廃棄することができる。
【0236】
いくつかの実施形態において、信頼できるアプリサブネット1460は、IaaSプロバイダによって所有または運営され得るコードを実行することができる。この実施形態において、信頼できるアプリサブネット1460は、DBサブネット1430に通信可能に接続され、DBサブネット1430においてCRUD操作を実行するように構成されてもよい。信頼できないアプリサブネット1462は、DBサブネット1430に通信可能に接続され得るが、この実施形態において、信頼できないアプリサブネットは、DBサブネット1430内で読み取り操作を実行するように構成されてもよい。各顧客のVM1466(1)~(N)に含まれ、顧客からのコードを実行することができるコンテナ1471(1)~(N)は、DBサブネット1430と通信可能に接続されなくてもよい。
【0237】
他の実施形態において、制御プレーンVCN1416およびデータプレーンVCN1418は、通信可能に直接に結合されなくてもよい。この実施形態において、制御プレーンVCN1416とデータプレーンVCN1418との間に直接的な通信は、存在していない可能性がある。しかしながら、少なくとも1つの方法による間接的な通信は、存在してもよい。制御プレーンVCN1416とデータプレーンVCN1418との間の通信を容易にすることができるLPG1410が、IaaSプロバイダによって確立されてもよい。別の例において、制御プレーンVCN1416またはデータプレーンVCN1418は、サービスゲートウェイ1436を介してクラウドサービス1456への呼び出しを行うことができる。例えば、制御プレーンVCN1416からクラウドサービス1456への呼び出しは、データプレーンVCN1418と通信することができるサービスの要求を含むことができる。
【0238】
図15は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパラメータを示すブロック図1500である。サービスオペレータ1502(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1506(例えば、図12のVCN1206)およびセキュアホストサブネット1508(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1504(例えば、図12のセキュアホストテナンシ1204)に通信可能に接続されてもよい。VCN1506は、SSH VCN1512に含まれるLPG1510を介してSSH VCN1512(例えば、図12のSSH VCN1212)に通信可能に接続され得るLPG1510(例えば、図12のLPG1210)を含むことができる。SSH VCN1512は、SSHサブネット1514(例えば、図12のSSHサブネット1214)を含むことができ、SSH VCN1512は、制御プレーンVCN1516に含まれるLPG1510を介して制御プレーンVCN1516(例えば、図12の制御プレーンVCN1216)に通信可能に接続されてもよく、データプレーンVCN1518に含まれるLPG1510を介してデータプレーンVCN1518(例えば、図12のデータプレーン1218)に通信可能に接続されてもよい。制御プレーンVCN1516およびデータプレーンVCN1518は、サービステナンシ1519(例えば、図12のサービステナンシ1219)に含まれてもよい。
【0239】
制御プレーンVCN1516は、LBサブネット1522(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1520(例えば、図12の制御プレーンDMZ層1220)、アプリサブネット1526(例えば、図12のアプリサブネット1226)を含み得る制御プレーンアプリ層1524(例えば、図12の制御プレーンアプリ層1224)、DBサブネット1530(例えば、図14のDBサブネット1430)を含み得る制御プレーンデータ層1528(例えば、図12の制御プレーンデータ層1228)を含むことができる。制御プレーンDMZ層1520に含まれるLBサブネット1522は、制御プレーンアプリ層1524に含まれるアプリサブネット1526と、制御プレーンVCN1516に含まれ得るインターネットゲートウェイ1534(例えば、図12のインターネットゲートウェイ1234)とに通信可能に接続されてもよい。アプリサブネット1526は、制御プレーンデータ層1528に含まれるDBサブネット1530と、サービスゲートウェイ1536(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1538(例えば、図12のNATゲートウェイ1238)とに通信可能に接続されてもよい。制御プレーンVCN1516は、サービスゲートウェイ1536およびNATゲートウェイ1538を含むことができる。
【0240】
データプレーンVCN1518は、データプレーンアプリ層1546(例えば、図12のデータプレーンアプリ層1246)、データプレーンDMZ層1548(例えば、図12のデータプレーンDMZ層1248)、およびデータプレーンデータ層1550(例えば、図12のデータプレーンデータ層1250)を含むことができる。データプレーンDMZ層1548は、データプレーンアプリ層1546の信頼できるアプリサブネット1560(例えば、図14の信頼できるアプリサブネット1460)および信頼できないアプリサブネット1562(例えば、図14の信頼できないアプリサブネット1462)およびデータプレーンVCN1518に含まれるインターネットゲートウェイ1534に通信可能に接続され得るLBサブネット1522を含むことができる。信頼できるアプリサブネット1560は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、データプレーンVCN1518に含まれるNATゲートウェイ1538、およびデータプレーンデータ層1550に含まれるDBサブネット1530に通信可能に接続されてもよい。信頼できないアプリサブネット1562は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、およびデータプレーンデータ層1550に含まれるDBサブネット1530に通信可能に接続されてもよい。データプレーンデータ層1550は、データプレーンVCN1518に含まれるサービスゲートウェイ1536に通信可能に接続され得るDBサブケット1530を含むことができる。
【0241】
信頼できないアプリサブネット1562は、信頼できないアプリサブネット1562に常駐するテナント仮想マシン(VM)1566(1)~(N)に通信可能に接続され得るプライマリYNIC1564(1)~(N)を含むことができる。各テナントVM1566(1)~(N)は、それぞれのコンテナ1567(1)~(N)においてコードを実行することができ、コンテナ送信VCN1568に含まれ得るデータプレーンアプリ層1546に含まれ得るアプリサブネット1526に通信可能に接続されてもよい。各セカンダリVNIC1572(1)~(N)は、データプレーンVCN1518に含まれる信頼できないアプリサブネット1562とコンテナ送信VCN1568に含まれるアプリサブネットとの間の通信を促進することができる。コンテナ送信VCNは、パブリックインターネット1554(例えば、図24のパブリックインターネット1254)に通信可能に接続することができるNATゲートウェイ1538を含むことができる。
【0242】
制御プレーンVCN1516に含まれるインターネットゲートウェイ1534およびデータプレーンVCN1518に含まれるインターネットゲートウェイ1534は、パブリックインターネット1554に通信可能に接続され得るメタデータ管理サービス1552(例えば、図12のメタデータ管理システム1252)に通信可能に接続されてもよい。パブリックインターネット1554は、制御プレーンVCN1516に含まれるNATゲートウェイ1538およびデータプレーンVCN1518に含まれるNATゲートウェイ1538に通信可能に接続されてもよい。制御プレーンVCN1516に含まれるサービスゲートウェイ1536およびデータプレーンVCN1518に含まれるサービスゲートウェイ1536は、クラウドサービス1556に通信可能に接続されてもよい。
【0243】
いくつかの例において、図15のブロック図1500のアーキテクチャによって示されたパターンは、図14のブロック図1400のアーキテクチャによって示されたパターンの例外と考えられ、IaaSプロバイダが顧客と直接に通信できない(例えば、非接続地域)場合、IaaSプロバイダの顧客にとって望ましいことがある。顧客は、各顧客のVM1566(1)~(N)に含まれるそれぞれのコンテナ1567(1)~(N)にリアルタイムでアクセスすることができる。コンテナ1567(1)~(N)は、コンテナ送信VCN1568に含まれ得るデータプレーンアプリ層1546のアプリサブネット1526に含まれるそれぞれのセカンダリVNIC1572(1)~(N)を呼び出すように構成されてもよい。セカンダリVNIC1572(1)~(N)は、パブリックインターネット1554に呼び出しを送信することができるNATゲートウェイ1538に呼び出しを送信することができる。この例において、顧客がリアルタイムでアクセスできるコンテナ1567(1)~(N)は、制御プレーンVCN1516から隔離されてもよく、データプレーンVCN1518に含まれる他のエンティティから隔離されてもよい。また、コンテナ1567(1)~(N)は、他の顧客のリソースから隔離されてもよい。
【0244】
他の例において、顧客は、コンテナ1567(1)~(N)を使用して、クラウドサービス1556を呼び出すことができる。この例では、顧客は、コンテナ1567(1)~(N)において、クラウドサービス1556からサービスを要求するコードを実行することができる。コンテナ1567(1)~(N)は、要求をパブリックインターネット1554に送信することができるNATゲートウェイに要求を送信することができるセカンダリVNIC1572(1)~(N)にこの要求を送信することができる。パブリックインターネット1554は、インターネットゲートウェイ1534を介して、制御プレーンVCN1516に含まれるLBサブネット1522にこの要求を送信することができる。要求が有効であるとの判断に応答して、LBサブネットは、この要求をアプリサブネット1526に送信することができ、アプリサブネット1526は、サービスゲートウェイ1536を介して、この要求をクラウドサービス1556に要求を送信することができる。
【0245】
なお、図示されたIaaSアーキテクチャ1200、1300、1400および1500は、図示されたもの以外の要素を含んでもよい。また、図示された実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一部の例に過ぎない。他のいくつかの実施形態において、IaaSシステムは、図示されたものよりも多いまたは少ない要素を有してよく、2つ以上の要素を組み合わせてよく、または要素の異なる構成または配置を有してよい。
【0246】
特定の実施形態において、本開示に記載されたIaaSシステムは、セルフサービス、サブスクリプションベース、柔軟な拡張可能性、信頼性、高可用性、および安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービスのスイートを含むことができる。このようなIaaSシステムの一例は、本出願人によって提供されたオラクル(登録商標)クラウドインフラストラクチャ(OCI)である。
【0247】
図16は、様々な実施形態を実施できる例示的なコンピュータシステム1600を示す。システム1600は、上述したコンピュータシステムのいずれかを実装するために使用されてもよい。図示のように、コンピュータシステム1600は、バスサブシステム1602を介して多数の周辺サブシステムと通信する処理ユニット1604を含む。これらの周辺サブシステムは、処理加速ユニット1606、I/Oサブシステム1608、記憶サブシステム1618、および通信サブシステム1624を含んでもよい。記憶サブシステム1618は、有形のコンピュータ可読記憶媒体1622およびシステムメモリ1610を含む。
【0248】
バスサブシステム1602は、コンピュータシステム1600の様々な構成要素およびサブシステムを意図したように相互に通信させるための機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム1602は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかであってもよい。例えば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)、バス拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、およびIEEE P1386.1標準に準拠して製造されたメザニンバスとして実装できる周辺機器相互接続(PCI)バスなどを含むことができる。
【0249】
1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装され得る処理ユニット1604は、コンピュータシステム1600の動作を制御する。処理ユニット1604は、1つ以上のプロセッサを含んでもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでもよい。いくつかの実施形態において、処理ユニット1604は、各処理ユニットに含まれるシングルコアまたはマルチコアプロセッサを有する1つ以上の独立した処理ユニット1632および/または1634として実装されてもよい。他の実施形態において、処理ユニット1604は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されたクワッドコア(quad-core)処理ユニットとして実装されてもよい。
【0250】
様々な実施形態において、処理ユニット1604は、プログラムコードに応答して様々なプログラムを実行することができ、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の時点で、実行されるプログラムコードの一部または全部は、プロセッサ1604および/または記憶サブシステム1618に常駐することができる。プロセッサ1604は、適切なプログラミングを通して、上述した様々な機能性を提供することができる。コンピュータシステム1600は、デジタル信号プロセッサ(DSP)、専用プロセッサおよび/または同種のものを含むことができる処理加速ユニット1606をさらに含んでもよい。
【0251】
I/Oサブシステム1608は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含むことができる。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声命令認識システムを備える音声入力装置、マイクロフォン、および他の種類の入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、Microsoft Kinect(登録商標)モーションセンサのようなモーション検知および/またはジェスチャ認識装置を含んでもよい。Microsoft Kinect(登録商標)モーションセンサは、ジェスチャおよび音声命令を利用する自然ユーザインターフェイス(NUI)を介して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御することができ、それと対話することができる。また、ユーザインターフェイス入力装置は、Google Glass(登録商標)瞬き検出器のような眼球ジェスチャ認識装置を含むことができる。Google Glass(登録商標)瞬き検出器は、ユーザの眼球活動(例えば、写真を撮るときおよび/またはメニューを選択するときの「瞬き」)を検出し、眼球活動を入力装置(例えば、Google Glass(登録商標))に入力する入力に変換する。さらに、ユーザインターフェイス入力装置は、音声命令を介してユーザと音声認識システム(例えば、Siri(登録商標)ナビゲータ)との対話を可能にする音声認識検出装置を含んでもよい。
【0252】
また、ユーザインターフェイス入力装置は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッド、グラフィックタブレット、スピーカなどのオーディオ/ビジュアル装置、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ、3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置を含むがこれらに限定されない。さらに、ユーザインターフェイス入力装置は、例えば、コンピュータ断層撮影装置、磁気共鳴像装置、超音波放射断層撮影装置、および医療用超音波装置などのような医用画像入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、MIDIキーボードおよび電子楽器などの音声入力装置を含んでもよい。
【0253】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚ディスプレイを含んでもよい。ディスプレイサブシステムは、例えば、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するフラットパネル装置、投射装置またはタッチスクリーンであってもよい。一般的に、「出力装置」という用語を使用する場合、コンピュータシステム1600から情報をユーザまたは他のコンピュータに出力するための全ての可能な種類の装置および機構を含むことを意図している。例えば、ユーザインターフェイス出力装置は、文字、画像およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置、例えば、モニタ、プリンタ、スピーカ、ヘッドフォン、カーナビゲーションシステム、プロッタ、音声出力装置、およびモデムを含むがこれらに限定されない。
【0254】
コンピュータシステム1600は、記憶サブシステム1618を含むことができる。記憶サブシステム1618は、ソフトウェア要素を備え、図示では、これらのソフトウェア要素は、システムメモリ1610内に配置されている。システムメモリ1610は、処理ユニット1604にロード可能および実行可能なプログラム命令、およびこれらのプログラムの実行により生成されたデータを記憶することができる。
【0255】
コンピュータシステム1600の構成および種類に応じて、システムメモリ1610は、揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory:RAM))であってもよく、および/または、不揮発性メモリ(例えば、読取り専用メモリ(read-only memory:ROM)、フラッシュメモリ)であってもよい。一般的に、RAMは、処理ユニット1604がすぐにアクセス可能なデータおよび/またはプログラムモジュール、および/または、処理ユニット1604によって現在操作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実現例では、システムメモリ1610は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実現例では、始動中などにコンピュータシステム1600内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、一般的にROMに格納され得る。一例としておよび非限定的に、システムメモリ1610は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム1612、プログラムデータ1614およびオペレーティングシステム1616も示す。一例として、オペレーティングシステム1616は、マイクロソフトウィンドウズ(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステムのさまざまなバージョン、さまざまな市販のUNIX(登録商標)もしくはUNIXライクオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されるものではない)、および/または、iOS、Windows(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)16 OSおよびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0256】
また、記憶サブシステム1618は、いくつかの実施例の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ可読記憶媒体を提供することができる。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1618に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1604によって実行されてもよい。また、記憶サブシステム1618は、本開示に従って使用されるデータを記憶するためのリポジトリを提供することができる。
【0257】
また、記憶サブシステム1610は、コンピュータ可読記憶媒体1622にさらに接続可能なコンピュータ可読記憶媒体リーダ1620を含むことができる。コンピュータ可読記憶媒体1622は、システムメモリ1610と共に、または必要に応じてシステムメモリ1610と組み合わせて、コンピュータ可読情報を一時的におよび/または永久に収容、格納、送信および検索するための記憶媒体に加えて、リモート記憶装置、ローカル記憶装置、固定的な記憶装置および/または取外し可能な記憶装置を包括的に表すことができる。
【0258】
また、コードまたはコードの一部を含むコンピュータ可読記憶媒体1622は、当該技術分野において公知のまたは使用される任意の適切な媒体を含んでもよい。当該媒体は、情報の格納および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、RAM、ROM、電子的消去・プログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(digital versatile disk:DVD)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体などの有形のコンピュータ可読記憶媒体を含むことができる。また、これは、データ信号、データ送信などの無形のコンピュータ可読媒体、または、所望の情報を送信するために使用可能であり且つコンピュータシステム1600によってアクセス可能なその他の媒体を含むことができる。
【0259】
一例として、コンピュータ可読記憶媒体1622は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、CD ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含んでもよい。コンピュータ可読記憶媒体1622は、ジップ(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ可読記憶媒体1622は、フラッシュメモリベースのSSD、企業向けフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶装置をコンピュータシステム1600に提供することができる。
【0260】
通信サブシステム1624は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム1624は、他のシステムからデータを受信し、コンピュータシステム1600から他のシステムにデータを送信するためのインターフェイスの役割を果たす。例えば、通信サブシステム1624は、コンピュータシステム1600がインターネットを介して1つ以上の装置に接続することを可能にし得る。いくつかの実施例では、通信サブシステム1624は、(例えば3G、4GまたはEDGE(enhanced data rates for global evolution)などの携帯電話技術、高度データネットワーク技術を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバ構成要素、WiFi(IEEE802.11ファミリ標準または他のモバイル通信技術またはそれらの任意の組み合わせ)、全地球測位システム(global positioning system:GPS)レシーバ構成要素、および/または、他の構成要素を含んでもよい。いくつかの実施例では、通信サブシステム1624は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続(例えばイーサネット)を提供することができる。
【0261】
また、いくつかの実施例において、通信サブシステム1624は、コンピュータシステム1600を使用し得る1人以上のユーザを代表して、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630などの形態で入力通信を受信することができる。
【0262】
一例として、通信サブシステム1624は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリ(Rich Site Summary:RSS)フィードなどのウェブフィードなどのデータフィード1626をリアルタイムでソーシャルネットワークおよび/または他の通信サービスのユーザから受信し、および/または、1つ以上の第三者情報源からリアルタイム更新を受信するように構成されてもよい。
【0263】
また、通信サブシステム1624は、連続的なデータストリームの形態でデータを受信するように構成され得て、当該データは、連続的である場合もあれば本質的に明確な端部を持たない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム1628および/またはイベント更新1630を含んでもよい。連続的なデータを生成するアプリケーションの例としては、例えばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどを含んでもよい。
【0264】
また、通信サブシステム1624は、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630などを、コンピュータシステム1600に接続されている1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
【0265】
コンピュータシステム1600は、手持ち式携帯機器(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含む様々な種類のうちの1つであってもよい。
【0266】
コンピュータおよびネットワークが絶え間なく進化し続けるため、図示されたコンピュータシステム1600の説明は、特定の例として意図されているにすぎない。図示されたシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成も可能である。例えば、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組み合わせにおいて、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が実装されてもよい。さらに、ネットワーク入力/出力装置などの他の計算装置への接続が利用されてもよい。本開示において提供される開示および教示に基づいて、当業者は、様々な実施例を実現するための他の手段および/または方法を理解するであろう。
【0267】
本開示の特定の実施形態を説明してきたが、さまざまな変更、改変、代替構成、および同等物も本開示の範囲内に包含される。本開示の実施形態は、特定のデータ処理環境内で動作するのに限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、一連の特定の処置およびステップを用いて本開示の実施形態を説明してきたが、本開示の範囲が説明された一連の処置およびステップに限定されないことは、当業者にとって明らかであろう。上述した実施形態のさまざまな特徴および態様は、個別にまたは共同で使用することができる。
【0268】
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを用いて本開示の実施形態を説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内に含まれることを認識すべきである。ハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせを用いて、本開示の実施形態を実現することができる。本開示に記載されたさまざまなプロセスは、同一のプロセッサまたは任意の組み合わせの異なるプロセッサ上で実行することができる。したがって、特定の処理を実行するように構成要素またはモジュールを構成すると説明する場合、その構成は、例えば、その処理を実行するように電子回路を設計することによって、その処理を実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの組み合わせによって実現することができる。プロセスは、プロセス間の通信を行う従来技術を含むがこれに限定されないさまざまな技術を用いて通信を行うことができる。異なる対のプロセスは、異なる技術を使用することができ、または同一対のプロセスは、異なる時間で異なる技術を使用することができる。
【0269】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味であるとみなすべきである。しかしながら、特許請求の範囲により定められた幅広い主旨および範囲から逸脱することなく、追加、削減、削除および他の修飾および変更を行ってもよいことは、明らかであろう。したがって、本開示の特定の実施形態を説明したが、これらの実施形態は、限定することを意図していない。さまざまな変更およびその等価物は、添付の特許請求の範囲に含まれる。
【0270】
本開示を説明する文脈に(特に特許請求の範囲の文脈に)使用された不定冠詞「a」/「an」、定冠詞「the」および同様の参照は、本開示に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、単数および複数の両方を含むように解釈すべきである。用語「含む(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」は、特に明記しない限り、非限定的な用語(すなわち、「含むがこれに限定されない」という意味)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在していても、その一部または全部が内部に含まれている、取り付けられている、または一緒に結合されていると解釈されるべきである。本開示において、値の範囲の列挙は、単にその範囲内に含まれる各個別の値を各々言及する速記方法として意図され、本開示に特に明記しない限り、各個別の値は、本開示に個別に記載されるように、本開示に組み込まれる。本開示に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、本開示に記載の全ての方法は、任意の適切な順序で行うことができる。本開示において、任意の例および全ての例または例示的な言語(例えば、「~のような」)の使用は、本開示の実施形態をより明瞭にするよう意図されており、特に明記しない限り、本開示の範囲を限定するものではない。明細書内の用語は、本開示の実施に不可欠な任意の非請求要素を示すものと解釈すべきではない。
【0271】
句「X、Y、またはZの少なくとも1つ」というフレーズのような選言的言語は、特に断らない限り、項目、用語などがX、YもしくはZ、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)のいずれかであってもよいことを示すために一般的に用いられるものとして文脈内で理解されることを意図している。したがって、このような選言的言語は、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが存在することを必要とすることを一般的に意図しておらず、また、それを暗示していない。
【0272】
本開示を実施するために知られている最良の形態を含み、本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形形態は、前述の説明を読めば当業者には明らかになるであろう。当業者は、適宜、このような変形例を採用することができ、本開示は、本明細書に具体的に記載されている以外の方法で実施されてもよい。したがって、本開示は、適用される法律によって許可され、本明細書に添付された請求項に記載された主題の全ての変形および等価物を含む。さらに、その全ての可能な変形における上記の要素の任意の組み合わせは、本明細書において別段の指示がない限り、本開示に包含される。
【0273】
本明細書に引用された刊行物、特許出願、および特許を含む全ての参考文献は、各文献が参照により組み込まれることが個別にかつ明確に示され、その全体が本明細書に記載された場合と同じ程度に、参照により組み込まれるものとする。前述の明細書において、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示の様々な特徴および態様は、個々にまたは共同で使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、本明細書に説明されるものを超える任意の数の環境および用途において利用されることができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10
図11
図12
図13
図14
図15
図16
【国際調査報告】