JP2024507143A - オーバーレイネットワークにおけるipアドレスのスケーリング - Google Patents

オーバーレイネットワークにおけるipアドレスのスケーリング Download PDF

Info

Publication number
JP2024507143A
JP2024507143A JP2023548595A JP2023548595A JP2024507143A JP 2024507143 A JP2024507143 A JP 2024507143A JP 2023548595 A JP2023548595 A JP 2023548595A JP 2023548595 A JP2023548595 A JP 2023548595A JP 2024507143 A JP2024507143 A JP 2024507143A
Authority
JP
Japan
Prior art keywords
address
nvd
packet
vcn
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023548595A
Other languages
English (en)
Inventor
キング,マイロン・デッカー
クリーガー-スティックレス,ルーカス・マイケル
ブラール,ジャグウィンダー・シング
トレイシー,レオナード・トーマス
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2024507143A publication Critical patent/JP2024507143A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5046Resolving address allocation conflicts; Testing of addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2528Translation at a proxy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

ロードバランサを用いることなくオーバーレイネットワークにおいてIPアドレスをスケーリングするための技術を開示する。特定の実装形態では、オーバーレイIPアドレスは、複数の計算インスタンスに関連付けられた仮想ネットワークインターフェイスカード(virtual network interface card:VNIC)を介して複数の計算インスタンスにアタッチすることができる。マルチアタッチIPアドレスに向けられたトラフィックは、複数の計算インスタンスにわたって分散される。他のいくつかの実装形態では、オーバーレイネットワークにおけるECMP技術を用いてオーバーレイIPアドレスをスケーリングする。パケットをルーティングするために用いられる転送テーブルでは、スケーリングされるIPアドレスは、複数の計算インスタンスに関連付けられた複数のネットワーク仮想化デバイス(network virtualization device:NVD)への複数のネクストホップパスに関連付けられる。オーバーレイIPアドレスに向けられた特定のパケットをルーティングすべき場合、当該パケットをルーティングするために複数のネクストホップパスのうちの1つが選択される。これにより、IPアドレスに向けられたパケットを複数の計算インスタンス間で分散することが可能となる。

Description

