(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-17
(45)【発行日】2023-05-25
(54)【発明の名称】SRv6とBGPを使用するマルチクラウド接続
(51)【国際特許分類】
H04L 41/40 20220101AFI20230518BHJP
【FI】
H04L41/40
(21)【出願番号】P 2021500642
(86)(22)【出願日】2019-07-17
(86)【国際出願番号】 US2019042131
(87)【国際公開番号】W WO2020018623
(87)【国際公開日】2020-01-23
【審査請求日】2022-04-25
(32)【優先日】2018-07-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508041127
【氏名又は名称】シスコ テクノロジー,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100140431
【氏名又は名称】大石 幸雄
(72)【発明者】
【氏名】トレット,ジェローム
(72)【発明者】
【氏名】フィオッコ,アラン
(72)【発明者】
【氏名】スルクフ,アンドレ ジャン-マリー
(72)【発明者】
【氏名】ガーヴィア,パブロ カマリロ
(72)【発明者】
【氏名】フィルスフィルス,クラレンス
【審査官】大石 博見
(56)【参考文献】
【文献】米国特許出願公開第2017/181210(US,A1)
【文献】米国特許出願公開第2017/64717(US,A1)
【文献】米国特許出願公開第2018/97725(US,A1)
【文献】米国特許出願公開第2012/224506(US,A1)
【文献】米国特許出願公開第2017/3994(US,A1)
【文献】特開2018-37983(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 41/00
(57)【特許請求の範囲】
【請求項1】
プライベートネットワークと、前記プライベートネットワークに接続された1つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記1つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記マルチクラウド環境のボーダーゲートウェイプロトコル(BGP)コントローラに前記新しい仮想ルータを登録することと、
前記BGPコントローラで、前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された1つ以上のパスに基づいて、前記マルチクラウド環境内のルートを識別することであって、前記1つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも1つの間にあることと、
前記BGPコントローラによって、前記新しい仮想ルータに、前記マルチクラウド環境を介して通信するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、
前記ルーティング情報に基づいて、前記セグメントルーティングドメイン、前記それぞれの仮想ルータ、および前記新しい仮想ルータを介して、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の相互接続を提供することと、を含む、方法。
【請求項2】
前記BGPコントローラによって、前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記1つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすることをさらに含む、請求項1に記載の方法。
【請求項3】
前記新しい仮想プライベートクラウドおよび前記1つ以上の仮想プライベートクラウドが、1つ以上のそれぞれのBGPエージェントを実行する、請求項1または2に記載の方法。
【請求項4】
前記セグメントルーティングドメインが、SRv6オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、SRv6対応ノードを含む、請求項1~3のいずれかに記載の方法。
【請求項5】
前記セグメントルーティング識別子に基づいて、前記SRv6オーバーレイを介して、前記それぞれの仮想ルータまたは前記新しい仮想ルータのうちの少なくとも2つの間でSRv6トラフィックをルーティングすることをさらに含む、請求項4に記載の方法。
【請求項6】
前記トポロジ情報に基づいて、前記BGPコントローラを介して、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の前記1つ以上のパスを計算することであって、前記1つ以上のパスが、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間のそれぞれの最適なパスを含むことをさらに含む、請求項1~5のいずれかに記載の方法。
【請求項7】
前記トポロジ情報が、BGPリンクステートプロトコル(BGP-LS)を介して前記BGPコントローラによって受信される、請求項1~6のいずれかに記載の方法。
【請求項8】
前記ルーティング情報が、BGPトラフィックエンジニアリング(BGP-TE)を介して前記BGPコントローラによって送信される、請求項1~7のいずれかに記載の方法。
【請求項9】
前記それぞれの仮想ルータおよび前記新しい仮想ルータが、前記1つ以上の仮想プライベートクラウドおよび前記新しい仮想プライベートクラウドをホストする1つ以上のクラウドプロバイダに関連付けられたクラウドマーケットプレイスからそれぞれの仮想マシンを介して展開される、請求項1~8のいずれかに記載の方法。
【請求項10】
前記それぞれの仮想ルータおよび前記新しい仮想ルータが、前記BGPコントローラに接続してかつ登録するようにプレステージングされている、請求項9に記載の方法。
【請求項11】
システムであって、
1つ以上のプロセッサと、
少なくとも1つのコンピュータ可読記憶媒体であって、前記1つ以上のプロセッサによって実行されると、前記システムに、
クラウドコンシューマーに関連付けられたプライベートネットワークと、前記プライベートネットワークに接続された1つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記1つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウドを追加することに応じて、前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された1つ以上のパスに基づいて、前記マルチクラウド環境内のルートを識別することであって、前記1つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも1つの間にあることと、
前記新しい仮想ルータに、前記マルチクラウド環境の前記新しい仮想プライベートクラウド、前記1つ以上の仮想プライベートクラウド、および前記プライベートネットワークを相互接続するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、を行わせる命令をその中に格納した少なくとも1つのコンピュータ可読記憶媒体と、を含む、システム。
【請求項12】
前記少なくとも1つのコンピュータ可読記憶媒体が、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記1つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすること、を行わせる追加の命令を格納する、請求項11に記載のシステム。
【請求項13】
前記セグメントルーティングドメインが、SRv6オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、SRv6対応ノードを含む、請求項11または12に記載のシステム。
【請求項14】
前記少なくとも1つのコンピュータ可読記憶媒体が、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記トポロジ情報に基づいて、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間の前記1つ以上のパスを計算することであって、前記1つ以上のパスが、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとの間のそれぞれの最適なパスを含むこと、を行わせる追加の命令を格納する、請求項11~13のいずれかに記載のシステム。
【請求項15】
前記トポロジ情報が、BGPリンクステートプロトコル(BGP-LS)を介して前記システムによって受信され、前記システムが、BGPコントローラを含む、請求項11~14のいずれかに記載のシステム。
【請求項16】
前記少なくとも1つのコンピュータ可読記憶媒体が、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記マルチクラウド環境のSRv6トラフィックに対して、前記SRv6トラフィックが前記マルチクラウド環境で特定のクラウドを出る際に、前記SRv6トラフィックに関連付けられたIPv6送信元アドレスを変更してリバース・パス・フォワーディング(RPF)チェックの失敗を防ぐ特定のSRv6関数を実装することであって、前記特定のSRv6関数が、SRv6 End関数、SRv6 End.T関数、およびSRv6 End.X関数のうちの少なくとも1つ、または1つ以上のSRv6プロキシ関数に適用可能である、実装すること、を行わせる追加の命令を格納する、請求項11~15のいずれかに記載のシステム。
【請求項17】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
クラウドコンシューマーに関連付けられたプライベートネットワークと、前記プライベートネットワークに接続された1つ以上の仮想プライベートクラウドと、を含むマルチクラウド環境に、前記1つ以上の仮想プライベートクラウドおよび前記プライベートネットワーク上のセグメントルーティングドメインおよびそれぞれの仮想ルータを介して、新しい仮想プライベートクラウドを追加することと、
前記新しい仮想プライベートクラウドを追加することに応じて、前記新しい仮想プライベートクラウド上に、前記新しい仮想プライベートクラウド用の着信トラフィックおよび発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、
前記新しい仮想ルータから、前記新しい仮想プライベートクラウドに関連付けられたトポロジ情報を受信することと、
前記トポロジ情報に基づいて計算された1つ以上のパスに基づいて前記マルチクラウド環境内のルートを識別することであって、前記1つ以上のパスが、前記マルチクラウド環境上の、前記プライベートネットワークと、前記1つ以上の仮想プライベートクラウドと、前記新しい仮想プライベートクラウドとのうちの少なくとも1つの間にあることと、
前記新しい仮想ルータに、前記マルチクラウド環境の前記新しい仮想プライベートクラウド、前記1つ以上の仮想プライベートクラウド、および前記プライベートネットワークを相互接続するためのルーティング情報を送信することであって、前記ルーティング情報が、前記マルチクラウド環境に関連付けられた前記ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含むことと、を行わせる命令をその中に格納した命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項18】
前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
前記セグメントルーティングドメインに展開されたインターネットエッジルータに、前記マルチクラウド環境に関連付けられた前記ルーティング情報を送信することであって、前記ルーティング情報が、前記インターネットエッジルータが前記プライベートネットワーク、前記1つ以上の仮想プライベートクラウド、および前記新しい仮想プライベートクラウドをインターネットに接続することを可能にすることを行わせる追加の命令を格納する、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記セグメントルーティングドメインが、SRv6オーバーレイを含み、前記セグメントルーティング識別子が、前記それぞれの仮想ルータおよび前記新しい仮想ルータに対応し、前記それぞれの仮想ルータおよび前記新しい仮想ルータが、SRv6対応ノードを含む、請求項17または18に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記トポロジ情報が、BGPリンクステートプロトコル(BGP-LS)を介して受信され、前記ルーティング情報が、BGPトラフィックエンジニアリング(BGP-TE)を介して送信される、請求項17、18、または19に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2018年7月17日に出願された「MULTI-CLOUD CONNECTIVITY USING SRV6 AND BGP」と題する米国非仮特許出願第16/037,765号の利益および優先権を主張し、その内容は、参照によりそれらの全体が明示的に本明細書に組み込まれる。
【0002】
本技術は、クラウドコンピューティング、より具体的にはマルチクラウド接続に関する。
【背景技術】
【0003】
インターネット対応デバイスの普及により、インターネットサービスおよびコンテンツに対する膨大な需要が生まれている。ユーザのネットワークサービスやコンテンツへの依存度が高まるコネクテッド社会になってきている。このインターネット接続革命は、サービスコンテンツプロバイダに重大な課題をもたらしており、サービスコンテンツプロバイダは、しばしば、ユーザのパフォーマンスの期待を下回ることなく大量のユーザ要求を処理するのに困難を抱えている。例えば、クラウドプロバイダは通常、ユーザからのネットワークとコンテンツの要求に対応するために、大規模で複雑なデータセンターを必要とする。これらのデータセンターには通常、特定のサービスをホストするように構成されたサーバファームが備えられており、これにはデータセンターとの間でトラフィックをルーティングするように構成された多数のスイッチとルータが含まれる。多くの場合、特定のデータセンターにより数百万のトラフィックフローとサービスリクエストを処理することが期待される。
【0004】
同様に、企業などのプライベートエンティティによってホストされるプライベートネットワークも、コンピューティングリソースとパフォーマンスに対する需要が高まっている。このような増大する需要を満たすために、プライベートネットワークは、パブリッククラウドプロバイダからコンピューティングリソースとサービスを頻繁に購入する。例えば、プライベートエンティティは、パブリッククラウドプロバイダ上に仮想プライベートクラウドを作成し、仮想プライベートクラウドをプライベートネットワークに接続して、利用可能なコンピューティングリソースと機能を拡張することができる。このような仮想プライベートクラウドは、特定のプロバイダクラウドまたはクラウドリージョンで作成され得る。プライベートエンティティは、近接性、コスト、パフォーマンス、サービスなどに基づいて、仮想プライベートクラウドを確立する場所を選択することができる。残念ながら、プライベートエンティティに利用可能なクラウドプロバイダとリージョンの数が増え続ける一方で、異なるクラウドプロバイダおよびリージョンによって実装されるツールセット、アーキテクチャ、およびアプリケーションプログラミングインターフェース(API)の統一性の欠如により、異なるクラウドプロバイダまたはリージョンに仮想プライベートクラウドを展開することを望むエンティティに重大な課題がもたらされている。多くの場合、エンティティは、異なるクラウドプロバイダまたはリージョンに接続すること、あるいは様々なクラウドプロバイダまたはリージョン間の相互接続を維持することが不可能である。多くの場合、クラウド間またはリージョン間の接続を確立することは非常に困難であり、多大な時間を要する構成作業が必要であり、特定のネットワークデバイスまたは専用インフラストラクチャが必要であり得る。
【図面の簡単な説明】
【0005】
本開示の上記および他の利点および特徴を得ることができる様式を説明するために、添付の図面に示されるその特定の実施形態を参照することにより、上記で簡単に説明した原理のより具体的な説明を行う。これらの図面が本開示の例示的な実施形態のみを描写し、したがって、その範囲を限定すると見なされるべきではないことを理解して、本明細書の原理は、以下の添付の図面を使用することにより、追加の特定事項および詳細と共に記載および説明される。
【
図1】マルチクラウド環境において1つ以上のクラウドによって実装され得る例示的なクラウドデータセンターアーキテクチャ100の図を示す。
【
図2】SRv6オーバーレイを備える例示的なマルチクラウド環境の図を示す。
【
図3A】例示的なIPv6およびSRv6パケットを示す。
【
図3B】IPv6およびSRv6ヘッダの例示的な宛先フィールドの概略図を示す。
【
図4】対応するIPv6およびSRv6ヘッダに基づくSRv6トラフィックの例示的なフローを示す。
【
図5A】
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境で仮想プライベートクラウド(VPC)を作成するための例示的なコンポーネントとインタラクションの図を示す。
【
図5B】
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境でVPCを作成および相互接続するための例示的なシナリオを示す。
【
図5C】
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境でVPCを作成および相互接続するための例示的なシナリオを示す。
【
図5D】
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境でVPCを作成および相互接続するための例示的なシナリオを示す。
【
図5E】
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境でVPCを作成および相互接続するための例示的なシナリオを示す。
【
図6】例示的なサービスチェイニングトラフィックフローを示しており、
図2に示すマルチクラウド環境など、SRv6オーバーレイを備えるマルチクラウド環境でVPC上のノードを介してSRv6オーバーレイ上でパケットがステアリングされる。
【
図7】SRv6とBGPを介してマルチクラウド接続を確立する例示的な方法を示す。
【
図8】様々な実施形態による例示的なネットワークデバイスを示す。
【
図9】様々な実施形態による例示的なコンピューティングデバイスを示す。
【発明を実施するための形態】
【0006】
本開示の様々な実施形態について、以下で詳細に考察する。特定の実装形態について考察するが、これは例証のみを目的として行われることを理解されたい。関連技術の当業者は、本開示の趣旨および範囲から離れることなく、他の構成要素および構成を使用することができることを認識するであろう。
【0007】
概要
本開示の追加の特徴および利点は、以下の説明に記載され、一部は説明から明らかであるか、または本明細書に開示された原理の実践によって学ぶことができる。本開示の特徴および利点は、添付の特許請求の範囲で特に指摘されている機器および組み合わせによって実現および取得することができる。本開示のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または本明細書に記載の原理の実践によって学ぶことができる。
【0008】
本明細書では、SRv6を使用してクラウド間の接続を確立および管理するためのシステム、方法、およびコンピュータ可読媒体が開示される。一部の例では、方法は、プライベートネットワークと、プライベートネットワークに接続された1つ以上の仮想プライベートクラウド(VPC)と、を含むマルチクラウド環境に、1つ以上のVPCおよびプライベートネットワーク上のセグメントルーティング(SR)ドメイン(例えば、SRv6オーバーレイ)およびそれぞれの仮想ルータを介して、新しいVPCを追加することを含むことができる。本方法は、新しいVPC上に、新しいVPCの着信および発信トラフィックをルーティングするように構成された新しい仮想ルータを展開することと、新しい仮想ルータを新しいVPC上に展開した後、プライベートネットワークに関連付けられたボーダーゲートウェイプロトコル(BGP)コントローラに仮想ルータを登録することと、を含むことができる。本方法は、BGPコントローラと新しい仮想ルータとの間の接続を確立することと、BGPコントローラで、新しい仮想ルータから、新しいVPCに関連付けられたトポロジ情報を受信することと、を含むことができる。
【0009】
本方法は、トポロジ情報に基づいて計算された1つ以上のパスに基づいてマルチクラウド環境内のルートを識別することをさらに含むことができる。1つ以上のパスは、プライベートネットワークと、1つ以上のVPCと、新しいVPCとの間のそれぞれのパスであり得る。場合によっては、1つ以上のパスは、トポロジ情報に基づいてパス計算エンジンによって計算された最適なパスであり得る。ルートが特定されると、BGPコントローラはマルチクラウド環境を介して通信するためのルーティング情報を新しい仮想ルータに送信できる。ルーティング情報には、マルチクラウド環境に関連付けられたルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを含めることができる。本方法は、ルーティング情報に基づいて、セグメントルーティングドメイン、それぞれの仮想ルータ、および新しい仮想ルータを介して、プライベートネットワークと、1つ以上のVPCと、新しいVPCとの間の相互接続を提供することをさらに含むことができる。例えば、それぞれの仮想ルータおよび新しい仮想ルータは、ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーを使用して、マルチクラウド環境全体にトラフィックをルーティングすることができる。それぞれの仮想ルータおよび新しい仮想ルータは、トラフィックをセグメントルーティングドメイン上の宛先にステアリングするために、セグメントルーティング識別子を使用することができるSRv6対応ノードであり得る。
【0010】
例示的な実施形態の説明
開示された技術は、クラウド間の接続を確立および管理するための効率的でユーザフレンドリなストラテジを提供する。本技術は、IPv6(以下「SRv6」)およびボーダーゲートウェイプロトコル(BGP)を介したセグメントルーティング(SR)を使用するマルチクラウド接続のためのシステム、方法、およびコンピュータ可読媒体を含む。本技術は、以下の開示において以下のように説明される。SRv6とIPv6の概要から考察を始める。
図1と
図2に示すように、クラウドデータセンターアーキテクチャの例とSRv6オーバーレイを備えるマルチクラウド環境の例、ならびに、
図3~7に示すようにSRv6とBGPを使用するマルチクラウド接続ストラテジと例について説明する。考察は、
図8に示されるように例示的なネットワークデバイス、およびソフトウェアアプリケーションをホストし、コンピューティング操作を実行するのに好適な例示的なハードウェアコンポーネントを含む、
図9に示されるように例示的なコンピューティングデバイスの説明で終了する。ここで、本開示はIPv6とSRv6の概要の考察に移る。
【0011】
本明細書のアプローチは、セグメントルーティング(SR)を利用して、異なるクラウドまたはクラウドリージョン上のサーバまたはノードに向けて接続または通信要求をステアリングすることができる。以下でさらに説明されるIPv6とSRは、状態情報を制限しながら、要求を効率的にステアリングするために使用され得る。要求は、IPv6およびSRv6ヘッダに基づいてSRパケットで識別されたノードにルーティングされる。IPv6ヘッダには、送信元アドレス(SA)と宛先サーバまたはノードなどの宛先アドレス(DA)を含めることができる。SRヘッダには、SRノード(S1、S2、S3など)のリストと、残りの宛先サーバまたはノードの数を識別するセグメントレフト(SL)カウンタを含めることができる。
【0012】
IPv6環境
IPv6セントリックデータセンターなどのIPv6環境では、IPv6物理プレフィックスを介してサーバにアクセスすることができる。サーバは、IPv6仮想アドレス(VIP)を割り当てられ得る仮想マシン(VM)またはソフトウェアコンテナなどの隔離環境でアプリケーションサービスを実行することができる。場合によっては、仮想スイッチ(Open vSwitch、ベクターパケット処理など)をサーバに展開して、サーバ上の物理インターフェースと仮想インターフェースとの間でパケットをルーティングすることができる。これにより、VLANまたはVXLANなどのレイヤ2トンネルを展開することなく、ネットワーク(データセンターなど)を完全にレイヤ3でルーティングすることが可能になる。
【0013】
データセンターで実行されている異なるアプリケーションに対応するVIPのルーティングは、複数の様式で実現することができる。一部の例では、仮想スイッチはインテリアゲートウェイプロトコル(IGP)を実行して、VIPに直接ルートを伝播することができる。他の例では、IPv6用の識別子-ロケータアドレス指定などのモビリティプロトコルを使用することができ、この場合、エッジルータは、物理アドレスと仮想アドレスとの間の変換を実行する。さらに、ネットワークデバイスは、ボーダーゲートウェイプロトコル(BGP)を使用してルーティング情報を交換することができる。以下でさらに説明するように、本明細書のアプローチは、クラウド間の接続を確立および管理するためのセグメントルーティングを実装する。
【0014】
セグメントルーティング(SR)
SRは、当初はトラフィックエンジニアリング用に設計されたソースルーティングパラダイムであり、SRドメイン内で、セグメントのリストによって定義された所定のパスをパケットがたどることを可能にする。本明細書のアプローチは、SRv6アーキテクチャとIPv6接続を活用して、マルチクラウド接続を効率的に作成および管理する。
【0015】
SRv6とIPv6は、IPv6パケットにIPv6ヘッダとSRv6ヘッダを実装することで一緒に活用され得る。例えば、場合によっては、IPv6拡張ヘッダを実装して、SR用のセグメントのリストと、パケットの最終宛先が到達するまで処理される残りのセグメントの数を示すカウンタであるセグメントレフトを識別することができる。SRv6パケットでは、IPv6宛先アドレスを次のセグメントのアドレスで上書きすることができる。このようにして、パケットは、次の目的のSRホップに到達するまで、SR対応ルータを通過することができる。SRv6パケットを受信すると、SR対応ルータは宛先アドレスを次のセグメントのアドレスに設定し、セグメントレフトカウンタを減少させる。パケットが最後のSRホップに到達すると、パケットの最終宛先がIPv6宛先アドレスフィールドにコピーされる。ヘッダ内のフラグの値に応じて、SRv6ヘッダは、宛先がvanilla IPv6パケットを受信するように最後のSRホップにより削除され得る。
【0016】
図1は、マルチクラウド環境において1つ以上のクラウドによって実装され得る例示的なクラウドデータセンターアーキテクチャ100の図を示す。クラウドデータセンターアーキテクチャ100は、クラウド104を含むことができ、クラウド104は、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、仮想プライベートクラウド(VPC)、クラウドリージョンなどであり得る。クラウド104は、1つ以上のデータセンターおよび/またはネットワークをホストすることができる。例えば、クラウド104は、単一のデータセンターまたは複数のデータセンターを含むことができる。クラウド104は、物理的に1つの地理的場所に配置されるか、または多数の地理的場所の至る所に分散され得る。さらに、クラウド104は、フォワーダ側およびサーバ側のアーキテクチャまたはコンポーネントを含むことができる。
【0017】
クラウド104は、クラウドデータセンターアーキテクチャ100内のトラフィックをルーティングするように構成された106-1~106-N(以下、総称して「106」)および108-1~108-N(以下、総称して「108」)を切り替える。スイッチ106、108は、レイヤ2(L2)機能および/またはレイヤ3(L3)機能を備える任意のネットワークデバイスを含むことができる。この例では、スイッチ106はスパインスイッチを表し、スイッチ108はリーフスイッチを表す。
【0018】
クライアント102は、クラウド104に接続し、スイッチ106、108を介してアプリケーションサーバ110-1~110-N(以下、総称して「110」)にアクセスすることができる。クライアント102は、クラウドネットワークもしくはデータセンター(例えば、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、クラウドリージョンまたはセグメント、仮想プライベートクラウドなど)などのネットワーク、あるいはラップトップ、デスクトップ、タブレットコンピュータ、携帯電話、サーバ、スマートデバイス(スマートテレビ、スマートウォッチなど)、モノのインターネット(IoT)デバイスなどの任意のコンピューティングデバイスであり得る。
【0019】
スイッチ106は、クラウド104内のエッジデバイスとして機能し、クラウド104との間でトラフィックをルーティングすることができる。したがって、スイッチ106は、クラウド104の出口点および入口点として機能することができる。スイッチ106はまた、クラウド104内のスイッチ108にトラフィックをルーティングすることができ、クラウド104内の他のノード(例えば、アプライアンス、ファイアウォール、ロードバランサなど)およびアプリケーションサーバ110にトラフィックをルーティングすることができる。
【0020】
アプリケーションサーバ110は、クラウド104内のアプリケーション、隔離環境、またはサービスをホストする物理マシンおよび/またはリソースを表すことができる。例えば、アプリケーションサーバ110は、クラウド104内で様々なアプリケーションを実行する物理サーバであり得る。アプリケーションサーバ110は、VMまたはソフトウェアコンテナなどの隔離環境でそれらのアプリケーションの一部または全てを実行することができる。場合によっては、アプリケーションは、クラウド104内の複数のアプリケーションサーバ110によってホストされ、および/またはその上で実行され得る。例えば、複数のアプリケーションサーバ110は、アプリケーションのインスタンス(例えば、仮想インスタンス、レプリカ、並列インスタンス、ミラーインスタンスなど)を実行することができる。
【0021】
アプリケーションサーバ110は、他のデバイスまたはサービス(例えば、クラウドデータセンターアーキテクチャ100内のデバイスまたはサービス)と通信するための物理ネットワークインターフェース(例えば、NIC)を含むことができる。物理ネットワークインターフェースには、このような通信用の物理プレフィックスまたはネットワークアドレスを割り当てることができる。アプリケーションサーバ110はまた、ネットワークインターフェースおよび接続の仮想化または抽象表現を提供することができる1つ以上の仮想インターフェース(例えば、vNIC)を含むことができる。仮想インターフェースは、追加の柔軟性とネットワーク機能に加えて、リンクまたはデータの集約、データまたはネットワークの分離、アプリケーションとシステムトラフィックの分離、ネットワークインターフェースの拡張、ネットワーク冗長性、専用リンクなど、他の様々な利点またはサービスを提供することができる。仮想インターフェースは、クラウド104内の仮想アドレス(例えば、VIP)に割り当てることができる。仮想アドレスは、仮想インターフェース、ならびにアプリケーションサーバ110上の仮想アドレスに関連付けられた任意のアプリケーションまたは隔離環境を識別することができる。
【0022】
例えば、アプリケーションは、クラウド104内の仮想アドレスを割り当てることができ、これを使用して、クラウド104内のアプリケーションを識別し、アプリケーションとの間でトラフィックをルーティングすることができる。仮想アドレスを使用して、1つ以上のアプリケーションサーバ110上で実行されているアプリケーションの仮想インスタンスとの間でトラフィックをステアリングすることができる。場合によっては、仮想アドレスは、複数のアプリケーションサーバ110上の同じアプリケーションにマッピングすることができ、複数のアプリケーションサーバ110のうちのいずれか上のアプリケーションのインスタンスと通信するために使用することができる。
【0023】
場合によっては、アプリケーションサーバ110は、OVSまたはVPPなどの仮想スイッチを含むことができ、これは、アプリケーションサーバ110との間でトラフィックをルーティングすることができる。例えば、仮想スイッチは、アプリケーションサーバ上の物理ネットワークインターフェースと仮想ネットワークインターフェースとの間、アプリケーションサーバ上のアプリケーション間および/または分離環境間、およびアプリケーションサーバとアプリケーションサーバ外のデバイスまたはアプリケーションとの間でトラフィックをルーティングすることができる。例えば、アプリケーションサーバは、異なる仮想インターフェースと仮想アドレスに割り当てられた複数のワークロード(例えば、異なるVMまたはコンテナ内のアプリケーション)を実行することができる。アプリケーションサーバ上の仮想スイッチは、ワークロードの仮想アドレスを変換し、仮想インターフェース、ならびにアプリケーションサーバ上の物理ネットワークインターフェースなどの他のネットワークインターフェースと通信することにより、異なるワークロードとの間でトラフィックをルーティングすることができる。
【0024】
図2は、SRv6オーバーレイ202を備える例示的なマルチクラウド環境200の図を示す。マルチクラウド環境200は、SRv6を使用してクラウド104A~G間でトラフィックをルーティングするSRv6オーバーレイ202を介して相互接続されたクラウド104A~Gを含む。この例では、クラウド104Aはプライベートクラウドまたはサイトを表し、クラウド104B~Gはパブリッククラウドを表す。さらに、クラウド104B、104C、104Dは、クラウド104A用に構成され、クラウド104B、104C、104Dによってホストされる仮想プライベートクラウド(VPC)206、208、210を含む。この例に示されるように、クラウド104E~Gには、クラウド104Aに関連付けられたVPCは含まれない。ただし、以下で説明するように、本明細書のアプローチにより、クラウド104E~Gのいずれかでクラウド104A用にVPCを作成することが可能になり得る。
【0025】
コントローラ212は、クラウド104A~G上のゲートウェイ216A~Gとインタラクションして、トポロジ情報を収集し、パス計算を実行し、クラウド104A~Gおよび/またはVPC206~210を介してルートを伝播し、セグメントルーティング識別子(SID)およびポリシーをクラウド104A~Gならびに/またはVPC206~210に伝播し、トラフィックエンジニアリングなどを実行することができる。コントローラ212は、例えば、パス計算エンジンを備えるBGPコントローラであり得る。コントローラ212は、クラウド104Aまたは任意の他のネットワークもしくはクラウド上に常駐することができる。ゲートウェイ216A~Gは、例えば、クラウド104A~Gで利用可能な仮想ゲートウェイであり得る。場合によっては、仮想ゲートウェイにベクターパケット処理エンジン(VPP)を含めることができる。
【0026】
コントローラ212は、クラウド104A~Gおよび/またはVPC206~210からトポロジ情報を収集し、OSPF(オープン・ショーテスト・パス・ファースト)、IS-IS(インターミディエイト・システム・トゥ・インターミディエイト・システム)、BGPリンクステート(BGP-LS)、BGPトラフィックエンジニアリング(BGP-TE)などの1つ以上のプロトコルを使用して、転送ルールおよびSR ID(例えば、SID)およびポリシーを伝播することができる。例えば、コントローラ212は、BGP-LSプロトコルを使用して、ゲートウェイ216A~Gからクラウド104A~Gおよび/またはVPC206~210のトポロジ情報を収集することができる。コントローラ212はまた、ゲートウェイ216A~G間の最良のパスを計算するためのパス計算エンジン(PCE)を含むことができる。コントローラ212は、収集されたトポロジおよび/またはクラウド情報を使用して、パス計算を実行することができる。次に、コントローラ212は、BGP-TEを使用して、ゲートウェイ216A~G上に、転送ルールおよびSR IDおよびポリシーなどの到達可能性情報を取り込むことができる。
【0027】
ゲートウェイ216A~Gは、BGP-LSおよびBGP-TEとインターフェースして、コントローラ212から転送ルールおよびSR IDポリシーを受信する制御プレーンを含むことができる。ゲートウェイ216A~Gはまた、IPv4および/またはIPv6パケットを処理し、IPv4またはIPv6パケットをSRv6パケットにカプセル化/カプセル化解除し得るデータプレーンを含むことができる。さらに、ゲートウェイ216A~Gは、コントローラ212または任意のBGPピアとインタラクションするために、GoBGPエージェントなどのBGPエージェント218A~Gを含むことができる。場合によっては、ゲートウェイ216A~Gは、ネットワークパフォーマンス情報を収集し、ゲートウェイ216A~G間のサービス品質(QOS)を監視するために、IPSLA(インターネット・プロトコル・サービス・レベル・アグリーメント)に基づくアクティブな測定システムを含むこともできる。
【0028】
コントローラ212は、IPv4またはIPv6を介してクラウド104A~Gと通信することができる。SRv6オーバーレイ202は、以下でさらに説明されるように、SRv6を使用してSRv6オーバーレイ202上にトラフィックをルーティングすることができるSRv6対応ノードを含むことができる。
【0029】
図3Aは、SRv6オーバーレイ202を介してルーティングされたトラフィックのための例示的なSRv6パケット300を示す。SRv6パケット300は、ペイロード302、IPv6ヘッダ304、およびSRヘッダ306を含む。SRヘッダ306は、セグメント314のリストまたはSRリストを含むセグメントフィールド312を含むことができる。セグメント314のリストは、SRv6パケット300の宛先ノードのセットを含むことができる。例えば、セグメント314のリストは、
図1に示されるクラウド104からのアプリケーションサーバ110-1(S1)およびアプリケーションサーバ110-2(S2)を含むことができる。セグメント314のリスト内の宛先ノードは、1つのクラウド(例えば、104)または複数のクラウド(例えば、104A~G)上に存在することができる。セグメント314のリストはまた、
図3Bを参照して以下でさらに説明するように、各セグメント用のそれぞれの関数を含むことができる。
【0030】
SRヘッダ306内のセグメント314のリストは、SRv6オーバーレイ202内のノードによって使用されて、パケット300をセグメント314のリスト内の宛先ノード(例えば、アプリケーションサーバ110-1および110-2)にステアリングすることができる。セグメント314のリストは、パケットのパスに沿った各セグメント(例えば、SRv6対応ノード)を識別する。各SRv6対応ノードは、ノードでインスタンス化されたSRv6セグメントのリストを維持することができる。SRv6対応ノードは、SRv6セグメントのリストを使用して、パケットをセグメントリスト314内の次のセグメントにルーティングすることができる。
【0031】
セグメントフィールド312はまた、アクティブなセグメントを識別する、セグメントレフトとして知られるカウンタ318を含むことができる。カウンタ318の値は、パケットがIPv6ネットワークを通過するにつれてSRv6対応ノードによって受信されるたびに1ずつ減少する。
【0032】
IPv6ヘッダ304は、送信元アドレスフィールド310および宛先アドレスフィールド308を含むことができる。送信元アドレスフィールド310は、クライアント102などのパケット300の送信元を識別することができる。送信元アドレスフィールド310は、パケット300の元の送信元のネットワークアドレス、パケット300の戻り宛先、および/またはパケット300の現在の送信元または送信者を含むことができる。ソースフィールド310はまた、以下でさらに説明するように、ソースフィールド310で識別されるノードによって実装されるコマンドまたは関数を含むことができる。
【0033】
宛先アドレスフィールド308は、セグメント314のリストから次のセグメントまたはノードを識別することができる。この例では、宛先アドレスフィールド308は、パケット300のセグメント314のリストにおける最初の宛先ノードであるサーバ110-1(S1)を識別する。宛先アドレスフィールド308は、パケット300を次の宛先にステアリングするために使用することができる。IPv6ヘッダ304の宛先フィールド308は、パケット300がSR非認識ノードを通過する場合でも、パケット300をルーティングすることを可能にすることができる。
【0034】
宛先アドレスフィールド308は、識別されたノードまたはセグメントのネットワークプレフィックスを含むことができる。例えば、宛先アドレスフィールド308は、サーバ110-1(S1)の物理プレフィックスを含むことができる。これは、パケット300が、パケット300の最初の宛先として、そのノードまたはセグメント(例えば、サーバ110-1(S1))に送信されることを確実にし得る。サーバ110-1(S1)がパケット300を処理した後、サーバ110-1(S1)は、パケット300をセグメント314のリスト内の次のセグメント(この例ではサーバ110-2(S2))に転送することができる。パケットを転送するとき、サーバ110-1(S1)は、IPv6ヘッダ304上の宛先アドレスフィールド308を上書きして、サーバ110-2(S2)を宛先として識別することができ、これにより、パケット300がサーバ110-2(S2)にルーティングされることが確実となる。次に、サーバ110-2(S2)は、宛先アドレスフィールド308に基づいてパケット300を受信することができる。このようにして、SRヘッダ306内のセグメント314のリスト、およびIPv6ヘッダ304内の宛先アドレスフィールド308を使用して、パケット300をセグメント314のリスト内の宛先ノードにプッシュすることができる。
【0035】
さらに説明されるように、セグメント314および/または宛先アドレスフィールド308のリストは、関連するノードまたはセグメントによって実装される関数またはコマンド(以下、「SR関数」)を含むことができる。例えば、宛先アドレスフィールド308は、アプリケーションサーバ110-1(S1)を識別し、アプリケーションサーバ110-1(S1)がその関数に関連付けられたアプリケーションまたはノードに接続するための要求として解釈することができる接続関数など、アプリケーションサーバ110-1(S1)によって適用される関数を含むことができる。宛先アドレスフィールド308は、パケットの次の宛先、送信元または戻りノード、およびそのようなノードまたはセグメントのための任意のコマンドまたは関数を含む、パケット300の状態を含むことができる。
【0036】
同様に、セグメント314のリストは、セグメント314のリスト内のセグメントのためのコマンドまたは関数を含むことができる。例えば、セグメント314のリストは、宛先ノードまたはセグメントの各々の接続関数、セグメント314のリストの最後のセグメントの強制接続関数、1つ以上のセグメント(例えば、リソース識別子、フロー識別子など)、状態情報などのための1つ以上のパラメータを含むことができる。
【0037】
SR関数は、ノードによるアクションを、SRヘッダ306および/またはIPv6ヘッダ304に直接コード化することができる。SR関数は、SRv6対応ノードによってローカルで実行される。SR関数の例には、End(つまり、エンドポイント関数)、End.X(つまり、レイヤ3クロスコネクトを備えるエンドポイント関数)、End.T(つまり、特定のIPv6テーブルルックアップを備えるエンドポイント関数)、End.S(つまり、テーブルT内のターゲットを検索するエンドポイント)、End.B6(つまり、SRv6ポリシーにバインドされたエンドポイント)などが含まれるが、これらに限定されない。例えば、s::cjを含むSRヘッダ(306)では、s::cjはノードsへの最短パスを示し、隣接jへのx接続関数(関数c)を示す。
【0038】
一部の例では、各ノードにIPv6プレフィックス全体を割り当てることができる。したがって、プレフィックスの下位バイトを使用して、異なるSR関数を指定することができる。場合によっては、SR関数は、セグメント314のリスト内の最初のセグメントのアドレス(例えば、関数の「送信者」)に依存し得る。例として、物理プレフィックスがsであるノードが、(x、...、s::f、...)を含むSRヘッダ306を含むパケットを受信すると、SRヘッダ306は、ノードsをトリガーして、s.f(x)で示される引数xを有する関数fを実行する。
【0039】
図3Bは、IPv6ヘッダ304における例示的な宛先アドレスフィールド308の概略図を示す。宛先アドレスフィールド308は、128ビットを含むことができ、これは、ノードプレフィックス326の最初の64ビットからの第1のセグメント320、SR関数328の次の32ビットからの第2のセグメント322、およびSR関数328のための任意の引数330を含む、次の32ビットからの第3のセグメント324を含むようにセグメント化することができる。この例は、64ビットのセグメント、32ビットのセグメント、および32ビットのセグメントにセグメント化された宛先アドレスフィールド308を示しているが、宛先アドレスフィールド308は、柔軟なビット選択を可能にし、これにより、他の方式でセグメント化され得ることに留意されたい。
図3Bの例は、例証および説明の目的で提供される。
【0040】
ノードプレフィックス326は、次のセグメントまたはノードの物理プレフィックスを含むことができる。SR関数328は、ノードプレフィックス326に関連付けられたコマンドまたは関数を含むことができる。場合によっては、第3のセグメント324は、SR関数328の引数を含むことができるサブセグメントにさらにセグメント化され得る。引数を使用して、SR関数328の特定のパラメータを渡すことができる。
【0041】
図4は、対応するIPv6およびSRv6ヘッダ404、406、408に基づく、SRv6トラフィック(例えば、SRv6パケット300)の例示的なフローを示す。この例では、クライアント102は、パケット402をスイッチ108-Nに送信する。パケット402は、クライアントデバイス102をトラフィックの送信元および宛先アドレスとして識別することができる。
【0042】
スイッチ108-Nは、パケット402を受信し、IPv6およびSRv6ヘッダ404に基づいて、パケットをアプリケーションサーバ110-1(S1)に転送することができる。ヘッダ404内のSRv6ヘッダは、宛先セグメントとしてアプリケーションサーバ110-1、110-2、110-3を識別するセグメント410のリストを含むことができる。SRv6ヘッダは、ヘッダ404内に、セグメント410のリスト内の残りのセグメントまたはホップの数を識別するセグメントレフト(SL)カウンタ412を含むこともできる。
【0043】
アプリケーションサーバ110-1(S1)は、スイッチ108-Nからパケット402を受信し、それを処理することができる。次に、アプリケーションサーバ110-1(S1)は、ヘッダ406内のセグメント410のリストに基づいて、セグメント410のリスト内の次のセグメントであるアプリケーションサーバ110-2(S2)にパケット402を転送することができる。アプリケーションサーバ110-1(S1)はまた、セグメント410のリスト内の残りのセグメントまたはホップの数を識別するSLカウンタ412を減少させることができる。
【0044】
アプリケーションサーバ110-2(S2)は、アプリケーションサーバ110-1(S1)からパケット402を受信し、それを処理することができる。次に、アプリケーションサーバ110-2(S2)は、ヘッダ408内のセグメント410のリストに基づいて、セグメント410のリスト内の次のセグメントであるアプリケーションサーバ110-3(S3)にパケット402を転送することができる。アプリケーションサーバ110-2(S2)はまた、セグメント410のリスト内の残りのセグメントまたはホップの数を識別するSLカウンタ412を減少させることができる。
【0045】
アプリケーションサーバ110-3(S3)は、アプリケーションサーバ110-2(S2)からパケット402を受信し、それを処理することができる。アプリケーションサーバ110-3(S3)は、セグメント410のリストの最後のセグメントである。したがって、アプリケーションサーバ110-3(S3)は、パケットを別の宛先セグメントに転送することなく、セグメント410のリスト内の残りのセグメントまたはホップの数を識別するSLカウンタ412を減少させることができる。
【0046】
図5Aは、
図2に示されるマルチクラウド環境200など、SRv6オーバーレイ202を備えるマルチクラウド環境上のクラウド104Bおよび104CにVPCを作成するための例示的なコンポーネントとインタラクションの
図500を示す。この例では、クラウド104BはクラウドプロバイダAの東部リージョンのクラウドを表し、クラウド104CはクラウドプロバイダBに関連付けられたクラウドを表す。VPC206および208は、クラウド104Bおよび104C上のクラウド104A(例えば、エンタープライズネットワークまたはプライベートクラウド)に関連付けられたクライアント用に作成される。VPC206および208は、クラウド104Aに、かつお互いに、相互接続することができる。さらに、VPC206および208は、クラウド104Bおよび104Cでホストされるクラウド104Aの仮想拡張として機能することができる。
【0047】
クラウド104Aに関連付けられたクライアントがクラウド104Bおよび104C上に新しいVPC(例えば、VPC206および208)を作成するとき、スクリプトまたはプログラムをトリガー/呼び出して、ゲートウェイ216Bおよび216Cならびにエージェント218Bおよび218Cをクラウド104Bおよび104C上に展開することができる。各クラウドプロバイダ(例えば、クラウド104Bおよび104C)は、そのような展開を可能にするために特定のアプリケーションプログラミングインターフェース(API)を有することができる。ゲートウェイ216Bおよび216Cならびにエージェント218Bおよび218Cは、クラウド104Bおよび104C上のVMまたはノード(例えば、サーバ、ソフトウェアコンテナなど)に展開することができる。場合によっては、ゲートウェイ216Bおよび216Cならびにエージェント218Bおよび218Cは、クラウド104Bおよび104Cに関連付けられたクラウドマーケットプレイスからのVMで展開することができる。
【0048】
ゲートウェイ216Bおよび216Cは、VPC(例えば、206および208)との間で通信されるトラフィックのためのレイヤ3(L3)ルータとして操作することができる。展開されると、ゲートウェイ216Bおよび216Cならびにエージェント218Bおよび218Cは、それら自体をコントローラ212にアナウンスおよび登録することができる。コントローラ212のアドレスは、SaaS(サービスとしてのソフトウェア)モデルの場合には事前に構成することができ、またはクライアントが独自のコントローラを操作したい場合はクライアントによって手動で定義することができる。
【0049】
コントローラ212は、新しく作成されたゲートウェイ(216B~C)をコントローラ212への接続を許可されているかどうかをチェックすることができる。異なる価格設定モデル(例えば、BGPコントローラごとの仮想ゲートウェイの同時数の制限など)に依存し得る様々なポリシーを検討することができる。コントローラ212との接続が確立されると、ゲートウェイ216Bおよび216Cは、VPC206、208内のプライベートネットワークをコントローラ212にアナウンスすることを開始することができる。この通信は、例えば、BGP-LSを介して実現することができる。
【0050】
次に、コントローラ212は、ルート、SR ID(SID)、およびSRポリシーをゲートウェイ216Bおよび216Cに送信することができる。必要に応じて、BGPエージェント218Bおよび218Cは、BGPSecプロトコルなどのセキュリティ保護を構成することもできる。場合によっては、ネットワークサービスオーケストレータ(NSO)502は、様々なクラウド(例えば、クラウド104A~C)上のリソースのオーケストレーションを容易にするために、コントローラ212と通信して展開され得る。
【0051】
ゲートウェイ216Bおよび216Cは、ルート、SID、およびSRポリシーを使用して、SRv6オーバーレイ202内のセグメントにトラフィックをルーティングすることができる。ゲートウェイ216Bおよび216CがSRv6ヘッダを備えるパケットを受信すると、ゲートウェイ216Bおよび216Cは、パケットを宛先ノードにルーティングし、SRv6ヘッダに基づいてSR関数を実行することができる。場合によっては、本明細書のアプローチは、End、End.X、End.T、およびSRプロキシ関数に適用可能な新しいSRv6関数フレーバーを実装することができ、これは、クラウド(104A、104B、104Cなど)を出るときに、RPF(リバース・パス・フォワーディング)チェックの失敗を回避するためにIPv6送信元アドレス(SA)を変更する。
【0052】
上に示したように、本明細書のアプローチは、クライアント(例えば、クラウド104A)のために新しいリージョンまたはVPCを容易かつ効率的に追加するための技術を提供する。このプロセスには、特定のクラウドまたはクラウドリージョンでの新しいVPCの作成、コントローラ(コントローラ212など)に登録するためにプレステージングされた新しいVPCのクラウドまたはクラウドリージョンでの仮想ゲートウェイのロード、ならびにルート、SID、およびSRポリシーのコントローラを介した仮想ゲートウェイへの送信が含まれ得る。さらに、新しいリージョンまたはVPCを追加しても、他の既存のリージョンには影響しない(つまり、他のサイトに変更はない)。新しく作成された仮想ゲートウェイがコントローラ(212)からその設定を受信すると、既存のリージョンがプロセスに介入することなく、任意対任意(any-to-any)リージョンまたはVPCルーティングが有効になる。
【0053】
例えば、
図5Bは、異なるクラウド(104D)上に作成され、マルチクラウド環境においてクラウド104Aならびにクラウド104Bおよび104C上のVPC206および208と相互接続された新しいVPC210を示す。この例では、新しいVPC210がクラウドAの西部リージョン(例えば、104D)に作成される。クライアント(例えば、クラウド104A)は、最初にクラウド104D上に新しいVPC210を作成する。次に、クライアントは、仮想ゲートウェイ216DおよびBGPエージェント218Dをクラウド104Dにロードする。仮想ゲートウェイ216DおよびBGPエージェント218Dは、クラウド104D上の1つ以上のVM、サーバ、ソフトウェアコンテナ、ノードなどにロードすることができる。例えば、仮想ゲートウェイ216Dは、クラウド104Dに関連付けられたクラウドマーケットプレイスで利用可能なVMを介して展開することができる。
【0054】
クライアントは、仮想ゲートウェイ216D(BGPエージェント218Dを含む)をプレステージングして、コントローラ212に登録することができる。仮想ゲートウェイ216Dがコントローラ212に接続されて登録されると、コントローラ212は、仮想ゲートウェイ216Dからトポロジ情報を収集することができる。コントローラ212は、例えば、BGP-LSを使用してトポロジ情報を収集することができる。コントローラ212は、新しいVPC210とクラウド104AならびにVPC206および208との間の最良のパスを計算することができる。より具体的には、コントローラ212は、様々な場所(例えば、104A、206、208)で仮想ゲートウェイ216A~D間のパスを計算することができる。コントローラ212は、パス計算エンジンを使用してパスを計算することができる。
【0055】
次に、コントローラ212は、ルート、SID、およびSRポリシーを仮想ゲートウェイ216Dに送信する。SIDは、SRv6オーバーレイ202内のSR認識ノードに対応することができる。ルート、SID、およびSRポリシーを使用して、SRv6オーバーレイ202を介して仮想ゲートウェイ216A~D間でトラフィックをルーティングすることができる。これは、仮想ゲートウェイ216A~D間、したがって、クラウド104AとVPC206、208、および210との間の相互接続を提供する。このような相互接続には、クラウド104AとVPC206、208、210との間の任意対任意の接続が含まれる。一部の例では、コントローラ212は、BGP SR-TEを介して仮想ゲートウェイ216Dに特定の転送ルールを取り込むことができる。仮想ゲートウェイ216Dは、転送ルールをその転送テーブルに追加することができ、仮想ゲートウェイ216Dは、これを使用して、新しいVPC210とクラウド104AならびにVPC206および208との間でトラフィックをルーティングする場所または方法を決定することができる。
【0056】
新しいVPC210を構成し、新しいVPC210をクラウド104AならびにVPC206および208と相互接続するためのプロセスは、自動化するか、または実質的に自動化することができ、他の既存のクラウドまたはリージョン(例えば、クラウド104AならびにVPC206および208)を変更することなく完了することができる。
【0057】
場合によっては、インターネットエッジルータ(物理または仮想)をSRv6オーバーレイ202に展開して、異なるリージョン/ネットワーク(例えば、クラウド104AならびにVPC206および208)をインターネット214に接続することができる。例えば、
図5Cを参照すると、インターネットエッジルータ204は、SRv6オーバーレイ202に挿入することができる。コントローラ212は、ルート、SID、およびSRポリシーをインターネットエッジルータ204に送信することができる。コントローラ212は、BGP SR-TEを使用して、インターネットエッジルータ204に適切な転送データを取り込むことができる。次に、インターネットエッジルータ204は、インターネット214と異なるリージョン/ネットワーク(例えば、クラウド104AならびにVPC206および208)との間でトラフィックをルーティングすることができる。
【0058】
図5Dを参照すると、インターネットエッジルータ204A~C(物理または仮想)をSRv6オーバーレイ202に展開して、異なるリージョン/ネットワーク(例えば、クラウド104AならびにVPC206および208)に、複数のインターネットピアリングポイント214A、214Bおよびコンテンツ配信ネットワーク504へのアクセスを提供することができる。コントローラ212は、ルート、SID、およびSRポリシーをインターネットエッジルータ204A~Cに送信することができ、インターネットエッジルータ204A~Cは、これらを使用して、インターネットピアリングポイント214A、214Bおよびコンテンツ配信ネットワーク504への接続を可能にし得る。コントローラ212は、BGP SR-TEを使用して、インターネットエッジルータ204A~Cに適切な転送データを取り込むことができる。次に、インターネットエッジルータ204A~Cは、異なるリージョン/ネットワーク(例えば、クラウド104AならびにVPC206および208)に、インターネットピアリングポイント214A、214Bおよびコンテンツ配信ネットワーク504への直接アクセスを提供することができる。
【0059】
図5Eを参照すると、一部の例では、コントローラ212およびNSO502は、クラウドプロバイダ104Eによって提供されるクラウドサービスであり得る。コントローラ212およびNSO502は、クラウド104Eによってホストされ得、異なるリージョン/ネットワーク(例えば、クラウド104AならびにVPC206および208)上の仮想ゲートウェイ216A~Cからトポロジ情報を収集し、パスを計算し、ルート、SID、およびSRポリシーを仮想ゲートウェイ216A~Cおよびインターネットエッジルータ204A~Cに送信するように構成され得る。
【0060】
図6は、例示的なサービスチェイニングトラフィックフロー600を示しており、本明細書のアプローチに従って相互接続されたクラウド104B、104C、104D内のVPC206、208、210上のノードを介してパケットがSRv6オーバーレイ202上でステアリングされる。この例では、クラウド104BはクラウドプロバイダAのリージョン1にあるクラウドを表し、クラウド104CはクラウドプロバイダBのリージョン2にあるクラウドを表し、クラウド104DはクラウドプロバイダAのリージョン2にあるクラウドを表す。クラウド104B、104C、および104Dは、それぞれ、前述のように構成されたVPC206、208、および210を含む。さらに、VPC206、208、および210は、それぞれ、前述のように構成された仮想ゲートウェイ216B、216C、および216Dを含む。仮想ゲートウェイ216B、216C、および216Dは、全てSRv6対応ノードである。
【0061】
さらに、VPC206はサーバ602(サーバ1)を含み、VPC208はサーバ604(サーバ4)および606(サーバ5)を含み、VPC210はサーバ608(サーバ2)および610(サーバ3)を含む。仮想ゲートウェイ216B、216C、および216Dは、トラフィックフロー600に示されるように、VPC206、208、および210を相互接続し、VPC206、208、および210上の様々なサーバ(602、604、606、608、610)にパケットをルーティングすることができる。
【0062】
この例では、サーバ602(サーバ1)は、パケット612を仮想ゲートウェイ216Bに送信する。パケット612は、VPC210上のサーバ602(サーバ1)に対応する送信元アドレス616A(SA)およびサーバ608(サーバ2)に対応する宛先アドレス616B(DA)を有するIPv4ヘッダ614を含む。仮想ゲートウェイ216Bは、パケット612を受信し、パケット612をSRv6ヘッダ622およびIPv6ヘッダ624でカプセル化して、SRv6オーバーレイ202を介してルーティングするためのSRv6パケット618を作成する。次に、仮想ゲートウェイ216Bは、パケット618を、インターネット214およびSRv6オーバーレイ202を介して仮想ゲートウェイ216C(C2)に送信する。
【0063】
SRv6ヘッダ622は、トラフィック用に構成されたサービスチェーンに関連付けられたセグメントのリストを含むことができる。セグメントのリストには、セグメント628Aとセグメント628Bが含まれる。セグメント628AはVPC208上の仮想ゲートウェイ216Cを表し、セグメント628BはVPC210上の仮想ゲートウェイ216Dを表す。さらに、セグメント628Aおよび628Bは、パケット618の受信時にセグメント628Aおよび628Bによって実行されるそれぞれのSR関数に関連付けられる。この例では、セグメント628Aは、仮想ゲートウェイ216C(例えば、セグメント628A)にサーバ4(604)にx接続するように指示する関数C4に関連付けられており、セグメント628Bは、仮想ゲートウェイ216D(例えば、セグメント628B)にサーバ2(608)にx接続(関数C)するように指示する関数C2に関連付けられる。SRv6ヘッダ622内のセグメントのリストはまた、アクティブなセグメントまたはセグメントレフトを識別するカウンタ630Aを含む。サーバ4(604)は、サービスチェーンの最初のサービスを表すことができ、サーバ2(608)は、サービスチェーンの次のサービスを表すことができる。したがって、関連するSR関数を含むセグメントのリスト(628A、628B)は、仮想ゲートウェイ216B~Dによって使用されて、サービスチェーンを通してパケット618をステアリングすることができる。
【0064】
パケット618のIPv6ヘッダ624は、仮想ゲートウェイ216B(例えば、C1)に対応する送信元アドレス626Aと、VPC208上の仮想ゲートウェイ216Cに対応する宛先アドレス626Bとを含むことができる。IPv6ヘッダ624内の宛先アドレス626Bはまた、受信時に仮想ゲートウェイ216Cによって実行される関数を含むことができる。この例では、関数はC4であり、これは、前述のように、仮想ゲートウェイ216C(セグメント628Aなど)にサーバ4(604)にx接続(関数C)するように指示する。
【0065】
仮想ゲートウェイ216C(C2)は、パケット618を受信すると、SRv6ヘッダ622内のセグメントおよび関連関数のリスト、ならびにIPv6ヘッダ624上の宛先アドレス626Bおよび関連関数を調べて、パケット618の処理方法を決定する。次に、仮想ゲートウェイ216C(C2)は、仮想ゲートウェイ216C(C2)に対応するセグメント628AのSRv6ヘッダ622およびIPv6ヘッダ624で定義された関数C4を実行する。したがって、関数C4に基づいて、仮想ゲートウェイ216C(C2)は、パケット618をサーバ4(604)に送信する。サーバ4(604)は、パケット618を受信し、それに応じてパケットを処理することができる。
【0066】
仮想ゲートウェイ216C(C2)はまた、SRv6ヘッダ622上のセグメントのリスト内の次のセグメント628Bを識別し、パケット618が仮想ゲートウェイ216Dにルーティングされるべきであると決定する。仮想ゲートウェイ216C(C2)は、次のセグメント628B(仮想ゲートウェイ216D)に送信するためにパケット618を変更する。変更されたパケット620は、古いカウンタ630Aの新しいセグメントレフト値が1減少したことを示す新しいカウンタ630Bを含む。変更されたパケット620はまた、変更されたIPv6ヘッダ632を含む。変更されたIPv6ヘッダ632は、パケット618のIPv6ヘッダ624に含まれるのと同じ送信元アドレスである送信元アドレス626Aと、次のセグメント628B(仮想ゲートウェイ216D)に対応する新しい宛先アドレス626C(C3)を識別する。新しい宛先アドレス626C(C3)はまた、受信時に次のセグメント628Bによって実行される関数に関連付けられる。この例では、関数はC2であり、これは、次のセグメント628B(仮想ゲートウェイ216D)にサーバ2(608)にx接続(関数C)するように指示する。
【0067】
次に、仮想ゲートウェイ216C(C2)は、変更されたパケット620を、SRv6ヘッダ622内の次のセグメント628Bとして識別される仮想ゲートウェイ216D(C3)に送信する。仮想ゲートウェイ216D(C3)は、変更されたパケット620を受信すると、SRv6ヘッダ622内のセグメントおよび関連関数のリスト、ならびにIPv6ヘッダ632内の宛先アドレス626および関連関数を調べて、変更されたパケット620の処理方法を決定する。次に、仮想ゲートウェイ216C(C2)は、仮想ゲートウェイ216D(C3)に対応するセグメント628BのSRv6ヘッダ622およびIPv6ヘッダ632で定義された関数C2を実行する。関数C2に基づいて、仮想ゲートウェイ216D(C3)は、パケット612を、フロー600の最終宛先であるサーバ2(608)に送信する。サーバ2(608)は、パケット612を受信し、それに応じてパケットを処理することができる。
【0068】
上に示したように、仮想ゲートウェイ(例えば、216B~D)は、SRv6オーバーレイ202上でサービス挿入およびSRv6ベースのサービスチェーンを実行することができる。場合によっては、仮想ゲートウェイはBGP-TEを使用してサービスチェーンの配布を実行することができる。さらに、場合によっては、仮想ゲートウェイは、BGPポリシー(場所、内部トラフィックおよび外部トラフィック、インターネット、イントラネットなど)に基づいてサービスチェーンを実行することができる。仮想ゲートウェイは、SRv6ベースのロードバランシングとパフォーマンスベースのルーティングも実行することができる。例えば、仮想ゲートウェイは、それらの間の遅延を測定することができる。コントローラ212は、レイテンシ測定値を使用して、仮想IP(VIP)またはエニーキャストアドレスなどのアドレスによって識別される所与のサービスに到達するための最適なパスまたはVPCを計算することができる。仮想ゲートウェイは、異なるクラウドプロバイダおよび/またはクラウドプロバイダリージョンの間でVPCを相互接続することができる。本明細書での手法により、プライベートクラウドまたはネットワークに関連付けられたクライアントは、新しいVPCを異なるクラウドプロバイダまたはクラウドプロバイダリージョンに簡単に展開し、それらのVPCをクライアントのネットワークおよび確立された任意の他のVPCと相互接続することが可能になる。
【0069】
例示的なシステムおよび概念を説明してきたので、本開示は、次に、
図7に示される方法に移る。本明細書に概説されるステップは例示であり、それらの任意の組み合わせで実装することができ、特定のステップを除外、追加、または変更する組み合わせを含む。
【0070】
ステップ702で、プライベートネットワーク(例えば、104A)と、プライベートネットワークに接続された1つ以上のVPC(例えば、206、208)と、を含むマルチクラウド環境(例えば、200)に、1つ以上のVPCおよびプライベートネットワーク上のセグメントルーティングドメイン(例えば、SRv6オーバーレイ202)およびそれぞれの仮想ルータ(例えば、仮想ゲートウェイ216A~C)を介して、新しいVPC(例えば、210)を追加することができる。
【0071】
ステップ704で、新しい仮想ルータ(例えば、仮想ゲートウェイ216D)を新しいVPC上に展開することができる。新しい仮想ルータは、新しいVPCの着信トラフィックおよび発信トラフィックをルーティングすることができる。場合によっては、新しい仮想ルータは、新しいVPCをホストするクラウドプロバイダに関連付けられたクラウドマーケットプレイスから取得したVM、サーバ、またはソフトウェアコンテナを介して展開することができる。
【0072】
ステップ706で、新しい仮想ルータは、セグメントルーティングドメインのBGPコントローラ(例えば、212)に登録することができる。場合によっては、新しい仮想ルータをプレステージングして、展開時にBGPコントローラに登録することができる。
【0073】
ステップ708で、BGPコントローラは、新しい仮想ルータから、新しいVPCに関連付けられたトポロジ情報を受信することができる。場合によっては、BGPコントローラはBGP-LSを介してトポロジ情報を受信することができる。
【0074】
ステップ710で、BGPコントローラは、トポロジ情報に基づいて計算された1つ以上のパスに基づいて、マルチクラウド環境内のルートを識別することができる。1つ以上のパスは、プライベートネットワークと、1つ以上のVPCと、新しいVPCとの間で計算される最適なパスであり得る。例えば、BGPコントローラは、トポロジ情報に基づいてパスを計算することができるパス計算エンジンを含むことができる。
【0075】
ステップ712で、BGPコントローラは、マルチクラウド環境を介して通信するためのルーティング情報を新しい仮想ルータに送信することができる。ルーティング情報には、マルチクラウド環境に関連付けられたルート、セグメントルーティング識別子(SIDなど)、およびセグメントルーティングポリシーが含まれる。セグメントルーティング識別子は、それぞれの仮想ルータおよび新しい仮想ルータなど、マルチクラウド環境上のSRv6対応ノードに対応することができる。例えば、BGPコントローラは、BGP-TEを使用して新しい仮想ルータにルーティング情報を入力することができる。
【0076】
ルーティング情報に基づいて、ステップ714で、方法は、セグメントルーティングドメイン、それぞれの仮想ルータ、および新しい仮想ルータを介して、プライベートネットワークと、1つ以上のVPCと、新しいVPCとの間の相互接続を提供することができる。前述のように、それぞれの仮想ルータおよび新しい仮想ルータは、ルート、セグメントルーティング識別子、およびセグメントルーティングポリシーに基づいて、プライベートネットワークと、1つ以上のVPCと、新しいVPCとの間でトラフィックをルーティングすることができる。
【0077】
場合によっては、インターネットエッジルータ(例えば、204)をセグメントルーティングドメインに展開して、プライベートネットワーク、1つ以上のVPC、および新しいVPCへのインターネット接続を提供することができる。BGPコントローラは、マルチクラウド環境に関連付けられたルーティング情報をインターネットエッジルータに送信することができる。ルーティング情報により、インターネットエッジルータは、プライベートネットワーク、1つ以上のVPC、および新しいVPCをインターネットに接続することができる。
【0078】
次に、本開示は、スイッチ、ルータ、ロードバランサ、クライアントデバイスなどのネットワークデバイスおよびコンピューティングデバイスの例を示す
図8および9に移る。
【0079】
図8は、スイッチング、ルーティング、ロードバランシング、および他のネットワーキング操作を実行するのに好適な例示的なネットワークデバイス800を示す。ネットワークデバイス800は、中央処理装置(CPU)804、インターフェース802、および接続部810(例えば、PCIバス)を含む。適切なソフトウェアまたはファームウェアの制御下で動作する場合、CPU804は、パケット管理、エラー検出、および/またはルーティング関数を実行する責任を負う。CPU804は、好ましくは、オペレーティングシステムおよび任意の適切なアプリケーションソフトウェアを含むソフトウェアの制御下でこれら全ての機能を達成する。CPU804は、マイクロプロセッサのINTELX86ファミリからのプロセッサなどの1つ以上のプロセッサ808を含み得る。場合によっては、プロセッサ808は、ネットワークデバイス800の操作を制御するために特別に設計されたハードウェアであり得る。場合によっては、メモリ806(例えば、不揮発性RAM、ROMなど)もまた、CPU804の一部を形成する。ただし、メモリをシステムに結合することができる多くの異なる方式がある。
【0080】
インターフェース802は、通常、モジュラーインターフェースカード(「ラインカード」と称されることもある)として提供される。一般に、それらはネットワークを介したデータパケットの送受信を制御し、ネットワークデバイス800で使用される他の周辺機器をサポートする場合がある。提供され得るインターフェースの中には、イーサネットインターフェース、フレームリレーインターフェース、ケーブルインターフェース、DSLインターフェース、トークンリングインターフェースなどがある。さらに、高速トークンリングインターフェース、ワイヤレスインターフェース、イーサネットインターフェース、ギガビットイーサネットインターフェース、ATMインターフェース、HSSIインターフェース、POSインターフェース、FDDIインターフェース、WIFIインターフェース、3G/4G/5Gセルラーインターフェース、CAN BUS、LoRAなど、様々な非常に高速なインターフェースが提供される場合がある。一般に、これらのインターフェースには、適切な媒体との通信に適したポートが含まれている場合がある。場合によっては、独立したプロセッサと、場合によっては揮発性RAMも含まれることがある。独立したプロセッサは、パケット交換、媒体制御、信号処理、暗号処理、管理などの通信集約型タスクを制御することができる。通信集約型タスクのために別個のプロセッサを提供することにより、これらのインターフェースは、マスターマイクロプロセッサ804がルーティング計算、ネットワーク診断、セキュリティ機能などを効率的に実行することを可能にする。
【0081】
図8に示されるシステムは、本技術の1つの特定のネットワークデバイスであるが、本技術が実装され得る唯一のネットワークデバイスアーキテクチャであることを意味するものではない。例えば、通信ならびにルーティング計算などを処理する単一のプロセッサを備えるアーキテクチャがよく使用される。さらに、他のタイプのインターフェースおよび媒体もまた、ネットワークデバイス800と共に使用され得る。
【0082】
ネットワークデバイスの構成に関係なく、本明細書で説明するローミング、ルート最適化、およびルーティング関数のための汎用ネットワーク操作およびメカニズムのためのプログラム命令を格納するように構成された1つ以上のメモリまたはメモリモジュール(メモリ806を含む)を使用することができる。プログラム命令は、例えば、オペレーティングシステムおよび/または1つ以上のアプリケーションの操作を制御することができる。1つ以上のメモリはまた、モビリティバインディング、登録、および関連付けテーブルなどのテーブルを格納するように構成され得る。メモリ806はまた、様々なソフトウェアコンテナおよび仮想化実行環境およびデータを保持することができる。
【0083】
ネットワークデバイス800はまた、ルーティングおよび/またはスイッチング操作を実行するように構成され得る特定用途向け集積回路(ASIC)を含むことができる。ASICは、接続部810を介してネットワークデバイス800内の他のコンポーネントと通信して、データおよび信号を交換し、例えば、ルーティング、スイッチング、および/またはデータ記憶操作などのネットワークデバイス800による様々なタイプの操作を調整することができる。
【0084】
図9は、システムのコンポーネントが、バスなどの接続部905を使用して互いに電気的に通信するコンピューティングシステムアーキテクチャ900を示す。例示的なシステム900は、処理ユニット(CPUまたはプロセッサ)910と、読み出し専用メモリ(ROM)920およびランダムアクセスメモリ(RAM)925などのシステムメモリ915を含む様々なシステムコンポーネントをプロセッサ910に結合するシステム接続部905とを含む。システム900は、プロセッサ910に直接接続されているか、近接しているか、またはプロセッサ910の一部として統合されている高速メモリのキャッシュを含むことができる。システム900は、プロセッサ910による高速アクセスのために、メモリ915および/またはストレージデバイス930からキャッシュ912にデータをコピーすることができる。このようにして、キャッシュは、データを待機している間のプロセッサ910の遅延を回避するパフォーマンス向上を提供することができる。これらおよび他のモジュールは、様々なアクションを実行するために、プロセッサ910を制御するか、または制御するように構成され得る。他のシステムメモリ915も同様に利用可能であり得る。メモリ915は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ910は、任意の汎用プロセッサと、プロセッサ910を制御するように構成されたストレージデバイス930に格納された第1サービス932、第2サービス934、および第3サービス936のようなハードウェアまたはソフトウェアサービスと、ソフトウェア命令が実際のプロセッサ設計に組み込まれている特別目的プロセッサとを含むことができる。プロセッサ910は、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む完全に自己完結型のコンピューティングシステムであり得る。マルチコアプロセッサは、対称または非対称であり得る。
【0085】
コンピューティングデバイス900とのユーザインタラクションを可能にするために、入力デバイス945は、スピーチ用のマイクロフォン、ジェスチャまたはグラフィック入力用のタッチセンシティブスクリーン、キーボード、マウス、モーション入力、スピーチなどの任意の数の入力メカニズムを表すことができる。出力デバイス935はまた、当業者に既知の一部の出力メカニズムのうちの1つ以上であり得る。場合によっては、マルチモーダルシステムは、ユーザがコンピューティングデバイス900と通信するために複数のタイプの入力を提供することを可能にし得る。通信インターフェース940は、一般に、ユーザ入力およびシステム出力を統治および管理することができる。特定のハードウェア構成での操作に制限はないため、ここでの基本機能は、開発時に改善されたハードウェアまたはファームウェア構成に簡単に置き換えることができる。
【0086】
ストレージデバイス930は、不揮発性メモリであり、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)925、読み取り専用メモリ(ROM)920、およびそれらのハイブリッドなど、コンピュータがアクセス可能なデータを格納することができるハードディスクまたは他のタイプのコンピュータ可読媒体であり得る。
【0087】
ストレージデバイス930は、プロセッサ910を制御するためのサービス932、934、936を含むことができる。他のハードウェアまたはソフトウェアモジュールが企図される。ストレージデバイス930は、システム接続部905に接続することができる。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ910、接続部905、出力デバイス935などの必要なハードウェアコンポーネントに関連して、コンピュータ可読媒体に格納されたソフトウェアコンポーネントを含むことができる。
【0088】
説明を明確にするために、場合によっては、本技術は、ソフトウェアで具体化される方法におけるデバイス、デバイスコンポーネント、ステップもしくはルーチン、またはハードウェアとソフトウェアの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示され得る。
【0089】
一部の実施形態では、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたは無線信号を含むことができる。しかしながら、言及される場合、非一時的コンピュータ可読記憶媒体は、エネルギー、搬送波信号、電磁波、および信号自体などの媒体を明示的に除外する。
【0090】
上記の例による方法は、コンピュータ可読媒体に格納されているか、他の場合にはそれから利用可能であるコンピュータ実行可能命令を使用して実装することができる。そのような命令は、例えば、特定の機能または機能のグループを実行するために、汎用コンピュータ、専用コンピュータ、または専用処理デバイスを引き起こすか、あるいは構成する命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワーク経由でアクセス可能であり得る。コンピュータの実行可能命令は、例えば、バイナリ、アセンブリ言語、ファームウェア、またはソースコードなどの中間フォーマット命令であり得る。命令、使用される情報、および/または説明された例による方法中に作成された情報を格納するために使用され得るコンピュータ可読媒体の例には、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワークストレージデバイスなどが含まれる。
【0091】
これらの開示による方法を実装するデバイスは、ハードウェア、ファームウェア、および/またはソフトウェアを含むことができ、様々なフォームファクタのいずれかを取ることができる。このようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、スモールフォームファクタのパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどが挙げられる。本明細書で説明される機能はまた、周辺機器またはアドインカードで具体化され得る。このような機能は、さらなる例として、単一のデバイスで実行される異なるチップまたは異なるプロセスの間の回路基板上に実装することもできる。
【0092】
命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【0093】
添付の特許請求の範囲の範疇の態様を説明するために、様々な例および他の情報を使用したが、当業者であれば、多種多様な実装形態を導出するために、これらの例を使用することができるように、かかる例における特定の特徴または構成に基づいて、特許請求の範囲のいかなる制限も示唆されるべきではない。さらに、一部の主題は、構造的特徴および/または方法ステップの例に固有の言語で説明されている場合があるが、添付の特許請求の範囲で定義される主題は、必ずしもこれらの説明された特徴または行為に限定されないことを理解されたい。例えば、かかる機能は、ここで特定されている構成要素以外の構成要素で、異なって配布し、または実行することができる。むしろ、説明された特徴およびステップは、添付の特許請求の範囲の範疇のシステムおよび方法の構成要素の例として開示される。
【0094】
「少なくとも1つ」のセットと記載される特許請求項の文言は、セットの1つのメンバーまたはセットの複数のメンバーが特許請求項を満たしていることを示す。例えば、「AとBの少なくとも1つ」と記載される特許請求項の文言は、A、B、またはAおよびBを意味する。