(57)【要約】  マルチクラウド接続を提供するためのシステム、方法、およびコンピュータ可読媒体。方法は、プライベートネットワークと、プライベートネットワークに接続された仮想プライベートクラウド（ＶＰＣ）と、を含むマルチクラウド環境に、ＶＰＣおよびプライベートネットワーク上のセグメントルーティング（ＳＲ）ドメインおよびそれぞれの仮想ルータを介して、新しいＶＰＣを追加することを含むことができる。本方法は、新しい仮想ルータを新しいＶＰＣに展開することと、新しい仮想ルータをマルチクラウド環境のＢＧＰコントローラに登録することと、ＢＧＰコントローラで新しい仮想ルータからトポロジ情報を受信することと、を含むことができる。本方法は、トポロジ情報に基づいて計算されたパスに基づいてマルチクラウド環境内のルートを識別することと、新しい仮想ルータに、ルート、ＳＲ識別子およびＳＲポリシーを含むルーティング情報を送信することと、ルーティング情報に基づいて、プライベートネットワークと、ＶＰＣと、新しいＶＰＣとの間の相互接続を提供することと、をさらに含むことができる。【選択図】図１
2021530908.tif 000002
【特許請求の範囲】
【請求項１】
プライベートネットワークと、前記プライベートネットワークに接続された１つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記１つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記マルチクラウド環境のボーダーゲートウェイプロトコル（ＢＧＰ）コントローラに前記新しい仮想ルータを登録することと、
前記ＢＧＰコントローラで、前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された１つ以上のパスに基づいて、前記マルチクラウド環境内のルートを識別することであって、前記１つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも１つの間にあることと、
前記ＢＧＰコントローラによって、前記新しい仮想ルータに、前記マルチクラウド環境を介して通信するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、
前記ルーティング情報に基づいて、前記セグメントルーティングドメイン、前記それぞれの仮想ルータ、および前記新しい仮想ルータを介して、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の相互接続を提供することと、を含む、方法。
【請求項２】
前記ＢＧＰコントローラによって、前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記１つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすることをさらに含む、請求項１に記載の方法。
【請求項３】
前記新しい仮想プライベートクラウドおよび前記１つ以上の仮想プライベートクラウドが、１つ以上のそれぞれのＢＧＰエージェントを実行する、請求項１または２に記載の方法。
【請求項４】
前記セグメントルーティングドメインが、ＳＲｖ６オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、ＳＲｖ６対応ノードを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記セグメントルーティング識別子に基づいて、前記ＳＲｖ６オーバーレイを介して、前記それぞれの仮想ルータまたは前記新しい仮想ルータのうちの少なくとも２つの間でＳＲｖ６トラフィックをルーティングすることをさらに含む、請求項４に記載の方法。
【請求項６】
前記トポロジ情報に基づいて、前記ＢＧＰコントローラを介して、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の前記１つ以上のパスを計算することであって、前記１つ以上のパスが、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間のそれぞれの最適なパスを含むことをさらに含む、請求項１〜５のいずれかに記載の方法。
【請求項７】
前記トポロジ情報が、ＢＧＰリンクステートプロトコル（ＢＧＰ−ＬＳ）を介して前記ＢＧＰコントローラによって受信される、請求項１〜６のいずれかに記載の方法。
【請求項８】
前記ルーティング情報が、ＢＧＰトラフィックエンジニアリング（ＢＧＰ−ＴＥ）を介して前記ＢＧＰコントローラによって送信される、請求項１〜７のいずれかに記載の方法。
【請求項９】
前記それぞれの仮想ルータおよび前記新しい仮想ルータが、前記１つ以上の仮想プライベートクラウドおよび前記新しい仮想プライベートクラウドをホストする１つ以上のクラウドプロバイダに関連付けられたクラウドマーケットプレイスからそれぞれの仮想マシンを介して展開される、請求項１〜８のいずれかに記載の方法。
【請求項１０】
前記それぞれの仮想ルータおよび前記新しい仮想ルータが、前記ＢＧＰコントローラに接続してかつ登録するようにプレステージングされている、請求項９に記載の方法。
【請求項１１】
システムであって、
１つ以上のプロセッサと、
少なくとも１つのコンピュータ可読記憶媒体であって、前記１つ以上のプロセッサによって実行されると、前記システムに、
クラウドコンシューマーに関連付けられたプライベートネットワークと、前記プライベートネットワークに接続された１つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記１つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウドを追加することに応じて、前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された１つ以上のパスに基づいて、前記マルチクラウド環境内のルートを識別することであって、前記１つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも１つの間にあることと、
前記新しい仮想ルータに、前記マルチクラウド環境の前記新しい仮想プライベートクラウド、前記１つ以上の仮想プライベートクラウド、および前記プライベートネットワークを相互接続するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、を行わせる命令をその中に格納した少なくとも１つのコンピュータ可読記憶媒体と、を含む、システム。
【請求項１２】
前記少なくとも１つのコンピュータ可読記憶媒体が、前記１つ以上のプロセッサによって実行されると、前記システムに、
前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記１つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすること、を行わせる追加の命令を格納する、請求項１１に記載のシステム。
【請求項１３】
前記セグメントルーティングドメインが、ＳＲｖ６オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、ＳＲｖ６対応ノードを含む、請求項１１または１２に記載のシステム。
【請求項１４】
前記少なくとも１つのコンピュータ可読記憶媒体が、前記１つ以上のプロセッサによって実行されると、前記システムに、
前記トポロジ情報に基づいて、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の前記１つ以上のパスを計算することであって、前記１つ以上のパスが、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間のそれぞれの最適なパスを含むこと、を行わせる追加の命令を格納する、請求項１１〜１３のいずれかに記載のシステム。
【請求項１５】
前記トポロジ情報が、ＢＧＰリンクステートプロトコル（ＢＧＰ−ＬＳ）を介して前記システムによって受信され、前記システムが、ＢＧＰコントローラを含む、請求項１１〜１４のいずれかに記載のシステム。
【請求項１６】
前記少なくとも１つのコンピュータ可読記憶媒体が、前記１つ以上のプロセッサによって実行されると、前記システムに、
前記マルチクラウド環境のＳＲｖ６トラフィックに対して、前記ＳＲｖ６トラフィックが前記マルチクラウド環境で特定のクラウドを出る際に、前記ＳＲｖ６トラフィックに関連付けられたＩＰｖ６送信元アドレスを変更してリバース・パス・フォワーディング（ＲＰＦ）チェックの失敗を防ぐ特定のＳＲｖ６関数を実装することであって、前記特定のＳＲｖ６関数が、ＳＲｖ６  Ｅｎｄ関数、ＳＲｖ６  Ｅｎｄ．Ｔ関数、およびＳＲｖ６  Ｅｎｄ．Ｘ関数のうちの少なくとも１つ、または１つ以上のＳＲｖ６プロキシ関数に適用可能である、実装すること、を行わせる追加の命令を格納する、請求項１１〜１５のいずれかに記載のシステム。
【請求項１７】
１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
クラウドコンシューマーに関連付けられたプライベートネットワークと、前記プライベートネットワークに接続された１つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記１つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウドを追加することに応じて、前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された１つ以上のパスに基づいて前記マルチクラウド環境内のルートを識別することであって、前記１つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記１つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも１つの間にあることと、
前記新しい仮想ルータに、前記マルチクラウド環境の前記新しい仮想プライベートクラウド、前記１つ以上の仮想プライベートクラウド、および前記プライベートネットワークを相互接続するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、を行わせる命令をその中に格納した命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記１つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすることを行わせる追加の命令を格納する、請求項１７に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記セグメントルーティングドメインが、ＳＲｖ６オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、ＳＲｖ６対応ノードを含む、請求項１７または１８に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記トポロジ情報が、ＢＧＰリンクステートプロトコル（ＢＧＰ−ＬＳ）を介して受信され、前記ルーティング情報が、ＢＧＰトラフィックエンジニアリング（ＢＧＰ−ＴＥ）を介して送信される、請求項１７、１８、または１９に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１８年７月１７日に出願された「ＭＵＬＴＩ−ＣＬＯＵＤ  ＣＯＮＮＥＣＴＩＶＩＴＹ  ＵＳＩＮＧ  ＳＲＶ６  ＡＮＤ  ＢＧＰ」と題する米国非仮特許出願第１６／０３７，７６５号の利益および優先権を主張し、その内容は、参照によりそれらの全体が明示的に本明細書に組み込まれる。
【０００２】
本技術は、クラウドコンピューティング、より具体的にはマルチクラウド接続に関する。
【背景技術】
【０００３】
インターネット対応デバイスの普及により、インターネットサービスおよびコンテンツに対する膨大な需要が生まれている。ユーザのネットワークサービスやコンテンツへの依存度が高まるコネクテッド社会になってきている。このインターネット接続革命は、サービスコンテンツプロバイダに重大な課題をもたらしており、サービスコンテンツプロバイダは、しばしば、ユーザのパフォーマンスの期待を下回ることなく大量のユーザ要求を処理するのに困難を抱えている。例えば、クラウドプロバイダは通常、ユーザからのネットワークとコンテンツの要求に対応するために、大規模で複雑なデータセンターを必要とする。これらのデータセンターには通常、特定のサービスをホストするように構成されたサーバファームが備えられており、これにはデータセンターとの間でトラフィックをルーティングするように構成された多数のスイッチとルータが含まれる。多くの場合、特定のデータセンターにより数百万のトラフィックフローとサービスリクエストを処理することが期待される。
【０００４】
同様に、企業などのプライベートエンティティによってホストされるプライベートネットワークも、コンピューティングリソースとパフォーマンスに対する需要が高まっている。このような増大する需要を満たすために、プライベートネットワークは、パブリッククラウドプロバイダからコンピューティングリソースとサービスを頻繁に購入する。例えば、プライベートエンティティは、パブリッククラウドプロバイダ上に仮想プライベートクラウドを作成し、仮想プライベートクラウドをプライベートネットワークに接続して、利用可能なコンピューティングリソースと機能を拡張することができる。このような仮想プライベートクラウドは、特定のプロバイダクラウドまたはクラウドリージョンで作成され得る。プライベートエンティティは、近接性、コスト、パフォーマンス、サービスなどに基づいて、仮想プライベートクラウドを確立する場所を選択することができる。残念ながら、プライベートエンティティに利用可能なクラウドプロバイダとリージョンの数が増え続ける一方で、異なるクラウドプロバイダおよびリージョンによって実装されるツールセット、アーキテクチャ、およびアプリケーションプログラミングインターフェース（ＡＰＩ）の統一性の欠如により、異なるクラウドプロバイダまたはリージョンに仮想プライベートクラウドを展開することを望むエンティティに重大な課題がもたらされている。多くの場合、エンティティは、異なるクラウドプロバイダまたはリージョンに接続すること、あるいは様々なクラウドプロバイダまたはリージョン間の相互接続を維持することが不可能である。多くの場合、クラウド間またはリージョン間の接続を確立することは非常に困難であり、多大な時間を要する構成作業が必要であり、特定のネットワークデバイスまたは専用インフラストラクチャが必要であり得る。
【図面の簡単な説明】
【０００５】
本開示の上記および他の利点および特徴を得ることができる様式を説明するために、添付の図面に示されるその特定の実施形態を参照することにより、上記で簡単に説明した原理のより具体的な説明を行う。これらの図面が本開示の例示的な実施形態のみを描写し、したがって、その範囲を限定すると見なされるべきではないことを理解して、本明細書の原理は、以下の添付の図面を使用することにより、追加の特定事項および詳細と共に記載および説明される。
【図１】マルチクラウド環境において１つ以上のクラウドによって実装され得る例示的なクラウドデータセンターアーキテクチャ１００の図を示す。
【図２】ＳＲｖ６オーバーレイを備える例示的なマルチクラウド環境の図を示す。
【図３Ａ】例示的なＩＰｖ６およびＳＲｖ６パケットを示す。
【図３Ｂ】ＩＰｖ６およびＳＲｖ６ヘッダの例示的な宛先フィールドの概略図を示す。
【図４】対応するＩＰｖ６およびＳＲｖ６ヘッダに基づくＳＲｖ６トラフィックの例示的なフローを示す。
【図５Ａ】図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境で仮想プライベートクラウド（ＶＰＣ）を作成するための例示的なコンポーネントとインタラクションの図を示す。
【図５Ｂ】図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境でＶＰＣを作成および相互接続するための例示的なシナリオを示す。
【図５Ｃ】図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境でＶＰＣを作成および相互接続するための例示的なシナリオを示す。
【図５Ｄ】図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境でＶＰＣを作成および相互接続するための例示的なシナリオを示す。
【図５Ｅ】図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境でＶＰＣを作成および相互接続するための例示的なシナリオを示す。
【図６】例示的なサービスチェイニングトラフィックフローを示しており、図２に示すマルチクラウド環境など、ＳＲｖ６オーバーレイを備えるマルチクラウド環境でＶＰＣ上のノードを介してＳＲｖ６オーバーレイ上でパケットがステアリングされる。
【図７】ＳＲｖ６とＢＧＰを介してマルチクラウド接続を確立する例示的な方法を示す。
【図８】様々な実施形態による例示的なネットワークデバイスを示す。
【図９】様々な実施形態による例示的なコンピューティングデバイスを示す。
【発明を実施するための形態】
【０００６】
本開示の様々な実施形態について、以下で詳細に考察する。特定の実装形態について考察するが、これは例証のみを目的として行われることを理解されたい。関連技術の当業者は、本開示の趣旨および範囲から離れることなく、他の構成要素および構成を使用することができることを認識するであろう。
【０００７】
概要
本開示の追加の特徴および利点は、以下の説明に記載され、一部は説明から明らかであるか、または本明細書に開示された原理の実践によって学ぶことができる。本開示の特徴および利点は、添付の特許請求の範囲で特に指摘されている機器および組み合わせによって実現および取得することができる。本開示のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または本明細書に記載の原理の実践によって学ぶことができる。
【０００８】
本明細書では、ＳＲｖ６を使用してクラウド間の接続を確立および管理するためのシステム、方法、およびコンピュータ可読媒体が開示される。一部の例では、方法は、プライベートネットワークと、プライベートネットワークに接続された１つ以上の仮想プライベートクラウド（ＶＰＣ）と、を含むマルチクラウド環境に、１つ以上のＶＰＣおよびプライベートネットワーク上のセグメントルーティング（ＳＲ）ドメイン（例えば、ＳＲｖ６オーバーレイ）およびそれぞれの仮想ルータを介して、新しいＶＰＣを追加することを含むことができる。本方法は、新しいＶＰＣ上に、新しいＶＰＣの着信および発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、新しい仮想ルータを新しいＶＰＣ上に展開した後、プライベートネットワークに関連付けられたボーダーゲートウェイプロトコル（ＢＧＰ）コントローラに仮想ルータを登録することと、を含むことができる。本方法は、ＢＧＰコントローラと新しい仮想ルータとの間の接続を確立することと、ＢＧＰコントローラで、新しい仮想ルータから、新しいＶＰＣに関連付けられたトポロジ情報を受信することと、を含むことができる。
【０００９】
本方法は、トポロジ情報に基づいて計算された１つ以上のパスに基づいてマルチクラウド環境内のルートを識別することをさらに含むことができる。１つ以上のパスは、プライベートネットワークと、１つ以上のＶＰＣと、新しいＶＰＣとの間のそれぞれのパスであり得る。場合によっては、１つ以上のパスは、トポロジ情報に基づいてパス計算エンジンによって計算された最適なパスであり得る。ルートが特定されると、ＢＧＰコントローラはマルチクラウド環境を介して通信するためのルーティング情報を新しい仮想ルータに送信できる。ルーティング情報には、マルチクラウド環境に関連付けられたルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含めることができる。本方法は、ルーティング情報に基づいて、セグメントルーティングドメイン、それぞれの仮想ルータ、および新しい仮想ルータを介して、プライベートネットワークと、１つ以上のＶＰＣと、新しいＶＰＣとの間の相互接続を提供することをさらに含むことができる。例えば、それぞれの仮想ルータおよび新しい仮想ルータは、ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを使用して、マルチクラウド環境全体にトラフィックをルーティングすることができる。それぞれの仮想ルータおよび新しい仮想ルータは、トラフィックをセグメントルーティングドメイン上の宛先にステアリングするために、セグメントルーティング識別子を使用することができるＳＲｖ６対応ノードであり得る。
【００１０】
例示的な実施形態の説明
開示された技術は、クラウド間の接続を確立および管理するための効率的でユーザフレンドリなストラテジを提供する。本技術は、ＩＰｖ６（以下「ＳＲｖ６」）およびボーダーゲートウェイプロトコル（ＢＧＰ）を介したセグメントルーティング（ＳＲ）を使用するマルチクラウド接続のためのシステム、方法、およびコンピュータ可読媒体を含む。本技術は、以下の開示において以下のように説明される。ＳＲｖ６とＩＰｖ６の概要から考察を始める。図１と図２に示すように、クラウドデータセンターアーキテクチャの例とＳＲｖ６オーバーレイを備えるマルチクラウド環境の例、ならびに、図３〜７に示すようにＳＲｖ６とＢＧＰを使用するマルチクラウド接続ストラテジと例について説明する。考察は、図８に示されるように例示的なネットワークデバイス、およびソフトウェアアプリケーションをホストし、コンピューティング操作を実行するのに好適な例示的なハードウェアコンポーネントを含む、図９に示されるように例示的なコンピューティングデバイスの説明で終了する。ここで、本開示はＩＰｖ６とＳＲｖ６の概要の考察に移る。
【００１１】
本明細書のアプローチは、セグメントルーティング（ＳＲ）を利用して、異なるクラウドまたはクラウドリージョン上のサーバまたはノードに向けて接続または通信要求をステアリングすることができる。以下でさらに説明されるＩＰｖ６とＳＲは、状態情報を制限しながら、要求を効率的にステアリングするために使用され得る。要求は、ＩＰｖ６およびＳＲｖ６ヘッダに基づいてＳＲパケットで識別されたノードにルーティングされる。ＩＰｖ６ヘッダには、送信元アドレス（ＳＡ）と宛先サーバまたはノードなどの宛先アドレス（ＤＡ）を含めることができる。ＳＲヘッダには、ＳＲノード（Ｓ１、Ｓ２、Ｓ３など）のリストと、残りの宛先サーバまたはノードの数を識別するセグメントレフト（ＳＬ）カウンタを含めることができる。
【００１２】
ＩＰｖ６環境
ＩＰｖ６セントリックデータセンターなどのＩＰｖ６環境では、ＩＰｖ６物理プレフィックスを介してサーバにアクセスすることができる。サーバは、ＩＰｖ６仮想アドレス（ＶＩＰ）を割り当てられ得る仮想マシン（ＶＭ）またはソフトウェアコンテナなどの隔離環境でアプリケーションサービスを実行することができる。場合によっては、仮想スイッチ（Ｏｐｅｎ  ｖＳｗｉｔｃｈ、ベクターパケット処理など）をサーバに展開して、サーバ上の物理インターフェースと仮想インターフェースとの間でパケットをルーティングすることができる。これにより、ＶＬＡＮまたはＶＸＬＡＮなどのレイヤ２トンネルを展開することなく、ネットワーク（データセンターなど）を完全にレイヤ３でルーティングすることが可能になる。
【００１３】
データセンターで実行されている異なるアプリケーションに対応するＶＩＰのルーティングは、複数の様式で実現することができる。一部の例では、仮想スイッチはインテリアゲートウェイプロトコル（ＩＧＰ）を実行して、ＶＩＰに直接ルートを伝播することができる。他の例では、ＩＰｖ６用の識別子−ロケータアドレス指定などのモビリティプロトコルを使用することができ、この場合、エッジルータは、物理アドレスと仮想アドレスとの間の変換を実行する。さらに、ネットワークデバイスは、ボーダーゲートウェイプロトコル（ＢＧＰ）を使用してルーティング情報を交換することができる。以下でさらに説明するように、本明細書のアプローチは、クラウド間の接続を確立および管理するためのセグメントルーティングを実装する。
【００１４】
セグメントルーティング（ＳＲ）
ＳＲは、当初はトラフィックエンジニアリング用に設計されたソースルーティングパラダイムであり、ＳＲドメイン内で、セグメントのリストによって定義された所定のパスをパケットがたどることを可能にする。本明細書のアプローチは、ＳＲｖ６アーキテクチャとＩＰｖ６接続を活用して、マルチクラウド接続を効率的に作成および管理する。
【００１５】
ＳＲｖ６とＩＰｖ６は、ＩＰｖ６パケットにＩＰｖ６ヘッダとＳＲｖ６ヘッダを実装することで一緒に活用され得る。例えば、場合によっては、ＩＰｖ６拡張ヘッダを実装して、ＳＲ用のセグメントのリストと、パケットの最終宛先が到達するまで処理される残りのセグメントの数を示すカウンタであるセグメントレフトを識別することができる。ＳＲｖ６パケットでは、ＩＰｖ６宛先アドレスを次のセグメントのアドレスで上書きすることができる。このようにして、パケットは、次の目的のＳＲホップに到達するまで、ＳＲ対応ルータを通過することができる。ＳＲｖ６パケットを受信すると、ＳＲ対応ルータは宛先アドレスを次のセグメントのアドレスに設定し、セグメントレフトカウンタを減少させる。パケットが最後のＳＲホップに到達すると、パケットの最終宛先がＩＰｖ６宛先アドレスフィールドにコピーされる。ヘッダ内のフラグの値に応じて、ＳＲｖ６ヘッダは、宛先がｖａｎｉｌｌａ  ＩＰｖ６パケットを受信するように最後のＳＲホップにより削除され得る。
【００１６】
図１は、マルチクラウド環境において１つ以上のクラウドによって実装され得る例示的なクラウドデータセンターアーキテクチャ１００の図を示す。クラウドデータセンターアーキテクチャ１００は、クラウド１０４を含むことができ、クラウド１０４は、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、仮想プライベートクラウド（ＶＰＣ）、クラウドリージョンなどであり得る。クラウド１０４は、１つ以上のデータセンターおよび／またはネットワークをホストすることができる。例えば、クラウド１０４は、単一のデータセンターまたは複数のデータセンターを含むことができる。クラウド１０４は、物理的に１つの地理的場所に配置されるか、または多数の地理的場所の至る所に分散され得る。さらに、クラウド１０４は、フォワーダ側およびサーバ側のアーキテクチャまたはコンポーネントを含むことができる。
【００１７】
クラウド１０４は、クラウドデータセンターアーキテクチャ１００内のトラフィックをルーティングするように構成された１０６−１〜１０６−Ｎ（以下、総称して「１０６」）および１０８−１〜１０８−Ｎ（以下、総称して「１０８」）を切り替える。スイッチ１０６、１０８は、レイヤ２（Ｌ２）機能および／またはレイヤ３（Ｌ３）機能を備える任意のネットワークデバイスを含むことができる。この例では、スイッチ１０６はスパインスイッチを表し、スイッチ１０８はリーフスイッチを表す。
【００１８】
クライアント１０２は、クラウド１０４に接続し、スイッチ１０６、１０８を介してアプリケーションサーバ１１０−１〜１１０−Ｎ（以下、総称して「１１０」）にアクセスすることができる。クライアント１０２は、クラウドネットワークもしくはデータセンター（例えば、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、クラウドリージョンまたはセグメント、仮想プライベートクラウドなど）などのネットワーク、あるいはラップトップ、デスクトップ、タブレットコンピュータ、携帯電話、サーバ、スマートデバイス（スマートテレビ、スマートウォッチなど）、モノのインターネット（ＩｏＴ）デバイスなどの任意のコンピューティングデバイスであり得る。
【００１９】
スイッチ１０６は、クラウド１０４内のエッジデバイスとして機能し、クラウド１０４との間でトラフィックをルーティングすることができる。したがって、スイッチ１０６は、クラウド１０４の出口点および入口点として機能することができる。スイッチ１０６はまた、クラウド１０４内のスイッチ１０８にトラフィックをルーティングすることができ、クラウド１０４内の他のノード（例えば、アプライアンス、ファイアウォール、ロードバランサなど）およびアプリケーションサーバ１１０にトラフィックをルーティングすることができる。
【００２０】
アプリケーションサーバ１１０は、クラウド１０４内のアプリケーション、隔離環境、またはサービスをホストする物理マシンおよび／またはリソースを表すことができる。例えば、アプリケーションサーバ１１０は、クラウド１０４内で様々なアプリケーションを実行する物理サーバであり得る。アプリケーションサーバ１１０は、ＶＭまたはソフトウェアコンテナなどの隔離環境でそれらのアプリケーションの一部または全てを実行することができる。場合によっては、アプリケーションは、クラウド１０４内の複数のアプリケーションサーバ１１０によってホストされ、および／またはその上で実行され得る。例えば、複数のアプリケーションサーバ１１０は、アプリケーションのインスタンス（例えば、仮想インスタンス、レプリカ、並列インスタンス、ミラーインスタンスなど）を実行することができる。
【００２１】
アプリケーションサーバ１１０は、他のデバイスまたはサービス（例えば、クラウドデータセンターアーキテクチャ１００内のデバイスまたはサービス）と通信するための物理ネットワークインターフェース（例えば、ＮＩＣ）を含むことができる。物理ネットワークインターフェースには、このような通信用の物理プレフィックスまたはネットワークアドレスを割り当てることができる。アプリケーションサーバ１１０はまた、ネットワークインターフェースおよび接続の仮想化または抽象表現を提供することができる１つ以上の仮想インターフェース（例えば、ｖＮＩＣ）を含むことができる。仮想インターフェースは、追加の柔軟性とネットワーク機能に加えて、リンクまたはデータの集約、データまたはネットワークの分離、アプリケーションとシステムトラフィックの分離、ネットワークインターフェースの拡張、ネットワーク冗長性、専用リンクなど、他の様々な利点またはサービスを提供することができる。仮想インターフェースは、クラウド１０４内の仮想アドレス（例えば、ＶＩＰ）に割り当てることができる。仮想アドレスは、仮想インターフェース、ならびにアプリケーションサーバ１１０上の仮想アドレスに関連付けられた任意のアプリケーションまたは隔離環境を識別することができる。
【００２２】
例えば、アプリケーションは、クラウド１０４内の仮想アドレスを割り当てることができ、これを使用して、クラウド１０４内のアプリケーションを識別し、アプリケーションとの間でトラフィックをルーティングすることができる。仮想アドレスを使用して、１つ以上のアプリケーションサーバ１１０上で実行されているアプリケーションの仮想インスタンスとの間でトラフィックをステアリングすることができる。場合によっては、仮想アドレスは、複数のアプリケーションサーバ１１０上の同じアプリケーションにマッピングすることができ、複数のアプリケーションサーバ１１０のうちのいずれか上のアプリケーションのインスタンスと通信するために使用することができる。
【００２３】
場合によっては、アプリケーションサーバ１１０は、ＯＶＳまたはＶＰＰなどの仮想スイッチを含むことができ、これは、アプリケーションサーバ１１０との間でトラフィックをルーティングすることができる。例えば、仮想スイッチは、アプリケーションサーバ上の物理ネットワークインターフェースと仮想ネットワークインターフェースとの間、アプリケーションサーバ上のアプリケーション間および／または分離環境間、およびアプリケーションサーバとアプリケーションサーバ外のデバイスまたはアプリケーションとの間でトラフィックをルーティングすることができる。例えば、アプリケーションサーバは、異なる仮想インターフェースと仮想アドレスに割り当てられた複数のワークロード（例えば、異なるＶＭまたはコンテナ内のアプリケーション）を実行することができる。アプリケーションサーバ上の仮想スイッチは、ワークロードの仮想アドレスを変換し、仮想インターフェース、ならびにアプリケーションサーバ上の物理ネットワークインターフェースなどの他のネットワークインターフェースと通信することにより、異なるワークロードとの間でトラフィックをルーティングすることができる。
【００２４】
図２は、ＳＲｖ６オーバーレイ２０２を備える例示的なマルチクラウド環境２００の図を示す。マルチクラウド環境２００は、ＳＲｖ６を使用してクラウド１０４Ａ〜Ｇ間でトラフィックをルーティングするＳＲｖ６オーバーレイ２０２を介して相互接続されたクラウド１０４Ａ〜Ｇを含む。この例では、クラウド１０４Ａはプライベートクラウドまたはサイトを表し、クラウド１０４Ｂ〜Ｇはパブリッククラウドを表す。さらに、クラウド１０４Ｂ、１０４Ｃ、１０４Ｄは、クラウド１０４Ａ用に構成され、クラウド１０４Ｂ、１０４Ｃ、１０４Ｄによってホストされる仮想プライベートクラウド（ＶＰＣ）２０６、２０８、２１０を含む。この例に示されるように、クラウド１０４Ｅ〜Ｇには、クラウド１０４Ａに関連付けられたＶＰＣは含まれない。ただし、以下で説明するように、本明細書のアプローチにより、クラウド１０４Ｅ〜Ｇのいずれかでクラウド１０４Ａ用にＶＰＣを作成することが可能になり得る。
【００２５】
コントローラ２１２は、クラウド１０４Ａ〜Ｇ上のゲートウェイ２１６Ａ〜Ｇとインタラクションして、トポロジ情報を収集し、パス計算を実行し、クラウド１０４Ａ〜Ｇおよび／またはＶＰＣ２０６〜２１０を介してルートを伝播し、セグメントルーティング識別子（ＳＩＤ）およびポリシーをクラウド１０４Ａ〜Ｇならびに／またはＶＰＣ２０６〜２１０に伝播し、トラフィックエンジニアリングなどを実行することができる。コントローラ２１２は、例えば、パス計算エンジンを備えるＢＧＰコントローラであり得る。コントローラ２１２は、クラウド１０４Ａまたは任意の他のネットワークもしくはクラウド上に常駐することができる。ゲートウェイ２１６Ａ〜Ｇは、例えば、クラウド１０４Ａ〜Ｇで利用可能な仮想ゲートウェイであり得る。場合によっては、仮想ゲートウェイにベクターパケット処理エンジン（ＶＰＰ）を含めることができる。
【００２６】
コントローラ２１２は、クラウド１０４Ａ〜Ｇおよび／またはＶＰＣ２０６〜２１０からトポロジ情報を収集し、ＯＳＰＦ（オープン・ショーテスト・パス・ファースト）、ＩＳ−ＩＳ（インターミディエイト・システム・トゥ・インターミディエイト・システム）、ＢＧＰリンクステート（ＢＧＰ−ＬＳ）、ＢＧＰトラフィックエンジニアリング（ＢＧＰ−ＴＥ）などの１つ以上のプロトコルを使用して、転送ルールおよびＳＲ  ＩＤ（例えば、ＳＩＤ）およびポリシーを伝播することができる。例えば、コントローラ２１２は、ＢＧＰ−ＬＳプロトコルを使用して、ゲートウェイ２１６Ａ〜Ｇからクラウド１０４Ａ〜Ｇおよび／またはＶＰＣ２０６〜２１０のトポロジ情報を収集することができる。コントローラ２１２はまた、ゲートウェイ２１６Ａ〜Ｇ間の最良のパスを計算するためのパス計算エンジン（ＰＣＥ）を含むことができる。コントローラ２１２は、収集されたトポロジおよび／またはクラウド情報を使用して、パス計算を実行することができる。次に、コントローラ２１２は、ＢＧＰ−ＴＥを使用して、ゲートウェイ２１６Ａ〜Ｇ上に、転送ルールおよびＳＲ  ＩＤおよびポリシーなどの到達可能性情報を取り込むことができる。
【００２７】
ゲートウェイ２１６Ａ〜Ｇは、ＢＧＰ−ＬＳおよびＢＧＰ−ＴＥとインターフェースして、コントローラ２１２から転送ルールおよびＳＲ  ＩＤポリシーを受信する制御プレーンを含むことができる。ゲートウェイ２１６Ａ〜Ｇはまた、ＩＰｖ４および／またはＩＰｖ６パケットを処理し、ＩＰｖ４またはＩＰｖ６パケットをＳＲｖ６パケットにカプセル化／カプセル化解除し得るデータプレーンを含むことができる。さらに、ゲートウェイ２１６Ａ〜Ｇは、コントローラ２１２または任意のＢＧＰピアとインタラクションするために、ＧｏＢＧＰエージェントなどのＢＧＰエージェント２１８Ａ〜Ｇを含むことができる。場合によっては、ゲートウェイ２１６Ａ〜Ｇは、ネットワークパフォーマンス情報を収集し、ゲートウェイ２１６Ａ〜Ｇ間のサービス品質（ＱＯＳ）を監視するために、ＩＰＳＬＡ（インターネット・プロトコル・サービス・レベル・アグリーメント）に基づくアクティブな測定システムを含むこともできる。
【００２８】
コントローラ２１２は、ＩＰｖ４またはＩＰｖ６を介してクラウド１０４Ａ〜Ｇと通信することができる。ＳＲｖ６オーバーレイ２０２は、以下でさらに説明されるように、ＳＲｖ６を使用してＳＲｖ６オーバーレイ２０２上にトラフィックをルーティングすることができるＳＲｖ６対応ノードを含むことができる。
【００２９】
図３Ａは、ＳＲｖ６オーバーレイ２０２を介してルーティングされたトラフィックのための例示的なＳＲｖ６パケット３００を示す。ＳＲｖ６パケット３００は、ペイロード３０２、ＩＰｖ６ヘッダ３０４、およびＳＲヘッダ３０６を含む。ＳＲヘッダ３０６は、セグメント３１４のリストまたはＳＲリストを含むセグメントフィールド３１２を含むことができる。セグメント３１４のリストは、ＳＲｖ６パケット３００の宛先ノードのセットを含むことができる。例えば、セグメント３１４のリストは、図１に示されるクラウド１０４からのアプリケーションサーバ１１０−１（Ｓ１）およびアプリケーションサーバ１１０−２（Ｓ２）を含むことができる。セグメント３１４のリスト内の宛先ノードは、１つのクラウド（例えば、１０４）または複数のクラウド（例えば、１０４Ａ〜Ｇ）上に存在することができる。セグメント３１４のリストはまた、図３Ｂを参照して以下でさらに説明するように、各セグメント用のそれぞれの関数を含むことができる。
【００３０】
ＳＲヘッダ３０６内のセグメント３１４のリストは、ＳＲｖ６オーバーレイ２０２内のノードによって使用されて、パケット３００をセグメント３１４のリスト内の宛先ノード（例えば、アプリケーションサーバ１１０−１および１１０−２）にステアリングすることができる。セグメント３１４のリストは、パケットのパスに沿った各セグメント（例えば、ＳＲｖ６対応ノード）を識別する。各ＳＲｖ６対応ノードは、ノードでインスタンス化されたＳＲｖ６セグメントのリストを維持することができる。ＳＲｖ６対応ノードは、ＳＲｖ６セグメントのリストを使用して、パケットをセグメントリスト３１４内の次のセグメントにルーティングすることができる。
【００３１】
セグメントフィールド３１２はまた、アクティブなセグメントを識別する、セグメントレフトとして知られるカウンタ３１８を含むことができる。カウンタ３１８の値は、パケットがＩＰｖ６ネットワークを通過するにつれてＳＲｖ６対応ノードによって受信されるたびに１ずつ減少する。
【００３２】
ＩＰｖ６ヘッダ３０４は、送信元アドレスフィールド３１０および宛先アドレスフィールド３０８を含むことができる。送信元アドレスフィールド３１０は、クライアント１０２などのパケット３００の送信元を識別することができる。送信元アドレスフィールド３１０は、パケット３００の元の送信元のネットワークアドレス、パケット３００の戻り宛先、および／またはパケット３００の現在の送信元または送信者を含むことができる。ソースフィールド３１０はまた、以下でさらに説明するように、ソースフィールド３１０で識別されるノードによって実装されるコマンドまたは関数を含むことができる。
【００３３】
宛先アドレスフィールド３０８は、セグメント３１４のリストから次のセグメントまたはノードを識別することができる。この例では、宛先アドレスフィールド３０８は、パケット３００のセグメント３１４のリストにおける最初の宛先ノードであるサーバ１１０−１（Ｓ１）を識別する。宛先アドレスフィールド３０８は、パケット３００を次の宛先にステアリングするために使用することができる。ＩＰｖ６ヘッダ３０４の宛先フィールド３０８は、パケット３００がＳＲ非認識ノードを通過する場合でも、パケット３００をルーティングすることを可能にすることができる。
【００３４】
宛先アドレスフィールド３０８は、識別されたノードまたはセグメントのネットワークプレフィックスを含むことができる。例えば、宛先アドレスフィールド３０８は、サーバ１１０−１（Ｓ１）の物理プレフィックスを含むことができる。これは、パケット３００が、パケット３００の最初の宛先として、そのノードまたはセグメント（例えば、サーバ１１０−１（Ｓ１））に送信されることを確実にし得る。サーバ１１０−１（Ｓ１）がパケット３００を処理した後、サーバ１１０−１（Ｓ１）は、パケット３００をセグメント３１４のリスト内の次のセグメント（この例ではサーバ１１０−２（Ｓ２））に転送することができる。パケットを転送するとき、サーバ１１０−１（Ｓ１）は、ＩＰｖ６ヘッダ３０４上の宛先アドレスフィールド３０８を上書きして、サーバ１１０−２（Ｓ２）を宛先として識別することができ、これにより、パケット３００がサーバ１１０−２（Ｓ２）にルーティングされることが確実となる。次に、サーバ１１０−２（Ｓ２）は、宛先アドレスフィールド３０８に基づいてパケット３００を受信することができる。このようにして、ＳＲヘッダ３０６内のセグメント３１４のリスト、およびＩＰｖ６ヘッダ３０４内の宛先アドレスフィールド３０８を使用して、パケット３００をセグメント３１４のリスト内の宛先ノードにプッシュすることができる。
【００３５】
さらに説明されるように、セグメント３１４および／または宛先アドレスフィールド３０８のリストは、関連するノードまたはセグメントによって実装される関数またはコマンド（以下、「ＳＲ関数」）を含むことができる。例えば、宛先アドレスフィールド３０８は、アプリケーションサーバ１１０−１（Ｓ１）を識別し、アプリケーションサーバ１１０−１（Ｓ１）がその関数に関連付けられたアプリケーションまたはノードに接続するための要求として解釈することができる接続関数など、アプリケーションサーバ１１０−１（Ｓ１）によって適用される関数を含むことができる。宛先アドレスフィールド３０８は、パケットの次の宛先、送信元または戻りノード、およびそのようなノードまたはセグメントのための任意のコマンドまたは関数を含む、パケット３００の状態を含むことができる。
【００３６】
同様に、セグメント３１４のリストは、セグメント３１４のリスト内のセグメントのためのコマンドまたは関数を含むことができる。例えば、セグメント３１４のリストは、宛先ノードまたはセグメントの各々の接続関数、セグメント３１４のリストの最後のセグメントの強制接続関数、１つ以上のセグメント（例えば、リソース識別子、フロー識別子など）、状態情報などのための１つ以上のパラメータを含むことができる。
【００３７】
ＳＲ関数は、ノードによるアクションを、ＳＲヘッダ３０６および／またはＩＰｖ６ヘッダ３０４に直接コード化することができる。ＳＲ関数は、ＳＲｖ６対応ノードによってローカルで実行される。ＳＲ関数の例には、Ｅｎｄ（つまり、エンドポイント関数）、Ｅｎｄ．Ｘ（つまり、レイヤ３クロスコネクトを備えるエンドポイント関数）、Ｅｎｄ．Ｔ（つまり、特定のＩＰｖ６テーブルルックアップを備えるエンドポイント関数）、Ｅｎｄ．Ｓ（つまり、テーブルＴ内のターゲットを検索するエンドポイント）、Ｅｎｄ．Ｂ６（つまり、ＳＲｖ６ポリシーにバインドされたエンドポイント）などが含まれるが、これらに限定されない。例えば、ｓ：：ｃｊを含むＳＲヘッダ（３０６）では、ｓ：：ｃｊはノードｓへの最短パスを示し、隣接ｊへのｘ接続関数（関数ｃ）を示す。
【００３８】
一部の例では、各ノードにＩＰｖ６プレフィックス全体を割り当てることができる。したがって、プレフィックスの下位バイトを使用して、異なるＳＲ関数を指定することができる。場合によっては、ＳＲ関数は、セグメント３１４のリスト内の最初のセグメントのアドレス（例えば、関数の「送信者」）に依存し得る。例として、物理プレフィックスがｓであるノードが、（ｘ、．．．、ｓ：：ｆ、．．．）を含むＳＲヘッダ３０６を含むパケットを受信すると、ＳＲヘッダ３０６は、ノードｓをトリガーして、ｓ．ｆ（ｘ）で示される引数ｘを有する関数ｆを実行する。
【００３９】
図３Ｂは、ＩＰｖ６ヘッダ３０４における例示的な宛先アドレスフィールド３０８の概略図を示す。宛先アドレスフィールド３０８は、１２８ビットを含むことができ、これは、ノードプレフィックス３２６の最初の６４ビットからの第１のセグメント３２０、ＳＲ関数３２８の次の３２ビットからの第２のセグメント３２２、およびＳＲ関数３２８のための任意の引数３３０を含む、次の３２ビットからの第３のセグメント３２４を含むようにセグメント化することができる。この例は、６４ビットのセグメント、３２ビットのセグメント、および３２ビットのセグメントにセグメント化された宛先アドレスフィールド３０８を示しているが、宛先アドレスフィールド３０８は、柔軟なビット選択を可能にし、これにより、他の方式でセグメント化され得ることに留意されたい。図３Ｂの例は、例証および説明の目的で提供される。
【００４０】
ノードプレフィックス３２６は、次のセグメントまたはノードの物理プレフィックスを含むことができる。ＳＲ関数３２８は、ノードプレフィックス３２６に関連付けられたコマンドまたは関数を含むことができる。場合によっては、第３のセグメント３２４は、ＳＲ関数３２８の引数を含むことができるサブセグメントにさらにセグメント化され得る。引数を使用して、ＳＲ関数３２８の特定のパラメータを渡すことができる。
【００４１】
図４は、対応するＩＰｖ６およびＳＲｖ６ヘッダ４０４、４０６、４０８に基づく、ＳＲｖ６トラフィック（例えば、ＳＲｖ６パケット３００）の例示的なフローを示す。この例では、クライアント１０２は、パケット４０２をスイッチ１０８−Ｎに送信する。パケット４０２は、クライアントデバイス１０２をトラフィックの送信元および宛先アドレスとして識別することができる。
【００４２】
スイッチ１０８−Ｎは、パケット４０２を受信し、ＩＰｖ６およびＳＲｖ６ヘッダ４０４に基づいて、パケットをアプリケーションサーバ１１０−１（Ｓ１）に転送することができる。ヘッダ４０４内のＳＲｖ６ヘッダは、宛先セグメントとしてアプリケーションサーバ１１０−１、１１０−２、１１０−３を識別するセグメント４１０のリストを含むことができる。ＳＲｖ６ヘッダは、ヘッダ４０４内に、セグメント４１０のリスト内の残りのセグメントまたはホップの数を識別するセグメントレフト（ＳＬ）カウンタ４１２を含むこともできる。
【００４３】
アプリケーションサーバ１１０−１（Ｓ１）は、スイッチ１０８−Ｎからパケット４０２を受信し、それを処理することができる。次に、アプリケーションサーバ１１０−１（Ｓ１）は、ヘッダ４０６内のセグメント４１０のリストに基づいて、セグメント４１０のリスト内の次のセグメントであるアプリケーションサーバ１１０−２（Ｓ２）にパケット４０２を転送することができる。アプリケーションサーバ１１０−１（Ｓ１）はまた、セグメント４１０のリスト内の残りのセグメントまたはホップの数を識別するＳＬカウンタ４１２を減少させることができる。
【００４４】
アプリケーションサーバ１１０−２（Ｓ２）は、アプリケーションサーバ１１０−１（Ｓ１）からパケット４０２を受信し、それを処理することができる。次に、アプリケーションサーバ１１０−２（Ｓ２）は、ヘッダ４０８内のセグメント４１０のリストに基づいて、セグメント４１０のリスト内の次のセグメントであるアプリケーションサーバ１１０−３（Ｓ３）にパケット４０２を転送することができる。アプリケーションサーバ１１０−２（Ｓ２）はまた、セグメント４１０のリスト内の残りのセグメントまたはホップの数を識別するＳＬカウンタ４１２を減少させることができる。
【００４５】
アプリケーションサーバ１１０−３（Ｓ３）は、アプリケーションサーバ１１０−２（Ｓ２）からパケット４０２を受信し、それを処理することができる。アプリケーションサーバ１１０−３（Ｓ３）は、セグメント４１０のリストの最後のセグメントである。したがって、アプリケーションサーバ１１０−３（Ｓ３）は、パケットを別の宛先セグメントに転送することなく、セグメント４１０のリスト内の残りのセグメントまたはホップの数を識別するＳＬカウンタ４１２を減少させることができる。
【００４６】
図５Ａは、図２に示されるマルチクラウド環境２００など、ＳＲｖ６オーバーレイ２０２を備えるマルチクラウド環境上のクラウド１０４Ｂおよび１０４ＣにＶＰＣを作成するための例示的なコンポーネントとインタラクションの図５００を示す。この例では、クラウド１０４ＢはクラウドプロバイダＡの東部リージョンのクラウドを表し、クラウド１０４ＣはクラウドプロバイダＢに関連付けられたクラウドを表す。ＶＰＣ２０６および２０８は、クラウド１０４Ｂおよび１０４Ｃ上のクラウド１０４Ａ（例えば、エンタープライズネットワークまたはプライベートクラウド）に関連付けられたクライアント用に作成される。ＶＰＣ２０６および２０８は、クラウド１０４Ａに、かつお互いに、相互接続することができる。さらに、ＶＰＣ２０６および２０８は、クラウド１０４Ｂおよび１０４Ｃでホストされるクラウド１０４Ａの仮想拡張として機能することができる。
【００４７】
クラウド１０４Ａに関連付けられたクライアントがクラウド１０４Ｂおよび１０４Ｃ上に新しいＶＰＣ（例えば、ＶＰＣ２０６および２０８）を作成するとき、スクリプトまたはプログラムをトリガー／呼び出して、ゲートウェイ２１６Ｂおよび２１６Ｃならびにエージェント２１８Ｂおよび２１８Ｃをクラウド１０４Ｂおよび１０４Ｃ上に展開することができる。各クラウドプロバイダ（例えば、クラウド１０４Ｂおよび１０４Ｃ）は、そのような展開を可能にするために特定のアプリケーションプログラミングインターフェース（ＡＰＩ）を有することができる。ゲートウェイ２１６Ｂおよび２１６Ｃならびにエージェント２１８Ｂおよび２１８Ｃは、クラウド１０４Ｂおよび１０４Ｃ上のＶＭまたはノード（例えば、サーバ、ソフトウェアコンテナなど）に展開することができる。場合によっては、ゲートウェイ２１６Ｂおよび２１６Ｃならびにエージェント２１８Ｂおよび２１８Ｃは、クラウド１０４Ｂおよび１０４Ｃに関連付けられたクラウドマーケットプレイスからのＶＭで展開することができる。
【００４８】
ゲートウェイ２１６Ｂおよび２１６Ｃは、ＶＰＣ（例えば、２０６および２０８）との間で通信されるトラフィックのためのレイヤ３（Ｌ３）ルータとして操作することができる。展開されると、ゲートウェイ２１６Ｂおよび２１６Ｃならびにエージェント２１８Ｂおよび２１８Ｃは、それら自体をコントローラ２１２にアナウンスおよび登録することができる。コントローラ２１２のアドレスは、ＳａａＳ（サービスとしてのソフトウェア）モデルの場合には事前に構成することができ、またはクライアントが独自のコントローラを操作したい場合はクライアントによって手動で定義することができる。
【００４９】
コントローラ２１２は、新しく作成されたゲートウェイ（２１６Ｂ〜Ｃ）をコントローラ２１２への接続を許可されているかどうかをチェックすることができる。異なる価格設定モデル（例えば、ＢＧＰコントローラごとの仮想ゲートウェイの同時数の制限など）に依存し得る様々なポリシーを検討することができる。コントローラ２１２との接続が確立されると、ゲートウェイ２１６Ｂおよび２１６Ｃは、ＶＰＣ２０６、２０８内のプライベートネットワークをコントローラ２１２にアナウンスすることを開始することができる。この通信は、例えば、ＢＧＰ−ＬＳを介して実現することができる。
【００５０】
次に、コントローラ２１２は、ルート、ＳＲ  ＩＤ（ＳＩＤ）、およびＳＲポリシーをゲートウェイ２１６Ｂおよび２１６Ｃに送信することができる。必要に応じて、ＢＧＰエージェント２１８Ｂおよび２１８Ｃは、ＢＧＰＳｅｃプロトコルなどのセキュリティ保護を構成することもできる。場合によっては、ネットワークサービスオーケストレータ（ＮＳＯ）５０２は、様々なクラウド（例えば、クラウド１０４Ａ〜Ｃ）上のリソースのオーケストレーションを容易にするために、コントローラ２１２と通信して展開され得る。
【００５１】
ゲートウェイ２１６Ｂおよび２１６Ｃは、ルート、ＳＩＤ、およびＳＲポリシーを使用して、ＳＲｖ６オーバーレイ２０２内のセグメントにトラフィックをルーティングすることができる。ゲートウェイ２１６Ｂおよび２１６ＣがＳＲｖ６ヘッダを備えるパケットを受信すると、ゲートウェイ２１６Ｂおよび２１６Ｃは、パケットを宛先ノードにルーティングし、ＳＲｖ６ヘッダに基づいてＳＲ関数を実行することができる。場合によっては、本明細書のアプローチは、Ｅｎｄ、Ｅｎｄ．Ｘ、Ｅｎｄ．Ｔ、およびＳＲプロキシ関数に適用可能な新しいＳＲｖ６関数フレーバーを実装することができ、これは、クラウド（１０４Ａ、１０４Ｂ、１０４Ｃなど）を出るときに、ＲＰＦ（リバース・パス・フォワーディング）チェックの失敗を回避するためにＩＰｖ６送信元アドレス（ＳＡ）を変更する。
【００５２】
上に示したように、本明細書のアプローチは、クライアント（例えば、クラウド１０４Ａ）のために新しいリージョンまたはＶＰＣを容易かつ効率的に追加するための技術を提供する。このプロセスには、特定のクラウドまたはクラウドリージョンでの新しいＶＰＣの作成、コントローラ（コントローラ２１２など）に登録するためにプレステージングされた新しいＶＰＣのクラウドまたはクラウドリージョンでの仮想ゲートウェイのロード、ならびにルート、ＳＩＤ、およびＳＲポリシーのコントローラを介した仮想ゲートウェイへの送信が含まれ得る。さらに、新しいリージョンまたはＶＰＣを追加しても、他の既存のリージョンには影響しない（つまり、他のサイトに変更はない）。新しく作成された仮想ゲートウェイがコントローラ（２１２）からその設定を受信すると、既存のリージョンがプロセスに介入することなく、任意対任意（ａｎｙ−ｔｏ−ａｎｙ）リージョンまたはＶＰＣルーティングが有効になる。
【００５３】
例えば、図５Ｂは、異なるクラウド（１０４Ｄ）上に作成され、マルチクラウド環境においてクラウド１０４Ａならびにクラウド１０４Ｂおよび１０４Ｃ上のＶＰＣ２０６および２０８と相互接続された新しいＶＰＣ２１０を示す。この例では、新しいＶＰＣ２１０がクラウドＡの西部リージョン（例えば、１０４Ｄ）に作成される。クライアント（例えば、クラウド１０４Ａ）は、最初にクラウド１０４Ｄ上に新しいＶＰＣ２１０を作成する。次に、クライアントは、仮想ゲートウェイ２１６ＤおよびＢＧＰエージェント２１８Ｄをクラウド１０４Ｄにロードする。仮想ゲートウェイ２１６ＤおよびＢＧＰエージェント２１８Ｄは、クラウド１０４Ｄ上の１つ以上のＶＭ、サーバ、ソフトウェアコンテナ、ノードなどにロードすることができる。例えば、仮想ゲートウェイ２１６Ｄは、クラウド１０４Ｄに関連付けられたクラウドマーケットプレイスで利用可能なＶＭを介して展開することができる。
【００５４】
クライアントは、仮想ゲートウェイ２１６Ｄ（ＢＧＰエージェント２１８Ｄを含む）をプレステージングして、コントローラ２１２に登録することができる。仮想ゲートウェイ２１６Ｄがコントローラ２１２に接続されて登録されると、コントローラ２１２は、仮想ゲートウェイ２１６Ｄからトポロジ情報を収集することができる。コントローラ２１２は、例えば、ＢＧＰ−ＬＳを使用してトポロジ情報を収集することができる。コントローラ２１２は、新しいＶＰＣ２１０とクラウド１０４ＡならびにＶＰＣ２０６および２０８との間の最良のパスを計算することができる。より具体的には、コントローラ２１２は、様々な場所（例えば、１０４Ａ、２０６、２０８）で仮想ゲートウェイ２１６Ａ〜Ｄ間のパスを計算することができる。コントローラ２１２は、パス計算エンジンを使用してパスを計算することができる。
【００５５】
次に、コントローラ２１２は、ルート、ＳＩＤ、およびＳＲポリシーを仮想ゲートウェイ２１６Ｄに送信する。ＳＩＤは、ＳＲｖ６オーバーレイ２０２内のＳＲ認識ノードに対応することができる。ルート、ＳＩＤ、およびＳＲポリシーを使用して、ＳＲｖ６オーバーレイ２０２を介して仮想ゲートウェイ２１６Ａ〜Ｄ間でトラフィックをルーティングすることができる。これは、仮想ゲートウェイ２１６Ａ〜Ｄ間、したがって、クラウド１０４ＡとＶＰＣ２０６、２０８、および２１０との間の相互接続を提供する。このような相互接続には、クラウド１０４ＡとＶＰＣ２０６、２０８、２１０との間の任意対任意の接続が含まれる。一部の例では、コントローラ２１２は、ＢＧＰ  ＳＲ−ＴＥを介して仮想ゲートウェイ２１６Ｄに特定の転送ルールを取り込むことができる。仮想ゲートウェイ２１６Ｄは、転送ルールをその転送テーブルに追加することができ、仮想ゲートウェイ２１６Ｄは、これを使用して、新しいＶＰＣ２１０とクラウド１０４ＡならびにＶＰＣ２０６および２０８との間でトラフィックをルーティングする場所または方法を決定することができる。
【００５６】
新しいＶＰＣ２１０を構成し、新しいＶＰＣ２１０をクラウド１０４ＡならびにＶＰＣ２０６および２０８と相互接続するためのプロセスは、自動化するか、または実質的に自動化することができ、他の既存のクラウドまたはリージョン（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）を変更することなく完了することができる。
【００５７】
場合によっては、インターネットエッジルータ（物理または仮想）をＳＲｖ６オーバーレイ２０２に展開して、異なるリージョン／ネットワーク（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）をインターネット２１４に接続することができる。例えば、図５Ｃを参照すると、インターネットエッジルータ２０４は、ＳＲｖ６オーバーレイ２０２に挿入することができる。コントローラ２１２は、ルート、ＳＩＤ、およびＳＲポリシーをインターネットエッジルータ２０４に送信することができる。コントローラ２１２は、ＢＧＰ  ＳＲ−ＴＥを使用して、インターネットエッジルータ２０４に適切な転送データを取り込むことができる。次に、インターネットエッジルータ２０４は、インターネット２１４と異なるリージョン／ネットワーク（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）との間でトラフィックをルーティングすることができる。
【００５８】
図５Ｄを参照すると、インターネットエッジルータ２０４Ａ〜Ｃ（物理または仮想）をＳＲｖ６オーバーレイ２０２に展開して、異なるリージョン／ネットワーク（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）に、複数のインターネットピアリングポイント２１４Ａ、２１４Ｂおよびコンテンツ配信ネットワーク５０４へのアクセスを提供することができる。コントローラ２１２は、ルート、ＳＩＤ、およびＳＲポリシーをインターネットエッジルータ２０４Ａ〜Ｃに送信することができ、インターネットエッジルータ２０４Ａ〜Ｃは、これらを使用して、インターネットピアリングポイント２１４Ａ、２１４Ｂおよびコンテンツ配信ネットワーク５０４への接続を可能にし得る。コントローラ２１２は、ＢＧＰ  ＳＲ−ＴＥを使用して、インターネットエッジルータ２０４Ａ〜Ｃに適切な転送データを取り込むことができる。次に、インターネットエッジルータ２０４Ａ〜Ｃは、異なるリージョン／ネットワーク（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）に、インターネットピアリングポイント２１４Ａ、２１４Ｂおよびコンテンツ配信ネットワーク５０４への直接アクセスを提供することができる。
【００５９】
図５Ｅを参照すると、一部の例では、コントローラ２１２およびＮＳＯ５０２は、クラウドプロバイダ１０４Ｅによって提供されるクラウドサービスであり得る。コントローラ２１２およびＮＳＯ５０２は、クラウド１０４Ｅによってホストされ得、異なるリージョン／ネットワーク（例えば、クラウド１０４ＡならびにＶＰＣ２０６および２０８）上の仮想ゲートウェイ２１６Ａ〜Ｃからトポロジ情報を収集し、パスを計算し、ルート、ＳＩＤ、およびＳＲポリシーを仮想ゲートウェイ２１６Ａ〜Ｃおよびインターネットエッジルータ２０４Ａ〜Ｃに送信するように構成され得る。
【００６０】
図６は、例示的なサービスチェイニングトラフィックフロー６００を示しており、本明細書のアプローチに従って相互接続されたクラウド１０４Ｂ、１０４Ｃ、１０４Ｄ内のＶＰＣ２０６、２０８、２１０上のノードを介してパケットがＳＲｖ６オーバーレイ２０２上でステアリングされる。この例では、クラウド１０４ＢはクラウドプロバイダＡのリージョン１にあるクラウドを表し、クラウド１０４ＣはクラウドプロバイダＢのリージョン２にあるクラウドを表し、クラウド１０４ＤはクラウドプロバイダＡのリージョン２にあるクラウドを表す。クラウド１０４Ｂ、１０４Ｃ、および１０４Ｄは、それぞれ、前述のように構成されたＶＰＣ２０６、２０８、および２１０を含む。さらに、ＶＰＣ２０６、２０８、および２１０は、それぞれ、前述のように構成された仮想ゲートウェイ２１６Ｂ、２１６Ｃ、および２１６Ｄを含む。仮想ゲートウェイ２１６Ｂ、２１６Ｃ、および２１６Ｄは、全てＳＲｖ６対応ノードである。
【００６１】
さらに、ＶＰＣ２０６はサーバ６０２（サーバ１）を含み、ＶＰＣ２０８はサーバ６０４（サーバ４）および６０６（サーバ５）を含み、ＶＰＣ２１０はサーバ６０８（サーバ２）および６１０（サーバ３）を含む。仮想ゲートウェイ２１６Ｂ、２１６Ｃ、および２１６Ｄは、トラフィックフロー６００に示されるように、ＶＰＣ２０６、２０８、および２１０を相互接続し、ＶＰＣ２０６、２０８、および２１０上の様々なサーバ（６０２、６０４、６０６、６０８、６１０）にパケットをルーティングすることができる。
【００６２】
この例では、サーバ６０２（サーバ１）は、パケット６１２を仮想ゲートウェイ２１６Ｂに送信する。パケット６１２は、ＶＰＣ２１０上のサーバ６０２（サーバ１）に対応する送信元アドレス６１６Ａ（ＳＡ）およびサーバ６０８（サーバ２）に対応する宛先アドレス６１６Ｂ（ＤＡ）を有するＩＰｖ４ヘッダ６１４を含む。仮想ゲートウェイ２１６Ｂは、パケット６１２を受信し、パケット６１２をＳＲｖ６ヘッダ６２２およびＩＰｖ６ヘッダ６２４でカプセル化して、ＳＲｖ６オーバーレイ２０２を介してルーティングするためのＳＲｖ６パケット６１８を作成する。次に、仮想ゲートウェイ２１６Ｂは、パケット６１８を、インターネット２１４およびＳＲｖ６オーバーレイ２０２を介して仮想ゲートウェイ２１６Ｃ（Ｃ２）に送信する。
【００６３】
ＳＲｖ６ヘッダ６２２は、トラフィック用に構成されたサービスチェーンに関連付けられたセグメントのリストを含むことができる。セグメントのリストには、セグメント６２８Ａとセグメント６２８Ｂが含まれる。セグメント６２８ＡはＶＰＣ２０８上の仮想ゲートウェイ２１６Ｃを表し、セグメント６２８ＢはＶＰＣ２１０上の仮想ゲートウェイ２１６Ｄを表す。さらに、セグメント６２８Ａおよび６２８Ｂは、パケット６１８の受信時にセグメント６２８Ａおよび６２８Ｂによって実行されるそれぞれのＳＲ関数に関連付けられる。この例では、セグメント６２８Ａは、仮想ゲートウェイ２１６Ｃ（例えば、セグメント６２８Ａ）にサーバ４（６０４）にｘ接続するように指示する関数Ｃ４に関連付けられており、セグメント６２８Ｂは、仮想ゲートウェイ２１６Ｄ（例えば、セグメント６２８Ｂ）にサーバ２（６０８）にｘ接続（関数Ｃ）するように指示する関数Ｃ２に関連付けられる。ＳＲｖ６ヘッダ６２２内のセグメントのリストはまた、アクティブなセグメントまたはセグメントレフトを識別するカウンタ６３０Ａを含む。サーバ４（６０４）は、サービスチェーンの最初のサービスを表すことができ、サーバ２（６０８）は、サービスチェーンの次のサービスを表すことができる。したがって、関連するＳＲ関数を含むセグメントのリスト（６２８Ａ、６２８Ｂ）は、仮想ゲートウェイ２１６Ｂ〜Ｄによって使用されて、サービスチェーンを通してパケット６１８をステアリングすることができる。
【００６４】
パケット６１８のＩＰｖ６ヘッダ６２４は、仮想ゲートウェイ２１６Ｂ（例えば、Ｃ１）に対応する送信元アドレス６２６Ａと、ＶＰＣ２０８上の仮想ゲートウェイ２１６Ｃに対応する宛先アドレス６２６Ｂとを含むことができる。ＩＰｖ６ヘッダ６２４内の宛先アドレス６２６Ｂはまた、受信時に仮想ゲートウェイ２１６Ｃによって実行される関数を含むことができる。この例では、関数はＣ４であり、これは、前述のように、仮想ゲートウェイ２１６Ｃ（セグメント６２８Ａなど）にサーバ４（６０４）にｘ接続（関数Ｃ）するように指示する。
【００６５】
仮想ゲートウェイ２１６Ｃ（Ｃ２）は、パケット６１８を受信すると、ＳＲｖ６ヘッダ６２２内のセグメントおよび関連関数のリスト、ならびにＩＰｖ６ヘッダ６２４上の宛先アドレス６２６Ｂおよび関連関数を調べて、パケット６１８の処理方法を決定する。次に、仮想ゲートウェイ２１６Ｃ（Ｃ２）は、仮想ゲートウェイ２１６Ｃ（Ｃ２）に対応するセグメント６２８ＡのＳＲｖ６ヘッダ６２２およびＩＰｖ６ヘッダ６２４で定義された関数Ｃ４を実行する。したがって、関数Ｃ４に基づいて、仮想ゲートウェイ２１６Ｃ（Ｃ２）は、パケット６１８をサーバ４（６０４）に送信する。サーバ４（６０４）は、パケット６１８を受信し、それに応じてパケットを処理することができる。
【００６６】
仮想ゲートウェイ２１６Ｃ（Ｃ２）はまた、ＳＲｖ６ヘッダ６２２上のセグメントのリスト内の次のセグメント６２８Ｂを識別し、パケット６１８が仮想ゲートウェイ２１６Ｄにルーティングされるべきであると決定する。仮想ゲートウェイ２１６Ｃ（Ｃ２）は、次のセグメント６２８Ｂ（仮想ゲートウェイ２１６Ｄ）に送信するためにパケット６１８を変更する。変更されたパケット６２０は、古いカウンタ６３０Ａの新しいセグメントレフト値が１減少したことを示す新しいカウンタ６３０Ｂを含む。変更されたパケット６２０はまた、変更されたＩＰｖ６ヘッダ６３２を含む。変更されたＩＰｖ６ヘッダ６３２は、パケット６１８のＩＰｖ６ヘッダ６２４に含まれるのと同じ送信元アドレスである送信元アドレス６２６Ａと、次のセグメント６２８Ｂ（仮想ゲートウェイ２１６Ｄ）に対応する新しい宛先アドレス６２６Ｃ（Ｃ３）を識別する。新しい宛先アドレス６２６Ｃ（Ｃ３）はまた、受信時に次のセグメント６２８Ｂによって実行される関数に関連付けられる。この例では、関数はＣ２であり、これは、次のセグメント６２８Ｂ（仮想ゲートウェイ２１６Ｄ）にサーバ２（６０８）にｘ接続（関数Ｃ）するように指示する。
【００６７】
次に、仮想ゲートウェイ２１６Ｃ（Ｃ２）は、変更されたパケット６２０を、ＳＲｖ６ヘッダ６２２内の次のセグメント６２８Ｂとして識別される仮想ゲートウェイ２１６Ｄ（Ｃ３）に送信する。仮想ゲートウェイ２１６Ｄ（Ｃ３）は、変更されたパケット６２０を受信すると、ＳＲｖ６ヘッダ６２２内のセグメントおよび関連関数のリスト、ならびにＩＰｖ６ヘッダ６３２内の宛先アドレス６２６および関連関数を調べて、変更されたパケット６２０の処理方法を決定する。次に、仮想ゲートウェイ２１６Ｃ（Ｃ２）は、仮想ゲートウェイ２１６Ｄ（Ｃ３）に対応するセグメント６２８ＢのＳＲｖ６ヘッダ６２２およびＩＰｖ６ヘッダ６３２で定義された関数Ｃ２を実行する。関数Ｃ２に基づいて、仮想ゲートウェイ２１６Ｄ（Ｃ３）は、パケット６１２を、フロー６００の最終宛先であるサーバ２（６０８）に送信する。サーバ２（６０８）は、パケット６１２を受信し、それに応じてパケットを処理することができる。
【００６８】
上に示したように、仮想ゲートウェイ（例えば、２１６Ｂ〜Ｄ）は、ＳＲｖ６オーバーレイ２０２上でサービス挿入およびＳＲｖ６ベースのサービスチェーンを実行することができる。場合によっては、仮想ゲートウェイはＢＧＰ−ＴＥを使用してサービスチェーンの配布を実行することができる。さらに、場合によっては、仮想ゲートウェイは、ＢＧＰポリシー（場所、内部トラフィックおよび外部トラフィック、インターネット、イントラネットなど）に基づいてサービスチェーンを実行することができる。仮想ゲートウェイは、ＳＲｖ６ベースのロードバランシングとパフォーマンスベースのルーティングも実行することができる。例えば、仮想ゲートウェイは、それらの間の遅延を測定することができる。コントローラ２１２は、レイテンシ測定値を使用して、仮想ＩＰ（ＶＩＰ）またはエニーキャストアドレスなどのアドレスによって識別される所与のサービスに到達するための最適なパスまたはＶＰＣを計算することができる。仮想ゲートウェイは、異なるクラウドプロバイダおよび／またはクラウドプロバイダリージョンの間でＶＰＣを相互接続することができる。本明細書での手法により、プライベートクラウドまたはネットワークに関連付けられたクライアントは、新しいＶＰＣを異なるクラウドプロバイダまたはクラウドプロバイダリージョンに簡単に展開し、それらのＶＰＣをクライアントのネットワークおよび確立された任意の他のＶＰＣと相互接続することが可能になる。
【００６９】
例示的なシステムおよび概念を説明してきたので、本開示は、次に、図７に示される方法に移る。本明細書に概説されるステップは例示であり、それらの任意の組み合わせで実装することができ、特定のステップを除外、追加、または変更する組み合わせを含む。
【００７０】
ステップ７０２で、プライベートネットワーク（例えば、１０４Ａ）と、プライベートネットワークに接続された１つ以上のＶＰＣ（例えば、２０６、２０８）と、を含むマルチクラウド環境（例えば、２００）に、１つ以上のＶＰＣおよびプライベートネットワーク上のセグメントルーティングドメイン（例えば、ＳＲｖ６オーバーレイ２０２）およびそれぞれの仮想ルータ（例えば、仮想ゲートウェイ２１６Ａ〜Ｃ）を介して、新しいＶＰＣ（例えば、２１０）を追加することができる。
【００７１】
ステップ７０４で、新しい仮想ルータ（例えば、仮想ゲートウェイ２１６Ｄ）を新しいＶＰＣ上に展開することができる。新しい仮想ルータは、新しいＶＰＣの着信トラフィックおよび発信トラフィックをルーティングすることができる。場合によっては、新しい仮想ルータは、新しいＶＰＣをホストするクラウドプロバイダに関連付けられたクラウドマーケットプレイスから取得したＶＭ、サーバ、またはソフトウェアコンテナを介して展開することができる。
【００７２】
ステップ７０６で、新しい仮想ルータは、セグメントルーティングドメインのＢＧＰコントローラ（例えば、２１２）に登録することができる。場合によっては、新しい仮想ルータをプレステージングして、展開時にＢＧＰコントローラに登録することができる。
【００７３】
ステップ７０８で、ＢＧＰコントローラは、新しい仮想ルータから、新しいＶＰＣに関連付けられたトポロジ情報を受信することができる。場合によっては、ＢＧＰコントローラはＢＧＰ−ＬＳを介してトポロジ情報を受信することができる。
【００７４】
ステップ７１０で、ＢＧＰコントローラは、トポロジ情報に基づいて計算された１つ以上のパスに基づいて、マルチクラウド環境内のルートを識別することができる。１つ以上のパスは、プライベートネットワークと、１つ以上のＶＰＣと、新しいＶＰＣとの間で計算される最適なパスであり得る。例えば、ＢＧＰコントローラは、トポロジ情報に基づいてパスを計算することができるパス計算エンジンを含むことができる。
【００７５】
ステップ７１２で、ＢＧＰコントローラは、マルチクラウド環境を介して通信するためのルーティング情報を新しい仮想ルータに送信することができる。ルーティング情報には、マルチクラウド環境に関連付けられたルート、セグメントルーティング識別子（ＳＩＤなど）、およびセグメントルーティングポリシーが含まれる。セグメントルーティング識別子は、それぞれの仮想ルータおよび新しい仮想ルータなど、マルチクラウド環境上のＳＲｖ６対応ノードに対応することができる。例えば、ＢＧＰコントローラは、ＢＧＰ−ＴＥを使用して新しい仮想ルータにルーティング情報を入力することができる。
【００７６】
ルーティング情報に基づいて、ステップ７１４で、方法は、セグメントルーティングドメイン、それぞれの仮想ルータ、および新しい仮想ルータを介して、プライベートネットワークと、１つ以上のＶＰＣと、新しいＶＰＣとの間の相互接続を提供することができる。前述のように、それぞれの仮想ルータおよび新しい仮想ルータは、ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーに基づいて、プライベートネットワークと、１つ以上のＶＰＣと、新しいＶＰＣとの間でトラフィックをルーティングすることができる。
【００７７】
場合によっては、インターネットエッジルータ（例えば、２０４）をセグメントルーティングドメインに展開して、プライベートネットワーク、１つ以上のＶＰＣ、および新しいＶＰＣへのインターネット接続を提供することができる。ＢＧＰコントローラは、マルチクラウド環境に関連付けられたルーティング情報をインターネットエッジルータに送信することができる。ルーティング情報により、インターネットエッジルータは、プライベートネットワーク、１つ以上のＶＰＣ、および新しいＶＰＣをインターネットに接続することができる。
【００７８】
次に、本開示は、スイッチ、ルータ、ロードバランサ、クライアントデバイスなどのネットワークデバイスおよびコンピューティングデバイスの例を示す図８および９に移る。
【００７９】
図８は、スイッチング、ルーティング、ロードバランシング、および他のネットワーキング操作を実行するのに好適な例示的なネットワークデバイス８００を示す。ネットワークデバイス８００は、中央処理装置（ＣＰＵ）８０４、インターフェース８０２、および接続部８１０（例えば、ＰＣＩバス）を含む。適切なソフトウェアまたはファームウェアの制御下で動作する場合、ＣＰＵ８０４は、パケット管理、エラー検出、および／またはルーティング関数を実行する責任を負う。ＣＰＵ８０４は、好ましくは、オペレーティングシステムおよび任意の適切なアプリケーションソフトウェアを含むソフトウェアの制御下でこれら全ての機能を達成する。ＣＰＵ８０４は、マイクロプロセッサのＩＮＴＥＬＸ８６ファミリからのプロセッサなどの１つ以上のプロセッサ８０８を含み得る。場合によっては、プロセッサ８０８は、ネットワークデバイス８００の操作を制御するために特別に設計されたハードウェアであり得る。場合によっては、メモリ８０６（例えば、不揮発性ＲＡＭ、ＲＯＭなど）もまた、ＣＰＵ８０４の一部を形成する。ただし、メモリをシステムに結合することができる多くの異なる方式がある。
【００８０】
インターフェース８０２は、通常、モジュラーインターフェースカード（「ラインカード」と称されることもある）として提供される。一般に、それらはネットワークを介したデータパケットの送受信を制御し、ネットワークデバイス８００で使用される他の周辺機器をサポートする場合がある。提供され得るインターフェースの中には、イーサネットインターフェース、フレームリレーインターフェース、ケーブルインターフェース、ＤＳＬインターフェース、トークンリングインターフェースなどがある。さらに、高速トークンリングインターフェース、ワイヤレスインターフェース、イーサネットインターフェース、ギガビットイーサネットインターフェース、ＡＴＭインターフェース、ＨＳＳＩインターフェース、ＰＯＳインターフェース、ＦＤＤＩインターフェース、ＷＩＦＩインターフェース、３Ｇ／４Ｇ／５Ｇセルラーインターフェース、ＣＡＮ  ＢＵＳ、ＬｏＲＡなど、様々な非常に高速なインターフェースが提供される場合がある。一般に、これらのインターフェースには、適切な媒体との通信に適したポートが含まれている場合がある。場合によっては、独立したプロセッサと、場合によっては揮発性ＲＡＭも含まれることがある。独立したプロセッサは、パケット交換、媒体制御、信号処理、暗号処理、管理などの通信集約型タスクを制御することができる。通信集約型タスクのために別個のプロセッサを提供することにより、これらのインターフェースは、マスターマイクロプロセッサ８０４がルーティング計算、ネットワーク診断、セキュリティ機能などを効率的に実行することを可能にする。
【００８１】
図８に示されるシステムは、本技術の１つの特定のネットワークデバイスであるが、本技術が実装され得る唯一のネットワークデバイスアーキテクチャであることを意味するものではない。例えば、通信ならびにルーティング計算などを処理する単一のプロセッサを備えるアーキテクチャがよく使用される。さらに、他のタイプのインターフェースおよび媒体もまた、ネットワークデバイス８００と共に使用され得る。
【００８２】
ネットワークデバイスの構成に関係なく、本明細書で説明するローミング、ルート最適化、およびルーティング関数のための汎用ネットワーク操作およびメカニズムのためのプログラム命令を格納するように構成された１つ以上のメモリまたはメモリモジュール（メモリ８０６を含む）を使用することができる。プログラム命令は、例えば、オペレーティングシステムおよび／または１つ以上のアプリケーションの操作を制御することができる。１つ以上のメモリはまた、モビリティバインディング、登録、および関連付けテーブルなどのテーブルを格納するように構成され得る。メモリ８０６はまた、様々なソフトウェアコンテナおよび仮想化実行環境およびデータを保持することができる。
【００８３】
ネットワークデバイス８００はまた、ルーティングおよび／またはスイッチング操作を実行するように構成され得る特定用途向け集積回路（ＡＳＩＣ）を含むことができる。ＡＳＩＣは、接続部８１０を介してネットワークデバイス８００内の他のコンポーネントと通信して、データおよび信号を交換し、例えば、ルーティング、スイッチング、および／またはデータ記憶操作などのネットワークデバイス８００による様々なタイプの操作を調整することができる。
【００８４】
図９は、システムのコンポーネントが、バスなどの接続部９０５を使用して互いに電気的に通信するコンピューティングシステムアーキテクチャ９００を示す。例示的なシステム９００は、処理ユニット（ＣＰＵまたはプロセッサ）９１０と、読み出し専用メモリ（ＲＯＭ）９２０およびランダムアクセスメモリ（ＲＡＭ）９２５などのシステムメモリ９１５を含む様々なシステムコンポーネントをプロセッサ９１０に結合するシステム接続部９０５とを含む。システム９００は、プロセッサ９１０に直接接続されているか、近接しているか、またはプロセッサ９１０の一部として統合されている高速メモリのキャッシュを含むことができる。システム９００は、プロセッサ９１０による高速アクセスのために、メモリ９１５および／またはストレージデバイス９３０からキャッシュ９１２にデータをコピーすることができる。このようにして、キャッシュは、データを待機している間のプロセッサ９１０の遅延を回避するパフォーマンス向上を提供することができる。これらおよび他のモジュールは、様々なアクションを実行するために、プロセッサ９１０を制御するか、または制御するように構成され得る。他のシステムメモリ９１５も同様に利用可能であり得る。メモリ９１５は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ９１０は、任意の汎用プロセッサと、プロセッサ９１０を制御するように構成されたストレージデバイス９３０に格納された第１サービス９３２、第２サービス９３４、および第３サービス９３６のようなハードウェアまたはソフトウェアサービスと、ソフトウェア命令が実際のプロセッサ設計に組み込まれている特別目的プロセッサとを含むことができる。プロセッサ９１０は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む完全に自己完結型のコンピューティングシステムであり得る。マルチコアプロセッサは、対称または非対称であり得る。
【００８５】
コンピューティングデバイス９００とのユーザインタラクションを可能にするために、入力デバイス９４５は、スピーチ用のマイクロフォン、ジェスチャまたはグラフィック入力用のタッチセンシティブスクリーン、キーボード、マウス、モーション入力、スピーチなどの任意の数の入力メカニズムを表すことができる。出力デバイス９３５はまた、当業者に既知の一部の出力メカニズムのうちの１つ以上であり得る。場合によっては、マルチモーダルシステムは、ユーザがコンピューティングデバイス９００と通信するために複数のタイプの入力を提供することを可能にし得る。通信インターフェース９４０は、一般に、ユーザ入力およびシステム出力を統治および管理することができる。特定のハードウェア構成での操作に制限はないため、ここでの基本機能は、開発時に改善されたハードウェアまたはファームウェア構成に簡単に置き換えることができる。
【００８６】
ストレージデバイス９３０は、不揮発性メモリであり、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）９２５、読み取り専用メモリ（ＲＯＭ）９２０、およびそれらのハイブリッドなど、コンピュータがアクセス可能なデータを格納することができるハードディスクまたは他のタイプのコンピュータ可読媒体であり得る。
【００８７】
ストレージデバイス９３０は、プロセッサ９１０を制御するためのサービス９３２、９３４、９３６を含むことができる。他のハードウェアまたはソフトウェアモジュールが企図される。ストレージデバイス９３０は、システム接続部９０５に接続することができる。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ９１０、接続部９０５、出力デバイス９３５などの必要なハードウェアコンポーネントに関連して、コンピュータ可読媒体に格納されたソフトウェアコンポーネントを含むことができる。
【００８８】
説明を明確にするために、場合によっては、本技術は、ソフトウェアで具体化される方法におけるデバイス、デバイスコンポーネント、ステップもしくはルーチン、またはハードウェアとソフトウェアの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示され得る。
【００８９】
一部の実施形態では、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたは無線信号を含むことができる。しかしながら、言及される場合、非一時的コンピュータ可読記憶媒体は、エネルギー、搬送波信号、電磁波、および信号自体などの媒体を明示的に除外する。
【００９０】
上記の例による方法は、コンピュータ可読媒体に格納されているか、他の場合にはそれから利用可能であるコンピュータ実行可能命令を使用して実装することができる。そのような命令は、例えば、特定の機能または機能のグループを実行するために、汎用コンピュータ、専用コンピュータ、または専用処理デバイスを引き起こすか、あるいは構成する命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワーク経由でアクセス可能であり得る。コンピュータの実行可能命令は、例えば、バイナリ、アセンブリ言語、ファームウェア、またはソースコードなどの中間フォーマット命令であり得る。命令、使用される情報、および／または説明された例による方法中に作成された情報を格納するために使用され得るコンピュータ可読媒体の例には、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたＵＳＢデバイス、ネットワークストレージデバイスなどが含まれる。
【００９１】
これらの開示による方法を実装するデバイスは、ハードウェア、ファームウェア、および／またはソフトウェアを含むことができ、様々なフォームファクタのいずれかを取ることができる。このようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、スモールフォームファクタのパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどが挙げられる。本明細書で説明される機能はまた、周辺機器またはアドインカードで具体化され得る。このような機能は、さらなる例として、単一のデバイスで実行される異なるチップまたは異なるプロセスの間の回路基板上に実装することもできる。
【００９２】
命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【００９３】
添付の特許請求の範囲の範疇の態様を説明するために、様々な例および他の情報を使用したが、当業者であれば、多種多様な実装形態を導出するために、これらの例を使用することができるように、かかる例における特定の特徴または構成に基づいて、特許請求の範囲のいかなる制限も示唆されるべきではない。さらに、一部の主題は、構造的特徴および／または方法ステップの例に固有の言語で説明されている場合があるが、添付の特許請求の範囲で定義される主題は、必ずしもこれらの説明された特徴または行為に限定されないことを理解されたい。例えば、かかる機能は、ここで特定されている構成要素以外の構成要素で、異なって配布し、または実行することができる。むしろ、説明された特徴およびステップは、添付の特許請求の範囲の範疇のシステムおよび方法の構成要素の例として開示される。
【００９４】
「少なくとも１つ」のセットと記載される特許請求項の文言は、セットの１つのメンバーまたはセットの複数のメンバーが特許請求項を満たしていることを示す。例えば、「ＡとＢの少なくとも１つ」と記載される特許請求項の文言は、Ａ、Ｂ、またはＡおよびＢを意味する。
【図１】
2021530908.tif 000003
【図２】
2021530908.tif 000004
【図３Ａ】
2021530908.tif 000005
【図３Ｂ】
2021530908.tif 000006
【図４】
2021530908.tif 000007
【図５Ａ】
2021530908.tif 000008
【図５Ｂ】
2021530908.tif 000009
【図５Ｃ】
2021530908.tif 000010
【図５Ｄ】
2021530908.tif 000011
【図５Ｅ】
2021530908.tif 000012
【図６】
2021530908.tif 000013
【図７】
2021530908.tif 000014
【図８】
2021530908.tif 000015
【図９】
2021530908.tif 000016
【国際調査報告】
2021530908.tif 000017
2021530908.tif 000018