関連出願の参照
本国際特許出願は、2021年2月12日に出願され「オーバーレイネットワークにおけるIPアドレスのスケーリング(Scaling IP Addresses in Overlay Networks)」と題された米国特許出願第17/175,285号に対する優先権を主張するものであって、その開示全体が、あらゆる目的のために引用により本明細書に援用されている。
背景
物理ネットワーキング環境では、インターネットプロトコル(Internet Protocol:IP)アドレス等のネットワークアドレスの水平スケーリングは、典型的には、ロードバランサ(例えば、レイヤ4からレイヤ7のロードバランサ)を用いて行なわれる。ロードバランサは、クライアントが通信し得るアドレス(仮想IPアドレスまたはVIP(virtual IP address)と称されることもある)をアドバタイズする。例えば、クライアントは、このVIP(すなわち、パケットの宛先IPアドレスがロードバランサのVIPアドレスである)にパケットを送信し得る。次いで、ロードバランサは、各々がそれ自体のIPアドレスを有する複数の利用可能なバックエンドノードの中からトラフィックを受信するためにバックエンドサーバまたはノードを選択する。このようにして、ロードバランサは、複数のバックエンドノードにわたってトラフィックを分散または拡散させる。バックエンドノードによって生成された応答は最初にロードバランサによって受信されてから、クライアントに通信される。ロードバランサの使用にはいくつかの問題がある。ロードバランサは、構成するのに非常に費用がかかり複雑であり、結果として、スケーリングするのが困難になる。さらに、ロードバランサは、クライアントとバックエンドノードとの間の通信に積極的に関与しなければならないので、それらロードバランサを用いる場合、通信にかなりの待ち時間が追加されることとなる。
概要
本開示は、概して、仮想化されたクラウドネットワーキング環境に関し、より特定的には、オーバーレイネットワークにおけるIPアドレスをスケーリングするための技術に関する。IPスケーリングはロードバランサを用いることなく達成される。本明細書では、方法、システム、1つ以上のプロセッサによって実行可能なプログラム、コードまたは命令を記憶する非一時的コンピュータ可読記憶媒体等を含む様々な実施形態について説明する。
特定の実施形態では、(クラウドサービスプロバイダインフラストラクチャまたはCSPI(cloud service provider infrastructure)と称される)クラウドインフラストラクチャにおいて実装される技術は、クラウド内の複数の計算インスタンスを同じ単一のオーバーレイIPアドレスに関連付けることを可能にすることによってオーバーレイネットワークにおけるIPアドレススケーリングを提供する。これにより、ロードバランサを用いることなく、オーバーレイIPアドレスを複数の計算インスタンスにわたって水平にスケーリングすることが可能となる。
特定の実装形態では、オーバーレイIPアドレスは、複数の計算インスタンスにアタッチすることができる。これは、オーバーレイIPアドレスを複数の仮想ネットワークインターフェイスカード(virtual network interface card:VNIC)にアタッチし、VNICを複数の計算インスタンスに関連付けることによって行なわれる。複数の計算インスタンスにアタッチされる重複したIPアドレスはマルチアタッチIPアドレスと称される。次いで、マルチアタッチIPアドレスに向けられたトラフィックは、ロードバランサを用いることなく、複数の計算インスタンスにわたって分散される。処理はステートフルモードまたはステートレスモードで実行され得る。
他のいくつかの実装形態では、オーバーレイネットワークにおける等コストマルチパス(Equal-Cost Multi-Path:ECMP)技術がオーバーレイIPアドレスをスケーリングするために用いられる。このような実装形態では、パケットを転送するためにネットワーク仮想化デバイス(network virtualization device:NVD)によって用いられる転送テーブルにおいて、スケーリングされるオーバーレイIPアドレスは、複数の計算インスタンスに関連付けられた複数のNVDへの複数のネクストホップパスに関連付けられる。オーバーレイIPアドレスに向けられた特定のパケットがNVDによって受信され、ルーティングされるべきである場合、NVDは転送テーブルを用いて、パケットをルーティングするための複数のネクストホップパスのうちの1つを選択する。ここで、選択されたパスは、オーバーレイIPアドレスに関連付けられた複数の計算インスタンスからの特定の計算インスタンスに関連付けられた特定のNVDに通じている。これにより、オーバーレイIPアドレスに向けられたパケットを複数の計算インスタンスにわたって分散させることが可能となる。
いくつかの実施形態に従うと、ネットワーク仮想化デバイス(NVD)は、宛先アドレスが第1のインターネットプロトコル(IP)アドレスである第1のパケットを受信し得る。NVDは、複数のIPアドレスが第1のIPアドレスに関連付けられていると判断し得る。第1のIPアドレスは複数の計算インスタンスに関連付けられており、複数のIPアドレスは複数の計算インスタンスに関連付けられた複数のNVDのIPアドレスを含む。第1のNVDは、複数のIPアドレスから特定のIPアドレスを選択し得る。特定のIPアドレスは複数のNVDからの特定のNVDのものであり、特定のNVDは、複数の計算インスタンスからの第1の計算インスタンスに関連付けられている。次いで、第1のNVDは、第1のパケットを特定のIPアドレスに通信し得る。次いで、第1のパケットは、特定のNVDから第1の計算インスタンスに通信され得る。第1のIPアドレスはオーバーレイIPアドレスであってもよく、複数のIPアドレス内のアドレスは物理IPアドレスであってもよい。
特定の実施形態では、第1のNVDは、第1のNVDによって記憶されたIPマッピング情報に基づいて、複数のIPアドレスが第1のIPアドレスに関連付けられていると判断し得る。IPマッピング情報は、第1のIPアドレスが複数のIPアドレスにマップしていることを示す。他のいくつかの実施形態では、第1のNVDは、転送テーブル内の情報に基づいて、複数のIPアドレスが第1のIPアドレスに関連付けられていると判断し得る。転送テーブルは、複数のネクストホップルートが第1のIPアドレスに関連付けられていることを示す情報を含み、複数のネクストホップルートは複数のIPアドレスを識別する。
第1のNVDは、様々な技術を用いて複数のIPアドレスから特定のIPアドレスを選択し得る。特定の実装形態では、第1のNVDは、第1のパケットのうちの1つ以上のフィールドのコンテンツに基づいてハッシュ値を生成し得る。次いで、生成されたハッシュ値を用いて、複数のIPアドレスから特定のIPアドレスを選択し得る。特定の実施形態では、コンシステントハッシュ技術を用いてハッシュ値を生成してもよい。
特定の実装形態では、第1のNVDは、最初に、第1のパケットが第1のネットワークフローに属していると判断し得る。第1のNVDは、次いで、第1のNVDによって記憶されたフロー情報から、第1のネットワークフローに対応する第1のエントリを識別し得る。第1のNVDは、次いで、特定のIPアドレスが第1のエントリにおいて第1のネットワークフローに関連付けられているものとして指定されていると判断し得る。他のいくつかの事例では、第1のNVDは、第1のNVDによって記憶されたフロー情報が第1のネットワークフローに対応するエントリを含まないと判断し得る。そのような場合、第1のNVDは、第1の選択技術を用いて複数のIPアドレスから特定のIPアドレスを選択し得る。第1のNVDは、第1のネットワークフローを識別するとともに特定のIPアドレスを第1のネットワークフローに関連付けるフロー情報にエントリを追加し得る。
第1のNVDは、複数のクライアントから同じ第1のIPアドレスに向けられたパケットを受信し得る。例えば、第1のNVDは、別のクライアントから第2のパケットを受信してもよく、第2のパケットも第1のIPアドレスに向けられる。第2のパケットの場合、第1のパケットの場合とは異なり、第1のNVDは複数のIPアドレスから第2の特定のIPアドレスを選択し得る。第2の特定のIPアドレスは、複数のNVDからの第2の特定のNVDのものであり、第2の特定のNVDは、複数の計算インスタンスからの第2の計算インスタンスに関連付けられている。第1のNVDは、次いで、第2のパケットを第2の特定のIPアドレスに通信し得る。第1のパケットは第1のクライアントから受信され得るとともに、第2のパケットは第2のクライアントから受信され得る。第1のクライアントは第2のクライアントとは異なるものである。
特定の実施形態では、パケットはまた、同じ第1のIPアドレスに関連付けられた複数の計算インスタンス内の計算インスタンスから発信され得る。例えば、複数のNVDからの特定のNVDは、第1の計算インスタンスから新しいパケットを受信してもよく、新しいパケットは、宛先クライアントについての宛先IPアドレスを識別する。次いで、特定のNVDは、当該新しいパケットが当該第1の計算インスタンスと当該宛先クライアントとの間に確立されるべき新しい接続もしくは通信のためのものであるかどうか、または、当該新しいパケットが、当該宛先クライアントから当該第1の計算インスタンスによって以前に受信されたパケットに応答して当該第1の計算インスタンスによって送信された応答パケットであるかどうか、を判断し得る。新しいパケットが、第1の計算インスタンスと宛先クライアントとの間で確立されるべき新しい接続または通信のためのものであると判断される場合、エフェメラルポート値が新しいパケットのために用いられるように識別され得る。新しいパケットのソースポートフィールドは識別されたエフェメラルポート値に設定され得る。次いで、新しいパケットが、特定のNVDから宛先クライアントに関連付けられたNVDに通信され得る。
エフェメラルポート値を選択するために様々な技術が使用され得る。一実施形態では、新しいパケットのために用いられるべきエフェメラルポート値は、第1の計算インスタンスに割当てられたエフェメラルポート値の範囲から選択される。第1の計算インスタンスに割当てられたエフェメラルポート値の範囲内のエフェメラルポート値は、複数の計算インスタンス内の他の計算インスタンスに割当てられたエフェメラルポート値とは異なる。別の実施形態では、特定のNVDは、エフェメラルポート値を識別するためのサービスを用いてもよい。例えば、特定のNVDは、1つ以上のエフェメラルポート値を要求する要求をサービスに送信してもよい。特定のNVDは、これに応答して、サービスから1つ以上のエフェメラルポート値のセットを受信し得る。新しいパケットのソースポートフィールドは、次いで、当該1つ以上のエフェメラルポート値のセットからの値に設定され得る。いくつかの事例では、第1の計算インスタンスから受信されたパケットは応答パケットであると判断され得る。応答パケットは、特定のNVDから宛先クライアントに関連付けられたNVDに通信され得る。
新しいパケットが新しい接続のためのものであるかまたは応答パケットであるかを判断するために様々な異なる技術が使用され得る。例えば、新しいパケットが肯定応答を含む場合、この新しいパケットは応答パケットとして識別され得る。別の例として、新しいパケットのソースポートフィールド内の値がエフェメラルポート値ではない場合、新しいパケットは応答パケットとして識別され得る。さらに別の例として、新しいパケットが既存のネットワークフローの一部であると特定のNVDが判断する場合、この新しいパケットは応答パケットとして識別され得る。
この概要は、特許請求される主題の重要なまたは本質的な特徴を特定することを意図するものではなく、特許請求される主題の範囲を決定するために単独で使用されることも意図していない。主題は、本開示の明細書全体の適切な部分、任意またはすべての図面および各請求項を参照することにより理解されるはずである。
上述の記載は、他の特徴および実施形態とともに、以下の明細書、添付の特許請求の範囲および添付の図面を参照すればより明らかになるであろう。
図面の簡単な説明
添付の図を参照して具体例を以下で詳細に説明する。
特定の実施形態に従った、クラウドサービスプロバイダインフラストラクチャによってホストされている仮想またはオーバーレイクラウドネットワークを示す分散環境のハイレベル図である。 特定の実施形態に従った、CSPI内の物理ネットワークの物理的コンポーネントを示すアーキテクチャ概略図である。 特定の実施形態に従った、ホストマシンが複数のネットワーク仮想化デバイス(NVD)に接続されているCSPIの例示的な配置を示す図である。 特定の実施形態に従った、ホストマシンとマルチテナンシをサポートするためのI/O仮想化を提供するNVDとの間の接続を示す図である。 特定の実施形態に従った、CSPIによって提供される物理ネットワークを示す概略ブロック図である。 特定の実施形態に従った、クラウドサービスプロバイダ(cloud service provider:CSP)によって提供されるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャ(CSPI))によってホストされ得るとともに、ロードバランサを用いることなくステートフルモード処理においてマルチアタッチIPアドレスを用いてオーバーレイIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境の一例を示す図である。 特定の実施形態に従った、クラウドサービスプロバイダ(CSP)によって提供されるCSPIによってホストされ得るとともに、ロードバランサを用いることなくステートレスモード処理においてマルチアタッチIPアドレスを用いてオーバーレイIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境の一例を示す図である。 特定の実施形態に従った、ステートフルモード処理を用いてマルチアタッチIPアドレスを用いたオーバーレイIPアドレスをスケーリングするために実行される処理を示す簡略化されたフローチャートである。 特定の実施形態に従った、ステートフルモード処理を用いてマルチアタッチIPアドレスを用いたオーバーレイIPアドレスをスケーリングするために実行される処理を示す簡略化されたフローチャートである。 特定の実施形態に従った、ステートレスモード処理を用いて、マルチアタッチIPアドレスを用いたオーバーレイIPアドレスをスケーリングするための処理を示す簡略化されたフローチャートである。 特定の実施形態に従った、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスから1つ以上のクライアントへの通信を可能にするための処理を示す簡略化されたフローチャートである。 特定の実施形態に従った、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスから1つ以上のクライアントへの通信を可能にするための処理を示す簡略化されたフローチャートである。 特定の実施形態に従った、クラウドサービスプロバイダ(CSP)によって提供されるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャ(CSPI))によってホストされ得るとともに、ECMP技術を用いるがロードバランサを用いることなくIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境の一例を示す図である。 特定の実施形態に従った、ECMP技術を用いてオーバーレイネットワーク内のIPアドレスをスケーリングするための処理を示す簡略化されたフローチャートである。 少なくとも1つの実施形態に従った、サービスシステムとしてクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。 少なくとも1つの実施形態に従った、サービスシステムとしてクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った、サービスシステムとしてクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った、サービスシステムとしてクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った例示的なコンピュータシステムを示すブロック図である。
詳細な説明
以下の記載では、説明の目的で、特定の実施形態を完全に理解できるようにするために具体的な詳細が記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであるだろう。図および説明は限定的であるよう意図されたものではない。「例示的」という語は、本明細書では「例、事例、または例示としての役割を果たす」ことを意味するために用いられる。本明細書中で「例示的」として説明される実施形態または設計はいずれも、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
本開示は、仮想化されたクラウドネットワーキング環境においてIPアドレスをスケーリングするための技術を説明する。特定の実施形態では、オーバーレイIPアドレスは、ロードバランサを用いることなく仮想化ネットワーキング環境においてスケーリングされ、結果として、ロードバランサの使用に関連する様々な問題が回避される。
背景技術の項目に示すように、物理ネットワーキング環境において、インターネットプロトコル(IP)アドレスの水平スケーリングは、典型的には、ロードバランサ(例えば、レイヤ4からレイヤ7へのロードバランサ)を用いて行なわれる。ロードバランサは、クライアントが通信し得るVIPアドレスをアドバタイズする。例えば、クライアントは、VIPに向けられたパケットを送信することができ、すなわち、パケットの宛先IPアドレスはロードバランサのVIPアドレスである。次いで、ロードバランサは、各々がそれ自体のIPアドレスを有する複数の利用可能なバックエンドノードの中からトラフィックを受信するために特定のバックエンドサーバまたはノードを選択する。このようにして、ロードバランサは、複数のバックエンドノードにわたって、VIPに向けられたトラフィックを分散または拡散させる。バックエンドノードによって生成された応答も、最初にロードバランサによって受信されてから、クライアントに通信される。このため、ロードバランサは、クライアントとバックエンドノードとの間の通信に積極的に関与しなければならない。例えば、ロードバランサが受信したパケットは、ロードバランサの宛先IPアドレス、すなわちVIP、を有する。ロードバランサは、これを、パケットがそのバックエンドノードに送信される前に、当該パケットが送信されるべき選択されたバックエンドノードのIPアドレスに変更しなければならない。同様に、バックエンドノードからロードバランサに応答パケットが入ると、そのパケットはそのバックエンドノードのソースIPアドレスを有することとなる。応答パケットを受信すると、ロードバランサは、ソースIPアドレスをロードバランサのVIPのそれに変更し、その後、パケットをクライアントに通信しなければならない。ロードバランサはまた、ロードバランサが処理するネットワークフローを追跡することを伴うフロー追跡を行なう必要がある。ロードバランサがこのように積極的に通信に関与すると、望ましくない待ち時間が通信に追加されてしまう。ロードバランサは、構成するのに非常に費用がかかり複雑であり、結果として、スケーリングするのが困難になり、複雑な方法では機能しなくなる可能性がある。
特定の実施形態では、(クラウドサービスプロバイダインフラストラクチャまたはCSPIと称される)クラウドインフラストラクチャにおいて実装される技術は、クラウド内の複数の計算インスタンスを同じ単一のオーバーレイIPアドレスに関連付けられることを可能にすることによって、オーバーレイネットワークにおけるIPアドレススケーリングを提供する。これにより、ロードバランサを用いることなく、オーバーレイIPアドレスを複数の計算インスタンスにわたって水平にスケーリングすることが可能となる。単一のオーバーレイIPアドレスを複数の計算インスタンスに関連付けること、および、パケットをこれらの複数の計算インスタンス間で適切に通信することを可能にする様々な異なる技術が開示される。
特定の実装形態では、オーバーレイIPアドレスは複数の計算インスタンスにアタッチすることができる。これは、オーバーレイIPアドレスを複数の仮想ネットワークインターフェイスカード(VNIC)にアタッチしてVNICを複数の計算インスタンスに関連付けることによって行なわれる。複数の計算インスタンスにアタッチされる重複したIPアドレスはマルチアタッチIPアドレスと称される。次いで、マルチアタッチIPアドレスに向けられたトラフィックは、ロードバランサを用いることなく複数の計算インスタンスにわたって分散される。
使用事例として、CSPIの顧客は、CSPIによって提供されるリソースを用いてクラウドサービスを提供し得る。クラウドサービスは、特定のオーバーレイIPアドレスを用いてサービスのクライアントまたは消費者によってアクセス可能であり得る。本開示の教示を用いて、特定のオーバーレイIPアドレスに対して、クラウドサービスを提供するために顧客によって割当てられた複数の計算インスタンス(サービスを提供するのでサーバ計算インスタンスとも称される)がアタッチされ得る。サービスのクライアントがサービスにアクセスするための要求を特定のオーバーレイIPアドレスに送信する場合、CSPI内のネットワーク仮想化デバイス(NVD)は、マルチアタッチIPアドレスにアタッチされた複数のサーバ計算インスタンスの中から当該要求に従事するための特定のサーバ計算インスタンスを選択するための処理を実行するように構成され、クライアント要求は、次いで、選択されたサーバ計算インスタンスに通信される。異なるクライアント要求から受信されてすべてが同じマルチアタッチIPアドレスに向けられたパケットに対して、異なるサーバ計算インスタンスが選択され得る。このようにして、その特定のオーバーレイIPアドレスに向けられたクライアントからのトラフィックは、複数のサーバ計算インスタンスにわたって拡散され、これはすべて、ロードバランサを用いることなく達成される。
マルチアタッチIPアドレスを実装する実施形態では、マルチアタッチオーバーレイIPアドレスにアドレス指定されたパケットをマルチアタッチIPアドレスにアタッチされた計算インスタンスに転送するための処理は、ステートフルモードまたはステートレスモードで実行され得る。ステートフルモード処理では、マルチアタッチIPアドレスに向けられたパケットの通信を容易にするNVDは、ネットワークフロー情報を記憶し、それを用いて、パケットをどこに転送すべきかを識別することにより、マルチアタッチIPアドレスにアタッチされた特定のサーバ計算インスタンスへのパケットの送信を容易にする。ステートレスモード処理では、NVDは、ネットワークフロー情報を記憶または使用しない。代わりに、ステートレスモード処理では、マルチアタッチIPアドレスに向けられたパケットの1つ以上のヘッダがハッシュされ、結果として得られるハッシュ値を用いて、パケットを送信すべき複数の計算インスタンスの中から特定の計算インスタンスを選択する。次いで、パケットは、その選択された計算インスタンスに転送される。ステートレス処理およびステートフル処理の両方において、同じネットワークフロー(例えば、伝送制御プロトコル(Transmission Control Protocol:TCP)ネットワークフロー、ユーザデータグラムプロトコル(User Datagram Protocol:UDP)ネットワークフロー)に属するパケットは、処理の整合性のためにマルチアタッチIPアドレスを有する複数の計算インスタンスの中から同じ計算インスタンスに転送される。
他のいくつかの実装形態では、オーバーレイIPアドレスをスケーリングするために、オーバーレイネットワークにおける等コストマルチパス(ECMP)技術が用いられる。このような実装形態では、パケットを転送するためにNVDによって用いられる転送テーブルにおいて、スケーリングされているオーバーレイIPアドレスは、複数の計算インスタンスに関連付けられた複数のNVDへの複数のネクストホップパスに関連付けられている。オーバーレイIPアドレスに向けられた特定のパケットがNVDによって受信され、ルーティングされるべきである場合、NVDは転送テーブルを用いて、パケットをルーティングするための複数のネクストホップパスのうちの1つを選択する。選択されたパスは、オーバーレイIPアドレスに関連付けられた複数の計算インスタンスからの特定の計算インスタンスに関連付けられた特定のNVDに向かうものである。これにより、オーバーレイIPアドレスに向けられたパケットを複数の計算インスタンスにわたって分散させることが可能となる。
特定の実施形態では、マルチアタッチIPアドレス実装形態およびオーバーレイネットワーク実装形態におけるECMPの両方のために、インフラストラクチャは、マルチアタッチIPアドレスとして、またはECMP技術により、(クライアント計算インスタンスと称される)計算インスタンスが複数の計算インスタンスに関連付けられたオーバーレイIPアドレスにパケットを送信することを可能にし、パケットは、複数の計算インスタンスの中から特定の計算インスタンスに適切に転送される。したがって、クライアント計算インスタンスは、単一のオーバーレイIPアドレスを用いて通信を開始して、単一のオーバーレイIPアドレスに関連付けられたインスタンスを計算することができる。パケットを受信する計算インスタンスは、次いで、パケットに応答し、例えば、応答パケットをクライアント計算インスタンスに送信することができる。加えて、単一のオーバーレイIPアドレスに関連付けられた計算インスタンスは、クライアントへの新しい通信または接続を開始する(すなわち、応答ではない)こともできる。これは、ロードバランサの背後に位置するインスタンスを計算するための接続が外部から開始されなければならず、かつロードバランサの背後に位置するインスタンスによって開始することができない従来のロードバランサでは不可能である。このような新しい接続または通信のターゲットであるクライアント計算インスタンスは、その通信に応答することができ、クライアント応答は、初期通信を送信した適切な計算インスタンスに転送される。
仮想ネットワーキングアーキテクチャの例
クラウドサービスという用語は、一般的に、クラウドサービスプロバイダ(CSP)が、当該CSPによって提供されるシステムおよびインフラストラクチャ(クラウドインフラストラクチャ)を用いて、ユーザまたは顧客がオンデマンドで(例えば、サブスクリプションモデルを介して)利用できるサービスを指す。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムから離れている。したがって、顧客は、サービス用のハードウェアおよびソフトウェアリソースを別途購入することなく、CSPによって提供されるクラウドサービスを利用することができる。クラウドサービスは、サービスを提供するために使用されるインフラストラクチャの調達に顧客が投資する必要なしに、アプリケーションおよび計算リソースへの容易且つ拡張可能なアクセスを加入している顧客に提供するように設計されている。
様々な種類のクラウドサービスを提供するクラウドサービスプロバイダがいくつかある。クラウドサービスは、SaaS(サービスとしてのソフトウェア:Software-as-a-Service)、PaaS(サービスとしてのプラットフォームPlatform-as-a-Service)、IaaS(サービスとしてのインフラストラクチャ:Infrastructure-as-a-Service)などの様々な異なる種類またはモデルを含む。
顧客は、CSPによって提供される1つ以上のクラウドサービスに加入することができる。顧客は、個人、組織、企業などの任意のエンティティであってもよい。顧客がCSPによって提供されるサービスに加入または登録すると、その顧客に対してテナントまたはアカウントが作成される。その後、顧客は、このアカウントを介して、アカウントに関連付けられた1つ以上の加入済みクラウドリソースにアクセスすることができる。
上述したように、IaaS(Infrastructure as a Service)は、1つの特定種類のクラウドコンピューティングサービスである。IaaSモデルにおいて、CSPは、顧客が自身のカスタマイズ可能なネットワークを構築し、顧客リソースを展開するために使用できるインフラストラクチャ(クラウドサービスプロバイダインフラストラクチャまたはCSPIと呼ばれる)を提供する。したがって、顧客のリソースおよびネットワークは、CSPによって提供されたインフラストラクチャによって分散環境にホストされる。これは、顧客によって提供されるインフラストラクチャが顧客のリソースおよびネットワークをホストする従来のコンピューティングとは異なる。
CSPIは、基板ネットワークまたはアンダーレイネットワークとも呼ばれる物理ネットワークを形成する、様々なホストマシン、メモリリソース、およびネットワークリソースを含む相互接続された高性能の計算リソースを含んでもよい。CSPIのリソースは、1つ以上の地理的な地域にわたって地理的に分散され得る1つ以上のデータセンタに分散されてもよい。仮想化ソフトウェアは、これらの物理リソースによって実行され、仮想化分散環境を提供し得る。仮想化は、物理ネットワーク上に(ソフトウェアベースネットワーク、ソフトウェア定義ネットワーク、または仮想ネットワークとしても公知である)オーバーレイネットワークを作成する。CSPI物理ネットワークは、物理ネットワークの上に1つ以上のオーバーレイまたは仮想ネットワークを作成するための基礎を提供する。物理ネットワーク(または基板ネットワークまたはアンダーレイネットワーク)は、物理スイッチ、ルータ、コンピュータおよびホストマシン等の物理ネットワークデバイスを含む。オーバーレイネットワークは、物理基板ネットワーク上で動作する論理(または仮想)ネットワークである。所与の物理ネットワークは、1つまたは複数のオーバーレイネットワークをサポートすることができる。オーバーレイネットワークは、典型的には、カプセル化技術を用いて、様々なオーバーレイネットワークに属するトラフィック同士を区別する。仮想ネットワークまたはオーバーレイネットワークは仮想クラウドネットワーク(virtual cloud network:VCN)とも称される。仮想ネットワークは、ソフトウェア仮想化技術(例えば、ハイパーバイザ、ネットワーク仮想化デバイス(NVD)(例えば、スマートNIC)によって実装される仮想化機能、トップオブラック(top-of-rack:TOR)スイッチ、NVDによって実行される1つ以上の機能を実装するスマートTOR、および他のメカニズム)を用いて実装されて、物理ネットワークの上で実行できるネットワーク抽象化層を作成する。仮想ネットワークは、ピアツーピアネットワーク、IPネットワークなどを含む多くの形態をとることができる。仮想ネットワークは、典型的には、レイヤ3IPネットワークまたはレイヤ2VLANのいずれかである。このような仮想ネットワークまたはオーバーレイネットワークの方法は、しばしば仮想レイヤ3ネットワークまたはオーバーレイレイヤ3ネットワークと呼ばれる。仮想ネットワークのために開発されたプロトコルの例は、IP-in-IP(またはGRE(Generic Routing Encapsulation))、仮想拡張可能LAN(VXLAN-IETF RFC7348)、仮想プライベートネットワーク(VPN)(例えば、MPLSレイヤ3仮想プライベートネットワーク(RFC4364))、VMware’s NSX、GENEVE(Generic Network Virtualization Encapsulation)などを含む。
IaaSの場合、CSPによって提供されたインフラストラクチャ(CSPI)は、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成され得る。IaaSモデルにおいて、クラウドコンピューティングサービスプロバイダは、インフラストラクチャコンポーネント(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、それらのインフラストラクチャコンポーネントに付随する様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を提供し得る。これらのサービスがポリシー駆動型であるため、IaaSユーザは、負荷分散を促進するためのポリシーを実装することによって、アプリケーションの可用性および性能を維持することができる。CSPIは、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。これによって、顧客は、可用性の高いホスト型分散環境において幅広いアプリケーションおよびサービスを構築して実行することができる。CSPIは、顧客オンプレミスネットワークなどの様々なネットワーク拠点から安全にアクセスできる柔軟な仮想ネットワーク上で高性能の計算リソースおよび能力ならびに記憶容量を提供する。顧客がCSPによって提供されたIaaSサービスに加入または登録すると、その顧客のために作成されたテナンシは、CSPI内において安全に分離されたパーティションとなり、顧客らは、自身のクラウドリソースを作成、整理、管理することができる。
顧客は、CSPIによって提供された計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自の仮想ネットワークを構築することができる。これらの仮想ネットワーク上に、計算インスタンスなどの1つ以上の顧客リソースまたはワークロードを展開することができる。例えば、顧客は、CSPIによって提供されたリソースを使用して、仮想クラウドネットワーク(VCN)と呼ばれる1つ以上のカスタマイズ可能なプライベート仮想ネットワークを構築することができる。顧客は、顧客VCN上で1つ以上の顧客リソース、例えば計算インスタンスを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどの形を取り得る。したがって、CSPIは、顧客が可用性の高い仮想ホスト環境において広範囲のアプリケーションおよびサービスを構築および実行することを可能にするインフラストラクチャおよび一連の相補的なクラウドサービスを提供する。顧客は、CSPIによって提供された基礎的な物理リソースを管理または制御しないが、オペレーティングシステム、ストレージおよび展開されたアプリケーションを制御し、場合によっては精選したネットワーキングコンポーネント(例えば、ファイアウォール)を限定的に制御する。
CSPは、顧客およびネットワーク管理者がCSPIリソースを使用してクラウドに展開されたリソースを構成、アクセス、および管理することを可能にするコンソールを提供し得る。特定の実施形態において、コンソールは、CSPIにアクセスしてこれを管理するために使用することができるウェブベースのユーザインターフェイスを提供する。いくつかの実施形態において、コンソールは、CSPによって提供されたウェブベースのアプリケーションである。
CSPIは、シングルテナンシアーキテクチャまたはマルチテナンシアーキテクチャをサポートし得る。シングルテナンシアーキテクチャにおいて、ソフトウェア(例えば、アプリケーション、データベース)またはハードウェアコンポーネント(例えば、ホストマシンまたはサーバ)は、単一の顧客またはテナントにサービスを提供する。マルチテナンシアーキテクチャにおいて、ソフトウェアまたはハードウェアコンポーネントは、複数の顧客またはテナントにサービスを提供する。したがって、マルチテナンシアーキテクチャにおいて、CSPIリソースは、複数の顧客またはテナントの間で共有される。マルチテナンシ状況において、各テナントのデータが分離され、他のテナントから確実に見えないようにするために、CSPIには予防措置が講じられてセーフガードが導入される。
物理ネットワークにおいて、ネットワークエンドポイント(エンドポイント)は、物理ネットワークに接続され、接続されているネットワークと双方向に通信するコンピューティングデバイスまたはシステムを指す。物理ネットワークのネットワークエンドポイントは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、または他の種類の物理ネットワークに接続されてもよい。物理ネットワークの従来のエンドポイントの例は、モデム、ハブ、ブリッジ、スイッチ、ルータ、および他のネットワーキングデバイス、物理コンピュータ(またはホストマシン)などを含む。物理ネットワークの各物理デバイスは、当該デバイスと通信するために使用できる固定ネットワークアドレスを有する。この固定ネットワークアドレスは、レイヤ2アドレス(例えば、MACアドレス)、固定レイヤ3アドレス(例えば、IPアドレス)などであってもよい。仮想化環境または仮想ネットワークにおいて、エンドポイントは、物理ネットワークのコンポーネントによってホストされている(例えば、物理ホストマシンによってホストされている)仮想マシンなどの様々な仮想エンドポイントを含み得る。仮想ネットワークのこれらのエンドポイントは、オーバーレイレイヤ2アドレス(例えば、オーバーレイMACアドレス)およびオーバーレイレイヤ3アドレス(例えば、オーバーレイIPアドレス)などのオーバーレイアドレスによってアドレス指定される。ネットワークオーバーレイは、ネットワーク管理者がソフトウェア管理を用いて(例えば、仮想ネットワークの制御プレーンを実装するソフトウェアを介して)ネットワークエンドポイントに関連付けられたオーバーレイアドレス間を移動できるようにすることによって柔軟性を実現する。したがって、物理ネットワークとは異なり、仮想ネットワークにおいて、ネットワーク管理ソフトウェアを使用して、オーバーレイアドレス(例えば、オーバーレイIPアドレス)を1つのエンドポイントから別のエンドポイントに移動させることができる。仮想ネットワークが物理ネットワーク上に構築されているため、仮想ネットワークおよび基礎となる物理ネットワークの両方は、仮想ネットワークのコンポーネント間の通信に関与する。このような通信を容易にするために、CSPIの各コンポーネントは、仮想ネットワークのオーバーレイアドレスを基板ネットワークの実際の物理アドレスにまたは基板ネットワークの実際の物理アドレスを仮想ネットワークのオーバーレイアドレスにマッピングするマッピングを学習および記憶するように構成されている。これらのマッピングを用いると通信が容易になる。仮想ネットワークのルーティングを容易にするために、顧客トラフィックはカプセル化される。
したがって、物理アドレス(例えば、物理IPアドレス)は、物理ネットワークのコンポーネントに関連付けられ、オーバーレイアドレス(例えば、オーバーレイIPアドレス)は、仮想ネットワークまたはオーバーレイネットワークのエンティティに関連付けられている。物理IPアドレスは、基板ネットワークまたは物理ネットワーク内の物理デバイス(例えば、ネットワークデバイス)に関連付けられたIPアドレスである。例えば、各NVDには物理IPアドレスが関連付けられている。オーバーレイIPアドレスは、顧客の仮想クラウドネットワーク(VCN)内の計算インスタンス等の、オーバーレイネットワーク内のエンティティに関連付けられたオーバーレイアドレスである。各々が独自のプライベートVCNを有する2つの異なる顧客またはテナントは、場合によっては、互いのことを何も知らなくても、それらのVCN内の同じオーバーレイIPアドレスを用いることができる。物理IPアドレスおよびオーバーレイIPアドレスはいずれも実IPアドレスである。これらは、仮想IPアドレスとは別物であり、仮想IPアドレスは、典型的には、複数の真のIPアドレスを表わすかまたは当該複数の真のIPアドレスにマップしている単一のIPアドレスである。仮想IPアドレスは、仮想IPアドレスと複数の実IPアドレスとの間の1対多のマッピングを提供する。例えば、ロードバランサは、VIPを用いて、各々がそれ自体の真のIPアドレスを有する複数のサーバにマッピングし得るかまたはそれを表わし得る。
クラウドインフラストラクチャまたはCSPIは、世界中の1つ以上の地域の1つ以上のデータセンタに物理的にホストされる。CSPIは、物理ネットワークまたは基板ネットワークのコンポーネントと、物理ネットワークコンポーネント上に構築された仮想ネットワークの仮想化コンポーネント(例えば、仮想ネットワーク、計算インスタンス、仮想マシン)とを含んでもよい。特定の実施形態において、CSPIは、レルム(realm)、地域(region)、および利用可能なドメイン(domain)において編成およびホストされる。地域は、典型的には、1つ以上のデータセンタを含む局所的な地理的領域である。地域は、一般的に互いに独立しており、例えば、国または大陸を跨ぐ広大な距離によって分離されてもよい。例えば、第1の地域は、オーストラリアにあってもよく、別の地域は、日本にあってもよく、さらに別の地域は、インドにあってもよい。CSPIリソースは、各地域が独立したCSPIリソースのサブセットを有するようにこれらの地域間で分割される。各地域は、一連のコアインフラストラクチャサービスおよびリソース、例えば、計算リソース(例えば、ベアメタルサーバ、仮想マシン、コンテナおよび関連インフラストラクチャ)、ストレージリソース(例えば、ブロックボリュームストレージ、ファイルストレージ、オブジェクトストレージ、アーカイブストレージ)、ネットワーキングリソース(例えば、仮想クラウドネットワーク(VCN)、負荷分散リソース、オンプレミスネットワークへの接続)、データベースリソース、エッジネットワーキングリソース(例えば、DNS)、アクセス管理および監視リソースなどを提供し得る。各地域は、一般的に、当該地域をレルム内の他の地域に接続するための複数の経路を有する。
一般的に、アプリケーションは、近くのリソースを使用することが遠くのリソースを使用することよりも速いため、最も多く使用される地域に展開される(すなわち、その地域に関連するインフラストラクチャ上に展開される)。また、アプリケーションは、大規模な気象システムまたは地震などの地域全体のイベントのリスクを軽減するための冗長性、法的管轄、税金ドメイン、および他のビジネスまたは社会的基準に対する様々な要件を満たすための冗長性など、様々な理由で異なる地域に展開されてもよい。
地域内のデータセンタは、さらに編成され、利用可能なドメイン(availability domain:AD)に細分化されてもよい。利用可能なドメインは、ある地域に配置された1つ以上のデータセンタに対応し得る。地域は、1つ以上の利用可能なドメインから構成されてもよい。このような分散環境において、CSPIリソースは、仮想クラウドネットワーク(VCN)などの地域に固有なものまたは計算インスタンスなどの利用可能なドメインに固有なものである。
1つの地域内のADは、フォールトトレラント(fault tolerant)になるように互いに分離され、同時に故障する可能性が非常に低くなるように構成されている。これは、1つの地域内の1つのADの障害が同じ地域内の他のADの可用性に影響を与えることが殆どないように、ネットワーキング、物理ケーブル、ケーブル経路、ケーブル入口などの重要なインフラストラクチャリソースを共有しないADによって達成される。同じ地域内のADを低遅延広帯域のネットワークで互いに接続することによって、他のネットワーク(例えば、インターネット、顧客オンプレミスネットワーク)への高可用性接続を提供し、複数のADにおいて高可用性および災害復旧の両方のための複製システムを構築することができる。クラウドサービスは、複数のADを利用して、高可用性を確保すると共に、リソースの障害から保護する。IaaSプロバイダによって提供されたインフラストラクチャが成長するにつれて、容量を追加のしながらより多くの地域およびADを追加してもよい。利用可能なドメイン間のトラフィックは、通常、暗号化される。
特定の実施形態において、地域は、レルムにグループ化される。レルムは、地域の論理的な集合である。レルムは、互いに隔離されており、いかなるデータを共有しない。同じレルム内の地域は互いに通信し得るが、異なるレルム内の地域は通信することができない。CSPの顧客のテナンシまたはアカウントは、単一のレルムに存在し、その単一のレルムに属する1つ以上の地域を跨ることができる。典型的には、顧客がIaaSサービスに加入すると、レルム内の顧客指定地域(「ホーム」地域と呼ばれる)に、その顧客のテナンシまたはアカウントが作成される。顧客は、顧客のテナンシをレルム内の1つ以上の他の地域に拡張することができる。顧客は、顧客のテナンシが存在するレルム内に存在していない地域にアクセスすることができない。
IaaSプロバイダは、複数のレルムを提供することができ、各レルムは、特定の組の顧客またはユーザに対応する。例えば、商用レルムは商用顧客のために提供されてもよい。別の例として、レルムは、特定の国のためにまたはその国の顧客のために提供されてもよい。さらに別の例として、政府用レルムは、例えば政府のために提供されてもよい。例えば、政府用レルムは、特定の政府のために作成されてもよく、商用レルムよりも高いセキュリティレベルを有してもよい。例えば、オラクル(登録商標)クラウドインフラストラクチャ(OCI)は、現在、商用領域向けのレルムと、政府クラウド領域向けの2つのレルム(例えば、FedRAMP認可およびIL5認可)とを提供している。
特定の実施形態において、ADは、1つ以上の障害ドメイン(fault domain)に細分化することができる。障害ドメインは、反親和性(anti-affinity)を提供するために、AD内のインフラストラクチャリソースをグループ化したものである。障害ドメインは、計算インスタンスが1つのAD内の同じ物理ハードウェア上に配置されないように当該計算インスタンスを分散させることができる。これは反親和性として公知である。障害ドメインは、1つの障害点を共有するハードウェアコンポーネント(コンピュータ、スイッチなど)の集合を指す。計算プールは、障害ドメインに論理的に分割される。このため、1つの障害ドメインに影響を与えるハードウェア障害または計算ハードウェア保守イベントは、他の障害ドメインのインスタンスに影響を与えない。実施形態によっては、各ADの障害ドメインの数は、異なってもよい。例えば、特定の実施形態において、各ADは、3つの障害ドメインを含む。障害ドメインは、AD内の論理データセンタとして機能する。
顧客がIaaSサービスに加入すると、CSPIからのリソースは、顧客にプロビジョニングされ、顧客のテナンシに関連付けられる。顧客は、これらのプロビジョニングされたリソースを使用して、プライベートネットワークを構築し、これらのネットワーク上にリソースを展開することができる。CSPIによってクラウドにおいてホストされている顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、顧客用に割当てられたCSPIリソースを使用して、1つ以上の仮想クラウドネットワーク(VCN)を構成することができる。VCNとは、仮想またはソフトウェア定義のプライベートネットワークである。顧客のVCNに展開された顧客リソースは、計算インスタンス(例えば、仮想マシン、ベアメタルインスタンス)および他のリソースを含み得る。これらの計算インスタンスは、アプリケーション、ロードバランサ、データベースなどの様々な顧客作業負荷を表わし得る。VCN上に展開された計算インスタンスは、インターネットなどのパブリックネットワークを介して公的にアクセス可能なエンドポイント(パブリックエンドポイント)と通信することができ、同じVCNまたは他のVCN(例えば、顧客の他のVCN、または顧客に属さないVCN)内の他のインスタンスと通信することができ、顧客のオンプレミスデータセンタまたはネットワークと通信することができ、サービスエンドポイントと通信することができ、および他の種類のエンドポイントと通信することができる。
CSPは、CSPIを用いて多様なサービスを提供し得る。場合によっては、CSPIの顧客自身は、サービスプロバイダのように機能し、CSPIリソースを使用してサービスを提供し得る。サービスプロバイダは、識別情報(例えば、IPアドレス、DNS名およびポート)によって特徴付けられるサービスエンドポイントを公開し得る。顧客のリソース(例えば、計算インスタンス)は、サービスによって公開されたその特定のサービスについてのサービスエンドポイントにアクセスすることによって、特定のサービスを消費することができる。これらのサービスエンドポイントは、一般に、ユーザがエンドポイントに関連付けられたパブリックIPアドレスを使用してインターネットなどのパブリック通信ネットワークを介して公的にアクセスすることができるエンドポイントである。公的にアクセス可能なネットワークエンドポイントは、パブリックエンドポイントと呼ばれることもある。
特定の実施形態において、サービスプロバイダは、(サービスエンドポイントと呼ばれることもある)サービスのエンドポイントを介してサービスを公開し得る。サービスの顧客は、このサービスエンドポイントを使用してサービスにアクセスすることができる。特定の実施形態において、サービスのために提供されたサービスエンドポイントは、そのサービスを消費しようとする複数の顧客によってアクセスすることができる。他の実装形態においては、ある顧客のみが専用サービスエンドポイントを使用してサービスにアクセスすることができるように、当該専用のサービスエンドポイントを当該顧客に提供してもよい。
特定の実施形態において、VCNは、作成されると、そのVCNに割当てられたプライベートオーバーレイIPアドレス範囲(例えば、10.0/16)であるプライベートオーバーレイクラスレスドメイン間ルーティング(Classless Inter-Domain Routing:CIDR)アドレス空間に関連付けられる。VCNは、関連するサブネット、ルートテーブル、およびゲートウェイを含む。VCNは、単一の地域内に存在するが、地域の1つ以上または全ての利用可能なドメインに拡張することができる。ゲートウェイは、VCN用に構成され、VCNとVCN外部の1つ以上のエンドポイントとの間のトラフィック通信を可能にする仮想インターフェイスである。VCNのための1つ以上の異なる種類のゲートウェイを構成することによって、異なる種類のエンドポイント間の通信を可能にすることができる。
VCNは、1つ以上のサブネットなどの1つ以上のサブネットワークに細分化されてもよい。したがって、サブネットは、VCN内で作成され得る構成単位または区画である。VCNは、1つ以上のサブネットを有し得る。VCN内の各サブネットは、当該VCN内の他のサブネットと重複せず、当該VCNのアドレス空間のアドレス空間サブセットを表わすオーバーレイIPアドレス(例えば、10.0.0.0/24および10.0.1.0/24)の連続範囲に関連付けられる。
各計算インスタンスは、仮想ネットワークインターフェイスカード(VNIC)に関連付けられる。これによって、各計算インスタンスは、VCNのサブネットに参加することができる。VNICは、物理ネットワークインターフェイスカード(NIC)の論理表現である。一般的に、VNICは、エンティティ(例えば、計算インスタンス、サービス)と仮想ネットワークとの間のインターフェイスである。VNICは、サブネットに存在し、1つ以上の関連するIPアドレスと、関連するセキュリティルールまたはポリシーとを有する。VNICは、スイッチ上のレイヤ2ポートに相当する。VNICは、計算インスタンスと、VCN内のサブネットとに接続されている。計算インスタンスに関連付けられたVNICは、計算インスタンスがVCNのサブネットの一部であることを可能にし、計算インスタンスが、計算インスタンスと同じサブネット上にあるエンドポイントと、VCN内の異なるサブネット内のエンドポイントと、またはVCN外部のエンドポイントと通信する(例えば、パケットを送信および受信する)ことを可能にする。したがって、計算インスタンスに関連するVNICは、計算インスタンスがVCNの内部および外部のエンドポイントとどのように接続しているかを判断する。計算インスタンスのVNICは、計算インスタンスが作成され、VCN内のサブネットに追加されるときに作成され、その計算インスタンスに関連付けられる。サブネットは、計算インスタンスのセットからなる場合、計算インスタンスのセットに対応するVNICを含み、各VNICは、コンピュータインスタンスのセット内の計算インスタンスに接続されている。
計算インスタンスに関連する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アドレスの連続範囲からのアドレスである。
特定の実施形態において、任意には、計算インスタンスには、プライベートオーバーレイIPアドレスに加えて、追加のオーバーレイIPアドレス、例えば、パブリックサブネットの場合に1つ以上のパブリックIPアドレスを割当てることができる。これらの複数のアドレスは、同じVNIC、または計算インスタンスに関連付けられた複数のVNICに割当てられる。しかしながら、各インスタンスは、インスタンス起動時に作成され、インスタンスに割当てられたオーバーレイプライベートIPアドレスに関連付けられたプライマリVNICを有する。このプライマリVNICは、削除することができない。セカンダリVNICと呼ばれる追加のVNICは、プライマリVNICと同じ利用可能なドメイン内の既存のインスタンスに追加することができる。全てのVNICは、インスタンスと同じ利用可能なドメインにある。セカンダリVNICは、プライマリVNICと同じVCNのサブネットにあってもよく、または同じVCNまたは異なるVCNの異なるサブネットにあってもよい。
計算インスタンスは、パブリックサブネットにある場合、任意には、パブリックIPアドレスが割当てられてもよい。サブネットを作成するときに、当該サブネットをパブリックサブネットまたはプライベートサブネットのいずれかとして指定することができる。プライベートサブネットとは、当該サブネット内のリソース(例えば、計算インスタンス)および関連するVNICがパブリックオーバーレイIPアドレスを持つことができないことを意味する。パブリックサブネットとは、サブネット内のリソースおよび関連するVNICがパブリックIPアドレスを持つことができることを意味する。顧客は、地域またはレルム内の単一の利用可能なドメインまたは複数の利用可能なドメインにわたって存在するサブネットを指定することができる。
上述したように、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アドレスを有する。
いくつかの他の実施形態において、VCN内の各サブネットは、VRに関連付けられた保留またはデフォルトIPアドレスを使用してサブネットによってアドレス指定可能な、それ自体に関連するVRを有してもよい。保留またはデフォルトIPアドレスは、例えば、そのサブネットに関連付けられたIPアドレスの範囲からの第1のIPアドレスであってもよい。サブネット内のVNICは、このデフォルトまたは保留IPアドレスを使用して、サブネットに関連付けられたVRと通信(例えば、パケットを送信および受信)することができる。このような実施形態において、VRは、そのサブネットの入口/出口ポイントである。VCN内のサブネットに関連付けられたVRは、VCN内の他のサブネットに関連付けられた他のVRと通信することができる。また、VRは、VCNに関連付けられたゲートウェイと通信することができる。サブネットのVR機能は、サブネット内のVNICのVNIC機能を実行する1つ以上のNVD上で実行され、またはそれによって実行される。
ルートテーブル、セキュリティルール、およびDHCPオプションは、VCNのために構成されてもよい。ルートテーブルは、VCNの仮想ルートテーブルであり、ゲートウェイまたは特別に構成されたインスタンスを経由して、トラフィックをVCN内部のサブネットからVCN外部の宛先にルーティングするためのルールを含む。VCNとの間でパケットの転送/ルーティングを如何に制御するかについて、VCNのルートテーブルをカスタマイズすることができる。DHCPオプションは、インスタンスの起動時にインスタンスに自動的に提供される構成情報を指す。
VCNのために構成されたセキュリティルールは、VCNのオーバーレイファイアウォールルールを表わす。セキュリティルールは、入口ルールおよび出口ルールを含み得るとともに、(例えば、プロトコルおよびポートに基づいて)VCN内のインスタンスに出入りすることを許可されるトラフィックの種類を指定し得る。顧客は、特定の規則をステートフルまたはステートレスにするかを選択することができる。例えば、顧客は、ソースCIDR0.0.0.0/0および宛先TCPポート22を含むステートフル入口ルールを設定することによって、任意の場所から1組のインスタンスへの着信SSHトラフィックを許可することができる。セキュリティルールは、ネットワークセキュリティグループまたはセキュリティリストを使用して実装されてもよい。ネットワークセキュリティグループは、そのグループ内のリソースのみに適用されるセキュリティルールのセットからなる。一方、セキュリティリストは、そのセキュリティリストを使用するサブネット内の全てのリソースに適用されるルールを含む。VCNは、デフォルトセキュリティルールとともにデフォルトセキュリティリストを含んでもよい。VCNのために構成されたDHCPオプションは、VCN内のインスタンスが起動するときに自動的に提供される構成情報を提供する。
特定の実施形態において、VCNの構成情報は、VCN制御プレーンによって決定され、記憶される。VCNの構成情報は、例えば、VCNに関連するアドレス範囲、VCN内のサブネットおよび関連情報、VCNに関連する1つ以上のVR、VCN内の計算インスタンスおよび関連VNIC、VCNに関連する種々の仮想化ネットワーク機能(例えば、VNIC、VR、ゲートウェイ)を実行するNVD、VCNの状態情報、および他のVCN関連情報を含んでもよい。特定の実施形態において、VCN配信サービスは、VCN制御プレーンによって記憶された構成情報またはその一部をNVDに公開する。配信された情報を用いて、NVDによって記憶および使用される情報(例えば、転送テーブル、ルーティングテーブルなど)を更新することによって、VCN内の計算インスタンスとの間でパケットを転送することができる。
特定の実施形態において、VCNおよびサブネットの作成は、VCN制御プレーン(CP)によって処理され、計算インスタンスの起動は、計算制御プレーンによって処理される。計算制御プレーンは、計算インスタンスの物理リソースを割当て、次にVCN制御プレーンを呼び出して、VNICを作成し、計算インスタンスにアタッチするように構成される。また、VCN CPは、パケットの転送およびルーティング機能を実行するように構成されたVCNデータプレーンに、VCNデータマッピングを送信する。特定の実施形態において、VCN CPは、更新をVCNデータプレーンに提供する役割を果たす配信サービスを提供する。VCN制御プレーンの例は、図12、13、14、および15(参照番号1216、1316、1416、および1516を参照)に示され、以下に説明される。
顧客は、CSPIによってホストされているリソースを用いて1つ以上のVCNを作成し得る。顧客VCN上に展開された計算インスタンスは、様々なエンドポイントと通信し得る。これらのエンドポイントは、CSPIによってホストされているエンドポイントおよびCSPL外部のエンドポイントを含み得る。
CSPIを用いてクラウドベースのサービスを実装するための様々な異なるアーキテクチャは、図1、2、3、4、5、12、13、14、および16に示され、以下に説明される。図1は、特定の実施形態に従った、CSPIによってホストされているオーバーレイVCNまたは顧客VCNを示す分散環境100のハイレベル図である。図1に示された分散環境は、オーバーレイネットワーク内の複数のコンポーネントを含む。図1に示された分散環境100は、単なる例であり、特許請求された実施形態の範囲を不当に限定することを意図していない。多くの変形例、代替例、および修正例が可能である。例えば、いくつかの実装形態において、図1に示された分散環境は、図1に示されたものより多いまたは少ないシステムまたはコンポーネントを有してもよく、2つ以上のシステムを組合わせてもよく、または異なるシステムの構成または配置を有してもよい。
図1の例に示すように、分散環境100は、顧客が加入して仮想クラウドネットワーク(VCN)を構築するために使用することができるサービスおよびリソースを提供するCSPI101を含む。特定の実施形態において、CSPI101は、加入顧客にIaaSサービスを提供する。CSPI101内のデータセンタは、1つ以上の地域に編成されてもよい。図1は、地域の一例である「地域US」102を示す。顧客は、地域102に対して顧客VCN104を構成している。顧客は、VCN104上に様々な計算インスタンスを展開してもよく、計算インスタンスは、仮想マシンまたはベアメタルインスタンスを含み得る。インスタンスの例は、アプリケーション、データベース、ロードバランサなどを含む。
図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に提供してもよい。
各サブネット上に複数の計算インスタンスを展開してもよい。この場合、計算インスタンスは、仮想マシンインスタンスおよび/またはベアメタルインスタンスであってもよい。サブネット内の計算インスタンスは、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へのデフォルトルートを有する。
サブネット-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へのデフォルトルートを有する。
また、VCN A104は、1つ以上のロードバランサを含んでもよい。例えば、ロードバランサは、サブネットに対して提供されてもよく、サブネット上の複数の計算インスタンス間でトラフィックをロードバランスするように構成されてもよい。また、ロードバランサは、VCN内のサブネット間でトラフィックをロードバランスするように提供されてもよい。
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、および他のエンドポイントを含む。
同じサブネット上の計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICを使用して促進される。例えば、サブネット-1内の計算インスタンスC1は、サブネット-1内の計算インスタンスC2にパケットを送信することを所望する場合もある。ソース計算インスタンスから発信され、その宛先が同じサブネット内の別の計算インスタンスであるパケットの場合、このパケットは、まず、ソース計算インスタンスに関連するVNICによって処理される。ソース計算インスタンスに関連するVNICによって実行される処理は、パケットヘッダからパケットの宛先情報を決定することと、ソース計算インスタンスに関連するVNICに対して構成された任意のポリシー(例えば、セキュリティリスト)を識別することと、パケットのネクストホップ(next hop)を決定することと、必要に応じて任意のパケットのカプセル化/カプセル除去機能を実行することと、パケットの意図した宛先への通信を容易にするためにパケットをネクストホップに転送/ルーティングすることとを含んでもよい。宛先計算インスタンスがソース計算インスタンスと同じサブネットにある場合、ソース計算インスタンスに関連するVNICは、宛先計算インスタンスに関連するVNICを識別し、処理するべきパケットをそのVNICに転送するように構成されている。次いで、宛先計算インスタンスに関連するVNICが実行されて、パケットを宛先計算インスタンスに転送する。
サブネット内の計算インスタンスから同じ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に転送する。
VCN104内の計算インスタンスからVCN104外部のエンドポイントにパケットを通信するために、通信は、ソース計算インスタンスに関連するVNIC、VCN VR105、およびVCN104に関連するゲートウェイによって促進される。1つ以上の種類のゲートウェイをVCN104に関連付けてもよい。ゲートウェイは、VCNと別のエンドポイントとの間のインターフェイスであり、別のエンドポイントは、VCNの外部にある。ゲートウェイは、レイヤ3/IPレイヤ概念であり、VCNとVCNの外部のエンドポイントとの通信を可能にする。したがって、ゲートウェイは、VCNと他のVCNまたはネットワークとの間のトラフィックフローを容易にする。異なる種類のエンドポイントとの異なる種類の通信を容易にするために、様々な異なる種類のゲートウェイがVCNのために構成され得る。通信は、ゲートウェイに応じてパブリックネットワーク(例えば、インターネット)またはプライベートネットワークを介して行われてもよい。これらの通信には、様々な通信プロトコルを使用してもよい。
例えば、計算インスタンスC1は、VCN104の外部のエンドポイントと通信することを所望する場合がある。パケットは、まず、ソース計算インスタンスC1に関連するVNICによって処理されてもよい。VNIC処理は、パケットの宛先がClのサブネット-1の外部にあると判断する。C1に関連するVNICは、パケットをVCN104のVCN VR105に転送し得る。次いで、VCN VR105は、パケットを処理し、処理の一部として、パケットの宛先に基づいて、VCN104に関連する特定のゲートウェイをパケットのネクストホップとして決定する。その後、VCN VR105は、パケットを特定の識別されたゲートウェイに転送し得る。例えば、宛先が顧客のオペプレミスネットワーク内のエンドポイントである場合、パケットは、VCN VR105によって、VCN104のために構成された動的ルーティングゲートウェイ(Dynamic Routing Gateway:DRG)122に転送されてもよい。その後、パケットがゲートウェイからネクストホップに転送され得ることで、意図した最終の宛先へのパケットの通信が容易になり得る。
VCNのために様々な異なる種類のゲートウェイが構成され得る。VCNのために構成され得るゲートウェイの例は、図1に示され、以下に説明される。VCNに関連するゲートウェイの例は、図12、13、14、および15(例えば、参照番号1234、1236、1238、1334、1336、1338、1434、1436、1438、1534、1536、および1538によって示されたゲートウェイ)にも示され、以下に説明される。図1に示された実施形態に示されるように、動的ルーティングゲートウェイ(DRG)122は、顧客VCN104に追加されてもよく、またはそれに関連付けられてもよい。DRG122は、顧客VCN104と別のエンドポイントとの間のプライベートネットワークトラフィック通信を行うための経路を提供する。別のエンドポイントは、顧客のオンプレミスネットワーク116、CSPI101の異なる地域内のVCN108、またはCSPI101によってホストされていない他のリモートクラウドネットワーク118であってもよい。顧客オンプレミスネットワーク116は、顧客のリソースを用いて構築された顧客ネットワークまたは顧客データセンタであってもよい。顧客オンプレミスネットワーク116へのアクセスは、一般的に厳しく制限される。顧客オンプレミスネットワーク116と、CSPI101によってクラウドに展開またはホストされる1つ以上のVCN104との両方を有する顧客の場合、顧客は、オンプレミスネットワーク116およびクラウドベースのVCN104が互いに通信できることを望む場合がある。これによって、顧客は、CSPI101によってホストされている顧客のVCN104とオンプレミスネットワーク116とを含む拡張ハイブリッド環境を構築することができる。DRG122は、このような通信を可能にする。このような通信を可能にするために、通信チャネル124が設定される。この場合、通信チャネルの一方のエンドポイントは、顧客オンプレミスネットワーク116にあり、他方のエンドポイントは、CSPI101にあり、顧客VCN104に接続されている。通信チャネル124は、インターネットなどのパブリック通信ネットワーク、またはプライベート通信ネットワークを経由し得る。インターネットなどのパブリック通信ネットワーク上のIPsec VPN技術、パブリックネットワークの代わりにプライベートネットワークを使用するオラクル(登録商標)のFastConnect技術などの様々な異なる通信プロトコルが使用され得る。通信チャネル124の1つのエンドポイントを形成する顧客オンプレミスネットワーク116内の装置または機器は、図1に示されたCPE126などの顧客構内機器(customer premise equipment:CPE)と呼ばれる。CSPI101側のエンドポイントは、DRG122を実行するホストマシンであってもよい。
特定の実施形態において、リモートピアリング接続(Remote Peering Connection:RPC)をDRGに追加することができる。これによって、顧客は、1つのVCNを別の地域内の別のVCNとピアリングすることができる。このようなRPCを使用して、顧客VCN104は、DRG122を使用して、別の地域内のVCN108に接続することができる。また、DRG122は、CSPI101によってホストされていない他のリモートクラウドネットワーク118、例えば、マイクロソフト(登録商標)Azureクラウド、アマゾン(登録商標)AWSクラウド等と通信するために使用されてもよい。
図1に示すように、顧客VCN104上の計算インスタンスがインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイント114と通信することを可能にするように、顧客VCN104のためにインターネットゲートウェイ(Internet Gateway:IGW)120を構成してもよい。IGW120は、VCNをインターネットなどのパブリックネットワークに接続するゲートウェイである。IGW120は、VCN104などのVCN内のパブリックサブネット(パブリックサブネット内のリソースは、パブリックオーバーレイIPアドレスを有する)がインターネットなどのパブリックネットワーク114上のパブリックエンドポイント112に直接アクセスすることを可能にする。IGW120を使用して、VCN104内のサブネットからまたはインターネットからの接続を開始することができる。
顧客のVCN104のためにネットワークアドレス変換(Network Address Translation:NAT)ゲートウェイ128を構成することができる。NATゲートウェイ128は、顧客のVCN内における専用のパブリックオーバーレイIPアドレスを有しないクラウドリソースを、直接着信インターネット接続(例えば、L4-L7接続)に曝すことなくインターネットにアクセスすることを可能にする。これによって、VCN104のプライベートサブネット-1などのVCN内のプライベートサブネットがインターネット上のパブリックエンドポイントにプライベートアクセスすることを可能にする。NATゲートウェイにおいて、プライベートサブネットからパブリックインターネットへの接続を開始することができるが、インターネットからプライベートサブネットへの接続を開始することはできない。
特定の実施形態において、顧客VCN104のためにサービスゲートウェイ(Service Gateway:SGW)126を構成することができる。SGW126は、VCN104とサービスネットワーク110においてサポートされているサービスエンドポイントとの間のプライベートネットワークトラフィックの経路を提供する。特定の実施形態において、サービスネットワーク110は、CSPによって提供され得るとともに、様々なサービスを提供し得る。このようなサービスネットワークの例は、顧客が使用できる様々なサービスを提供するオラクル(登録商標)サービスネットワークである。例えば、顧客VCN104のプライベートサブネット内の計算インスタンス(例えば、データベースシステム)は、パブリックIPアドレスまたはインターネットへのアクセスを必要とすることなく、サービスエンドポイント(例えば、オブジェクトストレージ)にデータをバックアップすることができる。いくつかの実施形態において、VCNは、SGWを1つしか有することができず、VCN内のサブネットからだけ接続を開始することができるが、サービスネットワーク110からは接続を開始することができない。VCNを他のVCNにピアリングする場合、他のVCN内のリソースは、通常SGWにアクセスすることができない。FastConnectまたはVPN ConnectでVCNに接続されているオンプレミスネットワーク内のリソースも、そのVCNのために構成されたサービスゲートウェイを使用することができる。
いくつかの実装形態において、SGW126は、サービスクラスレスドメイン間ルーティング(CIDR)ラベルを使用する。CIDRラベルは、関心のあるサービスまたはサービスのグループに対する全ての地域パブリックIPアドレス範囲を表わす文字列である。顧客は、SGWおよび関連するルーティングルールを設定する際に、サービスCIDRラベルを使用してサービスへのトラフィックを制御する。顧客は、サービスのパブリックIPアドレスが将来に変化する場合、セキュリティルールを調整する必要なく、当該セキュリティルールの構成時にオプションとしてサービスCIDRラベルを使用することができる。
ローカルピアリングゲートウェイ(Local Peering Gateway:LPG)132は、顧客VCN104に追加可能なゲートウェイであり、VCN104が同じ地域内の別のVCNとピアリングすることを可能にする。ピアリングとは、トラフィックがインターネットなどのパブリックネットワークを経由することなく、または顧客のオンプレミスネットワーク116を通してトラフィックをルーティングすることなく、VCNがプライベートIPアドレスを使用して通信することを意味する。好ましい実施形態において、VCNは、確立した各ピアリングに対して個別のLPGを有する。ローカルピアリングまたはVCNピアリングは、異なるアプリケーション間またはインフラストラクチャ管理機能間のネットワーク接続を確立するために使用される一般的な慣行である。
サービスネットワーク110のサービスのプロバイダなどのサービスプロバイダは、異なるアクセスモデルを使用してサービスへのアクセスを提供し得る。パブリックアクセスモデルによれば、サービスは、インターネットなどのパブリックネットワークを介して顧客VCN内の計算インスタンスによって公的にアクセス可能なパブリックエンドポイントとして公開されてもよく、またはSGW126を介してプライベートにアクセス可能にされてもよい。特定のプライベートアクセスモデルによれば、サービスは、顧客VCN内のプライベートサブネット内のプライベートIPエンドポイントとしてアクセス可能にされてもよい。これは、プライベートエンドポイント(Private Endpoint:PE)アクセスと呼ばれ、サービスプロバイダがそのサービスを顧客のプライベートネットワーク内のインスタンスとして公開することを可能にする。プライベートエンドポイントリソースは、顧客VCN内のサービスを表わす。各PEは、顧客が顧客VCN内のサブネットから選択したVNIC(PE-VNICと呼ばれ、1つ以上のプライベートIPを有する)として現れる。PEは、このように、VNICを使用して顧客のプライベートVCNサブネット内でサービスを提供する方法を提供する。エンドポイントがVNICとして公開されるため、PE VNICは、VNICに関連する全ての特徴、例えば、ルーティングルールおよびセキュリティリストなどを利用することができる。
サービスプロバイダは、サービスを登録することによって、PEを介したアクセスを可能にする。プロバイダは、顧客テナントへのサービスの可視性を規制するポリシーをサービスに関連付けることができる。プロバイダは、特にマルチテナントサービスの場合、単一の仮想IPアドレス(VIP)の下に複数のサービスを登録することができる。(複数のVCNにおいて)同じサービスを表わすプライベートエンドポイントが複数存在する場合もある。
その後、プライベートサブネット内の計算インスタンスは、PE VNICのプライベートIPアドレスまたはサービスDNS名を用いて、サービスにアクセスすることができる。顧客VCN内の計算インスタンスは、顧客VCN内のPEのプライベートIPアドレスにトラフィックを送信することによって、サービスにアクセスすることができる。プライベートアクセスゲートウェイ(PAGW)130は、顧客サブネットプライベートエンドポイントから/への全てのトラフィックの入口ポイント/出口ポイントとして機能するサービスプロバイダVCN(例えば、サービスネットワーク110内のVCN)に接続できるゲートウェイリソースである。PAGW130によって、プロバイダは、内部IPアドレスリソースを利用することなく、PE接続の数を拡張することができる。プロバイダは、単一のVCNに登録された任意の数のサービスに対して1つのPAGWを設定するだけでよい。プロバイダは、1人以上の顧客の複数のVCNにおいて、サービスをプライバシーエンドポイントとして示すことができる。顧客の観点から、PE VNICは、顧客のインスタンスに接続されているのではなく、顧客が対話したいサービスに接続されているように見える。プライベートエンドポイントに向けられたトラフィックは、PAGW130を介してサービスにルーティングされる。これらは、顧客対サービスプライベート接続(C2S接続)と呼ばれる。
また、PE概念を用いて、トラフィックがFastConnect/IPsecリンクおよび顧客VCN内のプライベートエンドポイントを通って流れることを可能にすることで、サービスのためのプライベートアクセスを顧客オンプレミスネットワークおよびデータセンタに拡張することもできる。また、トラフィックがLPG132と顧客VCN内のPEとの間を通って流れることを可能にすることで、サービスのためのプライベートアクセスを顧客のピアリングされたVCNに拡張することもできる。
顧客は、サブネットレベルでVCNのルーティングを制御することができるため、VCN104などの顧客VCNにおいて各ゲートウェイを使用するサブネットを指定することができる。VCNのルートテーブルを用いて、特定のゲートウェイを介してトラフィックをVCNの外部にルーティングできるか否かを判断することができる。例えば、特定の事例において、顧客VCN104内のパブリックサブネットのためのルートテーブルは、IGW120を介して非ローカルトラフィックを送信してもよい。同じ顧客VCN104内のプライベートサブネットのルートテーブルは、SGW126を介してCSPサービスへのトラフィックを送信してもよい。残りの全てのトラフィックは、NATゲートウェイ128を介して送信されてもよい。ルートテーブルは、VCNから出るトラフィックのみを制御する。
VCNに関連するセキュリティリストは、インバウンド接続介しゲートウェイを通ってVCNに入来するトラフィックを制御するために使用される。サブネット内の全てのリソースは、同じルートテーブルおよびセキュリティリストを使用する。セキュリティリストは、VCNのサブネット内のインスタンスに出入りする特定の種類のトラフィックを制御するために使用されてもよい。セキュリティリストルールは、入口(インバウンド)ルールと、出口(アウトバウンド)ルールとを含んでもよい。例えば、入口ルールは、許可されたソースアドレス範囲を指定してもよく、出口ルールは、許可された宛先アドレス範囲を指定してもよい。セキュリティルールは、特定のプロトコル(例えば、TCP、ICMP)、特定のポート(例えば、SSHの場合には22、ウィンドウズ(登録商標)RDPの場合には3389)などを指定し得る。特定の実装形態において、インスタンスのオペレーティングシステムは、セキュリティリストルールと一致する独自のファイアウォールルールを実施し得る。ルールは、ステートフル(例えば、接続が追跡され、応答トラフィックに対する明示的なセキュリティのリストルールなしで応答が自動的に許可される)またはステートレスであってもよい。
顧客VCN(すなわち、VCN104上に展開されたリソースまたは計算インスタンス)からのアクセスは、パブリックアクセス、プライベートアクセス、または専用アクセスとして分類され得る。パブリックアクセスは、パブリックIPアドレスまたはNATを用いてパブリックエンドポイントにアクセスするためのアクセスモデルを指す。プライベートアクセスは、プライベートIPアドレス(例えば、プライベートサブネット内のリソース)を持つVCN104内の顧客ワークロードが、インターネットなどのパブリックネットワークを経由することなく、サービスにアクセスすることを可能にする。特定の実施形態において、CSPI101は、プライベートIPアドレスを持つ顧客VCNワークロードが、サービスゲートウェイを使用して、サービス(のパブリックサービスエンドポイント)にアクセスすることを可能にする。したがって、サービスゲートウェイは、顧客VCNと顧客のプライベートネットワークの外部に存在するサービスのパブリックエンドポイントとの間に仮想リンクを確立することによって、プライベートアクセスモデルを提供する。
さらに、CSPIは、FastConnectパブリックピアリングなどの技術を使用する専用パブリックアクセスを提供し得る。この場合、顧客オンプレミスインスタンスは、インターネットなどのパブリックネットワークを経由することなく、FastConnect接続を用いて顧客VCN内の1つ以上のサービスにアクセスすることができる。また、CSPIは、FastConnectプライベートピアリングを使用する専用プライベートアクセスを提供してもよい。この場合、プライベートIPアドレスを持つ顧客オンプレミスインスタンスは、FastConnect接続を用いて顧客のVCNワークロードにアクセスすることができる。FastConnectは、パブリックインターネットを用いて顧客オンプレミスネットワークをCSPIおよびそのサービスに接続する代わりとなるネットワーク接続である。FastConnectは、インターネットベースの接続と比較して、より高い帯域幅オプションと信頼性の高い一貫したネットワーキング体験を伴う専用のプライベート接続を、簡単、柔軟且つ経済的に作成する方法を提供する。
図1および上記の説明は、例示的な仮想ネットワークにおける様々な仮想化コンポーネントを説明する。上述したように、仮想ネットワークは、基礎となる物理ネットワークまたは基板ネットワーク上に構築される。図2は、特定の実施形態に従った、仮想ネットワークの基盤を提供するCSPI200内の物理ネットワーク内の物理的コンポーネントを示す簡略化アーキテクチャ図である。図示のように、CSPI200は、クラウドサービスプロバイダ(CSP)によって提供されたコンポーネントおよびリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を含む分散環境を提供する。これらのコンポーネントおよびリソースは、加入している顧客、すなわち、CSPによって提供される1つ以上のサービスに加入している顧客にクラウドサービス(例えば、IaaSサービス)を提供するために使用される。顧客が加入しているサービスに基づいて、CSPI200は、一部のリソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)を顧客に提供する。その後、顧客は、CSPI200によって提供された物理的な計算リソース、メモリリソース、およびネットワーキングリソースを使用して、独自のクラウドベースの(すなわち、CSPIホスト型)カスタマイズ可能なプライベート仮想ネットワークを構築することができる。前述したように、これらの顧客ネットワークは、仮想クラウドネットワーク(VCN)と呼ばれる。顧客は、これらの顧客VCNに、計算インスタンスなどの1つ以上の顧客リソースを展開することができる。計算インスタンスは、仮想マシン、ベアメタルインスタンスなどであってもよい。CSPI200は、顧客が高可用性のホスト環境において広範なアプリケーションおよびサービスを構築および実行することを可能にする、インフラストラクチャおよび一連の補完的なクラウドサービスを提供する。
図2に示す例示的な実施形態において、CSPI200の物理的コンポーネントは、1つ以上の物理ホストマシンまたは物理サーバ(例えば、202、206、208)、ネットワーク仮想化デバイス(NVD)(例えば、210、212)、トップオブラック(TOR)スイッチ(例えば、214、216)、物理ネットワーク(例えば、218)、および物理ネットワーク218内のスイッチを含む。物理ホストマシンまたはサーバは、VCNの1つ以上のサブネットに参加している様々な計算インスタンスをホストするとともに実行し得る。計算インスタンスは、仮想マシンインスタンスおよびベアメタルインスタンスを含んでもよい。例えば、図1に示された様々な計算インスタンスは、図2に示された物理的ホストマシンによってホストされてもよい。VCN内の仮想マシン計算インスタンスは、1つのホストマシンによって実行されてもよく、または複数の異なるホストマシンによって実行されてもよい。また、物理ホストマシンは、仮想ホストマシン、コンテナベースのホストまたは機能などをホストしてもよい。図1に示されたVNICおよびVCN VRは、図2に示されたNVDによって実行されてもよい。図1に示されたゲートウェイは、図2に示されたホストマシンおよび/またはNVDによって実行されてもよい。
ホストマシンまたはサーバは、ホストマシン上で仮想化環境を作成するするとともに可能にするハイパーバイザ(仮想マシンモニタまたはVMMとも呼ばれる)を実行し得る。仮想化または仮想化環境は、クラウドベースコンピューティングを容易にする。1つ以上の計算インスタンスは、ホストマシン上のハイパーバイザによって、ホストマシン上で作成され、実行され、管理されてもよい。ホストマシン上のハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、計算リソース、メモリリソース、およびネットワーキングリソース)をホストマシンによって実行される様々な計算インスタンス間で共有させることができる。
例えば、図2に示すように、ホストマシン202および208は、ハイパーバイザ260および266をそれぞれ実行する。これらのハイパーバイザは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合わせを使用して実装されてもよい。典型的には、ハイパーバイザは、ホストマシンのオペレーティングシステム(OS)に常駐するプロセスまたはソフトウェア層であり、OSは、ホストマシンのハードウェアプロセッサ上で実行される。ハイパーバイザは、ホストマシンの物理的な計算リソース(例えば、プロセッサ/コア、メモリリソース、ネットワーキングリソースなどの処理リソース)を、ホストマシンによって実行される様々な仮想マシン計算インスタンスの間で共有することを可能にする仮想化環境を提供する。例えば、図2において、ハイパーバイザ260は、ホストマシン202のOSに常駐してもよく、ホストマシン202の計算リソース(例えば、処理リソース、メモリリソース、およびネットワーキングリソース)を、ホストマシン202によって実行される計算インスタンス(例えば、仮想マシン)間で共有させることができる。仮想マシンは、独自のオペレーティングシステム(ゲストオペレーティングシステムと呼ばれる)を有することができる。このゲストオペレーティングシステムは、ホストマシンのOSと同じであってもよく、異なってもよい。ホストマシンによって実行される仮想マシンのオペレーティングシステムは、同じホストマシンによって実行される他の仮想マシンのオペレーティングシステムと同じであってもよく、異なってもよい。したがって、ハイパーバイザは、ホストマシンの同じ計算リソースを共有させながら、複数のオペレーティングシステムを並行して実行することができる。図2に示されたホストマシンは、同じ種類のハイパーバイザを有してもよく、異なる種類のハイパーバイザを有してもよい。
計算インスタンスは、仮想マシンインスタンスまたはベアメタルインスタンスであってもよい。図2において、ホストマシン202上の計算インスタンス268およびホストマシン208上の計算インスタンス274は、仮想マシンインスタンスの一例である。ホストマシン206は、顧客に提供されるベアメタルインスタンスの一例である。
特定の例において、ホストマシンの全体は、単一の顧客に提供されてもよく、そのホストマシンによってホストされている1つ以上の計算インスタンス(仮想マシンまたはベアメタルインスタンスのいずれか)は、全て同じ顧客に属してもよい。他の例において、ホストマシンは、複数の顧客(すなわち、複数のテナント)間で共有されてもよい。このようなマルチテナントシナリオにおいて、ホストマシンは、異なる顧客に属する仮想マシン計算インスタンスをホストし得る。これらの計算インスタンスは、異なる顧客の異なるVCNのメンバであってもよい。特定の実施形態において、ベアメタル計算インスタンスは、ハイパーバイザを設けていないベアメタルサーバによってホストされている。ベアメタル計算インスタンスが提供される場合、単一の顧客またはテナントは、ベアメタルインスタンスをホストするホストマシンの物理CPU、メモリ、およびネットワークインターフェイスの制御を維持し、ホストマシンは、他の顧客またはテナントに共有されない。
前述したように、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によって実行される。
ホストマシンによってホストされている計算インスタンスについて、そのホストマシンに接続されたNVDは、計算インスタンスがメンバであるVCNに対応するVCN VRを実行する。例えば、図2に示された実施形態において、NVD210は、計算インスタンス268がメンバであるVCNに対応するVCN VR277を実行する。また、NVD212は、ホストマシン206および208によってホストされている計算インスタンスに対応するVCNに対応する1つ以上のVCN VR283を実行し得る。
ホストマシンは、当該ホストマシンを他のデバイスに接続することを可能にする1つ以上のネットワークインターフェイスカード(NIC)を含み得る。ホストマシン上のNICは、ホストマシンを別の装置に通信可能に接続することを可能にする1つ以上のポート(またはインターフェイス)を提供し得る。例えば、ホストマシンおよびNVDに設けられた1つ以上のポート(またはインターフェイス)を用いて、当該ホストマシンを当該NVDに接続してもよい。また、ホストマシンを他のホストマシンなどの他のデバイスに接続してもよい。
例えば、図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に接続されている。
同様に、NVDは、通信リンクを介して、(スイッチファブリックとも呼ばれる)物理ネットワーク218に接続されているトップオブラック(TOR)スイッチに接続されている。特定の実施形態において、ホストマシンとNVDとの間のリンクおよびNVDとTORスイッチとの間のリンクは、イーサネット(登録商標)リンクである。例えば、図2において、NVD210および212は、リンク228および230を介して、TORスイッチ214および216にそれぞれ接続される。特定の実施形態において、リンク220、224、226、228、および230は、イーサネット(登録商標)リンクである。TORに接続されているホストマシンおよびNVDの集合体は、ラックと呼ばれることがある。
物理ネットワーク218は、TORスイッチの相互通信を可能にする通信ファブリックを提供する。物理ネットワーク218は、多層ネットワークであってもよい。特定の実装形態において、物理ネットワーク218は、スイッチの多層Closネットワークであり、TORスイッチ214および216は、多層およびマルチノード物理スイッチングネットワーク218のリーフレベルノードを表わす。2層ネットワーク、3層ネットワーク、4層ネットワーク、5層ネットワーク、および一般に「n」層ネットワークを含むがこれらに限定されない異なるClosネットワーク構成が実現可能である。Closネットワークの一例は、図5に示され、以下に説明される。
ホストマシンとVDとの間には、1対1構成、多対1構成、および1対多構成などの様々な異なる接続構成が可能である。1対1構成の実装例において、各ホストマシンは、それ自体の別個のNVDに接続されている。例えば、図2において、ホストマシン202は、ホストマシン202のNIC232を介してNVD210に接続されている。多対1の構成において、複数のホストマシンは、1つのNVDに接続されている。例えば、図2において、ホストマシン206および208は、それぞれNIC244および250を介して同じNVD212に接続されている。
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内の層-0スイッチング装置を表わす。
図3に示す構成は、物理スイッチネットワーク318からホストマシン302への2つの別々の物理ネットワーク経路、すなわち、TORスイッチ314からNVD310を経由してホストマシン302に至る第1の経路と、TORスイッチ316からNVD312を経由してホストマシン302に至る第2の経路とを提供する。別々の経路は、ホストマシン302の強化された可用性(高可用性と呼ばれる)を提供する。経路の一方に問題がある(例えば、経路の一方のリンクが故障する)場合またはデバイスに問題がある(例えば、特定のNVDが機能していない)場合、ホストマシン302との間の通信に他方の経路を使用してもよい。
図3に示された構成において、ホストマシンは、ホストマシンのNICによって提供された2つの異なるポートを用いて2つの異なるNVDに接続されている。他の実施形態において、ホストマシンは、ホストマシンと複数のNVDとの接続を可能にする複数のNICを含んでもよい。
再び図2を参照して、NVDは、1つ以上のネットワーク仮想化機能および/またはストレージ仮想化機能を実行する物理デバイスまたはコンポーネントである。NVDは、1つ以上の処理ユニット(例えば、CPU、ネットワーク処理ユニット(NPU)、FPGA、パケット処理パイプライン)、キャッシュを含むメモリ、およびポートを有する任意のデバイスであり得る。様々な仮想化機能は、NVDの1つ以上の処理ユニットによって実行されるソフトウェア/ファームウェアによって実行されてもよい。
NVDは、様々な異なる形で実装されてもよい。例えば、特定の実施形態において、NVDは、内蔵プロセッサを搭載したスマートNICまたはインテリジェントNICと呼ばれるインターフェイスカードとして実装される。スマートNICは、ホストマシン上のNICとは別個のデバイスである。図2において、NVD210は、ホストマシン202に接続されているスマートNICとして実装されてもよく、NVD212は、ホストマシン206および208に接続されているスマートNICとして実装されてもよい。
しかしながら、スマートNICは、NVD実装の一例にすぎない。様々な他の実装が可能である。例えば、いくつかの他の実装例において、NVDまたはNVDによって実行される1つ以上の機能は、CSPI200の1つ以上のホストマシン、1つ以上のTORスイッチ、および他のコンポーネントに組み込まれてもよく、またはそれらによって実行されてもよい。例えば、NVDは、ホストマシンに統合されてもよい。この場合、NVDによって実行される機能は、ホストマシンによって実行される。別の例として、NVDは、TORスイッチの一部であってもよく、またはTORスイッチは、TORスイッチがパブリッククラウドに使用される様々な複雑なパケット変換を実行することを可能にするNVDによって実行される機能を実行するように構成されてもよい。NVDの機能を実行するTORは、スマートTORと呼ばれることがある。ベアメタル(BM)インスタンスではなく仮想マシン(VM)インスタンスを顧客に提供するさらに他の実装形態において、NVDによって提供される機能は、ホストマシンのハイパーバイザの内部に実装されてもよい。いくつかの他の実装形態において、NVDの機能の一部は、一組のホストマシン上で動作する集中型サービスにオフロードされてもよい。
図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に接続されている。
NVDは、ホスト向きポートを介して、ホストマシンからパケットおよびフレーム(例えば、ホストマシンによってホストされている計算インスタンスによって生成されたパケットおよびフレーム)を受信し、必要なパケット処理を実行した後、NVDのネットワーク向きポートを介してパケットおよびフレームをTORスイッチに転送し得る。NVDは、NVDのネットワーク向きポートを介してTORスイッチからパケットおよびフレームを受信し、必要なパケット処理を実行した後、NVDのホスト向きポートを介してパケットおよびフレームをホストマシンに転送し得る。
特定の実施形態において、NVDとTORスイッチとの間に複数のポートおよび関連するリンクを設けてもよい。これらのポートおよびリンクを集約することによって、複数のポートまたはリンクのリンクアグリゲータグループ(LAG(link aggregator group)と称される)が形成され得る。リンクの集約は、2つのエンドポイント間(例えば、NVDとTORスイッチとの間)の複数の物理リンクを単一の論理リンクとして扱うことを可能にする。所定のLAG内の全ての物理リンクは、同じ速度で全二重モードで動作し得る。LAGは、2つのエンドポイント間の接続の帯域幅および信頼性を高めるのに役立つ。LAG内の物理リンクのうちの1つが故障した場合、トラフィックは、LAG内の別の物理リンクに動的かつ透過的に再割当てされる。集約された物理リンクは、個々のリンクよりも高い帯域幅を提供する。LAGに関連付けられた複数のポートは、単一の論理ポートとして扱われる。トラフィックをLAGの複数の物理リンクに負荷分散することができる。2つのエンドポイント間に1つ以上のLAGが構成されてもよい。2つのエンドポイントは、例えば、NVDとTORスイッチとの間にあってもよく、ホストマシンとNVDとの間にあってもよい。
NVDは、ネットワーク仮想化機能を実装または実行する。これらの機能は、NVDによって実行されるソフトウェア/ファームウェアによって実行される。ネットワーク仮想化機能の例は、限定されないが、パケットのカプセル化およびカプセル化解除機能、VCNネットワークを作成するための機能、VCNセキュリティリスト(ファイアウォール)機能などのネットワークポリシーを実装するための機能、VCN内の計算インスタンスとの間のパケットのルーティングおよび転送を容易にするための機能などを含む。特定の実施形態において、パケットを受信すると、NVDは、パケットを処理し、パケットをどのように転送またはルーティングするかを判断するためのパケット処理パイプラインを実行するように構成されている。このパケット処理パイプラインの一部として、NVDは、VCN内の計算インスタンスに関連するVNICの実行、VCNに関連する仮想ルータ(VR)の実行、仮想ネットワーク内の転送またはルーティングを容易にするためのパケットのカプセル化およびカプセル解除、特定のゲートウェイ(例えば、ローカルピアリングゲートウェイ)の実行、セキュリティリストの実装、ネットワークセキュリティグループ、ネットワークアドレス変換(NAT)機能(例えば、ホスト毎にパブリックIPからプライベートIPへの変換)、スロットリング機能、および他の機能を提供する。
いくつかの実施形態において、NVDにおけるパケット処理データ経路は、複数のパケットパイプラインを含んでもよい。各々のパケットパイプラインは、一連のパケット変換ステージから構成される。いくつかの実装形態において、パケットを受信すると、当該パケットは、解析され、単一のパイプラインに分類される。次いで、パケットは、破棄されるまたはNVDのインターフェイスを介して送出されるまで、線形方式でステージ毎に処理される。これらのステージは、基本機能のパケット処理構築ブロック(例えば、ヘッダの検証、スロットルの実行、新しいレイヤ2ヘッダの挿入、L4ファイアウォールの実行、VCNカプセル化/カプセル解除)を提供し、その結果、既存のステージを組み立てることによって新しいパイプラインを構築することができ、新しいステージを作成して既存のパイプラインに挿入することによって新しい機能を追加することができる。
NVDは、VCNの制御プレーンおよびデータプレーンに対応する制御プレーン機能およびデータプレーン機能の両方を実行し得る。VCN制御プレーンの例は、図12、13、14、および15(参照番号1216、1316、1416、および1516参照)に示され、以下に説明される。VCNデータプレーンの例は、図12、13、14、および15(参照番号1218、1318、1418、および1518参照)に示され、以下に説明される。制御プレーン機能は、データをどのように転送するかを制御するネットワークを構成する(例えば、ルートおよびルートテーブルを設定する、VNICを構成する)ために使用される機能を含む。特定の実施形態において、全てのオーバーレイと基板とのマッピングを集中的に計算し、NVDおよび仮想ネットワークエッジデバイス(例えば、DRG、SGW、IGWなどの様々なゲートウェイ)に公開するVCN制御プレーンが提供される。また、同じメカニズムを使用してファイアウォールルールを公開してもよい。特定の実施形態において、NVDは、当該NVDに関連するマッピングのみを取得する。データプレーン機能は、制御プレーンを使用して設定された構成に基づいて、パケットの実際のルーティング/転送を行う機能を含む。VCNデータプレーンは、顧客のネットワークパケットが基板ネットワークを通過する前に、当該ネットワークパケットをカプセル化することによって実装される。カプセル化/カプセル解除機能は、NVD上で実装される。特定の実施形態において、NVDは、ホストマシンに出入りする全てのネットワークパケットを傍受し、ネットワーク仮想化機能を実行するように構成されている。
上述したように、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関連の機能を実行)し得る。
また、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を実行し得る。
VNICおよびVCN VRに加えて、NVDは、様々なソフトウェア(例えば、デーモン)を実行し、NVDによって実行される様々なネットワーク仮想化機能を容易にする1つ以上のハードウェアコンポーネントを含み得る。簡略化のために、これらの様々なコンポーネントは、図2に示す「パケット処理コンポーネント」としてグループ化される。例えば、NVD210は、パケット処理コンポーネント286を含み、NVD212は、パケット処理コンポーネント288を含む。例えば、NVDのパケット処理コンポーネントは、NVDのポートおよびハードウェアインターフェイスと相互作用することによって、NVDを使用して受信され、通信される全てのパケットを監視し、ネットワーク情報を記憶するように構成されたパケットプロセッサを含んでもよい。ネットワーク情報は、例えば、NVDによって処理される異なるネットワークフローを特定するためのネットワークフロー情報および各フローの情報(例えば、各フローの統計情報)を含んでもよい。特定の実施形態において、ネットワークフロー情報はVNIC単位で記憶されてもよい。パケットプロセッサは、パケットごとの操作を実行し得るとともに、ステートフルNATおよびL4ファイアウォール(FW)を実装し得る。別の例として、パケット処理コンポーネントは、NVDによって記憶された情報を1つ以上の異なる複製ターゲットストアに複製するように構成された複製エージェント(replication agent)を含み得る。さらに別の例として、パケット処理コンポーネントは、NVDのロギング機能を実行するように構成されたロギングエージェント(logging agent)を含んでもよい。また、パケット処理コンポーネントは、NVDの性能および健全性を監視し、場合によっては、NVDに接続されている他のコンポーネントの状態および健全性を監視するためのソフトウェアを含んでもよい。
図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の他の実装形態によって実行されてもよい。
上述したように、顧客VCN内の計算インスタンスは、様々な異なるエンドポイントと通信し得る。これらのエンドポイントは、ソース計算インスタンスと同じサブネット内にあってもよく、異なるサブネット内であるがソース計算インスタンスと同じVCNにあってもよく、またはソース計算インスタンスのVCN外部のエンドポイントを含んでもよい。これらの通信は、計算インスタンスに関連付けられたVNIC、VCN VR、およびVCNに関連付けられたゲートウェイを用いて促進される。
VCN内の同じサブネット上の2つの計算インスタンス間の通信は、ソース計算インスタンスおよび宛先計算インスタンスに関連付けられたVNICを用いて促進される。ソース計算インスタンスおよび宛先計算インスタンスは、同じホストマシンによってホストされてもよく、異なるホストマシンによってホストされてもよい。ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに転送されてもよい。NVDにおいて、パケットは、パケット処理パイプラインを用いて処理され、このパイプラインは、ソース計算インスタンスに関連するVNICの実行を含み得る。パケットの宛先エンドポイントが同じサブネットにあるため、ソース計算インスタンスに関連付けられたVNICの実行により、パケットは、宛先計算インスタンスに関連付けられたVNICを実行するNVDに転送され、NVDは、パケットを処理し、宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスおよび宛先計算インスタンスがともに同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、または(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。VNICは、NVDによって記憶されたルーティング/転送テーブルを使用して、パケットについてのネクストホップを決定してもよい。
サブネット内の計算インスタンスから同じVCN内の異なるサブネット内のエンドポイントにパケットを通信する場合、ソース計算インスタンスから発信されたパケットは、ソース計算インスタンスをホストするホストマシンから、そのホストマシンに接続されたNVDに通信される。NVDにおいて、パケットは、1つ以上のVNICの実行を含み得るパケット処理パイプラインおよびVCNに関連するVRを用いて処理される。例えば、NVDは、パケット処理パイプラインの一部として、ソース計算インスタンスに関連するVNICに対応する機能を実行または呼び出す(VNICを実行するとも称される)。VNICによって実行される機能は、パケット上のVLANタグを調べることを含み得る。パケットの宛先がサブネットの外部にあるため、VCN VR機能は、呼び出され、NVDによって実行される。その後、VCN VRは、パケットを、宛先計算インスタンスに関連付けられたVNICを実行するNVDにルーティングする。そして、宛先計算インスタンスに関連付けられたVNICは、パケットを処理し、パケットを宛先計算インスタンスに転送する。ソース計算インスタンスおよび宛先計算インスタンスに関連するVNICは、(例えば、ソース計算インスタンスおよび宛先計算インスタンスがともに同じホストマシンによってホストされている場合)同じNVD上で実行されてもよく、(例えば、ソース計算インスタンスおよび宛先計算インスタンスが異なるNVDに接続された異なるホストマシンによってホストされている場合)異なるNVD上で実行されてもよい。
パケットの宛先がソース計算インスタンスの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は、パケット内のカプセル化された情報を検査し、意図した宛先エンドポイントへのパケットの通信を容易にする目的でパケットを転送するためのネクストホップを決定し、決定したネクストホップにパケットを転送するように構成されている。
VCN上に展開された計算インスタンスは、様々な異なるエンドポイントと通信することができる。これらのエンドポイントは、CSPI200によってホストされているエンドポイントと、CSPI200外部のエンドポイントとを含んでもよい。CSPI200によってホストされているエンドポイントは、(顧客のVCN、または顧客に属さないVCNであり得る)同じVCNまたは他のVCN内のインスタンスを含んでもよい。CSPI200によってホストされているエンドポイント間の通信は、物理ネットワーク218を介して実行されてもよい。また、計算インスタンスは、CSPI200によってホストされていないかまたはCSPI200の外部にあるエンドポイントと通信してもよい。これらのエンドポイントの例は、顧客のオンプレミスネットワークまたはデータセンタ内のエンドポイント、またはインターネットなどのパブリックネットワークを介してアクセス可能なパブリックエンドポイントを含む。CSPI200外部のエンドポイントとの通信は、様々な通信プロトコルを用いて、パブリックネットワーク(例えば、インターネット)(図2に図示せず)またはプライベートネットワーク(図2に図示せず)を介して実行されてもよい。
図2に示されたCSPI200のアーキテクチャは、単なる一例であり、限定することを意図していない。代替的な実施形態において、変形、代替、および修正が可能である。例えば、いくつかの実装形態において、CSPI200は、図2に示されたものよりも多いまたは少ないシステムまたはコンポーネントを有してもよく、2つ以上のシステムを組合わせてもよく、または異なるシステム構成または配置を有してもよい。図2に示されたシステム、サブシステム、および他のコンポーネントは、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組合わせを用いて実装されてもよい。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
図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に接続されている。
図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を所有していると信じている。
特定の実施形態において、各論理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仮想化を提供する。
図5は、特定の実施形態に従った、物理ネットワーク500を示す概略ブロック図である。図5に示された実施形態は、Closネットワークとして構築される。Closネットワークは、高い二分割帯域幅および最大リソース利用率を維持しながら、接続冗長性を提供するように設計された特定の種類のネットワークトポロジである。Closネットワークは、一種の非ブロッキング、多段または多層スイッチングネットワークであり、段または層の数は、2、3、4、5などであってもよい。図5に示された実施形態は、層1、層2および層3を含む3層ネットワークである。TORスイッチ504は、Closネットワークの層-0スイッチを表わす。1つ以上のNVDは、TORスイッチに接続されている。層-0スイッチは、物理ネットワークのエッジデバイスとも呼ばれる。層-0スイッチは、リーフスイッチとも呼ばれる層-1スイッチに接続されている。図5に示された実施形態において、「n」個の層-0 TORスイッチは、「n」個の層-1スイッチに接続され、ポッドを形成する。ポッド内の各層-0スイッチは、ポッド内の全ての層-1スイッチに相互接続されるが、ポッド間のスイッチは、接続されない。特定の実装例において、2つのポッドは、ブロックと呼ばれる。各ブロックは、「n」個の層-2スイッチ(スパインスイッチとも呼ばれる)によってサービスを提供されるまたはそれに接続されている。物理ネットワークトポロジにはいくつかのブロックが存在し得る。同様に、層-2スイッチは、「n」個の層-3スイッチ(スーパースパインスイッチとも呼ばれる)に接続されている。物理ネットワーク500を介したパケットの通信は、典型的には、1つ以上のレイヤ3通信プロトコルを使用して実行される。典型的には、TOR層を除く物理ネットワークの全ての層は、nウェイ冗長であり、したがって高い可用性を実現することができる。ポッドおよびブロックにポリシーを指定して、物理ネットワークのスイッチの相互可視性を制御することによって、物理ネットワークを拡張することができる。
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トポロジは、水平方向に拡張可能であり、コスト効率に優れている。各階層により多くのスイッチ(例えば、より多くのリーフスイッチおよびスパインスイッチ)を増設すること、および隣接する階層のスイッチ間にリンク数を増やすことによって、ネットワークの帯域幅/スループット容量を容易に増加させることができる。
特定の実施形態において、CSPI内の各リソースには、クラウド識別子(Cloud Identifier:CID)と呼ばれる固有識別子が割当てられる。この識別子は、リソースの情報の一部として含まれる。この識別子を用いて、例えば、コンソールまたはAPIを介してリソースを管理することができる。CIDの例示的なシンタックスは、以下の通りである。
ocid1.<RESOURCE TYPE>.<REALM>.[REGION].[FUTURE USE].<UNIQUE ID>である。
式中、
「ocid1」は、CIDのバージョンを示す文字列である。
「resource type」は、リソースの種類(例えば、インスタンス、ボリューム、VCN、サブネット、ユーザ、グループ)を表わす。
「realm」は、リソースが存在する領域を表わす。例示的な値として、「c1」は、商業領域を表し、「c2」は、政府クラウド領域を表し、または「c3」は、連邦政府クラウド領域を表わす。各領域は、独自のドメイン名を持ち得る。
「region」は、リソースが属する地域を表わす。地域がリソースに適用されない場合、この部分は空白であってもよい。
「future use」は、将来使用のために保留されていることを示す。
「unique id」は、固有IDの部分である。このフォーマットは、リソースまたはサービスの種類によって異なる場合がある。
オーバーレイネットワークにおけるIPアドレスのスケーリング
本開示は、仮想化されたクラウドネットワーキング環境においてIPアドレスをスケーリングするための技術を提供する。特定の実施形態では、IPアドレスは、ロードバランサを用いることなく、仮想化されたネットワーキング環境においてスケーリングされ、結果として、ロードバランサを用いることに関する様々な問題が回避される。
上述したように、IaaSクラウドサービスプロバイダ(CSP)によって提供されるクラウドサービスプロバイダインフラストラクチャ(CSPI)は、CSPの複数の顧客のための複数のオーバーレイネットワーク(仮想クラウドネットワークまたはVCNとも称される)をホストするために使用され得る。CSPIは、ホストマシン、NVD、ルータ、スイッチ等の複数の物理ネットワークデバイスを備えた物理ネットワークを含む。物理ネットワーク内のネットワークデバイスに関連付けられたIPアドレスは物理IPアドレスと称される。オーバーレイネットワーク(またはVCN)は、物理ネットワーク上で動作する論理ネットワークまたは仮想ネットワークである。物理ネットワークは、1つ以上のオーバーレイネットワークまたはVCNをサポートすることができる。典型的には、オーバーレイネットワークは顧客固有のものであり、顧客VCNと呼ばれる。顧客は、顧客のVCN内に1つ以上の計算インスタンスおよび他のリソースを展開することができ、これらの計算インスタンスは仮想マシン、ベアメタルインスタンス等であり得る。オーバーレイIPアドレスは、顧客のVCNに展開された計算インスタンス等の、オーバーレイネットワーク内の計算インスタンスおよび他のリソース(例えば、ロードバランサ)に関連付けられたIPアドレスである。2人の異なる顧客は、場合によっては、それぞれのVCNにおいて同じオーバーレイIPアドレスを用いてもよい。
上述したように、特定の実装形態では、単一のオーバーレイIPアドレスは、単一のオーバーレイIPアドレスを複数の仮想ネットワークインターフェイスカード(VNIC)にアタッチするとともにVNICを複数の計算インスタンスに関連付けることによって、複数の計算インスタンスに関連付けられてもよい。複数の計算インスタンスにアタッチされる重複したIPアドレスはマルチアタッチIPアドレスと呼ばれる。他のいくつかの実装形態では、オーバーレイIPアドレスをスケーリングするために、オーバーレイネットワークにおける等コストマルチパス(ECMP)技術が用いられる。マルチアタッチIPアドレス技術およびECMPベース技術の両方について、以下においてより詳細に説明する。
マルチアタッチIPアドレス
単一のオーバーレイIPアドレスを複数の計算インスタンスにアタッチすることを可能にすることによってIPスケーリングを可能にする仮想化クラウドネットワークインフラストラクチャが提供される。これにより、IPアドレスが、ロードバランサを用いることなく、複数の計算インスタンスにわたって水平にスケーリングされることが可能となる。新規なインフラストラクチャは、単一のマルチアタッチオーバーレイIPアドレスに向けられたトラフィックが、ロードバランサを用いることなく、単一のオーバーレイIPアドレスがアタッチされた複数のサーバ計算インスタンスにわたって分散されることを可能にする。
複数の計算インスタンスにアタッチされる重複したIPアドレスはマルチアタッチIPアドレスと呼ばれる。計算インスタンスに関連付けられたマルチアタッチIPアドレスを用いて、その計算インスタンスと通信することで、例えば、その計算インスタンスにパケットを送信したり、その計算インスタンスからパケットを受信したりすることができる。特定の実装形態では、オーバーレイIPアドレスは、オーバーレイIPアドレスを複数の仮想ネットワークインターフェイスカード(VNIC)にアタッチするとともにVNICを複数の計算インスタンスに関連付けることによって、複数の計算インスタンスにアタッチすることができる。次いで、マルチアタッチIPアドレスに向けられたトラフィックは、ロードバランサを用いることなく、複数の計算インスタンスにわたって分散される。
マルチアタッチIPアドレスを要する処理は、ステートフルモードまたはステートレスモードで実行することができる。図6Aは、ステートフルモード処理を用いてマルチアタッチIPアドレスを用いるオーバーレイIPアドレスのスケーリングを実装する分散型クラウド環境を示す。図7Aおよび図7Bは、ステートフル処理を用いてマルチアタッチIPアドレスをスケーリングするために実行される処理を示すフローチャートを示す。図6Bは、ステートレスモードでマルチアタッチIPアドレスを用いてオーバーレイIPアドレスのスケーリングを実装する分散型クラウド環境を示す。図8は、いくつかの実施形態に従った、ステートレスモード処理を用いてマルチアタッチIPアドレスを用いるオーバーレイIPアドレスをスケーリングするための処理を示すフローチャートである。
図6Aは、特定の実施形態に従った、クラウドサービスプロバイダ(CSP)によって提供されるCSPIによってホストされ得るとともに、ロードバランサを用いることなくステートフルモード処理においてマルチアタッチIPアドレスを用いてオーバーレイIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境600の一例を示す。分散環境600は、物理ネットワーク(基板ネットワーク)またはスイッチファブリック610を介して通信可能に結合される複数のシステムを含む。物理ネットワーク610は、レイヤ3通信プロトコル等のプロトコルを用いる通信を可能にする複数のスイッチ、ルータ等の複数のネットワーキングデバイスを備え得る。いくつかの実装形態では、物理ネットワーク610は、図5に示し上述したようなn層のClosネットワークであり得る。「n」の値は、実装形態に応じて1、2、3などであり得る。
図6Aに示される分散環境600は単なる一例であり、特許請求される実施形態の範囲を過度に限定することを意図するものではない。多くの変形例、代替例および変更例が実現可能である。例えば、いくつかの実装形態では、分散環境600は、図6Aに示すよりも多いかまたは少ないシステムまたはコンポーネントを有し得るか、2つ以上のシステムを組合わせ得るか、または異なる構成もしくは配置のシステムを有し得る。図6Aに示すシステム、サブシステム、および他のコンポーネントは、ハードウェアまたはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上に(例えば、メモリデバイス上に)記憶され得る。
図6Aに示す様々なコンポーネントにはIPアドレスが関連付けられており、これらのIPアドレスは、コンポーネントに応じて物理IPアドレスまたはオーバーレイIPアドレスであり得る。図中、「P_IP」は物理IPアドレスを示すのに用いられ、「0_IP」はオーバーレイIPアドレスを示すのに用いられる。これらのIPアドレスは、IPv4アドレス(32ビットアドレス)、IPv6アドレス(128ビットアドレス)、または他のタイプのIPアドレスであり得る。いくつかの実施形態では、IPアドレスは、CIDR(Classless Inter-Domain Routing)IPアドレスフォーマットで表わされることもある。CIDRアドレスは、フォーマット「X/Y」で書かれた2つの番号で構成されており、この場合、プレフィックス「X」はIPv4アドレス(例えば、10.10.10.1)であり、サフィックス「Y」(例えば、/12)は、アドレスのどの部分(何ビット)がネットワークに割当てられ、ネットワークルーティングのために重要であると考えられるかを示す。例えば、192.18.0.0/23は、23ビットがネットワーク部分のために用いられることを示す。
使用事例として、CSPIの顧客は、特定のIPアドレスエンドポイントを用いてクライアントによってアクセス可能なサービス(例えば、クラウドサービス)を提供し得る。図6Aに示す例では、サービスはオーバーレイIPアドレス「B」を用いてアクセス可能になると仮定する。オーバーレイIPアドレス「B」は、IPv4アドレス、IPv6アドレス、または他のタイプのIPアドレスであり得る。例えば、IPアドレスBは「10.10.10.1」であってもよい。
図6Aに示すように、顧客は、クラウドサービスをスケーリングおよび実装するための複数の計算インスタンス602-1~602-Nを提供してきた。計算インスタンス602-1~602-Nにおける計算インスタンスは、仮想マシン計算インスタンスまたはベアメタル計算インスタンスであり得る。同じ単一のオーバーレイIPアドレス「B」が、複数のサーバ計算インスタンス602-1~602-Nの各々に関連付けられるかまたはアタッチされる。同じ単一のオーバーレイIPアドレス「B」がサービスを提供する複数の計算インスタンスにアタッチされることを可能にすることにより、単一のIPアドレスが複数のサービス計算インスタンスにわたってスケーリングされる。
図6Aおよび以下の説明では、計算インスタンス602-1~602-Nをサーバ計算インスタンスと称するが、これは限定することを意図するものではない。計算インスタンスは、クライアントからの要求に応答するときにサーバとして機能し得る。同じ計算インスタンスはまた、別の計算インスタンスに要求を送信する際にクライアントとして機能し得る。計算インスタンス602-1~602-Nは、本開示で説明する教示の説明を簡略化するためにサーバ計算インスタンスと称される。
単一のオーバーレイIPアドレスを複数のサーバ計算インスタンスにアタッチすることを可能にする様々な方法がある。上述したように、計算インスタンスは、計算インスタンスのために構成されるとともに計算インスタンスに関連付けられたVNICを介してオーバーレイネットワーク(例えば、顧客VCN)に関与する。VNICはVCNのサブネットの一部であり得る。特定の実施形態では、複数のVNICは、同じ計算インスタンスに関連付けられ得るとともに、これらのVNICは別々のVCN内にあってもよい。いくつかの実装形態では、単一のオーバーレイIPアドレスは、単一のオーバーレイIPアドレスをVNICに関連付けるかまたはアタッチし、そのVNICを計算インスタンスに関連付けることによって計算インスタンスにアタッチされる。例えば、顧客は、コマンドラインインターフェイス、API等を介して、例えば、CSPIによって提供されるコンソールを用いて、複数のサーバ計算インスタンスをCSPIに登録してもよい。登録時に、複数のサーバ計算インスタンス内の計算インスタンスごとに、VNICが構成されてもよく、単一のオーバーレイIPアドレスがVNICに関連付けられてもよく、次いで、VNICが計算インスタンスに関連付けられてもよい。いくつかの実装形態では、顧客は、VNICおよび複数の計算インスタンスにアタッチされるべき単一のオーバーレイIPアドレス(例えば、アドレス「B」)を指定することが可能になり得る。他のいくつかの事例では、CSPIは、VNICおよび計算インスタンスに関連付けられるべきマルチアタッチIPアドレスとして用いられるべきオーバーレイIPアドレスを自動的に識別し得る。
例えば、図6Aに示す例では、サーバ計算インスタンス#1 602-1にVNIC#1が関連付けられ得るとともにオーバーレイIPアドレス「B」がVNIC#1にアタッチされており、サーバ計算インスタンス#2 602-2にVNIC#2が関連付けられ有得るとともにIPアドレス「B」がVNIC#2にアタッチされており、サーバ計算インスタンス#N 602-NにVNIC#Nが関連付けられ得るとともにIPアドレス「B」がVNIC#Nにアタッチされている、等々である。このようにして、同じオーバーレイIPアドレスが、複数のVNICとVNICに関連付けられた複数の計算インスタンスとにアタッチされる。顧客は、全てのサーバ計算インスタンスを同時に登録する必要はない。顧客は、サーバ計算インスタンスを追加または除去してもよく、それらを、要望に応じて、時間の経過に応じて、マルチアタッチIPアドレスにアタッチされたVNICに関連付けてもよい。
計算インスタンスに関連付けられたVNICの場合、VNICを実装する機能は、計算インスタンスをホストするホストマシンに接続されたネットワーク仮想化デバイス(NVD)によって実行される。NVDは、VNIC機能を提供するソフトウェア(例えば、ネットワーク仮想化機能を実装するソフトウェア)を実行し得る。例えば、計算インスタンスがホストマシンによってホストされる仮想マシンインスタンスである場合、計算インスタンスに関連付けられたVNICのためのVNIC機能は、仮想マシン計算インスタンスをホストするホストマシンに接続されたNVDによって実行され得る。例えば、図2に示し上述したように、ホストマシン202によってホストされる仮想マシン計算インスタンス268の場合、計算インスタンスに関連付けられるVNIC276のためのVNIC機能は、ホストマシン202に接続されたNVD210によって実行される。別の例として、図2では、ホストマシン206によってホストされるベアメタルインスタンス272は、ホストマシン206に接続されたNVD212によって実行されるVNIC280に関連付けられている。そのVNIC機能がNVDによって実行される計算インスタンスの場合、NVDは、計算インスタンスに関連付けられるものとして、または計算インスタンスに対応するNVDであるものとして言及される。例えば、図6Aでは、NVD604-1は、サーバ計算インスタンス602-1に関連付けられ、当該計算インスタンス602-1に関連付けられたVNIC(VNIC#1)のための機能を実行し、NVD604-2は、サーバ計算インスタンス#2 602-2に関連付けられ、当該計算インスタンス#2 602-2に関連付けられたVNIC(VNIC#2)のための機能を実行する、等々である。
図6Aに示す実施形態では、NVD604-1~NVD604-Nは、サーバ計算インスタンス602-1~602-Nのために構成されるVNICのためのVNIC関連機能を実行するNVDを表わす。計算インスタンスに関連付けられた各NVDは、NVDと通信するために使用可能なそれ自体の関連付けられた固有の物理IPアドレスを有する。例えば、図6Aでは、NVD-S#1 604-1は、物理IPアドレス「A.1」を有し、サーバ計算インスタンス#1 602-1に関連付けられたVNICであるVNIC#1のためのVNIC関連機能を実行し、NVD-S#2 604-2は、物理IPアドレス「A.2」を有し、サーバ計算インスタンス#2 602-2に関連付けられたVNICであるVNIC#2のためのVNIC関連機能を実行し、NVD-S#N 604-Nは、物理IPアドレス「A.N」を有し、サーバ計算インスタンス#N 602-Nに関連付けられたVNICであるVNIC#NのためのVNIC関連機能を実行する、等々である。
上述したように、NVDは、例えば、VNIC関連機能を実行するなどして、様々なネットワーキング関連および仮想化関連の機能を実行する役割を果たすネットワーク仮想化スタックを実装するソフトウェアを実行する。NVDは、スマートNIC(smartNIC)として、トップオブラック(Top-of-Rack)(TORスイッチ)として、スマートTOR(smartTOR)(拡張能力を有するTOR)として、ルータ、スイッチ、またはネットワーク仮想化スタックを実行する汎用コンピュータホストを含む、様々な形態で実装され得る。
特定の実施形態では、VCN制御プレーン616は、CSPIによってホストされるオーバーレイネットワーク(例えば、VCN)を構成および管理する役割を果たす。VCN制御プレーン616は、様々な顧客のためのVCNに関する構成情報を記憶し得る。例えば、VCN制御プレーン616は、IPアドレスとVNICとの間、VNICと計算インスタンスとの間、VNICとVCNとの間等のマッピングおよび関連付けを記憶し得る。VCN制御プレーン616は、この情報を用いて、CSPIによってホストされるオーバーレイネットワーク(例えば、VCN)に関与するエンティティ間の通信を可能にするためにCSPIのコンポーネントによって使用され得る転送テーブル(例えば、図10に示す転送テーブル1002)、マッピングテーブル(例えば、図6Aに示すIPマッピングテーブル612)等を生成し得る。特定の実施形態では、VCN制御プレーン616はまた、マルチアタッチIPアドレスとそのVNICと複数の計算インスタンスとの間のマッピング、マルチアタッチIPアドレスと複数の計算インスタンスに関連付けられたNVDの物理IPアドレスとの間のマッピング、ならびに、マルチアタッチIPアドレスへのトラフィックおよびマルチアタッチIPアドレスからのトラフィックを処理するために用いられる他のマッピング、を記憶する役割を果たす。
図6Aに示す例では、クライアント606は、IPアドレス「B」への通信を送信することによって、顧客によって提供されるサービスにアクセスするための要求を開始してもよい。通信は、クライアント606にて発信されるとともに宛先IPアドレス「B」を有する1つ以上のパケットの形態であり得る。クライアント606は、仮想マシン計算インスタンスもしくはベアメタル計算インスタンス等の別の計算インスタンス、または何らかのコンピューティングデバイスであり得る。計算インスタンスについて単語「クライアント」を用いる場合、それは限定的であることを意図するものではない。同じ計算インスタンスはサーバ計算インスタンスとしても作用し得る。いくつかの実装形態では、クライアント606自体が、マルチアタッチIPアドレスを有する計算インスタンスであってもよい。
クライアントに関連付けられたNVDは、クライアントによって発信された要求パケットを受信する。例えば、図6Aでは、NVD608(「NVD-クライアント」608)は、クライアント606に関連付けられており、クライアント606が送信したパケットを受信し得る。例えば、NVD-クライアント608は、クライアントインスタンス606をホストするホストマシンに接続されてもよく、クライアント606に関連付けられたVNICのためのVNIC関連機能を実装するネットワーク仮想化スタックを実行してもよい。図6Aに示す例では、クライアント606にはオーバーレイIPアドレス(O_IP)「C」が関連付けられており、クライアント606に対応するNVD-クライアント608は物理IPアドレス「D」を有する。
ステートフルモードでマルチアタッチIPアドレスを用いてIPスケーリングを提供するために図6Aの様々なコンポーネントによって実行される処理について、図7Aおよび図7Bに示すフローチャートを参照しながら以下で説明する。図7Aおよび図7Bは、いくつかの実施形態に従った、ステートフルモード処理を用いてマルチアタッチIPアドレスを用いるオーバーレイIPアドレスをスケーリングするために実行される処理を示す簡略化されたフローチャート700を示す。図7Aおよび図7Bに示す処理は、ハードウェアまたはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上に(例えば、メモリデバイス上に)記憶され得る。図7Aおよび図7Bに示すとともに以下に記載する方法は、例示的なものであり非限定的であるよう意図されている。図7Aおよび図7Bは、特定のシーケンスまたは順序で行なわれる様々な処理ステップを示しているが、これは、限定することを意図するものではない。特定の代替的な実施形態では、処理はいくつかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
フローチャート700の処理は、ステートフルモード処理を用いて実行され、NVDによって処理されているネットワークフロー(例えば、TCPネットワークフロー、UDPネットワークフロー)に関する情報が、NVDによって関連するフローテーブル(図6Aのフローテーブル614等)に記憶される。次いで、フロー情報は、マルチアタッチIPアドレスに関連付けられた複数の計算インスタンスのうちのいずれがパケットを受信するために選択されるかを選択する際に、NVDによって用いられる。ステートフル処理では、マルチアタッチIPアドレスにアタッチされた特定の計算インスタンスが、特定のネットワークフローに属するパケットを処理するために選択されると、その特定のネットワークフローに属する後続のすべてのパケットが、処理の整合性のためにその同じ特定の計算インスタンスに転送される。図8に示すフローチャートはステートレスモードで実行される処理を示す。ステートレスモードでは、フロー情報は、NVDによって記憶されず、このため、パケットの転送のために使用されない。ステートフル処理は、典型的には、ステートレス処理よりも多くの処理およびメモリリソースを必要とするが、ステートレス処理よりも豊富な機能セットを提供し得る。
図7Aを参照すると、702において、クライアントが特定の宛先オーバーレイIPアドレスに送信されるべきIPパケットを発信するときに、処理が開始される。例えば、図6Aに示す実施形態では、702におけるパケットは、クライアント606がオーバーレイIPアドレス「B」を介してアクセス可能なサービスへのアクセスを要求するときに生成され得る。この結果、クライアント606にて発信されるとともに宛先オーバーレイIPアドレス「B」を有するIPパケットが得られる。
704では、702において生成されたIPパケットが、クライアントに関連付けられるNVDによって受信される。当該NVDは、パケットを発信するクライアントに関連付けられたVNICのための機能を実装するものである。例えば、図6Aでは、パケットは、クライアント606をホストするホストマシンに接続されたNVD-クライアント608によって受信される。図6Aに示す実施形態では、NVD-クライアント608は物理IPアドレス「D」を有する。
706では、704においてIPパケットを受信するNVDは、そのIPマッピングテーブルを参照して、受信したパケットをどのように転送すべきかを決定する。パケットの宛先IPアドレスがマルチアタッチIPアドレスである場合、NVDは、706において、パケットの宛先IPアドレスが複数のNVDの複数の物理IPアドレスにマップしていると判断する。例えば、図6Aでは、NVD-クライアント608は、クライアント606から受信したパケットの宛先IPアドレスが「B」であること、および、そのローカルIPマッピングテーブル612内の情報に基づいて、オーバーレイIPアドレス「B」が複数の物理IPアドレスA.1、A.2、A.3、A.4、…A.Nにマップしていると判断し得る。
いくつかの実施形態では、オーバーレイIPアドレスをNVDの物理IPアドレスにマッピングする情報は、図6Aに示すVCN制御プレーン616等のVCN制御プレーンによって維持される。VCN制御プレーンは、IPマッピングテーブル情報を生成し、それをオーバーレイネットワーク内の様々なNVDに公開する役割を果たす。例えば、図6Aに示すIPマッピングテーブル612は、VCN制御プレーン616によって生成され得るとともに、オーバーレイネットワーク内のNVD-クライアント608および他のNVDに発行され得る。
708では、パケットを受信するNVDは、受信パケットに対応する特定のネットワークフロー(例えば、TCPネットワークフロー、UDPネットワークフロー)を決定する。特定の実装形態では、組合わせて得られた受信されたパケットからの特定のフィールドのコンテンツは、パケットのためのネットワークフローを定義する。例えば、パケットの5つのフィールド(5タプルと呼ばれることもある)のコンテンツが判断され得るとともに、組合わされてパケットのためのネットワークフローを定義する。特定の実装形態では、5つのフィールドは、ソースIPアドレスフィールド、(例えば、伝送制御プロトコル(TCP)ポートまたはユーザデータグラムプロトコル(UDP)ポートを指定する)ソースポートフィールド、宛先IPアドレス、(例えば、TCPポートまたはUDPポートを指定する)宛先ポートフィールド、およびプロトコルフィールド(例えば、TCPはプロトコル番号6(0x06)によって示され、UDPはプロトコル番号17(0x11)である)である。他の実装形態では、パケットのフィールドの異なるセット(5よりも多いフィールド、5未満のフィールド、別々の5つのフィールド等)からのコンテンツをまとめて取込んで、パケットのためのネットワークフローを決定してもよい。
710では、NVDは、708において決定された特定のネットワークフローが新しいネットワークフローであるかまたは既存のネットワークフローであるかを判断するための処理を実行する。特定の実装形態では、NVDは、708において決定された特定のネットワークフローを、NVDのフローテーブルにおいて識別されたネットワークフローと比較することによってこれを実行する。この場合、NVDのフローテーブルは、NVDによってそれ以前に対処または処理されたネットワークフローを識別する。708において決定された特定のネットワークフローがフローテーブルに見つかった場合、既存のネットワークフローを示し、そうでなければ、新しいネットワークフローを示す。712では、710において実行された処理に基づいて、708において決定された特定のネットワークフローが新しいネットワークフローであるかまたは既存のネットワークフローであるかを調べるためのチェックが行なわれ、チェックの結果に基づいて、さらに処理が続けられる。特定のネットワークフローが新しいネットワークフローであると判断された(すなわち、特定のネットワークフローがフローテーブルに見出されない)場合、処理は図7Bの720に進み、そうではなく、特定のネットワークフローがフローテーブルに既に存在すると判断された場合、処理は図7Bの724に進む。
例えば、図6Aに示す実施形態では、708において、NVD-クライアント608は、受信されたパケットのための特定のフィールド(例えば、上述の5タプル)のコンテンツの組合せを調べて、受信されたパケットのための特定のネットワークフローを決定してもよい。次いで、NVD608は、710において、フローテーブル614をサーチして、708において決定された特定のネットワークフローが新しいネットワークフローであるかまたは既存のネットワークフローであるかを判断し得る。図6Aの例では、フローテーブル614は、TCPネットワークフローTCP-Flow#1(5タプルで表される)、TCP-Flow#2(5タプルで表される)、およびTCP-Flow#3(5タプルで表される)が既存のネットワークフローであることを示す。したがって、708において決定された特定のネットワークフローがこれら3つのネットワークフローのうちの1つに一致する(例えば、受信されたパケットの5タプルがフローテーブル内の5タプルに一致する)場合、受信されたパケットは既存のネットワークフローに属しているので、処理は図7Bの724に進み、そうでない場合、受信されたパケットは新しいネットワークフローに属しているので、処理は図7Bの720に進む。
ここで図7Bを参照すると、704でNVDによって受信されたパケットが新しいネットワークフローに属していると712において判断されると、720において、クライアントNVDは、選択技術を用いて、パケットの宛先オーバーレイIPアドレスにマッピングされる複数の物理IPアドレスのうちの1つを選択する。例えば、図6Aでは、オーバーレイIPアドレス「B」の場合、NVD608は、オーバーレイIPアドレス「B」にマッピングされる複数の物理IPアドレスA.1、A.2、…、A.Nのうちの1つを選択する。ラウンドロビン技術、最低使用頻度技術、ランダム化技術、または他の技術等の様々な異なる選択技術が使用され得る。いくつかの実装形態では、選択技術は、最初に、受信されたパケットの特定のフィールドのコンテンツをハッシュすることによってハッシュ値を生成し、次いで、生成されたハッシュ値に基づいて、オーバーレイIPアドレスにマッピングされた複数の物理IPアドレスの中から特定の物理IPアドレスを決定し得る。例えば、ハッシングは、フィールドのコンテンツに基づいて値を生成すること、および、値「N」を用いてモジュロ関数を適用することを含み得る。ここで、「N」は、オーバーレイIPアドレスにマッピングする物理IPアドレスの数である。結果として生じるハッシュ値は、複数の物理IPアドレスから特定の物理IPアドレスを指し示すかまたはインデックス付けし得るとともに、720において、その特定の物理IPアドレスが選択される。特定の実施形態では、選択技術の目標は、マルチアタッチオーバーレイIPアドレスにアタッチされる複数のサーバ計算インスタンスにわたって、マルチアタッチオーバーレイIPアドレスに向けられたトラフィックを均等に分散することである。
722において、NVDは、708において決定された特定のネットワークフローを参照するエントリをそのフローテーブルに追加し得る。この追加されたエントリはまた、708において決定された特定のネットワークフローの場合に、720において選択された物理IPアドレスが、このネットワークフローに属するパケットを処理するために選択されたことを示し得る。フローテーブル内のこのエントリは、次いで、その特定のネットワークフローに属する後続のパケットのために使用され得てもよく、ネットワークフローに属する後続のパケットが同じ物理IPアドレスに、したがって、処理のために同じサーバ計算インスタンスに送信されることを可能にする。このようにして、インフラストラクチャは、ネットワークフローに属するパケットが同じサーバ計算インスタンスに到達し、同じサーバ計算インスタンスによって処理されることを確実にする。次に、処理は以下に説明するように726へ進む。
例えば、図6Aに示す実施形態では、受信されたパケットに関して決定された特定のネットワークフローがTCP-Flow#4であると仮定する。NVD-クライアント608は、710および712における処理に基づいて、このネットワークフローがフローテーブル614内に見出されず、したがって、受信されたパケットが新しいネットワークフローに属していると判断する。次いで、NVD-クライアント608は、アドレスA.1、A.2、A.3、…A.Nの中から1つの物理IPアドレスを選択する。一例として、物理IPアドレスA.2が選択されると仮定する。次いで、NVD-クライアント608は、TCP-Flow#4を参照するエントリであってこのネットワークフローに属するパケットを処理するために物理IPアドレスA.2が選択されたことをさらに示すエントリをフローテーブル614に追加し得る。例えば、エントリ「TCP-Flow#4-A.2」が722においてフローテーブル614に追加され得る。
704においてNVDによって受信されたパケットが既存のネットワークフローに属していると712において判断された場合、724において、NVDは、708において決定された特定のネットワークフローのためのフローテーブル内のエントリを識別し、そのエントリによって識別される特定の物理IPアドレスが、パケットが送信されるべきアドレスとして選択される。この特定の物理IPアドレスは、同じオーバーレイIPアドレスにアタッチされた複数のサーバ計算インスタンスからの特定のサーバ計算インスタンスに関連づけられたNVDのアドレスである。実質的には、724において、NVDのための特定の物理IPアドレスを選択することにより、パケットが送信されるべき特定のサーバ計算インスタンスが選択され、このサーバ計算インスタンスは、受信されたパケットが属する特定のネットワークフローを既に処理しているインスタンスである。例えば、図6においては、NVD-クライアント608は、受信されたパケットがフローテーブル614において識別されるネットワークフロー「TCP-Flow#2」に属していると判断してもよく、次いで、受信されたパケットが送信されるべきアドレスとして物理IPアドレス「A.2」が選択される。
726において、トンネリングプロトコルが、704においてパケットを受信するNVDから、720または724において選択された物理IPアドレスに関連付けられたNVDに、パケットを通信するために用いられる。IP-in-IP(または汎用ルーティングカプセル化(Generic Routing Encapsulation:GRE))、仮想拡張可能LAN(VxLAN-IETF RFC7348)、仮想プライベートネットワーク(Virtual Private Network:VPN)(例えば、MPLSレイヤ3仮想プライベートネットワーク(RFC4364))、VMware′s NSX、GENEVE(Generic Network Virtualization Encapsulation:汎用ネットワーク仮想化カプセル化)等の様々な異なるトンネリングプロトコルが用いられてもよい。トンネリングは、典型的には、受信されたパケットを1つ以上のヘッダ内にカプセル化することを含み、ヘッダ内の情報は、物理ネットワーク610を介して送信側NVDから受信側NVDにパケットを通信するために用いられる。仮想化ネットワークにおけるトンネリングは、送信側NVDによって受信されるとともにブロードキャストドメインまたは物理ネットワークによって無制限にされた元のパケットに如何なる変更も加えることなく、トラフィックが、あるエンドポイント(例えば、パケットを送信するNVD)から別のエンドポイント(例えば、パケットを受信するNVD)に通信されることを可能にする。パケットのカプセル化に関する処理は送信側NVDによって実行される。例えば、図6Aでは、パケットカプセル化はNVD-クライアント608によって実行される。例えば、受信されたパケットがネットワークフロー「TCP-Flow#2」に属しており、物理IPアドレスA.2に送信されるべきであると判断された場合、トンネリングプロトコルを用いて、パケットをNVD-クライアント608から物理IPアドレスA.2に関連付けられたNVD-S#2 604-2に通信する。
728では、726においてパケットが送信された先の物理IPアドレスに関連付けられたNVDが当該パケットを受信する。例えば、パケットが物理IPアドレスA.2に送信された場合、NVD-S#2 604-2がパケットを受信する。730では、728においてパケットを受信するNVDが、次いで、受信NVDに関連付けられているとともにマルチアタッチオーバーレイIPアドレスをそのIPアドレスとして有するサーバ計算インスタンスに当該パケットを転送する。例えば、図6Aでは、NVD604-2は、オーバーレイIPアドレス「B」に関連付けられたサーバ計算インスタンス#2 602-2にパケットを転送する。
図7Aおよび図7Bに示すとともに上述した処理は、マルチアタッチドオーバーレイIPアドレス(例えば、オーバーレイIPアドレス「B」)宛ての複数のパケットに対して実行することができ、ここで、当該複数のパケットは1つ以上のクライアントから発信される。パケットを発信するクライアントをホストするホストマシンに接続されるNVDは、マルチアタッチIPアドレスにアタッチされた複数の計算インスタンスに関連付けられた複数のNVDのうちのいずれが処理すべきパケットを受信するかを判断するための処理を実行するように構成される。NVDは、実質的に、マルチアタッチIPアドレスにアタッチされた複数の計算インスタンスの中からパケットを受信するための特定の計算インスタンスを選択する。複数の計算インスタンスのうちの異なるものは、マルチアタッチIPアドレスにアドレス指定されたパケットに対して別々の時間に選択され得る。例えば、第1のネットワークフローに属するパケットが計算インスタンス#1に送信され得、第2のネットワークフローに属するパケットが計算インスタンス#2に送信され得、第3のネットワークフローに属するパケットが計算インスタンス#3に送信され得る、等々である。このようにして、マルチアタッチIPアドレスに送信されるパケットは複数のサーバ計算インスタンスにわたって分散され、これはすべて、如何なるロードバランサまたは如何なる複雑なルーティングテーブルも用いずに達成される。
特定の実施形態では、NVD(例えば、NVD-クライアント608およびNVD604)によって実行される図7Aおよび図7Bに示す機能は、NVDの1つ以上のプロセッサによって実行されるソフトウェアを用いて実装される。例えば、NVDは、本開示に記載の様々な機能を実装するネットワークスタックソフトウェアを実行し得る。
上述したように、図7Aおよび図7Bはステートフルモードで実行される処理を示し、この場合、フローテーブルは、既存のフローを示すNVDによって維持され、フローテーブル内の情報は、パケットがどのように転送されるべきかを決定するために用いられる。特定のネットワークフローに属するパケットは、同じサーバ計算インスタンスに送信され、同じサーバ計算インスタンスによって処理される。しかしながら、ステートフル処理は、ステートレス処理よりも余分な処理およびリソース(例えば、フローテーブルを記憶するためのメモリ、フローテーブル情報をチェックするために必要な余分な処理等)を必要とする。
図6Bは、いくつかの実施形態に従った、クラウドサービスプロバイダ(CSP)によって提供されるCSPIによってホストされ得るとともに、ロードバランサを用いることなくステートレスモード処理においてマルチアタッチIPアドレスを用いてオーバーレイIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境650の一例を示す。分散環境650は、図6Aに示す分散環境600と非常に類似しており、図6Bの同様のコンポーネントは、図6Aと同じ参照番号を用いて分類されている。しかしながら、図6Bでは、フローテーブルは存在しない。NVDはいずれのフローテーブルも記憶しないので、処理はステートレスと称される。
図8は、いくつかの実施形態に従った、ステートレスモード処理を用いてマルチアタッチIPアドレスを用いるオーバーレイIPアドレスをスケーリングするための処理を示す簡略化されたフローチャート800を示す。図8に示す処理は、ハードウェア、またはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上(例えば、メモリデバイス上)に記憶され得る。図8に示すとともに以下に記載する方法は、例示的なものであり非限定的であるよう意図されている。図8は、特定のシーケンスまたは順序で行なわれる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替的な実施形態では、処理はいくつかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
802、804、および806における処理は、それぞれ、図7Aに示すとともに上述した702、704、および706において実行される処理と同様である。808では、受信されたパケットについてハッシュ値が生成される。808では、様々な異なるハッシュ技術が使用され得る。いくつかの実装形態では、ハッシュ値は、受信されたパケットの1つ以上のフィールドのコンテンツを用いて生成される。例えば、受信されたパケットのソースIPアドレスフィールド、ソースポートフィールド、宛先IPアドレスフィールド、宛先ポートフィールドおよびプロトコルフィールドのコンテンツを用いて初期値を生成し、次いで、当該初期値にモジュロ「N」関数を適用して最終ハッシュ値を生成してもよい。ここで、「N」は、マルチアタッチオーバーレイIPアドレスにマッピングされる物理IPアドレスの数である。他の実装形態では、パケットのフィールドの異なるセット(5よりも多いフィールド、5未満のフィールド、別々の5つのフィールド等)からのコンテンツを用いてハッシュ値を生成してもよい。特定の実装形態では、コンシステントハッシュ技術が用いられる。コンシステントハッシュ技術は、サーバ計算インスタンスが、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスのプールに追加されるかまたはそこから除去される状況において、ハッシュ中断の影響を最小限にする。
820では、クライアントNVDは、808において生成されたハッシュ値を用いて、パケットの同じ宛先オーバーレイIPアドレスにマッピングされた複数の物理IPアドレスから特定の物理IPアドレスを選択する。特定の実装形態では、808において生成されたハッシュ値は、マルチアタッチIPアドレスにマッピングされた複数の物理IPアドレスからの特定の単一の物理IPアドレスに対するインデックスとしての役割を果たす。
826では、トンネリングプロトコルを用いて、804においてパケットを受信するNVDから820において選択された物理IPアドレスに関連付けられたNVDにパケットを通信する。820の処理は、上述した図7Bの720における処理と同様である。828および830における処理は、上述したように図7Bの728および730における処理と同様であり、パケットは、826においてパケットが送信される先のNVDに関連付けられたサーバ計算インスタンスに転送される。
ステートレス処理は、典型的には、フローテーブルがNVDによって記憶または使用されないので、必要となるメモリリソースがステートフル処理の場合よりも少なくなる。ステートレス処理もまた、典型的には、フローテーブル関連処理が実行されないので、必要となる処理ステップがステートフル処理の場合よりも少なくなる。その結果、特定の実装形態では、ステートレス処理はステートフル処理よりも速くなる傾向がある。
ステートフル処理と同様に、ステートレス処理では、特定のネットワークフローに属するパケットは、同じNVD(すなわち、同じ物理IPアドレスが選択される)と、したがって処理のために同じサーバ計算インスタンスとに送信される。これは、ハッシングの一部として、受信したパケットの1つ以上のフィールドのコンテンツに基づいて生成される初期値が、パケットが属するネットワークフローを一意に識別し、モジュロ関数がこの初期値に適用された場合、結果として得られるハッシュ値が同じ物理IPアドレスにマッピングまたはハッシュされるからである。
上述したように、いくつかの計算インスタンスがロードバランサの背後にある状況では、外部クライアントはパケットを1つ以上の計算インスタンスに送信することができるが、ロードバランサの背後にある計算インスタンスは、クライアントとの新しい接続または通信を開始することができない。したがって、従来のロードバランサでは、ロードバランサの背後にある計算インスタンスへの接続を外部から開始しなければならないが、ロードバランサの背後にあるインスタンスは外部クライアントへの接続を開始することができない。本明細書に記載される新規なアーキテクチャはこの制限を克服する。上述したように、クライアントは、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスとの新しい通信または接続を開始することができる。クライアントが開始した通信を受信するサーバ計算インスタンスは、1つ以上の応答パケットをクライアントに送信することによって、クライアントが開始した通信に応答することができる。加えて、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスは、1つ以上のクライアントとの新しい通信または接続を開始することもでき、この場合、新しい通信または接続要求は、クライアントからのそれ以前の通信には応答しない。NVDは、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスによって開始される通信のために、パケットが意図されたクライアント受信側に適切に通信されることを確実にするように構成される。マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスから新しい接続または通信を受信するクライアントが、そのサーバ計算インスタンスが開始した通信に応答できるようにする処理も実行され、クライアントの応答(例えば、クライアント発信応答パケット)は、クライアント通信を開始した正しい特定のサーバ計算インスタンスに適切に転送される。したがって、クライアントは、マルチアタッチIPアドレスを用いてサーバ計算インスタンスとの通信を開始することができ、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスもまた、クライアントとの接続または通信を(パケットを送信することによって)開始することができる。
例えば、図6Aまたは図6Bでは、マルチアタッチIPアドレス「B」を用いてアクセスされるサービスは、データを1つ以上のクライアントにプッシュアウトすることを所望するかもしれない。マルチアタッチオーバーレイIPアドレス「B」に関連付けられた複数のサーバ計算インスタンス602-1~602-Nのうちのいずれかは、本開示に開示される教示を用いて、新しい接続を開始し、データをクライアントにプッシュアウトすることができる。サーバ計算インスタンスが開始したこれらの通信を受信するクライアントは、通信に応答することができ、この応答は、通信を開始した特定のサーバ計算インスタンスに適切に転送される。
図9Aおよび図9Bは、いくつかの実施形態に従った、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスから1つ以上のクライアントへの通信を可能にするための処理を示す簡略化されたフローチャート900を示す。図9Aおよび図9Bに示す処理は、ハードウェア、またはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上(例えば、メモリデバイス上)に記憶され得る。図9Aおよび図9Bに示すとともに以下に記載する方法は、例示的なものであり非限定的であるよう意図されている。図9Aおよび図9Bは、特定のシーケンスまたは順序で行なわれる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの代替的な実施形態では、処理はいくつかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
図9Aに示すように、902では、サーバ計算インスタンスに関連付けられたNVDがサーバ計算インスタンスによって発信されたIPパケットを受信し、パケットがクライアントに対応する宛先オーバーレイIPアドレスを示すと、処理が開始される。例えば、図6Aまたは図6Bの実施形態では、NVD-S#2 604-2は、サーバ計算インスタンス#2 602-2からパケットを受信してもよく、パケットは、クライアント606に向けられてもよい(すなわち、パケットの宛先IPアドレスはクライアント606のオーバーレイIPアドレス「C」である)。
パケットは、ソースIPアドレス、(例えば、伝送制御プロトコル(TCP)またはユーザデータグラムプロトコル(UDP)ポートを指定する)ソースポート、宛先IPアドレス、(例えば、TCPまたはUDPポートを指定する)宛先ポート、およびプロトコル(例えば、TCPはプロトコル番号6(0x06)で示され、UDPはプロトコル番号17(0x11)である)、ならびに他のフィールドを指定する様々なフィールドを含む。宛先IPアドレスフィールドは、パケットの意図された受信側または宛先のオーバーレイIPアドレスを含み得る。宛先ポートフィールドは、宛先クライアントのポートに対応するポート番号を含み得る。ソースIPアドレスフィールドは、パケットを送信するサーバ計算インスタンスのオーバーレイIPアドレス(すなわち、マルチアタッチオーバーレイIPアドレス)を含み得る。ソースポートフィールドは、サーバ計算インスタンスに関連付けられたポートを識別する。プロトコルフィールドは、使用されているプロトコル(例えば、TCP、UDP)を識別する番号を指定し得る。複数のサーバ計算インスタンスが同じオーバーレイIPアドレスを有するので、このフィールド値は、マルチアタッチIPアドレスにアタッチされた複数の計算インスタンスの各々から生じるパケットの場合には同じになるだろう。ソースポートフィールドは、ブランクであってもよく、または、パケットを送信するサーバ計算インスタンスに関連付けられたポート番号を含んでもよい。
904では、パケットを受信するNVDは、902において受信されたパケットが応答パケットであるか、またはパケットを送信するサーバ計算インスタンスと宛先クライアントとの間の新しい接続もしくは通信を開始するためのパケットであるかを判断するための処理を実行する。応答パケットは、宛先クライアントとサーバ計算インスタンスとの間の既存の通信または接続の一部として、サーバ計算インスタンスによって宛先クライアントに送信されるパケットである。応答パケットは、宛先クライアントからサーバ計算インスタンスにそれ以前に通信されたパケットに応答して送信されるパケットである。
NVDは、902において受信されたパケットが応答パケットであるか、または新しいサーバ計算インスタンス開始通信に対応するパケットであるかを判断するために、様々な技術を使用し得る。1つの技術に従うと、この判断は、パケットを通信するために用いられる通信プロトコルに基づいて行なうことができる。多くの通信プロトコルの場合、新しい接続を開始するためのパケットのコンテンツは、既存の接続またはフローの一部であるパケットとは異なる。このような通信プロトコルの場合、NVDは、パケットのコンテンツを調べることによって、受信したパケットが応答パケットであるか、または新しい接続もしくは通信を開始するパケットであるかを判断することができる。例えば、TCPの場合、プロトコル自体が応答パケットと新しい接続パケットとを区別する。パケットがベアSYNパケットである場合、当該パケットは新しい接続を確立するためのパケットである。パケットが内部にACKを有するSYNパケットであれば、当該パケットは、既に開始されていた通信セッションで生成されたパケットであり、そのため、応答パケットである。肯定応答(acknowledgement:ACK)の存在は、パケットが応答パケットであることを示す。
別の技術に従うと、特定の実装形態では、サーバ計算インスタンスに関連付けられたNVDは、サーバ計算インスタンスにインバウンドされるパケットのためのフローテーブルを維持し得る。例えば、図6Aでは、NVD604-1によって受信されてNVDによってサーバ計算インスタンス602-1に転送されるパケットの場合、NVD604-1は、それらのパケットのフロー情報を記憶し得る。902においてサーバ計算インスタンスから受信されたパケットがフローテーブル内に既にあるフローの「逆」である場合、パケットは応答パケットとして識別され、そうでなければ、パケットは新しい接続パケットとして識別される。
さらに別の技術に従うと、特定の実装形態では、902において受信されたパケットが、周知のサービスポート(例えば、ポート80)でありエフェメラルソースポートではないソースポート値を有する場合、パケットは応答パケットとして識別される。代替的には、902において受信されたパケットがエフェメラルソースポートであるソースポートを有する場合、パケットは、新しい接続パケットとして識別され、そうでなければ応答パケットとして識別される。
904において実行される処理に基づいて、906において、受信したパケットが新しい接続パケットであるかまたは応答パケットであるかをチェックする。新しい接続/通信パケットである場合、処理は908に進み、そうでなければ、処理は図9Bの920に進む。パケットが新しい接続パケットであると判断された場合、パケットのソースポートフィールドについての値を設定するための特別な処理が実行される。
概して、パケットの場合、パケットのソースIPアドレスとパケットのソースポートとを組合せると、パケットの送信元が一意に識別される。同じオーバーレイIPアドレスが複数のサーバ計算インスタンスにアタッチされる本事例では、これらのサーバ計算インスタンスの各々から生じるパケットのソースIPアドレスは、同じソースIPアドレス、すなわち、マルチアタッチオーバーレイIPアドレスを有するだろう。例えば、図6Aでは、サーバ計算インスタンス602-1~602-Nの各々を発信するパケットは、同じソースIPアドレス、すなわちオーバーレイIPアドレス「B」を有することになる。さらに、様々なサーバ計算インスタンスから発信されるパケットのためのソースポートも互いに競合する可能性があり、すなわち、同じである可能性があり、したがって、2つの異なるサーバ計算インスタンスによって送信される2つのパケットがともに同じソースIPおよびソースポート値を有するという状況がもたらされる。このような状況では、パケットの送信元を一意に識別することは非常に困難である。したがって、特別な処理を行わなければ、マルチアタッチオーバーレイIPアドレスにアタッチされた2つ以上の異なるサーバ計算インスタンスから生じるパケットの場合、ソースIPアドレスとソースポートとを組合わせても、パケットの送信側が一意に識別されない可能性がある。これは、特に、パケットの受信側(例えば、パケットが向けられるクライアント)が送信サーバ計算インスタンスに応答することを所望する場合、マルチアタッチIPアドレスを有する複数のサーバ計算インスタンスのうちのどのサーバ計算インスタンスがパケットを送信したかを識別する方法がなく、そのため、クライアントから応答を受信しなければならないという問題を引き起こす。同じIPアドレスが仮想ネットワーク内の複数の計算インスタンス上に存在する場合に起こるソースポート空間衝突のこの技術的問題を克服するために、908および910において、パケットのためのソースポートが、同じオーバーレイIPアドレスにアタッチされた他のサーバ計算インスタンスから発信されるパケットのためのソースポートと衝突するのを確実に防ぐための特別な処理が実行される。908および910において実行される処理は、ソースIPとソースポートとの組合わせが、マルチアタッチIPアドレスにアタッチされた複数のサーバ計算インスタンスにわたって一意であり、これにより、パケットの送信側である特定のサーバ計算インスタンスを一意に識別することを確実にする。
908では、マルチアタッチオーバーレイIPアドレスを有する他のサーバ計算インスタンスによって用いられるエフェメラルポート値と競合せず固有であるパケットについて、エフェメラルポート値が決定される。908における処理を実行するために、いくつかの異なる技術が用いられてもよい。
特定の実装形態では、静的ポートシャーディング技術が用いられ得る。この技術に従うと、利用可能なエフェメラルソースポート空間は、マルチアタッチIPアドレスを有する様々な計算インスタンス間で分割され、各サーバ計算インスタンスには、マルチアタッチIPアドレスを有する他のサーバ計算インスタンスに割当てられた範囲と重複しないエフェメラルソースポート値の範囲を割当てられている。特定のサーバ計算インスタンスに割当てられたエフェメラルソースポート値は、同じオーバーレイIPアドレスがアタッチされている他の計算インスタンスに割当てられたエフェメラルソースポート値とは異なっており競合しない。
例えば、16ビットがソースポートを指定するために用いられる場合、その「X」ポートはエフェメラルポートである。Xのエフェメラルポート値は、マルチアタッチIPアドレスにアタッチされた様々な計算インスタンスの間で分割され得る。例えば、48Kのエフェメラルポート値がある場合、ポート値0K~10Kが第1の計算インスタンスに割当てられてもよく、ポート値10,001K~20Kが第2の計算インスタンスに割当てられてもよく、ポート値20,001K~40Kが第3の計算インスタンスに割当てられてもよい、等である。そのような互いに素な割当ておよび重複しない割当てを実行することにより、同じIPアドレスがアタッチされている2つの異なる計算インスタンスから送信されるパケットについてのエフェメラルポート値の衝突が回避される。別々の計算インスタンスに割当てられたエフェメラルポート範囲は重複しないので、衝突は回避される。
908の一部として、特定のサーバ計算インスタンスから受信されたパケットについて、そのパケットを受信するNVDは、その特定のサーバ計算インスタンスに割当てられたエフェメラルポート値の範囲が識別され、そのパケットについて、識別された範囲からの特定のエフェメラルポート値が選択される。例えば、図6Aまたは図6Bでは、NVD-S#2 604-2は、サーバ計算インスタンス#2 602-2から新しい接続パケットを受信し得る。次いで、NVD-S#2 604-2は、サーバ計算インスタンス#2 602-2に割当てられたエフェメラルポート値の範囲を決定し得るとともに、次いで、908において、識別された範囲から特定のエフェメラルポート値を選択し得る。
特定の実装形態では、異なる範囲の割当ての実施は顧客に委ねられてもよい。他のいくつかの実装形態では、CSPIのコンポーネント(例えば、VCN制御プレーン)は、割当てを制御して当該割当てをNVDに分散させてもよく、これにより、範囲に実効性をもたせてもよい。例えば、パケットを受信すると、NVDは、発信する計算インスタンスに割当てられたエフェメラルポート値の範囲を決定し得るとともに、908において、パケットのためのソースポート値として用いられるべきポート値をこの範囲から選択し得る。
他のいくつかの実装形態では、選択されたエフェメラルポートが競合しないことを確実にする役割を果たすサービス(「エフェメラルポートサービス」)がCSPIによって提供され得る。当該サービスは、マルチアタッチIPアドレスを有する複数の計算インスタンスのために割当てることができるエフェメラルポート値のセットを記憶するデータベースへのアクセスを有し得る。データベースは、VCN制御プレーンによって維持されてもよく、マルチアタッチIPアドレスにアタッチされた複数の計算インスタンス間で共有されてもよい。NVDが、マルチアタッチIPアドレスを有する特定のサーバ計算インスタンスからパケットを受信すると、NVDは、特定の期間にわたってエフェメラルポートのセット上でリースを要求する要求をこのサービスに送信し得る。サービスは、データベースに記憶された情報を用いて、割当てられたポートがマルチアタッチIPアドレスを有する他のどの計算インスタンスによっても確実に使用されないようにしながら、1つ以上のポートを要求元に割当てることによって応答し得る。加えて、サービスは、サーバ計算インスタンスに既に割当てられているポートが、同じIPアドレスがアタッチされている他の計算インスタンスからのパケットを処理するために他の要求側NVDに割当てられないことを確実にし得る。この技術により、ポートのシャーディングを動的に実行することが可能となる。共有されたデータベースは、この動的なシャーディング技術を実装する1つの方法である。他の実施形態では、メモリ内分散データストア等の他の技術が用いられてもよい。
他のいくつかの実装形態では、顧客は、同じオーバーレイIPアドレスがアタッチされている計算インスタンスから生じるパケットについてのソースポートの一意性を確実にすることが課されている可能性もある。
910では、パケットのソースポートフィールドは、908において識別されたエフェメラルポート値に設定される。特定の実装形態では、902において受信されたパケットは、そのソースポートフィールド内に既に値を有していてもよい。908で判断されたポート値が既存の値と異なる場合、ポートアドレス変換(port address translation:PAT)が実行され、既存の値が908において判断されたポート値と置換えられる。908および910において実行される処理は、同じIPアドレスにアタッチされた計算インスタンスからアウトバウンドで送信されるすべてのトラフィックについて、ソースIPアドレスとソースポートとを組合せることで複数の計算インスタンスから特定の計算インスタンスを一意に識別することを確実にする。次いで、処理は図9Bの920へ進む。
920では、902においてサーバ計算インスタンスからパケットを受信するNVDが、パケットの宛先IPアドレス(ここで、宛先IPアドレスはパケットの意図されたクライアント受信側を識別する)に基づいて、パケットが送信される先の特定の物理IPアドレスを決定する。特定の物理IPアドレスは、クライアントの宛先オーバーレイIPアドレスを物理IPアドレスにマッピングするNVDによって記憶されたルーティングテーブルから決定され得る。特定の物理IPアドレスは、意図されたクライアント受信側に関連付けられたNVDのアドレスであり得る。例えば、図6Aまたは図6Bにおいては、パケットの意図された宛先がクライアント606である場合、パケットの宛先IPフィールドによりオーバーレイIPアドレス「C」を識別し、920において、クライアント606に関連付けられたNVD608の物理IPアドレス(「D」)を決定する。
特定の実装形態では、パケットが特定のネットワークフローに対応する応答パケットである場合、NVDは、サーバ計算インスタンスにインバウンドされるそのNVDによって対処されるトラフィックフローに対応するフローテーブルを維持し得る。そのようなフローごとに、フローテーブル情報は、受信されたトラフィックフローの物理IPアドレスを識別し得る。サーバ計算インスタンスからのアウトバウンド方向では、NVDは、パケットが属するネットワークフローを決定し、フローテーブル内のこのフローを識別し、次いで、このネットワークフローについてのフロー情報を用いて、計算インスタンスにインバウンドされたパケットのソースであった特定の物理IPアドレスを決定し得る。次いで、この特定の物理IPアドレスは、サーバ計算インスタンスからアウトバウンドされたパケットが送信されるべきIPアドレスとして識別される。他のいくつかの実装形態では、NVDは、オーバーレイIPアドレスを物理IPアドレスにマッピングするIPマッピングテーブルを有し得るとともに、このマッピングテーブルから特定の物理IPアドレスを決定し得る。さらに他の実装形態では、NVDは、アウトバウンドパケットの宛先についてのネクストホップパス情報を提供する転送テーブルまたはルーティングテーブルを用いて、ネクストホップ物理IPアドレスを決定し得る。例えば、NVDは、ネクストホップの物理IPアドレスを識別するために、ルーティングテーブル内を検索してもよい。
922では、トンネリングプロトコルを用いて、902でパケットを受信したNVDから、920で決定された物理IPアドレスに関連付けられたNVDにパケットを通信する。IP-in-IP(または汎用ルーティングカプセル化(GRE))、仮想拡張可能LAN(VxLAN-IETF RFC7348)、仮想プライベートネットワーク(VPN)(例えば、MPLSレイヤ3仮想プライベートネットワーク(RFC4364))、VMware′s NSX、GENEVE(汎用ネットワーク仮想化カプセル化)等の様々な異なるトンネリングプロトコルが使用され得る。トンネリングは、典型的には、受信されたパケットを1つ以上のヘッダ内にカプセル化することを含み、ヘッダ内の情報は、物理ネットワーク610を介して送信側NVDから受信側NVDにパケットを通信するために用いられる。仮想化ネットワークにおけるトンネリングは、ブロードキャストドメインまたは物理ネットワークによって無制限にされているとともに送信側NVDによって受信された元のパケットに変更を加えることなく、あるエンドポイント(例えば、パケットを送信するNVD)から別のエンドポイント(例えば、パケットを受信するNVD)にトラフィックを通信することを可能にする。パケットのカプセル化に関する処理は、送信側NVDによって実行される。例えば、図6Aまたは図6Bでは、計算インスタンス#2 602-2からNVD-S#2 604-2によって受信されたパケットの場合、パケットカプセル化はNVD-S#2 604-2によって実行される。パケットがNVD608の物理IPアドレス「D」に送信されるべきであると判断された場合、トンネリングプロトコルを用いて、パケットをNVD604-2から物理IPアドレス「D」に関連付けられたNVD-クライアント606に通信する。
924では、922においてパケットが送信された先の物理IPアドレスに関連付けられたNVDがパケットを受信する。例えば、パケットが物理IPアドレス「D」に送信された場合、NVD-クライアント608がパケットを受信する。926では、924においてパケットを受信するNVDは、次いで、意図されたクライアント受信側にパケットを転送する。例えば、図6Aでは、NVD608は、パケットをクライアント606に転送する。クライアントによって受信されたパケットは、固有のソースIPアドレスおよびソースポートの組合わせを有するので、クライアントは、サーバ計算インスタンスから受信したパケットに応答することができ、特定のサーバ計算インスタンスがマルチアタッチIPアドレスにアタッチされている場合であっても、クライアントの応答パケットは、パケットを送信する正しい特定のサーバ計算インスタンスに適切に転送される。
上述のように、オーバーレイIPアドレスは複数の計算インスタンスにアタッチすることができる。特定の実装形態では、これは、同じオーバーレイIPを複数のVNICにアタッチすることによって行われ、オーバーレイIPアドレスが、結果として、VNICに関連付けられた計算インスタンスにアタッチされる。オーバーレイネットワーク内のコンポーネントは、マルチアタッチIPアドレスを用いて当該マルチアタッチIPアドレスにアタッチされた複数の計算インスタンスにわたってトラフィックを分散させることができるように構成されており、これはすべて、如何なるロードバランサ、ロードバランシングサービス、または如何なる複雑なルーティングテーブルも用いることなく達成される。その結果、ロードバランサを用いることによってもたらされる複雑さおよび待ち時間が回避される。マルチアタッチIPアドレスに向けられたパケットの分散は、IPアドレスがアタッチされる複数のサーバ計算インスタンスを提供する顧客にとって透過的である。アーキテクチャはまた、コンシステントハッシュ技術等を含む様々な異なるハッシュ技術を用いて、ステートフルまたはステートレスな方法を用いて処理を実行することができるという点で、多くの柔軟性を提供する。
クライアントは、マルチアタッチIPアドレスにパケットを送信することによって、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスとの新しい通信または接続を開始することができる。クライアントが開始した通信を受信するサーバ計算インスタンスは、1つ以上の応答パケットをクライアントに送信することによって、クライアントが開始した通信に応答することができる。加えて、マルチアタッチIPアドレスにアタッチされたサーバ計算インスタンスはまた、1つ以上のクライアントとの新しい通信または接続を開始することができ、この場合、新しい通信または接続要求は、クライアントからのそれ以前の通信に応答しない。サーバ計算インスタンスが開始した通信を受信するクライアントは通信に応答することができ、当該応答は、通信を開始した特定のサーバ計算インスタンスに適切に転送される。
顧客の観点から、単一のオーバーレイIPアドレスは、複数のVNICと、VNICに関連付けられた計算インスタンスとに自動的にアタッチされ、マルチアタッチIPアドレス宛てのトラフィックは、複数の計算インスタンスにわたって透過的に分散される。さらに、複数のインターフェイスおよび計算インスタンスにアタッチされるIPアドレスは、如何なるロードバランサも用いることなく、またはロードバランシング機能を提供する如何なる明示的なサービスも活用することなく、かつ顧客が自身らの計算インスタンスまたはアプリケーションに如何なる変更も加える必要なく、スケーリングされる。ロードバランサに関連するコストおよび技術的複雑さが回避される。顧客は、マルチアタッチIPアドレスの背後にあるサービスをホストすることができ、さらに、IPアドレスは、各サーバ計算インスタンスがどのくらいのトラフィックおよびどれだけの接続を処理すべきかまたは処理することが予想されるかに応じて、顧客が所望するとおりに、IPアドレスを高度に利用可能かつ無限にスケーラブルにするやり方で、複数の計算インスタンスにわたってスケーリングさせることができる。このスケーラビリティは、顧客が多数のクライアントにサービスを提供することを可能にし、1つ以上の計算インスタンスを追加または除去し、同じマルチアタッチIPアドレスを計算インスタンスにアタッチするだけで非常に容易にスケールアップまたはスケールダウンすることを可能にし、これはすべて、ロードバランサまたは複雑なトラフィック分散方式に依存することなく達成される。
オーバーレイネットワークにおける等コストマルチパス(ECMP)
上述したように、オーバーレイIPアドレスは、任意のロードバランサまたは複雑なルーティング技術を用いることなく、複数の計算インスタンスに関連付けられた複数のVNICにオーバーレイIPアドレスをアタッチすることによって仮想ネットワークにおいてスケーリングされ得る。特定の実装形態では、IPはまた、オーバーレイネットワークにおいてECMP技術を用いて仮想ネットワーキング環境においてスケーリングされ得る。
従来の物理ネットワーキング環境では、ECMPは、コストが等しい複数の経路にわたって(例えば、同じ接続またはセッションの場合に)同じ送信側と受信側との間でトラフィックをルーティングするルーティング戦略である。これにより、トラフィックを複数の経路にわたって負荷分散することが可能となり、したがって、利用可能な帯域幅のより適切な利用が提供されることとなる。特定の実施形態では、本明細書に記載のとおり、ECMP技術は、IPアドレスをスケーリングするために仮想化ネットワーキング環境において(例えば、オーバーレイネットワークにおいて)用いられる。
図10は、特定の実施形態に従った、クラウドサービスプロバイダによって提供されるCSPIによってホストされ得るとともに、ECMP技術を用いるがロードバランサを用いることなくIPアドレスのスケーリングを可能にする、分散型仮想化マルチテナントクラウド環境1000の一例を示す。図10に示す分散環境1000は、図6Aに示すコンポーネントと同様のいくつかのコンポーネントを有し、これらのコンポーネントは、図6Aと同じ参照番号を用いて参照される。
図10に示す分散環境1000は単なる一例に過ぎず、特許請求される実施形態の範囲を過度に限定することを意図するものではない。多くの変形例、代替例および変更例が実現可能である。例えば、いくつかの実装形態では、分散環境1000は、図10に示すよりも多いかまたは少ないシステムまたはコンポーネントを有し得るか、2つ以上のシステムを組合わせ得るか、または異なる構成もしくは配置のシステムを有し得る。図10に示すシステム、サブシステム、および他のコンポーネントは、ハードウェアまたはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上に(例えば、メモリデバイス上に)記憶され得る。
図6Aとは異なり、IPマッピングテーブルおよびフローテーブルの代わりに、図10の実施形態は転送テーブル1002を用いる。転送テーブルは、マルチアタッチIPアドレスにアタッチされるサーバ計算インスタンスに関連付けられたNVDへの複数のアクティブなネクストホップルートを識別する。例えば、図10に示すように、転送テーブル1002は、マルチアタッチIPアドレス(例えば、マルチアタッチIPアドレス「B」)にアタッチされた複数のサーバ計算インスタンス602-1~602-Nに関連付けられたNVD604-1~604-Nへの複数のネクストホップパスを含む。マルチアタッチIPアドレス「B」に「N」個の計算インスタンスがアタッチされているので、転送テーブル1002には「N」個のエントリがあり、各エントリは、ネットワークフローに対応するフローハッシュ値と、サーバ計算インスタンスに対応するネクストホップNVDの物理IPアドレスとを識別する。各エントリは、ネクストホップNVDへのVCNトンネルを識別する。同じマルチアタッチIPアドレス「B」を有する「N」個の計算インスタンスがあるので、「N」個のネットワークフローを表わす「N」個のハッシュ値があり、ここで、各ハッシュ値は特定のネクストホップNVDへの特定の経路に関連付けられている。このようにして、転送テーブルは、サーバ計算インスタンスに関連付けられたNVDの各々とNVDへのVCNトンネルとの間の1対1の関係を識別する。このように、転送テーブルでは、1つのオーバーレイIPアドレス(例えばIPアドレス「B」)が複数のネクストホップにマッピングされる。
例えば、エントリ「B-flow hash #1 - VCN-Tunnel-To-A.1」は、「B」の宛先オーバーレイIPアドレスについて、転送されるべきパケット内の特定のフィールドのハッシュ値が(ネットワークフロー#1を表わす)「フローハッシュ#1」である場合、パケットのネクストホップが物理IPアドレスA.1を有するNVDであり、A.1へのVCNトンネルがパケットを転送するために用いられるべきであることを示している。別の例として、エントリ「B-flow hash #2 VCN-Tunnel-To-A.2」は、「B」の宛先IPアドレスについて、転送されるべきパケット内の特定のフィールドのハッシュ値が(ネットワークフロー#2を表わす)「フローハッシュ#2」である場合、パケットのネクストホップが物理IPアドレスA.2を有するNVDであり、A.2へのVCNトンネルがパケットを転送するために用いられるべきであることを示している。
上述のように、パケットの特定のフィールドをハッシュすることに基づくハッシュ値は、様々なネットワークフローを表わす。これらのハッシュ値は、特定のネクストホップに対するインデックスとしての役割を果たす。特定のネットワークフローに属するパケットの場合、すなわちハッシュ値が同じであるパケットの場合、パケットは、処理のために同じNVDに、したがって同じサーバ計算インスタンスに通信される。例えば、図10において、ハッシュ値「フローハッシュ#2」にハッシュするNVD608によって受信された全てのパケットの場合、ネクストホップは「VCN-tunnel-to-A.2」である。したがって、これらのパケットはすべて、A.2の物理IPアドレスを有するNVD604-2に送信され、NVD604-2は、次いで、パケットをサーバ計算インスタンス602-2に転送する。
特定の実装形態では、マルチアタッチIPアドレスに関連付けられた複数のネクストホップに関する情報は、複数のサーバ計算インスタンスを提供する顧客によって提供される。当該情報は、例えば、CSPIによって提供されるコンソールを介して、コマンドラインインターフェイス、API等を介して提供され得る。この情報は、VCN制御プレーン616によって受信され、VCN制御プレーンは、次いで、転送テーブル1002等の転送テーブルを生成し、これらの転送テーブルをオーバーレイネットワーク内のNVDに分散させる。
特定の実装形態では、複数のルートに関する情報は、ボーダーゲートウェイプロトコル(Border Gateway Protocol:BGP)等の標準的なルーティングプロトコルを用いて取得され得る。この情報はBGPを用いてNVDに送信され得る。
図11は、特定の実施形態に従った、ECMP技術を用いてオーバーレイネットワーク内のIPアドレスをスケーリングするための処理を示す簡略化されたフローチャート1100を示す。図11に示す処理は、ハードウェア、またはそれらの組合せを用いて、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体上に(例えば、メモリデバイス上に)記憶され得る。図11に示すとともに以下に記載する方法は、例示的なものであり非限定的であるよう意図されている。図11は、特定のシーケンスまたは順序で行なわれる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替的な実施形態では、処理はいくつかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
図11の処理ステップのいくつかは、図7A、図7Bおよび図8に示す処理ステップと同様である。例えば、1102および1104で実行される処理は、それぞれ図7Aの702および704で実行される上述の処理と同様である。1106では、クライアントNVDは、その転送テーブル内のエントリに基づいて、受信されたパケットの宛先オーバーレイIPアドレスのための複数のネクストホップパスがあると判断する。1108における処理は図8の808における処理と同様であって、クライアントNVDが、受信されたパケットの1つ以上のフィールドのコンテンツをハッシュすることによってハッシュ値を生成し、生成されたハッシュ値により特定のネットワークフローを識別する。
1110では、受信されたパケットのオーバーレイ宛先IPアドレスに基づいて、かつ、1108において生成されたハッシュ値に基づいて、クライアントNVDは、転送テーブル内の宛先IPアドレスに関連付けられた複数のネクストホップパスの中から特定のネクストホップパスを決定する。1110にて識別された特定のネクストホップパスは、特定の物理IPアドレスへのVCNトンネルを識別し、特定の物理IPアドレスは、同じオーバーレイIPアドレスに関連付けられた複数のサーバ計算インスタンスの中から特定のサーバ計算インスタンスに関連付けられた特定のNVDのアドレスである。例えば、図10において、受信したパケットの宛先IPアドレスを「B」とし、1108で生成したハッシュ値を「Flow Hash#2」とすると、転送テーブル1002内の情報に基づけば、NVDによって選択されるネクストホップパスは、パケットが送信される先のNVDの物理IPアドレスとしてA.2を識別する「VCN-Tunnel-to-A.2」である。
次いで、トンネリングプロトコルを用いて、1104でパケットを受信するNVDから、1110で決定されてパケットのネクストホップとして識別された特定の物理IPアドレスに関連付けられたNVDに、パケットを送信する。1126、1128、および1130における処理は、図7Bに示すとともに上述した726、728、および730における処理と同様である。
上述したように、ECMP技術を用いて、オーバーレイネットワーク内のIPアドレスをスケーリングしてもよい。マルチアタッチIPアドレス実装形態について上述した特徴および機能の多くも適用され、ECMP実装形態において利用可能である。例えば、単一のオーバーレイIPアドレスに関連付けられた計算インスタンスは、クライアントとの新しい接続または通信を開始することができ、クライアントはそれらの通信に応答することができる。例えば、図9Aおよび図9Bに示すとともに上述した処理はECMPベースの実装形態にも適用される。
n-ways ECMP、フローベースのトラフィック分散を伴うECMP、フローベースのトラフィック分散を伴う「重み付けされた」ECMPを含む、様々な異なる種類のECMP技術が使用され得る。特定の実装形態では、ネクストホップの健全性を判断するために健全性チェックが追加されてもよい。健全性チェックは、NVD間のピアツーピアであり得るか、または集中型サービスから開始され得る。ルートヘルスインジェクション(Route-Health-Injection:RHI)のための動的ルーティングを伴うECMPが提供されてもよい。
クラウドアーキテクチャの例
上述したように、IaaS(Infrastructure as a Service)は、1つの特定の種類のクラウドコンピューティングである。IaaSは、パブリックネットワーク(例えば、インターネット)を介して仮想化計算リソースを提供するように構成され得る。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャコンポーネント(例えば、サーバ、記憶装置、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、インフラストラクチャコンポーネントに付随する様々なサービス(例えば、課金、監視、ロギング、負荷分散およびクラスタリングなど)を提供し得る。したがって、これらのサービスがポリシー駆動型であり得るため、IaaSユーザは、アプリケーションの可用性および性能を維持するために、負荷分散を駆動するためのポリシーを実装可能であり得る。
いくつかの例において、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスし得るとともに、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウェアを展開し、ワークロードおよびバックアップの記憶バケットを作成し、VMに企業ソフトウェアをインストールすることができる。顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランシング、アプリケーション問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含む様々な機能を実行することができる。
殆どの場合、クラウドコンピューティングモデルは、クラウドプロバイダの関与を必要とする。クラウドプロバイダは、IaaSの提供(例えば、オファー、レンタル、販売)に特化した第3者サービスであってもよいが、その必要はない。また、企業は、プライベートクラウドを展開し、インフラストラクチャサービスを提供するプロバイダになることもできる。
いくつかの例において、IaaSの展開は、用意したアプリケーションサーバなどに新しいアプリケーションまたは新しいバージョンのアプリケーションを展開するプロセスである。IaaSの展開は、サーバを用意する(例えば、ライブラリ、デーモンなどをインストールする)プロセスを含んでもよい。IaaSの展開は、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、(OS)、ミドルウェア、および/またはアプリケーションの展開(例えば、(例えば、オンデマンドでスピンアップできる)セルフサービス仮想マシン)などに対処する役割を果たし得る。
いくつかの例において、IaaSのプロビジョニングは、使用されるコンピュータまたは仮想ホストを取得すること、およびコンピュータまたは仮想ホスト上に必要なライブラリまたはサービスをインストールすることを指し得る。殆どの場合、展開は、プロビジョニングを含まず、まずプロビジョニングを実行する必要があるかもしれない。
場合によっては、IaaSのプロビジョニングには2つの異なる課題がある。第1に、何かを実行する前に、インフラストラクチャの初期セットをプロビジョニングするという課題がある。第2に、全てのものをプロビジョニングした後に、既存のインフラストラクチャを進化させる(例えば、新しいサービスの追加、サービスの変更、サービスの削除)という課題がある。場合によっては、インフラストラクチャの構成を宣言的に定義することを可能にすることによって、これらの2つの課題に対処してもよい。言い換えれば、インフラストラクチャ(例えば、どのコンポーネントが必要とされるか、およびこれらのコンポーネントがどのように相互作用するか)は、1つ以上の構成ファイルによって定義され得る。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどれに依存し、どのように連携するか)は、宣言的に記述することができる。いくつかの例において、トポロジが定義されると、構成ファイルに記述された異なるコンポーネントを作成および/または管理するワークフローを生成することができる。
いくつかの例において、インフラストラクチャは、多くの相互接続された要素を含み得る。例えば、コアネットワークとしても知られている1つ以上の仮想プライベートクラウド(VPC)(例えば、構成可能な計算リソースおよび/または共有されている計算リソースの潜在的なオンデマンドプール)が存在してもよい。いくつかの例において、ネットワークのインバウンドトラフィックおよび/またはアウトバウンドトラフィックがどのように設定されるかを定義するためにプロビジョニングされる1つ以上のインバウンド/アウトバウンドトラフィックグループルールと、1つ以上の仮想マシン(VM)とが存在する可能性がある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングされてもよい。ますます多くのインフラストラクチャ要素が望まれるおよび/または追加されるにつれて、インフラストラクチャは漸進的に進化し得る。
いくつかの例において、様々な仮想コンピューティング環境にわたってインフラストラクチャコードの展開を可能にするために、連続展開技術を採用してもよい。また、記載された技術は、これらの環境内のインフラストラクチャ管理を可能にすることができる。いくつかの例において、サービスチームは、1つ以上の、通常多くの様々な生産環境(例えば、時には全世界に及ぶ種々の異なる地理的場所にわたって)に展開されることが望まれるコードを書き込むことができる。しかしながら、いくつかの例において、コードを展開するためのインフラストラクチャを最初に設定しなければならない。いくつかの例において、プロビジョニングは、手動で行うことができ、プロビジョニングツールを用いてリソースをプロビジョニングしてもよく、および/またはインフラストラクチャをプロビジョニングした後に、展開ツールを用いてコードを展開してもよい。
図12は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの例示的なパターンを示すブロック図1200である。サービスオペレータ1202は、仮想クラウドネットワーク(VCN)1206およびセキュアホストサブネット1208を含み得るセキュアホストテナンシ1204に通信可能に接続され得る。いくつかの例において、サービスオペレータ1202は、1つ以上のクライアントコンピューティングデバイスを使用し得る。1つ以上のクライアントコンピューティングデバイスは、例えば、Microsoft Windows Mobile(登録商標)のようなソフトウェア、および/またはiOS、Windowsフォン、アンドロイド(登録商標)、ブラックベリー8およびパームOSなどのさまざまなモバイルオペレーティングシステムを実行するとともに、インターネット、電子メール、ショートメッセージサービス(SMS)、ブラックベリー(登録商標)または他の通信プロトコルが有効化された手持ち式携帯装置(例えば、iPhone(登録商標)、携帯電話、Ipad(登録商標)、タブレット、携帯情報端末(PDA)またはウェアラブル装置(Google(登録商標)Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。代替的には、クライアントコンピューティングデバイスは、Microsoft Windows(登録商標)オペレーティングシステム、Apple Macintosh(登録商標)オペレーティングシステムおよび/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用のパーソナルコンピュータであってもよい。クライアントコンピューティングデバイスは、例えば、さまざまなGNU/Linuxオペレーティングシステム、例えば、Google Chrome(登録商標)OSを含むがこれに限定されない市販のUNIX(登録商標)またはUNIXに類似するさまざまなオペレーティングシステムを実行するワークステーションコンピュータであってもよい。代替的にまたは付加的には、クライアントコンピューティングデバイスは、VCN1206および/またはインターネットにアクセスできるネットワークを介して通信可能な他の電子機器、例えば、シンクライアントコンピュータ、インターネット対応のゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置を備えるかまたは備えないMicrosoft Xbox(登録商標)ゲームコンソール)、および/またはパーソナルメッセージング装置であってもよい。
VCN1206は、SSH VCN1212に含まれるLPG1210を介して、セキュアシェル(SSH)VCN1212に通信可能に接続できるローカルピアリングゲートウェイ(LPG)1210を含み得る。SSH VCN1212は、SSHサブネット1214を含み得るとともに、SSH VCN1212は、制御プレーンVCN1216に含まれるLPG1210を介して、制御プレーンVCN1216に通信可能に接続され得る。また、SSH VCN1212は、LPG1210を介して、データプレーンVCN1218に通信可能に接続され得る。制御プレーンVCN1216およびデータプレーンVCN1218は、IaaSプロバイダによって所有および/または運営され得るサービステナンシ1219に含まれ得る。
制御プレーンVCN1216は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンDMZ(demilitarized zone)層1220を含み得る。DMZベースのサーバは、特定の信頼性を有し、セキュリティ侵害を封じ込め得る。さらに、DMZ層1220は、1つ以上のロードバランサ(LB)サブネット1222と、アプリサブネット1226を含み得る制御プレーンアプリ層1224と、データベース(DB)サブネット1230(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層1228とを含み得る。制御プレーンDMZ層1220に含まれたLBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226と制御プレーンVCN1216に含まれ得るインターネットゲートウェイ1234とに通信可能に接続されてもよく、アプリサブリ1226は、制御プレーンデータ層1228に含まれるDBサブネット1230と、サービスゲートウェイ1236と、ネットワークアドレス変換(NAT)ゲートウェイ1238とに通信可能に接続されてもよい。制御プレーンVCN1216は、サービスゲートウェイ1236およびNATゲートウェイ1238を含み得る。
制御プレーンVCN1216は、アプリサブネット1226を含み得るデータプレーンミラーアプリ層1240を含み得る。データプレーンミラーアプリ層1240に含まれたアプリサブネット1226は、計算インスタンス1244を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1242を含み得る。計算インスタンス1244は、データプレーンミラーアプリ層1240のアプリサブネット1226を、データプレーンアプリ層1246に含まれ得るアプリサブネット1226に通信可能に接続することができる。
データプレーンVCN1218は、データプレーンアプリ層1246と、データプレーンDMZ層1248と、データプレーンデータ層1250とを含み得る。データプレーンDMZ層1248は、データプレーンアプリ層1246のアプリサブネット1226およびデータプレーンVCN1218のインターネットゲートウェイ1234に通信可能に接続され得るLBサブネット1222を含み得る。アプリサブネット1226は、データプレーンVCN1218のサービスゲートウェイ1236およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に接続され得る。また、データプレーンデータ層1250は、データプレーンアプリ層1246のアプリサブネット1226に通信可能に接続され得るDBサブネット1230を含み得る。
制御プレーンVCN1216のインターネットゲートウェイ1234およびデータプレーンVCN1218のインターネットゲートウェイ1234は、パブリックインターネット1254に通信可能に接続され得るメタデータ管理サービス1252に通信可能に接続され得る。パブリックインターネット1254は、制御プレーンVCN1216のNATゲートウェイ1238およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に接続され得る。制御プレーンVCN1216のサービスゲートウェイ1236およびデータプレーンVCN1218のサービスゲートウェイ1236は、クラウドサービス1256に通信可能に接続され得る。
いくつかの例において、制御プレーンVCN1216またはデータプレーンVCN1218のサービスゲートウェイ1236は、パブリックインターネット1254を経由することなく、クラウドサービス1256へのアプリケーションプログラミングインターフェイス(API)呼び出しを行うことができる。サービスゲートウェイ1236からのクラウドサービス1256へのAPI呼び出しは、一方向であり得る。サービスゲートウェイ1236は、クラウドサービス1256へのAPI呼び出しを行うことができ、クラウドサービス1256は、要求データをサービスゲートウェイ1236に送信することができる。しかしながら、クラウドサービス1256は、サービスゲートウェイ1236へのAPI呼び出しを開始しないことがある。
いくつかの例において、セキュアホストテナンシ1204は、独立している可能性もあるサービステナンシ1219に直接に接続され得る。セキュアホストサブネット1208は、独立したシステムとの双方向通信を可能にするLPG1210を介して、SSHサブネット1214と通信することができる。セキュアホストサブネット1208をSSHサブネット1214に接続することによって、セキュアホストサブネット1208は、サービステナンシ1219内の他のエンティティにアクセスし得る。
制御プレーンVCN1216は、サービステナンシ1219のユーザが所望のリソースを設定またはプロビジョニングすることを可能にし得る。制御プレーンVCN1216においてプロビジョニングされた所望のリソースは、データプレーンVCN1218において展開または使用されてもよい。いくつかの例において、制御プレーンVCN1216は、データプレーンVCN1218から隔離することができ、制御プレーンVCN1216のデータプレーンミラーアプリ層1240は、データプレーンミラーアプリ層1240およびデータプレーンアプリ層1246に含まれ得るVNIC1242を介して、データプレーンVCN1218のデータプレーンアプリ層1246と通信することができる。
いくつかの例において、システムのユーザまたは顧客は、要求をメタデータ管理サービス1252に通信することができるパブリックインターネット1254を介して、例えば、作成、読み取り、更新、または削除(CRUD)操作などの要求を行うことができる。メタデータ管理サービス1252は、インターネットゲートウェイ1234を介して、要求を制御プレーンVCN1216に通信することができる。要求は、制御プレーンDMZ層1220に含まれるLBサブネット1222によって受信され得る。LBサブネット1222は、要求が有効であると判断し得るとともに、この判断に応答して、LBサブネット1222は、要求を制御プレーンアプリ層1224に含まれるアプリサブネット1226に送信することができる。要求が検証され、パブリックインターネット1254への呼び出しを必要とする場合、パブリックインターネット1254への呼び出しを、パブリックインターネット1254への呼び出しを行うことができるNATゲートウェイ1238に送信してもよい。要求によって記憶することが所望され得るメモリは、DBサブネット1230に格納され得る。
いくつかの例において、データプレーンミラーアプリ層1240は、制御プレーンVCN1216とデータプレーンVCN1218との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正は、データプレーンVCN1218に含まれるリソースに適用されることが望ましい場合がある。制御プレーンVCN1216は、VNIC1242を介してデータプレーンVCN1218に含まれるリソースと直接に通信することができるため、構成に対する変更、更新、または他の適切な修正を実行することができる。
いくつかの実施形態において、制御プレーンVCN1216およびデータプレーンVCN1218は、サービステナンシ1219に含まれ得る。この場合、システムのユーザまたは顧客は、制御プレーンVCN1216またはデータプレーンVCN1218のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN1216およびデータプレーンVCN1218を所有または操作してもよく、これらの両方は、サービステナンシ1219に含まれてもよい。この実施形態は、ネットワークの隔離を可能にすることによって、ユーザまたは顧客が他のユーザのリソースまたは他の顧客のリソースと対話することを防止し得る。また、この実施形態は、システムのユーザまたは顧客が、記憶するための所望のレベルの脅威防御を有さない可能性のあるパブリックインターネット1254に依存する必要なしに、データベースをプライベートに記憶することを可能にし得る。
他の実施形態において、制御プレーンVCN1216に含まれるLBサブネット1222は、サービスゲートウェイ1236から信号を受信するように構成され得る。この実施形態において、制御プレーンVCN1216およびデータプレーンVCN1218は、パブリックインターネット1254を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されてもよい。顧客が使用するデータベースは、IaaSプロバイダによって制御され、パブリックインターネット1254から隔離され得るサービステナンシ1219に格納され得るため、IaaSプロバイダの顧客は、この実施形態を望む場合がある。
図13は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1300である。サービスオペレータ1302(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1306(例えば、図12のVCN1206)およびセキュアホストサブネット1308(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1304(例えば、図12のセキュアホストテナンシ1204)に通信可能に結合され得る。VCN1306は、SSH VCN1312に含まれるLPG1210を介してセキュアシェル(SSH)VCN1312(例えば、図12のSSH VCN1212)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)1310(例えば、図12のLPG1210)を含み得る。SSH VCN1312は、SSHサブネット1314(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1312は、制御プレーンVCN1316に含まれるLPG1310を介して制御プレーンVCN1316(例えば、図12の制御プレーンVCN1216)に通信可能に結合することができる。制御プレーンVCN1316は、サービステナンシ1319(例えば、図12のサービステナンシ1219)内に含まれ得るとともに、データプレーンVCN1318(例えば、図12のデータプレーンVCN1218)は、システムのユーザまたは顧客によって所有または運用され得る顧客テナンシ1321内に含まれ得る。
制御プレーンVCN1316は、LBサブネット1322(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1320(例えば、図12の制御プレーンDMZ層1220)と、アプリサブネット1326(例えば、図12のアプリサブネット1226)を含み得る制御プレーンアプリ層1324(例えば、図12の制御プレーンアプリ層1224)と、データベース(DB)サブネット1330(例えば、図12のDBサブネット1230と同様)を含み得る制御プレーンデータ層1328(例えば、図12の制御プレーンデータ層1228)とを含み得る。制御プレーンDMZ層1320に含まれるLBサブネット1322は、制御プレーンアプリ層1324に含まれるアプリサブネット1326と、制御プレーンVCN1316に含まれ得るインターネットゲートウェイ1334(例えば、図12のインターネットゲートウェイ1234)とに通信可能に接続され得るとともに、アプリサブネット1326は、制御プレーンデータ層1328に含まれるDBサブネット1330、サービスゲートウェイ1336(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1338(例えば、図12のNATゲートウェイ1238)に通信可能に接続され得る。制御プレーンVCN1316は、サービスゲートウェイ1336およびNATゲートウェイ1338を含み得る。
制御プレーンVCN1316は、アプリサブネット1326を含み得るデータプレーンミラーアプリ層1340(例えば、図12のデータプレーンミラーアプリ層1240)を含み得る。データプレーンミラーアプリ層1340に含まれるアプリサブネット1326は、(例えば、図12の計算インスタンス1244と同様の)計算インスタンス1344を実行することができる仮想ネットワークインターフェイスコントローラ(VNIC)1342(例えば、VNIC1242)を含み得る。計算インスタンス1344は、データプレーンミラーアプリ層1340に含まれるVNIC1342およびデータプレーンアプリ層1346に含まれるVNIC1342を介して、データプレーンミラーアプリ層1340のアプリサブネット1326と、データプレーンアプリ層1346(例えば、図12のデータプレーンアプリ層1246)に含まれ得るアプリサブネット1326との間の通信を促進することができる。
制御プレーンVCN1316に含まれるインターネットゲートウェイ1334は、パブリックインターネット1354(例えば、図12のパブリックインターネット1254)に通信可能に接続され得るメタデータ管理サービス1352(例えば、図12のメタデータ管理サービス1252)に通信可能に接続され得る。パブリックインターネット1354は、制御プレーンVCN1316に含まれるNATゲートウェイ1338に通信可能に接続され得る。制御プレーンVCN1316に含まれるサービスゲートウェイ1336は、クラウドサービス1356(例えば、図12のクラウドサービス1256)に通信可能に接続され得る。
いくつかの例において、データプレーンVCN1318は、顧客テナンシ1321に含まれ得る。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN1316を提供し得るとともに、IaaSプロバイダは、顧客ごとに、サービステナンシ1319に含まれる固有の計算インスタンス1344を構成し得る。各計算インスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316と、顧客テナンシ1321に含まれるデータプレーンVCN1318との間の通信を可能にし得る。計算インスタンス1344は、サービステナンシ1319に含まれる制御プレーンVCN1316においてプロビジョニングされるリソースを、顧客テナンシ1321に含まれるデータプレーンVCN1318において展開することまたは使用することを可能にし得る。
他の例において、IaaSプロバイダの顧客は、顧客テナンシ1321に存在するデータベースを有し得る。この例において、制御プレーンVCN1316は、アプリサブネット1326を含み得るデータプレーンマイナーアプリ層1340を含み得る。データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在し得るが、データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在しなくてもよい。すなわち、データプレーンミラーアプリ層1340は、顧客テナンシ1321にアクセスすることができるが、データプレーンミラーアプリ層1340は、データプレーンVCN1318に存在しなくてもよく、IaaSプロバイダの顧客によって所有または運営されなくてもよい。データプレーンミラーアプリ層1340は、データプレーンVCN1318への呼び出しを行うように構成されてもよいが、制御プレーンVCN1316に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN1316にプロビジョニングされたデータプレーンVCN1318内のリソースを展開することまたは使用することを所望する可能性があり、データプレーンミラーアプリ層1340は、顧客のリソースの所望の展開または他の使用を促進することができる。
いくつかの実施形態において、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN1318に適用することができる。この実施形態において、顧客は、データプレーンVCN1318がアクセスできるものを決定することができ、顧客は、データプレーンVCN1318からのパブリックインターネット1354へのアクセスを制限してもよい。IaaSプロバイダは、データプレーンVCN1318から任意の外部ネットワークまたはデータベースへのアクセスにフィルタを適用するかまたは当該アクセスを制御することができない場合がある。顧客が顧客テナンシ1321に含まれるデータプレーンVCN1318に対してフィルタおよび制御を適用することは、データプレーンVCN1318を他の顧客およびパブリックインターネット1354から隔離することを支援することができる。
いくつかの実施形態において、クラウドサービス1356は、サービスゲートウェイ1336によって呼び出されて、パブリックインターネット1354上に、制御プレーンVCN1316上に、またはデータプレーンVCN1318上に存在していない可能性があるサービスにアクセスすることができる。クラウドサービス1356と制御プレーンVCN1316またはデータプレーンVCN1318との間の接続は、ライブまたは連続的でなくてもよい。クラウドサービス1356は、IaaSプロバイダによって所有または運営されている別のネットワーク上に存在してもよい。クラウドサービス1356は、サービスゲートウェイ1336から呼び出しを受信するように構成されてもよく、パブリックインターネット1354から呼び出しを受信しないように構成されてもよい。いくつかのクラウドサービス1356は、他のクラウドサービス1356から隔離されてもよく、制御プレーンVCN1316は、制御プレーンVCN1316と同じ地域に配置していない可能性があるクラウドサービス1356から隔離されてもよい。例えば、制御プレーンVCN1316は、「地域1」に配置されてもよく、クラウドサービス「展開12」は、「地域1」および「地域2」に配置されてもよい。展開12への呼び出しが地域1に配置された制御プレーンVCN1316に含まれるサービスゲートウェイ1336によって行われる場合、この呼び出しは、地域1内の展開12に送信されてもよい。この例において、制御プレーンVCN1316もしくは地域1の展開12は、地域2の展開12と通信可能に接続されなくてもよく、または、通信するものでなくてもよい。
図14は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1400である。サービスオペレータ1402(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1406(例えば、図12のVCN1206)およびセキュアホストサブネット1408(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1404(例えば、図12のセキュアホストテナンシ1204)に通信可能に接続され得る。VCN1406は、SSH VCN1412に含まれるLPG1410を介してSSH VCN1412(例えば、図12のSSH VCN1212)に通信可能に接続され得るLPG1410(例えば、図12のLPG1210)を含み得る。SSH VCN1412は、SSHサブネット1414(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1412は、制御プレーンVCN1416に含まれるLPG1410を介して制御プレーンVCN1416(例えば、図12の制御プレーンVCN1216)に通信可能に接続され得るとともに、データプレーンVCN1418に含まれるLPG1410を介してデータプレーンVCN1418(例えば、図12のデータプレーン1218)に通信可能に接続され得る。制御プレーンVCN1416およびデータプレーンVCN1418は、サービステナンシ1419(例えば、図12のサービステナント1219)に含まれ得る。
制御プレーンVCN1416は、ロードバランサ(LB)サブネット1422(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1420(例えば、図12の制御プレーンDMZ層1220)と、アプリサブネット1426(例えば、図12のアプリサブネット1226と同様)を含み得る制御プレーンアプリ層1424(例えば、図12の制御プレーンアプリ層1224)と、DBサブネット1430を含み得る制御プレーンデータ層1428(例えば、図12の制御プレーンデータ層1228)とを含み得る。制御プレーンDMZ層1420に含まれるLBサブネット1422は、制御プレーンアプリ層1424に含まれるアプリサブネット1426と、制御プレーンVCN1416に含まれ得るインターネットゲートウェイ1434(例えば、図12のインターネットゲートウェイ1234)とに通信可能に接続され得る。アプリサブネット1426は、制御プレーンデータ層1428に含まれるDBサブネット1430と、サービスゲートウェイ1436(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1438(例えば、図12のNATゲートウェイ1238)とに通信可能に接続され得る。制御プレーンVCN1416は、サービスゲートウェイ1436およびNATゲートウェイ1438を含み得る。
データプレーンVCN1418は、データプレーンアプリ層1446(例えば、図12のデータプレーンアプリ層1246)と、データプレーンDMZ層1448(例えば、図12のデータプレーンDMZ層1248)と、データプレーンデータ層1450(例えば、図12のデータプレーンデータ階層1250)とを含み得る。データプレーンDMZ層1448は、データプレーンVCN1418に含まれるデータプレーンアプリ層1446およびインターネットゲートウェイ1434の信頼できるアプリサブネット1460および信頼できないアプリサブネット1462に通信可能に接続され得るLBサブネット1422を含み得る。信頼できるアプリサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、データプレーンVCN1418に含まれるNATゲートウェイ1438、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続され得る。信頼できないアプリサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436、およびデータプレーンデータ層1450に含まれるDBサブネット1430に通信可能に接続され得る。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に接続され得るDBサブネット1430を含み得る。
信頼できないアプリサブネット1462は、テナント仮想マシン(VM)1466(1)~(N)に通信可能に接続され得る1つ以上のプライマリVNIC1464(1)~(N)を含み得る。各テナントVM1466(1)~(N)は、それぞれの顧客テナンシ1470(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN1468(1)~(N)に含まれ得るそれぞれのアプリサブネット1467(1)~(N)に通信可能に接続され得る。それぞれのセカンダリVNIC1472(1)~(N)は、データプレーンVCN1418に含まれる信頼できないアプリサブネット1462と、コンテナエグレスVCN1468(1)~(N)に含まれるアプリサブネットとの間の通信を促進することができる。各コンテナエグレスVCN1468(1)~(N)は、パブリックインターネット1454(例えば、図12のパブリックインターネット1254)に通信可能に接続され得るNATゲートウェイ1438を含み得る。
制御プレーンVCN1416に含まれるインターネットゲートウェイ1434およびデータプレーンVCN1418に含まれるインターネットゲートウェイ1434は、パブリックインターネット1454に通信可能に接続され得るメタデータ管理サービス1452(例えば、図12のメタデータ管理システム1252)に通信可能に接続され得る。パブリックインターネット1454は、制御プレーンVCN1416に含まれるNATゲートウェイ1438およびデータプレーンVCN1418に含まれるNATゲートウェイ1438に通信可能に接続され得る。制御プレーンVCN1416に含まれるサービスゲートウェイ1436およびデータプレーンVCN1418に含まれるサービスゲートウェイ1436は、クラウドサービス1456に通信可能に接続され得る。
いくつかの実施形態において、データプレーンVCN1418は、顧客テナンシ1470に統合され得る。この統合は、コードを実行するときにサポートを望む場合がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましい場合がある。顧客は、実行すると、破壊的であり得るか、他の顧客リソースと通信し得るか、または望ましくない影響を引き起こし得るコードを提供することがある。従って、IaaSプロバイダは、顧客がIaaSプロバイダに提供したコードを実行するか否かを判断してもよい。
いくつかの例において、IaaSプロバイダの顧客は、一時的なネットワークアクセスをIaaSプロバイダに許可し得るとともに、データプレーンアプリ層1446にアタッチすべき機能を要求し得る。機能を実行するためのコードは、VM1466(1)~(N)で実行されてもよいが、データプレーンVCN1418上の他の場所で実行されるように構成されない可能性もある。各VM1466(1)~(N)は1つの顧客テナンシ1470に接続されてもよい。VM1466(1)~(N)に含まれるそれぞれのコンテナ1471(1)~(N)は、コードを実行するように構成されてもよい。この場合、二重の隔離(例えば、コンテナ1471(1)~(N)はコードを実行し、コンテナ1471(1)~(N)は、少なくとも、信頼できないアプリサブネット1462に含まれるVM1466(1)~(N)に含まれ得る)が存在し得るが、これは、誤ったコードまたは望ましくないコードがIaaSプロバイダのネットワークに損傷を与えること、または異なる顧客のネットワークに損傷を与えることを防止することを支援し得る。コンテナ1471(1)~(N)は、顧客テナンシ1470に通信可能に接続されてもよく、顧客テナンシ1470からデータを送信または受信するように構成されてもよい。コンテナ1471(1)~(N)は、データプレーンVCN1418内の任意の他のエンティティからデータを送信または受信するように構成されなくてもよい。コードの実行が完了すると、IaaS提供者は、コンテナ1471(I)~(N)をキルするまたは廃棄してもよい。
いくつかの実施形態において、信頼できるアプリサブネット1460は、IaaSプロバイダによって所有または運営され得るコードを実行し得る。この実施形態において、信頼できるアプリサブネット1460は、DBサブネット1430に通信可能に接続され、DBサブネット1430においてCRUD操作を実行するように構成されてもよい。信頼できないアプリサブネット1462は、DBサブネット1430に通信可能に接続され得るが、この実施形態において、信頼できないアプリサブネットは、DBサブネット1430内で読み取り操作を実行するように構成されてもよい。各顧客のVM1466(1)~(N)に含まれ得るとともに、顧客からのコードを実行し得るコンテナ1471(1)~(N)は、DBサブネット1430と通信可能に接続されなくてもよい。
他の実施形態において、制御プレーンVCN1416およびデータプレーンVCN1418は、通信可能に直接に結合されなくてもよい。この実施形態において、制御プレーンVCN1416とデータプレーンVCN1418との間に直接的な通信は存在しない可能性がある。しかしながら、少なくとも1つの方法による間接的な通信は存在し得る。制御プレーンVCN1416とデータプレーンVCN1418との間の通信を容易にすることができるLPG1410がIaaSプロバイダによって確立されてもよい。別の例において、制御プレーンVCN1416またはデータプレーンVCN1418は、サービスゲートウェイ1436を介してクラウドサービス1456への呼び出しを行うことができる。例えば、制御プレーンVCN1416からクラウドサービス1456への呼び出しは、データプレーンVCN1418と通信することができるサービスの要求を含み得る。
図15は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1500である。サービスオペレータ1502(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1506(例えば、図12のVCN1206)およびセキュアホストサブネット1508(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシ1504(例えば、図12のセキュアホストテナンシ1204)に通信可能に接続され得る。VCN1506は、SSH VCN1512に含まれるLPG1510を介してSSH VCN1512(例えば、図12のSSH VCN1212)に通信可能に接続され得るLPG1510(例えば、図12のLPG1210)を含み得る。SSH VCN1512はSSHサブネット1514(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1512は、制御プレーンVCN1516に含まれるLPG1510を介して制御プレーンVCN1516(例えば、図12の制御プレーンVCN1216)に通信可能に接続され得るとともに、データプレーンVCN1518に含まれるLPG1510を介してデータプレーンVCN1518(例えば、図12のデータプレーン1218)に通信可能に接続され得る。制御プレーンVCN1516およびデータプレーンVCN1518は、サービステナンシ1519(例えば、図12のサービステナンシ1219)に含まれ得る。
制御プレーンVCN1516は、LBサブネット1522(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1520(例えば、図12の制御プレーンDMZ層1220)、アプリサブネット1526(例えば、図12のアプリサブネット1226)を含み得る制御プレーンアプリ層1524(例えば、図12の制御プレーンアプリ層1224)、DBサブネット1530(例えば、図14のDBサブネット1430)を含み得る制御プレーンデータ層1528(例えば、図12の制御プレーンデータ層1228)を含み得る。制御プレーンDMZ層1520に含まれるLBサブネット1522は、制御プレーンアプリ層1524に含まれるアプリサブネット1526と、制御プレーンVCN1516に含まれ得るインターネットゲートウェイ1534(例えば、図12のインターネットゲートウェイ1234)とに通信可能に接続され得る。アプリサブネット1526は、制御プレーンデータ層1528に含まれるDBサブネット1530と、サービスゲートウェイ1536(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1538(例えば、図12のNATゲートウェイ1238)とに通信可能に接続されて得る。制御プレーンVCN1516は、サービスゲートウェイ1536およびNATゲートウェイ1538を含み得る。
データプレーンVCN1518は、データプレーンアプリ層1546(例えば、図12のデータプレーンアプリ層1246)、データプレーンDMZ層1548(例えば、図12のデータプレーンDMZ層1248)、およびデータプレーンデータ層1550(例えば、図12のデータプレーンデータ層1250)を含み得る。データプレーンDMZ層1548は、データプレーンアプリ層1546の信頼できるアプリサブネット1560(例えば、図14の信頼できるアプリサブネット1460)および信頼できないアプリサブネット1562(例えば、図14の信頼できないアプリサブネット1462)とデータプレーンVCN1518に含まれるインターネットゲートウェイ1534とに通信可能に接続され得るLBサブネット1522を含み得る。信頼できるアプリサブネット1560は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、データプレーンVCN1518に含まれるNATゲートウェイ1538、およびデータプレーンデータ層1550に含まれるDBサブネット1530に通信可能に接続され得る。信頼できないアプリサブネット1562は、データプレーンVCN1518に含まれるサービスゲートウェイ1536、およびデータプレーンデータ層1550に含まれるDBサブネット1530に通信可能に接続され得る。データプレーンデータ層1550は、データプレーンVCN1518に含まれるサービスゲートウェイ1536に通信可能に接続され得るDBサブケット1530を含み得る。
信頼できないアプリサブネット1562は、信頼できないアプリサブネット1562に常駐するテナント仮想マシン(VM)1566(1)~(N)に通信可能に接続され得るプライマリYNIC1564(1)~(N)を含み得る。各テナントVM1566(1)~(N)は、それぞれのコンテナ1567(1)~(N)においてコードを実行することができ、コンテナエグレスVCN1568に含まれ得るデータプレーンアプリ層1546に含まれ得るアプリサブネット1526に通信可能に接続され得る。各セカンダリVNIC1572(1)~(N)は、データプレーンVCN1518に含まれる信頼できないアプリサブネット1562とコンテナエグレスVCN1568に含まれるアプリサブネットとの間の通信を促進することができる。コンテナエグレスVCNは、パブリックインターネット1554(例えば、図12のパブリックインターネット1254)に通信可能に接続することができるNATゲートウェイ1538を含み得る。
制御プレーンVCN1516に含まれるインターネットゲートウェイ1534およびデータプレーンVCN1518に含まれるインターネットゲートウェイ1534は、パブリックインターネット1554に通信可能に接続され得るメタデータ管理サービス1552(例えば、図12のメタデータ管理システム1252)に通信可能に接続され得る。パブリックインターネット1554は、制御プレーンVCN1516に含まれるとともにデータプレーンVCN1518に含まれるNATゲートウェイ1538に通信可能に接続され得る。制御プレーンVCN1516に含まれるとともにデータプレーンVCN1518に含まれるサービスゲートウェイ1536は、クラウドサービス1556に通信可能に接続され得る。
いくつかの例において、図15のブロック図1500のアーキテクチャによって示されたパターンは、図14のブロック図1400のアーキテクチャによって示されたパターンの例外と考えられ得るとともに、IaaSプロバイダが顧客と直接に通信できない(例えば、非接続地域)場合、IaaSプロバイダの顧客にとって望ましい場合がある。顧客は、各顧客のVM1566(1)~(N)に含まれるそれぞれのコンテナ1567(1)~(N)にリアルタイムでアクセスすることができる。コンテナ1567(1)~(N)は、コンテナエグレスVCN1568に含まれ得るデータプレーンアプリ層1546のアプリサブネット1526に含まれるそれぞれのセカンダリVNIC1572(1)~(N)を呼び出すように構成されてもよい。セカンダリVNIC1572(1)~(N)は、パブリックインターネット1554に呼び出しを送信し得るNATゲートウェイ1538に呼び出しを送信することができる。この例において、顧客がリアルタイムでアクセスできるコンテナ1567(1)~(N)は、制御プレーンVCN1516から隔離され得るとともに、データプレーンVCN1518に含まれる他のエンティティから隔離され得る。また、コンテナ1567(1)~(N)は、他の顧客のリソースから隔離されてもよい。
他の例において、顧客は、コンテナ1567(1)~(N)を使用して、クラウドサービス1556を呼び出すことができる。この例では、顧客は、コンテナ1567(1)~(N)において、クラウドサービス1556からサービスを要求するコードを実行し得る。コンテナ1567(1)~(N)は、要求をパブリックインターネット1554に送信することができるNATゲートウェイに要求を送信することができるセカンダリVNIC1572(1)~(N)にこの要求を送信することができる。パブリックインターネット1554は、インターネットゲートウェイ1534を介して、制御プレーンVCN1516に含まれるLBサブネット1522にこの要求を送信することができる。要求が有効であるとの判断に応答して、LBサブネットは、この要求をアプリサブネット1526に送信することができ、アプリサブネット1526は、サービスゲートウェイ1536を介してこの要求をクラウドサービス1556に送信することができる。
なお、図示されたIaaSアーキテクチャ1200、1300、1400および1500は、図示されたもの以外のコンポーネントを含んでもよい。また、図示された実施形態は、本開示の実施形態を組み込み得るクラウドインフラストラクチャシステムの一部の例に過ぎない。他のいくつかの実施形態において、IaaSシステムは、図示されたものよりも多いまたは少ないコンポーネントを有してよく、2つ以上のコンポーネントを組合わせてよく、またはコンポーネントの異なる構成または配置を有してよい。
特定の実施形態において、本明細書に記載されたIaaSシステムは、セルフサービス、サブスクリプションベース、柔軟な拡張可能性、信頼性、高可用性、および安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービスの一式を含み得る。このようなIaaSシステムの一例は、本出願人によって提供されるオラクル(登録商標)クラウドインフラストラクチャ(OCI)である。
図16は、様々な実施形態が実装され得る例示的なコンピュータシステム1600を示す。システム1600は、上述したコンピュータシステムのいずれかを実装するために使用され得る。図示のように、コンピュータシステム1600は、バスサブシステム1602を介して多数の周辺サブシステムと通信する処理ユニット1604を含む。これらの周辺サブシステムは、処理加速ユニット1606、I/Oサブシステム1608、ストレージサブシステム1618、および通信サブシステム1624を含み得る。ストレージサブシステム1618は、有形のコンピュータ可読記憶媒体1622およびシステムメモリ1610を含む。
バスサブシステム1602は、コンピュータシステム1600の様々なコンポーネントおよびサブシステムを意図したように相互に通信させるための機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム1602は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかであってもよい。例えば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、およびIEEE P1386.1標準に準拠して製造されたメザニンバスとして実装できる周辺機器相互接続(PCI)バスなどを含み得る。
1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装され得る処理ユニット1604は、コンピュータシステム1600の動作を制御する。処理ユニット1604は、1つ以上のプロセッサを含んでもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでもよい。いくつかの実施形態において、処理ユニット1604は、各処理ユニットに含まれるシングルコアまたはマルチコアプロセッサを有する1つ以上の独立した処理ユニット1632および/または1634として実装されてもよい。他の実施形態において、処理ユニット1604は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されたクワッドコア(quad-core)処理ユニットとして実装されてもよい。
様々な実施形態において、処理ユニット1604は、プログラムコードに応答して様々なプログラムを実行することができ、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の時点で、実行されるプログラムコードの一部または全部は、プロセッサ1604および/またはストレージサブシステム1618に常駐することができる。プロセッサ1604は、適切なプログラミングを通して、上述した様々な機能を提供することができる。コンピュータシステム1600は、デジタル信号プロセッサ(DSP)、専用プロセッサおよび/または同種のものを含み得る処理加速ユニット1606をさらに含んでもよい。
I/Oサブシステム1608は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含み得る。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声命令認識システムを備える音声入力装置、マイクロフォン、および他の種類の入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、Microsoft Kinect(登録商標)モーションセンサのようなモーション検知および/またはジェスチャ認識装置を含んでもよい。Microsoft Kinect(登録商標)モーションセンサは、ジェスチャおよび音声命令を利用する自然ユーザインターフェイスを介して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御することができ、それと対話することができる。また、ユーザインターフェイス入力装置は、Google Glass(登録商標)瞬き検出器のような眼球ジェスチャ認識装置を含み得る。Google Glass(登録商標)瞬き検出器は、ユーザの眼球活動(例えば、写真を撮るときおよび/またはメニューを選択するときの「瞬き」)を検出し、眼球活動を入力装置(例えば、Google Glass(登録商標))に入力する入力に変換する。さらに、ユーザインターフェイス入力装置は、音声命令を介してユーザと音声認識システム(例えば、Siri(登録商標)ナビゲータ)との対話を可能にする音声認識検出装置を含んでもよい。
また、ユーザインターフェイス入力装置は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッド、グラフィックタブレット、スピーカなどのオーディオ/ビジュアル装置、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ、3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置を含むがこれらに限定されない。さらに、ユーザインターフェイス入力装置は、例えば、コンピュータ断層撮影装置、磁気共鳴像装置、超音波放射断層撮影装置、および医療用超音波装置などのような医用画像入力装置を含んでもよい。また、ユーザインターフェイス入力装置は、例えば、MIDIキーボードおよび電子楽器などの音声入力装置を含んでもよい。
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚ディスプレイを含んでもよい。ディスプレイサブシステムは、例えば、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するフラットパネル装置、投影装置またはタッチスクリーンなどであってもよい。一般に、「出力装置」という用語を使用する場合、コンピュータシステム1600から情報をユーザまたは他のコンピュータに出力するためのすべての可能な種類の装置および機構を含むことを意図している。例えば、ユーザインターフェイス出力装置は、文字、画像およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置、例えば、モニタ、プリンタ、スピーカ、ヘッドフォン、カーナビゲーションシステム、プロッタ、音声出力装置、およびモデムを含むがこれらに限定されない。
コンピュータシステム1600は、ストレージサブシステム1618を含み得る。ストレージサブシステム1618は、ソフトウェア要素を備え、図示では、これらのソフトウェア要素は、システムメモリ1610内に配置されている。システムメモリ1610は、処理ユニット1604にロード可能かつ実行可能なプログラム命令、およびこれらのプログラムの実行中に生成されたデータを記憶し得る。
コンピュータシステム1600の構成およびタイプに応じて、システムメモリ1610は、揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory:RAM))であってもよく、および/または、不揮発性メモリ(例えば、読取り専用メモリ(read-only memory:ROM)、フラッシュメモリ)であってもよい。一般に、RAMは、処理ユニット1604が直接アクセス可能なデータおよび/またはプログラムモジュール、および/または、処理ユニット1604によって現在操作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実装形態では、システムメモリ1610は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の様々なタイプのメモリを含み得る。いくつかの実装形態では、始動中などにコンピュータシステム1600内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、一般にROMに格納され得る。一例としておよび非限定的に、システムメモリ1610は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム1612、プログラムデータ1614、およびオペレーティングシステム1616も示す。一例として、オペレーティングシステム1616は、マイクロソフトウィンドウズ(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステムのさまざまなバージョン、さまざまな市販のUNIX(登録商標)もしくはUNIXに類似するオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されるものではない)、および/または、iOS、Windows(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)16OSおよびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
また、ストレージサブシステム1618は、いくつかの実施例の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ可読記憶媒体を提供し得る。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1618に記憶されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1604によって実行されてもよい。また、ストレージサブシステム1618は、本開示に従って使用されるデータを記憶するためのリポジトリを提供し得る。
また、ストレージサブシステム1600は、コンピュータ可読記憶媒体1622にさらに接続可能なコンピュータ可読記憶媒体リーダ1620を含み得る。コンピュータ可読記憶媒体1622は、システムメモリ1610とともに、または必要に応じてシステムメモリ1610と組合わせて、コンピュータ可読情報を一時的におよび/またはより永久に収容、格納、送信および検索するための記憶媒体に加えて、リモート記憶装置、ローカル記憶装置、固定的な記憶装置および/または取外し可能な記憶装置を包括的に表わし得る。
また、コードまたはコードの一部を含むコンピュータ可読記憶媒体1622は、当該技術分野において公知のまたは使用される任意の適切な媒体を含み得る。当該媒体は、情報の格納および/または送信のための任意の方法または技術で実装される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、RAM、ROM、電子的消去・プログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(digital versatile disk:DVD)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体などの有形のコンピュータ可読記憶媒体を含み得る。また、これは、データ信号、データ送信などの無形のコンピュータ可読媒体、または、所望の情報を送信するために使用可能であり且つコンピュータシステム1600によってアクセス可能なその他の媒体を含み得る。
一例として、コンピュータ可読記憶媒体1622は、取外し不可能な不揮発性磁気媒体から読取るかまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るかまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、CD ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るかまたは当該ディスクに書込む光学式ディスクドライブを含んでもよい。コンピュータ可読記憶媒体1622は、ジップ(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ可読記憶媒体1622は、フラッシュメモリベースのSSD、企業向けフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組合わせを使用するハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶装置をコンピュータシステム1600に提供し得る。
通信サブシステム1624は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム1624は、他のシステムからデータを受信したり、コンピュータシステム1600から他のシステムにデータを送信したりするためのインターフェイスの役割を果たす。例えば、通信サブシステム1624は、コンピュータシステム1600がインターネットを介して1つ以上の装置に接続することを可能にし得る。いくつかの実施形態では、通信サブシステム1624は、(例えば3G、4GまたはEDGE(enhanced data rates for global evolution)などの携帯電話技術、高度データネットワーク技術を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、WiFi(IEEE802.11ファミリ規格または他のモバイル通信技術またはそれらの任意の組合わせ)、全地球測位システム(global positioning system:GPS)レシーバコンポーネント、および/または、他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム1624は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続(例えばイーサネット)を提供することができる。
また、いくつかの実施形態において、通信サブシステム1624は、コンピュータシステム1600を使用し得る1人以上のユーザを代表して、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630などの形態で入力通信を受信し得る。
一例として、通信サブシステム1624は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリ(Rich Site Summary:RSS)フィードなどのウェブフィードなどのデータフィード1626をリアルタイムでソーシャルネットワークおよび/または他の通信サービスのユーザから受信し、および/または、1つ以上の第三者情報源からリアルタイム更新を受信するように構成されてもよい。
また、通信サブシステム1624は、連続的なデータストリームの形態でデータを受信するように構成されてもよく、当該データは、連続的である場合もあれば本質的に明確な端部を持たない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム1628および/またはイベント更新1630を含んでもよい。連続的なデータを生成するアプリケーションの例としては、例えばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどを含んでもよい。
また、通信サブシステム1624は、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630などを、コンピュータシステム1600に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
コンピュータシステム1600は、手持ち式携帯機器(例えば、iPhone(登録商標)携帯電話、Ipad(登録商標)計算タブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含む様々な種類のうちの1つであり得る。
コンピュータおよびネットワークの性質が常に変化しているため、図に示すコンピュータシステム1600の記載は、具体的な例として意図されているに過ぎない。図に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が実現可能である。例えば、カスタマイズされたハードウェアが用いられてもよく、および/または、特定の要素がハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、もしくは組合せて実装されてもよい。さらに、ネットワーク入出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。当業者であれば、本明細書に提供される開示および教示に基づいて、様々な実施形態を実装するための他の手段および/または方法を理解するであろう。
特定の実施形態を説明してきたが、さまざまな変更、改変、代替構成、および同等物も本開示の範囲内に包含される。実施形態は、特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作可能である。さらに、一連の特定の処理およびステップを用いて実施形態を説明してきたが、本開示の範囲が説明した一連の処理およびステップに限定されないことは、当業者にとって明らかとなるはずである。上述した実施形態のさまざまな特徴および態様は、個別にまたは共同で使用され得る。
さらに、ハードウェアおよびソフトウェアの特定の組合わせを用いて実施形態を説明してきたが、ハードウェアおよびソフトウェアの他の組合わせも本開示の範囲内に含まれることを認識すべきである。ハードウェアのみ、ソフトウェアのみ、またはそれらの組合わせを用いて、実施形態を実現してもよい。本開示に記載されたさまざまなプロセスは、同一のプロセッサまたは任意の組合わせの異なるプロセッサ上で実行することができる。したがって、特定の動作を実行するようにコンポーネントまたはモジュールを構成すると説明する場合、その構成は、例えば、その動作を実行するように電子回路を設計することによって、その動作を実行するようにプログラム可能な電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの組合わせによって実現することができる。プロセスは、プロセス間の通信を行う従来技術を含むがこれに限定されないさまざまな技術を用いて通信を行うことができる。異なる対のプロセスは、異なる技術を使用する可能性があり、または同一対のプロセスは、異なる時間で異なる技術を使用する可能性がある。
したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきである。しかしながら、特許請求の範囲により定められた幅広い主旨および範囲から逸脱することなく、追加、削減、削除および他の変形および変更を行ってもよいことは、明らかであろう。したがって、本開示の特定の実施形態を説明したが、これらの実施形態は限定することを意図していない。さまざまな変更例およびその同等例は添付の特許請求の範囲に含まれる。
本開示の実施形態を説明する文脈に(特に特許請求の範囲の文脈に)使用された不定冠詞「a」/「an」、定冠詞「the」および同様の参照は、本明細書に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、単数および複数の両方を含むように解釈すべきである。用語「含む(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」は、特に明記しない限り、非限定的な用語(すなわち、「含むがこれに限定されない」という意味)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在していても、その一部または全部が内部に含まれている、取り付けられている、または一緒に結合されていると解釈されるべきである。本明細書において、値の範囲の列挙は、単にその範囲内に含まれる各個別の値を各々言及する略記方法として意図されたものであり、本明細書に特に明記しない限り、各個別の値は、本明細書に個別に記載されるように、本明細書に組み込まれる。本明細書に特に明記しない限りまたは内容上明らかに他の意味を示す場合を除き、本明細書に記載の全ての方法は、任意の適切な順序で行うことができる。本明細書において、任意の例および全ての例または例示的な言語(例えば、「などの」)の使用は、実施形態をより明瞭にするよう意図されており、特に明記しない限り、本開示の範囲を限定するものではない。明細書中の用語は、本開示の実施に不可欠な任意の非請求要素を示すものと解釈すべきではない。
句「X、Y、またはZの少なくとも1つ」というフレーズなどの選言的言語は、特に規定のない限り、項目、用語などがX、YもしくはZ、またはそれらの任意の組合わせ(例えば、X、Y、および/またはZ)のいずれかであってもよいことを示すために一般的に用いられるものとして文脈内で理解されることを意図している。したがって、このような選言的言語は、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが存在する必要があることを暗示することを一般に意図しておらず、かつ、それを暗示するべきものではない。
本開示を実施するために公知である最良の形態を含む本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形例は、前述の説明を読むことで当業者に明らかになるであろう。当業者は、適宜、このような変形例を採用することができ、本開示は、本明細書に具体的に記載されている以外の方法で実施されてもよい。したがって、本開示は、適用される法律によって許可される通り、本明細書に添付された請求項に記載された主題の全ての変形例および同等例を含む。さらに、その全ての実現可能な変形例における上記の要素の任意の組合わせは、本明細書において別段の指示がない限り、本開示に包含される。
本明細書に引用された刊行物、特許出願、および特許を含む全ての参考文献は、各文献が参照により組み込まれることが個別にかつ明確に示され、その全体が本明細書に記載された場合と同じ程度に、参照により組み込まれるものとする。
前述の明細書において、本開示の局面は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示の様々な特徴および局面は、個々にまたは共同で使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、本明細書に説明されるものを超える任意の数の環境および用途において利用可能である。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。

Claims (22)

  1. 方法であって、
    宛先アドレスが第1のインターネットプロトコル(Internet Protocol:IP)アドレスである第1のパケットについて、前記第1のパケットを受信する第1のネットワーク仮想化デバイス(network virtualization device:NVD)により、複数のIPアドレスが前記第1のIPアドレスに関連付けられていると判断するステップを含み、前記第1のIPアドレスは複数の計算インスタンスに関連付けられており、前記複数のIPアドレスは、前記複数の計算インスタンスに関連付けられた複数のNVDのIPアドレスを含み、前記方法はさらに、
    前記第1のNVDにより、前記複数のIPアドレスから特定のIPアドレスを選択するステップを含み、前記特定のIPアドレスは、前記複数のNVDからの特定のNVDのものであり、前記特定のNVDは、前記複数の計算インスタンスからの第1の計算インスタンスに関連付けられており、前記方法はさらに、
    前記第1のNVDにより、前記第1のパケットを前記特定のIPアドレスに通信するステップを含む、方法。
  2. 前記複数のIPアドレスが前記第1のIPアドレスに関連付けられていると判断するステップは、
    前記第1のNVDにより、IPマッピング情報に基づいて、前記第1のIPアドレスが前記複数のIPアドレスにマップしていると判断するステップを含む、請求項1に記載の方法。
  3. 前記複数のIPアドレスが前記第1のIPアドレスに関連付けられていると判断するステップは、
    前記第1のNVDにより、転送テーブル内の情報に基づいて、複数のネクストホップルートが前記第1のIPアドレスに関連付けられていると判断するステップを含み、前記複数のネクストホップルートは前記複数のIPアドレスを識別する、請求項1に記載の方法。
  4. 前記第1のパケットを前記特定のNVDから前記第1の計算インスタンスに通信するステップをさらに含む、請求項1から3のいずれか1項に記載の方法。
  5. 前記特定のIPアドレスを選択するステップは、
    前記第1のNVDにより、前記第1のパケットのうちの1つ以上のフィールドのコンテンツに基づいてハッシュ値を生成するステップと、
    前記ハッシュ値を用いて前記複数のIPアドレスから前記特定のIPアドレスを選択するステップとを含む、請求項1から4のいずれか1項に記載の方法。
  6. 前記ハッシュ値を生成するステップは、コンシステントハッシュ技術を用いるステップを含む、請求項5に記載の方法。
  7. 前記特定のIPアドレスを選択するステップは、
    前記第1のNVDにより、前記第1のパケットが第1のネットワークフローに属していると判断するステップと、
    前記第1のNVDにより、前記第1のNVDによって記憶されたフロー情報から、前記第1のネットワークフローに対応する第1のエントリを識別するステップと、
    前記第1のNVDにより、前記特定のIPアドレスが前記第1のエントリにおいて前記第1のネットワークフローに関連付けられているものとして指定されていると判断するステップとを含む、請求項1から4のいずれか1項に記載の方法。
  8. 前記第1のNVDにより、前記第1のパケットが第1のネットワークフローに属していると判断するステップと、
    前記第1のNVDにより、前記第1のNVDによって記憶されたフロー情報が前記第1のネットワークフローに対応するいずれのエントリも含まないと判断するステップと、
    前記第1のNVDにより、第1の選択技術を用いて前記複数のIPアドレスから前記特定のIPアドレスを選択するステップとをさらに含む、請求項1から4のいずれか1項に記載の方法。
  9. 前記第1のNVDにより、前記第1のネットワークフローを識別するとともに前記特定のIPアドレスを前記第1のネットワークフローに関連付ける前記フロー情報にエントリを追加するステップをさらに含む、請求項8に記載の方法。
  10. 前記第1のIPアドレスはオーバーレイIPアドレスであり、
    前記複数のIPアドレス内の前記アドレスは物理IPアドレスである、請求項1から9のいずれか1項に記載の方法。
  11. 前記方法はさらに、
    前記第1のNVDによって受信された第2のパケットについて、前記第1のNVDにより、前記第2のパケットがその宛先アドレスとして前記第1のIPアドレスを有すると判断するステップと、
    前記第1のNVDにより、前記複数のIPアドレスから第2の特定のIPアドレスを選択するステップとを含み、前記第2の特定のIPアドレスは、前記複数のNVDからの第2の特定のNVDのものであり、前記第2の特定のNVDは、前記複数の計算インスタンスからの第2の計算インスタンスに関連付けられており、前記方法はさらに、
    前記第1のNVDにより、前記第2のパケットを前記第2の特定のIPアドレスに通信するステップを含む、請求項1から10のいずれか1項に記載の方法。
  12. 前記第1のパケットは第1のクライアントによって送信され、前記第2のパケットは第2のクライアントによって送信され、前記第1のクライアントは前記第2のクライアントとは異なる、請求項11に記載の方法。
  13. 前記方法はさらに、
    前記複数のNVDからの前記特定のNVDにより、前記第1の計算インスタンスから新しいパケットを受信するステップを含み、前記新しいパケットは、宛先クライアントについての宛先IPアドレスを識別し、前記方法はさらに、
    前記特定のNVDにより、前記新しいパケットが前記第1の計算インスタンスと前記宛先クライアントとの間に確立されるべき新しい接続もしくは通信のためのものであるかどうか、または、前記新しいパケットが、前記宛先クライアントから前記第1の計算インスタンスによって以前に受信されたパケットに応答して前記第1の計算インスタンスによって送信された応答パケットであるかどうか、を判断するステップを含む、請求項1から12のいずれか1項に記載の方法。
  14. 前記新しいパケットが新しい接続のためのものであるかまたは応答パケットであるかを判断するステップは、前記新しいパケットが前記第1の計算インスタンスと前記宛先クライアントとの間で確立されるべき新しい接続または通信のためのものであると判断するステップを含み、前記方法はさらに、
    前記新しいパケットのために用いられるべきエフェメラルポート値を識別するステップと、
    前記新しいパケットのソースポートフィールドを前記識別されたエフェメラルポート値に設定するステップと、
    前記特定のNVDから前記宛先クライアントに関連付けられたNVDに前記新しいパケットを通信するステップとを含む、請求項13に記載の方法。
  15. 前記エフェメラルポートを識別するステップは、
    前記第1の計算インスタンスに割当てられたエフェメラルポート値の範囲から前記新しいパケットのために用いられるべき前記エフェメラルポート値を選択するステップを含み、前記第1の計算インスタンスに割当てられた前記エフェメラルポート値の範囲内の前記エフェメラルポート値は、前記複数の計算インスタンス内の他の計算インスタンスに割当てられたエフェメラルポート値とは異なる、請求項14に記載の方法。
  16. 前記エフェメラルポート値を識別するステップは、
    前記特定のNVDにより、1つ以上のエフェメラルポート値を要求する要求をサービスに送信するステップと、
    前記特定のNVDにより、前記サービスから、1つ以上のエフェメラルポート値のセットを受信するステップとを含み、
    前記新しいパケットの前記ソースポートフィールドを設定するステップは、前記ソースポートフィールドを、前記1つ以上のエフェメラルポート値のセットからの値に設定するステップを含む、請求項14に記載の方法。
  17. 前記新しいパケットが新しい接続のためのものであるかまたは応答パケットであるかを判断するステップは、前記新しいパケットが応答パケットであると判断するステップを含み、
    前記方法はさらに、前記特定のNVDから前記宛先クライアントに関連付けられたNVDに前記新しいパケットを通信するステップを含む、請求項13に記載の方法。
  18. 前記新しいパケットが新しい接続のためのものであるかまたは応答パケットであるかを判断するステップは、
    前記新しいパケットが肯定応答を含む場合、前記新しいパケットを応答パケットとして識別するステップ、
    前記新しいパケットの前記ソースポートフィールドにおける値がエフェメラルポート値でない場合、前記新しいパケットを応答パケットとして識別するステップ、または、
    前記新しいパケットが既存のネットワークフローの一部であると前記特定のNVDが判断する場合、前記新しいパケットを応答パケットとして識別するステップ、
    のステップうち少なくとも1つを実行するステップを含む、請求項13に記載の方法。
  19. 1つ以上のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読メモリであって、前記複数の命令は、前記1つ以上のプロセッサによって実行されると、以下の処理を含む処理を実行する命令を含み、前記以下の処理は、
    宛先アドレスが第1のインターネットプロトコル(IP)アドレスである第1のパケットについて、複数のIPアドレスが前記第1のIPアドレスに関連付けられていると判断する処理を含み、前記第1のIPアドレスは複数の計算インスタンスに関連付けられており、前記複数のIPアドレスは、前記複数の計算インスタンスに関連付けられた複数のネットワーク仮想化デバイス(NVD)のIPアドレスを含み、前記以下の処理はさらに、
    前記複数のIPアドレスから特定のIPアドレスを選択する処理を含み、前記特定のIPアドレスは、前記複数のNVDからの特定のNVDのものであり、前記特定のNVDは、前記複数の計算インスタンスからの第1の計算インスタンスに関連付けられており、前記以下の処理はさらに、
    前記第1のパケットを前記特定のIPアドレスに通信する処理を含む、非一時的なコンピュータ可読メモリ。
  20. システムであって、
    1つ以上のプロセッサと、
    複数の命令を記憶するメモリとを含み、前記複数の命令は、前記1つ以上のプロセッサによって実行されると前記システムに、
    宛先アドレスが第1のインターネットプロトコル(IP)アドレスである第1のパケットについて、複数のIPアドレスが前記第1のIPアドレスに関連付けられていると判断することを行なわせ、前記第1のIPアドレスは複数の計算インスタンスに関連付けられており、前記複数のIPアドレスは、前記複数の計算インスタンスに関連付けられた複数のネットワーク仮想化デバイス(NVD)のIPアドレスを含み、前記複数の命令は前記システムにさらに、
    前記複数のIPアドレスから特定のIPアドレスを選択することを行なわせ、前記特定のIPアドレスは、前記複数のNVDからの特定のNVDのものであり、前記特定のNVDは、前記複数の計算インスタンスからの第1の計算インスタンスに関連付けられており、前記複数の命令は前記システムにさらに、
    前記第1のパケットを前記特定のIPアドレスに通信することを行なわせる、システム。
  21. 1つ以上のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読メモリであって、前記複数の命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1から18のいずれか1項に記載の方法を実行させる命令を含む、非一時的なコンピュータ可読メモリ。
  22. システムであって、
    1つ以上のプロセッサと、
    複数の命令を記憶するメモリとを備え、前記複数の命令は、前記1つ以上のプロセッサによって実行されると前記システムに請求項1から18のいずれか1項に記載の方法を実行させる、システム。
JP2023548595A 2021-02-12 2021-11-01 オーバーレイネットワークにおけるipアドレスのスケーリング Pending JP2024507143A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/175,285 US11743233B2 (en) 2021-02-12 2021-02-12 Scaling IP addresses in overlay networks
US17/175,285 2021-02-12
PCT/US2021/057589 WO2022173473A1 (en) 2021-02-12 2021-11-01 Scaling ip addresses in overlay networks

Publications (1)

Publication Number Publication Date
JP2024507143A true JP2024507143A (ja) 2024-02-16

Family

ID=78790131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023548595A Pending JP2024507143A (ja) 2021-02-12 2021-11-01 オーバーレイネットワークにおけるipアドレスのスケーリング

Country Status (5)

Country Link
US (2) US11743233B2 (ja)
EP (1) EP4292261A1 (ja)
JP (1) JP2024507143A (ja)
CN (1) CN116982306A (ja)
WO (1) WO2022173473A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11743233B2 (en) * 2021-02-12 2023-08-29 Oracle International Corporation Scaling IP addresses in overlay networks

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050147095A1 (en) * 2003-12-30 2005-07-07 Intel Corporation IP multicast packet burst absorption and multithreaded replication architecture
US7613809B2 (en) * 2006-05-30 2009-11-03 Intel Corporation Supporting ephemeral ports in a virtualized environment
US8363656B2 (en) * 2010-09-15 2013-01-29 International Business Machines Corporation Multiple virtual machines sharing a single IP address
WO2012103938A1 (en) * 2011-02-01 2012-08-09 Telefonaktiebolaget L M Ericsson (Publ) Routing traffic towards a mobile node
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US9590914B2 (en) * 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US10057167B2 (en) * 2014-04-09 2018-08-21 Tallac Networks, Inc. Identifying end-stations on private networks
US9882968B1 (en) * 2014-12-09 2018-01-30 Amazon Technologies, Inc. Virtual network interface multiplexing
US10797989B2 (en) * 2018-09-19 2020-10-06 Amazon Technologies, Inc. Scalable virtual traffic hub interconnecting isolated networks
US10742446B2 (en) * 2018-09-19 2020-08-11 Amazon Technologies, Inc. Interconnecting isolated networks with overlapping address ranges via scalable virtual traffic hubs
US10785146B2 (en) * 2018-09-19 2020-09-22 Amazon Technologies, Inc. Scalable cell-based packet processing service using client-provided decision metadata
US10834044B2 (en) * 2018-09-19 2020-11-10 Amazon Technologies, Inc. Domain name system operations implemented using scalable virtual traffic hub
US10897417B2 (en) * 2018-09-19 2021-01-19 Amazon Technologies, Inc. Automated route propagation among networks attached to scalable virtual traffic hubs
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US10812576B1 (en) 2019-05-31 2020-10-20 Microsoft Technology Licensing, Llc Hardware load balancer gateway on commodity switch hardware
US11743233B2 (en) * 2021-02-12 2023-08-29 Oracle International Corporation Scaling IP addresses in overlay networks

Also Published As

Publication number Publication date
CN116982306A (zh) 2023-10-31
US20230370421A1 (en) 2023-11-16
EP4292261A1 (en) 2023-12-20
US20220263789A1 (en) 2022-08-18
WO2022173473A1 (en) 2022-08-18
US11743233B2 (en) 2023-08-29

Similar Documents

Publication Publication Date Title
US20220206908A1 (en) Techniques for replicating state information for high availability
US11777848B2 (en) Scalable routing and forwarding of packets in cloud infrastructure
JP2024503321A (ja) 仮想化されたクラウド環境におけるレイヤ2ネットワークのインターネットグループ管理プロトコル(igmp)
US11777897B2 (en) Cloud infrastructure resources for connecting a service provider private network to a customer private network
US20240154904A1 (en) Dynamic ip routing in a cloud environment
US20240039847A1 (en) Highly-available host networking with active-active or active-backup traffic load-balancing
US11929976B2 (en) Virtual network routing gateway that supports address translation for dataplane as well as dynamic routing protocols (control plane)
JP2024503600A (ja) 仮想化されたクラウド環境におけるレイヤ2ネットワーキングスパンポート
US20220197683A1 (en) Mechanism to implement vcn network virtualization in a rack-based switch
US20230370421A1 (en) Scaling ip addresses in overlay networks
US20240097973A1 (en) Secure bi-directional network connectivity system between private networks
JP2024503318A (ja) 仮想化されたクラウド環境においてアクセス制御リストを使用するレイヤ2ネットワーキング
JP2024507146A (ja) キャッシュされた構成情報およびキャッシュされない構成情報に基づいたクラウドインフラストラクチャにおけるパケットフロー
US20220417139A1 (en) Routing policies for graphical processing units
US20230396579A1 (en) Cloud infrastructure resources for connecting a service provider private network to a customer private network
US20240160496A1 (en) Address management in gpu super cluster
JP2024503322A (ja) 仮想化されたクラウド環境におけるレイヤ2ネットワーキングストーム制御
JP2024503319A (ja) 仮想化されたクラウド環境におけるレイヤ2ネットワーキング情報
WO2022271990A1 (en) Routing policies for graphical processing units
EP4360280A1 (en) Routing policies for graphical processing units
JP2024507147A (ja) クラウドインフラストラクチャにおけるキャッシュされたフロー情報の無効化
WO2023244357A1 (en) Implementing communications within a container environment
WO2023136964A1 (en) Publishing physical topology network locality information for graphical processing unit workloads
CN117597894A (zh) 用于图形处理单元的路由策略