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

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

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

特許7583177RoCE(RDMA over Converged Ethernet)のためのクラウドスケールのマルチテナンシ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】RoCE(RDMA over Converged Ethernet)のためのクラウドスケールのマルチテナンシ
(51)【国際特許分類】
   H04L 41/0895 20220101AFI20241106BHJP
   H04L 49/354 20220101ALI20241106BHJP
【FI】
H04L41/0895
H04L49/354
【請求項の数】 16
(21)【出願番号】P 2023540185
(86)(22)【出願日】2021-04-13
(65)【公表番号】
(43)【公表日】2024-01-25
(86)【国際出願番号】 US2021027069
(87)【国際公開番号】W WO2022146470
(87)【国際公開日】2022-07-07
【審査請求日】2023-11-08
(31)【優先権主張番号】63/132,417
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/165,877
(32)【優先日】2021-02-02
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/166,922
(32)【優先日】2021-02-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】PCT/US2021/025459
(32)【優先日】2021-04-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シリムカル,サントシュ・ナラヤン
(72)【発明者】
【氏名】ベッカー,デイビッド・デイル
(72)【発明者】
【氏名】ブラール,ジャグウィンダー・シング
【審査官】前田 健人
(56)【参考文献】
【文献】米国特許出願公開第2016/0188527(US,A1)
【文献】米国特許出願公開第2015/0281099(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 41/00-101/695
(57)【特許請求の範囲】
【請求項1】
データネットワーキングの方法であって、
複数のテナントの中の第1のテナントのための第1のレイヤ2RDMAパケットを、前記複数のテナントの複数の計算インスタンスを実行するホストマシンから、イングレススイッチにおいて受信するステップと、
前記第1のレイヤ2RDMAパケットを、少なくとも1つのヘッダを有する第1のレイヤ3カプセル化パケットに変換するステップと、
前記第1のレイヤ3カプセル化パケットをスイッチファブリックに転送するステップとを含み、
前記第1のレイヤ2RDMAパケットは、仮想ローカルエリアネットワーク(VLAN:Virtual Local Area Network)タグと、クオリティオブサービス(QoS:Quality-of-Service)データフィールドとを含み、
前記変換するステップは、前記少なくとも1つのヘッダを前記第1のレイヤ2RDMAパケットに追加するステップを含み、前記少なくとも1つのヘッダは、
前記VLANタグからの情報に基づく仮想ネットワーク識別子と、
前記QoSデータフィールドからの情報に基づくQoS値とを含む、方法。
【請求項2】
輻輳の表示に応答して、前記スイッチファブリックの中間スイッチにおいて、前記第1のレイヤ3カプセル化パケットの前記少なくとも1つのヘッダの輻輳通知データフィールドを修正するステップをさらに含む、請求項1に記載の方法。
【請求項3】
VLANタグとQoSデータフィールドとを含む第2のレイヤ2RDMAパケットを前記イングレススイッチにおいて受信するステップと、
前記第2のレイヤ2RDMAパケットを、少なくとも1つのヘッダを有する第2のレイヤ3カプセル化パケットに変換するステップと、
前記第2のレイヤ3カプセル化パケットを前記スイッチファブリックに転送するステップとをさらに含み、
前記第2のレイヤ2RDMAパケットの前記VLANタグは、前記第1のレイヤ2RDMAパケットの前記VLANタグとは異なるVLANを示す、請求項1に記載の方法。
【請求項4】
前記スイッチファブリックの中間スイッチにおいて、
前記第1のレイヤ3カプセル化パケットの前記少なくとも1つのヘッダの前記QoS値に基づいて、前記第1のレイヤ3カプセル化パケットを前記中間スイッチの第1のキューにキューイングするステップと、
前記第2のレイヤ3カプセル化パケットの前記少なくとも1つのヘッダの前記QoS値に基づいて、前記第2のレイヤ3カプセル化パケットを、前記第1のキューとは異なる前記中間スイッチの第2のキューにキューイングするステップとをさらに含む、請求項3に記載の方法。
【請求項5】
エグレススイッチにおいて、前記第1のレイヤ3カプセル化パケットを受信するステップと、
前記第1のレイヤ3カプセル化パケットをデカプセル化して、前記第1のレイヤ2RDMAパケットを取得するステップと、
前記第1のレイヤ2RDMAパケットの前記VLANタグに基づいて、前記第1のレイヤ2RDMAパケットを第1の計算インスタンスに転送するステップと、
前記エグレススイッチにおいて、前記第2のレイヤ3カプセル化パケットを受信するステップと、
前記第2のレイヤ3カプセル化パケットをデカプセル化して、前記第2のレイヤ2RDMAパケットを取得するステップと、
前記第2のレイヤ2RDMAパケットの前記VLANタグに基づいて、前記第2のレイヤ2RDMAパケットを、前記第1の計算インスタンスとは異なる第2の計算インスタンスに転送するステップとをさらに含む、請求項3に記載の方法。
【請求項6】
エグレススイッチにおいて、前記第1のレイヤ3カプセル化パケットを受信するステップと、
前記第1のレイヤ3カプセル化パケットをデカプセル化して、前記第1のレイヤ2RDMAパケットを取得するステップと、
前記第1のレイヤ2RDMAパケットの前記VLANタグに基づいて、前記第1のレイヤ2RDMAパケットを第1の計算インスタンスに転送するステップとをさらに含む、請求項1に記載の方法。
【請求項7】
前記第1のレイヤ3カプセル化パケットの前記少なくとも1つのヘッダの輻輳通知データフィールドにおける情報に基づいて、前記第1のレイヤ2RDMAパケットの輻輳通知データフィールドの値を設定するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記QoS値は、前記第1のレイヤ3カプセル化パケットの外側IPヘッダの差別化されたサービスコードポイント(DSCP:Differentiated Services Code Point)フィールドであり、
前記変換するステップは、前記第1のレイヤ2RDMAパケットのIPヘッダのDSCPフィールドを前記第1のレイヤ3カプセル化パケットの前記外側IPヘッダの前記DSCPフィールドにコピーするステップを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記第1のレイヤ3カプセル化パケットは、仮想拡張可能ローカルエリアネットワーク(VxLAN)パケットであり、
前記仮想ネットワーク識別子は、前記第1のレイヤ3カプセル化パケットのVxLANヘッダの仮想ネットワーク識別子(VNI:Virtual Network Identifier)である、請求項1~7のいずれか1項に記載の方法。
【請求項10】
データネットワーキングの方法であって、
エグレススイッチにおいて、第1のレイヤ3カプセル化パケットを受信するステップと、
前記第1のレイヤ3カプセル化パケットをデカプセル化して、第1のレイヤ2RDMAパケットを取得するステップと、
前記第1のレイヤ3カプセル化パケットの少なくとも1つのヘッダの輻輳通知データフィールドからの情報に基づいて、前記第1のレイヤ2RDMAパケットの輻輳通知データフィールドの値を設定するステップと、
前記設定するステップの後に、前記第1のレイヤ2RDMAパケットのVLANタグに基づいて、前記第1のレイヤ2RDMAパケットを、ホストマシン上で実行される第1の計算インスタンスに転送するステップとを含み、前記第1の計算インスタンスは、前記ホストマシン上で実行される複数の計算インスタンスの中にある、方法。
【請求項11】
前記エグレススイッチにおいて、第2のレイヤ3カプセル化パケットを受信するステップと、
前記第2のレイヤ3カプセル化パケットをデカプセル化して、第2のレイヤ2RDMAパケットを取得するステップと、
前記第2のレイヤ2RDMAパケットのVLANタグに基づいて、前記第2のレイヤ2RDMAパケットを、前記第1の計算インスタンスとは異なる第2の計算インスタンスに転送するステップとをさらに含む、請求項10に記載の方法。
【請求項12】
前記エグレススイッチにおいて、
前記第1のレイヤ3カプセル化パケットの外側ヘッダのクオリティオブサービス(QoS)値に基づいて、前記第1のレイヤ3カプセル化パケットを前記エグレススイッチの第1のキューにキューイングするステップと、
前記第2のレイヤ3カプセル化パケットの外側ヘッダのQoS値に基づいて、前記第2のレイヤ3カプセル化パケットを、前記第1のキューとは異なる前記エグレススイッチの第2のキューにキューイングするステップとをさらに含む、請求項11に記載の方法。
【請求項13】
前記方法は、前記第1のレイヤ2RDMAパケットのソースアドレスに向けられる輻輳通知パケットを前記第1の計算インスタンスから受信するステップをさらに含む、請求項10~12のいずれか1項に記載の方法。
【請求項14】
前記第1のレイヤ2RDMAパケットは、RoCEv2パケットである、請求項1~13のいずれか1項に記載の方法。
【請求項15】
データネットワーキングのためのシステムであって、
スイッチファブリックと、
イングレススイッチとを備え、前記イングレススイッチは、
複数のテナントの中の第1のテナントのための第1のレイヤ2RDMAパケットを、前記複数のテナントの複数の計算インスタンスを実行するホストマシンから受信し、
前記第1のレイヤ2RDMAパケットを、少なくとも1つのヘッダを有する第1のレイヤ3カプセル化パケットに変換し、
前記第1のレイヤ3カプセル化パケットを前記スイッチファブリックに転送するように構成されており、
前記第1のレイヤ2RDMAパケットは、仮想ローカルエリアネットワーク(VLAN)タグと、クオリティオブサービス(QoS)データフィールドとを含み、
前記第1のレイヤ2RDMAパケットを変換するように構成された前記イングレススイッチは、前記少なくとも1つのヘッダを前記第1のレイヤ2RDMAパケットに追加するように構成されており、前記少なくとも1つのヘッダは、
前記VLANタグからの情報に基づく仮想ネットワーク識別子と、
前記QoSデータフィールドからの情報に基づくQoS値とを含む、システム。
【請求項16】
請求項1~14のいずれか1項に記載の方法を1つまたは複数のプロセッサによって実行させるためのコンピュータ可読プログラム
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、「RoCE(RDMA over Converged Ethernet)のためのクラウドスケールのマルチテナンシ(CLOUD SCALE MULTI-TENANCY FOR RDMA OVER CONVERGED ETHERNET (RoCE))」と題される2020年12月30日に出願された米国仮出願番号第63/132,417号、「RoCE(RDMA over Converged Ethernet)のためのクラウドスケールのマルチテナンシ(CLOUD SCALE MULTI-TENANCY FOR RDMA OVER CONVERGED ETHERNET (RoCE))」と題される2021年2月2日に出願された米国非仮出願番号第17/165,877号、「拡張可能なマルチテナントRDMAトラフィックのためのクラスベースのキューイング(CLASS-BASED QUEUEING FOR SCALABLE MULTI-TENANT RDMA TRAFFIC)」と題される2021年2月3日に出願された米国非仮出願番号第17/166,922号、および「拡張可能なマルチテナントRDMAトラフィックのためのクラスベースのキューイング(CLASS-BASED QUEUEING FOR SCALABLE MULTI-TENANT RDMA TRAFFIC)」と題される2021年4月1日に出願されたPCT出願番号第PCT/US2021/025459号に対する優先権を主張し、これらは全ての目的で引用によって全文が本明細書に援用される。
【背景技術】
【0002】
背景
RoCE(RDMA over Converged Ethernet)は、ロスレスなイーサネット(登録商標)ネットワークを介したリモートダイレクトメモリアクセス(RDMA:Remote Direct Memory Access)を可能にするネットワークプロトコルである。RoCEは、イーサネットを介してインフィニバンド(IB:InfiniBand)トランスポートパケットをカプセル化することによってこれを可能にする。一般的に言って、RoCEは、専用のRDMAキューおよび専用のVLANを有するレイヤ2ネットワークを含む。しかしながら、レイヤ2ネットワークは、拡張できず、あまり高性能ではない。なぜなら、レイヤ2ネットワークは、より拡張可能であって高性能のレイヤ3ネットワークに存在する重要な特性および特徴が無いからである。したがって、既存のパブリッククラウド実装は、RoCEプロトコルを使用したデータ転送を提供することができない。
【発明の概要】
【課題を解決するための手段】
【0003】
簡単な概要
本開示は、概してデータネットワーキングに関する。より特定的には、レイヤ3プロトコルを使用してレイヤ3ネットワークを介してレイヤ2トラフィックを通信することを可能にする技術が記載されている。特定の実施形態において、本開示に記載されている技術は、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3物理ネットワークまたはスイッチファブリックを介して、マルチテナントホストマシン(すなわち、様々なテナントまたは顧客に属する計算インスタンスをホストするホストマシン)上の計算インスタンスから別のマルチテナントホストマシン上の計算インスタンスにリモートダイレクトメモリアクセス(RDMA)トラフィック(例えば、RoCE(RDMA over Converged Ethernet)トラフィック)を通信することを可能にする。そのような通信は、任意に、他のトラフィック(例えば、TCPおよび/またはUDPトラフィック)も含んでもよい。顧客またはテナントは、通信が専用のレイヤ2ネットワーク上で行われるものとして経験するが、実際には、通信は、レイヤ3ルーティングプロトコルを使用して共有の(すなわち、複数の顧客またはテナント間で共有される)レイヤ3ネットワーク上で行われる。方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ可読記憶媒体などを含む様々な実施形態が本開示に記載されている。
【0004】
特定の実施形態において、データネットワーキングの方法は、複数のテナントの中の第1のテナントのための第1のレイヤ2RDMAパケットを、上記複数のテナントの複数の計算インスタンスを実行するホストマシンから、イングレス(ingress)スイッチにおいて受信するステップと、上記第1のレイヤ2RDMAパケットを、少なくとも1つのヘッダを有する第1のレイヤ3カプセル化パケットに変換するステップと、上記第1のレイヤ3カプセル化パケットをスイッチファブリックに転送するステップとを含み、上記第1のレイヤ2RDMAパケットは、仮想ローカルエリアネットワーク(VLAN:Virtual Local Area Network)タグと、クオリティオブサービス(QoS:Quality-of-Service)データフィールドとを含み、上記変換するステップは、上記少なくとも1つのヘッダを上記第1のレイヤ2RDMAパケットに追加するステップを含み、上記少なくとも1つのヘッダは、上記VLANタグからの情報に基づく仮想ネットワーク識別子と、上記QoSデータフィールドからの情報に基づくQoS値とを含む。上記方法は、輻輳の表示に応答して、上記スイッチファブリックの中間スイッチにおいて、上記第1のレイヤ3カプセル化パケットの上記少なくとも1つのヘッダの輻輳通知データフィールドを修正するステップをさらに含み得る。代替的にまたは追加的には、上記方法は、VLANタグとQoSデータフィールドとを含む第2のレイヤ2RDMAパケットを受信するステップと、上記第2のレイヤ2RDMAパケットを、少なくとも1つのヘッダを有する第2のレイヤ3カプセル化パケットに変換するステップと、上記第2のレイヤ3カプセル化パケットを上記スイッチファブリックに転送するステップとをさらに含み得て、上記第2のレイヤ2RDMAパケットの上記VLANタグは、上記第1のレイヤ2RDMAパケットの上記VLANタグとは異なるVLANを示す。そのような方法は、上記スイッチファブリックの中間スイッチにおいて、上記第1のレイヤ3カプセル化パケットの上記少なくとも1つのヘッダの上記QoS値に基づいて、上記第1のレイヤ3カプセル化パケットを上記中間スイッチの第1のキューにキューイングするステップと、上記第2のレイヤ3カプセル化パケットの上記少なくとも1つのヘッダの上記QoS値に基づいて、上記第2のレイヤ3カプセル化パケットを、上記第1のキューとは異なる上記中間スイッチの第2のキューにキューイングするステップとをさらに含み得る。
【0005】
さらに他の実施形態において、データネットワーキングの方法は、エグレス(egress)スイッチにおいて、第1のレイヤ3カプセル化パケットを受信するステップと、上記第1のレイヤ3カプセル化パケットをデカプセル化して、第1のレイヤ2RDMAパケットを取得するステップと、上記第1のレイヤ3カプセル化パケットの上記少なくとも1つのヘッダの輻輳通知データフィールドにおける情報に基づいて、上記第1のレイヤ2RDMAパケットの輻輳通知データフィールドの値を設定するステップと、上記設定するステップの後に、上記第1のレイヤ2RDMAパケットのVLANタグに基づいて、上記第1のレイヤ2RDMAパケットを第1の計算インスタンスに転送するステップとを含む。上記方法は、上記エグレススイッチにおいて、第2のレイヤ3カプセル化パケットを受信するステップと、上記第2のレイヤ3カプセル化パケットをデカプセル化して、第2のレイヤ2RDMAパケットを取得するステップと、上記第2のレイヤ2RDMAパケットのVLANタグに基づいて、上記第2のレイヤ2RDMAパケットを、上記第1の計算インスタンスとは異なる第2の計算インスタンスに転送するステップとをさらに含み得る。そのような方法は、上記エグレススイッチにおいて、上記第1のレイヤ3カプセル化パケットの外側ヘッダのクオリティオブサービス(QoS)値に基づいて、上記第1のレイヤ3カプセル化パケットを上記エグレススイッチの第1のキューにキューイングするステップと、上記第2のレイヤ3カプセル化パケットの外側ヘッダのQoS値に基づいて、上記第2のレイヤ3カプセル化パケットを、上記第1のキューとは異なる上記エグレススイッチの第2のキューにキューイングするステップとをさらに含み得る。
【0006】
さらに他の実施形態において、(例えば、レイヤ3ネットワークにおける)RDMAトラフィックのクラスベースのキューイングのための技術が記載されており、この技術を使用して、特定のキューにおけるRDMAトラフィックが他のキューにおけるRDMAトラフィックに影響を及ぼさないようにネットワークファブリック全体にわたるクラスベースの分離をクラウドスケールで維持することができる。特定の実施形態に従って、システムは、様々なクラスのRDMAトラフィックの移送および様々なテナントからのRDMAトラフィックの移送のための共有のファブリックを含むように実装され得て、あるRDMAネットワークインターフェイスコントローラ(NIC:Network Interface Controller)から別のNICまでの共有のファブリック全体にわたる経路内の各装置は、RDMAトラフィックの様々なクラスに専用の複数のキューを含む。
【0007】
特定の実施形態に従って、RDMAパケットをキューイングする方法は、ネットワーキング装置が、複数のRDMAパケットを受信するステップを含む。上記複数のRDMAパケットにおける各RDMAパケットは、クオリティオブサービス(QoS)データフィールドを含み、上記複数のRDMAパケットにおける各RDMAパケットについて、上記QoSデータフィールドは、上記RDMAパケットのためのサービスのクラスを示し、且つ、複数のQoS値の中にあるQoS値を有する。この方法は、上記ネットワーキング装置が、複数のRDMAキューの間で上記複数のRDMAパケットを分配するステップも含む。上記分配するステップは、上記複数のRDMAキューへの上記複数のQoS値の第1のマッピングに従って実行される。この方法は、上記ネットワーキング装置が、上記複数のRDMAキュー間の第1の重み付けに従って上記複数のRDMAキューから上記複数のRDMAパケットを取り出すステップをさらに含む。上記取り出された複数のRDMAパケットは、複数のパケットフローを含んでいてもよく、その場合、例は、フロー毎等コストマルチパススキームに従って、上記取り出された複数のRDMAパケットの上記複数のパケットフローをルーティングするステップをさらに含んでいてもよい。上記複数のRDMAパケットにおける各RDMAパケットは、RoCEv2パケットであってもよく、または、上記複数のRDMAパケットにおける各RDMAパケットは、オーバーレイカプセル化プロトコル(例えば、VxLAN、NVGRE、GENEVE、STTまたはMPLS)に従ってフォーマットされたレイヤ3カプセル化パケットであってもよい。
【0008】
さらなる例において、上記分配するステップは、上記複数のRDMAパケットにおける第1のRDMAパケットの上記QoSデータフィールドが第1のQoS値を有するとの判断に応答して、上記第1のRDMAパケットを上記複数のRDMAキューにおける第1のRDMAキューに格納するステップと、上記複数のRDMAパケットにおける第2のRDMAパケットの上記QoSデータフィールドが第2のQoS値を有するとの判断に応答して、上記第2のRDMAパケットを上記複数のRDMAキューにおける第2のRDMAキューに格納するステップとを含み、上記第2のQoS値は、上記第1のQoS値とは異なる。
【0009】
特定の実施形態に従って、RDMAパケットをキューイングするさらなる方法は、上記ネットワーキング装置が、制御キューから複数の制御パケットを取り出すステップも含み、上記複数の制御パケットを取り出すステップは、上記複数のRDMAパケットを取り出すステップよりも厳密な優先度を有する。この場合、上記制御キューは、上記複数のRDMAキューのいずれのキューよりも低い帯域幅を有するように構成され得る。代替的にまたは追加的には、上記複数の制御パケットは、少なくとも1つのネットワーク制御プロトコルパケット(例えば、BGPパケット)および/または少なくとも1つの輻輳通知パケット(CNPパケット)を含んでいてもよい。
【0010】
特定の実施形態に従って、ネットワーキング装置(例えば、リーフスイッチまたはスパインスイッチ)は、複数のRDMAキューと、上記複数のRDMAキューに結合され、複数のRDMAパケットを受信するように構成された処理回路とを含むように構成され得て、上記複数のRDMAパケットにおける各RDMAパケットは、クオリティオブサービス(QoS)データフィールドを含み、上記ネットワーキング装置はさらに、上記複数のRDMAキューへの複数のQoS値の第1のマッピングに従って上記複数のRDMAキューの間で上記複数のRDMAパケットを分配し、上記複数のRDMAキュー間の第1の重み付けに従って上記複数のRDMAキューから上記複数のRDMAパケットを取り出すように構成され得る。上記複数のRDMAパケットにおける各RDMAパケットについて、上記QoSデータフィールドは、上記RDMAパケットのためのサービスのクラスを示し、且つ、上記複数のQoS値の中にある値を有する。
【0011】
さらに他の実施形態において、カプセル化されたリモートダイレクトメモリアクセス(RDMA)トラフィックのクラスベースのマーキングのための技術が記載されており、この技術を使用して、特定のキューにおけるRDMAトラフィックが他のキューにおけるRDMAトラフィックに影響を及ぼさないようにネットワークファブリック全体にわたる一貫したクラスベースの分離をクラウドスケールで(例えば、レイヤ3トランスポート中に)維持することができる。特定の実施形態に従って、システムは、様々なクラスのRDMAトラフィックの移送および様々なテナントからのRDMAトラフィックの移送のための共有のファブリックを含むように実装され得て、あるRDMAネットワークインターフェイスコントローラ(NIC)から別のNICまでの共有のファブリック全体にわたる経路内の各装置は、RDMAトラフィックの様々なクラスに専用の複数のキューを含む。方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コード、命令を格納する非一時的なコンピュータ可読記憶媒体などを含む様々な本発明の実施形態が本開示に記載されている。
【0012】
特定の実施形態に従って、データネットワーキングの方法は、ネットワーキング装置が、複数のRDMAパケットを受信するステップを含む。上記複数のRDMAパケットにおける各RDMAパケットは、上記RDMAパケットのためのサービスのクラスを示すQoS値を有するクオリティオブサービス(QoS)データフィールドを含む。上記複数のRDMAパケットは、上記QoSデータフィールドが第1のQoS値を有するRDMAパケットと、上記QoSデータフィールドが上記第1のQoS値とは異なる第2のQoS値を有するRDMAパケットとを含む。上記方法は、上記複数のRDMAパケットの各々について、上記RDMAパケットをカプセル化して、複数のレイヤ3カプセル化パケットのうちの対応する1つを生成するステップも含み、上記対応するレイヤ3カプセル化パケットは、少なくとも1つの外側ヘッダを有する。上記複数のRDMAパケットの各々について、上記RDMAパケットをカプセル化するステップは、上記RDMAパケットへの上記対応するレイヤ3カプセル化パケットの少なくとも1つの外側ヘッダの追加を含む。上記複数のレイヤ3カプセル化パケットの各々について、上記レイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダのQoSデータフィールドは、上記対応するRDMAパケットの上記QoSデータフィールドの上記QoS値に基づくQoS値をとる。上記複数のレイヤ3カプセル化パケットにおける各レイヤ3カプセル化パケットについて、上記少なくとも1つの外側ヘッダは、上記対応するRDMAパケットのVLAN IDに基づく仮想ネットワーク識別フィールドを含み得る。そのような場合、上記複数のRDMAパケットは、各々が第1のVLAN IDを有するRDMAパケット(いくつかのパケットは、場合によっては、他のパケットとは異なるQoS値を有する)と、各々が上記第1のVLAN IDとは異なる第2のVLAN IDを有するRDMAパケットとを含み得る。代替的にまたは追加的には、上記複数のレイヤ3カプセル化パケットにおける少なくとも1つのレイヤ3カプセル化パケットは、第1のVLANタグと、上記第1のVLANタグとは異なる第2のVLANタグとを含んでいてもよい。
【0013】
上記複数のレイヤ3カプセル化パケットの各々について、上記カプセル化パケットの上記少なくとも1つの外側ヘッダは、4791という宛先ポート番号を有するユーザデータグラムプロトコル(UDP:User Datagram Protocol)ヘッダ(例えば、RoCEv2予約UDPポート)を含み得る。代替的にまたは追加的には、上記レイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダは、上記対応するRDMAパケットの宛先メディアアクセス制御(MAC:Media Access Control)アドレスに関連付けられた宛先IPアドレスを有するインターネットプロトコル(IP:Internet Protocol)ヘッダを含んでいてもよい。
【0014】
上記複数のRDMAパケットにおける各RDMAパケットについて、上記RDMAパケットの上記QoSデータフィールドは、上記RDMAパケットのIPヘッダのDSCPデータフィールドであり得る。この場合、上記複数のレイヤ3カプセル化パケットの各々について、上記レイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダの上記QoSデータフィールドにおける上記QoS値は、上記対応するRDMAパケットの上記QoSデータフィールドにおける上記QoS値に等しくなり得る。代替的には、上記複数のRDMAパケットにおける各RDMAパケットについて、上記RDMAパケットの上記QoSデータフィールドは、VLANタグのIEEE802.1pデータフィールドであってもよい。この場合、上記RDMAパケットをカプセル化するステップは、上記RDMAパケットの上記QoSデータフィールドの上記QoS値およびQoS値のマッピングから、上記対応するレイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダの上記QoSデータフィールドのQoS値を取得するステップと、上記得られたQoS値を上記レイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダの上記QoSデータフィールドに格納するステップとを含み得る。
【0015】
特定の実施形態に従って、データネットワーキングのさらなる方法は、上記複数のレイヤ3カプセル化パケットにおける少なくとも1つのレイヤ3カプセル化パケットの各々について、上記対応するRDMAパケットから上記レイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダに輻輳表示情報をコピーするステップも含む。代替的にまたは追加的には、上記データネットワーキングの方法は、第2の複数のレイヤ3カプセル化パケットの各々をデカプセル化して、複数のデカプセル化RDMAパケットのうちの対応する1つを取得するステップをさらに含んでいてもよい。上記複数のデカプセル化RDMAパケットのうちの少なくとも1つについて、上記デカプセル化するステップは、上記対応するレイヤ3カプセル化パケットの上記少なくとも1つの外側ヘッダから上記デカプセル化RDMAパケットに輻輳表示情報をコピーするステップを含み得る。
【0016】
特定の実施形態に従って、非一時的なコンピュータ可読メモリは、1つまたは複数のプロセッサによって実行可能な複数の命令を格納し得て、上記複数の命令は、上記1つまたは複数のプロセッサによって実行されると上記1つまたは複数のプロセッサに上記方法のうちのいずれか1つを実行させる命令を含む。
【0017】
特定の実施形態に従って、システムは、1つまたは複数のプロセッサと、上記1つまたは複数のプロセッサに結合されたメモリとを含み得る。上記メモリは、上記1つまたは複数のプロセッサによって実行可能な複数の命令を格納し得て、上記複数の命令は、上記1つまたは複数のプロセッサによって実行されると上記1つまたは複数のプロセッサに上記方法のうちのいずれか1つを実行させる命令を含む。
【0018】
上記の事項は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲および添付の図面を参照すると、より明らかになるであろう。
【図面の簡単な説明】
【0019】
図1】特定の実施形態に従って、クラウドサービスプロバイダインフラストラクチャによってホストされている仮想またはオーバーレイクラウドネットワークを示す分散環境のハイレベル図である。
図2】特定の実施形態に従って、CSPI内の物理ネットワークの物理要素を示すアーキテクチャ概略図である。
図3】特定の実施形態に従って、ホストマシンが複数のネットワーク仮想化装置(NVD:Network Virtualization Device)に接続されているCSPI内の例示的な配置を示す図である。
図4】特定の実施形態に従って、ホストマシンとマルチテナント機能をサポートするためのI/O仮想化を提供するNVDとの間の接続を示す図である。
図5】特定の実施形態に従って、CSPIによって提供された物理ネットワークを示す概略ブロック図である。
図6】特定の実施形態に従って、データネットワーキングのための分散クラウド環境の一例を示す図である。
図7A】特定の実施形態に従って、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3スイッチファブリックを介したマルチテナントソースホストマシン上のソース計算インスタンスからマルチテナント宛先ホストマシン上の宛先計算インスタンスへのRDMAデータ転送を実行するための処理を示す概略フローチャートである。
図7B】特定の実施形態に従って、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3スイッチファブリックを介したマルチテナントソースホストマシン上のソース計算インスタンスからマルチテナント宛先ホストマシン上の宛先計算インスタンスへのRDMAデータ転送を実行するための処理を示す概略フローチャートである。
図7C】特定の実施形態に従って、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3スイッチファブリックを介したマルチテナントソースホストマシン上のソース計算インスタンスからマルチテナント宛先ホストマシン上の宛先計算インスタンスへのRDMAデータ転送を実行するための処理を示す概略フローチャートである。
図8A】RoCEv2(version 2 of the RDMA over Converged Ethernet)プロトコルに従ったRDMAパケットフォーマットを示す図である。
図8B】特定の実施形態に従って、VLANタグ付きRoCEv2パケットのフォーマットを示す図である。
図8C】特定の実施形態に従って、Q-in-Qタグ付きRoCEv2パケットのフォーマットを示す図である。
図9A】インターネットプロトコル(IP)ヘッダのフォーマットを示す図である。
図9B】特定の実施形態に従って、複数のキューの実装を示す図である。
図9C】特定の実施形態に従って、複数のキューの実装を示す図である。
図10】特定の実施形態に従って、VxLANパケットのフォーマットを示す図である。
図11】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための1つのパターンを示すブロック図である。
図12】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図13】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図14】少なくとも1つの実施形態に従って、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。
図15】少なくとも1つの実施形態に従って、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0020】
詳細な説明
以下の説明において、説明の目的で、特定の詳細が特定の実施形態の完全な理解を提供するために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図面および説明は、限定的であることを意図しない。「例示的」という用語は、本開示において、「例示、事例または図示として機能する」ことを意味するために使用される。本開示において「例示的」として記載されたいかなる実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0021】
本開示は、概してネットワーキングに関し、より特定的には、レイヤ3プロトコルを使用してレイヤ3ネットワークを介してレイヤ2トラフィックを通信することを可能にする技術に関する。特定の実施形態において、本開示に記載されている技術は、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3物理ネットワークまたはスイッチファブリックを介して、マルチテナントホストマシン(すなわち、様々なテナントまたは顧客に属する計算インスタンスをホストするホストマシン)上の計算インスタンスから別のマルチテナントホストマシン上の計算インスタンスにRoCE(RDMA over Converged Ethernet)トラフィックを通信することを可能にする。顧客またはテナントは、通信が専用のレイヤ2ネットワーク上で行われるものとして経験するが、実際には、通信は、レイヤ3ルーティングプロトコルを使用して共有の(すなわち、複数の顧客またはテナント間で共有される)レイヤ3ネットワーク上で行われる。
【0022】
また、テナントを識別し得るVLAN識別情報(例えば、VLAN ID)をRoCEパケットのレイヤ2ヘッダにおいて指定する(例えば、VLAN IDは、RoCEパケットに追加される802.1Qタグに含まれる)ことを可能にし、パケットがスイッチファブリックを通過するときに、当該VLAN識別情報を、802.1Qタグ付きRoCEレイヤ2パケットに追加されるレイヤ3オーバーレイカプセル化プロトコルラッパーに含まれる情報にマッピングすることも可能にする技術が開示されている。VLAN識別情報(または、テナンシ情報)をレイヤ3カプセル化ラッパーのフィールドにマッピングすることにより、様々なテナントからのトラフィック間の区別がレイヤ3スイッチファブリック内のネットワーキング装置に見えるようになる。ネットワーキング装置は、この情報を使用して、様々な顧客またはテナントに属するトラフィックを分離することができる。
【0023】
レイヤ2RDMAパケット(例えば、RoCEパケット)に関連付けられたQoS情報を、データの転送元であるソースホストマシンから、ずっとスイッチファブリックを通って、データの転送先である宛先ホストマシンまで、エンドツーエンドで保持することを可能にする技術が開示されている。レイヤ2RoCEパケットに符号化されたQoS情報は、パケットがスイッチファブリックに入るときに、当該情報を、ホスト(例えば、イングレストップオブラップ(TOR:Top-of-Rack)スイッチ)によって送信されるトラフィックを処理する初期スイッチによって802.1Qタグ付きRoCEパケットに追加されるレイヤ3オーバーレイカプセル化プロトコルラッパーに符号化することによって、スイッチファブリック内のネットワーキング装置に見えるようになる。QoS情報をカプセル化ラッパーにマッピングする(例えば、コピーする)ことにより、スイッチファブリック内のネットワーキング装置は、各パケットに関連付けられたQoS情報に従って、レイヤ3ルーティングプロトコルを使用して、スイッチファブリックを通るRoCEトラフィックをルーティングすることができる。
【0024】
また、スイッチファブリック内のネットワーキング装置のうちのいずれかがパケット毎に輻輳を知らせることを可能にする技術が開示されている。この輻輳情報は、パケットがソースホストマシンに接続されたTORスイッチ(「イングレスTORスイッチ」)から宛先ホストマシンに接続されたTORスイッチ(「エグレスTORスイッチ」)へスイッチファブリックを通過するときに、パケットに保存される。宛先ホストマシンに接続されたTORスイッチにおいて、レイヤ3カプセル化ラッパーからの輻輳情報は、RoCEパケットヘッダに(例えば、RoCEパケットのIPヘッダ内のECNビットに)変換(例えば、コピー)され、そのため、保存されて宛先ホストマシンが利用できるようにされる。次いで、宛先ホストマシンは、(例えば、ソースホストマシンが例えばその送信速度をそれに応じて減少させることができるように輻輳をソースホストマシンに表示するために)輻輳通知パケットを送信することによって輻輳情報に応答することができる。
【0025】
典型的なコンピューティング環境では、2つのコンピュータの間でデータがやりとりされているとき、転送中のデータは、それらのコンピュータによって実行されるネットワークプロトコルスタックソフトウェアによって複数回コピーされる。これは、マルチコピー問題と称される。さらに、コンピュータのOSカーネルおよびCPUがこれらの通信に関与する。なぜなら、ネットワークスタック(例えば、TCPスタック)は、カーネルに固有であるからである。これは、データ転送における大幅なレイテンシ、すなわちいくつかのアプリケーションが許容できないレイテンシを生じさせることになる。
【0026】
リモートダイレクトメモリアクセス(RDMA)は、コンピュータのCPU(CPUバイパス)またはオペレーティングシステム(OSカーネルバイパス)に関与することなくコンピュータまたはサーバのアプリケーションメモリ間のデータの移動を可能にするダイレクトメモリアクセス機構である。この機構は、高いスループット、高速のデータ転送速度、および低レイテンシのネットワーキングを可能にする。RDMAは、コンピュータ上のネットワークアダプタまたはネットワークインターフェイスカード(NIC)がワイヤからコンピュータのアプリケーションメモリに直接データを転送すること、またはコンピュータのアプリケーションメモリからワイヤに直接データを転送することを可能にすることによって、ゼロコピーネットワーキングをサポートして、アプリケーションメモリとコンピュータのオペレーティングシステム内のデータバッファとの間でデータをコピーすることを不要にする。そのような転送は、CPUまたはキャッシュが行う作業をほとんど必要とせず、コンピュータのコンテキストスイッチを回避し、他のシステムオペレーションと並行して転送を継続することができる。RDMAは、低レイテンシを必要とする高性能コンピューティング(HPC:High-Performance Computing)およびアプリケーションにとって非常に有用である。
【0027】
RoCE(RDMA over Converged Ethernet)は、ロスレスなイーサネットネットワークを介したリモートダイレクトメモリアクセス(RDMA)を可能にするネットワークプロトコルである。RoCEは、イーサネットを介してインフィニバンド(IB)トランスポートパケットをカプセル化することによってこれを可能にする。一般的に言って、RoCEは、専用のRDMAキューおよび専用のVLAN、ならびにレイヤ2ネットワークの使用を含む。しかしながら、レイヤ2ネットワークは、拡張できず、あまり高性能ではない。なぜなら、レイヤ2ネットワークは、より拡張可能であって高性能のレイヤ3ネットワークに存在する重要な特性および特徴が無いからである。例えば、レイヤ2ネットワークは、ネットワークファブリック内のデータプロデューサ(例えば、ソース)とデータコンシューマ(例えば、宛先)との間の複数の経路をサポートせず、レイヤ2ループに関する問題を有しており、レイヤ2フレームのフラッディングに関する問題を有しており、アドレススキームの中に階層に対するサポートを有しておらず(例えば、レイヤ2は、CIDR、接頭辞およびサブネットの概念を有しておらず)、大量のブロードキャストトラフィックに関する問題を有しており、ネットワーク接続の広告を可能にする制御プロトコルを有しておらず(例えば、レイヤ2は、BGP、RIPまたはIS-ISと同様のプロトコルを有しておらず)、トラブルシューティングプロトコルおよびツールを有していない(例えば、レイヤ2は、ICMPまたはTracerouteなどのツールを有していない)、などである。
【0028】
現在、2つのバージョンのRoCEプロトコル、すなわちRoCEv1およびRoCEv2がある。「ルーティング可能なRoCE」とも呼ばれるRoCEv2は、「インフィニバンド(登録商標)アーキテクチャ仕様リリース1.2.1 付属書類A17:RoCEv2」(インフィニバンド・トレード・アソシエーション、オレゴン州ビーバートン、2014年9月2日)という文書に定義されている。RoCEv2は、ユーザデータグラムプロトコル(UDP)をトランスポートプロトコルとして使用する。残念ながら、UDPは、TCPが提供する高度な輻輳制御および輻輳制御機構が無い。その結果、RoCEv2には以下のような問題がある。すなわち、ネットワークライブロック(例えば、プロセスが状態を変化させており、フレームが移動するが、フレームが前に進まないこと)、ネットワークデッドロック(例えば、周期的なリソース依存により、プロセスが待機状態にとどまったままであること)、ヘッドオブライン(HOL:Head-of-Line)ブロッキング(例えば、キューの先頭のパケットを転送できないことにより、その後ろのパケットが停滞すること)、犠牲フロー(例えば、輻輳スイッチを介した非輻輳ノード間のフロー)、不公平(例えば、高帯域幅フローが他のフローのレイテンシを増加させること)、およびロスレストラフィック(RDMAなど)によるバッファ消費に起因するロッシートラフィック(TCPなど)に対する悪影響のような問題である。
【0029】
また、一般的に言って、成功裏のRoCEv2実装は、RDMAトラフィックに専用のネットワーク経路およびVLANを必要とする。さらに、プロトコルとしてのRoCEv2は、輻輳管理の何らかの様相を実現するために、レイヤ2優先度フロー制御(PFC:Priority Flow Control)、明示的輻輳通知(ECN:Explicit Congestion Notification)、またはPFCとECNとの組み合わせに依拠するが、これらのスキームは、実際には不十分であることが多い。PFCは、トラフィックの独立クラスを8個までサポートし、受信機が、PAUSEフレームを送信機に送信することによってトラフィックの所定のクラスのフローを一時停止させるように送信機に要求することを可能にする。残念ながら、PFCは、PAUSEフレームストーム(例えば、過剰な量のPAUSEフレームが、トラフィックソースへの経路全体に沿った所定のクラスの全トラフィックに影響を及ぼすこと)を受けやすく、ネットワークの完全なデッドロックにつながる可能性がある。さらに、PFC PAUSEフレームは、マルチテナント動作を許可しない。なぜなら、PAUSEフレームは、送信機に、所定のクラスの全トラフィックの送信を一時停止させ、PFCは最大8個のトラフィッククラスを提供するが、テナントの数は8個よりも何倍も大きくなる場合があるからである。
【0030】
本開示に開示されている実施形態は、マルチテナンシRoCE(RDMA over Converged Ethernet)をパブリッククラウドのスケールで実装するためのシステム、方法および装置を含む。本開示に開示されているそのような実施形態は、ヘッドオブラインブロッキングを回避するとともに、RDMAアプリケーションのための高性能で、低レイテンシの、ロスレスの動作を維持しながら、パブリッククラウドにおいてマルチテナントRoCEトラフィックをサポートするための技術を含む。また、同時に、開示されている技術は、トランスポートプロトコルとしてTCP/IPまたはUDPを使用する通常の非RDMAアプリケーションをサポートするように実装することができる。これらの技術は、例えば25G、40G、100G、400Gおよび800Gを含む全ての標準速度でRoCE対応のイーサネットネットワークインターフェイスに適用することができる。
【0031】
本開示に開示されているような、クラウド内でRoCEを拡張するための技術は、以下の局面のうちの1つ以上を含み得る。すなわち、トラフィックのためのVLANまたはVLANのセットを各顧客に提供すること、ホストが802.1q-in-802.1qを使用して顧客間のトラフィックおよび所与の顧客の様々なアプリケーションにまたがるトラフィックを分離することを可能にすること(例えば、パケットは2つの802.1Qタグと、パブリックVLANタグと、プライベートVLANタグとを有し得る)、各VLANをToR上のVxLAN VNIにマッピングして、各顧客およびそれらのVLANの各々に固有のVxLAN VNIを割り当てること、VxLANオーバーレイを使用してレイヤ3ネットワークの上の顧客のレイヤ2トラフィックを運ぶこと、EVPN(イーサネットVPN)を使用して、下にあるレイヤ3ネットワーク(基板)全体にわたるMACアドレス情報を運ぶこと、である。
【0032】
本開示に記載されている実施形態は、各々が複数のトラフィッククラスを有する複数のRDMAアプリケーション(例えば、クラウドサービス、高性能コンピューティング(HPC)および/またはデータベースアプリケーション)をサポートするように実装され得る。そのようなサポートは、ミッションクリティカルなトラフィックを有する個別のトラフィッククラスが専用のRDMAキューセットに割り当てられるネットワークQoSトラフィッククラスの概念を使用してトラフィックを隔離することによって提供され得る。このRDMAキューを使用した隔離は、特定のキュー(例えば、特定のキューの輻輳)が別のキューに影響を及ぼさないことを保証することができる。そのような技術を使用して、Closファブリックにおけるキュー構成がエンド顧客ホスト(クラウド顧客)にとって透過的であるように複数のRDMAテナント(「パブリッククラウド顧客」としても知られている)をサポートすることができる。ネットワークは、顧客ホストから受信されたDSCPマーキングをネットワークキューの正しい設定にマッピングするように構成され得て、これにより、ホストQoSポリシー(構成)がファブリックQoSポリシー(構成)から切り離される。顧客は、DSCPトラフィッククラス(DSCPコードポイントとも呼ばれる)および/または802.1qトラフィッククラスを使用して性能期待値を知らせることができる。これらのDSCPおよび802.1qクラスは、ClosファブリックQoS構成からのホストQoS構成の切り離しを提供するようにClosネットワーク内のQoSキューにマッピングされる。
【0033】
Closファブリックを介してQoSキュー情報およびECNマーキングを伝えるために、複数のネットワークドメインにまたがって、例えばレイヤ2ポートからホストに、レイヤ3ポートから別のスイッチに、またはVxLAN仮想レイヤ2ポートから別のスイッチ上の別のVxLANインターフェイスに、QoSキュー情報を運ぶことを保証することが望ましい場合がある。そのようなQoSキュー情報のクロスドメイン移送は、本開示に記載されているようなこれらの様々なネットワークドメインにまたがってQoSマーキングおよびECNビットマーキングを運んで実行することを含み得る。
【0034】
仮想ネットワークアーキテクチャの例
クラウドサービスという用語は、一般的に、クラウドサービスプロバイダ(CSP:Cloud Services Provider)が、システムおよびインフラストラクチャ(クラウドインフラストラクチャ)を用いて、ユーザまたは顧客がオンデマンドで(例えば、サブスクリプションモデルを介して)利用できるサービスを指す。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムから離れている。したがって、顧客は、サービス用のハードウェアおよびソフトウェア資源を別途購入することなく、CSPによって提供されるクラウドサービスを利用することができる。クラウドサービスは、サービスを提供するために使用されるインフラストラクチャの調達に顧客が投資する必要がなく、アプリケーションおよび計算リソースへの容易且つ拡張可能なアクセスを加入している顧客に提供するように設計されている。
【0035】
いくつかのクラウドサービスプロバイダは、様々な種類のクラウドサービスを提供する。クラウドサービスは、SaaS(Software-as-a-Service)、PaaS(Platform-as-a-Service)、IaaS(Infrastructure-as-a-Service)などの様々な異なる種類またはモデルを含む。
【0036】
顧客は、CSPによって提供される1つまたは複数のクラウドサービスに加入することができる。顧客は、個人、組織、企業などの任意のエンティティであってもよい。顧客がCSPによって提供されるサービスに加入または登録すると、その顧客のテナントまたはアカウントが作成される。その後、顧客は、このアカウントを介して、アカウントに関連する1つまたは複数の加入済みクラウドリソースにアクセスすることができる。
【0037】
上述したように、IaaS(Infrastructure as a Service)は、1つの特定種類のクラウドコンピューティングサービスである。IaaSモデルにおいて、CSPは、顧客が自身のカスタマイズ可能なネットワークを構築し、顧客リソースを展開するために使用できるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャまたはCSPIと呼ばれる)を提供する。したがって、顧客のリソースおよびネットワークは、CSPによって提供されたインフラストラクチャによって分散環境にホストされる。これは、顧客によって提供されるインフラストラクチャが顧客のリソースおよびネットワークをホストする従来のコンピューティングとは異なる。
【0038】
CSPIは、基板ネットワークまたはアンダーレイネットワークとも呼ばれる物理ネットワークを形成する、様々なホストマシン、メモリリソース、およびネットワークリソースを含む相互接続された高性能の計算リソースを含んでもよい。CSPIのリソースは、1つまたは複数の地理的な地域にわたって地理的に分散されている1つまたは複数のデータセンタに分散されてもよい。仮想化ソフトウェアは、これらの物理リソースによって実行され、仮想化分散環境を提供することができる。仮想化は、物理ネットワーク上に(ソフトウェアベースネットワーク、ソフトウェア定義ネットワーク、または仮想ネットワークとも呼ばれる)オーバーレイネットワークを作成する。CSPI物理ネットワークは、物理ネットワークの上に1つまたは複数のオーバーレイまたは仮想ネットワークを作成するための基礎を提供する。仮想ネットワークまたはオーバーレイネットワークは、1つまたは複数の仮想クラウドネットワーク(VCN:Virtual Cloud Network)を含み得る。仮想ネットワークは、ソフトウェア仮想化技術(例えば、ハイパーバイザ、ネットワーク仮想化装置(NVD)(例えば、スマートNIC)によって実行される機能、トップオブラック(TOR)スイッチ、NVDによって実行される1つまたは複数の機能を実装するスマートTOR、および他のメカニズム)を用いて実装され、物理ネットワークの上で実行できるネットワーク抽象化層を作成する。仮想ネットワークは、ピアツーピアネットワーク、IPネットワークなどの様々な形態をとることができる。仮想ネットワークは、典型的には、レイヤ3IPネットワークまたはレイヤ2VLANのいずれかである。このような仮想ネットワークまたはオーバーレイネットワークは、しばしば仮想レイヤ3ネットワークまたはオーバーレイレイヤ3ネットワークと呼ばれる。仮想ネットワークのために開発されたプロトコルの例は、IP-in-IP(またはGRE(Generic Routing Encapsulation))、仮想拡張可能LAN(VXLAN-IETF RFC7348)、仮想プライベートネットワーク(VPN:Virtual Private Network)(例えば、MPLSレイヤ3仮想プライベートネットワーク(RFC4364))、VMware NSX、GENEVE(Generic Network Virtualization Encapsulation)などを含む。
【0039】
IaaSの場合、CSPによって提供されたインフラストラクチャ(CSPI)は、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成されてもよい。IaaSモデルにおいて、クラウドコンピューティングサービスプロバイダは、インフラストラクチャ要素(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、それらのインフラストラクチャ要素に付随する様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を提供することができる。これらのサービスがポリシー駆動型であるため、IaaSユーザは、負荷分散を駆動するためのポリシーを実装することによって、アプリケーションの可用性および性能を維持することができる。CSPIは、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。これによって、顧客は、可用性の高いホスト型分散環境で幅広いアプリケーションおよびサービスを構築し、実行することができる。CSPIは、顧客オンプレミスネットワークなどの様々なネットワーク拠点から安全にアクセスできる柔軟な仮想ネットワーク上で高性能の計算リソースおよび能力ならびに記憶容量を提供する。顧客がCSPによって提供されたIaaSサービスに加入または登録すると、その顧客のために作成されたテナンシは、CSPIから安全に分離されたパーティションとなり、顧客は、クラウドリソースを作成、整理、管理することができる。
【0040】
顧客は、CSPIによって提供された計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自の仮想ネットワークを構築することができる。これらの仮想ネットワーク上に、計算インスタンスなどの1つまたは複数の顧客リソースまたはワークロードを展開することができる。例えば、顧客は、CSPIによって提供されたリソースを使用して、仮想クラウドネットワーク(VCN)と呼ばれる1つまたは複数のカスタマイズ可能なプライベート仮想ネットワークを構築することができる。顧客は、顧客VCN上で1つまたは複数の顧客リソース、例えば計算インスタンスを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどであってもよい。したがって、CSPIは、顧客が可用性の高い仮想ホスト環境において様々なアプリケーションおよびサービスを構築および実行することを可能にするインフラストラクチャおよび一連の相補的なクラウドサービスを提供する。顧客は、CSPIによって提供された基礎的な物理リソースを管理または制御しないが、オペレーティングシステム、記憶、および展開されたアプリケーションを制御し、場合によっては一部のネットワーキングコンポーネント(例えば、ファイアウォール)を限定的に制御する。
【0041】
CSPは、顧客およびネットワーク管理者がCSPIリソースを使用してクラウドに展開されたリソースを構成、アクセス、および管理することを可能にするコンソールを提供することができる。特定の実施形態において、コンソールは、CSPIを利用および管理するために使用することができるウェブベースのユーザインターフェイスを提供する。いくつかの実施形態において、コンソールは、CSPによって提供されたウェブベースのアプリケーションである。
【0042】
CSPIは、シングルテナンシアーキテクチャまたはマルチテナンシアーキテクチャをサポートすることができる。シングルテナンシアーキテクチャにおいて、ソフトウェア(例えば、アプリケーション、データベース)またはハードウェア要素(例えば、ホストマシンまたはサーバ)は、単一の顧客またはテナントにサービスを提供する。マルチテナンシアーキテクチャにおいて、ソフトウェアまたはハードウェア要素は、複数の顧客またはテナントにサービスを提供する。したがって、マルチテナンシアーキテクチャにおいて、CSPIリソースは、複数の顧客またはテナントの間で共有される。マルチテナンシ環境において、各テナントのデータが分離され、他のテナントから見えないようにするために、CSPIには予防措置および保護措置が講じられる。
【0043】
物理ネットワークにおいて、ネットワークエンドポイント(エンドポイント)は、物理ネットワークに接続され、接続されているネットワークと双方向に通信するコンピューティング装置またはシステムを指す。物理ネットワークのネットワークエンドポイントは、ローカルエリアネットワーク(LAN:Local Area Network)、ワイドエリアネットワーク(WAN:Wide Area Network)、または他の種類の物理ネットワークに接続されてもよい。物理ネットワークの従来のエンドポイントの例は、モデム、ハブ、ブリッジ、スイッチ、ルータ、および他のネットワーキング装置、物理コンピュータ(またはホストマシン)などを含む。物理ネットワークの各物理装置は、当該装置と通信するために使用できる固定ネットワークアドレスを有する。この固定ネットワークアドレスは、レイヤ2アドレス(例えば、MACアドレス)、固定レイヤ3アドレス(例えば、IPアドレス)などであってもよい。仮想化環境または仮想ネットワークにおいて、エンドポイントは、物理ネットワークの要素によってホストされている(例えば、物理ホストマシンによってホストされている)仮想マシンなどの様々な仮想エンドポイントを含むことができる。仮想ネットワークのこれらのエンドポイントは、オーバーレイレイヤ2アドレス(例えば、オーバーレイMACアドレス)およびオーバーレイレイヤ3アドレス(例えば、オーバーレイIPアドレス)などのオーバーレイアドレスによってアドレス指定される。ネットワークオーバーレイは、ネットワーク管理者がソフトウェア管理を用いて(例えば、仮想ネットワークの制御プレーンを実装するソフトウェアを介して)ネットワークエンドポイントに関連付けられたオーバーレイアドレスを移動できるようにすることによって柔軟性を実現する。したがって、物理ネットワークとは異なり、仮想ネットワークにおいて、ネットワーク管理ソフトウェアを使用して、オーバーレイアドレス(例えば、オーバーレイIPアドレス)を1つのエンドポイントから別のエンドポイントに移動することができる。仮想ネットワークが物理ネットワーク上に構築されているため、仮想ネットワークおよび基礎物理ネットワークの両方は、仮想ネットワークの要素間の通信に関与する。このような通信を容易にするために、CSPIの各要素は、仮想ネットワークのオーバーレイアドレスを基板ネットワークの実際の物理アドレスにまたは基板ネットワークの実際の物理アドレスを仮想ネットワークのオーバーレイアドレスにマッピングするマッピングを学習および記憶するように構成されている。これらのマッピングは、通信を容易にするために使用される。仮想ネットワークのルーティングを容易にするために、顧客トラフィックは、カプセル化される。
【0044】
したがって、物理アドレス(例えば、物理IPアドレス)は、物理ネットワークの要素に関連付けられ、オーバーレイアドレス(例えば、オーバーレイIPアドレス)は、仮想ネットワークのエンティティに関連付けられる。物理IPアドレスとオーバーレイIPアドレスは、いずれも実IPアドレスである。これらは、仮想IPアドレスとは別物であり、仮想IPアドレスは、複数の実IPアドレスにマッピングされる。仮想IPアドレスは、仮想IPアドレスと複数の実IPアドレスとの間の1対多マッピングを提供する。
【0045】
クラウドインフラストラクチャまたはCSPIは、世界中の1つまたは複数の地域の1つまたは複数のデータセンタにおいて物理的にホストされている。CSPIは、物理ネットワークまたは基板ネットワークの要素と、物理ネットワーク要素上に構築された仮想ネットワークの仮想化要素(例えば、仮想ネットワーク、計算インスタンス、仮想マシン)とを含んでもよい。特定の実施形態において、CSPIは、レルム(realm)、地域(region)、および利用可能なドメイン(domain)において編成およびホストされている。地域は、典型的には、1つまたは複数のデータセンタを含む局所的な地理領域である。地域は、一般的に互いに独立しており、例えば、国または大陸を跨ぐ広大な距離によって分離されてもよい。例えば、第1の地域は、オーストラリアにあってもよく、別の地域は、日本にあってもよく、さらに別の地域は、インドにあってもよい。CSPIリソースは、各地域が独立したCSPIリソースのサブセットを有するようにこれらの地域間で分割される。各地域は、一連のコアインフラストラクチャサービスおよびリソース、例えば、計算リソース(例えば、ベアメタルサーバ、仮想マシン、コンテナおよび関連インフラストラクチャ)、記憶リソース(例えば、ブロックボリューム記憶、ファイル記憶、オブジェクト記憶、アーカイブ記憶)、ネットワーキングリソース(例えば、仮想クラウドネットワーク(VCN)、負荷分散リソース、オンプレミスネットワークへの接続)、データベースリソース、エッジネットワーキングリソース(例えば、DNS)、アクセス管理、および監視リソースなどを提供することができる。各地域は、一般的に、当該地域をレルム内の他の地域に接続するための複数の経路を持つ。
【0046】
一般的に、アプリケーションは、近くのリソースを使用する場合に遠くのリソースを使用することよりも速いため、最も多く使用される地域に展開される(すなわち、その地域に関連するインフラストラクチャ上に展開される)。また、アプリケーションは、大規模な気象システムまたは地震などの地域全体のイベントのリスクを軽減するための冗長性、法的管轄、税金ドメイン、および他のビジネスまたは社会的基準に対する様々な要件を満たすための冗長性など、様々な理由で異なる地域に展開されてもよい。
【0047】
地域内のデータセンタは、さらに編成され、利用可能なドメイン(availability domain:AD)に細分化されてもよい。利用可能なドメインは、ある地域に配置された1つまたは複数のデータセンタに対応してもよい。地域は、1つまたは複数の利用可能なドメインによって構成されてもよい。このような分散環境において、CSPIリソースは、仮想クラウドネットワーク(VCN)などの地域に固有なものまたは計算インスタンスなどの利用可能なドメインに固有なものである。
【0048】
1つの地域内のADは、フォールトトレラント(fault tolerant)になるように互いに分離され、同時に故障する可能性が非常に低くなるように構成されている。これは、1つの地域内の1つのADの障害が同じ地域内の他のADの可用性に影響を与えることが殆どないように、ネットワーキング、物理ケーブル、ケーブル経路、ケーブル入口などの重要なインフラストラクチャリソースを共有しないように、ADを構成することによって達成される。同じ地域内のADを低遅延広帯域のネットワークで互いに接続することによって、他のネットワーク(例えば、インターネット、顧客オンプレミスネットワーク)への高可用性接続を提供し、複数のADにおいて高可用性および災害復旧の両方のための複製システムを構築することができる。クラウドサービスは、複数のADを利用して、高可用性を確保すると共に、リソースの障害から保護する。IaaSプロバイダによって提供されたインフラストラクチャが成長するにつれて、追加の容量と共により多くの地域およびADを追加してもよい。利用可能なドメイン間のトラフィックは、通常、暗号化される。
【0049】
特定の実施形態において、地域は、レルムにグループ化される。レルムは、地域の論理集合である。レルムは、互いに隔離されており、いかなるデータを共有しない。同じレルム内の地域は、互いに通信することができるが、異なるレルム内の地域は、通信することができない。CSPの顧客のテナンシまたはアカウントは、単一のレルムに存在し、その単一のレルムに属する1つまたは複数の地域を跨ることができる。典型的には、顧客がIaaSサービスに加入すると、レルム内の顧客指定地域(「ホーム」地域と呼ばれる)に、その顧客のテナンシまたはアカウントが作成される。顧客は、顧客のテナンシをレルム内の1つまたは複数の他の地域に拡張することができる。顧客は、顧客のテナンシが存在するレルム内に存在していない地域にアクセスすることができない。
【0050】
IaaSプロバイダは、複数のレルムを提供することができ、各レルムは、特定の組の顧客またはユーザに対応する。例えば、商用レルムは、商用顧客のために提供されてもよい。別の例として、レルムは、特定の国のためにまたはその国の顧客のために提供されてもよい。さらに別の例として、政府用レルムは、例えば政府のために提供されてもよい。例えば、政府用レルムは、特定の政府のために作成されてもよく、商用レルムよりも高いセキュリティレベルを有してもよい。例えば、オラクル(登録商標)クラウドインフラストラクチャ(OCI)は、現在、商用領域向けのレルムと、政府クラウド領域向けの2つのレルム(例えば、FedRAMP認可およびIL5認可)とを提供する。
【0051】
特定の実施形態において、ADは、1つまたは複数の障害ドメイン(fault domain)に細分化することができる。障害ドメインは、反親和性(anti-affinity)を提供するために、AD内のインフラストラクチャリソースをグループ化したものである。障害ドメインは、計算インスタンスを分散することができる。これによって、計算インスタンスは、1つのAD内の同じ物理ハードウェア上に配置されない。これは、反親和性として知られている。障害ドメインは、1つの障害点を共有するハードウェア要素(コンピュータ、スイッチなど)の集合を指す。計算プールは、障害ドメインに論理的に分割される。このため、1つの障害ドメインに影響を与えるハードウェア障害または計算ハードウェア保守イベントは、他の障害ドメインのインスタンスに影響を与えない。実施形態によっては、各ADの障害ドメインの数は、異なってもよい。例えば、特定の実施形態において、各ADは、3つの障害ドメインを含む。障害ドメインは、AD内の論理データセンタとして機能する。
【0052】
顧客がIaaSサービスに加入すると、CSPIからのリソースは、顧客にプロビジョニングされ、顧客のテナンシに関連付けられる。顧客は、これらのプロビジョニングされたリソースを使用して、プライベートネットワークを構築し、これらのネットワーク上にリソースを展開することができる。CSPIによってクラウド上でホストされている顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、顧客用に割り当てられたCSPIリソースを使用して、1つまたは複数の仮想クラウドネットワーク(VCN)を構成することができる。VCNとは、仮想またはソフトウェア定義のプライベートネットワークである。顧客のVCNに配備された顧客リソースは、計算インスタンス(例えば、仮想マシン、ベアメタルインスタンス)および他のリソースを含むことができる。これらの計算インスタンスは、アプリケーション、ロードバランサ、データベースなどの様々な顧客作業負荷を表してもよい。VCN上に配備された計算インスタンスは、インターネットなどのパブリックネットワークを介して公的にアクセス可能なエンドポイント(パブリックエンドポイント)と通信することができ、同じVCNまたは他のVCN(例えば、顧客の他のVCN、または顧客に属さないVCN)内の他のインスタンスと通信することができ、顧客オンプレミスデータセンタまたはネットワークと通信することができ、サービスエンドポイントと通信することができ、および他の種類のエンドポイントと通信することができる。
【0053】
CSPは、CSPIを用いて様々なサービスを提供することができる。場合によっては、CSPIの顧客自身は、サービスプロバイダのように振る舞い、CSPIリソースを使用してサービスを提供することができる。サービスプロバイダは、識別情報(例えば、IPアドレス、DNS名およびポート)によって特徴付けられるサービスエンドポイントを公開することができる。顧客のリソース(例えば、計算インスタンス)は、サービスによって公開されたその特定のサービスのサービスエンドポイントにアクセスすることによって、特定のサービスを消費することができる。これらのサービスエンドポイントは、一般的に、ユーザがエンドポイントに関連付けられたパブリックIPアドレスを使用して、インターネットなどのパブリック通信ネットワークを介して公的にアクセス可能なエンドポイントである。公的にアクセス可能なネットワークエンドポイントは、パブリックエンドポイントと呼ばれることもある。
【0054】
特定の実施形態において、サービスプロバイダは、(サービスエンドポイントと呼ばれることもある)サービスのエンドポイントを介してサービスを公開することができる。サービスの顧客は、このサービスエンドポイントを使用してサービスにアクセスすることができる。特定の実施形態において、サービスのために提供されたサービスエンドポイントは、そのサービスを消費しようとする複数の顧客によってアクセスすることができる。他の実装形態において、専用のサービスエンドポイントを顧客に提供してもよい。したがって、その顧客のみは、その専用サービスエンドポイントを使用してサービスにアクセスすることができる。
【0055】
特定の実施形態において、VCNは、作成されると、そのVCNに割り当てられたプライベートオーバーレイIPアドレス範囲(例えば、10.0/16)であるプライベートオーバーレイクラスレスドメイン間ルーティング(Classless Inter-Domain Routing:CIDR)アドレス空間に関連付けられる。VCNは、関連するサブネット、ルートテーブル、およびゲートウェイを含む。VCNは、単一の地域内に存在するが、地域の1つ以上または全ての利用可能なドメインに拡張することができる。ゲートウェイは、VCN用に構成され、VCNとVCN外部の1つまたは複数のエンドポイントとの間のトラフィック通信を可能にする仮想インターフェイスである。VCNの1つまたは複数の異なる種類のゲートウェイを構成することによって、異なる種類のエンドポイント間の通信を可能にすることができる。
【0056】
VCNは、1つまたは複数のサブネットなどの1つまたは複数のサブネットワークに細分化されてもよい。したがって、サブネットは、VCN内で作成され得る構成単位または区画である。VCNは、1つまたは複数のサブネットを持つことができる。VCN内の各サブネットは、当該VCN内の他のサブネットと重複せず、当該VCNのアドレス空間のアドレス空間サブセットを表すオーバーレイIPアドレス(例えば、10.0.0.0/24および10.0.1.0/24)の連続範囲に関連付けられる。
【0057】
各計算インスタンスは、仮想ネットワークインターフェイスカード(VNIC:Virtual Network Interface Card)に関連付けられる。これによって、各計算インスタンスは、VCNのサブネットに参加することができる。VNICは、物理ネットワークインターフェイスカード(NIC)の論理表現である。一般的に、VNICは、エンティティ(例えば、計算インスタンス、サービス)と仮想ネットワークとの間のインターフェイスである。VNICは、サブネットに存在し、1つまたは複数の関連するIPアドレスと、関連するセキュリティルールまたはポリシーとを有する。VNICは、スイッチ上のレイヤ2ポートに相当する。VNICは、計算インスタンスと、VCN内のサブネットとに接続されている。計算インスタンスに関連付けられたVNICは、計算インスタンスがVCNのサブネットの一部であることを可能にし、計算インスタンスが、計算インスタンスと同じサブネット上にあるエンドポイントと、VCN内の異なるサブネット内のエンドポイントと、またはVCN外部のエンドポイントと通信する(例えば、パケットを送信および受信する)ことを可能にする。したがって、計算インスタンスに関連するVNICは、計算インスタンスがVCNの内部および外部のエンドポイントとどのように接続しているかを判断する。計算インスタンスのVNICは、計算インスタンスが作成され、VCN内のサブネットに追加されるときに作成され、その計算インスタンスに関連付けられる。サブネットは、計算インスタンスのセットからなる場合、計算インスタンスのセットに対応するVNICを含み、各VNICは、コンピュータインスタンスのセット内の計算インスタンスに接続されている。
【0058】
計算インスタンスに関連する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アドレスの連続範囲からのアドレスである。
【0059】
特定の実施形態において、必要に応じて、計算インスタンスには、プライベートオーバーレイIPアドレスに加えて、追加のオーバーレイIPアドレス、例えば、パブリックサブネットの場合に1つまたは複数のパブリックIPアドレスを割り当てることができる。これらの複数のアドレスは、同じVNIC、または計算インスタンスに関連付けられた複数のVNICに割り当てられる。しかしながら、各インスタンスは、インスタンス起動時に作成され、インスタンスに割り当てられたオーバーレイプライベートIPアドレスに関連付けられたプライマリVNICを有する。このプライマリVNICは、削除することができない。セカンダリVNICと呼ばれる追加のVNICは、プライマリVNICと同じ利用可能なドメイン内の既存のインスタンスに追加することができる。全てのVNICは、インスタンスと同じ利用可能なドメインにある。セカンダリVNICは、プライマリVNICと同じVCNのサブネットにあってもよく、または同じVCNまたは異なるVCNの異なるサブネットにあってもよい。
【0060】
計算インスタンスは、パブリックサブネットにある場合、オプションでパブリックIPアドレスを割り当てられることができる。サブネットを作成するときに、当該サブネットをパブリックサブネットまたはプライベートサブネットのいずれかとして指定することができる。プライベートサブネットとは、当該サブネット内のリソース(例えば、計算インスタンス)および関連するVNICがパブリックオーバーレイIPアドレスを持つことができないことを意味する。パブリックサブネットとは、サブネット内のリソースおよび関連するVNICがパブリックIPアドレスを持つことができることを意味する。顧客は、地域またはレルム内の単一の利用可能なドメインまたは複数の利用可能なドメインにわたって存在するサブネットを指定することができる。
【0061】
上述したように、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アドレスを有する。
【0062】
いくつかの他の実施形態において、VCN内の各サブネットは、VRに関連付けられた保留またはデフォルトIPアドレスを使用してサブネットによってアドレス指定可能な、それ自身に関連するVRを有してもよい。保留またはデフォルトIPアドレスは、例えば、そのサブネットに関連付けられたIPアドレスの範囲からの第1のIPアドレスであってもよい。サブネット内のVNICは、このデフォルトまたは保留IPアドレスを使用して、サブネットに関連付けられたVRと通信(例えば、パケットを送信および受信)することができる。このような実施形態において、VRは、そのサブネットのイングレス/エグレスポイントである。VCN内のサブネットに関連付けられたVRは、VCN内の他のサブネットに関連付けられた他のVRと通信することができる。また、VRは、VCNに関連付けられたゲートウェイと通信することができる。サブネットのVR機能は、サブネット内のVNICのVNIC機能を実行する1つまたは複数のNVD上で実行され、またはそれによって実行される。
【0063】
ルートテーブル、セキュリティルール、およびDHCPオプションは、VCNのために構成されてもよい。ルートテーブルは、VCNの仮想ルートテーブルであり、ゲートウェイまたは特別に構成されたインスタンスを経由して、トラフィックをVCN内部のサブネットからVCN外部の宛先にルーティングするためのルールを含む。VCNとの間でパケットの転送/ルーティングを制御するために、VCNのルートテーブルをカスタマイズすることができる。DHCPオプションは、インスタンスの起動時にインスタンスに自動的に提供される構成情報を指す。
【0064】
VCNのために構成されたセキュリティルールは、VCNのオーバーレイファイアウォールルールを表す。セキュリティルールは、イングレスルールおよびエグレスルールを含むことができ、(例えば、プロトコルおよびポートに基づいて)VCN内のインスタンスに出入りすることを許可されるトラフィックの種類を指定することができる。顧客は、特定の規則をステートフルまたはステートレスにするかを選択することができる。例えば、顧客は、ソースCIDR0.0.0.0/0および宛先TCPポート22を含むステートフルイングレスルールを設定することによって、任意の場所から1組のインスタンスへの着信SSHトラフィックを許可することができる。セキュリティルールは、ネットワークセキュリティグループまたはセキュリティリストを使用して実装されてもよい。ネットワークセキュリティグループは、そのグループ内のリソースのみに適用されるセキュリティルールのセットからなる。一方、セキュリティリストは、そのセキュリティリストを使用するサブネット内の全てのリソースに適用されるルールを含む。VCNは、デフォルトセキュリティルールとデフォルトセキュリティリストを含んでもよい。VCNのために構成されたDHCPオプションは、VCN内のインスタンスが起動するときに自動的に提供される構成情報を提供する。
【0065】
特定の実施形態において、VCNの構成情報は、VCN制御プレーンによって決定され、記憶される。VCNの構成情報は、例えば、VCNに関連するアドレス範囲、VCN内のサブネットおよび関連情報、VCNに関連する1つまたは複数のVR、VCN内の計算インスタンスおよび関連VNIC、VCNに関連する種々の仮想化ネットワーク機能(例えば、VNIC、VR、ゲートウェイ)を実行するNVD、VCNの状態情報、および他のVCN関連情報を含んでもよい。特定の実施形態において、VCN配信サービスは、VCN制御プレーンによって記憶された構成情報またはその一部をNVDに公開する。配信された情報を用いて、NVDによって記憶および使用される情報(例えば、転送テーブル、ルーティングテーブルなど)を更新することによって、VCN内の計算インスタンスとの間でパケットを転送することができる。
【0066】
特定の実施形態において、VCNおよびサブネットの作成は、VCN制御プレーン(CP:Control Plane)によって処理され、計算インスタンスの起動は、計算制御プレーンによって処理される。計算制御プレーンは、計算インスタンスの物理リソースを割り当て、次にVCN制御プレーンを呼び出して、VNICを作成し、計算インスタンスに接続するように構成される。また、VCN CPは、パケットの転送およびルーティング機能を実行するように構成されたVCNデータプレーンに、VCNデータマッピングを送信する。特定の実施形態において、VCN CPは、更新をVCNデータプレーンに提供するように構成された配信サービスを提供する。VCN制御プレーンの例は、図11、12、13、および14(参照番号1116、1216、1316、および1416を参照)に示され、以下に説明される。
【0067】
顧客は、CSPIによってホストされているリソースを用いて、1つまたは複数のVCNを作成することができる。顧客VCN上に展開された計算インスタンスは、異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPIによってホストされているエンドポイントおよびCSPL外部のエンドポイントを含むことができる。
【0068】
CSPIを用いてクラウドベースのサービスを実装するための様々な異なるアーキテクチャは、図1、2、3、4、5、11、12、13、および14に示され、以下に説明される。図1は、特定の実施形態に従って、CSPIによってホストされているオーバーレイVCNまたは顧客VCNを示す分散環境100のハイレベル図である。図1に示された分散環境は、オーバーレイネットワーク内の複数の要素を含む。図1に示された分散環境100は、単なる例であり、特許請求された実施形態の範囲を不当に限定することを意図していない。多くの変形例、代替例、および修正例が可能である。例えば、いくつかの実装形態において、図1に示された分散環境は、図1に示されたものより多いまたは少ないシステムまたは要素を有してもよく、2つ以上のシステムを組み合わせてもよく、または異なるシステムの構成または配置を有してもよい。
【0069】
図1の例に示されるように、分散環境100は、顧客が加入して仮想クラウドネットワーク(VCN)を構築するために使用することができるサービスおよびリソースを提供するCSPI101を含む。特定の実施形態において、CSPI101は、加入顧客にIaaSサービスを提供する。CSPI101内のデータセンタは、1つまたは複数の地域に編成されてもよい。図1は、地域の一例である「US地域」102を示す。顧客は、地域102に対して顧客VCN104を構成している。顧客は、VCN104上に様々な計算インスタンスを展開することができ、計算インスタンスは、仮想マシンまたはベアメタルインスタンスを含むことができる。インスタンスの例は、アプリケーション、データベース、ロードバランサなどを含む。
【0070】
図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に提供することができる。
【0071】
各サブネット上に複数の計算インスタンスを展開することができる。この場合、計算インスタンスは、仮想マシンインスタンスおよび/またはベアメタルインスタンスであってもよい。サブネット内の計算インスタンスは、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へのデフォルトルートを有する。
【0072】
サブネット-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へのデフォルトルートを有する。
【0073】
また、VCN A104は、1つまたは複数のロードバランサを含んでもよい。例えば、ロードバランサは、サブネットに対して提供されてもよく、サブネット上の複数の計算インスタンス間でトラフィックをロードバランスするように構成されてもよい。また、ロードバランサは、VCN内のサブネット間でトラフィックをロードバランスするように提供されてもよい。
【0074】
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、および別のエンドポイントを含む。
【0075】
同じサブネット上の計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICを使用して促進される。例えば、サブネット-1内の計算インスタンスC1は、サブネット-1内の計算インスタンスC2にパケットを送信したいことがある。ソース計算インスタンスから送信され、その宛先が同じサブネット内の別の計算インスタンスであるパケットの場合、このパケットは、まず、ソース計算インスタンスに関連するVNICによって処理される。ソース計算インスタンスに関連するVNICによって実行される処理は、パケットヘッダからパケットの宛先情報を決定することと、ソース計算インスタンスに関連するVNICに対して構成された任意のポリシー(例えば、セキュリティリスト)を特定することと、パケットのネクストホップ(next hop)を決定することと、必要に応じて任意のパケットのカプセル化/デカプセル化機能を実行することと、パケットの意図した宛先への通信を容易にするためにパケットをネクストホップに転送/ルーティングすることとを含んでもよい。宛先計算インスタンスがソース計算インスタンスと同じサブネットにある場合、ソース計算インスタンスに関連するVNICは、宛先計算インスタンスに関連するVNICを特定し、処理するためのパケットをそのVNICに転送するように構成されている。次いで、宛先計算インスタンスに関連するVNICは、実行され、パケットを宛先計算インスタンスに転送する。
【0076】
サブネット内の計算インスタンスから同じ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に転送する。
【0077】
VCN104内の計算インスタンスからVCN104の外部のエンドポイントにパケットを通信するために、通信は、ソース計算インスタンスに関連するVNIC、VCN VR105、およびVCN104に関連するゲートウェイによって促進される。1つまたは複数の種類のゲートウェイをVCN104に関連付けることができる。ゲートウェイは、VCNと別のエンドポイントとの間のインターフェイスであり、別のエンドポイントは、VCNの外部にある。ゲートウェイは、レイヤ3/IPレイヤ概念であり、VCNとVCNの外部のエンドポイントとの通信を可能にする。したがって、ゲートウェイは、VCNと他のVCNまたはネットワークとの間のトラフィックフローを容易にする。異なる種類のエンドポイントとの異なる種類の通信を容易にするために、様々な異なる種類のゲートウェイをVCNに設定することができる。ゲートウェイによって、通信は、パブリックネットワーク(例えば、インターネット)またはプライベートネットワークを介して行われてもよい。これらの通信には、様々な通信プロトコルを使用してもよい。
【0078】
例えば、計算インスタンスC1は、VCN104の外部のエンドポイントと通信したい場合がある。パケットは、まず、ソース計算インスタンスC1に関連するVNICによって処理されてもよい。VNIC処理は、パケットの宛先がClのサブネット-1の外部にあると判断する。C1に関連するVNICは、パケットをVCN104のVCN VR105に転送することができる。次いで、VCN VR105は、パケットを処理し、処理の一部として、パケットの宛先に基づいて、VCN104に関連する特定のゲートウェイをパケットのネクストホップとして決定する。その後、VCN VR105は、パケットを特定のゲートウェイに転送することができる。例えば、宛先が顧客のオペプレミスネットワーク内のエンドポイントである場合、パケットは、VCN VR105によって、VCN104のために構成された動的ルーティングゲートウェイ(DRG:Dynamic Routing Gateway)122に転送されてもよい。その後、パケットは、ゲートウェイからネクストホップに転送され、意図した最終の宛先へのパケットの通信を容易にすることができる。
【0079】
VCNのために様々な異なる種類のゲートウェイを構成してもよい。VCNのために構成され得るゲートウェイの例は、図1に示され、以下に説明される。VCNに関連するゲートウェイの例は、図11、12、13、および14(例えば、参照番号1134、1136、1138、1234、1236、1238、1334、1336、1338、1434、1436、および1438によって示されたゲートウェイ)にも示され、以下に説明される。図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:Customer Premise Equipment)と呼ばれる。CSPI101側のエンドポイントは、DRG122を実行するホストマシンであってもよい。
【0080】
特定の実施形態において、リモートピアリング接続(RPC:Remote Peering Connection)をDRGに追加することができる。これによって、顧客は、1つのVCNを別の地域内の別のVCNとピアリングすることができる。このようなRPCを使用して、顧客VCN104は、DRG122を使用して、別の地域内のVCN108に接続することができる。また、DRG122は、CSPI101によってホストされていない他のリモートクラウドネットワーク118、例えば、マイクロソフト(登録商標)Azureクラウド、アマゾン(登録商標)AWSクラウドと通信するために使用されてもよい。
【0081】
図1に示すように、顧客VCN104上の計算インスタンスがインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイント114と通信することを可能にするように、顧客VCN104にインターネットゲートウェイ(IGW:Internet Gateway)120を構成することができる。IGW1120は、VCNをインターネットなどのパブリックネットワークに接続するためのゲートウェイである。IGW120は、VCN104などのVCN内のパブリックサブネット(パブリックサブネット内のリソースは、パブリックオーバーレイIPアドレスを有する)がインターネットなどのパブリックネットワーク114上のパブリックエンドポイント112に直接アクセスすることを可能にする。IGW120を使用して、VCN104内のサブネットからまたはインターネットからの接続を開始することができる。
【0082】
顧客VCN104にネットワークアドレス変換(NAT:Network Address Translation)ゲートウェイ128を構成することができる。NATゲートウェイ128は、顧客VCN内の専用のパブリックオーバーレイIPアドレスを有しないクラウドリソースを、直接着信インターネット接続(例えば、L4-L7接続)に曝すことなくインターネットにアクセスすることを可能にする。これによって、VCN104のプライベートサブネット-1などのVCN内のプライベートサブネットがインターネット上のパブリックエンドポイントにプライベートアクセスすることを可能にする。NATゲートウェイにおいて、プライベートサブネットからパブリックインターネットに接続を開始することができるが、インターネットからプライベートサブネットに接続を開始することができない。
【0083】
特定の実施形態において、顧客VCN104にサービスゲートウェイ(SGW:Service Gateway)126を構成することができる。SGW126は、VCN104とサービスネットワーク110にサポートされているサービスエンドポイントとの間のプライベートネットワークトラフィックの経路を提供する。特定の実施形態において、サービスネットワーク110は、CSPによって提供されてもよく、様々なサービスを提供することができる。このようなサービスネットワークの例は、顧客が使用できる様々なサービスを提供するオラクル(登録商標)サービスネットワークである。例えば、顧客VCN104のプライベートサブネット内の計算インスタンス(例えば、データベースシステム)は、パブリックIPアドレスまたはインターネットへのアクセスを必要とすることなく、サービスエンドポイント(例えば、オブジェクト記憶装置)にデータをバックアップすることができる。いくつかの実施形態において、VCNは、1つのみのSGWを有することができ、VCN内のサブネットのみから接続を開始することができ、サービスネットワーク110から接続を開始することができない。VCNを他のVCNにピアリングする場合、他のVCN内のリソースは、通常SGWにアクセスすることができない。FastConnectまたはVPN ConnectでVCNに接続されているオンプレミスネットワーク内のリソースも、そのVCNに構成されたサービスゲートウェイを使用することができる。
【0084】
いくつかの実装形態において、SGW126は、サービスクラスレスドメイン間ルーティング(CIDR:Classless Inter-Domain Routing)ラベルを使用する。CIDRラベルは、関心のあるサービスまたはサービスのグループに対する全ての地域公開IPアドレス範囲を表す文字列である。顧客は、SGWおよび関連するルーティングルールを設定する際に、サービスCIDRラベルを使用してサービスへのトラフィックを制御する。顧客は、サービスのパブリックIPアドレスが将来に変化する場合、セキュリティルールを調整する必要なく、セキュリティルールを設定するときにオプションとしてサービスCIDRラベルを使用することができる。
【0085】
ローカルピアリングゲートウェイ(LPG:Local Peering Gateway)132は、顧客VCN104に追加可能なゲートウェイであり、VCN104が同じ地域内の別のVCNとピアリングすることを可能にするものである。ピアリングとは、トラフィックがインターネットなどのパブリックネットワークを経由することなく、または顧客オンプレミスネットワーク116を通してトラフィックをルーティングすることなく、VCNがプライベートIPアドレスを使用して通信することを意味する。好ましい実施形態において、VCNは、確立した各ピアリングに対して個別のLPGを有する。ローカルピアリングまたはVCNピアリングは、異なるアプリケーション間またはインフラストラクチャ管理機能間のネットワーク接続を確立するために使用される一般的な慣行である。
【0086】
サービスネットワーク110のサービスのプロバイダなどのサービスプロバイダは、異なるアクセスモデルを使用してサービスへのアクセスを提供することができる。パブリックアクセスモデルによれば、サービスは、インターネットなどのパブリックネットワークを介して顧客VCN内の計算インスタンスによって公的にアクセス可能なパブリックエンドポイントとして公開されてもよく、またはSGW126を介してプライベートにアクセスされてもよい。特定のプライベートアクセスモデルによれば、サービスは、顧客VCN内のプライベートサブネット内のプライベートIPエンドポイントとしてアクセスされてもよい。これは、プライベートエンドポイント(PE:Private Endpoint)アクセスと呼ばれ、サービスプロバイダがそのサービスを顧客のプライベートネットワーク内のインスタンスとして公開することを可能にする。プライベートエンドポイントリソースは、顧客VCN内のサービスを表す。各PEは、顧客が顧客VCN内のサブネットから選択したVNIC(PE-VNICと呼ばれ、1つまたは複数のプライベートIPを持つ)として現れる。従って、PEは、VNICを使用して顧客のプライベートVCNサブネット内でサービスを提供する方法を提供する。エンドポイントがVNICとして公開されるため、PE VNICは、VNICに関連する全ての機能、例えば、ルーティングルールおよびセキュリティリストなどを利用することができる。
【0087】
サービスプロバイダは、サービスを登録することによって、PEを介したアクセスを可能にする。プロバイダは、顧客テナントへのサービスの表示を規制するポリシーをサービスに関連付けることができる。プロバイダは、特にマルチテナントサービスの場合、単一の仮想IPアドレス(VIP)の下に複数のサービスを登録することができる。(複数のVCNにおいて)同じサービスを表すプライベートエンドポイントが複数存在する場合もある。
【0088】
その後、プライベートサブネット内の計算インスタンスは、PE VNICのプライベートIPアドレスまたはサービスDNS名を用いて、サービスにアクセスすることができる。顧客VCN内の計算インスタンスは、顧客VCN内のPEのプライベートIPアドレスにトラフィックを送信することによって、サービスにアクセスすることができる。プライベートアクセスゲートウェイ(PAGW:Private Access Gateway)130は、顧客サブネットプライベートエンドポイントから/への全てのトラフィックのイングレスポイント/エグレスポイントとして機能するサービスプロバイダVCN(例えば、サービスネットワーク110内のVCN)に接続できるゲートウェイリソースである。PAGW130によって、プロバイダは、内部IPアドレスリソースを利用することなく、PE接続の数を拡張することができる。プロバイダは、単一のVCNに登録された任意の数のサービスに対して1つのPAGWを設定するだけでよい。プロバイダは、1人以上の顧客の複数のVCNにおいて、サービスをプライバシーエンドポイントとして示すことができる。顧客の観点から、PE VNICは、顧客のインスタンスに接続されているのではなく、顧客が対話したいサービスに接続されているように見える。プライベートエンドポイントに向けられたトラフィックは、PAGW130を介してサービスにルーティングされる。これらは、顧客対サービスプライベート接続(C2S接続)と呼ばれる。
【0089】
また、PE概念を用いて、トラフィックがFastConnect/IPsecリンクおよび顧客VCN内のプライベートエンドポイントを通って流れることを可能にすることで、サービスのプライベートアクセスを顧客オンプレミスネットワークおよびデータセンタに拡張することもできる。また、トラフィックがLPG132および顧客VCN内のPE間を通って流れることを可能にすることで、サービスのプライベートアクセスを顧客ピアリングVCNに拡張することもできる。
【0090】
顧客は、サブネットレベルでVCNのルーティングを制御することができるため、VCN104などの顧客VCNにおいて各ゲートウェイを使用するサブネットを指定することができる。VCNのルートテーブルを用いて、特定のゲートウェイを介してトラフィックをVCNの外部にルーティングできるか否かを判断することができる。例えば、特定の事例において、顧客VCN104内のパブリックサブネットのルートテーブルは、IGW120を介して非ローカルトラフィックを送信することができる。同じ顧客VCN104内のプライベートサブネットのルートテーブルは、SGW126を介してCSPサービスへのトラフィックを送信することができる。残りの全てのトラフィックは、NATゲートウェイ128を介して送信されてもよい。ルートテーブルは、VCNから出るトラフィックのみを制御する。
【0091】
VCNに関連するセキュリティリストは、インバウンド接続およびゲートウェイを介してVCNに入来するトラフィックを制御するために使用される。サブネット内の全てのリソースは、同じミュートテーブルおよびセキュリティリストを使用する。セキュリティリストは、VCNのサブネット内のインスタンスに出入りする特定の種類のトラフィックを制御するために使用されてもよい。セキュリティリストルールは、イングレス(インバウンド)ルールと、エグレス(アウトバウンド)ルールとを含んでもよい。例えば、イングレスルールは、許可されたソースアドレス範囲を指定することができ、エグレスルールは、許可された宛先アドレス範囲を指定することができる。セキュリティルールは、特定のプロトコル(例えば、TCP、ICMP)、特定のポート(例えば、SSHの場合ポート22、ウィンドウズ(登録商標)RDPの場合ポート3389)などを指定することができる。特定の実装形態において、インスタンスのオペレーティングシステムは、セキュリティリストルールと一致する独自のファイアウォールルールを実施することができる。ルールは、ステートフル(例えば、接続が追跡され、応答トラフィックに対する明示的なセキュリティのリストルールなしで応答が自動的に許可される)またはステートレスであってもよい。
【0092】
顧客VCN(すなわち、VCN104上に展開されたリソースまたは計算インスタンス)からのアクセスは、パブリックアクセス、プライベートアクセス、または専用アクセスとして分類されてもよい。パブリックアクセスは、パブリックIPアドレスまたはNATを用いてパブリックエンドポイントにアクセスするためのアクセスモデルを指す。プライベートアクセスは、プライベートIPアドレス(例えば、プライベートサブネット内のリソース)を持つVCN104内の顧客ワークロードが、インターネットなどのパブリックネットワークを経由することなく、サービスにアクセスすることを可能にする。特定の実施形態において、CSPI101は、プライベートIPアドレスを持つ顧客VCNワークロードが、サービスゲートウェイを使用して、サービスのパブリックサービスエンドポイントにアクセスすることを可能にする。したがって、サービスゲートウェイは、顧客VCNと顧客プライベートネットワークの外部に存在するサービスのパブリックエンドポイントとの間に仮想リンクを確立することによって、プライベートアクセスモデルを提供する。
【0093】
さらに、CSPIは、FastConnectパブリックピアリングなどの技術を使用する専用パブリックアクセスを提供することができる。この場合、顧客オンプレミスインスタンスは、インターネットなどのパブリックネットワークを経由することなく、FastConnect接続を用いて顧客VCN内の1つまたは複数のサービスにアクセスすることができる。また、CSPIは、FastConnectプライベートピアリングを使用する専用プライベートアクセスを提供することもできる。この場合、プライベートIPアドレスを持つ顧客オンプレミスインスタンスは、FastConnect接続を用いて顧客VCNワークロードにアクセスすることができる。FastConnectは、パブリックインターネットを用いて顧客オンプレミスネットワークをCSPIおよびそのサービスに接続する代わりに使用されるネットワーク接続である。FastConnectは、インターネットベースの接続と比較して、より高い帯域幅オプションと信頼性の高い一貫したネットワーキング体験を持つ専用のプライベート接続を、簡単、柔軟且つ経済的に作成する方法を提供する。
【0094】
図1および上記の添付の説明は、例示的な仮想ネットワークにおける様々な仮想化要素を説明する。上述したように、仮想ネットワークは、基礎物理ネットワークまたは基板ネットワーク上に構築される。図2は、特定の実施形態に従って、仮想ネットワークの基盤を提供するCSPI200内の物理ネットワーク内の物理要素を示す簡略化アーキテクチャ図である。図示のように、CSPI200は、クラウドサービスプロバイダ(CSP)によって提供された要素およびリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を含む分散環境を提供する。これらの要素およびリソースは、加入している顧客、すなわち、CSPによって提供された1つまたは複数のサービスに加入している顧客にクラウドサービス(例えば、IaaSサービス)を提供するために使用される。顧客が加入しているサービスに基づいて、CSPI200は、一部のリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を顧客に提供する。その後、顧客は、CSPI200によって提供された物理的な計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自のクラウドベースの(すなわち、CSPIホスト型)カスタマイズ可能なプライベート仮想ネットワークを構築することができる。前述したように、これらの顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、これらの顧客VCNに、計算インスタンスなどの1つまたは複数の顧客リソースを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどであってもよい。CSPI200は、顧客が高可用性のホスト環境において広範なアプリケーションおよびサービスを構築および実行することを可能にする、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。
【0095】
図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によって実行されてもよい。
【0096】
ホストマシンまたはサーバは、ホストマシン上で仮想化環境を作成するおよび可能にするハイパーバイザ(仮想マシンモニタまたはVMMとも呼ばれる)を実行することができる。仮想化または仮想化環境は、クラウドベースコンピューティングを容易にする。1つまたは複数の計算インスタンスは、ホストマシン上のハイパーバイザによって、ホストマシン上で作成され、実行され、管理されてもよい。ホストマシン上のハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)をホストマシン上で実行される様々な計算インスタンス間で共有させることができる。
【0097】
例えば、図2に示すように、ホストマシン202および208は、ハイパーバイザ260および266をそれぞれ実行する。これらのハイパーバイザは、ソフトウェア、ファームウエア、ハードウェア、またはそれらの組み合わせを使用して実装されてもよい。典型的には、ハイパーバイザは、ホストマシンのオペレーティングシステム(OS:Operating System)に常駐するプロセスまたはソフトウェア層であり、OSは、ホストマシンのハードウェアプロセッサ上で実行される。ハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、プロセッサ/コア、メモリリソース、ネットワーキングリソースなどの処理リソース)を、ホストマシンによって実行される様々な仮想マシン計算インスタンスの間で共有させる仮想化環境を提供する。例えば、図2において、ハイパーバイザ260は、ホストマシン202のOSに常駐し、ホストマシン202の計算リソース(例えば、処理リソース、メモリリソース、およびネットワーキングリソース)を、ホストマシン202によって実行されるコンピューティングインスタンス(例えば、仮想マシン)間で共有させることができる。仮想マシンは、独自のOS(ゲストOSと呼ばれる)を持つことができる。このゲストOSは、ホストマシンのOSと同じであってもよく、異なってもよい。ホストマシンによって実行される仮想マシンのOSは、同じホストマシンによって実行される他の仮想マシンのOSと同じであってもよく、異なってもよい。したがって、ハイパーバイザは、ホストマシンの同じ計算リソースを共有させながら、複数のOSを並行して実行することができる。図2に示されたホストマシンは、同じ種類のハイパーバイザを有してもよく、異なる種類のハイパーバイザを有してもよい。
【0098】
計算インスタンスは、仮想マシンインスタンスまたはベアメタルインスタンスであってもよい。図2において、ホストマシン202上の計算インスタンス268およびホストマシン208上の計算インスタンス274は、仮想マシンインスタンスの一例である。ホストマシン206は、顧客に提供されるベアメタルインスタンスの一例である。
【0099】
特定の例において、ホストマシンの全体は、単一の顧客に提供されてもよく、そのホストマシンによってホストされている1つまたは複数の計算インスタンス(仮想マシンまたはベアメタルインスタンスのいずれか)は、全て同じ顧客に属してもよい。他の例において、ホストマシンは、複数の顧客(すなわち、複数のテナント)間で共有されてもよい。このようなマルチテナントシナリオにおいて、ホストマシンは、異なる顧客に属する仮想マシン計算インスタンスをホストすることができる。これらの計算インスタンスは、異なる顧客の異なるVCNのメンバであってもよい。特定の実施形態において、ベアメタル計算インスタンスは、ハイパーバイザを設けていないベアメタルサーバによってホストされている。ベアメタル計算インスタンスが提供される場合、単一の顧客またはテナントは、ベアメタルインスタンスをホストするホストマシンの物理CPU、メモリ、およびネットワークインターフェイスの制御を維持し、ホストマシンは、他の顧客またはテナントに共有されない。
【0100】
前述したように、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によって実行される。
【0101】
ホストマシンによってホストされている計算インスタンスについて、そのホストマシンに接続されたNVDは、計算インスタンスがメンバであるVCNに対応するVCN VRを実行する。例えば、図2に示された実施形態において、NVD210は、計算インスタンス268がメンバであるVCNに対応するVCN VR277を実行する。また、NVD212は、ホストマシン206および208によってホストされている計算インスタンスに対応するVCNに対応する1つまたは複数のVCN VR283を実行することができる。
【0102】
ホストマシンは、当該ホストマシンを他の装置に接続するための1つまたは複数のネットワークインターフェイスカード(NIC)を含むことができる。ホストマシン上のNICは、ホストマシンを別の装置に通信可能に接続するための1つまたは複数のポート(またはインターフェイス)を提供することができる。例えば、ホストマシンおよびNVDに設けられた1つまたは複数のポート(またはインターフェイス)を用いて、当該ホストマシンを当該NVDに接続することができる。また、ホストマシンを他のホストマシンなどの他の装置に接続することもできる。
【0103】
例えば、図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に接続されている。
【0104】
同様に、NVDは、通信リンクを介して、(スイッチファブリックとも呼ばれる)物理ネットワーク218に接続されているトップオブラック(TOR)スイッチに接続されている。特定の実施形態において、ホストマシンとNVDとの間のリンクおよびNVDとTORスイッチとの間のリンクは、イーサネット(登録商標)リンクである。例えば、図2において、NVD210および212は、リンク228および230を介して、TORスイッチ214および216にそれぞれ接続される。特定の実施形態において、リンク220、224、226、228、および230は、イーサネットリンクである。TORに接続されているホストマシンおよびNVDの集合は、ラックと呼ばれることがある。
【0105】
物理ネットワーク218は、TORスイッチの相互通信を可能にする通信ファブリックを提供する。物理ネットワーク218は、多層ネットワークであってもよい。特定の実装形態において、物理ネットワーク218は、スイッチの多層Closネットワークであり、TORスイッチ214および216は、多層およびマルチノード物理スイッチングネットワーク218のリーフレベルノードを表す。2層ネットワーク、3層ネットワーク、4層ネットワーク、5層ネットワーク、および一般的に「n」層ネットワークを含むがこれらに限定されない異なるClosネットワーク構成は、可能である。CIosネットワークの一例は、図5に示され、以下に説明される。
【0106】
ホストマシンとN個のVDとの間には、1対1構成、多対1構成、および1対多構成などの様々な異なる接続構成が可能である。1対1構成の実装例において、各ホストマシンは、それ自体の別個のNVDに接続されている。例えば、図2において、ホストマシン202は、ホストマシン202のNIC232を介してNVD210に接続されている。多対1の構成において、複数のホストマシンは、1つのNVDに接続されている。例えば、図2において、ホストマシン206および208は、それぞれNIC244および250を介して同じNVD212に接続されている。
【0107】
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スイッチング装置を表す。
【0108】
図3に示す構成は、物理スイッチネットワーク318からホストマシン302への2つの別々の物理ネットワーク経路、すなわち、TORスイッチ314からNVD310を経由してホストマシン302への第1の経路と、TORスイッチ316からNVD312を経由してホストマシン302への第2の経路とを提供する。別々の経路は、ホストマシン302の強化された可用性(高可用性と呼ばれる)を提供する。経路の一方に問題がある(例えば、経路の一方のリンクが故障する)場合または装置に問題がある(例えば、特定のNVDが機能していない)場合、ホストマシン302との間の通信に他方の経路を使用することができる。
【0109】
図3に示された構成において、ホストマシンは、ホストマシンのNICによって提供された2つの異なるポートを用いて2つの異なるNVDに接続されている。他の実施形態において、ホストマシンは、ホストマシンと複数のNVDとの接続を可能にする複数のNICを含んでもよい。
【0110】
再び図2を参照して、NVDは、1つまたは複数のネットワーク仮想化機能および/または記憶仮想化機能を実行する物理装置または要素である。NVDは、1つまたは複数の処理ユニット(例えば、CPU、ネットワーク処理ユニット(NPU:Network Processing Unit)、FPGA、パケット処理パイプライン)、キャッシュを含むメモリ、およびポートを有する任意の装置であってもよい。様々な仮想化機能は、NVDの1つまたは複数の処理ユニットによって実行されるソフトウェア/ファームウエアによって実行されてもよい。
【0111】
NVDは、様々な異なる形で実装されてもよい。例えば、特定の実施形態において、NVDは、内蔵プロセッサを搭載したスマートNICまたはインテリジェントNICと呼ばれるインターフェイスカードとして実装される。スマートNICは、ホストマシン上のNICとは別個の装置である。図2において、NVD210は、ホストマシン202に接続されているスマートNICとして実装されてもよく、NVD212は、ホストマシン206および208に接続されているスマートNICとして実装されてもよい。
【0112】
しかしながら、スマートNICは、NVD実装の一例にすぎない。様々な他の実装が可能である。例えば、いくつかの他の実装例において、NVDまたはNVDによって実行される1つまたは複数の機能は、CSPI200の1つまたは複数のホストマシン、1つまたは複数のTORスイッチ、および他の要素に組み込まれてもよく、またはそれらによって実行されてもよい。例えば、NVDは、ホストマシンに統合されてもよい。この場合、NVDによって実行される機能は、ホストマシンによって実行される。別の例として、NVDは、TORスイッチの一部であってもよく、またはTORスイッチは、TORスイッチがパブリッククラウドに使用される様々な複雑なパケット変換を実行することを可能にするNVDによって実行される機能を実行するように構成されてもよい。NVDの機能を実行するTORは、スマートTORと呼ばれることがある。ベアメタル(BM:Bare Metal)インスタンスではなく仮想マシン(VM:Virtual Machine)インスタンスを顧客に提供するさらに他の実装形態において、NVDによって提供される機能は、ホストマシンのハイパーバイザの内部に実装されてもよい。いくつかの他の実装形態において、NVDの機能の一部は、一組のホストマシン上で動作する集中型サービスにオフロードされてもよい。
【0113】
図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に接続されている。
【0114】
NVDは、ホスト向きポートを介して、ホストマシンからパケットおよびフレーム(例えば、ホストマシンによってホストされている計算インスタンスによって生成されたパケットおよびフレーム)を受信し、必要なパケット処理を実行した後、NVDのネットワーク向きポートを介してパケットおよびフレームをTORスイッチに転送することができる。NVDは、NVDのネットワーク向きポートを介してTORスイッチからパケットおよびフレームを受信し、必要なパケット処理を実行した後、NVDのホスト向きポートを介してパケットおよびフレームをホストマシンに転送することができる。
【0115】
特定の実施形態において、NVDとTORスイッチとの間に複数のポートおよび関連するリンクを設けてもよい。これらのポートおよびリンクを集約することによって、複数のポートまたはリンクのリンクアグリゲータグループ(LAGと称される)を形成することができる。リンクの集約は、2つのエンドポイント間(例えば、NVDとTORスイッチとの間)の複数の物理リンクを単一の論理リンクとして扱うことを可能にする。所定のLAG内の全ての物理リンクは、同じ速度で全二重モードで動作することができる。LAGは、2つのエンドポイント間の接続の帯域幅および信頼性を高めるのに役立つ。LAG内の物理リンクのうちの1つが故障した場合、トラフィックは、LAG内の別の物理リンクに動的かつ透過的に再割り当てされる。集約された物理リンクは、個々のリンクよりも高い帯域幅を提供する。LAGに関連付けられた複数のポートは、単一の論理ポートとして扱われる。トラフィックをLAGの複数の物理リンクに負荷分散することができる。2つのエンドポイント間に1つまたは複数のLAGを構成することができる。2つのエンドポイントは、例えば、NVDとTORスイッチとの間にあってもよく、ホストマシンとNVDとの間にであってもよい。
【0116】
NVDは、ネットワーク仮想化機能を実装または実行する。これらの機能は、NVDによって実行されるソフトウェア/ファームウエアによって実行される。ネットワーク仮想化機能の例は、限定されないが、パケットのカプセル化およびデカプセル化機能、VCNネットワークを作成するための機能、VCNセキュリティリスト(ファイアウォール)機能などのネットワークポリシーを実装するための機能、VCN内の計算インスタンスとの間のパケットのルーティングおよび転送を容易にするための機能などを含む。特定の実施形態において、パケットを受信すると、NVDは、パケットを処理し、パケットをどのように転送またはルーティングするかを判断するパケット処理パイプラインを実行するように構成されている。このパケット処理パイプラインの一部として、NVDは、オーバーレイネットワークに関連する1つまたは複数の仮想機能の実行、例えば、VCN内の計算インスタンスに関連するVNICの実行、VCNに関連する仮想ルータ(VR:Virtual Router)の実行、仮想ネットワーク内の転送またはルーティングを容易にするためのパケットのカプセル化およびデカプセル化、特定のゲートウェイ(例えば、ローカルピアリングゲートウェイ)の実行、セキュリティリストの実装、ネットワークセキュリティグループ、ネットワークアドレス変換(NAT)機能(例えば、ホスト毎にパブリックIPからプライベートIPへの変換)、スロットリング機能、および他の機能を提供する。
【0117】
いくつかの実施形態において、NVD内のパケット処理データ経路は、複数のパケットパイプラインを含んでもよい。各々のパケットパイプラインは、一連のパケット変換ステージから構成される。いくつかの実装形態において、パケットを受信すると、当該パケットは、解析され、単一のパイプラインに分類される。次いで、パケットは、破棄されるまたはNVDのインターフェイスを介して送出されるまで、線形方式でステージ毎に処理される。これらのステージは、基本機能のパケット処理ビルディングブロック(例えば、ヘッダの検証、スロットルの実行、新しいレイヤ2ヘッダの挿入、L4ファイアウォールの実行、VCNカプセル化/デカプセル化)を提供し、その結果、既存のステージを組み立てることによって新しいパイプラインを構築することができ、新しいステージを作成して既存のパイプラインに挿入することによって新しい機能を追加することができる。
【0118】
NVDは、VCNの制御プレーンおよびデータプレーンに対応する制御プレーン機能およびデータプレーン機能の両方を実行することができる。VCN制御プレーンの例は、図11、12、13、および14(参照番号1116、1216、1316、および1416参照)に示され、以下に説明される。VCNデータプレーンの例は、図11、12、13、および14(参照番号1118、1218、1318、および1418参照)に示され、以下に説明される。制御プレーン機能は、データをどのように転送するかを制御するためのネットワークの構成(例えば、ルートおよびルートテーブルの設定、VNICの構成)に使用される機能を含む。特定の実施形態において、全てのオーバーレイと基板とのマッピングを集中的に計算し、NVDおよび仮想ネットワークエッジ装置(例えば、DRG、SGW、IGWなどの様々なゲートウェイ)に公開するVCN制御プレーンが提供される。また、同じメカニズムを使用してファイアウォールルールを公開することができる。特定の実施形態において、NVDは、当該NVDに関連するマッピングのみを取得する。データプレーン機能は、制御プレーンを使用して設定された構成に基づいて、パケットの実際のルーティング/転送を行う機能を含む。VCNデータプレーンは、顧客のネットワークパケットが基幹ネットワークを通過する前に、当該ネットワークパケットをカプセル化することによって実装される。カプセル化/デカプセル化機能は、NVDに実装される。特定の実施形態において、NVDは、ホストマシンに出入りする全てのネットワークパケットを傍受し、ネットワーク仮想化機能を実行するように構成されている。
【0119】
上述したように、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に関連する機能を実行する)ことができる。
【0120】
また、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を実行することができる。
【0121】
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に接続されている他の要素の状態および健全性を監視するためのソフトウェアを含んでもよい。
【0122】
図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の他の実装形態によって実行されてもよい。
【0123】
上述したように、顧客VCN内の計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、ソース計算インスタンスと同じサブネットにあってもよく、異なるサブネット内であるがソース計算インスタンスと同じVCNにあってもよく、またはソース計算インスタンスのVCN外部のエンドポイントを含んでもよい。これらの通信は、計算インスタンスに関連付けられたVNIC、VCN VR、およびVCNに関連付けられたゲートウェイを用いて促進される。
【0124】
VCN内の同じサブネット上の2つの計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連付けられたVNICを用いて促進される。ソース計算インスタンスおよび宛先計算インスタンスは、同じホストマシンによってホストされてもよく、異なるホストマシンによってホストされてもよい。ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに転送されてもよい。NVDにおいて、パケットは、パケット処理パイプラインを用いて処理され、このパイプラインは、ソース計算インスタンスに関連するVNICの実行を含むことができる。パケットの宛先エンドポイントが同じサブネットにあるため、ソース計算インスタンスに関連付けられたVNICの実行により、パケットは、宛先計算インスタンスに関連付けられたVNICを実行するNVDに転送され、NVDは、パケットを処理し、宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスと宛先計算インスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、または(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。VNICは、NVDによって記憶されたルーティング/転送テーブルを使用して、パケットのネクストホップを決定することができる。
【0125】
サブネット内の計算インスタンスから同じVCN内の異なるサブネット内のエンドポイントにパケットを通信する場合、ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに通信される。NVDにおいて、パケットは、1つまたは複数のVNICの実行を含むことができるパケット処理パイプラインおよびVCNに関連するVRを用いて処理される。例えば、NVDは、パケット処理パイプラインの一部として、ソース計算インスタンスに関連するVNICに対応する機能を実行または呼び出す(VNICを実行するとも呼ばれる)。VNICによって実行される機能は、パケット上のVLANタグを検索することを含んでもよい。パケットの宛先がサブネットの外部にあるため、VCN VR機能は、呼び出され、NVDによって実行される。その後、VCN VRは、パケットを、宛先計算インスタンスに関連付けられたVNICを実行するNVDにルーティングする。そして、宛先計算インスタンスに関連付けられたVNICは、パケットを処理し、パケットを宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスと宛先計算インスタンスの両方が同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。
【0126】
パケットの宛先がソース計算インスタンスの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は、パケット内のカプセル化情報を検査し、意図した宛先エンドポイントへのパケットの通信を容易にする目的でパケットを転送するためのネクストホップを決定し、決定したネクストホップにパケットを転送するように構成されている。
【0127】
VCN上に展開された計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPI200によってホストされているエンドポイントと、CSPI200外部のエンドポイントとを含んでもよい。CSPI200によってホストされているエンドポイントは、(顧客VCN、または顧客に属さないVCNであり得る)同じVCNまたは他のVCN内のインスタンスを含んでもよい。CSPI200によってホストされているエンドポイント間の通信は、物理ネットワーク218を介して実行されてもよい。また、計算インスタンスは、CSPI200によってホストされていないまたはCSPI200の外部にあるエンドポイントと通信することもできる。これらのエンドポイントの例は、顧客オンプレミスネットワークまたはデータセンタ内のエンドポイント、またはインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイントを含む。CSPI200外部のエンドポイントとの通信は、様々な通信プロトコルを用いて、パブリックネットワーク(例えば、インターネット)(図2に図示せず)またはプライベートネットワーク(図2に図示せず)を介して実行されてもよい。
【0128】
図2に示されたCSPI200のアーキテクチャは、単なる一例であり、限定することを意図していない。代替的な実施形態において、変形、代替、および修正が可能である。例えば、いくつかの実装形態において、CSPI200は、図2に示されたものよりも多いまたは少ないシステムまたは要素を有してもよく、2つ以上のシステムを組み合わせてもよく、または異なるシステム構成または配置を有してもよい。図2に示されたシステム、サブシステム、および他の要素は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実装されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
【0129】
図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に接続されている。
【0130】
図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を所有していると信じている。
【0131】
特定の実施形態において、各論理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仮想化を提供する。
【0132】
図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に示された実施形態において、「m」個の層-0 TORスイッチは、「r」個の層-1スイッチに接続され(整数mおよびrは、同じ値を有していてもよく、異なる値を有していてもよい)、ポッドを形成する。ポッド内の各層-0スイッチは、ポッド内の全ての層-1スイッチに相互接続されるが、ポッド間のスイッチは、接続されない。特定の実装例において、2つのポッドは、ブロックと呼ばれる。各ブロックは、「q」個の層-2スイッチ(スパインスイッチとも呼ばれる)によってサービスを提供されるまたはそれに接続されている。物理ネットワークトポロジは、複数のブロックを含んでもよい。同様に、層-2スイッチは、「p」個の層-3スイッチ(スーパースパインスイッチとも呼ばれる)に接続されている(整数pおよびqは、同じ値を有していてもよく、異なる値を有していてもよい)。物理ネットワーク500を介したパケットの通信は、典型的には、1つまたは複数のレイヤ3通信プロトコルを使用して実行される。典型的には、TOR層を除く物理ネットワークの全ての層は、冗長であり(例えば、pウェイ冗長、qウェイ冗長またはrウェイ冗長であり)、したがって高い可用性を実現することができる。ポッドおよびブロックにポリシーを指定して、物理ネットワークのスイッチの相互可視性を制御することによって、物理ネットワークを拡張することができる。
【0133】
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トポロジは、水平方向に拡張可能であり、コスト効率に優れている。各階層により多くのスイッチ(例えば、より多くのリーフスイッチおよびスパインスイッチ)を増設すること、および隣接する階層のスイッチ間にリンク数を増やすことによって、ネットワークの帯域幅/スループット容量を容易に増加させることができる。
【0134】
特定の実施形態において、CSPI内の各リソースには、クラウド識別子(CID)と呼ばれる固有の識別子が割り当てられる。この識別子は、リソースの情報の一部として含まれる。この識別子を用いて、例えば、コンソールまたはAPIを介してリソースを管理することができる。CIDの例示的なシンタックスは、以下の通りである。
【0135】
ocid1.<RESOURCE TYPE>.<REALM>.[REGION].[FUTURE USE].<UNIQUE ID>である。
式中、
「ocid1」は、CIDのバージョンを示す文字列である。
【0136】
「RESOURCE TYPE」は、リソースの種類(例えば、インスタンス、ボリューム、VCN、サブネット、ユーザ、グループ)を表す。
【0137】
「REALM」は、リソースが存在する領域を表す。例示的な値として、「c1」は、商業領域を表し、「c2」は、政府クラウド領域を表し、または「c3」は、連邦政府クラウド領域を表す。各領域は、独自のドメイン名を持つことができる。
【0138】
「REGION」は、リソースが属する地域を表す。地域がリソースに適用されない場合、この部分は空白であってもよい。
【0139】
「FUTURE USE」は、将来使用のために保留されていることを示す。
「UNIQUE ID」は、固有IDの部分である。このフォーマットは、リソースまたはサービスの種類によって異なる場合がある。
【0140】
RDMA/RoCE技術
図6は、クラウドサービスプロバイドインフラストラクチャ(CSPI)によってホストされ得る分散マルチテナントクラウド環境600の一例を示す図である。図6に示すように、複数のホストマシン(例えば、602および622)は、複数のスイッチまたはより広義にネットワーキング装置を含む物理ネットワークまたはスイッチファブリック640を介して通信可能に接続されている。特定の実装例において、スイッチファブリック640は、図5に示して上記で説明したn層構造のClosネットワークであってもよく、設計は、Closファブリックおよび物理スイッチ642,644および646の配置によって性能を最適化することができる。実装例に応じて、「n」の値は、1、2、3などであってもよい。しかし、各々の追加の層は、ファブリック全体にわたるパケット転送のレイテンシを増加させることが予想され、これは特定のアプリケーションでは望ましくない場合がある、ということに留意されたい。トップオブラック(TOR)スイッチ642および644は、スイッチファブリック640内のリーフ装置または層-0装置を表す。「n」の値に応じて、スイッチファブリック640は、1つまたは複数のスパインスイッチ、スーパースパインスイッチなどを含み得る。図6において、TORスイッチ642とTORスイッチ644との間のスイッチ(例えば、図5における層-1スイッチ、層-2スイッチおよび層-3スイッチ)は、中間スイッチ646で表現される。中間スイッチ646は、一般に、1つまたは複数のスイッチまたはネットワーキング装置を含み得る。また、スイッチファブリック640は、顧客の計算インスタンスが到達できないスイッチ基板IPアドレスを(例えば、管理の目的で)含むように実装されてもよい。(例えば、バグなどに起因して発生し得るループを回避するために)スイッチファブリック640のTORスイッチ上にスパニングツリープロトコル(STP:Spanning Tree Protocol)を実装することが望ましい場合がある。いくつかの構成では、スイッチファブリック640上の各TORスイッチは、サービス(例えば、データベースクラウドサービス、HPCクラウドサービス、GPUクラウドサービスなど)ごとに専用であり、様々なサービスのトラフィックは、より高い層(例えば、中間スイッチ646)でのみ混合される。
【0141】
ホストマシン602および622は、複数の顧客またはテナントの計算インスタンスをホストすることができるため、マルチテナントホストマシンと称することができる。例えば、図6に示すように、ホストマシン602は、顧客Aの計算インスタンスA-1 604と、顧客Bの計算インスタンスB-1とをホストする。ホストマシン604は、顧客Aの計算インスタンスA-2 624と、顧客Bの計算インスタンスB-2 626とをホストする。特定の実施形態において、計算インスタンス604,606,624および626は、仮想マシンである。このように、異なる顧客に属する仮想マシンを同一のホストマシン上にホストすることができる。しかし、これらの計算インスタンスの各々は、ホストマシン全体を所有しているという経験をする。特定の実施形態において、顧客の計算インスタンスは、ベアメタルホストも含み得る。本開示の教示は、仮想マシンまたはベアメタルホストの形態の計算インスタンスに適用することができる。説明しやすくするために、図1の例はマルチテナントホストマシン602および622を2つだけ示しているが、これは限定的であるよう意図されるものではない。本開示によって開示されている原理は、任意の特定の数のマルチテナントホストに限定されるものではなく、より多くの数のマルチテナントホストを含む特定の例、および/または、ベアメタルホスト(例えば、シングルテナントホスト)である1つまたは複数の計算インスタンスも含む特定の例も実現可能である。
【0142】
図6に示すマルチテナント環境では、様々な顧客の計算インスタンスから発信されるトラフィックおよび様々な顧客の計算インスタンスに向けられるトラフィックを互いに適切に分離することが望ましい。特定の実施形態において、このトラフィック分離は、別々の顧客のために別々のネットワークドメインを構成することによってなされる。例えば、顧客Aの計算インスタンスは、顧客Bの計算インスタンスが割り当てられるネットワークドメインとは別物であって、且つ、それとは異なっている特定のネットワークドメインに割り当てられてもよい。特定の実装例において、これらのネットワークドメインは、仮想LAN(VLAN)の形態で構成され得て、各VLANは、固有のVLAN識別子によって識別される。例えば、図6では、顧客Aの計算インスタンスA-1 604およびA-2 624はVLAN1001に割り当てられ、「1001」は固有のVLAN識別子を表す。顧客Bの計算インスタンスB-1 606およびB-2 626はVLAN1002に割り当てられ、「1002」は固有のVLAN識別子を表す。説明しやすくするために、図1の例は各VLAN1001および1002のメンバを2つだけ示しているが、これは限定的であるよう意図されるものではない。本開示によって開示されている原理は、任意の特定の数のVLANメンバに限定されるものではない。また、図6に示すように2つだけではなく複数のVLANが存在してもよい。IEEE802.1Q規格は、例えば4096個までの異なるVLANの識別をサポートする。
【0143】
特定の実装例において、同一の顧客に属する計算インスタンスが異なるクオリティオブサービス期待値を有している場合がある。例えば、顧客は、サービスA(例えば、シミュレーションサービス)に対応する1つまたは複数の計算インスタンスの第1のセットおよびサービスB(例えば、バックアップサービス)に対応する計算インスタンスの第2のセットなどの、2つ以上の異なるサービス(またはアプリケーションまたは部門)に属する計算インスタンスを有している場合があり、これら2つのサービスは、(例えば、レイテンシ、パケットロス、帯域幅要件などの点で)非常に異なったクオリティオブサービス期待値を有している。例えば、サービスAは、サービスBよりもレイテンシの影響を受けやすい可能性があり、その結果、顧客は、サービスAに関連するトラフィックがサービスBに関連するトラフィックとは異なるトラフィッククラス(例えば、より高い優先度)を与えられることを望む場合がある。そのような状況では、同一の顧客に属する異なる計算インスタンスは、異なるクオリティオブサービス要件を有することになる。
【0144】
同一のVLAN上の計算インスタンスまたはピアVLAN(例えば、同一のテナントに属しているが異なるVLAN IDを有し得る異なるレイヤ2ドメイン上のVLAN)上の計算インスタンスは、互いに通信することを望む場合がある。特定の実装例において、VLAN(または、ピアVLAN)上の計算インスタンスは、RDMAおよびRoCEプロトコルを使用してデータをやりとりすることができる。そのような実装例では、これらの計算インスタンスをホストするホストマシンは、RDMAおよびRoCEベースの通信を可能にする特別なハードウェアおよびソフトウェアを備えている。例えば、図6に示すように、ホストマシン602および622は、ホストマシン602によってホストされた計算インスタンスが、ホストマシン622によってホストされた計算インスタンスと、RDMAおよびRoCEプロトコルを使用して、同一のVLAN(または、ピアVLAN)上でデータをやりとりすることを可能にするRDMAネットワークインターフェイスカード(NIC)(例えば、RoCE NIC)608および628をそれぞれ含む。RoCE NICは、例えば、ホストマシン内にインストールされたハードウェアアセンブリ(例えば、インターフェイスカード)として実装されてもよい(例えば、マルチテナントホストマシン602にインストールされたRoCE NIC608およびホストマシン622にインストールされたRoCE NIC628)。同一のVLAN1001に属する計算インスタンスA-1 604およびA-2 624は、ホストマシン602および622におけるRoCE NIC608および628をそれぞれ使用して、RDMAおよびRoCEプロトコルを使用してデータをやりとりすることができる。特定の実装例において、これらのRoCE NICは、図2および図3に示して上記で説明したNICとは別物である。他の実装例において、図2および図3に示したNICは、RoCE NICとしても動作するように構成されてもよい。
【0145】
図6に示す例に示されるように、RoCE NICは、RoCEエンジンを含み、仮想関数(例えば、SR-IOV関数)を実装しており、仮想関数の各々は、ホストマシンによってサポートされる仮想マシンのうちの異なる対応する1つのために構成され得る。この例では、RoCE NICは、SR-IOV(シングルルート入力/出力仮想化)と呼ばれる技術を通じてマルチテナンシをサポートするように実装され、これにより、物理装置が周辺機器相互接続エクスプレス(PCIエクスプレスまたはPCIe)バス上に複数の異なる仮想インスタンス(「仮想関数」またはVFとも呼ばれる)として現れることを可能にし、各VFは、それぞれのVMに割り当てられ、他のVFのリソースとは別物のリソースを有する。例えば、図6では、ホストマシン602上のRoCE NIC608は、RoCEエンジン610と、仮想マシン計算インスタンスA-1 604のための仮想関数VF-A-1 612と、仮想マシン計算インスタンスB-1 606のための仮想関数VF-B-1 614とを含む。ホストマシン622上のRoCE NIC628は、RoCEエンジン630と、仮想マシン計算インスタンスA-2 624のための仮想関数VF-A-2 632と、仮想マシン計算インスタンスB-2 626のための仮想関数VF-B-2 634とを含む。説明しやすくするために、図6における例は、ホストマシン当たり仮想関数を2つだけ示しているが、これは、限定的であるよう意図されるものでは決してなく、本開示に記載されている原理は、任意の特定の数の仮想関数に限定されるものではない。一例において、SR-IOVは、1つの物理NICポートについて16個までのVFをサポートしてもよく、ホストマシンも複数のRDMA NIC(例えば、複数のRoCE NIC)を有していてもよい。
【0146】
特定の実施形態において、RoCE NICの仮想関数は、特定の仮想マシン計算インスタンスのためのホストマシン上のハイパーバイザによってプログラムされ、スイッチファブリック640などのネットワークを介して通信される仮想マシンからのパケットが、仮想マシンが属するVLANに対応するVLANタグ(例えば、802.1Q VLANタグ)でタグ付けされることを強制するように構成されている。図6に示す例では、仮想関数VF-A-1 612は、VLAN1001を示すVLANタグ(例えば、値1001を有するVLAN IDを有するVLANタグ)を、仮想マシン計算インスタンスA-1 604からのデータを運ぶパケットに追加するように構成され得て、仮想関数VF-B-1 614は、VLAN1002を示すVLANタグ(例えば、値1002を有するVLAN IDを有するVLANタグ)を、仮想マシン計算インスタンスB-1 606からのデータを運ぶパケットに追加するように構成され得る。同様に、仮想関数VF-A-2 632は、VLAN1001を示すVLANタグ(例えば、値1001を有するVLAN IDを有するVLANタグ)を、仮想マシン計算インスタンスA-2 624からのデータを運ぶパケットに追加するように構成され得て、仮想関数VF-B-2 634は、VLAN1002を示すVLANタグ(例えば、値1002を有するVLAN IDを有するVLANタグ)を、仮想マシン計算インスタンスB-2 626からのデータを運ぶパケットに追加するように構成され得る。これらのVLANタグは、異なるVLANに属するトラフィック(例えば、図6では、顧客Bの計算インスタンスに属するトラフィックから顧客Aの計算インスタンスに属するトラフィック)を隔離または分離するために下流のネットワーク要素によって使用され得る。
【0147】
特定の実装例において、それぞれの計算インスタンスに割り当てられた仮想関数は、RDMAデータ転送のために、対応する計算インスタンスのメモリ空間からのダイレクトメモリアクセス(DMA)読取動作を実行するとともに、メモリ空間へのDMA書込動作を実行するように(例えば、RoCE NIC上のRoCEエンジンと協働で)構成されている。図6の例では、仮想関数VF-A-1 612は、RoCEエンジン608と連携して、RDMA処理の一部として計算インスタンスA-1 604に対してダイレクトメモリアクセス読取および書込動作を実行するように構成されている。同様に、仮想関数VF-B-1 614は、RoCEエンジン608と連携して、RDMA処理の一部として計算インスタンスB-1 606に対してダイレクトメモリアクセス読取および書込動作を実行するように構成されている。
【0148】
RoCE NIC内のRoCEエンジンは、ホストマシンからのRDMA/RoCEトラフィックの送信を容易にするとともに、別のホストマシンによって送信されたRDMA/RoCEトラフィックの受信を容易にするように構成されている。特定の実施形態において、RoCEエンジンは、計算インスタンスのアプリケーションメモリにおいてアドレス範囲を識別する命令(例えば、メタデータ)を受信し、このアドレス範囲は、RDMAおよびRoCEを使用してターゲット計算インスタンスのアプリケーションメモリに転送されるデータのブロックを表す。例えば、RoCEエンジン610は、データ転送のためにセットアップされたRDMAチャネルを識別する情報と、RDMAを使用して計算インスタンスA-1 604のアプリケーションメモリから(すなわち、ホストマシン602によって提供されるA-1のアプリケーションメモリから)ホストマシン622上の計算インスタンスA-2 624のアプリケーションメモリに(すなわち、ホストマシン622によって提供されるA-2のアプリケーションメモリに)転送されるデータのブロックを表すアドレス範囲とを受信し得る。RoCEエンジンは、ソース計算インスタンスのアプリケーションメモリからのデータにアクセスし、ターゲットまたは宛先計算インスタンスへのデータの通信を可能にする適切なパケットフォーマットでデータをパケット化し(すなわち、データのためのレイヤ2フレームを生成して組み立てて)、次いで、パケットをTORスイッチ(例えば、データを宛先計算インスタンスに転送するために使用されるスイッチファブリック内のリーフスイッチ)に通信するように構成されている。したがって、RoCEエンジンはオフロードエンジンであり、ホストマシンのCPUまたはOSはデータ転送に関与しなくてもよい。そのようなオフローディングは、データ転送に関係するレイテンシを減少させる。
【0149】
例えば、RoCEエンジン610は、ヘッダ(例えば、UDPヘッダおよびIPヘッダ)およびVLANタグ(例えば、仮想関数612および614によって強制される)をデータペイロードに付与して、VLANタグ付きRoCEv2フォーマットパケットを作成し、ワイヤ(例えば、イーサネットケーブル)を介してスイッチファブリック640のリーフスイッチ(例えば、TORスイッチ642)にRoCEv2パケットを送信するように構成され得る。スイッチファブリックからRoCEエンジンに入来するトラフィックに関して、RoCEエンジン610は、TORスイッチ642からRoCEv2パケットを受信し、UDPヘッダおよびIPヘッダを除去し、VLANタグを取り去り、(例えば、ソースホストによって送信されたIBペイロードとしての)結果として得られる各フレームを、パケットが受信されたVLAN IDにマッピングされるSR-IOV仮想関数に転送するように構成され得る。仮想関数は、パケットのデータペイロードを対応するVLAN上の宛先計算インスタンスのメモリ空間に格納するように構成され得る。
【0150】
次いで、RoCE NICによって組み立てられたレイヤ2フレームは、レイヤ3ルーティングプロトコルを使用して、レイヤ3スイッチファブリック内の複数のネットワーキング装置を経由して、宛先またはターゲット計算インスタンスをホストするホストマシンのRoCE NICに通信される。例えば、データがRDMAおよびRoCEを使用して図6における計算インスタンスA-1 604からホストマシン622上の宛先計算インスタンスA-2 624に転送される場合、データペイロードを有するパケットがとる経路は以下の通りである。すなわち、ホストマシン602上のソース計算インスタンスA-1 604→ホストマシン602上のRoCE NIC608→TORスイッチ642→1つまたは複数の中間スイッチ646→TORスイッチ644→ホストマシン622上のRoCE NIC628→ホストマシン622上の計算インスタンスA-2 624である。この通信の一部として、スイッチファブリック640のイングレスエッジ装置を表すTORスイッチ642は、スイッチファブリック640を介してパケットを通信するために使用されるレイヤ3トンネリングプロトコルに対応するラッパー(例えば、1つまたは複数のヘッダを含む)内のパケットをカプセル化することによって、RoCE NICから受信されたレイヤ2フレームをレイヤ3パケットに変換するように構成されている。VxLAN、NVGRE、STT、GENEVE、MPLSなどの様々な異なるトンネリングプロトコルが使用されてもよい。次いで、レイヤ3パケットは、TORスイッチ642から1つまたは複数の中間スイッチ646を経由して、スイッチファブリック640のエグレスエッジ装置を表すTORスイッチ644に移動する。TORスイッチ644は、パケットをデカプセル化してそれらをレイヤ2フレームに変換するように構成されており、パケットは、次いで、宛先またはターゲット計算インスタンスA-2 624をホストするホストマシン622上のRoCE NIC628に通信される。次いで、ホストマシン622上のRoCE NIC628は、データを宛先計算インスタンスA-2 624に転送する。パケットは、パケットデータを計算インスタンスA-2 624のアプリケーションメモリに書き込むことによって計算インスタンスA-2に転送され得る。RDMAおよびRoCEを使用したマルチテナントホストマシンから別のマルチテナントホストマシンへのデータの転送を容易にするために様々なネットワーク要素によって実行される処理に関連する詳細については、以下で説明する。
【0151】
別の例として、計算インスタンスB-1 606がデータを計算インスタンスB-2 626に転送したい場合、パケットがとる経路は以下の通りである。すなわち、ホストマシン602上のソース計算インスタンスB-1 606→ホストマシン602上のRoCE NIC608→TORスイッチ642→1つまたは複数の中間スイッチ646→TORスイッチ644→ホストマシン622上のRoCE NIC628→ホストマシン622上の計算インスタンスB-2 626である。このように、スイッチファブリック640は、レイヤ2RoCEトラフィックの通信のために顧客またはテナントによって共有される。同一のスイッチファブリックを使用して、異なるテナントのRoCEパケットを通信する。異なるテナントからのRoCEパケット(および任意に、通常の非RoCE IPトラフィック)が同一の共通のネットワークファブリックを流れている。この共通のネットワークファブリック内のトラフィックの隔離は、パケットに関連付けられたタグを使用してなされる。各顧客(例えば、VLANまたはピアVLAN上の顧客の計算インスタンス)は、RoCEトラフィックを転送するための専用のレイヤ2ネットワークを有していることを経験するが、実際には、トラフィックは、共有のクラウドベースのレイヤ3スイッチファブリックネットワークを介して運ばれる。顧客のアプリケーションに従ってRoCEトラフィックを生成するホストマシンは、レイヤ3パケットではなくレイヤ2イーサネットフレーム(レイヤ2パケットとも呼ばれる)を生成する。
【0152】
図7A図7Bおよび図7Cは、特定の実施形態に従って、レイヤ3ルーティングプロトコルを使用して、共有のレイヤ3スイッチファブリックを介したマルチテナントソースホストマシン上のソース計算インスタンスからマルチテナント宛先ホストマシン上の宛先計算インスタンスへのRDMAデータ転送を実行するための処理を示す概略フローチャート700を示す図である。図7A図7Cに示す処理は、それぞれのシステムの1つまたは複数の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実装されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に格納されてもよい。図7A図7Cに示して以下で説明する方法は、例示的且つ非限定的であるよう意図されている。図7A図7Cは、様々な処理ステップが特定のシーケンスまたは順序で行われることを示しているが、この描写は限定的であるよう意図されるものではない。特定の代替的な実施形態では、処理は何らかの異なる順序で実行されてもよく、および/または、いくつかのステップは並行して実行されてもよい。図6に示す実施形態などの特定の実施形態において、図7A図7Cに示す処理は、RoCE NIC608および628、スイッチファブリック640のTORスイッチ642および644、ならびにスイッチファブリック640の1つまたは複数の中間スイッチ646によって協働して実行され得る。図7A図7Cに示して以下で説明する方法は、RoCEv2および他の将来のバージョンなどのRoCEの様々なバージョン、ならびにVLANタギングをサポートする他のRDMAプロトコルに従ったレイヤ2RDMAパケットで使用され得る。
【0153】
方法を説明する目的で、図6に示す実施形態を使用した一例として、データは、RDMAおよびRoCEを使用して、ホストマシン602によってホストされる計算インスタンスA-1 604からホストマシン622によってホストされる計算インスタンスA-2 624に転送され、A-1およびA-2は、同一の顧客Aに属しており、同一のVLAN1001上にあるものとする。転送対象のデータを発信する計算インスタンス(例えば、A-1 604)は、ソース計算インスタンスと称され得て、ソース計算インスタンスをホストするホストマシン(例えば、ホストマシン602)は、ソースホストマシンと称され得る。データの転送先の計算インスタンス(例えば、A-2 624)は、宛先またはターゲット計算インスタンスと称され得て、宛先計算インスタンスをホストするホストマシン(例えば、ホストマシン622)は、宛先またはターゲットホストマシンと称される。ソース計算インスタンスおよび宛先計算インスタンスは、仮想マシンまたはベアメタルインスタンスであってもよい。ソースホストマシンおよび宛先ホストマシンは、同一のイーサネットドメイン内にあってもよく、異なるイーサネットドメイン内にあってもよい。
【0154】
702において、ソース計算インスタンスをホストするソースホストマシン上のRoCE NICは、RDMAおよびRoCEを使用してソース計算インスタンスから宛先計算インスタンスに転送されるデータを識別する情報を(例えば、仮想関数から)受信する。例えば、RoCE NICは、ソース計算インスタンスを識別する情報と、ソース計算インスタンスから宛先計算インスタンスに転送されるデータのブロックを識別するメモリアドレス範囲とを受信し得る。図6に示す実施形態では、RoCE NIC608は、ホストマシン602によってホストされる計算インスタンスA-1 604からホストマシン622によってホストされる計算インスタンスA-2 624にデータのブロックが転送されるという情報を受信し得る。
【0155】
704において、RoCE NICは、ソースホストマシン上のソース計算インスタンスのアプリケーションメモリから転送されるデータにアクセスして、転送されるデータのためのレイヤ2 802.1Qタグ付きRoCEパケットを生成し、VLAN情報は、各パケットに付与された802.1Qタグに符号化され、QoS情報は、パケットの1つまたは複数のヘッダに符号化される。各レイヤ2 802.1Qタグ付きRoCEパケットは、1つの802.1Qタグを有していてもよく、または2つ以上の802.1Qタグ(例えば、本開示に記載されている802.1adまたは「Q-in-Qタギング」)を有していてもよい。データは、RoCE NIC上のダイレクトメモリアクセス(DMA)コントローラを使用してメモリからアクセスされてもよく、アクセスされたデータは、次いで、パケットのためのRDMAペイロードチャンクに分解することによってパケット化される。例えば、ソース計算インスタンスから宛先計算インスタンスへの転送のために、1メガバイト(MB)のデータがマーキングされ得る。RoCE NICは、ソース計算インスタンスのアプリケーションメモリからこのデータにアクセスして、データを2キロバイト(KB)のチャンクに分割し得て、各チャンクは、宛先計算インスタンスに転送されるRDMAペイロードを表す。次いで、各ペイロードは、RoCE NICによってパケット化されて、RoCEレイヤ2パケット(または、「フレーム」)が生成される。パケットは、RoCEv2(または他のRoCEプロトコル、またはVLANタギングをサポートする別のRDMAプロトコル)などのRoCEプロトコルの適切なバージョンに従ってフォーマットされる。
【0156】
RoCE NICは、802.1Qタグを各RoCEパケットに追加し、802.1Qタグは、ソース計算インスタンスが属するVLAN(例えば、VLAN識別子)を識別する情報を符号化する。802.1Qプロトコルは、VLANの使用およびイーサネットネットワーク上でのVLANのサポートをカバーする。802.1Qプロトコルは、タグ(802.1Qタグと称される)を使用して、トランクを横断するとともに様々なVLANに属するトラフィックの境界を定める。
【0157】
特定の実施形態において、704における処理は、RoCE NIC上のRoCEエンジン、およびソース計算インスタンスに対応するRoCE NIC上の仮想関数によって協働して実行される。RoCEエンジンは、RoCEパケットを生成することを担当する。RoCEエンジンは、パケットに追加される802.1Qタグに符号化される、VLAN識別子を識別する情報またはパケットのQoS情報を有していなくてもよい。特定の実施形態において、ソース計算インスタンスに対応する仮想関数は、ソース計算インスタンスのVLANを示す特定のVLAN識別子を提供する。このVLAN識別子は、次いで、各パケットに追加される802.1Qタグに符号化される。特定の実装例において、ホストマシン上の仮想関数は、ホストマシンのRoCE NICからスイッチファブリックネットワークの方に出てくるパケットが802.1Q VLANタグを有することを強制するようにハイパーバイザによってプログラムされる。例えば、図6に示す実施形態では、VF VF-A-1 612は、VLAN1001を示すVLAN IDを有するソース計算インスタンスA-1 604からのRoCEパケットのマーキングを強制するように実装され得て、VF VF-B-1 614は、VLAN1002を示すVLAN IDを有するソース計算インスタンスB-1 606からのRoCEパケットのマーキングを強制するように実装され得る。
【0158】
QoS情報は、802.1Qタグ付きRoCEパケットの1つまたは複数の異なる部分に符号化され得る。特定の実装例では、QoS情報は、各パケットのIPヘッダのDSCPビットに符号化される。特定の他の実施形態では、QoS情報は、各パケットのイーサネットヘッダ内の802.1pビットに符号化されてもよい。一般に、QoS情報は、様々なトラフィックフローの優先度(または、クラス)を示す情報を含む。パケットのQoS情報は、パケットをその宛先に転送/ルーティングするのに使用される当該パケットの特定の優先度クラスを指定することができる。例えば、QoS情報は、RoCEパケットに割り当てられた優先度(例えば、高い、低い、など)を識別する情報を含み得る。また、QoS情報は、フロー制御、バッファ割り当て、キューイング、スケジューリングなどに関連する各優先度クラスの様々なパラメータを指定する情報などの他の情報を含み得る。一例において、QoS情報は、RDMA転送を開始する計算インスタンスによって提供される。
【0159】
図8Aは、RoCEプロトコルのバージョン2(RoCEv2)に従ったRoCEパケットフォーマットを示す図である。図8Aに示すように、RoCEv2パケット800は、22バイトのイーサネットヘッダ801と、20バイトのIPヘッダ803と、8バイトのUDPヘッダ804とを含む。イーサネットヘッダ801は、8バイトのプリアンブルフィールド816と、6バイトの宛先MACアドレスフィールド809と、6バイトのソースMACアドレスフィールド810と、2バイトのイーサタイプフィールド811(その値は、ヘッダがIPパケットに付与されることを示す)とを含む。UDPヘッダ804は、RoCEv2を指定する4791という宛先ポート番号を示す値を含む。また、RoCEv2パケット800は、12バイトのインフィニバンド(IB)ベーストランスポートヘッダ805と、RDMAデータペイロード806(約1400バイトまでの長さを有し得る)と、32ビットのRoCEエンドツーエンド不変巡回冗長検査(ICRC:Invariant Cyclic Redundancy Check)フィールド807と、4バイトのホップ・バイ・イーサネット・ホップフレームチェックシーケンス(FCS:Frame Check Sequence)フィールド808とを含む。RoCEv2は、単に一例として示されており、本開示に記載されているシステム、方法および装置は、例えばRDMAトラフィックのVLANタギングをサポートする1つまたは複数の他のプロトコルを使用して同様に実現されてもよいと考えられる。
【0160】
図8Aに示すRoCEv2レイヤ2パケットを生成するための704における処理の一部として、ホストマシン上のRoCE NICは、転送対象のデータにアクセスしてRDMAペイロード806を準備するように構成されている。次いで、RoCE NICは、ヘッダ805,804,803および801(および、チェックフィールド807および808)を追加してRoCEv2レイヤ2パケットを生成するように構成されている。
【0161】
上述したように、仮想関数は、ファブリックに出て行くRDMAパケットが、パケットのソース計算インスタンスが見つけられるVLANを識別するIEEE802.1Qヘッダ(「VLANタグ」とも称されることもある)でタグ付けされることを強制するように(例えば、ホストのハイパーバイザによって)プログラムされる。特定の実施形態において、VLANは、別々の顧客またはテナントに関連付けられるので、関連付けられたVLAN識別子をファブリック内で使用して、レイヤ2における異なるテナント間のトラフィック隔離を強制する。図8Bは、802.1Q VLANタグ付きRoCEv2パケット820のフォーマットを示す図であり、802.1Q VLANタグ付きRoCEv2パケット820は、ソースMACアドレスフィールド810とイーサタイプフィールド811との間に挿入された4バイトのVLANタグ802を含む。VLANタグ802は、値0x8100を有する16ビットのタグプロトコルIDデータフィールド812と、3ビットのユーザ優先度コードポイント(PCP:Priority Code Point)データフィールド813と、1ビットの優先廃棄インジケータデータフィールド814と、VLANを識別する12ビットのVLAN識別子データフィールド815とを含む。特定の実装例において、パケットのVLAN識別子は、このVLAN識別子フィールド815に符号化される。特定の実施形態において、VLANタグ802内のPCPデータフィールド813(「IEEE802.1p」または「802.1p」データフィールドとも呼ばれる)は、パケットのQoS情報(例えば、トラフィッククラス優先度情報)を符号化するのに使用することができる。
【0162】
いくつかの他の実施形態において、QoS情報は、各パケットのIPヘッダ803のDSCPビットに符号化されてもよい。図9Aは、IPヘッダ803のフォーマットを示す図であり、IPヘッダ803は、8ビットのバージョンおよびヘッダ長データフィールド901と、6ビットの差別化されたサービスコードポイント(DSCP:Differentiated Services Code Point)データフィールド902と、2ビットの明示的輻輳通知(ECN)データフィールド903と、16ビットの長さデータフィールド904と、16ビットの識別データフィールド905と、16ビットのフラグメントフラグおよびオフセットデータフィールド906と、8ビットの有効期間(TTL:Time-To-Live)データフィールド907と、8ビットのプロトコルデータフィールド908と、16ビットのヘッダチェックサムデータフィールド909と、4バイトのソースIPアドレスデータフィールド910と、4バイトの宛先IPアドレスデータフィールド911とを含む。RoCEv2パケットでは、プロトコルデータフィールド908は、ヘッダがUDPパケットに付与されることを示す値を有する。DSCPデータフィールド902は、パケットのQoS情報を運ぶのに使用することができる。以下でさらに詳細に説明するように、ECNデータフィールド903は、パケットがソース計算インスタンスから宛先計算インスタンスまでの経路内で輻輳に遭遇したことを示す輻輳情報を示すのに使用することができる。
【0163】
上述したように、QoS情報は、パケットのトラフィッククラスを示すのに使用することができる。例えば、QoS情報は、パケットについて様々なレベルのトラフィッククラス優先度を指定するのに使用することができ、パケットに関連付けられた優先度は、ソースホストマシンから宛先ホストマシンへのネットワーク経路においてパケットを転送する優先度を決定するのに使用される。1つのアプリケーションから発信されるパケットについて指定される優先度は、異なるアプリケーションから発信されるパケットの優先度とは異なっていてもよい。一般に、ネットワークレイテンシの影響を受けやすいアプリケーションに関連付けられたパケットは、ネットワークレイテンシの影響を受けにくいアプリケーションに関連付けられたパケットよりも高い優先度を有する。パケットのQoS情報は、(例えば、計算インスタンス上で実行されるアプリケーションによって)RDMA転送を開始する計算インスタンスによって指定され得る。1つのそのような例では、計算インスタンスを開始することは、所定のクオリティオブサービス(QoS)(例えば、所定のトラフィッククラス)に従ってRDMA転送を実行するように、対応する仮想関数に指示し得て、次いで、仮想関数は、RoCE NIC上のRDMAエンジンに、ソース計算インスタンスのVLANを識別するVLANタグを含むパケットを生成させ、指定されたQoS情報を802.1Qタグ付きRoCEパケットのデータフィールド(例えば、802.1pフィールドまたはDSCPフィールド)に符号化させる。
【0164】
顧客は、QoS値を使用して性能期待値を示すことができる。例えば、顧客は、レイテンシ耐性を有するアプリケーションのために大量のデータ転送を行うRoCEパケットについては低いQoS優先度を指定し得て、および/または、レイテンシの影響を非常に受けやすいアプリケーションのために少量のデータ転送を行うRoCEパケットについてはより高いQoS優先度値を指定し得る。
【0165】
別の例では、QoSデータフィールドの値は、(例えば、RDMA転送タイプへのQoS優先度値の予め定められたマッピングに従って)実行されているRoCE転送のタイプによって示される。例えば、大量のデータ転送を行うRoCEパケットは、レイテンシの影響を非常に受けやすい少量のデータ転送を行うRoCEパケットとは異なるQoSでタグ付けされ得る。大量の転送の例としては、バックアップ、報告またはバッチメッセージを挙げることができ、低レイテンシクリティカルな転送の例としては、輻輳情報通知、クラスタハートビート、トランザクションコミット、キャッシュフュージョン動作などを挙げることができる。
【0166】
例えば、図6において、パケットが、RDMAによってVLAN1001上の計算インスタンスA-1 604から計算インスタンスA-2 624に転送されるデータを表す場合、RoCE NIC608は、転送されるデータのためにレイヤ2 802.1Qタグ付きRoCEパケットを生成し、各パケットは、各パケットのVLAN IDフィールド815がVLAN1001を識別する情報を符号化する802.1Qタグを有する。さらに、各パケットのQoS情報は、パケットのDSCPフィールドおよび/またはPCPフィールドに符号化されてもよい。
【0167】
IEEE802.1Q規格に定義された12ビットのVLANタグフィールドは、最大4096個のVLANを識別することができる。802.1ad Q-in-Q規格(「802.1q-in-802.1q」または「Q-in-Qタギング」または「Q-in-Q規格」とも呼ばれる)は、VLANの数を4096個を超えて拡張するために開発された。Q-in-Q規格によれば、2つ(または、それ以上)の802.1Q VLANタグをパケットに付加することができる。内側タグおよび外側タグと称されるこれら2つのタグは、様々な異なる目的で使用することができる(例えば、内側タグは、追加のセキュリティルールを表すことができる)。例えば、いくつかの実施形態において、内側タグおよび外側タグを使用して、アプリケーションに特有のネットワークエンフォースメントをサポートすることができる。テナントおよびアプリケーションに基づいてパケットを区別することが望ましい場合があり、一方のタグはテナントに対応し、他方のタグはテナントのアプリケーションのうちのある特定のアプリケーションに対応する。1つのそのような例では、同一のサービスVLAN上で同一の顧客について複数の計算インスタンスを実行するように構成されたホストマシンは、顧客VLANタグを使用してサービスVLAN上の複数の計算インスタンスにまたがるトラフィックを分離することができる。代替的にまたは追加的には、同一のサービスVLAN上で同一の顧客の複数のアプリケーションを実行するように構成されたホストマシンは、顧客VLANタグを使用してサービスVLAN上の複数のアプリケーションにまたがるトラフィックを分離してもよい。したがって、特定の状況では、704において実行される処理の一部として、RoCE NICは、Q-in-Q規格に従って2つのタグを各RoCEパケットに付加し得る。例えば、テナントAがシミュレーションアプリケーションとバックアップアプリケーションとを有するなど、テナントが異なるアプリケーションを有する状況では、2つの別々の802.1QタグがRoCEパケットに付加されてもよく、一方のタグは、テナンシ(例えば、テナントA)を識別するVLAN IDを有し、第2のタグは、アプリケーション(例えば、シミュレーション、バックアップ)を識別するVLAN IDを有する。
【0168】
Q-in-Qタグ付きRoCEv2パケット830の例が図8Cに示されている。そのような場合、各パケットは、第1のVLANタグ802(「外側」VLANタグ、「パブリック」VLANタグ、またはサービス-VLAN(S-VLAN)タグとも称される)に加えて、第2のVLANタグ822(「内側」VLANタグ、「プライベート」VLANタグ、または顧客-VLAN(C-VLAN)タグとも称される)を含む。1つまたは複数の追加のVLANタグが同様にQ-in-Qタグ付きRoCEv2パケットに追加されてもよい。
【0169】
図7Aに戻って、706において、802.1Qタグ付きRoCEパケットは、ソースホストマシン上のRoCE NICからソースホストマシンに接続されたTORスイッチに転送される。802.1Qタグ付きRoCEパケットを受信するTORスイッチは、スイッチファブリックのイングレスエッジ装置を表すので、イングレスTORスイッチとも称され得る。TORスイッチは、ソースホストマシン上のソース計算インスタンスから宛先ホストマシン上の宛先計算インスタンスへのパケットの転送に使用されるスイッチネットワークまたはスイッチファブリックの最下層(または、リーフレベル)のネットワーキング装置を表す。例えば、図6において、RoCE NIC608によって生成された802.1Qタグ付きRoCEパケットは、TORスイッチ642に通信され、TORスイッチ642は、スイッチファブリック640内の層-0スイッチである。
【0170】
図6における実施形態および図7A図7Cにおけるフローチャートは、TORスイッチによって実行される処理を説明しているが、この例は限定的であるよう意図されるものではない。一般に、RoCEパケットは、ソースホストマシンから、レイヤ2機能(例えば、スイッチ)を提供する、レイヤ3機能(例えば、ルータ)を提供する、またはレイヤ2機能もレイヤ3機能も提供するネットワーキング装置に通信され得る。例えば、図6に示すTORスイッチ642および644は、レイヤ2機能もレイヤ3機能も提供することができる。一般的に言って、ソースホストマシンからRoCEパケットを受信するネットワーキング装置は、ソースホストマシンから宛先ホストマシンへのデータの転送に使用されるスイッチファブリックのエッジ装置である。
【0171】
ソースホストマシン602は、イーサネットケーブル(例えば、銅、光ファイバなど)を介してTORスイッチ642に接続することができる。特定の実施形態において、パケットは、TORスイッチ642のトランクポートに到着する。トランクポートは、パケットに符号化されたVLAN情報を用いてトラフィック分離が行われる間に、複数のVLANに属するパケットが入ってくることを可能にし得る。例えば、計算インスタンスA-1 604から転送されるデータを表すRoCEパケットは、VLAN1001を識別するタグでタグ付けされ、計算インスタンスB-1 606から転送されるデータを表すRoCEパケットは、VLAN1002を識別するタグでタグ付けされる。
【0172】
708において、パケットを受信したイングレスTORスイッチ(例えば、TORスイッチ642)は、中間スイッチ646を経由して転送される各レイヤ2 802.1Qタグ付きRoCEパケットをレイヤ3パケットに変換し、レイヤ3パケットのフォーマットは、スイッチファブリックを介してパケットを通信するために使用される特定のオーバーレイカプセル化プロトコル(OEP:Overlay Encapsulation Protocol)に基づく。例えば、仮想拡張可能LAN(VxLAN)、汎用ルーティングカプセル化を使用したネットワーク仮想化(NVGRE:Network Virtualization using Generic Routing Encapsulation)、汎用ネットワーキング仮想化カプセル化(GENEVE)、MPLS、ステートレストランスポートトンネリング(STT:Stateless Transport Tunneling)などの様々な異なるオーバーレイカプセル化プロトコルが、スイッチファブリックを介したRoCEパケットの通信に使用されてもよい。例えば、図6における実施形態では、イングレスTORスイッチ642は、RoCE NIC608から802.1Qタグ付きRoCEパケットを受信して、パケットをカプセル化することによって、708において説明したように各パケットを変換する。カプセル化は、レイヤ3ルーティングプロトコルを使用してレイヤ3スイッチファブリックを介してパケットを通信するために使用されるオーバーレイカプセル化プロトコルに対応するラッパーをパケットに追加することによって実行され、ラッパーは、1つまたは複数のヘッダを含む。(完璧を期するために、方法700を実現するいくつかの環境では、イングレスTORスイッチは、ソース計算インスタンスと同一のラック内の宛先計算インスタンスに向けられる802.1Qタグ付きRoCEパケットをソース計算インスタンスから受信し得る、ということに留意されたい。そのような場合、イングレスTORスイッチは、708以下でパケットを処理することなく、レイヤ2トランスポートによってパケットを(例えば、それぞれのRoCE NICを経由して)宛先計算インスタンスに転送し得る。)
708における処理の一部として、イングレスTORスイッチ642は、使用中のオーバーレイカプセル化プロトコルに対応する適切な1つまたは複数のヘッダを生成し、当該ヘッダを含むラッパーを、受信された各レイヤ2 802.1Qタグ付きRoCEパケットに追加して、パケットをレイヤ3パケットに変換し、パケットに追加されたオーバーレイカプセル化プロトコルは、スイッチファブリック640内のネットワーキング装置に見える。レイヤ2フレームは、レイヤ3パケットに変換されて、これらのパケットをソースホストマシンに接続されたTORスイッチ642から宛先ホストマシン622に接続されたTORスイッチ644にルーティングすることが可能になり、このルーティングは、レイヤ2転送プロトコルよりもロバストであって拡張可能であるレイヤ3ルーティングプロトコルを使用して、レイヤ3スイッチファブリック640を介して行われる。
【0173】
708において実行される処理の一部として、708-1において、受信された各802.1Qタグ付きRoCEパケットについて、TORスイッチ642は、受信されたパケットからVLAN情報を決定して、708においてパケットに追加されるラッパー内のフィールド(または、複数のフィールド)に当該情報をマッピングまたは変換する。このように、VLAN識別子情報は、708においてパケットに追加され、且つ、スイッチファブリック640内の様々なネットワーキング装置に見えるレイヤ3ヘッダにマッピングされる。レイヤ3パケットは、708においてレイヤ2パケットに追加される少なくとも1つの外側ヘッダを含む。
【0174】
例えば、スイッチファブリック640を介してパケットを通信するためのレイヤ3カプセル化プロトコルとしてVxLANプロトコルが使用される場合、708において、レイヤ2 802.1Qパケットは、708において(VxLANラッパーの他のフィールドの中の)VxLANヘッダを受信されたパケットに追加することによって、VxLANパケットに変換される。この動作の一部として、708-1において、TORスイッチ642は、パケットの802.1Qタグに符号化されたVLAN識別子情報を決定して、708においてパケットに追加されるVxLANヘッダ内のフィールドに当該情報をマッピング(または、符号化)する。特定の実装例において、RoCEパケットの802.1Qタグ内のVLAN情報は、パケットに追加されたVxLANヘッダ内のVNIフィールドにコピーされた対応する固有のVNIに(例えば、VNI-VLANマップに従って)マッピングされる。このように、特定のテナントも識別することができる802.1Qタグ内のVLAN識別子情報は、パケットのオーバーレイカプセル化プロトコルヘッダ内の対応する識別子に含まれるか、または順方向に運ばれる。
【0175】
RoCEパケットが2つ以上のVLANタグを有する場合(例えば、Q-in-Qタグ付きRoCEパケット830)、TORスイッチ642は、VNI-VLANマップに従ってRoCEパケットの外側タグ内のVLAN IDを対応するVNIにマッピングする。(例えば、テーブルとして)TORスイッチ642のメモリに格納され得るVNI-VLANマップは、TORスイッチ642に割り当てられたVNIとVNIが割り当てられるVLANとの間の一対一対応である。VLANは、スイッチに対して局所的にしか重要性を持たないので、同一のVLAN IDをファブリック内の他の場所の異なるVNIにマッピングすることができ(便宜上、ファブリック内の複数のスイッチにおいて同一のVNI-VLANマッピングを使用することが望ましい場合がある)、および/または、同一のVNIをファブリック内の他の場所の異なるVLAN ID(例えば、同一のテナントに割り当てられた別のVLAN ID)にマッピングすることができる。VNIは、対応するレイヤ3カプセル化パケットの少なくとも1つの外側ヘッダ(例えば、カプセル化プロトコルヘッダ)の対応するデータフィールドにコピーされ、それによって、L3ネットワーク境界を越えてマルチテナンシを拡張する。オーバーレイカプセル化プロトコルがVxLAN(または、GENEVE)である場合、VNIは、レイヤ3カプセル化パケットのVxLAN(または、GENEVE)ヘッダの24ビットのVNIフィールドに保持される。オーバーレイカプセル化プロトコルがNVGREである場合、VNIは、レイヤ3カプセル化パケットのNVGREヘッダの24ビットの仮想サブネットID(VSID:Virtual Subnet ID)フィールドに保持される。オーバーレイカプセル化プロトコルがSTTである場合、VNIは、レイヤ3カプセル化パケットのSTTヘッダの64ビットのコンテキストIDフィールドに保持される。
【0176】
さらに、708における処理の一部として、708-2において、受信された各802.1Qタグ付きRoCEパケットについて、TORスイッチ642は、受信されたパケットからQoS情報を決定して、708においてパケットに追加されるヘッダ内のフィールド(または、複数のフィールド)に当該情報をマッピングまたは変換する。このように、QoS情報は、708においてパケットに追加される、スイッチファブリック640内の様々なネットワーキング装置に見えるラッパー(例えば、外側ヘッダ)の一部にマッピングされる。
【0177】
例えば、スイッチファブリック640を介してパケットを通信するためのレイヤ3カプセル化プロトコルとしてVxLANプロトコルが使用される場合、708において、レイヤ2 802.1Qパケットは、708において(VxLANヘッダといくつかの外側ヘッダとを含む)VxLANエンベロープまたはラッパーを受信されたパケットに追加することによって、VxLANパケットに変換される。この動作の一部として、708-2において、TORスイッチ642は、受信されたパケットに符号化されたQoS情報を決定して、708においてパケットに追加されるVxLANラッパー内のフィールドに当該情報をマッピング(または、符号化)する。上述したように、実装例に応じて、QoS情報は、受信されたレイヤ2パケットの1つまたは複数の異なる部分に符号化されてもよい。例えば、QoS情報は、802.1QタグのPCPまたは802.1pビットに符号化されてもよく、および/または、受信されたレイヤ2パケットのイーサネットヘッダのDSCPフィールドに符号化されてもよい。708-2の一部として、TORスイッチ642は、このQoS情報を決定して、708においてパケットに追加されるVxLANラッパー内のフィールド(または、複数のフィールド)に当該QoS情報をマッピングまたは変換する。特定の実装例において、RoCEパケットからのQoS情報は、VxLANラッパーの外側IPヘッダ内のDSCPフィールドにマッピングされる。このように、レイヤ2 802.1Qタグ付きRoCEパケット内のQoS情報は、スイッチファブリック640内の様々なネットワーキング装置に見えるようになる態様でVxLANパケットのレイヤ3ラッパーに含まれるか、または順方向に運ばれる。
【0178】
図10は、OEPとしてVxLANを適用するイングレスTORスイッチによって生成されるレイヤ3カプセル化パケット1000(VxLANパケットとも呼ばれる)のフォーマットを示す図である。図10に示すように、VxLANパケット1000は、外側イーサネットヘッダ1010と、外側IPヘッダ1020と、外側UDPヘッダ1040と、VxLANヘッダ1050と、元のパケット(例えば、RoCEv2パケット)1060と、フレームチェックシーケンス(FCS:Frame Check Sequence)1070とを含む。708において実行される処理では、VxLANがオーバーレイカプセル化プロトコルである場合、802.1Qタグ付きRoCEパケットをカプセル化することの一部として、TORスイッチは、「元の」802.1Qタグ付きRoCEパケットの外側にVxLANヘッダ1050を置き、次いでVxLANヘッダの外側に外側UDPヘッダ1040を置き、次いで外側UDPヘッダの外側に外側IPヘッダ1020を置き、次いで外側IPヘッダの上に外側イーサネットヘッダ1010を追加する。
【0179】
外側イーサネットヘッダ1010は、宛先MACアドレスフィールド1011と、ソースMACアドレスフィールド1012と、(任意に)VLANタイプフィールド1013と、(任意に)VLAN IDタグ1014と、値0x0800を保持するイーサタイプフィールド1015とを含む。外側IPヘッダ1020は、8ビットのバージョンおよびヘッダ長データフィールド1021と、6ビットのDSCPデータフィールド1022と、2ビットのECNデータフィールド1024と、16ビットの長さデータフィールド1024と、16ビットの識別データフィールド1025と、16ビットのフラグメントフラグおよびオフセットデータフィールド1026と、8ビットの有効期間(TTL)データフィールド1027と、(UDPを示す)値17を保持する8ビットのプロトコルデータフィールド1028と、16ビットのヘッダチェックサムデータフィールド1029と、イングレスTORスイッチのIPアドレスを示す4バイトのソースIPアドレスデータフィールド1030と、エグレスTORスイッチのIPアドレスを示す4バイトの宛先IPアドレスデータフィールド1031とを含む。外側UDPヘッダ1040は、元のRDMAパケットからの情報のハッシュである値を保持し得るソースポートフィールド1041と、値4789を保持する宛先(VxLAN)ポートフィールド1042と、UDP長フィールド1043と、チェックサムフィールド1044とを含む。VxLANヘッダ1050は、8ビットのフラグフィールド1051と、VNIを運ぶ24ビットのVNIフィールド1053と、2つの予約フィールド1052および1054とを含む。
【0180】
708において「元の」802.1Qタグ付きRoCEパケットをカプセル化することによってレイヤ3VxLANパケットを作成することの一部として、TORスイッチは、VLAN ID情報(例えば、テナンシ情報)、QoS情報(例えば、トラフィッククラス)、および元のパケットからの輻輳情報を、元の802.1Qタグ付きRoCEパケットに追加されたヘッダのうちの1つまたは複数のヘッダの様々なフィールドに符号化する。例えば、特定の実装例において、VLAN IDフィールドは、VNIにマッピングされてVNIフィールド1053に保持され、RoCEパケットからのQoS情報は、IPヘッダ1020内のDSCPフィールド1022にコピーされ(または、値にマッピングされて保持され)、輻輳は、ECNフィールド1023にビット(ECNビットと称される)を設定することによって知らせることができる。このように、(例えば、図9におけるDSCPフィールド902からの)RoCEパケットのIPヘッダのDSCPデータフィールド内のQoS情報は、カプセル化VxLANパケットの外側IPヘッダ1020のDSCPデータフィールド1022にコピーまたは別様にマッピングされることができる。RoCEパケット内のQoS情報がRoCEパケットの802.1QタグのPCPデータフィールド813に符号化される実施形態では、当該情報は、VxLANパケットの外側IPヘッダ1020のDSCPデータフィールド1022にもマッピングされてもよい。
【0181】
したがって、708において、オーバーレイカプセル化プロトコルラッパーがRoCEパケットに追加され、RoCEパケットからのVLAN IDおよびQoS情報が、スイッチファブリック内の装置に見える態様でオーバーレイカプセル化プロトコルラッパーにマッピングされて符号化される。図7Bを参照して、710において、708において生成されたカプセル化レイヤ3パケットは、ソースホストマシンからパケットを受信するTORスイッチから、宛先ホストマシンに接続されたTORスイッチに、スイッチファブリックを介してルーティングされる。特定の実施形態において、パケットは、転送されて、トンネル(例えば、VxLANオーバーレイカプセル化プロトコルが使用される場合、VxLANトンネル)を通じて送信され、このトンネルは、ソースホストマシンに接続されたTORスイッチから宛先ホストマシンに接続されたTORスイッチにスイッチファブリックを介してパケットを運ぶ。スイッチファブリック内でパケットがとる経路は、複数のネットワーキング装置を横断し得て、各装置は、宛先ホストマシンに接続されたTORスイッチへのパケットの通信を容易にするために、ネットワーキング装置のイングレスポート経由でパケットを受信し、ネットワーキング装置のエグレスポート経由でネクストホップネットワーキング装置にパケットを転送するように構成されている。例えば、図6に示す実施形態では、カプセル化レイヤ3パケットは、スイッチファブリック640の1つまたは複数の中間スイッチ646を経由してTORスイッチ642からTORスイッチ644に転送される。
【0182】
708において、レイヤ2 802.1Q RoCEパケットからのVLAN IDおよびQoS情報を、レイヤ3カプセル化パケットのラッパーで運ばれる情報に変換することによって、VLAN情報(例えば、テナンシ情報)およびQoS情報は、レイヤ3ルーティングプロトコルを使用してパケットをルーティングすることを目的として、スイッチファブリック640内のスイッチおよびネットワーキング装置に見えるようになる。710における処理の一部として、TORスイッチ642および644を含む、レイヤ3カプセル化RoCEパケットを受信して転送するスイッチファブリック640内の各ネットワーキング装置は、710-1において、パケットのカプセル化ラッパーに指定されたQoS情報に従って、レイヤ3転送に基づいてパケットを転送するように構成されている。特定の実装例において、パケットを受信する各ネットワーキング装置は、異なるQoS優先度レベルに対応する複数のRDMAデータキューを有し得る。パケットを受信すると、ネットワーキング装置は、カプセル化ラッパーの1つまたは複数のフィールドから(または、パケットを受信する第1のTORスイッチでは、レイヤ2ヘッダから)パケットのQoS情報を決定して、QoS情報によって指定された優先度レベルに対応するRDMAデータキューにパケットをキューイングするように構成されている。次いで、パケットは、キューの特定の優先度に従って、デキューされてネットワーキング装置から転送される。複数のRDMAデータキューは、例えば1つまたは複数のバッファを使用して実装され得て、ネットワーキング装置は、所定の優先度レベル(例えば、トラフィッククラス)に従って複数のキューの間で入来パケットを分配するように構成されたエンキュー論理、および、所望のスケジューリングスキーム(例えば、重み付けラウンドロビンスケジューリングおよび/または厳密な優先度スケジューリング)に従って複数のキューを供給するように構成されたデキュー論理も含み得る。マーチャントシリコンを使用してネットワーキング装置を実装する場合、比較的少量のバッファを最大限に活用することが望ましい場合がある。例えば、複数のキューの少なくとも一部として使用するために、(例えば、使用中でないキューから)未使用のバッファを転用することが望ましい場合がある。例えば、マルチキャストトラフィックのサポートを除外するように環境600(例えば、TORスイッチ642および644、スイッチファブリック640)の少なくとも一部を実装することが望ましい場合があり、そのような場合、マルチキャストトラフィックを格納するために以前に割り当てられたバッファは、その代わりに複数のキューのためのストレージとしてプログラムし直すことができる。
【0183】
710の一部として、710-2において、レイヤ3カプセル化RoCEパケットを受信して転送するスイッチファブリック内の各ネットワーキング装置は、輻輳を経験すると、パケットのレイヤ3カプセル化ラッパーの外側ヘッダのフィールドをマーキングすることによって輻輳を知らせることができる。特定の実施形態において、輻輳情報を指定するために、IPプロトコルの概念である明示的輻輳通知(ECN)と呼ばれる機構がRoCEプロトコルによって使用される。この機構に従って、輻輳情報を指定または符号化するためにパケットのIPヘッダにおけるECNビットが使用される。したがって、710-2における処理の一部として、パケットを受信して転送するネットワーキング装置が輻輳を検出する(例えば、バッファ占有率が閾値を超えることを検出する)と、当該ネットワーキング装置は、パケットのオーバーレイカプセル化プロトコルラッパーの外側IPヘッダにECNビットを設定することによって輻輳を知らせることができる。例えば、VxLANがオーバーレイカプセル化プロトコルである場合、外側IPヘッダ1020のECNフィールド1023におけるビットは、(例えば、ビットがまだ設定されていなければ)輻輳を知らせるように当該ネットワーキング装置によって設定され得る。
【0184】
このように、パケットがスイッチファブリックを通って移動するときに、輻輳情報は、パケットに含まれて更新され、パケットによってパケットの宛先に運ばれる。例えば、図6に示す実施形態では、パケットがソースホストマシン602から宛先ホストマシン622に移動する際にスイッチファブリック640内の一連のネットワーキング装置を通って移動するときに、パケットが横断するネットワーキング装置のいずれかは、パケットのレイヤ3カプセル化ラッパーに輻輳ビットを設定する(例えば、外側IPヘッダのECNフィールドにビットを設定する)ことによって輻輳を知らせることができる。一連のネットワーキング装置は、パケットが横断する経路内に、TORスイッチ642と、TORスイッチ644と、任意の中間スイッチ646とを含む。
【0185】
パケットにおける輻輳の表示またはマーキングは、パケットをソースホストマシンから宛先ホストマシンにルーティングするスイッチファブリック内のネットワーキング装置のいずれかによって行うことができる。エグレスTORは、ECNビットをレイヤ3ラッパーから内側パケットのIPヘッダにコピーし、内側パケットは、レイヤ2として宛先ホストマシンに送信される。このように、輻輳情報は、宛先ホストマシンまでずっとパケットで運ばれる。輻輳情報は、ソースおよび宛先計算インスタンスおよびホストマシンを含むレイヤ2ネットワークの境界、ならびに、スイッチファブリック内のTORスイッチおよび中間スイッチを含むレイヤ3ネットワークの境界を越えて運ばれる。
【0186】
従来から、RoCEは、輻輳制御のために、レイヤ2優先度フロー制御(PFC:Priority Flow Control)、またはECN、またはPFCとECNとの組み合わせに依拠している。優先度フロー制御(PFC)を実行するようにTORスイッチ(例えば、TORスイッチ642および644)を実装することが望ましい場合がある。PFC対応スイッチの受信バッファが満たされて閾値レベルになると、スイッチは、対応する優先度クラスのPAUSEフレームを送信者に戻す。PFCは、最大8個の優先度クラスを提供し、受信バッファの先頭のパケットのPCP値を、PAUSEフレームによって示される優先度クラスとして使用するように(代替的には、PAUSEフレームによって示される優先度クラスへのパケットのDSCP値のマッピングを使用するように)スイッチを実装することが望ましい場合がある。
【0187】
ある顧客のRDMAトラフィックを一時停止させるための輻輳制御が別の顧客のRDMAトラフィックを一時停止させないようにアプリケーション毎に輻輳制御を実装することが望ましい場合がある。PAUSEフレームは、送信者に、示された優先度クラスの全てのトラフィックを一時停止させるため、複数の顧客に影響を及ぼす可能性があるので、いずれのPAUSEフレームもTORスイッチのファブリック側を超えて移動することを防止するように各TORスイッチを構成することが望ましい場合がある。例えば、(例えば、PAUSEフレームのみをホストまたはTORスイッチの別の入力ポートに伝えるようにTORスイッチの各入力ポートを構成することによって)PFCを各TORスイッチ642および644のホスト向きインターフェイスに制限することが望ましい場合がある。このように局所的にPAUSEフレームを含むことは、大きなファブリック内での輻輳拡散の回避を手助けすることができ、および/または、ライブロックアップの回避を手助けすることができる。
【0188】
712において、宛先ホストマシンに接続されたTORスイッチ(スイッチファブリックのエグレスエッジ装置を表すので、エグレスTORスイッチとも称される)は、レイヤ3カプセル化RoCEパケットを受信する。例えば、図6に示す実施形態では、エグレスTORスイッチ644がパケットを受信する。
【0189】
714において、受信された各レイヤ3カプセル化パケットについて、TORスイッチは、パケットのレイヤ3オーバーレイカプセル化プロトコルラッパーから輻輳情報を決定して、レイヤ3ラッパーによってカプセル化されたレイヤ2 802.1Qタグ付きRoCEフレームに輻輳情報をマッピングまたは変換する。このように、エグレスTORスイッチによって受信された各レイヤ3カプセル化RoCEパケットについて、スイッチファブリック内でパケットが横断する経路に沿って1つまたは複数のネットワーキング装置(例えば、TORスイッチ642、1つまたは複数の中間スイッチ646)によって知らせられたであろう輻輳情報であって、且つ、レイヤ3オーバーレイカプセル化プロトコルラッパーのヘッダのフィールド(例えば、ECNフィールド)に符号化された輻輳情報が、802.1Qタグ付きRoCEレイヤ2フレームのヘッダにマッピングされて保持される。特定の実装例において、レイヤ3ラッパーから(例えば、VxLANパケットのIPヘッダ1020内のECNフィールド1023から)決定された輻輳情報は、レイヤ2 802.1Qタグ付きRoCEフレームのIPヘッダのECNフィールド(例えば、図9に示すECNフィールド903)にコピーされる。
【0190】
716において、受信された各レイヤ3カプセル化RoCEパケットについて、エグレスTORスイッチは、708においてパケットに追加されたカプセル化ラッパー(例えば、外側イーサネットヘッダ1010、外側IPヘッダ1020、外側UDPヘッダ1040、VxLANヘッダ1050およびFCS1070)を除去して、内側レイヤ2 802.1Qタグ付きRoCEパケットを回復することによって、パケットをデカプセル化する。例えば、VxLANラッパーがパケットに追加された場合、当該ラッパーは、802.1Qタグ付きRoCEパケットを残すように714において除去される。714において輻輳情報が802.1Qタグ付きRoCEパケットのヘッダにマッピングされるので、レイヤ3オーバーレイカプセル化プロトコルラッパー内の輻輳情報は、レイヤ3カプセル化パケットのデカプセル化の結果として失われることはない。714における輻輳情報のマッピング(例えば、コピー)は、716におけるデカプセル化の前、最中または後に実行されてもよい。
【0191】
716における処理の一部として、レイヤ3オーバーレイカプセル化プロトコルラッパーからレイヤ2 802.1Qタグ付きRoCEパケット内のヘッダに輻輳情報を変換することに加えて、エグレスTORスイッチ644は、それ自体が、輻輳を経験すると輻輳を知らせるようにECN輻輳ビットを設定し得る。
【0192】
図7Cを参照して、718において、デカプセル化レイヤ2 802.1Qタグ付きRoCEパケットは、エグレスTORスイッチによって宛先ホストマシンに転送される。例えば、図6における実施形態では、TORスイッチ644によってデカプセル化されたRoCEパケットは、宛先ホストマシン622に転送される。宛先ホストマシン上で、これらのパケットは受信されて、宛先ホストマシン上のRoCE NICによって処理される。
【0193】
720において、受信された各802.1Qタグ付きRoCEパケットについて、宛先ホストマシン上のRoCE NICは、受信されたパケットのヘッダにおいて輻輳が知らせられるかどうかを確認する。例えば、パケットのIPヘッダのECNビットが設定されると、輻輳を知らせることができる。720においてパケットが輻輳を示すと判断されると、722において、RoCE NICは、輻輳を示し、且つ、データ転送速度を減速させるように送信者に要求する応答をパケットの送信者(例えば、ソースホストマシン上のRoCE NIC)に送信する。ECNプロトコルを使用した特定の実装例では、応答は、宛先ホストマシン上のRoCE NICからソースホストマシン上のRoCE NICに送信される輻輳通知パケット(CNPパケット)の形態である。例えば、RoCE NIC(例えば、RDMA NICカードおよび対応するソフトウェアドライバ)にデータセンタ量子化輻輳通知(DCQCN:Data Center Quantized Congestion Notification)が実装されて、ECN情報を使用して、CNPパケットを送信することによってフロー制御を実行して、送信者に輻輳について知らせることができる。これらのCNPパケットは、ネットワーク内に輻輳があることをソースホストマシンに知らせて、RoCEパケットを送信している速度を減速させるようにソースホストマシンに要求する。CNPパケットは、受信されたレイヤ2RoCEパケットにおける情報(例えば、ソースMACアドレスおよび/またはソースIPアドレス)から識別される適切な送信者に送信される。そのような通知を受信すると、応答して、送信者(例えば、ソースホストマシン上のRoCE NIC)は、それに従ってRoCEパケットの送信を減速させることができる。CNPパケットおよびCNPパケットが宛先ホストマシンからソースホストマシンにどのように通信されるかに関連するさらなる詳細は、以下のとおりである。
【0194】
特定の実装例において、送信者は、データ送信速度の減少率を計算するアルゴリズムを使用し得る。例えば、第1のCNPパケットを受信すると、送信者(例えば、ソースホストマシン上のRoCE NIC)は、ある特定の割合だけその送信速度を減少させ得る。別のCNPパケットを受信すると、送信者は、さらなる割合量だけその送信速度をさらに減少させ得る、などである。このように、送信者は、CNPパケットの受信に応答して適応速度制御を実行することができる。
【0195】
724において、受信された各802.1Qタグ付きRoCEパケットについて、宛先ホストマシン上のRoCE NICは、対応する仮想関数(VF)によって、パケットからRDMAデータペイロードを取り出して宛先計算インスタンスの宛先ホストマシン上のアプリケーションメモリにデータを転送する。特定の実施形態において、宛先計算インスタンスに対応するRoCE NIC上の仮想関数は、宛先ホストマシンのアプリケーションメモリへのDMA転送によってRDMAデータペイロードを宛先計算インスタンスのメモリ空間に転送するようにRoCE NICのRoCEエンジンを制御するように構成されている。この動作は、ソース計算インスタンスから宛先計算インスタンスへのRDMAデータ転送を完了させる。
【0196】
上述したように、テナントを識別することができるVLAN識別子は、RoCEパケットに追加される802.1Qタグ、例えば802.1QタグのVLAN IDフィールドに含まれる。また、VLAN IDまたはテナンシ情報は、ソースホストマシンに接続されたTORスイッチによって802.1Qタグ付きRoCEパケットに追加されるレイヤ3オーバーレイカプセル化プロトコルラッパーに含まれるVNIにマッピングされる。VLAN識別子(または、テナンシ情報)をレイヤ3カプセル化ラッパーのフィールド内の識別子にマッピングすることにより、テナンシ情報がレイヤ3スイッチファブリック内のネットワーキング装置に見えるようになる。これらのネットワーキング装置は、この情報を使用して、異なる顧客またはテナンシに属するトラフィックを分離する。
【0197】
パケットに関連付けられたQoS情報も、ソースホストマシン上のRoCE NICから、宛先ホストマシン上のRoCE NICまでずっと保持される。レイヤ2RoCEパケットに符号化されたQoS情報は、当該情報を、イングレスTORスイッチによって802.1Qタグ付きRoCEパケットに追加されるレイヤ3オーバーレイカプセル化プロトコルラッパーに符号化することによって、スイッチファブリック内のネットワーキング装置に見えるようになる。これにより、スイッチファブリック内のネットワーキング装置は、各パケットに関連付けられたQoS情報に従って、レイヤ3ルーティングプロトコルを使用して、スイッチファブリックを通るRoCEトラフィックをルーティングすることができる。
【0198】
スイッチファブリック内のネットワーキング装置はいずれも、パケット毎に輻輳を知らせることができる。この輻輳情報は、パケットがソースホストマシンに接続されたTORから宛先ホストマシンに接続されたTORへスイッチファブリックを通過するとき、パケット内に保持される。宛先ホストマシンに接続されたTORスイッチにおいて、レイヤ3カプセル化ラッパーからの輻輳情報は、RoCEパケットヘッダ(例えば、RoCEパケットのIPヘッダ内のECNビット)に変換されるため、保存されて、宛先ホストマシンが利用できるようにされる。次いで、宛先ホストマシンは、CNPパケットを送信することによって輻輳情報に応答することができる。
【0199】
輻輳通知情報のルーティング
一般に、RDMAデータ転送は、スイッチファブリックネットワーク内の輻輳によって引き起こされ得るネットワークレイテンシの影響を非常に受けやすい。RDMA輻輳通知パケット(CNPパケット)は、RDMA輻輳管理(フロー制御)を知らせることを手助けするという点において非常に重要である。そのため、CNPパケットは、大きなネットワーク帯域幅を必要としないが、パケットロスおよびネットワークレイテンシの影響を非常に受けやすい。したがって、受信されたパケットによる輻輳の通知に応答して宛先ホストマシンによって送信されるCNPパケットは、最小限のレイテンシでソースホストマシンに到達するように高い優先度を与えられて、輻輳に起因するデータパケットのロスを最小化または回避するためにデータの送信を減速させるように送信者に通知することができる。さらに、CNPパケットのための優先度付きキューイングは、輻輳に起因してCNPパケット自体が破棄される可能性を最小化するようなものである。
【0200】
これを実現するために、スイッチファブリック内の各ネットワーキング装置において、CNPパケットが宛先ホストマシンからソースホストマシンに移動するときに、CNPパケットが非常に高い優先度を有するキューに割り当てられるように、輻輳通知パケットトラフィック(CNPトラフィック)には高い優先度が割り当てられる。特定の実装例において、CNPトラフィックは、スイッチファブリック内の各ネットワーキング装置上の2番目に高いキューに割り当てられる(例えば、ネットワーク制御キューには2番目のみが割り当てられる)。
【0201】
さらに、CNPパケットでは厳密な優先度付きキューイング技術が使用される。厳密な優先度付きキューイングによれば、厳密な優先度付きキューに割り当てられるトラフィックは、他のトラフィックを窮乏させることになる。例えば、スイッチファブリック内のネットワーキング装置がテナント♯1からのパケット、テナント♯2からのパケットおよびCNPパケットを有しており、ネットワーキング装置が1つのパケットのみを送り出すことができる場合、テナント♯1パケットおよびテナント♯2パケットがキューイングされ、その代わりにCNPパケットが送信される。特定の実装例において、CNPパケットは、CNPパケットの特別なクラスを示し、且つ、送信のためにパケットをキューイングするのに厳密な優先度付きキューが使用されることを示すQoS情報で構成される。
【0202】
しかし、厳密なキューイングの実装例では、厳密な優先度付きキューイングが他のトラフィックをいつまでも窮乏させることのないように気を付けるべきである。したがって、どれぐらいのCNPトラフィックがスイッチファブリックを通過することを許可されるかということに対して制限を適用することができる。特定の実装例において、この制限は、リンクの合計帯域幅のごく一部である。例えば、専用の厳密な優先度付きキューは、実際のRDMAトラフィッククラスを窮乏させることのないように低い帯域幅保証でCNPトラフィックに割り当てられ得る。その結果、不正アプリケーションまたは構成ミスアプリケーションが多数のCNPパケットを生成し始めて、その結果、CNPトラフィックが他のトラフィック(例えば、RDMAデータトラフィック)を窮乏させ得るという状況が生じる場合に、制限閾値は、他のトラフィックに対するこの問題の影響を最小化する。
【0203】
ECN対応装置がパケットをマーキングする時刻と、結果として得られるCNPパケットを送信者が受信する時刻との間には、フィードバック遅延が発生する。最悪の場合、そのような遅延は、高性能ネットワークにおける長年の問題であった輻輳崩壊につながる可能性がある。スイッチによるECNマーキングと受信ホストによるCNP反映と送信ホストによるRDMA輻輳管理アクションとの間の冗長なフィードバックループを回避するために、低く且つ決定論的なECNマーキング閾値を有するスイッチファブリック640のネットワーキング装置を構成することが望ましい場合がある。例えば、輻輳が検出されるとどのパケットもマーキングするようにTORスイッチおよび中間スイッチの各々を構成することが望ましい場合がある。積極的なECNマーキングポリシーは、スイッチが少しでもネットワーク輻輳の気配を感じたらECNマーキングを開始することを保証することにより、輻輳管理のためのタイトなループを提供して、輻輳崩壊からネットワークを保護することを手助けする。
【0204】
ヘッドオブラインブロッキングを回避するためのキューベースのルーティング
上述したように、レイヤ3ルーティングプロトコルを使用してパケットをルーティングするために、パケットに関連付けられたQoS情報がスイッチファブリック内のネットワーキング装置によって使用される。QoS情報は、特定の優先度またはクラスを識別することができる。スイッチファブリック(例えば、TORスイッチ642、TORスイッチ644および中間スイッチ646のうちのいずれか1つまたはそれ以上(または全て))内のネットワーキング装置は、この優先度情報を使用して、ネットワーキング装置によって使用される複数のキューの中から、パケットの転送に使用される特定の優先度付きキューを識別することができる。例えば、ネットワーキング装置は、個々の異なる優先度クラスのための個々のキューを有するキューのセットを維持し得る。異なる顧客またはテナントに対応するパケットは、異なる割り当てられた優先度またはクラスを有し得て、その結果、異なったように分類されたパケットは、スイッチファブリック内のネットワーキング装置上で異なるキューに割り当てられ得る。異なるクラス(例えば、異なるテナント、異なるアプリケーション)のパケットがスイッチファブリック内のネットワーキング装置上で異なるキューに割り当てられるために、あるクラス(例えば、あるテナント)のトラフィックから生じ得る輻輳は、他のクラス(例えば、他のテナント)のトラフィックに影響を及ぼさない。特定の実施形態において、異なるテナントからのRDMAパケットフローが(例えば、同一の割り当てられた優先度クラスに従って)ネットワーキング装置の同一のキューに割り当てられることも可能であり、および/または、同一のテナントからのRDMAパケットフロー(例えば、テナントの異なるアプリケーションからのパケットフロー)が(例えば、異なるそれぞれの割り当てられた優先度クラスに従って)ネットワーキング装置の異なるキューに割り当てられることも可能である。
【0205】
特定の実施形態において、ヘッドオブラインブロッキング問題を回避するために、RDMA/RoCEトラフィックの処理に複数のキューがネットワーキング装置上で使用される。RDMAデータトラフィックに複数のキューを提供することは、全てのRDMA/RoCEトラフィックを単一のキューにキューイングすることにより輻輳が生じ得ることを回避する。また、複数の(例えば、4つの)RDMAキューは、異なるレベルの性能を必要とする複数の異なるアプリケーションを可能にし、これらのクラスは全てロスレスなネットワーキングを必要とする。そのようにして、環境は、クラウドスケールで、ファブリック全体にわたって、レイテンシの影響を受けやすいRDMAアプリケーションに対して専用のネットワーク経路を提供することができ、HOLブロッキング問題を回避しながらそうすることができる。コアネットワークキューの各々は、構成可能な重み付けされた帯域幅分配をサポートすることができる。
【0206】
場合によっては、顧客またはテナントは、パケットに設定されたQoS情報によって、どの優先度付きキューがトラフィックのルーティングに使用されるかを制御することができる。特定の実装例において、パケットの送信のために多数のキュー(例えば、複数のキュー)を有するスイッチファブリック内のネットワーキング装置上では、ある割合のキューがRDMAトラフィックのために取っておかれる。例えば、一実装例では、スイッチファブリック内のスイッチが8個のキューを有する場合、キューのうちの6個がRDMAトラフィックのために取っておかれてもよい。これらのRDMAキューは、重み付けラウンドロビンキューであってもよく、重み付けラウンドロビンキューの各々は、ネットワーク帯域幅の取り分を得るが、(例えば、RDMAアプリケーション全体にわたって公平性を提供するために)互いに窮乏するはずはない。1つのそのようなスキームでは、RDMAキューの各々は、等しく重み付けされるため、RDMAキューの各々は、デキューサイクル毎に1回供給される。例えば、(異なるキューに割り当てられたトラフィックによって共有される)リンクの容量の95%が6個のRDMAキューに割り当てられてもよく、各キューは、(例えば、均等重み付けを有する重み付けラウンドロビンスキームによって)95%の6分の1を得る。さらに、スイッチファブリックを介して通信されているトラフィックを処理するのに十分な帯域幅があるようにスイッチファブリックがオーバーサブスクライブされないことを保証することが望ましい場合がある。異なる顧客またはテナントからのトラフィックは、同一のRDMAキューに割り当てられることができるが、パケットに符号化されたVLAN IDおよび/またはVNIに基づいて区別される。
【0207】
スイッチファブリック640は、(例えば、TORスイッチ間の)基本的なIPルーティングプロトコル機能でネットワーク制御トラフィッククラスを使用することができる。一例において、ネットワーキング装置の複数のキューは、イーサネットVPN(EVPN)トラフィックを運ぶためのネットワーク制御キューを含み、このネットワーク制御キューは、下にある基板ネットワーク全体にわたるMACアドレス情報の配布および/または仮想トンネルエンドポイント(VTEP:Virtual Tunnel End Point)フラッドリストの通知に使用することができる。これらのネットワーク制御プロトコル(例えば、ボーダーゲートウェイプロトコル(BGP:Border Gateway Protocol))には、最も高いトラフィッククラスが割り当てられてもよい。例えば、ネットワーク制御キューは、RDMAキューのいずれかが供給される前に空になるように、ネットワーク制御トラフィッククラスに専用であって、且つ、厳密な優先度付きキューとして実装されてもよい。ネットワーク制御トラフィックは、それほど多くのネットワーク帯域幅を消費しないので、ネットワーク制御トラフィッククラスには、複数のキューの合計帯域幅のうちの少量が割り当てられ得る。
【0208】
図9Bは、4個のRDMAキュー960-1~960-4とネットワーク制御(NC)キュー964とを含むネットワーキング装置(例えば、TORスイッチ642または644、中間スイッチ646など)の複数のキューの一例950を示す図である。図9Bに示すように、複数のキュー950は、CNPパケットを運ぶための専用の輻輳通知(CN)キュー962も含み得る。送信側ホストへのCNPパケットの迅速な送達は、RDMA輻輳管理の成功にとって非常に重要である。なぜなら、CNPパケットが知らせるフロー制御は、CNPパケットが失われると行われないからである。したがって、CNPトラフィックは、パケットロスおよびネットワークレイテンシの影響を特に受けやすいが、大量のネットワーク帯域幅を必要としない。これらの要件は、RDMAキュー(例えば、キュー960-1~960-4)のうちのいずれかが供給される前に空になるように厳密な優先度付きキューであるようにCNキュー962を構成するが、実際のRDMAトラフィッククラスを窮乏させないように低帯域幅保証のみを有することによって、バランスをとることができる。(例えば、過剰な量のCNPトラフィックを生じさせる構成ミスまたは他の問題の場合に)輻輳通知キュー962がネットワーク制御キュー964を窮乏させることを防止するために、ネットワーク制御キュー964よりも低い優先度を有するように輻輳通知キュー962を構成することが望ましい場合がある。
【0209】
追加的にまたは代替的には、ネットワーク装置の複数のキューは、非RDMAトラフィック(例えば、TCPなどの他のプロトコル)のためのスカベンジャキューも含み得る。「スカベンジャ」トラフィッククラスは、RDMAトラフィッククラスに悪影響を及ぼすことなく未使用のネットワーク帯域幅を使用する。ネットワーキング装置のデキュー論理は、例えば重み付けラウンドロビンスキーム内の低い重み(例えば、重みは保証された帯域幅である)をスカベンジャキューに割り当てることによって、RDMAキューよりも低い優先度でスカベンジャキューを供給するように構成され得る。図9Cは、スカベンジャキュー966も含む上記のネットワーキング装置(例えば、TORスイッチ642または644、中間スイッチ646など)の複数のキュー950の一例952を示す図である。
【0210】
本開示に記載されているように、RDMAパケット(レイヤ2RDMAパケットまたはレイヤ2RDMAパケットを運ぶレイヤ3カプセル化パケット)は、パケットの優先度(例えば、トラフィッククラス)を示す(例えば、PCPデータフィールド内および/またはDSCPデータフィールド内の)QoS値を運び、ネットワーキング装置のエンキュー論理は、QoS値に従ってネットワーキング装置の複数のRDMAキューの間で入来パケットを分配するように構成され得る。図9Bに示されるようにPCPデータフィールドがQoS値を運ぶのに使用されてRDMAパケットがRDMAキュー960-1~960-4の間で分配される例では、以下のようなマッピングが使用されてもよい。すなわち、6または7というPCP値を有するRDMAパケットがRDMAキュー960-1に格納され、4または5というPCP値を有するRDMAパケットがRDMAキュー960-2に格納され、2または3というPCP値を有するRDMAパケットがRDMAキュー960-3に格納され、0または1というPCP値を有するRDMAパケットがRDMAキュー960-4に格納される。図9Bに示されるようにDSCPデータがQoS値を運ぶのに使用されてRDMAパケットがRDMAキュー960-1~960-4の間で分配される例では、以下のようなマッピングが使用されてもよい。すなわち、48~64の範囲内のDSCP値を有するRDMAパケットがRDMAキュー960-1に格納され、32~47の範囲内のDSCP値を有するRDMAパケットがRDMAキュー960-2に格納され、16~32の範囲内のDSCP値を有するRDMAパケットがRDMAキュー960-3に格納され、0~15の範囲内のDSCP値を有するRDMAパケットがRDMAキュー960-4に格納される。上記の2つのマッピングは非限定的な例に過ぎず、そのようなマッピングに従って、またはRDMAキューへのQoS値のその他のマッピングに従って、ネットワーキング装置の複数のキューの間でのRDMAパケットの分配を(例えば、エンキュー論理によって)実行することができる、ということを当業者は認識するであろう。
【0211】
決定論的輻輳(例えば、ECNビット)マーキング
特定の実施形態において、輻輳マーキングがパケット毎に実行される決定論的輻輳マーキングスキームが使用される。したがって、各パケットについて、スイッチファブリック内のネットワーキング装置が輻輳を経験または検出すると、ネットワーキング装置は、例えばRoCEパケットのレイヤ3カプセル化ラッパーのIPヘッダ内のECNビットをマーキングするなど、パケットのフィールドをマーキングすることによって、当該輻輳を知らせる。その結果、輻輳があると、宛先ホストマシンに到達する複数のパケットは、輻輳ビットセットを有することになる。そのような各パケットに応答して、宛先ホストマシンは、CNPパケットを送信し得る。送信者は、CNPパケットに応答して、伝送速度を減少させることができる。目標は、早期に輻輳を検出することにより送信者が早期に送信を減速させることができるようにし、それによってパケットドロップまたはパケットロスの確率を減少させることである。
【0212】
スイッチファブリックのアーキテクチャも、RoCEパケットのレイテンシを減少させてパケットのロスを減少させる役割を果たす。上述したように、スイッチファブリックは、図5に示して上記で説明したClosネットワークなどのClosネットワークとして構築され得る。例えば、層-0スイッチ(TORスイッチ)および層-1スイッチ(スパインスイッチ)のみを有する二層トポロジを有するClosネットワークでは、RoCEパケットは、3つのホップで任意のソースホストマシンから任意の宛先ホストマシンに行くことができる。ホップの数を最小化することは、レイテンシが非常に低くなることを意味し、これはRoCEトラフィックに適している。
【0213】
特定の実施形態において、同一のフローに属するRDMAトラフィックは、ソースホストマシンから宛先ホストマシンまで同一の経路を辿る。なぜなら、RDMAトラフィックは、パケット並べ替えの影響を受けやすいからである。このフローベースのルーティングは、順序が狂った状態でパケットが宛先ホストマシンに到達する状況を回避する。例えば、イングレスTORスイッチは、各フロー内のパケット順序を維持するようにフロー毎等コストマルチパス(ECMP)スキーム(例えば、nウェイECMPスキームであって、「n」はClosネットワークにおける層の数「n」と混同しないようにすべきである)によって複数のフローのレイヤ3カプセル化パケットをスパインスイッチに分配するように構成され得る。一般に、パケットが属するフローは、パケットのソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポート、およびプロトコル識別子(5-タプルとも呼ばれる)の組み合わせによって定義される。
【0214】
例示的なIaaS(Infrastructure-as-a-Service)アーキテクチャ
上述したように、IaaS(Infrastructure as a Service)は、1つの特定の種類のクラウドコンピューティングである。IaaSは、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成されてもよい。IaaSモデルにおいて、クラウドコンピューティングプロバイダは、インフラストラクチャ要素(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、インフラストラクチャ要素に付随する様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を提供することができる。したがって、これらのサービスがポリシー駆動型であり得るため、IaaSユーザは、アプリケーションの可用性および性能を維持するために、負荷分散を駆動するためのポリシーを実装することができる。
【0215】
いくつかの例において、IaaS顧客は、インターネットなどの広域ネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウエアを展開し、ワークロードおよびバックアップの記憶バケットを作成し、VMに企業ソフトウェアをインストールすることができる。顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーションのトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含む様々な機能を実行することができる。
【0216】
殆どの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、オファー、レンタル、販売)に特化した第3者サービスであってもよいが、その必要はない。また、企業は、プライベートクラウドを配置し、インフラストラクチャサービスを提供するプロバイダになることもできる。
【0217】
いくつかの例において、IaaSの配置は、用意したアプリケーションサーバなどに新しいアプリケーションまたは新しいバージョンのアプリケーションを配置するプロセスである。IaaSの配置は、サーバを用意する(例えば、ライブラリ、デーモンなどをインストールする)プロセスを含んでもよい。IaaSの配置は、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、OS、ミドルウエア、および/またはアプリケーションの展開(例えば、セルフサービス仮想マシン(例えば、オンデマンドでスピンアップできるもの)などを行うことができる。
【0218】
いくつかの例において、IaaSのプロビジョニングは、使用されるコンピュータまたは仮想ホストを取得すること、およびコンピュータまたは仮想ホスト上に必要なライブラリまたはサービスをインストールすることを含んでもよい。殆どの場合、配置は、プロビジョニングを含まず、まずプロビジョニングを実行する必要がある。
【0219】
場合によっては、IaaSのプロビジョニングには2つの異なる課題がある。第1に、何かを実行する前に、インフラストラクチャの初期セットをプロビジョニングするという課題がある。第2に、全てのものをプロビジョニングした後に、既存のインフラストラクチャを進化させる(例えば、新しいサービスの追加、サービスの変更、サービスの削除)という課題がある。場合によっては、インフラストラクチャの構成を宣言的に定義することを可能にすることによって、これらの2つの課題に対処することができる。言い換えれば、インフラストラクチャ(例えば、どの要素が必要とされるか、およびこれらの要素がどのように相互作用するか)は、1つまたは複数の構成ファイルによって定義されてもよい。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどれに依存し、どのように連携するか)は、宣言的に記述することができる。いくつかの例において、トポロジが定義されると、構成ファイルに記述された異なる要素を作成および/または管理するためのワークフローを生成することができる。
【0220】
いくつかの例において、インフラストラクチャは、多くの相互接続された要素を含むことができる。例えば、コアネットワークとしても知られている1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能な計算リソースおよび/または共有されている計算リソースの潜在的なオンデマンドプール)が存在してもよい。いくつかの例において、ネットワークのセキュリティをどのように設定するかを定義するためにプロビジョニングされる1つまたは複数のセキュリティグループルールと、1つまたは複数の仮想マシン(VM)とが存在する可能性がある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングされてもよい。ますます多くのインフラストラクチャ要素が望まれるおよび/または追加されるにつれて、インフラストラクチャは、漸進的に進化することができる。
【0221】
いくつかの例において、様々な仮想コンピューティング環境にわたってインフラストラクチャコードの展開を可能にするために、連続展開技法を採用してもよい。また、記載された技法は、これらの環境内のインフラストラクチャ管理を可能にすることができる。いくつかの例において、サービスチームは、1つまたは複数の、通常多くの異なる生産環境(例えば、時には全世界に及ぶ種々の異なる地理的場所にわたって)に展開されることが望まれるコードを書き込むことができる。しかしながら、いくつかの例において、コードを展開するためのインフラストラクチャを最初に設定しなければならない。いくつかの例において、プロビジョニングは、手動で行うことができ、プロビジョニングツールを用いてリソースをプロビジョニングすることができ、および/またはインフラストラクチャをプロビジョニングした後に、展開ツールを用いてコードを展開することができる。
【0222】
図11は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの例示的なパターンを示すブロック図1100である。サービスオペレータ1102は、仮想クラウドネットワーク(VCN)1106およびセキュアホストサブネット1108を含み得るセキュアホストテナンシ1104に通信可能に接続されてもよい。いくつかの例において、サービスオペレータ1102は、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に類似する様々なオペレーティングシステムを実行するワークステーションコンピュータであってもよい。代替的にまたは追加的には、クライアントコンピューティング装置は、VCN1106および/またはインターネットにアクセスできるネットワークを介して通信可能な他の電子機器、例えば、シンクライアントコンピュータ、インターネット対応のゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置を備えるまたは備えないMicrosoft Xbox(登録商標)ゲームコンソール)、および/またはパーソナルメッセージング装置であってもよい。
【0223】
VCN1106は、SSH VCN1112に含まれるLPG1110を介して、セキュアシェル(SSH)VCN1112に通信可能に接続できるローカルピアリングゲートウェイ(LPG)1110を含むことができる。SSH VCN1112は、SSHサブネット1114を含むことができ、SSH VCN1112は、制御プレーンVCN1116に含まれるLPG1110を介して、制御プレーンVCN1116に通信可能に接続されてもよい。また、SSH VCN1112は、LPG1110を介して、データプレーンVCN1118に通信可能に接続されてもよい。制御プレーンVCN1116およびデータプレーンVCN1118は、IaaSプロバイダによって所有および/または運営され得るサービステナンシ1119に含まれてもよい。
【0224】
制御プレーンVCN1116は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンDMZ(demilitarized zone)層1120を含むことができる。DMZベースのサーバは、特定の信頼性を有し、セキュリティ侵害を封じ込めることができる。さらに、DMZ層1120は、1つまたは複数のロードバランサ(LB)サブネット1122と、アプリサブネット1126を含むことができる制御プレーンアプリ層1124と、データベース(DB)サブネット1130(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層1128とを含むことができる。制御プレーンDMZ層1120に含まれたLBサブネット1122は、制御プレーンアプリ層1124に含まれるアプリサブネット1126と制御プレーンVCN1116に含まれ得るインターネットゲートウェイ1134とに通信可能に接続されてもよく、アプリサブリ1126は、制御プレーンデータ層1128に含まれるDBサブネット1130と、サービスゲートウェイ1136と、ネットワークアドレス変換(NAT)ゲートウェイ1138とに通信可能に接続されてもよい。制御プレーンVCN1116は、サービスゲートウェイ1136およびNATゲートウェイ1138を含むことができる。
【0225】
制御プレーンVCN1116は、データプレーンミラーアプリ層1140を含むことができ、データプレーンミラーアプリ層1140は、アプリサブネット1126を含むことができる。データプレーンミラーアプリ層1140に含まれたアプリサブネット1126は、計算インスタンス1144を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1142を含むことができる。計算インスタンス1144は、データプレーンミラーアプリ層1140のアプリサブネット1126を、データプレーンアプリ層1146に含まれ得るアプリサブネット1126に通信可能に接続することができる。
【0226】
データプレーンVCN1118は、データプレーンアプリ層1146と、データプレーンDMZ層1148と、データプレーンデータ層1150とを含むことができる。データプレーンDMZ層1148は、データプレーンアプリ層1146のアプリサブネット1126およびデータプレーンVCN1118のインターネットゲートウェイ1134に通信可能に接続され得るLBサブネット1122を含むことができる。アプリサブネット1126は、データプレーンVCN1118のサービスゲートウェイ1136およびデータプレーンVCN1118のNATゲートウェイ1138に通信可能に接続されてもよい。また、データプレーンデータ層1150は、データプレーンアプリ層1146のアプリサブネット1126に通信可能に接続され得るDBサブネット1130を含むことができる。
【0227】
制御プレーンVCN1116のインターネットゲートウェイ1134およびデータプレーンVCN1118のインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に接続され得るメタデータ管理サービス1152に通信可能に接続されてもよい。パブリックインターネット1154は、制御プレーンVCN1116のNATゲートウェイ1138およびデータプレーンVCN1118のNATゲートウェイ1138に通信可能に接続されてもよい。制御プレーンVCN1116のサービスゲートウェイ1136およびデータプレーンVCN1118のサービスゲートウェイ1136は、クラウドサービス1156に通信可能に接続されてもよい。
【0228】
いくつかの例において、制御プレーンVCN1116またはデータプレーンVCN1118のサービスゲートウェイ1136は、パブリックインターネット1154を経由することなく、クラウドサービス1156へのアプリケーションプログラミングインターフェイス(API)呼び出しを行うことができる。サービスゲートウェイ1136からのクラウドサービス1156へのAPI呼び出しは、一方向であり得る。サービスゲートウェイ1136は、クラウドサービス1156へのAPI呼び出しを行うことができ、クラウドサービス1156は、要求データをサービスゲートウェイ1136に送信することができる。しかしながら、クラウドサービス1156は、サービスゲートウェイ1136へのAPI呼び出しを開始しないことがある。
【0229】
いくつかの例において、セキュアホストテナンシ1104は、孤立であり得るサービステナンシ1119に直接に接続されてもよい。セキュアホストサブネット1108は、孤立のシステムとの双方向通信を可能にするLPG1110を介して、SSHサブネット1114と通信することができる。セキュアホストサブネット1108をSSHサブネット1114に接続することによって、セキュアホストサブネット1108は、サービステナンシ1119内の他のエンティティにアクセスすることができる。
【0230】
制御プレーンVCN1116は、サービステナンシ1119のユーザが所望のリソースを設定またはプロビジョニングすることを可能にする。制御プレーンVCN1116においてプロビジョニングされた所望のリソースは、データプレーンVCN1118において展開または使用されてもよい。いくつかの例において、制御プレーンVCN1116は、データプレーンVCN1118から隔離されてもよく、制御プレーンVCN1116のデータプレーンミラーアプリ層1140は、データプレーンミラーアプリ層1140およびデータプレーンアプリ層1146に含まれ得るVNIC1142を介して、データプレーンVCN1118のデータプレーンアプリ層1146と通信することができる。
【0231】
いくつかの例において、システムのユーザまたは顧客は、要求をメタデータ管理サービス1152に通信することができるパブリックインターネット1154を介して、例えば、作成、読み取り、更新、または削除(CRUD)操作などの要求を行うことができる。メタデータ管理サービス1152は、インターネットゲートウェイ1134を介して、要求を制御プレーンVCN1116に通信することができる。要求は、制御プレーンDMZ層1120に含まれるLBサブネット1122によって受信されてもよい。LBサブネット1122は、要求が有効であると判断することができ、この判断に応答して、LBサブネット1122は、要求を制御プレーンアプリ層1124に含まれるアプリサブネット1126に送信することができる。要求が検証され、パブリックインターネット1154への呼び出しを必要とする場合、パブリックインターネット1154への呼び出しを、パブリックインターネット1154への呼び出しを行うことができるNATゲートウェイ1138に送信することができる。要求を記憶するためのメモリは、DBサブネット1130に格納されてもよい。
【0232】
いくつかの例において、データプレーンミラーアプリ層1140は、制御プレーンVCN1116とデータプレーンVCN1118との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正は、データプレーンVCN1118に含まれるリソースに適用されることが望ましい場合がある。制御プレーンVCN1116は、VNIC1142を介してデータプレーンVCN1118に含まれるリソースと直接に通信することができるため、構成に対する変更、更新、または他の適切な修正を実行することができる。
【0233】
いくつかの実施形態において、制御プレーンVCN1116およびデータプレーンVCN1118は、サービステナンシ1119に含まれてもよい。この場合、システムのユーザまたは顧客は、制御プレーンVCN1116またはデータプレーンVCN1118のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN1116およびデータプレーンVCN1118を所有または操作してもよく、これらの両方は、サービステナンシ1119に含まれてもよい。この実施形態は、ネットワークの隔離を可能にすることによって、ユーザまたは顧客が他のユーザのリソースまたは他の顧客のリソースと対話することを防止できる。また、この実施形態は、システムのユーザまたは顧客が、記憶するための所望のレベルのセキュリティを有しない可能性のあるパブリックインターネット1154に依存する必要なく、データベースをプライベートに記憶することを可能にすることができる。
【0234】
他の実施形態において、制御プレーンVCN1116に含まれるLBサブネット1122は、サービスゲートウェイ1136から信号を受信するように構成されてもよい。この実施形態において、制御プレーンVCN1116およびデータプレーンVCN1118は、パブリックインターネット1154を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されてもよい。顧客が使用するデータベースは、IaaSプロバイダによって制御され、パブリックインターネット1154から隔離され得るサービステナンシ1119に格納され得るため、IaaSプロバイダの顧客は、この実施形態を望む場合がある。
【0235】
図12は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1200である。サービスオペレータ1202(例えば、図11のサービスオペレータ1102)は、仮想クラウドネットワーク(VCN)1206(例えば、図11のVCN1106)およびセキュアホストサブネット1208(例えば、図11のセキュアホストサブネット1108)を含み得るセキュアホストテナンシ1204(例えば、図11のセキュアホストテナンシ1104)に通信可能に接続されてもよい。VCN1206は、SSH VCN1212に含まれるLPG1110を介してセキュアシェル(SSH)VCN1212(例えば、図11のSSH VCN1112)に通信可能に接続され得るローカルピアリングゲートウェイ(LPG)1210(例えば、図11のLPG1110)を含むことができる。SSH VCN2512は、SSHサブネット2514(例えば、図24のSSHサブネット2414)を含むことができ、SSH VCN1212は、制御プレーンVCN1216に含まれるLPG1210を介して制御プレーンVCN1216(例えば、図11の制御プレーンVCN1116)に通信可能に接続することができる。制御プレーンVCN1216は、サービステナンシ1219(例えば、図11のサービステナンシ1119)に含まれてもよく、データプレーンVCN1218(例えば、図11のデータプレーンVCN1118)は、システムのユーザまたは顧客によって所有または運営され得る顧客テナンシ1221に含まれてもよい。
【0236】
制御プレーンVCN1216は、LBサブネット1222(例えば、図11のLBサブネット1122)を含むことができる制御プレーンDMZ層1220(例えば、図11の制御プレーンDMZ層1120)と、アプリサブネット1226(例えば、図11のアプリサブネット1126)を含むことができる制御プレーンアプリ層1224(例えば、図11の制御プレーンアプリ層1124)と、データベース(DB)サブネット1230(例えば、図11のDBサブネット1130と同様)を含むことができる制御プレーンデータ層1228(例えば、図11の制御プレーンデータ層1128)とを含むことができる。制御プレーンDMZ層1220に含まれるLBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226と、制御プレーンVCN1216に含まれ得るインターネットゲートウェイ1234(例えば、図11のインターネットゲートウェイ1134)とに通信可能に接続されてもよい。アプリサブネット1226は、制御プレーンデータ層1228に含まれるDBサブネット1230、サービスゲートウェイ1236(例えば、図11のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1238(例えば、図11のNATゲートウェイ1138)に通信可能に接続されてもよい。制御プレーンVCN1216は、サービスゲートウェイ1236およびNATゲートウェイ1238を含むことができる。
【0237】
制御プレーンVCN1216は、アプリサブネット1226を含むことができるデータプレーンミラーアプリ層1240(例えば、図11のデータプレーンミラーアプリ層1140)を含むことができる。データプレーンミラーアプリ層1240に含まれるアプリサブネット1226は、(例えば、図11の計算インスタンス1144と同様の)計算インスタンス1244を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1242(例えば、VNIC1142)を含むことができる。計算インスタンス1244は、データプレーンミラーアプリ層1240に含まれるVNIC1242およびデータプレーンアプリ層1246に含まれるVNIC1242を介して、データプレーンミラーアプリ層1240のアプリサブネット1226と、データプレーンアプリ層1246(例えば、図11のデータプレーンアプリ層1146)に含まれ得るアプリサブネット1226との間の通信を促進することができる。
【0238】
制御プレーンVCN1216に含まれるインターネットゲートウェイ1234は、パブリックインターネット1254(例えば、図11のパブリックインターネット1154)に通信可能に接続され得るメタデータ管理サービス1252(例えば、図11のメタデータ管理サービス1152)に通信可能に接続されてもよい。パブリックインターネット1254は、制御プレーンVCN1216に含まれるNATゲートウェイ1238に通信可能に接続されてもよい。制御プレーンVCN1216に含まれるサービスゲートウェイ1236は、クラウドサービス1256(例えば、図11のクラウドサービス1156)に通信可能に接続されてもよい。
【0239】
いくつかの例において、データプレーンVCN1218は、顧客テナンシ1221に含まれてもよい。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN1216を提供することができ、IaaSプロバイダは、顧客ごとに、サービステナンシ1219に含まれる固有の計算インスタンス1244を構成することができる。各計算インスタンス1244は、サービステナンシ1219に含まれる制御プレーンVCN1216と、顧客テナンシ1221に含まれるデータプレーンVCN1218との間の通信を許可することができる。計算インスタンス1244は、サービステナンシ1219に含まれる制御プレーンVCN1216においてプロビジョニングされるリソースを、顧客テナンシ1221に含まれるデータプレーンVCN1218に展開することまたは使用することを許可することができる。
【0240】
他の例において、IaaSプロバイダの顧客は、顧客テナンシ1221に存在するデータベースを有することができる。この例において、制御プレーンVCN1216は、アプリサブネット1226を含むことができるデータプレーンミラーアプリ層1240を含むことができる。データプレーンミラーアプリ層1240は、データプレーンVCN1218に存在してもよいが、データプレーンミラーアプリ層1240は、データプレーンVCN1218に存在しなくてもよい。すなわち、データプレーンミラーアプリ層1240は、顧客テナンシ1221にアクセスすることができるが、データプレーンミラーアプリ層1240は、データプレーンVCN1218に存在しなくてもよく、IaaSプロバイダの顧客によって所有または運営されなくてもよい。データプレーンミラーアプリ層1240は、データプレーンVCN1218への呼び出しを行うように構成されてもよいが、制御プレーンVCN1216に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN1216にプロビジョニングされたデータプレーンVCN1218内のリソースを展開することまたは使用することを望むことができ、データプレーンミラーアプリ層1240は、顧客のリソースの所望の展開または他の使用を促進することができる。
【0241】
いくつかの実施形態において、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN1218に適用することができる。この実施形態において、顧客は、データプレーンVCN1218がアクセスできるものを決定することができ、顧客は、データプレーンVCN1218からのパブリックインターネット1254へのアクセスを制限することができる。IaaSプロバイダは、データプレーンVCN1218から任意の外部ネットワークまたはデータベースへのアクセスにフィルタを適用するまたは制御することができない場合がある。顧客が顧客テナンシ1221に含まれるデータプレーンVCN1218にフィルタおよび制御を適用することは、データプレーンVCN1218を他の顧客およびパブリックインターネット1254から隔離することを支援することができる。
【0242】
いくつかの実施形態において、クラウドサービス1256は、サービスゲートウェイ1236によって呼び出されて、パブリックインターネット1254上に、制御プレーンVCN1216上に、またはデータプレーンVCN1218上に存在していない可能性があるサービスにアクセスすることができる。クラウドサービス1256と制御プレーンVCN1216またはデータプレーンVCN1218との間の接続は、ライブまたは連続的でなくてもよい。クラウドサービス1256は、IaaSプロバイダによって所有または運営されている別のネットワーク上に存在してもよい。クラウドサービス1256は、サービスゲートウェイ1236から呼び出しを受信するように構成されてもよく、パブリックインターネット1254から呼び出しを受信しないように構成されてもよい。いくつかのクラウドサービス1256は、他のクラウドサービス1256から隔離されてもよく、制御プレーンVCN1216は、制御プレーンVCN1216と同じ地域に配置していない可能性があるクラウドサービス1256から隔離されてもよい。例えば、制御プレーンVCN1216は、「地域1」に配置されてもよく、クラウドサービス「展開11」は、「地域1」および「地域2」に配置されてもよい。展開11への呼び出しが地域1に配置された制御プレーンVCN1216に含まれるサービスゲートウェイ1236によって行われる場合、この呼び出しは、地域1内の展開11に送信されてもよい。この例において、制御プレーンVCN1216または地域1の展開11は、地域2の展開11と通信可能に接続されなくてもよく、または地域2の展開11と通信しなくてもよい。
【0243】
図13は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1300である。サービスオペレータ1302(例えば、図11のサービスオペレータ1102)は、仮想クラウドネットワーク(VCN)1306(例えば、図11のVCN1106)およびセキュアホストサブネット1308(例えば、図11のセキュアホストサブネット1108)を含み得るセキュアホストテナンシ1304(例えば、図11のセキュアホストテナンシ1104)に通信可能に接続されてもよい。VCN1306は、SSH VCN1312に含まれるLPG1310を介してSSH VCN1312(例えば、図11のSSH VCN1112)に通信可能に接続され得るLPG1310(例えば、図11のLPG1110)を含むことができる。SSH VCN1312は、SSHサブネット1314(例えば、図11のSSHサブネット1114)を含むことができ、SSH VCN1312は、制御プレーンVCN1316に含まれるLPG1310を介して制御プレーンVCN1316(例えば、図11の制御プレーンVCN1116)に通信可能に接続されてもよく、データプレーンVCN1318に含まれるLPG1310を介してデータプレーンVCN1318(例えば、図11のデータプレーン1118)に通信可能に接続されてもよい。制御プレーンVCN1316およびデータプレーンVCN1318は、サービステナンシ1319(例えば、図11のサービステナント1119)に含まれてもよい。
【0244】
制御プレーンVCN1316は、ロードバランサ(LB)サブネット1322(例えば、図11のLBサブネット1122)を含むことができる制御プレーンDMZ層1320(例えば、図11の制御プレーンDMZ層1120)と、アプリサブネット1326(例えば、図11のアプリサブネット1126と同様)を含むことができる制御プレーンアプリ層1324(例えば、図11の制御プレーンアプリ層1124)と、DBサブネット1330を含むことができる制御プレーンデータ層1328(例えば、図11の制御プレーンデータ層1128)とを含むことができる。制御プレーンDMZ層1320に含まれるLBサブネット1322は、制御プレーンアプリ層1324に含まれるアプリサブネット1326と、制御プレーンVCN1316に含まれ得るインターネットゲートウェイ1334(例えば、図11のインターネットゲートウェイ1134)とに通信可能に接続されてもよい。アプリサブネット1326は、制御プレーンデータ層1328に含まれるDBサブネット1330と、サービスゲートウェイ1336(例えば、図11のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1338(例えば、図11のNATゲートウェイ1138)とに通信可能に接続されてもよい。制御プレーンVCN1316は、サービスゲートウェイ1336およびNATゲートウェイ1338を含むことができる。
【0245】
データプレーンVCN1318は、データプレーンアプリ層1346(例えば、図11のデータプレーンアプリ層1146)と、データプレーンDMZ層1348(例えば、図11のデータプレーンDMZ層1148)と、データプレーンデータ層1350(例えば、図11のデータプレーンデータ層1150)とを含むことができる。データプレーンDMZ層1348は、データプレーンVCN1318に含まれるデータプレーンアプリ層1346およびインターネットゲートウェイ1334の信頼できるアプリサブネット1360および信頼できないアプリサブネット1362に通信可能に接続され得るLBサブネット1322を含むことができる。信頼できるアプリサブネット1360は、データプレーンVCN1318に含まれるサービスゲートウェイ1336、データプレーンVCN1318に含まれるNATゲートウェイ1338、およびデータプレーンデータ層1350に含まれるDBサブネット1330に通信可能に接続されてもよい。信頼できないアプリサブネット1362は、データプレーンVCN1318に含まれるサービスゲートウェイ1336、およびデータプレーンデータ層1350に含まれるDBサブネット1330に通信可能に接続されてもよい。データプレーンデータ層1350は、データプレーンVCN1318に含まれるサービスゲートウェイ1336に通信可能に接続され得るDBサブネット1330を含むことができる。
【0246】
信頼できないアプリサブネット1362は、テナント仮想マシン(VM)1366(1)~(N)に通信可能に接続され得る1つまたは複数のプライマリVNIC1364(1)~(N)を含むことができる。各テナントVM1366(1)~(N)は、それぞれの顧客テナンシ1370(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN1368(1)~(N)に含まれ得るそれぞれのアプリサブネット1367(1)~(N)に通信可能に接続されてもよい。それぞれのセカンダリVNIC1372(1)~(N)は、データプレーンVCN1318に含まれる信頼できないアプリサブネット1362と、コンテナエグレスVCN1368(1)~(N)に含まれるアプリサブネットとの間の通信を促進することができる。各コンテナエグレスVCN1368(1)~(N)は、パブリックインターネット1354(例えば、図11のパブリックインターネット1154)に通信可能に接続され得るNATゲートウェイ1338を含むことができる。
【0247】
制御プレーンVCN1316に含まれるインターネットゲートウェイ1334およびデータプレーンVCN1318に含まれるインターネットゲートウェイ1334は、パブリックインターネット1354に通信可能に接続され得るメタデータ管理サービス1352(例えば、図11のメタデータ管理システム1152)に通信可能に接続されてもよい。パブリックインターネット1354は、制御プレーンVCN1316に含まれるNATゲートウェイ1338およびデータプレーンVCN1318に含まれるNATゲートウェイ1338に通信可能に接続されてもよい。制御プレーンVCN1316に含まれるサービスゲートウェイ1336およびデータプレーンVCN1318に含まれるサービスゲートウェイ1336は、クラウドサービス1356に通信可能に接続されてもよい。
【0248】
いくつかの実施形態において、データプレーンVCN1318は、顧客テナンシ1370に統合されてもよい。この統合は、コードを実行するときにサポートを望む場合がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましい場合がある。顧客は、実行すると、破壊的であり得る、他の顧客リソースと通信し得る、または望ましくない影響を引き起こし得るコードを提供することがある。従って、IaaSプロバイダは、顧客がIaaSプロバイダに提供したコードを実行するか否かを判断することができる。
【0249】
いくつかの例において、IaaSプロバイダの顧客は、一時的なネットワークアクセスをIaaSプロバイダに許可することができ、データプレーンアプリ層1346に追加する機能を要求することができる。機能を実行するためのコードは、VM1366(1)~(N)で実行されてもよいが、データプレーンVCN1318上の他の場所で実行されるように構成されることができない。各VM1366(1)~(N)は、1つの顧客テナンシ1370に接続されてもよい。VM1366(1)~(N)に含まれるそれぞれのコンテナ1371(1)~(N)は、コードを実行するように構成されてもよい。この場合、二重の隔離(例えば、コンテナ1371(1)~(N)は、コードを実行し、コンテナ1371(1)~(N)は、少なくとも、信頼できないアプリサブネット1362に含まれるVM1366(1)~(N)に含まれ得る)が存在してもよく、これは、誤ったコードまたは望ましくないコードがIaaSプロバイダのネットワークに損傷を与えること、または異なる顧客のネットワークに損傷を与えることを防止することを支援することができる。コンテナ1371(1)~(N)は、顧客テナンシ1370に通信可能に接続されてもよく、顧客テナンシ1370からデータを送信または受信するように構成されてもよい。コンテナ1371(1)~(N)は、データプレーンVCN1318内の任意の他のエンティティからデータを送信または受信するように構成されなくてもよい。コードの実行が完了すると、IaaSプロバイダは、コンテナ1371(I)~(N)をキルするまたは廃棄することができる。
【0250】
いくつかの実施形態において、信頼できるアプリサブネット1360は、IaaSプロバイダによって所有または運営され得るコードを実行することができる。この実施形態において、信頼できるアプリサブネット1360は、DBサブネット1330に通信可能に接続され、DBサブネット1330においてCRUD操作を実行するように構成されてもよい。信頼できないアプリサブネット1362は、DBサブネット1330に通信可能に接続され得るが、この実施形態において、信頼できないアプリサブネットは、DBサブネット1330内で読み取り操作を実行するように構成されてもよい。各顧客のVM1366(1)~(N)に含まれ、顧客からのコードを実行することができるコンテナ1371(1)~(N)は、DBサブネット1330と通信可能に接続されなくてもよい。
【0251】
他の実施形態において、制御プレーンVCN1316およびデータプレーンVCN1318は、通信可能に直接に結合されなくてもよい。この実施形態において、制御プレーンVCN1316とデータプレーンVCN1318との間に直接的な通信は、存在しないことがある。しかしながら、少なくとも1つの方法による間接的な通信は、存在してもよい。制御プレーンVCN1316とデータプレーンVCN1318との間の通信を容易にすることができるLPG1310が、IaaSプロバイダによって確立されてもよい。別の例において、制御プレーンVCN1316またはデータプレーンVCN1318は、サービスゲートウェイ1336を介してクラウドサービス1356への呼び出しを行うことができる。例えば、制御プレーンVCN1316からクラウドサービス1356への呼び出しは、データプレーンVCN1318と通信することができるサービスの要求を含むことができる。
【0252】
図14は、少なくとも1つの実施形態に従って、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1400である。サービスオペレータ1402(例えば、図11のサービスオペレータ1102)は、仮想クラウドネットワーク(VCN)1406(例えば、図11のVCN1106)およびセキュアホストサブネット1408(例えば、図11のセキュアホストサブネット1108)を含み得るセキュアホストテナンシ1404(例えば、図11のセキュアホストテナンシ1104)に通信可能に接続されてもよい。VCN1406は、SSH VCN1412に含まれるLPG1410を介してSSH VCN1412(例えば、図11のSSH VCN1112)に通信可能に接続され得るLPG1410(例えば、図11のLPG1110)を含むことができる。SSH VCN1412は、SSHサブネット1414(例えば、図11のSSHサブネット1114)を含むことができ、SSH VCN1412は、制御プレーンVCN1416に含まれるLPG1410を介して制御プレーンVCN1416(例えば、図11の制御プレーンVCN1116)に通信可能に接続されてもよく、データプレーンVCN1418に含まれるLPG1410を介してデータプレーンVCN1418(例えば、図11のデータプレーン1118)に通信可能に接続されてもよい。制御プレーンVCN1416およびデータプレーンVCN1418は、サービステナンシ1419(例えば、図11のサービステナンシ1119)に含まれてもよい。
【0253】
制御プレーンVCN1416は、LBサブネット1422(例えば、図11のLBサブネット1122)を含み得る制御プレーンDMZ層1420(例えば、図11の制御プレーンDMZ層1120)、アプリサブネット1426(例えば、図11のアプリサブネット1126)を含み得る制御プレーンアプリ層1424(例えば、図11の制御プレーンアプリ層1124)、DBサブネット1430(例えば、図13のDBサブネット1330)を含み得る制御プレーンデータ層1428(例えば、図11の制御プレーンデータ層1128)を含むことができる。制御プレーンDMZ層1420に含まれるLBサブネット1422は、制御プレーンアプリ層1424に含まれるアプリサブネット1426と、制御プレーンVCN1416に含まれ得るインターネットゲートウェイ1434(例えば、図11のインターネットゲートウェイ1134)とに通信可能に接続されてもよい。アプリサブネット1426は、制御プレーンデータ層1428に含まれるDBサブネット1430と、サービスゲートウェイ1436(例えば、図11のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1438(例えば、図11のNATゲートウェイ1138)とに通信可能に接続されてもよい。制御プレーンVCN1416は、サービスゲートウェイ1436およびNATゲートウェイ1438を含むことができる。
【0254】
データプレーンVCN1418は、データプレーンアプリ層1446(例えば、図11のデータプレーンアプリ層1146)、データプレーンDMZ層1448(例えば、図11のデータプレーンDMZ層1148)、およびデータプレーンデータ層1450(例えば、図11のデータプレーンデータ層1150)を含むことができる。データプレーンDMZ層1448は、データプレーンアプリ層1446の信頼できるアプリサブネット1460(例えば、図13の信頼できるアプリサブネット1360)および信頼できないアプリサブネット1462(例えば、図13の信頼できないアプリサブネット1362)およびデータプレーンVCN1418に含まれるインターネットゲートウェイ1434に通信可能に接続され得るLBサブネット1422を含むことができる。信頼できるアプリサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、データプレーンVCN1418に含まれるNATゲートウェイ1438、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続されてもよい。信頼できないアプリサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続されてもよい。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に接続され得るDBサブケット1430を含むことができる。
【0255】
信頼できないアプリサブネット1462は、信頼できないアプリサブネット1462に常駐するテナント仮想マシン(VM)1466(1)~(N)に通信可能に接続され得るプライマリVNIC1464(1)~(N)を含むことができる。各テナントVM1466(1)~(N)は、それぞれのコンテナ1467(1)~(N)においてコードを実行することができ、コンテナエグレスVCN1468に含まれ得るデータプレーンアプリ層1446に含まれ得るアプリサブネット1426に通信可能に接続されてもよい。各セカンダリVNIC1472(1)~(N)は、データプレーンVCN1418に含まれる信頼できないアプリサブネット1462とコンテナエグレスVCN1468に含まれるアプリサブネットとの間の通信を促進することができる。コンテナエグレスVCNは、パブリックインターネット1454(例えば、図11のパブリックインターネット1154)に通信可能に接続することができるNATゲートウェイ1438を含むことができる。
【0256】
制御プレーンVCN1416に含まれるインターネットゲートウェイ1434およびデータプレーンVCN1418に含まれるインターネットゲートウェイ1434は、パブリックインターネット1454に通信可能に接続され得るメタデータ管理サービス1452(例えば、図11のメタデータ管理システム1152)に通信可能に接続されてもよい。パブリックインターネット1454は、制御プレーンVCN1416に含まれるNATゲートウェイ1438およびデータプレーンVCN1418に含まれるNATゲートウェイ1438に通信可能に接続されてもよい。制御プレーンVCN1416に含まれるサービスゲートウェイ1436およびデータプレーンVCN1418に含まれるサービスゲートウェイ1436は、クラウドサービス1456に通信可能に接続されてもよい。
【0257】
いくつかの例において、図14のブロック図1400のアーキテクチャによって示されたパターンは、図13のブロック図1300のアーキテクチャによって示されたパターンの例外と考えられ、IaaSプロバイダが顧客と直接に通信できない(例えば、非接続地域)場合、IaaSプロバイダの顧客にとって望ましいことがある。顧客は、各顧客のVM1466(1)~(N)に含まれるそれぞれのコンテナ1467(1)~(N)にリアルタイムでアクセスすることができる。コンテナ1467(1)~(N)は、コンテナエグレスVCN1468に含まれ得るデータプレーンアプリ層1446のアプリサブネット1426に含まれるそれぞれのセカンダリVNIC1472(1)~(N)を呼び出すように構成されてもよい。セカンダリVNIC1472(1)~(N)は、パブリックインターネット1454に呼び出しを送信することができるNATゲートウェイ1438に呼び出しを送信することができる。この例において、顧客がリアルタイムでアクセスできるコンテナ1467(1)~(N)は、制御プレーンVCN1416から隔離されてもよく、データプレーンVCN1418に含まれる他のエンティティから隔離されてもよい。また、コンテナ1467(1)~(N)は、他の顧客のリソースから隔離されてもよい。
【0258】
他の例において、顧客は、コンテナ1467(1)~(N)を使用して、クラウドサービス1456を呼び出すことができる。この例では、顧客は、コンテナ1467(1)~(N)において、クラウドサービス1456からサービスを要求するコードを実行することができる。コンテナ1467(1)~(N)は、要求をパブリックインターネット1454に送信することができるNATゲートウェイに要求を送信することができるセカンダリVNIC1472(1)~(N)にこの要求を送信することができる。パブリックインターネット1454は、インターネットゲートウェイ1434を介して、制御プレーンVCN1416に含まれるLBサブネット1422にこの要求を送信することができる。要求が有効であるとの判断に応答して、LBサブネットは、この要求をアプリサブネット1426に送信することができ、アプリサブネット1426は、サービスゲートウェイ1436を介して、この要求をクラウドサービス1456に要求を送信することができる。
【0259】
なお、図示されたIaaSアーキテクチャ1100、1200、1300および1400は、図示されたもの以外の要素を含んでもよい。また、図示された実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一部の例に過ぎない。他のいくつかの実施形態において、IaaSシステムは、図示されたものよりも多いまたは少ない要素を有してよく、2つ以上の要素を組み合わせてよく、または要素の異なる構成または配置を有してよい。
【0260】
特定の実施形態において、本開示に記載されたIaaSシステムは、セルフサービス、サブスクリプションベース、柔軟な拡張可能性、信頼性、高可用性、および安全な方法で顧客に提供されるアプリケーション、ミドルウエア、およびデータベースサービスのスイートを含むことができる。このようなIaaSシステムの一例は、本譲受人によって提供されたオラクル(登録商標)クラウドインフラストラクチャ(OCI)である。
【0261】
図15は、様々な実施形態が実装され得る例示的なコンピュータシステム1500を示す。システム1500は、上述したコンピュータシステムのいずれかを実装するために使用されてもよい。図示のように、コンピュータシステム1500は、バスサブシステム1502を介して多数の周辺サブシステムと通信する処理ユニット1504を含む。これらの周辺サブシステムは、処理加速ユニット1506、I/Oサブシステム1508、記憶サブシステム1518、および通信サブシステム1524を含んでもよい。記憶サブシステム1518は、有形のコンピュータ可読記憶媒体1522およびシステムメモリ1510を含む。
【0262】
バスサブシステム1502は、コンピュータシステム1500の様々な構成要素およびサブシステムを意図したように相互に通信させるための機構を提供する。バスサブシステム1502は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム1502は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかであってもよい。例えば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、およびIEEE P1386.1規格に準拠して製造されたメザニンバスとして実装できる周辺機器相互接続(PCI)バスなどを含むことができる。
【0263】
1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装され得る処理ユニット1504は、コンピュータシステム1500の動作を制御する。処理ユニット1504は、1つまたは複数のプロセッサを含んでもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでもよい。特定の実施形態において、処理ユニット1504は、各処理ユニットに含まれるシングルコアまたはマルチコアプロセッサを有する1つまたは複数の独立した処理ユニット1532および/または1534として実装されてもよい。他の実施形態において、処理ユニット1504は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されたクワッドコア(quad-core)処理ユニットとして実装されてもよい。
【0264】
様々な実施形態において、処理ユニット1504は、プログラムコードに応答して様々なプログラムを実行することができ、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の時点で、実行されるプログラムコードの一部または全部は、プロセッサ1504および/または記憶サブシステム1518に常駐することができる。プロセッサ1504は、適切なプログラミングを通して、上述した様々な機能性を提供することができる。コンピュータシステム1500は、デジタル信号プロセッサ(DSP)、専用プロセッサおよび/または同種のものを含むことができる処理加速ユニット1506をさらに含んでもよい。
【0265】
I/Oサブシステム1508は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含むことができる。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声命令認識システムを備える音声入力装置、マイクロフォン、および他の種類の入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、Microsoft Kinect(登録商標)モーションセンサのようなモーション検知および/またはジェスチャ認識装置を含んでもよい。Microsoft Kinect(登録商標)モーションセンサは、ジェスチャおよび音声命令を利用する自然ユーザインターフェイスを介して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御することができ、それと対話することができる。また、ユーザインターフェイス入力装置は、Google Glass(登録商標)瞬き検出器のような眼球ジェスチャ認識装置を含むことができる。Google Glass(登録商標)瞬き検出器は、ユーザの眼球活動(例えば、写真を撮るときおよび/またはメニューを選択するときの「瞬き」)を検出し、眼球活動を入力装置(例えば、Google Glass(登録商標))に入力する入力に変換する。さらに、ユーザインターフェイス入力装置は、音声命令を介してユーザと音声認識システム(例えば、Siri(登録商標)ナビゲータ)との対話を可能にする音声認識検出装置を含んでもよい。
【0266】
また、ユーザインターフェイス入力装置は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッド、グラフィックタブレット、スピーカなどのオーディオ/ビジュアル装置、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ、3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置を含むがこれらに限定されない。さらに、ユーザインターフェイス入力装置は、例えば、コンピュータ断層撮影装置、磁気共鳴画像装置、超音波放射断層撮影装置、および医療用超音波装置などのような医用画像入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、MIDIキーボードおよび電子楽器などの音声入力装置を含んでもよい。
【0267】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するフラットパネル装置、投射装置、タッチスクリーンなどであってもよい。一般的に、「出力装置」という用語を使用する場合、コンピュータシステム1500から情報をユーザまたは他のコンピュータに出力するための全ての可能な種類の装置および機構を含むことを意図している。例えば、ユーザインターフェイス出力装置は、文字、画像およびオーディオ/ビデオ情報を視覚的に伝達する様々な表示装置、例えば、モニタ、プリンタ、スピーカ、ヘッドフォン、カーナビゲーションシステム、プロッタ、音声出力装置、およびモデムを含むがこれらに限定されない。
【0268】
コンピュータシステム1500は、記憶サブシステム1518を含むことができる。記憶サブシステム1518は、ソフトウェア要素を備え、図示では、これらのソフトウェア要素は、システムメモリ1510内に配置されている。システムメモリ1510は、処理ユニット1504にロード可能かつ実行可能なプログラム命令、およびこれらのプログラムの実行により生成されたデータを記憶することができる。
【0269】
コンピュータシステム1500の構成およびタイプに応じて、システムメモリ1510は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM:Random Access Memory))であってもよく、および/または、不揮発性メモリ(例えば、読取り専用メモリ(ROM:Read-Only Memory)、フラッシュメモリ)であってもよい。一般的に、RAMは、処理ユニット1504がすぐにアクセス可能なデータおよび/またはプログラムモジュール、および/または、処理ユニット1504によって現在操作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実現例では、システムメモリ1510は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)またはダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)などの複数の異なるタイプのメモリを含み得る。いくつかの実現例では、始動中などにコンピュータシステム1500内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力/出力システム(BIOS:Basic Input/Output System)が、一般的にROMに格納され得る。一例としておよび非限定的に、システムメモリ1510は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS:Relational Database Management System)などを含み得るアプリケーションプログラム1512、プログラムデータ1514およびオペレーティングシステム1516も示す。一例として、オペレーティングシステム1516は、マイクロソフトウィンドウズ(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステムの様々なバージョン、様々な市販のUNIX(登録商標)もしくはUNIXライクオペレーティングシステム(様々なGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されるものではない)、および/または、iOS、Windows(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)15 OSおよびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0270】
また、記憶サブシステム1518は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ可読記憶媒体を提供することができる。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1518に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1504によって実行されてもよい。また、記憶サブシステム1518は、本開示に従って使用されるデータを記憶するためのリポジトリを提供することができる。
【0271】
また、記憶サブシステム1500は、コンピュータ可読記憶媒体1522にさらに接続可能なコンピュータ可読記憶媒体リーダ1520を含むことができる。コンピュータ可読記憶媒体1522は、システムメモリ1510と共に、または必要に応じてシステムメモリ1510と組み合わせて、コンピュータ可読情報を一時的におよび/または永久に収容、格納、送信および検索するための記憶媒体に加えて、リモート記憶装置、ローカル記憶装置、固定的な記憶装置および/または取外し可能な記憶装置を包括的に表すことができる。
【0272】
また、コードまたはコードの一部を含むコンピュータ可読記憶媒体1522は、当該技術分野において公知のまたは使用される任意の適切な媒体を含んでもよい。当該媒体は、情報の格納および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、RAM、ROM、電子的消去・プログラム可能ROM(EEPROM:Electronically Erasable Programmable ROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体などの有形のコンピュータ可読記憶媒体を含むことができる。また、これは、データ信号、データ送信などの無形のコンピュータ可読媒体、または、所望の情報を送信するために使用可能であり且つコンピュータシステム1500によってアクセス可能なその他の媒体を含むことができる。
【0273】
一例として、コンピュータ可読記憶媒体1522は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、CD ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含んでもよい。コンピュータ可読記憶媒体1522は、ジップ(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB:Universal Serial Bus)フラッシュドライブ、セキュアデジタル(SD:Secure Digital)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ可読記憶媒体1522は、フラッシュメモリベースのSSD、企業向けフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD:Solid-State Drive)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM:Magnetoresistive RAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶装置をコンピュータシステム1500に提供することができる。
【0274】
通信サブシステム1524は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム1524は、他のシステムからデータを受信し、コンピュータシステム1500から他のシステムにデータを送信するためのインターフェイスの役割を果たす。例えば、通信サブシステム1524は、コンピュータシステム1500がインターネットを介して1つまたは複数の装置に接続することを可能にし得る。いくつかの実施形態では、通信サブシステム1524は、(例えば、3G、4GまたはEDGE(enhanced data rates for global evolution)などの携帯電話技術、高度データネットワーク技術を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF:Radio Frequency)トランシーバ構成要素、WiFi(IEEE802.11ファミリ規格または他のモバイル通信技術またはそれらの任意の組み合わせ)、全地球測位システム(GPS:Global Positioning System)レシーバ構成要素、および/または、他の構成要素を含んでもよい。いくつかの実施形態では、通信サブシステム1524は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0275】
また、いくつかの実施形態において、通信サブシステム1524は、コンピュータシステム1500を使用し得る1人以上のユーザを代表して、構造化されたおよび/または構造化されていないデータフィード1526、イベントストリーム1528、イベント更新1530などの形態で入力通信を受信することができる。
【0276】
一例として、通信サブシステム1524は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリ(RSS:Rich Site Summary)フィードなどのウェブフィードなどのデータフィード1526をリアルタイムでソーシャルネットワークおよび/または他の通信サービスのユーザから受信し、および/または、1つまたは複数の第三者情報源からリアルタイム更新を受信するように構成されてもよい。
【0277】
また、通信サブシステム1524は、連続的なデータストリームの形態でデータを受信するように構成され得て、当該データは、連続的である場合もあれば本質的に明確な端部を持たない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム1528および/またはイベント更新1530を含んでもよい。連続的なデータを生成するアプリケーションの例としては、例えばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどを含んでもよい。
【0278】
また、通信サブシステム1524は、構造化されたおよび/または構造化されていないデータフィード1526、イベントストリーム1528、イベント更新1530などを、コンピュータシステム1500に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに出力するように構成されてもよい。
【0279】
コンピュータシステム1500は、手持ち式携帯機器(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウエアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含む様々な種類のうちの1つであってもよい。
【0280】
コンピュータおよびネットワークが絶え間なく進化し続けるため、図示されたコンピュータシステム1500の説明は、特定の例として意図されているにすぎない。図示されたシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成も可能である。例えば、ハードウェア、ファームウエア、(アプレットを含む)ソフトウェア、または組み合わせにおいて、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が実装されてもよい。さらに、ネットワーク入力/出力装置などの他の計算装置への接続が利用されてもよい。本開示において提供される開示および教示に基づいて、当業者は、様々な実施形態を実現するための他の手段および/または方法を理解するであろう。
【0281】
特定の実施形態を説明してきたが、様々な変更、改変、代替構成、および同等物も本開示の範囲内に包含される。実施形態は、特定のデータ処理環境内で動作するのに限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、一連の特定の処置およびステップを用いて実施形態を説明してきたが、本開示の範囲が説明された一連の処置およびステップに限定されないことは、当業者にとって明らかであろう。上述した実施形態の様々な特徴および態様は、個別にまたは共同で使用することができる。
【0282】
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを用いて実施形態を説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内に含まれることを認識すべきである。ハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせを用いて、実施形態を実現することができる。本開示に記載された様々なプロセスは、同一のプロセッサまたは任意の組み合わせの異なるプロセッサ上で実行することができる。したがって、特定の処理を実行するように構成要素またはモジュールを構成すると説明する場合、その構成は、例えば、その処理を実行するように電子回路を設計することによって、その処理を実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの組み合わせによって実現することができる。プロセスは、プロセス間の通信を行う従来技術を含むがこれに限定されない様々な技術を用いて通信を行うことができる。異なる対のプロセスは、異なる技術を使用することができ、または同一対のプロセスは、異なる時間で異なる技術を使用することができる。
【0283】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味であるとみなすべきである。しかしながら、特許請求の範囲により定められた幅広い主旨および範囲から逸脱することなく、追加、削減、削除および他の修飾および変更を行ってもよいことは、明らかであろう。したがって、本開示の特定の実施形態を説明したが、これらの実施形態は、限定することを意図していない。様々な変更およびその等価物は、添付の特許請求の範囲に含まれる。
【0284】
本開示を説明する文脈に(特に特許請求の範囲の文脈に)使用された不定冠詞「a」/「an」、定冠詞「the」および同様の参照は、本開示に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、単数および複数の両方を含むように解釈すべきである。用語「含む(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」は、特に明記しない限り、非限定的な用語(すなわち、「含むがこれに限定されない」という意味)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在していても、その一部または全部が内部に含まれている、取り付けられている、または一緒に結合されていると解釈されるべきである。本開示において、値の範囲の列挙は、単にその範囲内に含まれる各個別の値を各々言及する速記方法として意図され、本開示に特に明記しない限り、各個別の値は、本開示に個別に記載されるように、本開示に組み込まれる。本開示に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、本開示に記載の全ての方法は、任意の適切な順序で行うことができる。本開示において、任意の例および全ての例または例示的な言語(例えば、「~のような」)の使用は、実施形態をより明瞭にするよう意図されており、特に明記しない限り、本開示の範囲を限定するものではない。明細書内の用語は、本開示の実施に不可欠な任意の非請求要素を示すものと解釈すべきではない。
【0285】
「X、Y、またはZの少なくとも1つ」というフレーズのような選言的言語は、特に断らない限り、項目、用語などがX、YもしくはZ、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)のいずれかであってもよいことを示すために一般的に用いられるものとして文脈内で理解されることを意図している。したがって、このような選言的言語は、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが存在することを必要とすることを一般的に意図しておらず、また、それを暗示していない。
【0286】
本開示を実施するために知られている最良の形態を含む本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形形態は、前述の説明を読めば当業者には明らかになるであろう。当業者は、適宜、このような変形例を採用することができ、本開示は、本明細書に具体的に記載されている以外の方法で実施されてもよい。したがって、本開示は、適用される法律によって許可され、本明細書に添付された請求項に記載された主題の全ての変形および等価物を含む。さらに、その全ての可能な変形における上記の要素の任意の組み合わせは、本明細書において別段の指示がない限り、本開示に包含される。
【0287】
本明細書に引用された刊行物、特許出願、および特許を含む全ての参考文献は、各文献が参照により組み込まれることが個別にかつ明確に示され、その全体が本明細書に記載された場合と同じ程度に、参照により組み込まれるものとする。
【0288】
前述の明細書において、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示の様々な特徴および態様は、個々にまたは共同で使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、本明細書に説明されるものを超える任意の数の環境および用途において利用されることができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
図1
図2
図3
図4
図5
図6
図7A
図7B
図7C
図8A
図8B
図8C
図9A
図9B
図9C
図10
図11
図12
図13
図14
図15