(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-18
(54)【発明の名称】プロバイダネットワークバックボーンネットワークを利用した広域ネットワーキングサービス
(51)【国際特許分類】
H04L 41/0895 20220101AFI20240311BHJP
H04L 45/586 20220101ALI20240311BHJP
【FI】
H04L41/0895
H04L45/586
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023560016
(86)(22)【出願日】2022-03-23
(85)【翻訳文提出日】2023-09-28
(86)【国際出願番号】 US2022021549
(87)【国際公開番号】W WO2022212146
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507303550
【氏名又は名称】アマゾン・テクノロジーズ・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(72)【発明者】
【氏名】チエン,バイフ
(72)【発明者】
【氏名】ハシュミ,オメル
(72)【発明者】
【氏名】スペンドリー,トーマス・グエン
(72)【発明者】
【氏名】デブ,バシュマン
(72)【発明者】
【氏名】クルカルニ,シュリダー
(72)【発明者】
【氏名】ティロットソン,ポール・ジョン
(72)【発明者】
【氏名】アリ・ドスティ,ラミン
(72)【発明者】
【氏名】プラ,インディラ・ラディカ
(72)【発明者】
【氏名】ゲ,スティーヴ
(72)【発明者】
【氏名】ロンバーディ,ニコラス・ライアン
(72)【発明者】
【氏名】マシューズ,ニック
(72)【発明者】
【氏名】ダワニ,アヌープ
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA14
5K030HA08
5K030HC01
5K030JA10
5K030KA01
5K030KA05
5K030MD07
(57)【要約】
プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる施設のセットの表示が取得される。第1の施設及び第2の施設に対してそれぞれの仮想ルータが構成され、仮想ルータと施設のルーティング情報源との間で接続が確立される。第1の施設で発信される少なくとも1つのネットワークパケットの内容は、第2の施設のルーティング情報から仮想ルータで取得されたルーティング情報を使用して、プライベートファイババックボーンを介して第2の施設に送信される。
【選択図】
図25
【特許請求の範囲】
【請求項1】
システムであって、
1つまたは複数のコンピューティングデバイスを含み、
前記1つまたは複数のコンピューティングデバイスは、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
仮想化コンピューティングサービスを含むプロバイダネットワークの、広域ネットワーキングサービスの1つまたは複数のプログラムインタフェースを介して、(a)第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、前記プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設、及び(b)少なくとも前記第1の施設及び前記第2の施設に関する動的ルーティング情報を取得するために使用される特定のプロトコル、の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のプロバイダネットワークデータセンタにおいて、前記仮想化コンピューティングサービスの少なくとも第1のリソースのセットを使用している第1の仮想ルータと、前記第2の施設に対する前記近接度基準を満たす第2のプロバイダネットワークデータセンタにおいて、少なくとも第2のリソースのセットを使用している第2の仮想ルータとを構成させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、ルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
命令を含み、
前記ルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータに関連付けられたプロトコル処理エンジンによって前記第2の動的ルーティング情報ソースから取得され、前記プロトコル処理エンジンは、前記特定のプロトコルのメッセージを処理するように構成されている、
前記システム。
【請求項2】
前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記プライベートファイババックボーンを介して前記第1の地理的地域と前記第2の地理的地域との間を流れるネットワークトラフィックの1つまたは複数のメトリクスを、前記1つまたは複数のプログラムインタフェースを介して提示されるようにさせる
さらなる命令を含む、請求項1に記載のシステム。
【請求項3】
前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記1つまたは複数のプログラムインタフェースを介して、追加の施設の表示であって、前記追加の施設と前記複数のクライアント施設の1つまたは複数の施設との間のネットワークトラフィックは前記プライベートファイババックボーンを介して送信される前記追加の施設の表示を取得させ、
前記追加の施設に関連するルーティング情報を、前記追加の施設への静的ルートを指定することを必要とせずに、前記第1の仮想ルータ及び前記第2の仮想ルータを含む1つまたは複数の仮想ルータに伝播させる
さらなる命令を含む、請求項1~2のいずれか1項に記載のシステム。
【請求項4】
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数の施設の表示を取得することと、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立することと、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にすることと、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにすることと、
を含み、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
コンピュータ実装方法。
【請求項5】
前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域と第2の地理的地域との間で送信される少なくともいくつかのネットワークパケットに関して実行されるカスタムアクションの表示を取得することと、
特定のネットワークパケットに対して前記カスタムアクションを実行することと、
をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第1の施設とプロバイダネットワークの仮想化コンピューティングサービスの隔離された仮想ネットワークとの間の接続を可能にするために、プログラムインタフェースを介して要求を取得することと、
前記第1の施設と前記隔離された仮想ネットワークとの間の前記接続を可能にするために、前記第1の仮想ルータの構成を変更することと、
をさらに含む、請求項4~5のいずれか1項に記載のコンピュータ実装方法。
【請求項7】
前記第1のルーティング情報のセットの前記一部が、ボーダーゲートウェイプロトコル(BGP)のバージョンのセッションにおいて取得される、請求項4~6のいずれか1項に記載のコンピュータ実装方法。
【請求項8】
前記第1の仮想ルータと前記第1の動的ルーティング情報ソースとの間の接続を確立することが、1つまたは複数の仮想プライベートネットワーク(VPN)トンネルを確立することを含む、請求項4~7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記第2の動的ルーティング情報ソースが、ソフトウェア定義ワイドエリアネットワーキング(SD-WAN)機器を含み、前記コンピュータ実装方法はさらに、
前記1つまたは複数のプログラムインタフェースを介して、前記SD-WAN機器のネットワーク構成情報を取得することを含み、
前記第2の仮想ルータと前記第2の動的ルーティング情報ソースとの間の接続を可能にすることは、前記ネットワーク構成情報を利用することを含む、
請求項4~8のいずれか1項に記載のコンピュータ実装方法。
【請求項10】
前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域内の第1の施設のセットと、前記第2の地理的地域の第2の施設のセットとの間の、前記プライベートファイババックボーンを介して流れるネットワークトラフィックの目標帯域幅制限の表示を取得することと、
前記1つまたは複数のプログラムインタフェースを介して、前記プライベートファイババックボーンにトラフィックが前記目標帯域幅制限で流れるのを可能にするのに十分なリソースがあることを示す表示を提供することと、
をさらに含む、請求項4~9のいずれか1項に記載のコンピュータ実装方法。
【請求項11】
1つまたは複数のプログラムインタフェースを介して、(a)前記複数の施設間でトラフィックをルーティングするための仮想ルータの推奨数、及び(b)前記複数の施設の個々の施設と前記個々の施設からの接続が確立される仮想ルータとの間の推奨マッピング、の表示を行わせること
をさらに含む、請求項4~10のいずれか1項に記載のコンピュータ実装方法。
【請求項12】
1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
プログラム命令を格納しており、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
1つまたは複数の非一時的コンピュータアクセス可能記憶媒体。
【請求項13】
請求項12に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体であって、前記第1の仮想ルータが、高速パスノードと例外パスノードとを含み、前記高速パスノードは、(a)前記例外パスノードからの1つまたは複数のルーティングアクションを取得し、(b)前記ルーティングアクションを実装するように構成され、前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体は、1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサにさらに、
前記第1の仮想ルータの1つまたは複数のノードにリンクされたオフロードデバイスにルーティング情報交換プロトコル処理エンジンを構成させるさらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットの前記一部は前記ルーティング情報交換プロトコル処理エンジンで処理される、
前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【請求項14】
前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第1の施設と前記第2の施設との間のトラフィックのパフォーマンス目標を取得させ、
前記第1の施設と前記第2の施設との間でトラフィックを送信するために使用できる前記プライベートファイババックボーンの複数のリンクのそれぞれのパフォーマンスメトリクスを取得させ、
前記それぞれのパフォーマンスメトリクス及び前記パフォーマンス目標に少なくとも部分的に基づいて、前記第1の施設で発信される1つまたは複数のネットワークパケットを前記第2の施設に送信するために、前記複数のリンクのうちの特定のリンクを選択させる
さらなるプログラム命令を格納している、請求項12~13のいずれか1項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【請求項15】
前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第2の施設に関係するルーティング情報を転送するための1つまたは複数のルールを取得させる
さらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットは、前記1つまたは複数のルールに従って前記第1の仮想ルータに提供される、
請求項12~14のいずれか一項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
多数の企業及び他の組織は、自身の業務を支援するための多数のコンピューティングシステムを相互接続するコンピュータネットワークを運用しており、例えば、コンピューティングシステムは、同じ位置に配置されている(例えばローカルネットワークの一部として)、あるいは複数の別個の地理的位置に配置されている(例えば1つまたは複数のプライベートまたはパブリックの中間ネットワークを介して接続されている)。例えば、単一の組織が自身のために運用するプライベートデータセンタ、及び顧客にコンピューティングリソースを提供するための事業主体が運用するパブリックデータセンタなど、著しい数の相互接続されたコンピューティングシステムを収容するデータセンタは、一般的なものとなっている。ネットワークアクセス、電源、及び様々な顧客が所有するハードウェアためのセキュアな設置設備を提供するパブリックデータセンタ運用者もいれば、顧客による使用のために利用可能になされたハードウェアリソースをも含む「フルサービス」設備を提供するパブリックデータセンタ運用者もいる。
【0002】
汎用ハードウェアの仮想化技術の出現は、多様なニーズを持つ多くの顧客に、大規模なコンピューティングリソースを管理する点で利益をもたらし、様々なコンピューティングリソースを複数の顧客により効率的かつ安全に共有することが可能となった。例えば、仮想化技術は、単一の仮想化ホストによってホストされる1つまたは複数の「ゲスト」仮想マシンを各ユーザに提供することによって、単一の物理仮想化ホストを複数のユーザ間で共有することを可能にし得る。そのような各仮想マシンは、ユーザに所与のハードウェアコンピューティングリソースの唯一の運用者であると錯覚させる個別の論理コンピューティングシステムとして機能するソフトウェアシミュレーションを意味し得、また様々な仮想マシン間にアプリケーションの隔離及びセキュリティをも提供する。同一ホスト上にいくつかの異なる仮想マシンのインスタンスを作成することはまた、データセンタでの全体的なハードウェア利用レベルの増加を助け得、投資においてより高いリターンをもたらす。
【0003】
プロバイダネットワークにおける仮想化ベースのサービスの需要が高まるにつれて、サービスを使用して実装されるアプリケーションの要件を満たすために、より多くのネットワーキング及び相互接続関連の機能を追加する必要がある場合がある。このような機能の多くは、例えばオープンシステム相互接続スタックのレベル3またはレベル4など、何らかの形式でネットワークパケットアドレスの操作を必要とする場合がある。仮想化コンピューティングサービスのクライアントの中には、特定のエンドポイントセット間を流れるアプリケーショントラフィックに対して、カスタマイズされたポリシーベースのパケット処理を採用したい場合がある。様々な種類のパケット変換要件すべてにアドホックソリューションを使用すると、数十万の仮想マシンまたは物理マシンに関連付けられたトラフィックが同時に処理される場合がある大規模なプロバイダネットワークでは拡張できない場合がある。
【図面の簡単な説明】
【0004】
【
図1】少なくともいくつかの実施形態による、隔離されたネットワーク間を流れるトラフィックに対してスケーラブルな仮想ルータが実装され得る例示的なシステム環境を示す。
【
図2】少なくともいくつかの実施形態による、仮想ルータの助けを借りて実装されるパケット処理アプリケーションの例示的なカテゴリ、及びカテゴリのいくつかに対して実行され得る補助タスクを示す。
【
図3】少なくともいくつかの実施形態による、仮想ルータの例外パスノード、仮想ルータの高速パスノード、及び仮想ルータに関連付けられた補助タスクオフロードリソースの間のインタラクションの例の概要を示す。
【
図4】少なくともいくつかの実施形態に従って、仮想ルータに使用されるリソースが、仮想ルータを介してルーティングされるトラフィックに関連する補助タスクに使用されるリソースとは独立して自動的にスケーリングされ得る例示的なシナリオを示す。
【
図5】少なくともいくつかの実施形態による、仮想ルータ用の独立して管理されるパケット処理セルの使用例を示す。
【
図6】少なくともいくつかの実施形態による、仮想ルータ用の独立して管理される補助タスクオフロードセルの使用例を示す。
【
図7】少なくともいくつかの実施形態による、仮想ルータのノードを補助タスクオフローダと接続する例示的な技術を示す。
【
図8】少なくともいくつかの実施形態による、仮想ルータ及び関連する補助タスクオフロードリソースの構成及び使用に関連する、クライアントとパケット処理サービスとの間のプログラムによるインタラクションの例を示す。
【
図9】少なくともいくつかの実施形態による、仮想ルータ及び関連する補助タスクオフロードリソースの構成及び使用に関連する、クライアントとパケット処理サービスとの間のプログラムによるインタラクションの例を示す。
【
図10】少なくともいくつかの実施形態による、仮想ルータからいくつかのタイプのタスクをオフロードするために実行され得る動作の態様を示すフロー図である。
【
図11】少なくともいくつかの実施形態による、プロトコルスタックマルチプレクサ及び複数のプロトコルスタックインスタンスが、スケーラブル仮想ルータの補助タスクをオフロードするために設定され得る例示的なシステム環境を示す。
【
図12】少なくともいくつかの実施形態による、それぞれのプロトコルスタックインスタンスがプロトコルスタックマルチプレクサを備えたデバイスで実行され得るプロトコルのセットの例を示す。
【
図13】少なくともいくつかの実施形態による、仮想ルータに対してプロトコルスタックマルチプレクサを構成し得る補助タスクオフロードデバイスのコンポーネント間のインタラクションセットの例を示す。
【
図14】少なくともいくつかの実施形態による、いくつかの異なるプログラミング言語で開発されたプロトコルスタックインスタンスが補助タスクオフロードデバイスのそれぞれのソフトウェアコンテナ内で実行され得る例示的なシナリオを示す。
【
図15】少なくともいくつかの実施形態による、所与のプロトコルスタックの複数の独立インスタンスが補助タスクオフロードデバイスにおいて同時に実行され得る例示的なシナリオを示す。
【
図16】少なくともいくつかの実施形態による、仮想ルータの補助タスクに関連するプロトコル状態情報を保存するための代替アプローチの例を示す。
【
図17】少なくともいくつかの実施形態による、プロトコルスタックマルチプレクサ及びプロトコルスタックの独立インスタンスを使用して、仮想ルータからいくつかのタイプのタスクをオフロードするために実行され得る動作の態様を示すフロー図である。
【
図18】少なくともいくつかの実施形態による、ボーダーゲートウェイプロトコル(BGP)処理エンジンを使用したルーティング情報の交換を含む動的ルーティングが、パケット処理サービスのクライアントの要求に応じて仮想ルータのピアリングペアに対して有効にされ得る例示的なシステム環境を示す。
【
図19】少なくともいくつかの実施形態による、仮想ルータのいくつかの異なるタイプのプログラムによるアタッチメントに対して動的ルーティング情報交換が可能になるシナリオ例を示す。
【
図20】少なくともいくつかの実施形態による、ルーティング情報転送のためのカスタムプロトコルが仮想ルータによって使用され得、元々BGPを使用して仮想ルータに送信される情報を交換するシナリオ例を示す。
【
図21】少なくともいくつかの実施形態による、複数のピアリングアタッチメントが仮想ルータのペア間に設定され得るシナリオ例を示す。
【
図22】少なくともいくつかの実施形態による、ピアリングされた仮想ルータの動的ルーティングの構成に関するプログラムによるインタラクションのセットの例を示す。
【
図23】少なくともいくつかの実施形態による、ピアリングされた仮想ルータに対する動的ルーティングを可能にして利用するために実行され得る動作の態様を示すフロー図である。
【
図24】少なくともいくつかの実施形態による、組織の地理的に離れた施設をリンクする広域ネットワークが、様々なベンダからのリースされたファイバ回線及び機器を使用して組織によって管理され得る例示的な環境を示す。
【
図25】少なくともいくつかの実施形態による、プロバイダネットワークのクライアントの遠隔施設間のトラフィックがプロバイダネットワークのワイドエリアネットワーク(WAN)サービスを使用して送信される例示的なシステム環境を示す。このサービスは、内部ファイババックボーンネットワークと動的ルーティングが可能になる仮想ルータの集合を採用する。
【
図26】少なくともいくつかの実施形態による、クライアント指定の場所間のトラフィックに対するWANサービス品質メトリクスを提供するために使用され得る例示的なウェブベースのインタフェースを示す。
【
図27】少なくともいくつかの実施形態による、クライアント指定の位置間を流れるトラフィックに対する状態情報を提示するために使用され得る例示的なウェブベースのインタフェースを示す。
【
図28】少なくともいくつかの実施形態による、指定された位置間を流れるトラフィックに対する必須の仲介デバイスが、WANサービスのクライアントに代わって構成され得るシナリオ例を示す。
【
図29】少なくともいくつかの実施形態による、クライアント施設間のトラフィックのためのプライベートプロバイダネットワークバックボーンネットワークリンクの使用に関するプログラムによるインタラクションのセットの例を示す。
【
図30】少なくともいくつかの実施形態による、プライベートファイババックボーンを介してクライアント施設間でトラフィックを送信するプロバイダネットワークの広域ネットワーキングサービスで実行され得る動作の態様を示す流れ図である。
【
図31】少なくともいくつかの実施形態で使用され得る例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0005】
いくつかの実施形態及び例示の図面の例として実施形態が本明細書中に記載されているが、当業者は、実施形態が、記載された実施形態または図面に限定されないことを認識するであろう。それらについての図面及び詳細な説明は、実施形態を特定の開示される形式に限定することを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される趣旨及び範囲内にあるすべての修正物、均等物、及び代替物をカバーすることであるのが理解されるべきである。本明細書で使用される表題は、構成を目的としているにすぎず、詳細な説明または特許請求の範囲を限定するために使用されることを意味していない。本出願の全体を通じて使用されるように、用語「may」は、必須という意味ではなく(すなわち、必要であることを意味する)、許容的な意味(すなわち、~する見込みを有することを意味する)において使用される。同様に、単語「include」、「including」及び「includes」は、含んでいる、という意味であり、限定される、という意味ではない。特許請求の範囲で使用されるとき、単語「または(or)」は、包括の「または」として使用され、排他の「または」としては使用されない。例えば、句「x、yまたはzのうちの少なくとも1つ」は、x、y及びzのいずれか1つ、及びそれらの任意の組み合わせを意味する。
【0006】
本開示は、プロバイダネットワークまたはクラウドコンピューティング環境に実装された仮想ルータを介した、隔離されたネットワーク間でのアプリケーションデータを含むネットワークパケットの送信に関連するいくつかのカテゴリの補助タスク(ルーティング構成情報交換タスク、暗号化/復号タスク、またはカスタムクライアント要求タスクなど)を効率的に実装するための方法及び装置に関する。所与の仮想ルータには、ローカルにキャッシュされたルーティングまたは転送アクションを迅速に実行するように構成された高速パスノードと、クライアント指定のポリシー及び隔離されたネットワークの接続要件に基づいて様々なパケットに対して実行されるアクションを決定する例外パスノードとを含む、マルチレイヤパケット処理サービスのノードの集合が含まれる。ルーティング情報交換プロトコル(ボーダーゲートウェイプロトコル(BGP)に類似したプロトコルなど)を使用して、隔離されたネットワークのペア間のアプリケーションデータトラフィックに対して動的ルーティングが実行されるシナリオでは、動的ルーティング情報を含むメッセージの処理を、仮想ルータノードから他のデバイスで実行されているプロトコル処理エンジンにオフロードでき、それによって仮想ルータノードはルールベースのパケット転送という主要タスクに専念し続けることができる。同様の理由で、IGMP(インターネットグループ管理プロトコル)に似たプロトコルを介したマルチキャスト構成管理、パケットコンテンツの暗号化/復号、クライアントによって要求されたカスタムパケット分析/処理タスクなど、他のタイプの補助タスクも仮想ルータからオフロードデバイスに引き渡すことができる。
【0007】
オフロードタスクは、いくつかの重要な点で、仮想ルータで実行されるベースラインまたはコアの転送関連タスクとは異なる場合がある。例えば、少なくともいくつかのオフロードタスクは、通常、アプリケーションデータパケット転送タスクよりもはるかに少ない頻度で実行する必要がある場合があり、一部のオフロードタスクに必要な計算量または他のリソース(例えば、状態情報を保存するためのメモリまたはストレージ)は、アプリケーションデータパケットの転送などに必要な同じリソースの量よりもはるかに大きい場合がある。補助タスクのオフロードは、パフォーマンス上の理由(例えば、アプリケーションデータ転送の需要がすでに高い場合がある仮想ルータのリソースの迂回を避けるため)だけでなく、仮想ルータの転送関連コンポーネントが補助タスク処理コンポーネントとは独立して強化及び開発されるのを可能にするためにも有益であり得る。場合によっては、補助タスクは、オフロードデバイス(コンピューティングサービスの仮想化ホストなど)でユーザモードで実行されるプロトコルスタックインスタンス(BGP処理エンジンまたはIGMP処理エンジンのインスタンスなど)を使用して実行されてもよく、プロトコルスタックマルチプレクサは、必要に応じて、所与のオフロードデバイスのプロトコルスタックインスタンス間で補助タスクを分散する。
【0008】
オフロード技術を使用すると、いくつかのタイプのパケット処理アプリケーションがより実用的で高性能となる。地理的に異なる地域に実装された仮想ルータ(例えば、様々な州、国、大陸のデータセンタにあるリソースを使用する)は、プログラムによって相互にアタッチ(または「ピアリング」)でき、BGPと同様のプロトコルを使用して、異なる地域の隔離されたネットワークに関する動的ルーティング情報を取得して自動的に交換するように構成でき、クライアントは隔離されたネットワーク間を流れるトラフィックの静的ルートを丹念に構成する必要がなくなる。クライアントは、様々なパラメータと設定(使用する特定のプロトコルバージョン、仮想ルータとの間でアドバタイズされるルーティング情報をフィルタリングするルールなど)を指定して、仮想ルータ間でルーティング情報が転送される方法を制御できる。ワイドエリアネットワーキング(WAN)サービスは、動的ルーティングが有効になっているプログラムでアタッチされた仮想ルータを使用してプロバイダネットワークに実装でき、クライアントは、世界中に分散しているクライアント施設間のトラフィックのためにプロバイダネットワークのプライベートファイババックボーンリンク(他の様々なサービスのユーザに代わってプロバイダネットワークのデータセンタ間のトラフィックにすでに使用されている)を利用して、視覚化インタフェースを備えた使いやすいツールを使用してそれらの長距離トラフィックを管理することができるようになる。一般に、そのようなWANサービスまたはピアリングされた仮想ルータペアの動的ルーティングは、オフロードリソースの使用から利益を得る場合があるが、少なくともいくつかの実施形態では、そのようなシナリオで使用されるすべての仮想ルータにそのようなオフロードが必ずしも必要ではないことに留意されたい。
【0009】
当業者であれば、この開示に照らして理解するであろうが、特定の実施形態は、以下のうちのいくつかまたはすべてを含む様々な利点を達成することが可能であってもよい:(a)BGP、IGMPなどの特定のタイプのパケット処理アプリケーションのために使用される、様々な構成管理プロトコルと関連付けられた処理が、専用リソースを使用して、高速パケット転送/ルーティングアクションのために主に確保された計算リソースを消費することなく、効率的に実行されるのを可能にすること、(b)ルーティングテーブル構成管理、パケットコンテンツの暗号変換、パフォーマンス遅延測定などの補助タスクに使用されるリソースとは独立して高速パケット転送/ルーティングに専用のリソースのセットをスケーリングして、それにより補助タスクだけでなく転送/ルーティングアクションでも高いパフォーマンスを保証すること、(c)例えば、地理的に異なる地域にあるネットワーク間の静的ルートのエラーが発生しやすい仕様の必要性を排除することにより、そしてリースされたファイバ回線上のトラフィックを管理する必要性を排除することにより、コンピューティングリソースが地理的に分散している組織で必要なネットワーク構成の問題解決の数を減らすこと、及び/または、(e)地域内及び地域間のレベルで構成情報とメトリクスを個別に提供することにより、地理的に分散した環境で実行されるアプリケーションのシステム管理者及び/またはアプリケーション所有者のユーザエクスペリエンスを向上させること。仮想ルータに使用されるパケット処理サービスのマルチテナントの性質のため、少なくともいくつかの実施形態では、様々な隔離されたネットワーク間でトラフィックをルーティングするために必要なコンピューティング及び他のリソースの総量も削減され得る。
【0010】
いくつかの実施形態によれば、システムは、1つまたは複数のコンピューティングデバイスを含み得る。コンピューティングデバイスは、コンピューティングデバイス上かコンピューティングデバイス全体で実行されると、プロバイダネットワークのクライアントから1つまたは複数のプログラムインタフェースを介して受信した入力に少なくとも部分的に基づいて、様々な隔離されたネットワーク間でネットワークパケットの少なくともサブセットの送信に関連する補助タスクのカテゴリを決定させる命令を含んでもよい。クライアントがプロバイダネットワークのパケット処理サービスを使用して実装したいパケット処理アプリケーションインスタンスの詳細に応じて、様々な実施形態で補助タスクの多数のカテゴリの任意の組み合わせが必要になる場合がある。補助タスクカテゴリのセットには、例えば、ルーティング構成管理カテゴリ(例えば、BGPメッセージ、プロバイダネットワークのカスタムルーティング情報交換プロトコルのメッセージ、IGMPメッセージ、プロバイダネットワークのカスタムマルチキャスト構成プロトコルのメッセージなどの処理に関連するタスク)、(b)パケットコンテンツ変換カテゴリ(例えば、IPSecまたはプロバイダネットワークのカスタムセキュリティプロトコルなどのプロトコルに従ったパケットコンテンツの暗号化/復号)、(c)パフォーマンス管理カテゴリ(例えば、地理的に離れたリソース間のパケット遅延またはパケット損失レートの測定)、(d)クライアントによって指定されたカスタム処理タスク(例えば、クライアント定義のタグが割り当てられているパケットに対して特に実行される計算)などが含まれてもよい。補助タスクが実行されるトラフィックの所与の隔離されたネットワークは、例えば、様々な実施形態では、プロバイダネットワークのコンピューティングサービス(VPC)、またはプロバイダネットワークの外部のクライアント所有の施設に設定されたネットワークのいくつかのコンピューティングインスタンスを含む隔離された仮想ネットワーク(仮想プライベートクラウドまたはVPC、または仮想ネットワークとしても知られる)を含み得る。このようなクライアント所有の施設にあるリソースは、異なる実施形態におけるいくつかの方法のいずれかで、例えば、1つまたは複数のVPN(仮想プライベートネットワーク)トンネルを使用すること、専用のプライベート物理ネットワークリンク(直接接続リンクと呼ばれることもある)などを使用することにより、プロバイダネットワークデータセンタにリンクされ得る。
【0011】
仮想ルータは、様々な実施形態において、クライアントによって示された第1の隔離されたネットワークと第2の隔離されたネットワークとの間でネットワークパケットを送信するように構成され得る。仮想ルータは、例えば、プロバイダネットワークのクライアントからの要求に応じて、隔離されたネットワークの少なくとも1つにプログラムでアタッチし得る。このようなアタッチメント要求は、隔離されたネットワークのトラフィックが仮想ルータで処理されることを示し得る。所与の仮想ルータは、いくつかの実施形態では、高速パスノード及び例外パスノードを含む複数のパケット処理ノードを含み得る。高速パスノードは、(a)例外パスノードから隔離されたネットワークのペア間の所与のパケットフローに対する1つまたは複数のルーティングアクションの実行可能バージョンを取得し、(b)実行可能バージョンをキャッシュし、(c)実行可能バージョンを使用して、フローのパケットにルーティングアクションを実装するように構成され得る。「例外」という用語は、ルーティングアクションの実行可能バージョンが生成されるノードを指すために使用される場合がある。これは、平均すると、所与の実行可能アクションが何度も実行され得るためであり(例えば、数千のパケットを含むフローのパケットごとに)、したがって、アクションを生成するアクティビティは、例外的なアクティビティまたは頻度の低いアクティビティとみなされ得る。仮想ルータ(VR)は、様々な実施形態において、仮想トラフィックハブ(VTH)またはトランジットゲートウェイ(TGW)と呼ばれる場合もある。少なくともいくつかの実施形態では、VRの個々のノードは、プロバイダネットワークの仮想化コンピューティングサービスのコンピューティングインスタンス(例えば、仮想マシン)での実行の1つまたは複数のスレッド、または非仮想化サーバでの実行の1つまたは複数のスレッドを含んでもよい。高速パスノード及び例外パスノードは、いくつかの実施形態では集合的に転送プレーンノード(またはルーティングプレーンノード)と呼ばれる場合がある。これは、それらの主要機能の1つが、異なる隔離されたネットワーク間で可能な限り迅速にクライアントアプリケーションデータを含むパケットを転送することを含み得るためである。
【0012】
VR自体に加えて、少なくともいくつかの実施形態では、例えば、様々な実施形態におけるパケット処理サービスの管理プレーンコンポーネントまたは制御プレーンコンポーネントによって、クライアントのパケット処理アプリケーションに対して識別されたカテゴリの補助タスクを実行するために、クライアントに代わって、1つまたは複数の補助タスクオフロードリソース(ATOR)(補助タスクオフローダ(ATO)とも呼ばれる)が構成され得る。通信経路は、例えばVRの例外パスノードに提供されるメタデータを使用して、ATORとVRの1つまたは複数のパケット処理ノードまたは転送プレーンノードとの間に確立され得る。いくつかの実施形態では、そのような接続を確立することは、VR転送プレーンノードからパケットが向けられる仮想ネットワークインタフェースを設定することと、仮想ネットワークインタフェースとATORとの間のカプセル化プロトコルの1つまたは複数のトンネルを構成することとを含んでもよい。ATORは、例えば、異なる実施形態では、コンピューティングインスタンスまたは非仮想化ホストを実行する1つまたは複数のスレッドを含み得る。
【0013】
ATORが確立され、VRに接続された後、様々な実施形態において、補助タスクを示すメッセージまたはパケットがVRからATORに送信され得る。特定のパケットがATORで受信されると、そのパケットに対応する補助タスク(パケットの内容に基づいてルーティング情報を更新するなど)が実行されてもよく、補助タスクの結果(更新されたルートなど)がVRに返送されてもよい。VRでは、補助タスクの結果を使用して、VRにトラフィックが割り当てられている隔離されたネットワーク間で1つまたは複数のパケットを送信し得る。例えば、あるシナリオでは、補助タスクは、パケットを送信する次のホップを選択するために使用されるルートテーブル内の1つまたは複数のルートの挿入または削除につながる場合がある。別の例では、補助タスクの結果(例えば、パケットのアプリケーションデータペイロードの暗号化されたバージョン)自体がパケットで送信されてもよい。
【0014】
VRで受信されるトラフィックの大部分に対して高速で実行され得るVRの転送プレーンアクションとは対照的に、少なくともいくつかのカテゴリの補助タスクは(ATORを使用するなど)より低い頻度で実行される場合があり、アプリケーションデータパケットの転送に関して非同期に実行されてもよい。例えば、ルーティング情報メッセージは、BGPセッションの少なくともいくつかで比較的まれに受信及び/または送信される場合があり、所与のBGPメッセージの処理は、アプリケーションデータパケットを転送するためのクリティカルパスの一部ではない場合がある(BGPメッセージの処理の結果により、一部のアプリケーションパケットが送信される次のホップが変更される場合がある)。したがって、VRの転送プレーンコンポーネントが補助タスク処理のいくつかのカテゴリの結果を受信するタイミングは、いくつかの実施形態では、転送プレーンコンポーネントによって実行される個々のアプリケーションパケット転送に関して独立かつ非同期であり得る。例えば、所与の高速パスノードは、特定のパケットを宛先に転送する前に、BGPメッセージ処理タスクが完了するのを待つ必要がない場合がある。他のタイプの補助タスクの場合、高速パスノードによる所与のアプリケーションデータパケットの転送は、補助タスクの完了に依存する場合がある。例えば、転送されるアプリケーションデータパケットの内容が補助タスクの一部として暗号化される場合、または、特定のクライアント指定のタグもしくはラベルを持つパケットがVRから送信される前にログレコードが補助タスクの一部として生成及び保存される場合、高速パスノードは補助タスクが完了するまで待つ必要があり得る。
【0015】
いくつかの実施形態では、アプリケーションデータの所与のフローのパケットに対して複数のタイプの補助タスクを実行してもよい。例えば、BGPメッセージ処理の結果を使用して、フローのパケットの次のホップを決定してもよく、暗号化/復号タスクをフローのパケットに対して実行してもよい。あるフローは、ソース及び宛先のIP(インターネットプロトコル)アドレス、ソース及び宛先のポート、ソース及び宛先の仮想ネットワークインタフェース識別子、ソース及び宛先の隔離されたネットワーク識別子などを含むプロパティの何らかの組み合わせによって別のフローから区別され得る。このような一実施形態では、所与のATORを使用して、いくつかの異なるカテゴリの補助タスクを実装してもよい。他の実施形態では、補助タスクの1つのカテゴリは、第1のATORを使用して実行され得、補助タスクの別のカテゴリは、第2のATORを使用して実行され得る。
【0016】
一実施形態では、ATORは、例えばUSB(ユニバーサルシリアルバス)またはPCIe(周辺コンポーネント相互接続-エクスプレス)などの周辺機器相互接続を介してサーバにアタッチされたハードウェアカードを含み得る。このような実施形態では、補助タスクの少なくともいくつかのカテゴリは、完全にハードウェアカード上で実行され得る(例えば、カード内に組み込まれたプロセッサ及びメモリを使用して)。いくつかの実施形態では、VRの外部のリソースを使用して実装される代わりに、ATORは、パケット処理サービスの制御プレーンによるVRの一部として構成され管理されるリソース(例えば、高速パスノード及び例外パスノードとは論理的に異なる補助処理ノード)を使用して実装されてもよい。
【0017】
いくつかの実施形態によれば、システムは、1つまたは複数のコンピューティングデバイスを含み得る。コンピューティングデバイスは、コンピューティングデバイス上かコンピューティングデバイス全体で実行されると、オフロードデバイス(例えば、仮想化ホスト)において、第1の隔離されたネットワークと第2の隔離されたネットワークとの間でネットワークパケットを送信するように構成された仮想ルータからネットワークパケットの送信に関連する第1の補助タスクの少なくとも一部を示すメッセージを受信させる命令を含んでもよい。オフロードデバイスのスタックマルチプレクサ(例えば、コンピューティングインスタンス及び/または仮想化マネージャで実行される1つまたは複数のプロセスまたはスレッド)は、オフロードデバイスで実行されるプロトコルスタックインスタンスのセットから特定のプロトコルスタックインスタンスを選択し、メッセージの少なくとも一部を処理し得る。所与のプロトコルスタックインスタンスは、少なくともいくつかの実施形態において、ユーザモードまたはユーザ空間内で、ネットワーキングプロトコルのスタックの1つまたは複数のレイヤ、例えば、OSI(オープンシステム相互接続)モデルで定義されるレイヤを実装するソフトウェアを含み得る。スタックマルチプレクサは、オフロードデバイスのダイレクトメモリアクセス(DMA)バッファへのアクセスを有し得、その中には、メッセージが仮想ルータから取得されるネットワークインタフェースカードによって、メッセージが配置され得る。特定のプロトコルスタックインスタンスは、メッセージ内にカプセル化された基礎となるパケットに使用されるプロトコル、仮想ルータが構成されている隔離された仮想ネットワークの識別情報、クライアントの識別子、またはその代わりに仮想ルータによってトラフィックが送信されるクライアントの識別子など、メッセージに含まれる、またはメッセージに関連付けられたメタデータに少なくとも部分的に基づいて、選択され得る。プロトコルスタックインスタンスの少なくともいくつかは、様々な実施形態においてユーザ空間で実行され得る。選択されたプロトコルスタックインスタンス(例えば、BGP処理エンジン、IGMP処理エンジン、ならびにBGPまたはIGMPによって利用される下位レイヤプロトコルのロジックを含む場合がある)は、メッセージを分析し、必要な補助タスクを実行し得る。次いで、補助タスクの結果は、マルチプレクサを介して仮想ルータに送信され、そこで第1及び第2の隔離されたネットワーク間で少なくともいくつかのパケットを送信するために利用され得る。少なくともいくつかの実施形態によれば、所与のプロトコルスタックインスタンスは、シングルテナントモード(1つだけのクライアント、または1つだけの仮想ルータに代わって)または、複数のクライアントまたは複数の仮想ルータに代わって実行される補助タスクのためのマルチテナントモードで使用するように構成され得る。テナントモードは、いくつかの実施形態では、仮想ルータがその代わりに構成されるクライアントからのプログラム入力に少なくとも部分的に基づいて選択され得る。
【0018】
いくつかの実施形態によれば、システムは、1つまたは複数のコンピューティングデバイスを含み得る。コンピューティングデバイスは、コンピューティングデバイス上かコンピューティングデバイス全体で実行されると、プロバイダネットワークのリソースを使用して、第1の仮想ルータ及び第2の仮想ルータを含む複数の仮想ルータをコンピューティングデバイスに作成させる命令を含み得る。1つまたは複数のプログラムインタフェースを介してプロバイダネットワークのクライアントによって示される動的ルーティングプロトコル制御設定のグループに従って、第1の仮想ルータと第2の仮想ルータとの間のルーティング情報の転送が可能になり得る。ルーティング情報の少なくとも一部は、第1の仮想ルータにプログラムでアタッチされた第1の隔離されたネットワークと、第2の仮想ルータにプログラムでアタッチされた第2の隔離されたネットワークとを含む複数の隔離されたネットワークに関連付けられ得る。動的ルーティングプロトコル制御設定のグループの特定の設定には、例えば、特定の宛先へのルートが転送されるかどうかを決定するために使用されるフィルタルール、ネットワークアドレスのグループの様々なBGP属性に関連付けられるそれぞれの優先順位などが含まれてもよい。動的ルーティングプロトコルのためのそれぞれのプロトコル処理エンジンは、例えば、いくつかの実施形態において上述した種類のオフロードリソースを使用して、仮想ルータのそれぞれに対して確立され得る。クライアント指定のプリファレンスに基づいて、いくつかの実施形態では、BGPのいくつかのバリアント(内部BGP、外部BGP、またはマルチプロトコルBGPなど)のいずれかを動的ルーティングに使用してもよい。一実施形態では、クライアントはBGP属性を使用して構成設定を指定してもよいが、ルーティング情報は実際には、プロバイダネットワークのカスタムプロトコルを使用して仮想ルータのプロトコル処理エンジン間で転送され得る。
【0019】
場合によっては、動的ルーティングが有効になっている仮想ルータを利用して、プロバイダネットワークのプライベートファイババックボーンリンクを使用してプロバイダネットワーククライアントの地理的に分散した施設間でデータを転送してもよい。いくつかの実施形態によれば、システムは、1つまたは複数のコンピューティングデバイスを含み得る。コンピューティングデバイスは、コンピューティングデバイス上かコンピューティングデバイス全体で実行されると、プロバイダネットワークの広域ネットワーキングサービスの1つまたは複数のプログラムインタフェースを介して、コンピューティングデバイスに、(a)第1の地理的地域の第1の施設と第2の地理的地域の第2の施設を含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設、及び(b)少なくとも第1のクライアント施設及び第2のクライアント施設に関する動的ルーティング情報を取得するために使用される特定のプロトコル、の表示を取得させる命令を含み得る。第1の仮想ルータは、第1の施設に対する近接度基準を満たす第1のプロバイダネットワークデータセンタにおける仮想化コンピューティングサービスの少なくとも第1のリソースのセットを使用して、クライアントのために構成され得る。同様に、第2の仮想ルータは、第2の施設に対する近接度基準を満たす第2のプロバイダネットワークデータセンタの少なくとも第2のリソースのセットを使用して構成され得る。様々な実施形態において、(a)第1の仮想ルータと第2の仮想ルータとの間、(b)第1の仮想ルータと第1の施設との間、(c)第2の仮想ルータと第2の施設との間の接続が可能になり得る。第1の施設で発信された少なくとも1つのネットワークパケットの内容は、ルーティング情報のセットを使用して、プライベートファイババックボーンを介して第2の施設に転送され得る。ルーティング情報のセットの少なくとも一部は、第2の仮想ルータに関連付けられたプロトコル処理エンジンによって第2の動的ルーティング情報ソースから取得され得る。プロトコル処理エンジンは、クライアントによって指定された特定のプロトコルのメッセージを処理するように構成され得る。
【0020】
上述したように、少なくともいくつかの実施形態では、上述した種類の仮想ルータ及び/または関連する補助タスクオフローダは、プロバイダネットワークのリソースを使用して実装され得る。クラウドプロバイダネットワーク(単に「クラウド」と呼ばれることもある)は、ネットワークでアクセス可能なコンピューティングリソース(計算、ストレージ、及びネットワーキングリソース、アプリケーション、及びサービスなど)のプールを指し、これらは仮想化またはベアメタルの場合がある。クラウドは、顧客のコマンドに応答して、プログラムでプロビジョニング及びリリースされ得る構成可能なコンピューティングリソースの共有プールへの便利なオンデマンドネットワークアクセスを提供し得る。これらのリソースは動的にプロビジョニング及び再構成して、変動する負荷に合わせて調整できる。したがって、クラウドコンピューティングは、公衆アクセス可能なネットワーク(例えば、インターネット、またはセルラ通信ネットワーク)を介してサービスとして配信されるアプリケーションと、それらのサービスを提供するクラウドプロバイダのデータセンタ内のハードウェア及びソフトウェアとの両方と見なすことができる。
【0021】
クラウドプロバイダネットワークは、複数の地域として形成でき、ここで、地域とは、クラウドプロバイダがデータセンタをクラスタ化する別個の地理的領域である。このような地域は、その境界が国や州などの境界と必ずしも一致しない場合があるため、プロバイダネットワークで定義された地域とも呼ばれ得る。各地域には、プライベート高速ネットワーク(例えば、ファイバ通信接続)を介して相互に接続された2つ以上の可用性ゾーンを含めることができる。可用性ゾーン(可用性ドメイン、または単に「ゾーン」とも呼ばれる)は、別の可用性ゾーンとは別個の電源、別個のネットワーク、及び別個の冷却を備えた1つまたは複数のデータセンタ施設を含む、隔離された障害ドメインを指す。データセンタとは、クラウドプロバイダネットワークのサーバを収容しそれに電力と冷却を提供する物理的な建物または筐体を指す。好ましくは、地域内の可用性ゾーンは、同じ自然災害が同時に複数の可用性ゾーンをオフラインにしないように、互いに十分に離れて配置される。顧客は、トランジットセンタ(TC)経由で、公衆アクセス可能なネットワーク(例えば、インターネット、セルラ通信ネットワーク)を介して、クラウドプロバイダネットワークの可用性ゾーンに接続できる。TCは、顧客をクラウドプロバイダネットワークにリンクする主要なバックボーン位置と見なすことができ、他のネットワークプロバイダ施設(例えば、インターネットサービスプロバイダ、電気通信プロバイダ)に配置され、(例えばVPNや直接接続を介して)可用性ゾーンに安全に接続され得る。各地域は、冗長性のために2つ以上のTCを運用できる。地域は、各地域を少なくとも1つの他の地域に接続するグローバルネットワークに接続されている。クラウドプロバイダネットワークは、エッジ位置及び地域エッジキャッシュサーバ(ポイントオブプレゼンスまたはPoP)を介して、これらの地域の外部にあるが、これらの地域とネットワーク化されているポイントオブプレゼンスから、コンテンツを配信し得る。コンピューティングハードウェアのこの区分化及び地理的分散により、クラウドプロバイダネットワークは、高度のフォールトトレランス及び安定性を有する地球規模の低レイテンシリソースアクセスを顧客に提供することができる。
【0022】
いくつかの実施形態では、プロバイダネットワークは、仮想コンピューティングサービス、データ処理サービス(複数可)(例えば、マップリデュース、データフロー、及び/または他の大規模データ処理技法)、データストレージサービス(例えば、オブジェクトストレージサービス、ブロックベースストレージサービス、またはデータウェアハウスストレージサービス)、及び/または任意の他のタイプのネットワークベースのサービス(図示されていない他の様々なタイプのストレージ、処理、分析、通信、イベント処理、視覚化、及びセキュリティサービスを含み得る)を含み得る、様々なコンピューティングリソースまたはサービスを実装し得る。このようなサービスの運用をサポートするために必要なリソース(例えば、コンピューティングリソース及びストレージリソース)は、クラウドプロバイダネットワークのユーザによって要求され、ユーザアカウントでプロビジョニングされ得るリソースとは対照的に、クラウドプロバイダに関連付けられたアカウントでプロビジョニングされ得る。
【0023】
様々なネットワークアクセス可能なサービスは、様々な実施形態において、プロバイダネットワークの1つまたは複数のデータセンタで実装され得る。ネットワークアクセス可能なコンピューティングサービスには、エラスティックコンピューティングクラウドサービス(様々な実施態様では、エラスティックコンピューティングサービス、仮想マシンサービス、コンピューティングクラウドサービス、コンピューティングエンジン、またはクラウドコンピューティングサービスと呼ばれる)が含まれ得る。このサービスは、変動するコンピューティングリソース及び/またはメモリリソースを備えた仮想コンピューティングインスタンス(仮想マシン、または単に「インスタンス」とも呼ばれる)を提供してもよく、これらは、コンピューティング仮想化サービス(様々な実施態様ではエラスティックコンピューティングサービス、仮想マシンサービス、コンピューティングクラウドサービス、コンピューティングエンジン、またはクラウドコンピューティングサービスと呼ばれる)によって管理される。一実施形態では、仮想コンピューティングインスタンスのそれぞれは、いくつかのインスタンスタイプまたはファミリーのうちの1つに対応し得る。インスタンスタイプは、そのハードウェアタイプ、計算リソース(例えば、中央処理装置[CPU]またはCPUコアの数、タイプ、及び構成)、メモリリソース(例えば、ローカルメモリの容量、タイプ、及び構成)、ストレージリソース(例えば、ローカルにアクセス可能なストレージの容量、タイプ、及び構成)、ネットワークリソース(例えば、そのネットワークインタフェースの特性及び/またはネットワーク機能)、及び/または、他の適切な説明的特性(ベースラインのパフォーマンス保証とそのベースラインを超えて定期的にバーストできる「バースト可能な」インスタンスタイプ、または固定量のリソースが割り当てられ保証されている非バーストまたは専用のインスタンスタイプであることなど)によって特徴付けられ得る。各インスタンスタイプは、処理、ローカルストレージ、メモリ、及びネットワークリソースの特定の比率を持つことができ、インスタンスファミリが異なれば、これらのリソースのタイプも異なり得る。所与のインスタンスタイプ内で、これらのリソース構成の複数のサイズが利用可能であり得る。インスタンスタイプ選択機能を使用して、例えば顧客からの入力に(少なくとも部分的に)基づいて、顧客のためにインスタンスタイプを選択してもよい。例えば、顧客は、事前定義されたインスタンスタイプのセットからインスタンスタイプを選択してもよい。別の例として、顧客は、インスタンスタイプの所望のリソース及び/またはインスタンスが実行するワークロードの要件を指定する場合があり、インスタンスタイプ選択機能が、そのような仕様に基づいてインスタンスタイプを選択してもよい。要求されたインスタンスタイプに適したホストは、収集されたネットワークパフォーマンスメトリクス、様々な利用可能なホストでのリソース使用率レベルなどの要因に少なくとも部分的に基づいて選択できる。
【0024】
プロバイダネットワークのコンピューティングサービスには、コンテナオーケストレーション及び管理サービス(様々な実施態様では、コンテナサービス、クラウドコンテナサービス、コンテナエンジン、またはコンテナクラウドサービスと呼ばれる)も含み得る。コンテナは、アプリケーションが実行されるコンピューティング環境からアプリケーションを抽象化する、ソフトウェアアプリケーションの論理パッケージ化を表す。例えば、ソフトウェアアプリケーションのコンテナ化バージョンには、ソフトウェアコードと、そのコードによって使用される任意の依存関係が含まれており、適切なコンテナエンジン(例えば、Docker(登録商標)またはKubernetes(登録商標)コンテナエンジン)をホストする任意のインフラストラクチャ上でアプリケーションを一貫して実行できる。コンピュータシステム全体をエミュレートする仮想マシン(VM)と比較して、コンテナはオペレーティングシステムレベルで仮想化するため、通常、ホストコンピューティングシステム上でアプリケーションを実行するためのより軽量なパッケージを表す。既存のソフトウェアアプリケーションは、ソフトウェアアプリケーションを適切な方法でパッケージ化し、アプリケーションがコンテナエンジンで実行できるようにするために使用される他のアーティファクト(例えば、コンテナイメージ、コンテナファイル、またはその他の構成)を生成することによって「コンテナ化」できる。一部の実施態様では、コンテナエンジンは仮想マシンインスタンス上で実行でき、仮想マシンインスタンスは説明されたネットワークパフォーマンスメトリクスに少なくとも部分的に基づいて選択される。いくつかの実施形態では、パケット処理サービス、データベースサービス、ワイドエリアネットワーキング(WAN)サービスなどの他のタイプのネットワークアクセス可能なサービスもクラウドプロバイダネットワークで実装され得る。
【0025】
クラウドプロバイダネットワークのトラフィック及び動作は、様々な実施形態において、論理制御プレーン上で搬送される制御プレーン動作、及び論理データプレーン上で搬送されるデータプレーンオペレーションという2つのカテゴリに大まかに細分され得る。データプレーンは、分散コンピューティングシステムを介したユーザデータの移動を表し、制御プレーンは、分散コンピューティングシステムを介した制御信号の移動を表す。制御プレーンは、一般に、1つまたは複数の制御サーバにわたって分散され、1つまたは複数の制御サーバによって実装される、1つまたは複数の制御プレーンコンポーネントを含む。制御プレーントラフィックには、通常、システムの構成及び管理(例えば、リソースの配置、ハードウェアの容量管理、診断の監視、システム状態情報)などの管理動作が含まれる。データプレーンは、クラウドプロバイダネットワーク上に実装される顧客リソース(例えば、コンピューティングインスタンス、コンテナ、ブロックストレージボリューム、データベース、ファイルストレージ)を含む。データプレーントラフィックには、一般に、顧客リソースとの間の顧客データ転送などの非管理動作が含まれる。特定の制御プレーンコンポーネント(例えば、仮想化コンピューティングサービスの制御プレーンなどのティア1の制御プレーンコンポーネント)は通常、データプレーンサーバとは別のサーバのセットに実装されるが、他の制御プレーンコンポーネント(例えば、分析サービスなどのティア2の制御プレーンコンポーネント)は、仮想化サーバをデータプレーンと共有してもよく、制御プレーントラフィックとデータプレーントラフィックは切り離された/別個のネットワークを介して送信され得る。
【0026】
仮想ルータのリソースをオフロードする例示的なシステム環境
図1は、少なくともいくつかの実施形態による、隔離されたネットワーク間を流れるトラフィックに対してスケーラブルな仮想ルータが実装され得る例示的なシステム環境を示す。示されているように、システム100は、図示の実施形態ではマルチレイヤパケット処理サービス(PPS)のリソースを使用して設定されたスケーラブル仮想ルータ(VR)のインスタンス102を含む。VRインスタンス102は、複数の隔離されたネットワーク140A~140D間の接続を可能にするために使用され得る。PPSは、例えば、図示の実施形態では、管理プレーンまたは制御プレーン190、ならびに高速パスノード(FN)114及び例外パスノード(EN)115を含むデータプレーンを含み得る。いくつかの実施形態では、FN及びENは、集合的に転送ノード111または転送プレーンノードと呼ばれる場合がある。図示の実施形態では、制御プレーンは、VRインスタンス及び関連するルーティング/転送メタデータ108を構成する役割を担ってもよく、一方、データプレーンリソースは、隔離されたネットワーク140で発信された(及び隔離されたネットワーク140に向けられた)パケットをルーティングするためのアクションを生成及び実装するために使用されてもよい。様々な実施形態では、プロバイダネットワークのクライアントの要求に応じて、複数のVRインスタンスを設定してもよい。場合によっては、単一のクライアントに複数のVRインスタンスが構成されており、例えば、隔離されたネットワークの異なるセット間のトラフィックを処理し得る。いくつかの実施形態では、一部のVRは、シングルテナントモード(例えば、単一のクライアントのアプリケーションデータを処理するため)で構成され得るが、他のVRは、マルチテナントモード(複数の異なるクライアントのアプリケーションデータを処理するため)で構成され得る。少なくとも1つの実施形態では、所与の仮想ルータに使用されるテナントモードは、VRがその代わりに構成されるクライアントによって示され得る。
【0027】
多数の異なるタイプの隔離されたネットワーク140間の接続は、例えば、インタフェース170を介してPPSクライアント195からPPS制御プレーン190に送信されるプログラム要求に応答して、図示の実施形態においてVRインスタンス102を使用して提供され得る。例えば、隔離されたネットワーク140Aは、プロバイダネットワークの自身のデータセンタの外部のデータセンタまたは施設にあるリソースのセットを含んでもよく、これらは、VPN(仮想プライベートネットワーク)トンネルまたは図示の実施形態では、公衆インターネットの一部を利用する接続を使用してプロバイダネットワークにリンクされ得る。隔離されたネットワーク140Bはまた、図示の実施形態では、専用の物理リンク(「直接接続」リンクと呼ばれる場合がある)を介してプロバイダネットワークに接続される、プロバイダネットワークの外側の施設にあるリソースを含んでもよい。隔離されたネットワーク140C及び140Dは、図示された例示的なシナリオにおいて、プロバイダネットワークのデータセンタにあるリソースを使用して設定されたそれぞれの分離仮想ネットワーク(IVN)を含み得る。隔離された仮想ネットワークは、プロバイダネットワークの所与のクライアントに割り当てられたネットワーク化されたリソース(例えば、仮想マシンなどのコンピューティングインスタンスを含む)の集合を含み得、これらは、他の隔離された仮想ネットワーク内の他のクライアントに割り当てられたリソースから論理的に隔離されている(デフォルトではアクセスできない)。IVNが代わりに確立されるクライアントには、IVNのリソースのネットワーク構成に関して大幅な柔軟性が与えられ得る。例えば、仮想マシンのプライベートIPアドレスは、他のIVN内の他のリソースに同じIPアドレスが割り当てられていた場合がある、クライアントが選択したサブネットがIVN内に確立されている場合がある、セキュリティルールがIVNに関して送受信されるトラフィックに対してクライアントによって設定されている場合がある、などの可能性を考慮する必要なしに、クライアントによって選択されてもよい。同様の柔軟性は、図示の実施形態において、140AなどのVPN接続された隔離されたネットワーク、及び/または専用リンクを介してプロバイダネットワークに接続された隔離されたネットワーク140Bにおける構成設定にも適用され得る。
【0028】
VRインスタンス102がその代わりに構成されているクライアントの要件に応じて、パケットの転送/ルーティングのベースラインタスクまたは主要タスクに加えて、隔離されたネットワーク140の様々なペア(またはすべて)の間のトラフィックに対して1つまたは複数のタイプの補助タスクが実行されてもよい。例えば、クライアントが、BGPまたは同様のプロトコルを使用する動的ルーティングが、所与の隔離されたネットワーク140のペア間を流れるパケットに対して実装されることを示した場合、BGPメッセージを処理し、BGP処理の結果を1つまたは複数のルートテーブル109に挿入する必要がある場合がある。同様に、マルチキャストアプリケーションにはIGMPメッセージの処理が必要な場合があり、一部のパケットフローなどにはIPSec(インターネットプロトコルセキュリティ)またはその他のセキュリティ関連の処理が必要な場合がある。転送ノード111の主なワークロードを追加することなくそのような補助タスクを容易にするために、図示の実施形態では、例えばPPS制御プレーン190によって、VRインスタンス102に対してオフロードリソース160のセットが構成され得る。所与の隔離されたネットワークのペア間のトラフィック(または所与のパケットフロー)に必要な補助タスクの特定のカテゴリ(または複数のカテゴリ)は、様々な実施形態において、PPSクライアント195によって提供される入力に基づいて決定され得る。例示的な補助タスクカテゴリには、様々な実施形態において、とりわけ、ルーティング構成管理、パケットコンテンツ変換(例えば、暗号プロトコルを使用)、パフォーマンス監視、可用性監視などが含まれ得る。タスクの必要なカテゴリ用の1つまたは複数の補助タスクオフロードリソース160がプロビジョニングされた後、様々な実施形態において、転送ノード111の少なくともいくつかと補助タスクオフロードリソースとの間の接続が確立され得る。少なくともいくつかの実施形態では、VRインスタンス102で受信されたパケットの一部は、オフロードリソースへの要求をトリガしてもよい。例えば、BGPメッセージがVRで受信された場合、BGPメッセージはBGP処理オフロードリソースに送信されてもよい。様々な実施形態において、必要なタスクはオフロードリソース160で実行され、結果(転送ノードによって消費される結果がある場合)は転送ノード111に送信され得る。次いで、このような結果は、様々な実施形態において、ある隔離されたネットワーク140から別のネットワークに少なくともいくつかのパケットを転送するために使用され得る。例えば、BGPオフロードタスクの結果として決定される、パケットフローのパケットの好ましい次のホップは、フローのパケットをルーティングするために使用され得る。
【0029】
少なくともいくつかの実施形態では、PPSクライアント195は、例えばPPS制御プレーン190のプログラムインタフェース170を使用して、隔離されたネットワーク140間でネットワークパケットを転送するために最終的に使用されるアクションを生成するために使用されるVTHインスタンスのルーティング/転送メタデータ108の少なくともいくつかを提供し得る。図示の実施形態では、ルーティング/転送メタデータ108は、クライアントによって示された複数のルートテーブル109及び/またはポリシーベースのルーティングルール110のエントリを含み得る。所与の隔離されたネットワーク140は、例えば図示の実施形態では第1のタイプのプログラムインタフェース(「関連付け」動詞または動作に使用されるインタフェース)を使用して、プログラムによって特定のルートテーブル109に関連付けてもよい。このような関連ルートテーブル109は、隔離されたネットワークからアウトバウンドパケットの少なくともサブセットを導くために使用され得る。別のタイプのプログラム動作では、宛先が所与の隔離されたネットワーク140内にあるルートテーブルエントリを、(例えば、特定のテーブルへのエントリの伝播またはインストールに異なるインタフェースを使用して)プログラム的に1つまたは複数のルートテーブルに伝播/インストールされ得、これにより、他のソースからのトラフィックは隔離されたネットワークで受信される。少なくともいくつかの実施形態では、140Cなどの特定の隔離されたネットワーク内の宛先を有するエントリは、140Aまたは140Bなどの他の隔離されたネットワークに関連付けられた1つまたは複数のルートテーブル109に伝播され得、例えば、トラフィックがパス155A及び155Bに沿って他の隔離されたネットワークから140Cに流れることを可能にする。同様に、隔離されたネットワーク140D内の宛先を有する1つまたは複数のエントリは、隔離されたネットワーク140Cに関連付けられたルートテーブルに伝播され得、トラフィックが隔離されたネットワーク140Cから隔離されたネットワーク140Dに経路155Cに沿って流れることを可能にする。パス155Dを介して転送されるトラフィックの場合、図示の実施形態では、隔離されたネットワーク140D内の宛先を有するエントリが、隔離されたネットワーク140Bに関連付けられたルートテーブルに伝播され得る。一般に、プログラムによってVRインスタンス102にアタッチされる隔離されたネットワークの所与のペア間の単方向または双方向トラフィックの任意の所望の組み合わせは、様々な実施形態において、ルートテーブル関連付けとルートテーブルエントリ伝播の適切な組み合わせを使用することによって有効になる場合がある。これにより、以下でさらに詳細に説明するように、多種多様なネットワークフロー構成が異なる実施形態でサポートされ得る。
【0030】
ルーティングメタデータ108及び補助タスクオフロードリソース160が設定された後、アプリケーションデータを含むネットワークパケットは、図示の実施形態では、異なる隔離されたネットワーク140内の様々なリソースからVRインスタンスのFN114(例えば、1つまたは複数のアクション実装ノードまたはAINを含む)で受け入れられ得る。パケットがAINで受信されると、そのAINは、様々な実施形態において、そのアクションキャッシュ内で一致するアクションを(例えば、ソースと宛先のIPアドレスとポートの組み合わせを含む、パケットのフローの様々なプロパティに基づくキーを使用して)見つけようとし得る。アクションがキャッシュ内に見つからない場合、EN115(例えば、VRインスタンスの決定ノード(DN)を含む)はAINによって参照されてもよい。いくつかの実施形態では、DNは、それ自身のキャッシュ内で、受信したパケットに適した以前に生成されたアクションを探し得る。事前に生成されたアクションが見つかった場合、それはキャッシュ登録及び実装のためにAINに提供され得る。DNによってそのようなアクションが見つからない場合、例えば、図示の実施形態において、パケットが受信されたソース隔離されたネットワークに関連付けられたルートテーブル109の1つを使用して、新しいアクションが生成され得る。アクションの実行可能バージョン(例えば、ネットワーク処理オペレーションを実装するために最適化されたレジスタベースの仮想マシンの命令を使用して表現されたバイトコード)が生成され、オプションで決定レイヤでキャッシュされ、AINに提供されてもよく、様々な実施形態において、現在のパケットに対して実装される(そしてキャッシュされ、同じフローの後続のパケットに対して再利用される)。
【0031】
様々な実施形態において、アクションが生成される所与のフローは、パケット処理サービス(PPS)で受信されるパケットの以下の属性または要素、つまり、パケットをPPSに送信するために使用されるネットワークプロトコル、ソースネットワークアドレス、ソースポート、宛先ネットワークアドレス、宛先ポート、及び/またはアプリケーション識別子(例えば、隔離されたネットワークとPPSの間の通信用に設定された特定の仮想ネットワークインタフェースの識別子)、の1つまたはすべてに基づいて特徴付けられ得る(または他のフローと区別され得る)。いくつかの実施形態では、パケットが送信される方向(例えば、PPSに向かう方向、またはPPSから離れる方向)も、フローの識別要素として含まれてもよい。いくつかの異なるネットワーキングプロトコルに従ってフォーマットされたパケットは、異なる実施形態におけるVRインスタンス102の転送ノード111によって処理され、及び/または隔離されたネットワーク140間で転送され得る。プロトコルは、例えば、インターネットプロトコル(IP)、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、インターネットコントロールメッセージプロトコル(ICMP)、TCP/IPプロトコルスイートに属さない、またはそれに依存しないプロトコルなどを含む。BGP、IGMP、IPSec、TWAMP(双方向アクティブ測定プロトコル)などの様々な追加プロトコルに従ってフォーマットされたメッセージは、図示の実施形態では補助タスクオフロードリソース160で少なくとも部分的に処理され得る。
【0032】
例示的なパケット処理アプリケーション及び補助タスク
図2は、少なくともいくつかの実施形態による、仮想ルータの助けを借りて実装されるパケット処理アプリケーションの例示的なカテゴリ、及びカテゴリのいくつかに対して実行され得る補助タスクを示す。示されるように、図示の実施形態におけるアプリケーションカテゴリ200は、例えば、スケーラブルなクロスIVN(隔離された仮想ネットワーク)チャネル206、スケーラブルなVPN(仮想プライベートネットワーク)接続208、スケーラブルな専用リンク接続210、マルチキャスト212、アドレス置換216、ネットワークトラフィックセキュリティ/監査アプリケーション218、プロバイダネットワークのプライベートバックボーンネットワークを使用するスケーラブルなWAN(ワイドエリアネットワーキング)などを含み得る。他のタイプのパケット処理アプリケーションが様々な実施形態でサポートされ得る。一般に、
図1の仮想ルータインスタンス102と同様の仮想ルータは、透過的かつスケーラブルな方法で広範囲のトラフィックレートをサポートするために必要に応じて動的に割り当て可能な仮想ルータノード及び/または補助リソースを用いて、任意の所望の種類のパケット処理または変換(または異なる種類のパケット処理または変換の組み合わせ)を(例えば補助タスクオフロードリソースの助けを借りて)実装するように構成され得る。
【0033】
いくつかの実施形態では、前述したように、仮想ルータ(VR)は、隔離された仮想ネットワークを確立できるプロバイダネットワークに実装され得る。このような実施形態では、VRは、2つ以上の異なるIVNのプライベートアドレス空間間の仲介手段またはチャネルとして機能し、実際には、スケーラブルかつスケーラブルなクロスIVNチャネル206をセットアップし得る。少なくともいくつかの実施形態では、クロスIVNチャネルには補助タスクが必要ない場合がある。スケーラブルなVPN接続208については、図示の実施形態ではBGP処理、暗号化などの補助タスクが必要となる場合があり、そのような補助タスクは、VRに関連付けられたオフロードリソースを使用して実装され得る。スケーラブルなVPN接続は、例えば、プロバイダネットワークの外部にある1つまたは複数のクライアント所有の施設に確立してもよく、そのような施設には、BGP処理エンジンを備えたルータまたはその他の機器が含まれてもよい。BGPセッションは、そのような外部処理エンジンと、いくつかの実施形態において上で紹介した種類のリソースをオフロードする補助タスクで設定されたBGP処理エンジンとの間に設定され得る。
【0034】
いくつかの実施形態では、プロバイダネットワークは、「直接接続」リンクと呼ばれる専用の物理リンクを介して外部ネットワークとのスケーラブルな接続210をサポートし得、そのような外部ネットワーク間の(及びそのような外部ネットワークとIVNまたはVPN接続された外部ネットワークとの間の)トラフィックは、仮想ルータを使用して管理され得る。このようなシナリオの補助タスクは、少なくともいくつかの実施形態では、例えば、外部施設のBGP処理エンジンとオフロードリソースのBGP処理エンジンとの間で交換されるBGPセッションメッセージの処理を含む、BGP処理も含み得る。
【0035】
マルチキャスト212は、いくつかの実施形態ではVRを使用して実装可能なネットワーク技術であり、ソースから送信された単一パケットの内容(例えばボディ)が指定されたマルチキャストグループの複数の宛先に複製される。いくつかの実施形態では、マルチキャストグループのメンバーシップ情報は、IGMPメッセージを介して定期的に取得及び/または検証されてもよく、したがって、IGMPメッセージ処理を含む補助タスクは、マルチキャストアプリケーションのオフロードリソースを使用して実行され得る。
【0036】
アドレス置換216は、その名前が示すように、特定のフローのパケットについて、ソースアドレス及びポートを一貫した方法で置換することを含み得る。このようなアドレス置換技術は、例えば、2つ以上の隔離されたネットワークのプライベートアドレス範囲間に重複が存在する場合に有用であり得、いくつかの実施形態では、VRがそのような置換を担う仲介手段として使用され得る。図示の実施形態では、アドレス置換に補助タスクは必要ない場合がある。
【0037】
プロバイダネットワークの一部のクライアントは、様々なエンドポイントのセット間でVRを介して流れるトラフィックの少なくともサブセットに対して、ネットワークトラフィックセキュリティまたは監査アプリケーション218を実装したい場合がある。トラフィックのサブセットは、例えば、クライアントが割り当てたタグまたはラベルを介して示され、クライアントによってポリシーベースのルーティングルールの形式で指定されてもよい。このようなアプリケーションの場合、図示の実施形態では、補助タスクには、IPSecまたは他のクライアントが選択したセキュリティプロトコルに関連する処理、監査ログの生成及び管理タスクなどが含まれ得る。スケーラブルなワイドエリアネットワーキングアプリケーション220の場合、いくつかの実施形態では、補助タスクには、BGP処理、TWAMP処理を含むパフォーマンス測定またはプロバイダネットワークのカスタム待ち時間測定プロトコルなどが含まれ得る。
【0038】
少なくともいくつかの実施形態では、単一のVRが、
図2に示されるパケット処理機能のいくつか(及び/または他のパケット処理技術)を組み合わせてもよいことに留意されたい。例えば、いくつかの実施形態では、単一のVRは、スケーラブルなクロスIVNチャネル、スケーラブルなVPN接続、スケーラブルな専用リンクベースの接続などを同時に実装(または他のVRと連携して同時に実装)し得る。他のカテゴリのパケット処理は、異なる実施形態においてVRを使用してサポートされ得るが、
図2に示されるアプリケーションのタイプの少なくともいくつかは、いくつかの実施形態ではサポートされない場合がある。
【0039】
仮想ルータノードとオフロードリソース間のインタラクションの例
図3は、少なくともいくつかの実施形態による、仮想ルータの例外パスノード、仮想ルータの高速パスノード、及び仮想ルータに関連付けられた補助タスクオフロードリソースの間のインタラクションの例の概要を示す。図示の実施形態では、仮想ルータ327は、1つまたは複数のPPSクライアント310のクライアントトラフィックソースエンドポイント364とクライアントトラフィック宛先エンドポイント372との間のトラフィックを処理するために割り当てられている。PPSクライアント310は、図示の実施形態では、例えば、ウェブベースのコンソール、コマンドラインツール、API、グラフィカルユーザインタフェースなどを介して、アプリケーション設定/構成要求343をPPS制御プレーン314に送信し得る。要求343は、VR327の助けを借りて実行されるパケット処理のタイプ(例えば、パケット転送/ルーティングのために実装されるポリシー)、所望のパフォーマンス、または満たされるべき他の目標などを示し得る。図示の実施形態において、クライアントの要件及び/またはPPSの様々なリソースにおける可用性及び現在のリソース消費レベルに基づいて、PPS制御プレーン314は、例外パスノード(EN、決定ノードとも呼ばれる)のセット325及びVR327の高速パスノード(FN、アクション実装ノードとも呼ばれる)のセット368を識別または構成し得る。加えて、少なくともいくつかの実施形態では、エンドポイント364と372の間のトラフィックに関連する補助タスク(例えば、
図2に示される種類のタスク)を実行するためのリソースも、補助タスクオフローダ373A及び373Bなど、図示の実施形態において同様に構成され得る。様々な実施形態において、補助タスクオフローダ373と仮想ルータ327の少なくともいくつかのノードとの間に接続が確立され得る。いくつかの実施形態では、接続は、FN368と補助タスクオフローダとの間でのみ確立され得る。他の実施形態では、接続は、EN325と補助タスクオフローダとの間でもまたは、その代わりに確立され得る。
【0040】
クライアントによって提供される転送情報ベース(FIB)エントリ、パケット処理の決定を行うために使用される、クライアントによって示されるポリシーベース(PBR)ルーティングルールなどの構成メタデータ305は、図示の実施形態におけるPPS制御プレーン314から1つまたは複数のEN325に送信され得る。所与のVR327が複数のENを含むいくつかの実施形態では、すべてのENに、VR327が割り当てられる1つまたは複数のアプリケーションに関するすべてのメタデータが提供され得る。他の実施形態では、メタデータのそれぞれのサブセットが個々のENに提供されてもよい。
【0041】
パケットがFN368におけるアプリケーションのトラフィックソースエンドポイント364から受信されると、アクションキャッシュ397内で対応するアクションを見つける試みが行われ得る。このようなアクションが、例えばパケットヘッダ値、クライアント識別子などのいくつかの組み合わせに基づくキーを使用したルックアップによって見つかった場合、そのアクションが実装され、その結果、図示の実施形態では、受信したパケットの少なくともいくつかのコンテンツが1つまたは複数の宛先エンドポイント372に送信される。キャッシュヒットが発生し、ENが直接関与しないこの「高速パス」308処理は、様々な実施形態において、実際には、より遅いキャッシュミスの場合(または、ある種の補助タスクを実行する必要がある場合)よりもはるかに頻繁に遭遇する場合がある。少なくとも一部のアプリケーションでは、同じ論理アクションが実装されるパケットの総数が非常に多くなる場合があることに注意されたい。例えば、1つのソースエンドポイントから宛先エンドポイントに同じ長寿命のTCP接続を使用して数百または数千のパケットが送信される場合がある。
【0042】
パケットの到着によりFN368でキャッシュミスが生じるシナリオでは、図示の実施形態では、EN325との要求応答インタラクション307がAINによって開始され得る。アクションクエリ(一部の実施態様では、受信したパケット全体を含み得、他の実施態様では、そのヘッダ値の何らかの組み合わせなど、パケットの表現または一部を含み得る)は、FN368からEN325に送信され得る。EN325は、例えば、アクションクエリ及び構成メタデータ305(PBRルール337を含む)の内容を検査し、図示の実施形態では、キャッシュミスの原因となるパケット及び関連パケット(例えば、同じフローに属するパケットであり、フローは、パケットヘッダ値の何らかの組み合わせによって少なくとも部分的に定義される)に対して実装されるアクションを決定する。少なくともいくつかの実施形態では、EN325は、(a)FNにおいて迅速に実行することができ、(b)必ずしもFNにおいて解釈または「理解」される必要がない、アクションの実行可能バージョンを生成する、アクションコードジェネレータ326を含み得る。少なくとも1つの実施形態では、生成されたアクションは、拡張バークレーパケットフィルタ(eBPF)インタフェースの動作と同様の動作を実行するために使用できるカーネル内レジスタベースの仮想マシン命令セットのいくつかの命令を含み得る。このアクションは、少なくともいくつかの実施形態では、キャッシュのために、またキャッシュミスの原因となるパケットに関する実施態様のためにFNに戻されてもよい。
【0043】
少なくともいくつかの実施形態では、このタイプのキャッシュミスによる要求応答経路は、補助タスクにも使用され得る。例えば、構成メタデータ305は、特定のタイプのパケット(クライアント施設のBGP処理エンジンからFNで受信されたBGPパケットなど)について、実行されるべきアクションが、補助タスクオフローダにパケットを送信することであることを(例えば、以下で説明するカプセル化技術を使用して)ENに示し得る。いくつかの実施態様では、FNは、ENで生成され、キャッシュ397にキャッシュされたアクションを実装することによって、そのようなパケットを補助タスクオフローダ373Aに送信し得る。このような補助タスクの結果308を含む応答パケットがFNの補助タスクオフローダ373Aから受信されると、いくつかの実施形態では、結果308はENに送信され、そこで、結果308は、エンドポイント364と372の間の1つまたは複数の後続のパケットの転送に使用されるアクションを生成または変更するために使用され得る。一実施形態では、ENは、FNを仲介手段として使用する代わりに、補助タスクオフローダ373Bと直接通信するように構成され得る。このような実施形態では、補助タスクの結果は、ENによって直接受信されてもよく、また、エンドポイント364とエンドポイント372との間でクライアントトラフィックを転送するために使用されるアクションを生成/変更するために使用されてもよい。少なくともいくつかの実施形態では、補助タスクをトリガするネットワークパケットまたはメッセージの少なくともいくつかは、エンドポイント372に向けられるクライアントアプリケーションパケットとは対照的に、VR327自体のノードに向けられ得る(例えば、VRノードに割り当てられた宛先アドレスを有する)ことに留意されたい。
【0044】
アクションクエリを送信したFN368において、生成されたアクションはキャッシュ397に格納され、様々な実施形態において、アクションの識別及び生成をもたらした最初のパケットに加えて、他のパケットに対して必要に応じて再利用され得る。キャッシュ397からエントリを削除するために、様々なエビクションポリシーのいずれかが使用され得る。例えば、所与のアクションA1の実行を必要とするパケットが、ある閾値時間間隔にわたって受信されなかった場合、一実施形態では、A1はキャッシュから削除され得る。少なくとも1つの実施形態では、キャッシュ内の個々のエントリは、例えば、何らかのパケットに対してアクションが実行された最後の時点に対応するタイムスタンプを含む、関連する使用タイミングレコードを有し得る。このような実施形態では、エントリは、その使用タイミングレコードがエビクション基準が満たされたことを示す場合/示すとき(例えば、アクションがいくらかの閾値秒/分の間実行されなかったとき)、キャッシュから削除され得る。いくつかの実施形態では、キャッシュされたアクションは、構成メタデータ305の現在の状態に関して定期的に再チェックされてもよい。例えば、T秒(Tは構成可能なパラメータである)ごとに、FNは、キャッシュされたアクションを示す再検証クエリをENに送信してもよく、ENは、キャッシュされたアクションが、新しく更新された構成メタデータエントリによって無効になっていないことを確認し得る。様々な実施形態において、所与の受信パケットに対して最終的に実行されるアクションが正しい限り、機能の観点からは、アクションがFNでキャッシュされたか、ENで生成される必要があったかは問題になり得ないことに留意されたい。そのため、たとえアクションが不必要にキャッシュ397から時々エビクションされる場合でも、または過度に悲観的なエビクション決定の結果として、そのような実施形態ではパケット処理アプリケーションへの全体的な影響は小さい可能性がある(不必要なエビクションが頻繁に発生しない限り)。
【0045】
オフロードリソースの例示的な独立したスケーリング
補助タスクに使用されるリソースをベースライン転送タスクに使用されるリソースから分離する利点の1つは、ワークロードの変化を2種類のタスクで独立して処理できることである。
図4は、少なくともいくつかの実施形態に従って、仮想ルータに使用されるリソースが、仮想ルータを介してルーティングされるトラフィックに関連する補助タスクに使用されるリソースとは独立して自動的にスケーリングされ得る例示的なシナリオを示す。VRスケーリングマネージャのセット477は、FNやENなどのVRリソースのワークロード及びリソース利用レベルを収集及び分析し、図示の実施形態では、収集されたメトリクスの傾向または変化に応じて、必要に応じてVRリソースの取得または解放を開始する責任を割り当てられてもよい。同様に、補助タスクオフローダスケーリングマネージャのセット478には、仮想ルータに関連付けられた補助タスクオフローダ(ATO)のセットにおけるワークロード及びリソース利用レベルを収集及び分析し、VRスケーリングマネージャによって開始された変更とは独立してATOに対するリソースの取得または解放を開始する責任が割り当てられてもよい。
【0046】
所与のVRに対する初期VRリソースセット410Aは、例えば、図示された例示的なシナリオでは、4つの高速パスノード(FN402A、402B、402C、及び402D)及び例外パスノードのペア(EN403A及び403B)を含み得、各ノードは、例えばそれぞれのコンピューティングデバイスで実行される1つまたは複数のプロセスまたはスレッドを含む。初期補助タスクオフロードリソースセット450Aは、2つのATO491A及び491Bを含み得、そのそれぞれは、それぞれのコンピューティングデバイスで実行される1つまたは複数のプロセスまたはスレッドを含み得る。VRに到着するアプリケーションデータパケットのレートが変化すると、図示の実施形態では、ワークロードの変化またはATOでの構成の変化とは無関係に、リソースセット410AがVRスケーリングマネージャによって拡張または縮小され得る。例えば、アプリケーションデータトラフィックの到着レートが何らかの閾値を超えて増加し、それに応じてFN及びENでのCPU及び/またはメモリ使用率レベルが増加し、選択した時間にわたって閾値を超えたままになった場合、2つの新しいFN(402E及び402F)及び新しいEN403Cがインスタンス化されてVRに追加されてもよく、その結果、スケールアップされたVRリソースセット410Bが得られる。あるいは、アプリケーションデータトラフィックが閾値未満に減少し、しばらく閾値未満のままである場合、初期VRリソースセット410AのFN(402D)のうちの1つ及びEN(403B)のうちの1つが使用停止されてもよく、VRリソースセット410Cが縮小またはスケールダウンされる。
【0047】
ATOスケーリングマネージャ478は、初期ATOリソースセット450Aにさらに多くのリソース(例えば、ATO491C及び491D)を追加することを決定し得、図示の実施形態では、初期ATOリソースセットから収集されたリソース使用率レベルまたは他のメトリクスがスケールアップ基準を満たす場合、スケールアップされたATOリソースセット450Bをもたらし得る。あるいは、初期ATOリソースセット450Aから収集されたメトリクスが異なる基準を満たす場合、491BなどのATOは非アクティブ化され、その結果、ATOリソースセット450Cがスケールダウンされてもよい。ATOリソースセット構成への変更は、様々な実施形態において、VRリソースセットの変更に関して非同期的に行われ得る。
【0048】
例示的なセルベースの仮想ルータアーキテクチャ
いくつかの実施形態では、仮想ルータの転送動作に使用されるリソースは、セルと呼ばれる自律的なグループに配置され得る。
図5は、少なくともいくつかの実施形態による、仮想ルータ用の独立して管理されるパケット処理セルの使用例を示す。示されているように、クライアントの要求に応じて仮想ルータを構成できるパケット処理サービス(PPS)502は、図示の実施形態では、アクション実装レイヤ541、決定レイヤ542、及びセル管理レイヤ543に加えて、APIハンドラ、メタデータストア/リポジトリなどを含むサービスレベル制御プレーンリソース571のセットを含み得る。レイヤ541、542、及び543の個々のレイヤは、レイヤ541の高速パスノード(FN)、レイヤ542の例外パスノード(EN)、及びレイヤ543の管理ノード(AN)などの複数のノードを含み得る。レイヤ541、542、及び543のリソースは、様々な実施形態において、隔離パケット処理セル(IPPC)527と呼ばれるグループに組織化され得、所与のIPPC527は、いくつかのFN、いくつかのEN、及びいくつかのANを含む。例えば、図示の実施形態では、IPPC527Aは、FN520A、520B及び520C、EN522A及び522B、ならびにAN525A及び525Bを含み得、一方、IPPC527Bは、FN520L、520M及び520N、EN522C及び522D、ならびにAN525J及び525Kを含み得る。FN、EN、及び/またはANなどの個々のノードは、異なる実施形態では、1つまたは複数のコンピューティングデバイスにおいてソフトウェア及びハードウェアの何らかの組み合わせを使用して実装され得る。例えば、いくつかの実施形態では、所与のFN、EN、またはANは、プロバイダネットワークの仮想化コンピューティングサービスによって管理されるホストで実行される仮想マシンの1つまたは複数のスレッドまたはプロセスを含み得るが、他の実施形態では、FN、EN、及び/またはANは、非仮想化サーバを使用して実装されてもよい。
【0049】
パケット処理サービス502のリソースは、
図2の文脈で説明した種類のアプリケーションなど、仮想ルータを使用する様々なネットワーキングアプリケーションを構築するために使用できるインフラストラクチャまたはフレームワークとして機能し得る。いくつかの実施形態では、個々のIPPC527は、そのようなアプリケーションの1つまたは複数のインスタンスのロジックを実装するように割り当てられ得、そのアプリケーションに関連付けられたトラフィックは、IPPC境界を越えることなく(少なくとも通常の動作条件下で)処理される。例えば、図示の実施形態では、IPPC527Aは、少なくとも隔離されたネットワーク510Aと隔離されたネットワーク510Bとの間でパケットを送信するためにVR(VR-A)のインスタンスに割り当てられている場合があり、一方、IPPC527Bは、少なくとも隔離されたネットワーク510Jと510Kの間でパケットを送信するために別のVRインスタンス(VR-B)に割り当てられている場合がある。隔離されたネットワーク510の個々のネットワークは、関連付けられたプライベートIP(インターネットプロトコル)アドレス範囲を有し得、その結果、所与の隔離されたネットワーク510内のリソースに割り当てられたアドレスは、隔離されたネットワークの外側のリソースには見えないようにしてもよく、少なくともデフォルトでは(例えば、仮想ルーティングアプリケーションを実装するIPPCの割り当て前に)、異なる隔離されたネットワーク内のリソース間の経路が必ずしも利用可能であるとは限らない。
【0050】
様々な実施形態において、VRのインスタンスは、PPS502の顧客から受信したプログラムによる要求に応じて設定され得る。このような要求は、例えば、PPS制御プレーン571のAPIハンドラで受信されてもよい。例えば、隔離されたネットワーク510Aと510Bの間の接続を可能にするクライアントの要求(複数可)に応じて、図示の実施形態では、IPPC227Aを使用して構築されたVR-Aを、2つの隔離されたネットワーク間でパケットを転送するように割り当ててもよい。同様に、隔離されたネットワーク510J、510K、及び510L間のマルチキャスト接続を可能にする別のクライアントの要求(または同じクライアントの要求)に応じて、IPPC527Bを割り当ててもよい。少なくともいくつかの実施形態では、仮想ネットワークインタフェースの集合は、隔離されたネットワークと、それらの隔離されたネットワークに割り当てられたセルのFNにおいて、エンドポイント(512D、512E、512J、512K、512P、512Q、512R、512S、512V、512WなどのTE512)間でトラフィックが流れることを可能にするようにプログラム的に構成され得る。ネットワーキングアプリケーションがその代わりに構成されているクライアントは、いくつかの実施形態では、決定メタデータ(例えば、転送情報ベースエントリ、ルートテーブルエントリなどのレイヤ3メタデータ523)及び/またはポリシーを提供し得、PPSの制御プレーンプログラムインタフェースを介して実行されるアクションを決定するために使用することができる。クライアントから受信したメタデータは、図示の実施形態では、例えばPPS APIハンドラからAN525を介して、または直接、適切なIPPC527の決定レイヤノードに伝播する場合がある。少なくともいくつかの実施形態では、クライアントによって最初に提供されるメタデータは、例えば、使用される仮想ネットワークインタフェースの識別子、ローカリティ関連情報、様々なFNが構成されている可用性ゾーンまたは可用性コンテナに関する情報などを考慮したより具体的なルートテーブルエントリに高レベルの情報を転換することによって変換され得、変換されたバージョンは異なるEN522に格納され得る。
【0051】
図示の実施形態では、隔離されたネットワーク510AのTE512Kなどのソースエンドポイントからの所与のパケットは、520Cなどの特定のFNで受信され得る。使用される特定のFNは、例えば、特定のエンドポイントからの特定のフローのパケットがセルのFNのサブセットの1つに向けられるように、いくつかの実施形態ではシャッフルシャーディングアルゴリズムに基づいて選択され得る。個々のFNは、アクションキャッシュ521Aなどのそれぞれのアクションキャッシュを含み得る、またはそれにアクセスすることができる。アクションキャッシュは、送信クライアントの識別子、ソースと宛先のIPアドレス、ソースと宛先のポートなどの組み合わせなど、受信したパケットの属性の組み合わせによってインデックス付けされ得る。いくつかの実施形態では、アクションは、例えば、ネットワーク処理動作を実装するために最適化されたレジスタベースの仮想マシンの命令を使用して表現されたバイトコードを使用して、実行可能な形式でキャッシュに格納され得る。FN520Cは、そのキャッシュ内の受信パケットのアクションの表現を検索しようとする場合がある。そのようなアクションが見つかった場合、図示の実施形態では、「高速パス」566を使用してパケットを処理してもよい。例えば、アクションの実行可能バージョンはFN520Cで実装され得、その結果、隔離されたネットワーク510B内のTE512Eなどの1つまたは複数の宛先エンドポイントに向かうパス上でパケットの内容が送信される。パスにはゼロ以上の追加のFNが含まれる場合がある。例えば、矢印561及び562を使用して示されるように、パケットの内容は、図示の高速パケットパスでFN520Bを介してTE512Eに送信され得る。例えば、FN520Bは、TE512Eにアクセスするように構成された仮想ネットワークインタフェースを有し得るが、FN520Cは、そのような仮想ネットワークインタフェースが構成されていない場合があり、その結果、パケットのコンテンツはFN520Bを介して送信されることになる。少なくともいくつかの実施形態では、パケットの1つまたは複数のヘッダ値がアクションによって変更される場合があることに留意されたい(例えば、重複するプライベートアドレス範囲がソース及び宛先の隔離されたネットワークでたまたま使用されるシナリオにおいて)。つまり、最終的に宛先エンドポイント512Eで受信されるパケットは、ソースエンドポイント512Kから送信されたパケットとは1つまたは複数のヘッダ値が異なる場合がある。
【0052】
FNのローカルアクションキャッシュに受信パケットのアクションが含まれていない場合、ワークフローが多少長くなる場合がある。したがって、例えば、パケットがFN520MのTE512Pから受信され(矢印567で示されるように)、受信したパケットのルックアップが試行されたときにFN520Mのローカルキャッシュでキャッシュミスが発生した場合、FN220Mは矢印568で示すように、IPPC527B内の選択されたEN(EN522D)にアクションクエリを送信し得る。EN522Dは、例えば、マルチキャスト操作が実行されることを示すクライアント提供のポリシーに基づいて、及びクライアントによって提供される転送/ルーティングメタデータに基づいて、パケットのコンテンツが、図示の例では、それぞれ隔離されたネットワーク510K及び510L内のエンドポイント512R及び512Vのペアに送信されることを決定し得る。このようなマルチキャスト動作を達成するアクションの表現は、FN520Mに送り返され、そのローカルキャッシュに格納され、FN520Mで実行され、その結果、矢印569及び570で示される送信が行われ得る。この例では、FN220Mは、アウトバウンドパケットを宛先TE512R及び512Vに直接送信することができ、IPPC527Bの他のFNを含むパスを使用する必要がない場合がある。
【0053】
VR-AまたはVR-BなどのVRを使用して実装されるパケット処理アプリケーションのタイプに応じて、図示の実施形態におけるベースライン転送アクションに加えて補助タスクが実行されてもよい。例えば、マルチキャストの場合、マルチキャストドメイン構成情報を含む、IGMPに従ってフォーマットされたメッセージは、VRのFNで(例えば、ソース隔離されたネットワークまたは宛先隔離されたネットワーク内のIGMP処理エンジンから)受信され、IGMPメッセージの処理は、そのような補助タスクの1つのカテゴリを構成し得る。様々な実施形態では、上で紹介した種類の1つまたは複数の補助タスクオフローダ577を、VR-Bなどの所与のVRに関連付けられる場合がある。図示の実施形態では、補助タスクオフローダ(複数可)577は、特にそのような補助タスクを処理するために設定された別の隔離されたネットワーク510Y(例えば、仮想化コンピューティングサービスの隔離仮想ネットワーク)内に実装され得る。
【0054】
所与のIPPC527は、少なくとも通常の動作条件中、そのIPPCから他のIPPCへデータプレーンネットワークトラフィックが流れることが予想されない場合があるため、いくつかの実施形態では「隔離」されていると呼ばれる場合がある。少なくとも1つの実施形態では、制御プレーントラフィックは、通常の動作条件下ではセル境界を越えて流れない場合もある。このような隔離の結果、多くの利点が得られる場合がある。例えば、(a)1つのIPPCを使用して実装される1つのVRのワークロードが増加しても、他のセルで他のVRに使用されているリソースに影響を与えない場合があり、(b)まれに所与のセル内で障害が発生した場合でも、その障害が他のVRが割り当てられているアプリケーションに影響を与えることはないと予想され得る。ソフトウェア更新は一度に1つのIPPCのノードに適用され得るため、そのような更新によって潜在的に導入されるバグは、他のセルを使用するアプリケーションに影響を与えない場合がある。いくつかの実施形態では、少なくとも1つのIPPCが所与のVRインスタンスに割り当てられ得る一方で、所与のIPPC527は、複数の顧客に代わって構成される複数のVRのマルチテナントモードで使用され得る。
【0055】
少なくともいくつかの実施形態では、シャッフルシャーディングアルゴリズムを使用して、IPPC527のノードのサブセット(例えば、FN)を、1つまたは複数のソースエンドポイントまたは宛先エンドポイントの所与のセットに割り当ててもよい。このようなアルゴリズムによれば、IPPCがN個のFNを含む場合、所与のソースエンドポイントE1からのパケットは、(例えば、パケットヘッダ値のハッシュに基づいて)K個のFN(K<N)のサブセットS1のうちの1つに向けられ得る。そして、別のソースエンドポイントE2からのパケットは、K個のFNの別のサブセットS2に向けられ得るが、この場合、S1とS2の間の最大重複はL個の共通FNに制限される。同様のパラメータは、様々な実施形態において、アウトバウンドパケットの宛先エンドポイントへの接続に使用され得る。少なくともいくつかの実施形態では、そのようなシャッフルシャーディング技術は、ハッシュベースの負荷分散の利点と、ソースエンドポイント及び宛先エンドポイントの個々のトラフィックのより高い可用性とを組み合わせてもよい。
【0056】
補助タスクオフローダの例示的なセルベースアーキテクチャ
いくつかの実施形態では、仮想ルータノードに対してセルベースのアーキテクチャを使用する場合について上述したのと同様の理由で、仮想ルータ用に構成された補助タスクオフローダもセル内に編成され得る。
図6は、少なくともいくつかの実施形態による、仮想ルータ用の独立して管理される補助タスクオフロードセルの使用例を示す。図示の実施形態では、プロバイダネットワーク602は、様々な顧客もしくはクライアントに代わって、及び/またはプロバイダネットワークサービスの様々な機能を実装するために、隔離された仮想ネットワークが確立され得る仮想化コンピューティングサービス(VCS)605を含み得る。
図6に示される実施形態では、IVN610Aは、仮想ルータVR-Aに割り当てられたパケット処理セルに使用されるリソースを含み得、一方、IVN810Bは、VR-Aに関連付けられた補助タスクオフロードセル(ATOC)に使用されるリソースを含み得る。IVNリソース(例えば、コンピューティングインスタンスまたは仮想マシンを含む)は、少なくともいくつかの実施形態では、他の隔離された仮想ネットワークに割り当てられたリソースから論理的に隔離(デフォルトでは、アクセス不可能に)されてもよい。図示の実施形態では、パケット処理サービス自体は、VCS605のクライアントまたは顧客と見なしてもよい。つまり、パケット処理サービスは、VCS605によってサポートされる機能を利用することによって構築され得る。前述のように、IVNが代わりに確立されるクライアントには、IVNのリソースのネットワーク構成に関して大幅な柔軟性が与えられ得る。例えば、コンピューティングインスタンスのプライベートIPアドレスは、他のIVN内の他のリソースに同じIPアドレスが割り当てられている場合がある、クライアントが選択したサブネットがIVN内に確立されている場合がある、セキュリティルールがIVNに関して送受信されるトラフィックに対してクライアントによって設定されている場合がある、仮想ネットワークインタフェースがクライアントの要求で特定のグループのリソースの中で接続を可能にするためのクライアントの要求で設定される場合がある、などの可能性を考慮する必要なしに、クライアントによって選択されてもよい。
【0057】
少なくともいくつかの実施形態では、様々なコンピューティングインスタンスが実行されるホストなどのVCS605のリソースは、650A及び650Bなどの複数の可用性コンテナ650間に分散され得る。次いで、可用性ゾーンとも呼ばれ得る可用性コンテナは、所与の可用性コンテナ内のリソースが他の可用性コンテナ内の不具合から隔離されるような手段で(例えば、電力関連装置、冷房装置、または物理的機密保護構成要素などの独立したインフラ構成要素を用いて)設計された、1つまたは複数の異なる位置またはデータセンタのうちのいくつかまたはすべてを含んでもよい。1つの可用性コンテナ内の不具合が、他のあらゆる可用性コンテナ内に不具合をもたらすことは予期され得ず、したがって、所与のリソースの可用性プロファイルは、異なる可用性コンテナ内のリソースの可用性プロファイルから独立していることが意図される。
【0058】
図示の実施形態では、VR-A用に設定される所与のIPPCの高速パスノード(FN)625、例外パスノード(EN)627、及び管理ノード(AN)629(機能において
図5に示されるものと同様)はすべて、VCS605のそれぞれのコンピューティングインスタンス(CI)620を使用して少なくとも部分的に実装され得る。示されるように、FN625A、625B、625P、及び625Qは、CI620A、620B、620P、及び620Qで実装され得る。EN627A及び627Bは、それぞれCI620D及び620Rで実装されてもよく、AN629A及び629Bは、それぞれCI620L及び620Sで実装されてもよい。いくつかの実施形態では、所与のCI620は、それぞれの物理仮想化ホストでインスタンス化され得る。他の実施形態では、複数のCIが所与の物理ホストに設定され得る。IVN610Aに実装される図示のIPPCは、少なくとも2つのデータプレーンサブネット640A及び640Bと、少なくとも2つの制御プレーンサブネット642A及び642Bを含み得る。1つのデータプレーンサブネット及び1つの制御プレーンサブネットは、少なくとも2つの可用性コンテナ650のそれぞれに実装され得る。例えば、サブネット640A及び642Aは、可用性コンテナ650A内に構成され得る一方、サブネット640B及び642Bは、可用性コンテナ650B内に構成され得る。いくつかの実施形態では、制御プレーンサブネット642は、それぞれのCI620に1つまたは複数のAN629を含み得、一方、データプレーンサブネット640は、それぞれのCI620に1つまたは複数のFN625及び1つまたは複数のEN627を含み得る。複数の可用性コンテナの使用の結果として、IPPC全体(またはIPPCのノードを使用するVR-Aなどの任意のVR)が任意の所与の障害イベントによって影響を受ける確率は、図示の実施形態では最小限に抑えられ得る。様々な実施形態において、制御プレーンノードとデータプレーンノードに対して異なるサブネットを使用することは、IPPCを使用するVRの制御プレーントラフィックの少なくとも大部分をVRのデータプレーントラフィックから分離するのに役立ち得る。
【0059】
図6に示されるシナリオ例では、IVN610B内に構成された補助タスクオフローダ(ATO)691A、691B、691J、及び691Kを含む補助タスクオフローディングセル(ATOC)は、VR-Aに対して確立され得るか、またはVR-Aに割り当てられ得る。ATOCは、図示の実施形態では、可用性コンテナ650A及び650Bにわたって分散されたリソースを使用しても実装され得る。ATOは、コンピューティングインスタンスを使用しても実装され得る。例えば、ATO691A及び691Bはそれぞれ、データプレーンサブネット643A内のコンピューティングインスタンス690A内に1つまたは複数のプロセスまたはスレッドを含み得る一方、ATO691J及び691Kは、データプレーンサブネット643B内のCI690J内に実装され得る。図示の実施形態では、同じ可用性コンテナ内のVR-AのFN間の接続を可能にするために、各データプレーンサブネット643にそれぞれの仮想ネットワークインタフェース(VNI)655を設定してもよい。したがって、VNI655Aは、VR-AのFN625A及び625BとATO691A及び691Bとの間の接続のために構成され得る一方、VNI655Bは、VR-AのFN625P及び625QとATO691J及び691Kとの間の接続のために構成され得る。仮想ネットワークインタフェースは、コンピューティングインスタンスと動的に関連付け(「アタッチ」)または関連付け解除(「デタッチ」)できるネットワーク構成プロパティまたは属性(IPアドレス、サブネット設定、セキュリティ設定など)のセットを含み得、例えば、コンピューティングインスタンスがある物理ホストから別の物理ホストに移行する場合に、物理ネットワークインタフェースで変更を加える必要がない。
図6の実施例に示すように、VRノードに使用されるものと同じ可用性コンテナ間に分散されたATOCを使用することにより、個々の可用性コンテナ内に限定される障害に対して補助タスクの処理を回復力のあるものにし得る。いくつかの実施形態では、補助タスクオフローダを管理するために別個の制御プレーンリソース(
図6には示されていない)も設定され得る。
【0060】
補助タスク関連メッセージのカプセル化プロトコルトンネルの使用例
図7は、少なくともいくつかの実施形態による、仮想ルータのノードを補助タスクオフローダと接続する例示的な技術を示す。図示の実施形態では、仮想ルータセル710内の高速パスノードFN702は、関連するFN仮想ネットワークインタフェース703を有する。補助タスクオフロードセル(ATOC)710は、ATO791A、791B、及び791Cが実行される1つまたは複数のコンピューティングインスタンスに関連付けられたVNI(AVNI)754を含む。
【0061】
例えば、VRが実装されるパケット処理サービスの制御プレーンコンポーネントによって開始される、補助タスク処理のための設定動作の一部として、図示の実施形態では、それぞれのカプセル化プロトコルトンネル755(例えば、755A、755B、及び755C)が、BGP、IGMPなどの様々なプロトコルに従ってフォーマットされるメッセージをAVNI754からATOに送信するために確立され得る。いくつかの実施態様では、Generic Network Virtualization Encapsulation(GENEVE)プロトコルがトンネルに使用されてもよく、これにより、共通のトンネリングアプローチを使用して、多種多様な標準プロトコル及び/またはカスタムプロトコルのパケットをFNとATOの間で送信できるようになる。FN702などのFNは、例えば、EN及びFNが属するVRに対して選択されたATOCに関するメタデータを受信するENによって、ラベル750に示すように、図示の実施形態において、隔離された仮想ネットワーク(IVN)間でアプリケーションデータパケットを転送するために使用されるアクションと同様の実行可能なアクションを使用して、補助タスク処理を必要とするパケットをFN VNI703を介してAVNIに送信するように構成され得る。すなわち、少なくともいくつかの実施形態では、VRが構成される隔離されたネットワークにおいてFNとエンドポイントとの間の接続を可能にするために使用されるのと同様の方法を使用して、FNとATOとの間の接続を可能にし得る。同様に、FN VNIは、ラベル757に示すように、図示の実施形態では設定動作の一部として、ATOからのアウトバウンドパケット(補助タスクの結果を含み得る)の宛先として設定され得る。VRノードとATOとの間の双方向接続を確立するための他の技術が、異なる実施形態で使用されてもよい。
【0062】
補助タスクのオフロードに関する例示的なプログラムによるインタラクション
図8及び
図9は、少なくともいくつかの実施形態による、仮想ルータ及び関連する補助タスクオフロードリソースの構成及び使用に関連する、クライアントとパケット処理サービスとの間のプログラムによるインタラクションの例を示す。1つまたは複数のプログラムインタフェース877は、図示の実施形態では仮想ルータが確立されるパケット処理サービス(PPS)812によって実装され得る。このようなインタフェースには、例えば、アプリケーションプログラミングインタフェース(API)のセット、グラフィカルユーザインタフェース、コマンドラインツール、ウェブベースのコンソールなどが含まれ得る。構成関連のメッセージは、例えば、PPSの制御プレーンコンポーネントによって処理され得る。
【0063】
PPS812のクライアント810は、図示の実施形態においてVRを構成するプロセスを開始するためにCreateVirtualRouter要求814を送信し得る。CreateVR要求に応答して、PPSの制御プレーンコンポーネントは、いくつかの実施形態では、要求されたVRが作成されたこと(例えば、VRを表すメタデータがPPSのリポジトリに格納されたこと)を示すVRID(仮想ルータ識別子)815を提供し得る。
【0064】
いくつかの実施形態では、PktProcessingAppInfoメッセージ817がインタフェース877を介して送信されてもよく、例えば、仮想ルータを使用して実装されるパケット処理アプリケーションのタイプを示す。例えば、
図2の文脈で論じたアプリケーションのタイプのうちの1つまたは複数は、PktProcessingAppInfoメッセージ内で示されてもよく、及び/または、VRを使用して処理されるトラフィックに対して1つまたは複数のポリシーベースルーティング(PBR)ルールが指定されてもよい。アプリケーションに関する情報はPPSに保存されてもよく、AppInfoSavedメッセージ819をクライアントに送信してもよい。少なくとも1つの実施形態では、アプリケーションに関してクライアントによって提供される情報を分析して、アプリケーションに必要とされる場合のある補助タスクの種類を識別し得、それに応じて、1つまたは複数の補助タスクオフロードリソースを構成し得る。例えば、クライアントは、VRがマルチキャストに使用されることを示し得、IGMPメッセージプロセッサを含む補助タスクオフローダを構成し得る。
【0065】
クライアントは、プログラムによる要求(CreateVRAttachment)821を送信して、いくつかの実施形態では、指定された隔離されたネットワーク(例えば、PPS812が実装されているプロバイダネットワーク内のIVN、プロバイダネットワークのデータセンタ外のVPN接続ネットワーク、または専用の物理リンクを介してプロバイダネットワークに接続された外部ネットワーク)または別のVRを指定されたVRにアタッチして、それに応答してアタッチメント識別子(AttachmentID)823を受信し得る。様々な実施形態において、所与のVHは、いくつかの異なる隔離されたネットワーク及び/または1つまたは複数の他のVRのCreateVRAttachment要求にプログラムによってアタッチされ得る。VRピアリングアタッチメントと呼ばれるVRのペア間のアタッチメントは、以下でさらに詳しく説明するように、例えば広域ネットワーキングアプリケーションに使用され得る。いくつかの実施形態では、アタッチメントが以前に作成された特定の隔離されたネットワークに特定のルートテーブルを作成及び/または関連付ける要求が送信され、PPSが特定の隔離されたネットワークで発信されるトラフィックにどの特定のルートテーブルを使用するかを決定できるようにすることができる。
【0066】
DescribeVRConfig要求825は、図示の実施形態では、指定されたVRの現在の構成(例えば、作成された異なるアタッチメント、ルートテーブルと隔離されたネットワークとの間のマッピング、補助タスクオフローダが構成されたかどうか、そうであれば補助タスクオフローダの種類など)を取得するためにクライアント810によって送信され得る。指定されたVRに関する構成情報は、図示の実施形態では、1つまたは複数のVRConfigInfoメッセージ827を介して提供され得る。
【0067】
いくつかの実施形態では、指定されたVRの1つまたは複数の動作パラメータを変更するために、プログラムによる要求(ModifyVRConfig)829がクライアントによってPPSに送信されてもよい。例えば、クライアントは、VRによって処理されるトラフィックのサブセットに対して新しいポリシーベースのルーティングルールを指定したり、既存のルールを変更したりし得る。図示の実施形態では、要求された構成変更を実装され得、ModComplete応答メッセージ831をクライアントに送信され得る。
【0068】
図示の実施形態では、クライアント810は、GetVRMetrics要求833を送信して、指定されたVRで実行される動作に関するメトリクスを取得し得る。このようなメトリクスには、例えば、ある時間間隔中に処理されたアプリケーションデータパケットの数(例えば、VRにアタッチされた隔離されたネットワークごと)、ある時間間隔中に処理された補助タスクに関連するメッセージの数、などが含まれ得る。VRに関して収集されたメトリクスは、1つまたは複数のVRMetricsメッセージ835を介して示され得る。
【0069】
図9に示すように、いくつかの実施形態によれば、クライアント810は、PPS812に向けられたCustomAuxiliaryTaskDescriptorメッセージ914において、指定されたVRで処理されるトラフィックの少なくともいくつかに関して実行されるカスタム補助タスクの記述子を送信し得る。このようなタスク記述子は、例えば、異なる実施形態において、タスクのソースコードまたは実行可能コード、タスクが実装されるパケットのサブセットを識別するために使用されるフィルタ(例えば、クライアント定義のパケットタグまたはラベルに基づく、ソース/宛先仮想ネットワークインタフェースに基づく、ソース/宛先隔離されたネットワークに基づくなど)、カスタム補助タスクの結果がどのように保存または使用されるか、などを含み得る。PPSは、いくつかの実施形態において、要求されたカスタムタスクが上記で紹介された種類のオフローダで実装できることを保証するために、1つまたは複数の検証/確認テストを実施し得る。テストが成功した場合、図示の実施形態では、TaskDescriptorSavedメッセージ915がクライアントに送信され得る。
【0070】
一実施形態では、クライアントは、補助タスクオフローダのテナントモードを制御したい場合がある(例えば、補助タスクが単一のクライアントまたはVRに対してのみ、または複数のクライアント/VRに対して、所与のデバイスまたはホストで実行されるかどうか)。このような実施形態では、そのようなテナントプリファレンスを示すSetAuxiliaryTaskResourceTenancy要求917をプログラムインタフェース877を介して送信されてもよい。TenancyInfoSaved応答メッセージ919は、プリファレンスが受信されてPPS812に保存された後にクライアントに送信され得る。
【0071】
いくつかの実施形態によれば、クライアントは、VRの補助タスクに関して収集されるメトリクスの種類(例えば、補助タスクオフローダで処理されるBGPメッセージの数/レート、処理されるIGMPメッセージの数/レート、ステートフルな補助タスクに関連付けられた状態情報を保存するために使用されるメモリまたはストレージの量など)を制御または指定したい場合がある。このような実施形態では、クライアントの監視関連プリファレンスを示すAuxiliaryTaskMonitoringRequirementsメッセージ921がクライアントによって送信され得、プリファレンスが保存された後にMonitoringRequirementsSavedメッセージ923がクライアントに送信され得る。
【0072】
クライアント810は、GetAuxiliaryTaskMetrics要求925を送信して、図示の実施形態においてVR及びオフロードリソースを使用して実行される補助タスクに関するメトリクスを取得し得る。指定された期間にわたって(またはPPSによって選択された期間にわたって)収集されたメトリクスのセットは、1つまたは複数のAuxiliaryTaskMetricsSetメッセージ927を介してクライアントに提供され得る。
【0073】
いくつかの実施形態によれば、クライアント810は、ModifyAuxiliaryTasks要求929をPPSに送信して、クライアントのVRによって処理されるトラフィックに対して実行されている1つまたは複数のタイプの補助タスクの1つまたは複数のプロパティを変更する、または無効にし得る。例えば、クライアントは、VRで受信したパケットの指定されたサブセットに使用されているカスタムロジックを変更したり、パケットの一部のサブセットに対して実行される追加の補助タスクを指示したりし得る。これに応答して、PPSは、要求された変更をVR用に構成されたオフローダに伝播し、AuxiliaryTasksModifiedメッセージ931をクライアントに送信し得る。
【0074】
いくつかの実施形態では、補助タスクオフローダを備えたVRを構成及び使用するために、
図9に示されるものとは異なるプログラムインタラクションの組み合わせがサポートされ得ることに留意されたい。例えば、一実施形態では、説明した動作のいくつかは、別個の要求を使用する代わりに、単一の要求に応答して実行されてもよい。例えば、組み合わせた要求を使用して、VRを作成し、それに隔離されたネットワークのセットをアタッチしてもよく、アタッチメントを介して受信されたトラフィックのアタッチメント補助タスクの組み合わせた要求が送信されてもよい。
【0075】
仮想ルータからワークロードをオフロードする方法
図10は、少なくともいくつかの実施形態による、仮想ルータからいくつかのタイプのタスクをオフロードするために実行され得る動作の態様を示すフロー図である。要素1001に示すように、クライアント指定のアプリケーション要件(ポリシーベースルーティング(PBR)ルール、マルチキャスト要件、動的ルーティング要件など)に基づいてそのネットワークトラフィックが処理される隔離されたネットワーク(IN)のセットは、図示の実施形態では、例えば、プロバイダネットワークのパケット処理サービスにおいてプログラムインタフェースを介してクライアントから受信した入力に基づいて決定され得る。
【0076】
PPSは、様々な実施形態では、例えば、アプリケーション要件の分析に基づいて、及び/またはクライアントとの追加のプログラムによるインタラクションに基づいて、(ベースラインパケット転送に加えて)INのペア、IN1及びIN2間でのネットワークパケットの送信に関連する補助タスクの1つまたは複数のカテゴリを識別し得る(要素1004)。カテゴリには、例えば、BGP、IGMP、またはその他のプロトコルを使用したルーティング構成管理タスク、IPSecまたはその他のプロトコルを使用したパケット内容の暗号化、定期的なパフォーマンス測定(例えば、TWAMPを使用)、DNSタスク、タグ付けベースのパケット分析収集などのクライアント指定のカスタムタスクなどが含まれ得る。
【0077】
図示の実施形態では、1つまたは複数の仮想ルータ(VR)をクライアントのアプリケーション用に構成し(要素1007)、プログラムによってIN1及びIN2にアタッチし得る。所与のVRは、様々な実施形態において、ルーティング/転送アクションを効率的に実装する高速パスレイヤと、クライアントが提供するメタデータまたはルールに基づいてルーティング/転送アクションの指定/生成を担当する例外パスレイヤという、2つのパケット処理レイヤのノードを含み得る。高速パスノード及び例外パスノードは、転送プレーンノードと呼ばれる場合がある。
【0078】
1つまたは複数の補助タスクオフローダ(ATO)は、例えば、図示の実施形態では、PPSの制御プレーンによって、高速パスレイヤノード及び/または例外パスレイヤノードのワークロードに追加することなく必要な補助タスクを実行するように構成され得る(要素1010)。例えば、ATOは、高速パスレイヤまたは例外パスレイヤに使用されるホスト以外のホスト上で実行されるコンピューティングインスタンスで実行される1つまたは複数のプロセスまたはスレッドを含んでもよい。ATO(複数可)とVRの1つまたは複数の転送プレーンノード(高速パスノード及び/または例外パスノード)との間の接続は、様々な実施形態において有効にし得る。例えば、そのような接続は、
図7の文脈で説明したように、VR転送プレーンノードが補助タスク処理を必要とするパケットを送信できる1つまたは複数の仮想ネットワークインタフェースを構成すること、カプセル化プロトコルトンネルを構成することなどによって確立され得る。いくつかの実施形態では、PPS制御プレーンは、1つまたは複数のポリシーベースのルーティングルールを生成及び指定し得、これが例外パスレイヤで実装されると、補助タスクを必要とするパケットがVR転送プレーンからATOに送信され、補助タスクの結果を含む応答パケットが転送プレーンノードに送り返される。
【0079】
VR転送プレーンノードとATOの初期構成が完了した後、クライアントのアプリケーションエンドポイント(例えば、IN1)は、VRを介して、アプリケーションデータを含むパケットを宛先エンドポイント(例えば、IN2)に送信し始めることができるようになり得る(要素1013)。必要に応じて、IN1とIN2の間のトラフィックに対して識別された補助タスクの特定のカテゴリに基づいて、例えば、いくつかの実施形態では、INとATOのプロトコル処理エンジンの間で、BGPなどのプロトコルの通信セッションも開始され得る。
【0080】
クライアント用に構成されたVRでパケットが受信されると、様々な実施形態において、そのパケットが補助タスク処理を必要とするか、または補助タスク処理をトリガしようとしているかについて判定が行われ得る(要素1016)。パケットがまったく補助タスクを必要としない場合、ATOを利用せずに、そのパケットに対して適切なルーティング/転送アクションが識別され、実装され得る(要素1025)。パケットが1つまたは複数の補助タスクの実行を必要とする場合、図示の実施形態では、補助タスク(複数可)に対する暗黙的または明示的な要求が、VR転送プレーンから選択されたATOに送信され(要素1019)、対応する補助タスク(複数可)の結果はVR転送プレーンで取得され得る。
【0081】
補助タスク(複数可)の結果は、図示の実施形態では、IN1とIN2の間でいくつかのパケットの少なくとも一部を送信するためにVR転送プレーンによって使用され得る(要素1022)。結果の例には、別の実施形態では、BGPの選択されたバージョンまたはバリアントを使用して選択されたルート、IGMPの選択されたバージョンまたはバリアントを使用して検証されたマルチキャストグループメンバーのID、IPSecの選択されたバージョンまたはバリアントもしくは他のセキュリティプロトコルを使用して取得されたアプリケーションデータパケットの暗号化/復号されたコンテンツ、TWAMPのバージョンまたはバリアントもしくは他のパフォーマンスメトリクス収集プロトコルを使用して取得されたパフォーマンスメトリクスなどが含まれてもよい。場合によっては、暗号化/復号シナリオのように、補助タスクの結果が、VR転送プレーンから隔離されたネットワークに送信されるパケット内に組み込まれる場合がある。他のケースでは、BGP/IGMP/TWAMPの場合と同様に、その結果は、例えばVRの例外パスノードで、パケットの少なくともいくつかに対して優先される次のホップまたはルートを選択するために使用され得る。少なくともいくつかのタイプの補助タスク(BGPメッセージ処理、IGMPメッセージ処理、またはTWAMPメッセージ処理など)は、VRの転送アクションに対して非同期で実行される場合がある。つまり、VRの高速パスノードは、高速パスノードで実行される転送アクションが補助タスクの結果によって影響を受け得る場合でも、転送アクションを実装するには、所与の補助タスクが完了するまで待機する必要がない場合がある。
【0082】
補助タスク用のプロトコルスタック多重化を使用した例示的なシステム環境
図11は、少なくともいくつかの実施形態による、プロトコルスタックマルチプレクサ及び複数のプロトコルスタックインスタンスが、スケーラブル仮想ルータの補助タスクをオフロードするために設定され得る例示的なシステム環境を示す。図示されるように、システム1100は、プロバイダネットワークのパケット処理サービスのスケーラブル仮想ルータ(VR)のインスタンス1102を含み得、パケット処理サービスの1つまたは複数のクライアントによってプログラム的に示されたパケット処理要件に従って、アプリケーションデータを含むネットワークパケットをいくつかの隔離されたネットワーク間で送信するように構成される。VRインスタンスを使用してトラフィックがルーティング/転送される隔離されたネットワーク(IN)には、例えば、IN1140A(プロバイダネットワークの外部の施設にあるリソースを含み、プロバイダネットワークへのVPNトンネルを使用して接続されている)、IN1140B(これもプロバイダネットワークの外部の施設にあり、プロバイダネットワークへの専用の物理リンクを使用して接続されているリソースを含む)、IN1140C及びIN1140D(それぞれ、プロバイダネットワークの仮想化コンピューティングサービス内に構成された個別の隔離された仮想ネットワークを含む)が含まれ得る。
【0083】
VRインスタンス1102がその代わりに設定されるクライアント(複数可)の観点から、VRインスタンス1102によって提供される機能は、
図1に示されるVRインスタンス102によって提供される機能と非常に類似しているかまたは同一であり得る。
図2の文脈で説明したタイプのアプリケーションは、例えばVRインスタンス1102を使用して実装され得、同様のタイプの補助タスクが、
図2に示されるようなアプリケーションに対して必要となる場合がある。ルーティング/転送メタデータ1108は、その少なくともサブセットがPPSのプログラムインタフェースを介してクライアントによって提供され得るが、VRインスタンス102の文脈で前述したように、様々なパケットフローに対して実行されるルーティング/転送アクションを生成するために使用され得る。ルーティング/転送メタデータには、例えば、隔離されたネットワークから発信されたパケットをルーティングするために使用されるクライアント指定のポリシーベースのルーティングルールや、クライアント(複数可)によって選択された構成設定に従って設定された1つまたは複数のルートテーブルが含まれる場合がある。VRインスタンス1102は、図示の実施形態では、
図1の転送ノード111と機能的に同様の高速パスノード(FN)1114及び例外パスノード(EN)1115を含む、転送ノードのセット1111を含み得る。
図5または
図6に示されるものと同様のセルベースのアーキテクチャは、VRインスタンス1102に採用されてもよい。
【0084】
BGP、IGMP、TWAMPなどのプロトコルに従ってフォーマットされたメッセージの処理を含む、VRインスタンスによる隔離されたネットワーク1140間のパケットの送信に関連する少なくともいくつかの補助タスクは、
図11に示される実施形態において、ユーザ空間プロトコルスタックインスタンス(それぞれが、1つまたは複数のプロトコルの個別の処理エンジンを含む)及びプロトコルスタックマルチプレクサの組み合わせを使用して実行され得る。1160A及び1160Bなどの1つまたは複数の補助タスクオフロードデバイス(ATOD)1160(例えば、プロバイダネットワークの仮想化コンピューティングサービスの仮想化ホスト、または仮想化に使用されないサーバ)は、図示の実施形態では、それぞれのプロトコルスタックマルチプレクサ(PSM)及び仮想ルータインスタンス1102用の1つまたは複数の補助プロトコルスタックインスタンス(PSI)をホストするために選択され得る。オフロードデバイスは、例えば、様々な実施形態において、PPSの制御プレーンコンポーネント及び/またはプロバイダネットワークの仮想化コンピューティングサービスによって選択され得る。PSM及びPSIは、いくつかの実施形態では、VRインスタンス1102の設定の一部として、または(例えば、
図8及び
図9の文脈で論じたメッセージ/要求と同様の、補助タスクに関係するプログラムによるインタラクションに応答して)VRインスタンス1102の存続期間中に後でインスタンス化され得る。例えば、図示の実施形態では、オフロードデバイス1160Aにおいて、PSM1162A、PSI1163A、PSI1163B及びPSI1163C(PSM及び個々のPSIがそれぞれ1つまたは複数の実行スレッドを含む)がインスタンス化され得るが、オフロードデバイス1160Bにおいては、PSM1162B、PSI1163K、及びPSI1163Lがインスタンス化され得る。いくつかの実施形態では、PSM及び/またはPSIの少なくとも一部は、データプレーン開発キット(DPDK)と同様のライブラリを使用して実装され得る。
【0085】
VR1102に設定されるPSIの数と種類、及びVR1102に設定されるオフロードデバイスの数は、VR経由で処理されるアプリケーションデータトラフィックの量、補助タスク処理のためにクライアントによって示されるテナント要件、VRの補助タスクでメッセージが処理される様々なプロトコルなどの要因に基づいて時間の経過とともに変化する場合がある。実際、前述した種類の補助タスクオフローダ(ATO)(例えば、
図3のATO373A及び373B)は、
図11に示される実施形態では、PSM1162と1つまたは複数のPSI1163との組み合わせを使用して実装され得る。VRインスタンス1102の転送プレーンノードとPSM1162との間の接続は、
図7の文脈で説明したものと同様の技術を使用して確立され得、これは、様々な実施形態において、カプセル化プロトコルトンネル及び1つまたは複数の仮想ネットワークインタフェースを介するなどして行われる。
【0086】
BGP処理などの補助タスクを必要とするパケットが、隔離されたネットワーク1140間でパケットを送信するように構成されたVR1102で受信されると、補助タスクの少なくとも一部を示す対応するメッセージが、VRによってオフロードデバイス1160に送信され得る。メッセージ(例えば、GENEVEまたは別のカプセル化プロトコルに従ってフォーマットされたカプセル化パケット)は、様々な実施形態においてオフロードデバイスのネットワークインタフェースカード(NIC)で受信され得、これが1つまたは複数のDMA(ダイレクトメモリアクセス)バッファ内にメッセージを格納し得る。オフロードデバイスのPSM1162は、DMAバッファにアクセスし得、少なくとも一実施形態では、PSMがDMAバッファからメッセージをコピーすることなくメッセージ(例えば、1つまたは複数のカプセル化ヘッダまたはメッセージの内容に関連する他のメタデータを含む)を検査できるようにする。
【0087】
メッセージに関連付けられたメタデータ及び/または、図示の実施形態では、メッセージに含まれるメタデータに少なくとも部分的に基づいて、PSM1162は、メッセージをさらに処理し、関連する補助タスクを実行するために、オフロードデバイス1160でインスタンス化されたPSIのセットの中から特定のPSI1163を選択し得る。選択に使用してもよいメタデータには、例えば、(a)メッセージ内に含まれるカプセル化されたパケットに使用されるネットワーキングプロトコル(例えば、BGP、IGMPなど)の識別子、(b)例えば、VRインスタンス1102の仮想ルータ識別子、(c)仮想ネットワークインタフェース(例えば、メッセージの送信元のVRインスタンスのVNI)の識別子、(d)補助タスクがその代わりに実行されるプロバイダネットワークのクライアントの識別子、及び/または(e)そのトラフィックが補助タスクを必要とする隔離されたネットワーク1140の識別子が含まれ得る。
【0088】
少なくとも場合によっては、ユーザモードまたはユーザ空間(例えば、オフロードデバイスで起動されたコンピューティングインスタンス内、またはオフロードデバイスとして使用されている非仮想化サーバのオペレーティングシステム内)で実行される1つまたは複数の実行スレッドを含み得る選択されたPSIは、今度はメッセージ及び関連するメタデータの少なくとも一部を検査し、補助タスクを実行し得る。少なくともいくつかの実施態様では、補助タスクを完了するためにメッセージの内容をDMAバッファから他の位置にコピーする必要がない場合がある。補助タスクの結果は、PSM1162に提供され、図示の実施形態ではPSM1162によってVR1102の転送ノードに送信され得る。そこで、補助タスクの結果は、様々な実施形態において、隔離されたネットワーク1140のうちの1つで発信されたアプリケーションデータの1つまたは複数のパケットの少なくともいくつかの内容を別の隔離されたネットワーク1140に送信するために使用され得る。少なくともいくつかの実施形態では、PSM1162は、PSI1163との通信のためにソケットレベルのインタフェース(例えば、UNIX(登録商標)ソケットインタフェース)を実装し得る。
【0089】
BGPセッションのメッセージの処理など、一部のタイプの補助タスクでは、1つの補助タスクに関して生成された状態情報を、後続の補助タスクを実行するときに使用する必要がある場合がある。少なくともいくつかの実施形態によれば、そのような状態情報は、例えば、使用されている元のPSIが故障した場合に代替PSIから状態情報にアクセスできることを保証するために、オフロードデバイスの外部の記憶装置に格納され得る。このような状態情報の格納に関する多くのアプローチについては、以下でさらに詳しく説明する。
【0090】
所与のオフロードデバイス1160におけるPSI1163は、例えばいくつかの実施形態ではそれぞれのソフトウェアコンテナ内で互いに独立して実行され得る。場合によっては、BGPなどの補助タスクに使用される同じプロトコルの複数のプロトコル処理エンジンがそれぞれのPSI1163で実行され得、例えば、各PSIが独立したアドレス空間内の同じプロトコルのメッセージを処理する。その結果、オフロードデバイスのPSM1162は、明らかに同じアドレスに向けられているが、異なるVRまたは異なるクライアントの補助タスクに使用されている、複数の受信したカプセル化パケットを容易に多重化できる場合がある。例えば、メッセージ内のカプセル化されたパケットの宛先として特定のIPアドレスを示す最初のメッセージがオフロードデバイスで受信される場合がある。オフロードデバイスのPSMは、第1のメッセージに関連付けられたメタデータを使用してメッセージを処理するための第1のPSIを選択し得る。宛先としてこれも同じIPアドレスを示す第2のメッセージがPSMで受信され、第2のメッセージに関連付けられたメタデータが別のPSIを使用する必要があることを示している場合、PSMは、宛先IPアドレスが同一であっても、異なるPSIに第2のメッセージを処理させ得る。
【0091】
少なくともいくつかの実施形態では、PSI及び/またはPSMは、例えば、関連するVRがその代わりに確立されるクライアントからから受信したテナント要件または要求に基づいて、マルチテナントモードまたはシングルテナントモードで使用され得る。例えば、
図9のSetAuxiliaryTaskResourceTenancy要求917と同様の要求は、テナントプリファレンスを示すためにクライアントによって送信されてもよい。PSIがマルチテナントモデルで構成されている場合、それは、(a)1つのクライアントの要求に応じて特定のVRにプログラム的にアタッチされた隔離されたネットワーク間を流れるトラフィック、ならびに、(b)別のクライアントの要求に応じて、特定のVRまたは異なるVRにプログラム的にアタッチされている隔離されたネットワーク間を流れるトラフィック、に関連する補助タスクに使用され得る。
【0092】
様々な実施形態では、オフロードデバイスにおける1つのPSIは、同じオフロードデバイスにおける別のPSIと同じOSIモデルのトランスポートレイヤプロトコル及びアプリケーションレイヤプロトコルを実装し得るが、2つのPSIは、異なるクライアントまたは異なるVRに代わって使用され得る。もちろん、いくつかの実施形態では、所与のオフロードデバイスにおける異なるPSIが全く異なるプロトコルを実装し得る。例えば、あるPSIはBGP処理エンジンを含んでもよく、別のPSIはIGMP処理エンジンを含んでもよい、などである。様々な実施形態において、VR1102などのVRが代わりに設定されるクライアントは、補助タスクに代わりに使用される個々のプロトコル(例えば、BGP、IGMPなど)に関して収集されたメトリクスに対するプログラム要求を送信し、要求されたメトリクスを受け取ることができ得る。例えば、
図9のAuxiliaryTaskMonitoringRequirementsメッセージ921及びGetAuxiliaryTaskMetrics925と同様のメッセージは、クライアントが取得したいメトリクスの種類を示すためにクライアントにより送信されてもよく、要求されたメトリクスはPSIから収集され得る。
【0093】
補助タスクに使用される例示的なプロトコル
仮想ルータを介して処理されるトラフィックの補助タスクは、様々な実施形態において、多数の異なるプロトコル(補助タスクプロトコルと呼ばれる場合がある)のいずれかを利用し得る。
図12は、少なくともいくつかの実施形態による、それぞれのプロトコルスタックインスタンスがプロトコルスタックマルチプレクサを備えたデバイスで実行され得るプロトコルのセットの実施例を示す。示されるように、
図11のPSI1163と同様のPSIがオフロードデバイスでインスタンス化され得るプロトコル1210は、様々なバージョンのBGP1220及びそのバリアント(例えば、内部BGPまたはiBGP、外部BGPまたはeBGP、マルチプロトコルBGPまたはMP-BGP)を含み得、これらは、様々な実施形態またはIGMP1225のバージョン/バリアントにおいて動的ルーティング情報交換に使用され得る。
【0094】
いくつかの実施形態では、TWAMP(双方向アクティブ測定プロトコル)またはOWAMP(双方向アクティブ測定プロトコル)などのパフォーマンス測定プロトコル1230を補助タスクに使用してもよい。アプリケーションデータパケットコンテンツの暗号化または復号のための暗号計算を含み得るセキュリティプロトコル1240(例えば、IPセキュリティ(IPSec)スイートまたは他の同様のスイートのプロトコル)は、図示の実施形態におけるいくつかのVRベースのアプリケーションに使用され得る。
【0095】
少なくともいくつかの実施形態では、PSIは、VRが構成されるプロバイダネットワーク内で使用される独自ルーティング情報交換プロトコル1245(カスタムルーティング情報交換プロトコルとも呼ばれる)に対して確立され得る。一実施形態では、VRを介してトラフィックが送信されているクライアントは、指定された隔離されたネットワーク間を流れるパケットの少なくともサブセットの補助タスクに使用されるカスタムプロトコル1250を示し得、PSIはそのようなカスタムプロトコル用にも設定され得る。
【0096】
例えば、パケット処理サービスのクライアントによって示されたプリファレンスに応じて、所与のプロトコルの複数のバージョンを使用する必要があり得るシナリオでは、様々なバージョンのサポートに関していくつかのアプローチのいずれかを採用してもよい。場合によっては、バージョンごとにそれぞれのPSIが実装されることがあり、他の場合には、プロトコルのいくつかの異なるバージョンのパケットを処理できる単一のPSIが使用される場合がある。一実施形態では、所与のPSIは、
図12に示されるものと同様の、またはそれを含む、いくつかのプロトコルに対するそれぞれのプロトコル処理エンジンを含み得る。
【0097】
スタックマルチプレクサとプロトコルスタックインスタンス間の例示的なインタラクション
図13は、少なくともいくつかの実施形態による、仮想ルータに対してプロトコルスタックマルチプレクサを構成し得る補助タスクオフロードデバイスのコンポーネント間のインタラクションセットの実施例を示す。カプセル化パケット1340は、矢印1371によって示されるように、図示の実施形態の補助タスクオフロードデバイス(ATOD)1310のネットワークインタフェースカード1330において仮想ルータから受信され得る。カプセル化パケットは、補助プロトコルP1(BGP、IGMPなど)に従ってフォーマットされたカプセル化パケット1342、ならびにパケットメタデータ1341(例えば、プロトコルP1パケット1342のカプセル化中に生成されるヘッダの形式)を含み得る。前述のように、いくつかの実施形態では、GENEVEプロトコルを使用してカプセル化パケットを準備してもよい。他の実施形態では、他のカプセル化プロトコルが使用されてもよい。プロトコルP1パケット1342は、それ自体のヘッダを含んでもよく、そのヘッダは、少なくともいくつかの実施形態では追加のメタデータを含んでもよい。
【0098】
ネットワークインタフェースカード1330は、矢印1372で示すように、図示の実施形態では、受信したカプセル化パケット1340をATOD1310の1つまたは複数のDMAバッファ1335内に格納し得る。1つまたは複数の実行スレッドを含むプロトコルスタックマルチプレクサ(PSM)1320は、ATODにおいて以前にインスタンス化されている場合がある。実施態様に応じて、PSMは1つまたは複数のカーネルモードスレッド、1つまたは複数のユーザモードスレッド、及び/またはユーザモードスレッドとカーネルモードスレッドの組み合わせを含む場合がある。いくつかの実施形態では、PSMは仮想化マネージャの一部として実装され得る。PSM1320のパケットメタデータアナライザ1367は、メタデータ1341(及び/またはプロトコルP1パケット1342内に含まれる他のメタデータ)を検査して、ATOD1310で実行されている1つまたは複数のプロトコルスタックインスタンスの中から特定のプロトコルスタックインスタンスを選択してもよく、これは、カプセル化パケット1340の内容をさらに処理し、必要な対応する補助タスクを実行する必要がある。PSMは、プロトコルP1スタックインスタンス1352、プロトコルP2スタックインスタンス1353などのプロトコルスタックインスタンス(複数可)と通信するためのソケットレベルAPI1370のセットを実装し得る。
【0099】
プロトコルP1スタックインスタンス1352は、ユーザモードまたはユーザ空間スレッドのセット及び、図示の実施形態におけるトランスポートレイヤ及びアプリケーションレイヤなど、プロトコルスタックの複数のレイヤを集合的にエミュレートする関連するデータ構造を含み得る。所与のプロトコルスタックインスタンスのスレッドは集合的に、BGPなどの補助プロトコルに従ってフォーマットされたメッセージの内容を解釈し、補助プロトコルの以前のメッセージの結果として生成された状態情報を調べ(ステートフルプロトコルの場合)、受信したメッセージに基づいて実行する必要があるアクションがあれば決定し(例えば、最適な次のホップを選択するために使用されるBGP属性などの状態情報を変更する、マルチキャストグループの現在のメンバーシップの表示を格納するなど)、そのようなアクションを実装し得る。したがって、所与のプロトコルスタックインスタンスは、様々な実施形態において、補助プロトコルのためのプロトコル処理エンジンを含むものとして説明され得る。少なくともいくつかの実施形態では、DMAバッファ1335からのカプセル化パケット1340の内容のコピーは必要とされない場合がある。例えば、パケットメタデータアナライザ1367は、単純にDMAバッファを検査し(矢印1373)、プロトコルP1スタックインスタンスに対するDMAバッファへのポインタを渡してもよい(矢印1374)。このような「ゼロコピー」技術は、受信したネットワークメッセージを処理する場合、メッセージの内容をあるメモリ位置セットから別のメモリ位置セットにコピーする技術よりもはるかに効率的であり得る。
【0100】
選択されたプロトコルスタックインスタンス1352におけるカプセル化パケットの処理の結果(例えば、新しいルート、マルチキャストグループメンバーシップ情報など)は、いくつかの実施形態では、ソケットレベルAPI1370を介してPSM1320に返送され得、ネットワークインタフェースカード1330を介して仮想ルータに送信され得る。少なくとも1つの実施形態では、PSMは、仮想ルータとの通信に使用されているカプセル化プロトコルに従って結果をカプセル化する役割を担ってもよい。他の実施形態では、プロトコルスタックインスタンスは結果をカプセル化し得る。いくつかの実施形態では、オフロードデバイスで受信された所与のカプセル化パケットは、複数のプロトコルスタックインスタンスによって処理されてもよく、処理の結果は、単一のパケットまたはメッセージで仮想ルータに送り返される前に、マルチプレクサで結合されてもよい。
【0101】
少なくともいくつかの実施形態では、上で紹介した種類のプロトコルスタックマルチプレクサは、プロトコルスタックインスタンスに使用されるプログラミング言語及び/またはランタイム環境に関して非依存的であり得る。
図14は、少なくともいくつかの実施形態による、いくつかの異なるプログラミング言語で開発されたプロトコルスタックインスタンスが補助タスクオフロードデバイスのそれぞれのソフトウェアコンテナ内で実行され得る例示的なシナリオを示す。補助タスクオフロードデバイス1410は、プロトコルスタックインスタンスとのインタラクションのためのPSM APIのセットを実装するプロトコルスタックマルチプレクサ1420を含む。Java(登録商標)で実装されたプロトコルP1スタックインスタンス1452は、図示の実施形態ではソフトウェアコンテナ1480内で実行され得る。Scalaで実装されたプロトコルP2スタックインスタンス1453は、第2のソフトウェアコンテナ1481内で実行されるが、プロトコルP3スタックインスタンス1454はCで実装され、第3のソフトウェアコンテナ1482内で実行される。プログラミング言語及び関連するランタイム環境に関するそのような柔軟性により、パケット処理サービスが、様々な実施形態において、多種多様な開発グループからプロトコルスタックインスタンスを収集することが容易になる場合がある。各開発グループまたは個々の開発者は、内容を簡単に変更できないソフトウェアコンテナ内にプロトコルスタックインスタンスのコードをパッケージ化してもよく、そのような複数のコンテナは互いに干渉することなく同じATODで実行され得る。いくつかの実施形態では、パケット処理サービスのクライアントは、クライアントの隔離されたネットワーク間のトラフィックに関して実行される補助タスクに使用されるカスタム処理コードを含むソフトウェアコンテナを提供し得、そのようなコンテナはATODで展開され得る。
【0102】
図15は、少なくともいくつかの実施形態による、所与のプロトコルスタックの複数の独立インスタンスが補助タスクオフロードデバイスにおいて同時に実行され得る例示的なシナリオを示す。図示の実施形態では、ATOD1510は、プロトコルスタックマルチプレクサ(PSM)1520及び少なくとも3つのプロトコルスタックインスタンスを含む。
【0103】
マルチテナントモードで構成されたプロトコルP1スタックインスタンス1552は、パケット処理サービスのクライアントC1用に設定された仮想ルータVR1によって処理されるトラフィックに関連する補助タスクのために、ならびに、別のクライアントC4の仮想ルータVR4によって処理されるトラフィックに関連する補助タスクのために使用される。プロトコルP2スタックインスタンス1553Aは、クライアントC1用に設定された仮想ルータVR2によって処理されるトラフィックに関連する補助タスクを実装するために、ATOD1510で構成される。プロトコルP2に従ってフォーマットされたメッセージは、図示の実施形態におけるATOD1510の別のスタックインスタンス、すなわち、クライアントC2用に設定された仮想ルータVR3によって処理されるトラフィックに関連する補助タスクを実装するために確立されたプロトコルP2スタックインスタンス1553Bでも処理することができる。2つのプロトコルスタックインスタンスは互いに独立して動作し、その結果、スタックインスタンス1553Aと1553Bで処理されるパケット間で重複するアドレス範囲を容易に管理できる。例えば、宛先IPアドレスD1(例えば、プロバイダネットワーク外のBGPエンジンBE2とのBGPセッションに参加しているBGPエンジンBE1のアドレス)を有するATOD1510で受信された1つのカプセル化されたパケットは、スタックインスタンス1553Aで処理され得る。一方、同じ宛先IPアドレスD1を有するATOD1510で受信された別のパケットは、スタックインスタンス1553Bで処理され得る。
【0104】
図15に示される実施形態では、マルチテナント機能をいくつかのレベルで実装し得る。まず、パケット処理サービスのいくつかの異なるクライアント(C1、C2、及びC3)用の補助タスクがATODを使用して実装されるという点で、ATOD1510は全体としてマルチテナントモードと見なしてもよい。第2に、プロトコルP1スタックインスタンス1552などの単一のプロトコルスタックインスタンスは、クライアントC1及びC3に対して補助タスクを実行するという点で、マルチテナントモードで動作することができる。少なくともいくつかの実施形態では、
図9の文脈で前述したように、クライアントは、補助タスクに使用されるリソースに使用されるテナントモードに関するプリファレンスを示し得、パケット処理サービスは、それに応じてATOD及びプロトコルスタックインスタンスを構成し得る。例えば、クライアントがシングルテナント機能を要求する場合、一実施形態では、そのクライアントの補助タスク専用にATODを構成されるかまたは割り当てられてもよい。いくつかの実施形態では、クライアントは、デバイス(ATOD)レベルまたはプロトコルスタックインスタンスレベルでテナント要件を指定してもよい。
【0105】
例示的な補助タスク状態情報管理
実行される補助タスクの種類に応じて、いくつかの実施形態では、仮想ルータと補助タスクオフロードデバイスとの間で交換される複数のメッセージに適用される状態情報を維持する必要がある場合がある。例えば、一部のプロトコル処理スタックでは、伝送制御プロトコル(TCP)接続状態情報を保存する必要がある場合がある。
図16は、少なくともいくつかの実施形態による、仮想ルータの補助タスクに関連するプロトコル状態情報を保存するための代替アプローチの実施例を示す。
【0106】
プロトコルスタック状態管理アプローチAでは、プロトコルスタックインスタンス1652は、プロセス1653(Java(商標)仮想マシンまたはJVM)内で実行され、これは、実行環境(EE)1610(コンピューティングインスタンスまたは非仮想化サーバなど)でのメモリ管理のためにガベージコレクションされたヒープを使用する。プロトコルスタックインスタンスを使用して処理される補助タスクに関連付けられた状態情報が、プロセス1653がクラッシュまたは予期せず終了した場合に永久に失われないことを保証するために、図示の実施形態では、ヒープを利用しないハッシュテーブルなどのオフヒープデータ構造1660を使用して、状態情報を永続的に格納し得る。新しいプロトコルスタック処理インスタンスプロセスは、プロセス1653の終了の場合の代替として開始され得、新しいプロセスは、オフヒープデータ構造にアクセスし得る。実行環境1610がクラッシュまたは予期せず終了した場合、アプローチAでは状態情報が失われる場合があることに留意されたい。
【0107】
プロトコルスタック状態管理アプローチBでは、別個の永続状態管理プロセス(PSMP)1623(単なるオフヒープデータ構造とは対照的に)を、いくつかの実施形態では、プロトコルスタックインスタンスプロセス1622で処理される補助タスクの状態情報を管理するために割り当てられてもよい。PSMP1623は、スタックインスタンスプロセス1622よりも寿命が長い場合がある。補助タスクの計算を実行するプロセス1622は、図示の実施形態ではPSMP1623と同じEE1611で実行され得る。そのため、EEの早すぎる終了または障害によって、依然として状態情報の喪失が発生する場合がある。
【0108】
プロトコルスタック状態管理手法Cでは、図示の実施形態では、状態情報管理に分散技術を使用してもよい。永続状態管理クラスタ1640は、1624A及び1624Bなどのいくつかの異なるPSMPを含んで構成され得、各PSMPは、プロトコルスタックインスタンスプロセス1632が実行されるEE1612とは別個のEE1613(例えば、1613Aまたは1613B)内で実行される。クラスタ1640の任意の所与のPSMPは、障害が発生したPSMの役割を引き継ぐことができる場合がある。さらに、補助タスクの状態情報が変化すると、それは、図示の実施形態におけるデータベースサービス1601など、プロバイダネットワークの永続ストレージに使用可能な1つまたは複数のサービスのリソースに伝播され得る。補助タスクが代わりに実行されるクライアントが望む場合、いくつかの実施形態では、状態情報は、通知サーバ1602またはメッセージキューサービス1603を介してクライアントに提供されるか、またはクライアントにアクセス可能になり得る。
【0109】
プロトコルスタック多重化を使用して補助タスクをオフロードする方法
図17は、少なくともいくつかの実施形態による、プロトコルスタックマルチプレクサ及びプロトコルスタックの独立インスタンスを使用して、仮想ルータからいくつかのタイプのタスクをオフロードするために実行され得る動作の態様を示すフロー図である。要素1701に示すように、仮想化コンピューティングサービスのコンピューティングインスタンスや非仮想化サーバなどの実行環境(EE)は、図示の実施形態では、パケット処理サービスの制御プレーンによって識別されて、1つまたは複数の仮想ルータのオフロードデバイスでオフロードされた補助プロトコルタスクを実行され得る。一実施形態では、仮想ルータが確立されるときに、1つまたは複数のそのようなEEが構成され得る。他の実施形態では、EEは、例えば、仮想ルータ(複数可)を介してルーティング/転送されるトラフィックに関して実行される補助タスクの1つまたは複数のカテゴリを示すプログラム要求に応答して、仮想ルータの存続期間中に後で構成され得る。
【0110】
プロトコルスタックマルチプレクサ(PSM)(例えば、EEに使用されるオフロードデバイスのネットワークインタフェースカードによって受信されたネットワークパケットが配置されるDMAバッファにアクセスできるプロセスまたはスレッド)は、様々な実施形態では、例えば、パケット処理サービスの制御プレーンによってEEで起動され得る(要素1704)。加えて、(特権モードまたはカーネルモードで実行されるのではなく)ユーザ空間またはユーザモードで実行されるスレッドを含む1つまたは複数のプロトコルスタックインスタンス(PSI)が実行環境で起動される場合がある。PSIは、仮想ルータを介して送信されるネットワークトラフィックに関連する1つまたは複数のタイプの補助タスクを実行するために必要な1つまたは複数のOpen Systems Interconnectionネットワークスタックレイヤ(例えば、ネットワークレイヤ、トランスポートレイヤ、またはアプリケーションレイヤ)の機能を実装またはエミュレートしてもよく、補助タスクに関連付けられたメッセージを処理するために必要な追加ロジックを実行してもよい。PSIの個々のPSIは、様々な実施形態において補助タスクに使用される1つまたは複数のプロトコル(例えば、BGP、IGMP、TWAMPなど)用の処理エンジンを実装し得る。少なくともいくつかの実施形態では、
図5及び
図6の文脈で論じたアーキテクチャと同様のセルベースのアーキテクチャが、補助プロトコルタスク用に設定された仮想ルータ及び/またはリソースに使用され得る。いくつかの実施形態では、少なくともいくつかのPSIは、1つまたは複数のカーネルモードまたは特権スレッドを含んでもよい。
【0111】
ネットワーク接続は、様々な実施形態において、例えば、1つまたは複数の仮想ネットワークインタフェース及び/またはカプセル化プロトコルトンネルを構成することによって、仮想ルータ(複数可)とEEとの間に確立され得る(要素1707)。
図7に示される技術と同様の技術が、いくつかの実施形態において、例えば、GENEVEトンネルの確立、実行される補助タスクを示すパケットの宛先として自律タスク処理リソースのセルの仮想ネットワークインタフェースのアドレスを示す仮想ルータの例外パスノードにメタデータを格納すること、及び、補助タスクの結果の宛先として仮想ルータの仮想ネットワークインタフェースの1つまたは複数のアドレスを示すメタデータをEEに格納することを含んで、通信を可能にするために使用され得る。
【0112】
EEとVR(複数可)との間に接続が確立された後、様々な実施形態において、ある時点で、実行される補助タスクを示すメッセージが、隔離されたネットワークIN1とIN2との間でパケットを転送するために確立されたVRからEEで受信され得る(要素1710)。このメッセージは、いくつかの実施形態では、メッセージ内に組み込まれたカプセル化されたパケット(例えば、プロバイダネットワークの外部の施設にあるBGP処理エンジンによって送信されたパケット)に関するメタデータ(例えば、GENEVEなどのカプセル化プロトコルのヘッダの内容を含む)を含んでもよい。メタデータには、例えば、(a)メッセージ内のカプセル化されたパケットに使用されるネットワーキングプロトコルの識別子、(b)メッセージがそこから受信されるVRの仮想ルータ識別子、(c)仮想ネットワークインタフェースの識別子、(d)プロバイダネットワークのクライアントの識別子、または(e)そのトラフィックが仮想ルータを介してルーティングされている隔離されたネットワークの識別子が含まれ得る。
【0113】
PSMは、メタデータを検査し、EEで実行中のどの特定のPSI(例えば、PSI-1)がメッセージをさらに処理すべきかを決定し得る(要素1713)。少なくともいくつかの実施形態では、PSMによる分析のため、または選択されたPSIによるメッセージ内容の処理のために、メッセージ内容をDMAバッファからコピーする必要がない場合がある。
【0114】
選択されたPSI、PSI-1は、様々な実施形態において、メッセージの内容を分析し、メッセージの内容によって必要とされる補助タスクを実行し、補助タスクの結果をPSMに送信してもよい(要素1716)。少なくともいくつかの実施形態では、PSMは、ソケットレベルまたはソケットレイヤのプログラムインタフェースのセットを実装してもよく、PSI-1は、そのようなインタフェースを介して結果をPSMに送信してもよい。いくつかの実施形態では、PSI-1は、その補助タスクに関する状態情報(例えば、TCP接続状態、プロトコル固有のシーケンス番号情報など)をEEの外部の記憶装置に保存してもよい。いくつかの実施形態では、PSI及び/またはPSIが実行されるEEは、例えば、VRが確立されたクライアントの要求に応じて、シングルテナントモードで構成され得る。他の実施形態では、所与のEE及び/または所与のPSIは、マルチテナントモードでいくつかの異なるクライアント及び/またはいくつかの異なるVRについて補助タスクを処理してもよい。
【0115】
PSMは、図示の実施形態では、メッセージをそこから受信したVRに、結果を送信してもよい(要素1719)。VRでは、図示の実施形態において、補助タスクの結果を使用して、IN1とIN2との間で少なくともいくつかのパケットを送信してもよい(要素1722)。
【0116】
ピアリングされた仮想ルータに対して動的ルーティングが有効になっている例示的なシステム環境
いくつかの実施形態では、例えば大陸、国家、州、または地域の境界を越えてトラフィックを送信する必要があるシナリオなど、隔離されたネットワーク間でトラフィックを転送するために、複数の仮想ルータを含むパスが必要になる場合がある。このようなトラフィックに対して、仮想ルータのペアをプログラムで相互にアタッチしてもよい。このようなVR間のアタッチメントは「ピアリングアタッチメント」と呼ばれる場合があり、アタッチされたVRは互いにピアリングされていると言ってもよい。
図18は、少なくともいくつかの実施形態による、ボーダーゲートウェイプロトコル(BGP)処理エンジンを使用したルーティング情報の交換を含む動的ルーティングが、パケット処理サービスのクライアントの要求に応じて仮想ルータのピアリングペアに対して有効にされ得る例示的なシステム環境を示す。システム1800では、例えば、PPS制御プレーン1890のプログラムインタフェース1870を介して受信される、前に説明したパケット処理サービスと同様のパケット処理サービス(PPS)の1つまたは複数のクライアントのプログラム要求に応答して、仮想ルータ(VR)のペア1810A及び1810Bを構成または確立してもよい。VR1810Aは、例えば、(例えば、国C1または州S1に位置する1つまたは複数のプロバイダネットワークデータセンタ内のコンピューティングデバイスを使用して)地理的地域GR1に確立されてもよく、VR1810Bは、(例えば、国C2または州S2に位置する1つまたは複数のプロバイダネットワークデータセンタ内のコンピューティングデバイスを使用して)別の地理的地域GR2に確立されてもよい。
【0117】
VR1810A及び1810Bは、図示の実施形態において、VR及び隔離されたネットワークがその代わりに構成されるクライアントに送信されるプログラムによるアタッチメント要求に応じて、相互に、及び1つまたは複数の隔離されたネットワークにプログラムによってアタッチされ得る。VRを伴う所与のアタッチメントは、図示の実施形態におけるいくつかのカテゴリのうちの1つに属し得る。例えば、IVNアタッチメント(仮想化コンピューティングサービス(VCS)の隔離された仮想ネットワーク(IVN)をVRと関連付ける)、DXアタッチメント(プロバイダネットワークへの専用の物理リンクを介して接続されている、クライアント施設の隔離されたネットワークをVRに関連付ける)、VPNアタッチメント(1つまたは複数のVPNトンネルを介してプロバイダネットワークに接続されている、クライアント施設の隔離されたネットワークをVRに関連付ける)、ピアリングアタッチメント(2つのVRを関連付ける)、SD-WANアタッチメント(クライアントのソフトウェア定義ワイドエリアネットワーク機器をVRに関連付ける)などである。
図18に示されるシナリオでは、隔離されたネットワーク1840A(IVNを含む)及び隔離されたネットワーク1840B(別のIVNを含む)は両方とも、それぞれIVNアタッチメントIA-1及びIA-2を介してプログラムによってVR1810Aにアタッチされ得る。加えて、隔離されたネットワーク1840A(IVNを含む)は、IVNアタッチメントIA-3を介してVR1810Bにアタッチしてもよく、隔離されたネットワーク1840D(プロバイダネットワークのデータセンタの外部のクライアント施設にあるリソースを含む)は、DXアタッチメントDA-1を介してVR1810Bにアタッチしてもよい。ピアリングアタッチメントPA-1は、VR1810AとVR1810Bとの間に設定され得る。これら5つのアタッチメント(IA-1、IA-2、IA-3、DA-1、及びPA-1)のそれぞれは、図示の実施形態では、パケット処理サービス(PPS)のクライアント1895からの1つまたは複数のプログラム要求に応じて設定してもよい。
【0118】
図示の実施形態では、例えば、PA-1に対するピアリングアタッチメント要求の一部として、または2つのVR1810A及び1810Bのピアリングに続いて、プログラムインタフェース1870を介して受信された入力に少なくとも部分的に基づいて、BGPのバージョンまたはバリアントに従った動的ルーティング情報の転送を、VR1810Aと1810Bとの間で有効にし得る。隔離されたネットワーク間でアプリケーションデータパケットを送信するために複数のパスが利用できるシナリオでは、ルーティング情報により、アプリケーションデータパケットに対して仮想ルータでより最適なパスを動的に選択可能にし得る。このタイプのルーティングは、様々な実施形態において動的ルーティングと呼ばれる場合がある。少なくともいくつかの実施形態では、動的ルーティングが有効な場合のアプリケーションデータパケットの次のホップまたはパスを選択するときに、帯域幅の可用性、遅延、過去の輻輳パターン、及び/または仲介または中継ネットワークプロバイダとの合意などのいくつかの異なる要因のいずれかが仮想ルータで考慮され得る。
【0119】
動的ルーティング情報の転送を可能にすることに加えて、少なくともいくつかの実施形態では、クライアントは、プログラムインタフェース1870を使用して、転送に使用される1つまたは複数の動的ルーティングプロトコル構成設定のグループを提供してもよい。このような設定は、ルーティング情報転送の態様に関するクライアントの様々なプリファレンスを示し得る。このような設定の1つは、例えば、特定の宛先へのルートを1つのVRから別のVRに転送するかどうかを決定するために使用されるフィルタルールを含んでもよい。別の設定は、宛先への次のホップを選択するために複数のルーティング関連属性の個々の属性に割り当てられるそれぞれの優先順位を示し得る。例えば、(a)ローカルプリファレンス属性、(b)ローカルプレフィックス起点属性、(c)自律システム(AS)パス長属性、(d)マルチ出口弁別器属性、または(e)ルータ識別子属性である。ローカルプリファレンスは、例えば、同じ自律地域内のVRの近隣のBGPからのルート更新で伝播される数値を使用して、様々な利用可能なパスに対してVRによって使用されるそれぞれのプリファレンスを示し得る。クライアントは、ローカルプリファレンスを使用して、自律システムの複数の出口ポイントの中で優先される出口ポイントに影響を与え得る。一実施形態では、(利用可能な代替ルートの中で)最も高いローカルプリファレンス値を有するルートが、VRによってパケットに対して選択され得る。いくつかの実施形態では、他のVRを含む代替パスも利用可能な場合、ローカルプレフィックス起点属性をVRで使用して、VRに直接アタッチされているIVN内のパスを優先し得る。VRは、ASパス長属性が使用される実施形態では、(利用可能な代替パスの中で)最短のASパス長を有するパスを選択してもよい。いくつかの実施形態では、マルチ出口弁別器(MED)は、VRにおいて異なるAS内の近隣のBGPから取得されてもよく、異なるNEDを有する代替パスが利用可能な場合、VRは、最も低いMEDを有するパスを選択してもよい。いくつかの実施形態では、数値ルータ識別子が、各VRに割り当てられるだけでなく、クライアント所有のハードウェアルータ、SD-WAN機器などにも割り当てられ得る。一実施形態では、考慮される他の属性がいずれもプリファレンスにつながらない場合、それぞれのルータへの転送を伴う代替パスのうち、最下位のルータ識別子を有するルータのパスが選択され得る。いくつかの実施形態では、クライアント指定設定は、iBGP、eBGP、MP-BGPなど、使用されるBGPの特定のバリアント及び/またはバージョン、及び/または、そこからVR1810に関連付けられたBGP処理エンジンにアドレスが割り当てられるCIDR(クラスレスドメイン間ルーティング)ブロックを示し得る。ルーティング情報の転送を管理する他のパラメータは、いくつかの実施形態では、インタフェース1870を介してクライアントによって指定され得る。
【0120】
動的ルーティング情報転送を可能にする要求に従って、様々な実施形態において、図示の実施形態における2つのVRに対してそれぞれのBGP処理エンジン1814を確立またはインスタンス化してもよい。例えば、BGP処理エンジン1814AはVR1810A用に構成してもよく、BGP処理エンジン1814BはVR1810B用に設定してもよい。2つの処理エンジン間で1つまたは複数のBGPセッションを開始して、動的ルーティング情報を交換し得る。この情報により、図示の実施形態のクライアントによって指定された構成設定に従って、各VRが他のVRを介して隔離されたネットワークにネットワークパケットを転送できるようになる。宛先エンドポイントの様々なセットに関して、あるBGP処理エンジンから別のBGP処理エンジンへのルーティング情報の転送は、ルーティング情報の「アドバタイズ」と呼ばれる場合がある。
【0121】
図示の実施形態では、仮想ルータのそれぞれは、ピアリングアタッチメントPA-1に関連付けられた少なくとも1つのルートテーブルを維持し得る。したがって、ルートテーブル1871はVR1810Aによって維持され、ルートテーブル1872はVR1810Bによって維持される。所与のルートテーブル内のエントリは、宛先プレフィックスと呼ばれ、
図18のCIDRフォーマットで指定される宛先エンドポイントの様々なグループの次のホップを示し得る。
【0122】
隔離されたネットワーク1840Aは、描かれた例示的なシナリオでは、範囲A.B.C.D/16(CIDR表記で表される)内のIPバージョン4アドレスを有するネットワークエンドポイントのセットを含む。隔離されたネットワーク1840Bは、範囲A.F.C.D/16内のIPバージョン4アドレスを有するネットワークエンドポイントのセットを含む。隔離されたネットワーク1840Cは、範囲A.G.C.D/16内のIPバージョン4アドレスを有するネットワークエンドポイントのセットを含み、一方、隔離されたネットワーク1840Dは、範囲K.L.M.N/16内のIPバージョン4アドレスを有するネットワークエンドポイントのセットを含む。ピアリングアタッチメントPA-1を介してトラフィックが流れることを可能にするために、図示の実施形態では、BGP処理エンジン1814Aは、A.D.C.D/16及びA.F.C.D/16のアドバタイズメントをBGP処理エンジン1814Bに送信し、一方、処理エンジン1814Bは、A.G.C.D/16及びK.L.M.N/16のアドバタイズメントをBGP処理エンジン1814Aに送信する。その結果、ルートテーブル1871には、A.G.C.D/16範囲内の宛先または宛先プレフィックス(Dstプレフィックス)の次のホップとしてピアリングアタッチメントPA-1を示す1つのエントリと、K.L.M.N/16範囲内の宛先の次のホップとしてピアリングアタッチメントPA-1を示す別のエントリとが追加される。ルートテーブル1872には、図示のシナリオにおいてBGP処理エンジン1814BでBGP処理エンジン1814Aから受信したA.B.C.D/16及びA.F.C.D/16のアドバタイズメントに基づいて、次のホップとしてPA-1を示すエントリが追加される。
【0123】
ルートテーブル1871及び1872は、図示の実施形態では、対応するVRに直接アタッチされた隔離されたネットワークの次のホップのエントリも含み得る。例えば、ルートテーブル1871には、A.B.C.D/16の次のホップとしてIA-1を示すエントリが含まれており、A.F.C.D/16の次のホップとしてIA-2を示す別のエントリも含まれる。同様に、ルートテーブル1872には、A.G.C.D/16の次のホップとしてIA-3を示すエントリが含まれており、K.L.M.N/16の次のホップとしてDA-1を示す別のエントリも含まれる。いくつかの実施形態では、隔離されたネットワーク1840の一部またはすべてが、それらの独自のBGP処理エンジンを含んでいてもよい。例えば、K.L.M.N/16のアドバタイズメントは、隔離されたネットワーク1840D内に構成された別のBGP処理エンジンからBGP処理エンジン1814Bに送信され得る。
【0124】
図示の実施形態では、クライアントの構成設定に従ってVR間で転送される動的ルーティング情報(例えば、BGPアドバタイズメント)を使用して、ある隔離されたネットワークから別のネットワークにネットワークパケットを転送してもよい。例えば、隔離されたネットワーク1840Aで発信されたパケットがK.L.M.N/16の範囲内のアドレスに向けられている場合、ルートテーブル1871内のK.L.M.N/16のエントリはVR1810Aで利用されて、パケットをPA-1を介してVR1810Bに送信してもよく、そこから、ルートテーブル1872内のK.L.M.N/16のエントリに基づいて、隔離されたネットワーク1840Dに転送してもよい。
図18では次のホップを示すためにアタッチメント識別子(IA-1、IA-2、IA-3、及びDA-1)が使用されているが、そのようなアタッチメント識別子は、少なくともいくつかの実施態様ではパケットを転送するために、対応する仮想ネットワークインタフェース(VNI)識別子またはアドレス(各VNIはアタッチメントの1つに対して構成されている)に変換され得る。ルーティング情報は仮想ルータのBGP処理エンジン間で動的に交換されるため、図示の実施形態では、任意の隔離されたネットワーク間でネットワークパケットを送信できるようにするために、クライアントによって静的ルートを提供する必要がない場合があることに留意されたい。いくつかの実施形態では、静的ルートは必要ない場合があるが、それでも、クライアントは、必要に応じて静的ルートを指定してもよい。
【0125】
いくつかの実施形態では、BGP処理エンジン1814は、前述した補助タスクオフローダなどのオフロードリソースでインスタンス化され得る。他の実施形態では、そのようなオフロード技術は必要ない場合があり、BGP処理エンジンは、VRノードの1つに使用されるのと同じリソースで起動されてもよい。いくつかの実施形態では、仮想ルータ間でルーティング情報の少なくともいくつかを転送するために、BGPまたはそのバリアント以外のプロトコルが使用されてもよい。例えば、プロバイダネットワークで開発されたカスタムプロトコルが使用されてもよい。
【0126】
図19は、少なくともいくつかの実施形態による、仮想ルータのいくつかの異なるタイプのプログラムによるアタッチメントに対して動的ルーティング情報交換が可能になり得る例示的なシナリオを示す。上で述べたように、仮想ルータは、例えば、PPSのクライアントからのプログラムによる要求に応じて、いくつかの異なる種類のアタッチメントのいずれかを介して、他のルーティング情報のソースにアタッチしてもよい。いくつかの実施形態では、異なる種類のアタッチメントは、それらのためにPPS制御プレーンに保存され得るメタデータの種類が互いに異なる場合がある(例えば、アタッチメントに関連付けられたルーティング情報に使用されるプロトコル処理エンジンの種類、アタッチメントに関連付けられたルートテーブル、転送できるトラフィックの量またはレートのそれぞれの制限、アタッチメントに関連付けられたルーティング情報を更新する方法及び頻度、アタッチメントの仮想ネットワーク構成情報などが含まれる)。
【0127】
図19に示される実施形態では、VR1910Aが他の4つのエンティティにアタッチされている。クライアント構成のSD-WAN(ソフトウェア定義ワイドエリアネットワーク)機器1990を含むIVN1940は、IVNアタッチメントIA-1を介してVR1910Aにアタッチされる。クライアント施設ルータ1991を含むVPN接続されたクライアント施設隔離されたネットワーク1941(すなわち、VR1910Aが確立されるプロバイダネットワークの外部の施設にあるネットワークエンドポイント及びリソースを含む隔離されたネットワーク)は、VPNアタッチメントVA-1を介してVR1910Aにアタッチされる。クライアント施設ルータ1992を含む直接物理リンク接続されたクライアント施設隔離されたネットワーク1942(すなわち、VR1910Aが確立されるプロバイダネットワークの外部の施設にあるネットワークエンドポイント及びリソースを含む隔離されたネットワーク)は、DXアタッチメントDA-1を介してVR1910Aにアタッチされる。加えて、別のVR1910BがピアリングアタッチメントPA-1を介してVR1910Aにアタッチされる。
【0128】
VR1910Aがアタッチされるエンティティのそれぞれは、図示の実施形態では、動的ルーティング情報交換プロトコル(BGPバリアント、またはカスタムプロトコルなど)のためのそれぞれのプロトコル処理エンジンを含み得る。したがって、動的ルーティング情報交換(DRIE)1922、DRI1923、DRE1924、及びDRIE1925とラベル付けされた双方向破線矢印によって示されるように、動的ルーティング情報交換は、アタッチされたエンティティの各ペア間で有効化され得る。いくつかの実施形態では、エンティティの異なるペア間の動的ルーティング情報交換に異なるプロトコルが使用されてもよい。例えば、プロトコルP1(及び関連するプロトコル処理エンジンPE1)は、VR1910Aと1910Bとの間でルーティング情報を交換するために使用され得るが、プロトコルP2(及び関連するエンジンプロトコル処理エンジンPE2)は、IVN1940とVR1910Aとの間でルーティング情報を交換するために使用され得る。
【0129】
BGP互換性を維持しながらカスタムプロトコルを使用する例
図20は、少なくともいくつかの実施形態による、ルーティング情報転送のためのカスタムプロトコルが仮想ルータによって使用され、元々BGPを使用して仮想ルータに送信される情報を交換する例示的なシナリオを示す。
図20に示される実施形態では、PPSクライアント2095は、プログラムインタフェース2070を介して、BGP用語及び属性を使用して、ルーティング構成要求2078(例えば、ルーティング情報の転送の態様を制御する、上で論じた種類の設定を含む)を送信してもよい。内部的には、PPS制御プレーン2088は、クライアントの観点からBGPとの互換性を依然として維持しながら、VR間でルーティング情報を転送するためにカスタムルーティング情報転送プロトコル(CRITP)2044を利用してもよい。カスタムプロトコルは、BGPの使用頻度の低い機能の一部の実装を回避したり、BGPによって課せられる制約の一部(例えば、特定のBGPセッション内で転送できるルーティング情報の量の制限)を除去したりするなど、異なる実施形態における様々な理由により、内部使用に好まれる場合がある。図示の実施形態では、構成設定トランスフォーマ2055は、BGPベースのルーティング構成要求2078を、CRITP2044に使用されるフォーマットに変換してもよい。
【0130】
クライアント施設とVR2010との間の動的ルーティング情報交換(DRIE)のメッセージは、ラベル2023及び2024によって示されるように、図示された例示的なシナリオにおいてBGPに従ってフォーマットされ続け得る。例えば、クライアント施設CP1のルータ2090AのBGP処理エンジン2091Aは、VR2010AのBGP準拠処理エンジン2066AとのBGPセッションを確立してもよく、クライアント施設CP2のルータ2090BのBGP処理エンジン2091Bは、VR2010AのBGP準拠処理エンジン2066BとのBGPセッションを確立してもよい。ルータ2090からBGPメッセージを介して取得されたルーティング情報が、ピアリングアタッチメントPA-1を介してあるVRから別のVRに転送される場合、図示の実施形態では、情報はCRITPに従って表現され得る。つまり、VR2010A及び2010Bは、ラベル2025で示されているように、BGPメッセージではなくCRITPメッセージを使用して動的ルーティング情報を交換してもよい。実際、BGP準拠の処理エンジン2066は、必要に応じて、同じ基礎となるルーティング情報をBGPからCRITPに、またはその逆に変換してもよく、したがって、両方のプロトコルのメッセージを処理することが可能であり得る。
【0131】
ネットワークセグメンテーションのための複数のピアリングアタッチメントの使用例
図21は、少なくともいくつかの実施形態による、複数のピアリングアタッチメントが仮想ルータのペア間に設定され得る例示的なシナリオを示す。図示の実施形態では、クライアントは、VR2110A及び2110Bにアタッチされた隔離されたネットワークの指定されたペアの間でトラフィックが流れることを許可される一方で、同じVRにアタッチされた隔離されたネットワークの他のペアの間ではネットワークフローが防止または禁止されることを保証したい場合がある。例えば、クライアントは、隔離されたネットワーク(IN)2140Aと2140Bの間、また隔離されたネットワーク2140Cと2140Dの間でもパケットの動的ルーティング(例えば、上述した種類のアドバタイズメントの交換を使用)を可能にしたい場合がある。しかしながら、クライアントは、(a)IN2140AとIN2140Dの間、(b)IN2140AとIN2140Cの間、(c)IN2140BとIN2140Cの間、及び(d)IN2140Bと2140Cの間のトラフィックのフローを防止したい場合もある。
【0132】
BGPまたは同様のプロトコルを使用する動的ルーティング情報交換を依然として使用しながらこのタイプのネットワークセグメント化を達成するために、いくつかの実施形態では、2つの異なるピアリングアタッチメント(及び関連する動的ルーティングプロトコルエンジンの異なるペア)が確立され得る。ピアリングアタッチメントPA-1は、IN2140Aと2140Bの間のトラフィック(及び関連する動的ルーティング情報転送)のみに設定してもよく、一方、ピアリングアタッチメントPA-2は、IN2140Cと2140D間のトラフィック(及び関連する動的ルーティング情報転送)のみに設定してもよい。
【0133】
ピアリングされた仮想ルータを介した動的ルーティングの例示的なプログラムによるインタラクション
図22は、少なくともいくつかの実施形態による、ピアリングされた仮想ルータの動的ルーティングの構成に関する例示的なプログラムによるインタラクションのセットを示す。
図1の文脈で前述したパケット処理サービスと機能的に同様であるパケット処理サービス(PPS)2212は、図示の実施形態ではプログラムインタフェース2277のセットを実装してもよい。プログラムインタフェース2277は、例えば、APIのセット、コマンドラインツール、ウェブベースのコンソール、グラフィカルユーザインタフェースなどを含み得る。インタフェース2277を使用して、クライアントは、
図8及び
図9の文脈で説明したものと同様の仮想ルータ構成に関するメッセージ、ならびに
図22に示される追加メッセージを送信して、対応する応答を受信し得る。
【0134】
隔離されたネットワークのセット間のトラフィックを管理するためのいくつかの仮想ルータを前もって確立した後(例えば、
図8に示すCreateVirtualRouter要求814を使用して)、クライアント810は、
図22に示される実施形態において、CreateVRPeeringAttachment要求2214を送信して、ピアリングアタッチメントがVRの指定されたペアの間で作成されることを要求してもよい。特定のVRがアタッチされていることを示すメタデータは、PPS2212に格納されてもよく、いくつかの実施形態では、PeeringAttachmentCreatedメッセージ2215がクライアントに送信されてもよい。
【0135】
少なくともいくつかの実施形態では、異なるクライアントまたは異なるクライアントアカウントに代わって確立されたVR間でピアリングアタッチメントを作成してもよい。例えば、仮想ルータVR-1はプロバイダネットワークのクライアントC1用に作成され、仮想ルータVR-2はクライアントC2用に作成され、2つのクライアントは、VR-1とVR-2の間に確立されたピアリングアタッチメントを介してクライアントによって所有された様々な隔離されたネットワーク間でアプリケーションデータパケットの転送を可能にしたい場合がある。このようなシナリオでは、クライアントの1つがピアリングアタッチメントを要求すると、PPSは他のVRの所有者がアタッチメントに同意することを確認する必要があり得る。いくつかの実施形態では、そのような「クロスアカウント」アタッチメントが要求されると、PPS2212は、許可または承認が必要なクライアントにApproveCrossAccountVRPeering要求2217を送信してもよい。したがって、クライアントC1がVR-1を所有し、VR-2とのピアリングを要求する上記の実施例では、ApproveCrossAccountVRPeering要求2217がC2に送信され得る。C2が承認する場合、C2はCrossAccountVRPeeringApprovedメッセージ2219で応答してもよく、図示の実施形態では、C1によって要求されたピアリングアタッチメントが確立され得る。
【0136】
様々な実施形態において、クライアントは、例えば、EnableDynamicRoutingForVRPA要求2221を送信することによって、動的ルーティング(例えば、ピアリングされたVR間でのルーティング情報の転送、及び様々なアプリケーションデータパケットフローに対してVRにおいて最適な次のホップを動的に選択するためのルーティング情報の使用を含む)をピアリングアタッチメントのために有効にすることを要求してもよい。これに応じて、少なくともいくつかの実施形態では、それぞれのルーティング情報交換プロトコル処理エンジンは、ピアリングされたVRのそれぞれに対して構成されてもよく(例えば、上で論じたオフロードデバイスを使用して、またはVRの転送プレーンノードに使用されるものと同じデバイスを使用して)、プロトコルのセッションがプロトコル処理エンジン間で開始されてもよい。DynamicRoutingEnabledメッセージ2223は、動的ルーティングが有効になっていることを確認するためにクライアントに送信され得る。少なくとも1つの実施形態では、動的ルーティングは、ピアリングアタッチメントが作成されるときにデフォルトで有効化され得るので、別個のEnableDynamicRoutingForVRPAは必要とされない場合がある。
【0137】
1つまたは複数のRoutingInfoTransferConfigSettingsメッセージ2225は、図示の実施形態において、ピアリングされたVR間の動的ルーティング情報の転送に関する様々な構成設定を示すためにクライアント2210によって送信され得る。使用される特定のプロトコル(例えば、eBGP、iBGP、MP-BGPなどの様々な種類のBGPのいずれか)、アウトバウンドのアドバタイズされたルートのフィルタリング、インバウンドアドバタイズメントのフィルタリングの設定、宛先への次のホップを選択するために様々なBGP属性に割り当てられる相対優先度、プロトコル処理エンジンのIPアドレスに使用されるCIDRブロック、プロトコル処理エンジンに割り当てられる自律システム識別子などを含む、様々な構成設定のいずれかを指定してもよい。一実施形態における、それぞれの相対優先度がクライアントによって示されるBGP属性のセットには、例えば、(a)ローカルプリファレンス属性、(b)ローカルプレフィックス起点属性、(c)自律システム(AS)パス長属性、(d)マルチ出口弁別器(MED)属性、または(e)ルータ識別子属性のうちの1つまたは複数が含まれ得る。少なくともいくつかの実施形態では動的ルーティングプロトコル制御設定とも呼ばれる場合がある構成設定は、いくつかの実施形態ではEnableDynamicRoutingForVRPA要求のパラメータとして示され得る。いくつかの実施形態では、クライアントは、プログラムインタフェース2277を使用して、測定された待ち時間、帯域幅の可用性など、VRで動的ルーティングの決定を行うときに使用される様々な要因、及び要因に割り当てられる相対的な優先順位を、例えば、ピアリングアタッチメントの構成設定の一部として示し得る。クライアント指定の設定がPPS2212で取得された後、それらはデータベースに格納され、様々な実施形態においてピアリングされたVRに対して設定されたプロトコル処理エンジンで適用され得る。少なくともいくつかの実施形態では、SettingsAppliedメッセージ2227がクライアント2210に送信されてもよい。
【0138】
いくつかの実施形態によれば、動的ルーティング情報の転送及び使用に関する様々なメトリクス、例えば、使用されるルーティング情報交換プロトコル処理エンジンのペアの間でいずれかの方向に送信されるルートアドバタイズメントの数、プロトコル処理エンジンの健全性状態情報(例えば、応答性、稼働時間など)、アドバタイズメントが送信されるレートの経時的変化、次のホップ設定を変更するために特定の属性が使用された回数などは、PPS2212によって収集されてもよい。クライアントは、そのようなメトリクスを要求するためにShowDynamicRoutingMetrics要求2229を送信してもよく、図示の実施形態では、要求されたメトリクスは1つまたは複数のMetricsSet応答メッセージ2231を介してクライアントに提示され得る。
【0139】
一実施形態では、クライアントは、ピアリングされた仮想ルータの動的に学習されたルートのセットまたはピアリングされた仮想ルータの特定のルートテーブルに関する情報を要求するShowLearenedRoutes要求2233を送信してもよい。これに応じて、図示の実施形態では、VRで学習された次のホップアドレスが、1つまたは複数のLearnedRoutesSet応答2235を介してクライアントに提示され得る。いくつかの実施形態では、所与のVRのプロトコル処理エンジンは、複数の処理エンジンからBGPメッセージを受信してもよく、異なるエンジンはそれぞれ、同じ宛先への代替パスに関する情報を提供してもよい。このような一実施形態では、LearnedRouteSetメッセージを介してクライアントに提供される学習されたルート情報は、それぞれが異なるプロトコル処理エンジンから取得される、所与の宛先アドレスまたはプレフィックスに対するいくつかの異なる次のホップ代替を含み得る。例えば、少なくとも2つの異なるBGPエンジンから取得されたルーティング情報を含む、次と同様のテーブルの内容が、LearnedRoutesSetメッセージでクライアントに提示される場合がある。
{
“Network”: “A.B.C.D/32”
“NextHop”: “E.F.G.H”, “E.F.G.K”
“MED”: “0”, “0”
“Local Preference”: “100”, “300”
“ASN-Path”: “777 911 711i”, “777 911 711 715i”
}
【0140】
上記のテーブルの実施例では、A.B.C.D/32のアドレスを持つ宛先に対して2つの異なる次のホップ(E.F.G.H及びE.F.G.K)が学習されている。MED(マルチ出口弁別器)、ローカルプリファレンス属性、及び自律システム番号パス(ASN-Path)など、複数の次のホップの代替が利用可能な場合に、優先する次のホップを選択するために使用される様々な属性の値も、LearnedRoutesSetメッセージにおいて少なくともいくつかの実施形態では、異なる次のホップオプションに提供されてもよい。
【0141】
ピアリングされた仮想ルータの動的ルーティングを構成及び使用する方法
図23は、少なくともいくつかの実施形態による、ピアリングされた仮想ルータに対する動的ルーティングを可能にして利用するために実行され得る動作の態様を示すフロー図である。要素2301に示すように、VR1及びVR2を含む仮想ルータ(VR)のセットは、PPSの1つまたは複数のクライアントからのプログラム要求に応じて、例えば、前述した種類のセルベースのアプローチを使用して、パケット処理サービス(PPS)で作成または確立され得る。VRは、IN1及びIN2を含む隔離されたネットワークのセット間でネットワークパケットを送信するために作成してもよい。
【0142】
図示の実施形態では、IN及びVRはプログラムによって互いにアタッチされ得る。例えば、IN1をVR1にアタッチしてもよく、IN2をVR2にアタッチしてもよく、IN及びVRが確立されるクライアントに代わってクライアントから受信した要求に基づいて、VR1とVR2との間でピアリングアタッチメントPAを作成してもよい(要素2304)。
【0143】
動的ルーティングがVR間ピアリングアタッチメントに対して有効化されるべきであるという決定を行うことができる(要素2307)。すなわち、更新された属性値、パフォーマンスメトリクスなどの動的ルーティング情報がVR間で転送されるべきであり、アタッチされているIVN間でアプリケーションデータパケットをルーティングするためにそのようなルーティング情報が使用されるべきである、という決定である。少なくともいくつかの実施形態では、クライアントは、BGPのバリアントなど、選択されたプロトコルに従ってピアリングされたVR間のルーティング情報の転送のための構成設定(インバウンドまたはアウトバウンドのルートアドバタイズメントをフィルタリングするためのルール、様々な宛先の次のホップを選択するために使用される属性/要因に割り当てられるそれぞれの優先順位など)を指定してもよい。交換されるルーティング情報は、例えば、様々なIVN内の宛先アドレスのグループ(例えば、CIDRブロックとして表現される)へのルートまたは次のホップ、BGPの値、または宛先アドレスのグループに関連付けられた他の属性(MED値など)、宛先アドレスに利用可能な様々なパスに関連する遅延測定値、様々なパスに沿った利用可能な帯域幅の測定値、パスに沿って発生したエラー/障害のメトリクスなどを示し得る。
【0144】
図示の実施形態では、それぞれのプロトコル処理エンジンE1(VR1に関連付けられている)及びE2(VR2に関連付けられている)は、インスタンス化され、及び/または相互に接続されて、動的ルーティング情報交換(DRIE)セッション(BGPセッションなど)を開始してもよい(要素2310)。いくつかの実施形態では、プロトコル処理エンジンE1及びE2のうちの1つまたは複数に、前述した種類のオフロードデバイスを使用してもよい。
【0145】
IN1に関するルーティング情報は、DRIEセッションを介してVR2で取得してもよく、IN2に関するルーティング情報は、DRIEセッションを介してVR1で取得してもよい(要素2313)。取得されたルーティング情報は、静的ルートをそのようなパケットに対して構成することを必要とせずに、INの1つで発信される少なくともいくつかのネットワークパケットを他のINに送信するために利用され得る(要素2316)。
【0146】
動的ルーティングが有効になっているVRを使用した例示的な広域ネットワーキングサービス
多くの組織はオフィスとコンピューティングリソースを地理的地域に分散させており、所与の組織の施設が大陸にまたがっている場合もある。このようなリモート施設間の接続の管理は、様々なエンティティ、様々なハードウェアデバイス、及び様々なベンダの関連ソフトウェアが必要になる場合があるため、複雑になり得る。
図24は、少なくともいくつかの実施形態による、組織の地理的に離れた施設をリンクする広域ネットワークが、様々なベンダからのリースされたファイバ回線及び機器を使用して組織によって管理され得る例示的な環境を示す。組織Aは、国/地域2410Aに本社サイト(OAHQ)2420を有してもよく、国/地域2410B及び国/地域2410Cにも施設を有してもよい。国/地域2410Bは、例えば、組織Aのデータセンタ(OADC)2412B、支店(OABO)2415B、及び販売時点情報管理サイト(OAPOS)2418Bのうちの1つまたは複数を含み得、一方、国/地域2410Cは、OADC2412C、OABO2415C及びOAPOS2418Cを含み得る。国/地域2410Aは、OADC2412A、OABO2415A、及びOAPOS2418Aも含み得る。所与の国/地域2410内では、組織Aは、例えば、異なる施設間の接続についてローカルのインターネットサービスプロバイダ(ISP)に依存する場合がある。ある国/地域から別の国/地域へ組織Aの施設間で大量のデータを転送する必要がある一部のシナリオでは、組織は2444A、2444B、2444Cなどのリースされたファイバ回線を取得する場合がある。広域ネットワーキング管理機器2457(例えば、リースされたファイバ回線を流れるパケット用のルータ)、例えば、国/地域2410AのハードウェアベンダAからのWAN機器2457A、ハードウェアベンダBからのWAN機器2457B、及びハードウェアベンダCからのWAN機器2457Cも、組織Aによって購入及び管理される必要がある場合がある。さらに、組織Aがプロバイダネットワークまたはクラウドコンピューティング環境内のリソース2421(仮想化コンピューティングサービスのコンピューティングインスタンス、データベースサービスのデータベースシステムなど)も利用するならば、場合によっては、リースされたファイバ回線2444をプロバイダネットワークと相互接続する簡単な方法がない場合があるため、遠隔地域とプロバイダネットワークとの間でトラフィックをルーティングするために、1つまたは複数のカスタムハブ2491を設定する必要がある場合がある。地域間のトラフィックの需要が増加した場合、組織Aが取得したリースされた回線を拡張するには、望む以上の時間がかかる場合がある。管理者はネットワークの各部分を処理するために異なるツールを使用する必要がある場合があるため、組織の世界規模のWANの管理は面倒なものとなり得る。
【0147】
プロバイダネットワークのリソースは、様々な地域/国に分散している場合もあり、プロバイダネットワークは、高帯域幅のプライベートファイババックボーンネットワークを使用して、世界中に広がる独自のデータセンタに接続する場合がある。いくつかの実施形態では、組織がプロバイダネットワークのバックボーンネットワーク及び上述した種類の仮想ルータの集合を使用して自身のWANを設定できるようにするサービスが実装され得る。
図25は、少なくともいくつかの実施形態による、プロバイダネットワークのクライアントの遠隔施設間のトラフィックがプロバイダネットワークのワイドエリアネットワーク(WAN)サービスを使用して送信される例示的なシステム環境を示す。このサービスは、内部ファイババックボーンネットワークと動的ルーティングが可能になる仮想ルータの集合を採用する。図示されるように、システム2500は、本社OAHQ2520を有する組織Aの施設と、国/地域2510A、国/地域2510B及び国/地域2510Cに分散された他の様々な施設との間の接続を可能にするために使用されるプロバイダネットワークWANサービス2502のリソース及び産物を含む。WANサービス2502は、制御プレーンサーバ2544のセット、クライアントWANメタデータのセット2546、WANスケーラビリティマネージャ2548、及びクライアント側WAN管理インタフェース/ツール2550を含む。WANサービスのクライアントは、プロバイダネットワークの高パフォーマンス(例えば、低レイテンシ、高帯域幅)プライベートファイババックボーンリンク2570を利用して、異なる国または地域に位置するクライアント施設間でパケットを送信することができ、実際、プロバイダのネットワークリソースと使いやすい構成管理ツールを使用してプライベートWANを構成することができる場合がある。高パフォーマンスファイババックボーンリンク2570は、プロバイダネットワークサービスによって(サービスのクライアントに代わって、及び/または内部管理目的で)排他的に使用され、少なくともいくつかの実施形態ではパブリックインターネットのリンクを含まなくてもよいため、プライベートとして説明され得る。WANサービスは、プライベートファイババックボーンリンクのスケーラビリティと可用性を管理し、必要に応じてリソース/リンクを追加してもよく、クライアントはリンクの詳細(例えば、正確にどのバックボーンリンクがどのデータセンタにリンクしているか、様々なリンクでサポートされる帯域幅など)を認識する必要さえない場合がある。
【0148】
制御プレーンサーバ2544は、例えば、スケーラビリティマネージャ2548を実行するため、及び例えばクライアント側のWAN管理インタフェース/ツール2550を介して取得された入力に応答するためなどのプロバイダネットワークの仮想化コンピューティングサービスのコンピューティングインスタンスのプロビジョニングなど、WANサービスの管理タスクを担当する場合がある。クライアント側WAN管理インタフェース/ツール2550は、様々な実施形態において、ウェブベースのコンソール、コマンドラインツール、グラフィカルユーザインタフェース、及び/またはAPIなどのプログラムインタフェースのセットを含み得る。このようなインタフェースを使用して、いくつかの実施形態では、WANサービス2502の潜在的なクライアント(組織Aの管理者またはマネージャなど)は、ネットワークトラフィックがプロバイダネットワークのプライベートファイババックボーンを介してその間でルーティングされる、複数のクライアント施設の表示を提供してもよい。例えば、クライアントは、異なる地理的地域の施設の物理的位置(OAHQ2520、OADC2512A、2512B、及び2512C、OABO2515A、2515B、及び2515C、ならびに、OAPOS2518A、2518B、及び2518Cを含む)、地域にまたがる施設間のトラフィックの予想レート、パケット遅延の望ましい範囲などの情報を提供してもよい。少なくともいくつかの実施形態では、クライアントは、異なる施設に関する動的ルーティング情報を取得するために使用される特定のプロトコル(例えば、BGPのバージョンまたはバリアント)を指示または指定してもよい。クライアントによって提供される情報は、図示の実施形態ではクライアントWANメタデータ2546の一部として格納され得る。
【0149】
いくつかの実施形態によれば、WANサービスは、クライアントの施設について提供された情報を分析し、プログラムインタフェースを介してクライアントに、前述した種類のいくつかの仮想ルータ(VR)をクライアントのプライベートWAN用に確立するという推奨を提供してもよい。少なくとも1つの実施形態では、VRと、好ましくはVRがプログラムでアタッチされるローカルネットワークを有する施設との間のマッピングも、プログラムインタフェースを介してクライアントに提供され得る。このようなマッピングは、少なくともいくつかの実施形態では、クライアント施設の位置に対するプロバイダネットワークデータセンタの物理的位置に基づいてもよい。例えば、プロバイダネットワークのデータセンタがプロバイダネットワークで定義された地域(米国地域A、米国地域B、ヨーロッパ地域Aなど)に分散されている場合、マッピングは、いくつかの実施形態では、1つまたは複数の近くのクライアント施設に対して1つまたは複数の仮想ルータを確立する必要がある推奨プロバイダネットワーク地域を示し得る。提供された推奨に基づいて、クライアントは、いくつかの実施形態では、仮想ルータのセットを確立するために(例えば、前述した種類のパケット処理サービスに直接、またはWANサービスを介して)プログラム要求を送信してもよい。他の実施形態では、クライアントにVRの設定を要求する代わりに、WANサービス自体がクライアントに代わって仮想ルータのセットを構成してもよい。1つまたは複数のプロバイダネットワークVR2572Aは、国/地域2510Aに設定されてもよく、1つまたは複数のプロバイダネットワークVR2572Bは、国/地域2510Aに設定されてもよく、1つまたは複数のプロバイダネットワークVR2572Cは、国/地域2510Cに設定されてもよい。
【0150】
少なくともいくつかの実施形態では、各VRは、クライアント施設の1つまたは複数に関して近接度基準を満たすプロバイダネットワークリソースのセット(例えば、前述した高速パスノード、例外パスノード及び/または補助タスクオフローダの仮想化コンピューティングサービスのコンピューティングインスタンス)を使用して、クライアントのプライベートWANの一部として構成され得る。いくつかの実施形態では、VRがクライアント施設に関して近接度基準を満たしていることを検証することは、コンピューティングインスタンス起動要求がクライアント施設から送信された場合にデフォルトでコンピューティングインスタンスが確立されるであろう同じプロバイダネットワークで定義された地域にVRが存在することを保証することを含んでもよい。他の実施形態では、VRが近接度基準を満たすことを検証することは、クライアントが望む場合に、専用の直接物理リンク(直接接続リンク)がクライアント施設とプロバイダネットワークデータセンタとの間に設定できること、または、平均パケット転送遅延時間がTミリ秒以下のVPNトンネルを、クライアント施設とプロバイダネットワークの間に設定できること、を保証することを含み得る。異なる実施形態では他のタイプの近接度基準が使用されてもよい。
【0151】
様々な実施形態において、接続は、例えば、
図19に示される異なるタイプのアタッチメントを使用して、VR自体の一部またはすべての間、ならびにVRとクライアント施設のネットワークの間で確立または有効化され得る。例えば、動的ルーティングが有効になっているピアリングアタッチメントは、VR2572A、VR2572B、またはVR2572Cのペア間で設定され得る。クライアントのプリファレンスに応じて、例えば、プログラムによるアタッチメント要求で示されるように、1つまたは複数のVPNトンネルを使用するVPNアタッチメントは、1つまたは複数のVR2572といくつかのクライアント施設ネットワークとの間で作成され得る一方、直接物理リンクベースのアタッチメント(前述した種類のDXアタッチメント)は、1つまたは複数のVR2572と他のクライアント施設ネットワークとの間に設定され得る。少なくともいくつかの実施形態では、そのようなアタッチメントは、VRと、所与のクライアントの施設にあるクライアント所有のルータ、クライアント管理のSD-WAN機器などの動的ルーティング情報ソース(DRIS)2577との間のネットワーク接続を確立するために使用され得る。様々な実施形態において、DRISのIPアドレスなどのネットワーク構成情報は、クライアントによってプログラムインタフェースを介してWANサービスに提供され、VRがDRISと通信できるようにしてもよい。図示の実施形態では、OADC2512Cは、1つまたは複数のDRIS2577Aを含み得、OABO2515Cは、DRIS2577Bを含み得、一方、OAPOS2518Cは、DRIS2577を含み得、これらのDRISの少なくともいくつかとVR2572との間に接続を確立してもよく、その結果、クライアントの施設にあるローカルまたは隔離されたネットワーク内のエンドポイントに関する動的ルーティング情報をVRで取得することができ、地域間のトラフィックを指示するために使用できる。いくつかの実施形態では、必ずしもすべてのクライアント施設にDRISが含まれるわけではないことに留意されたい。いくつかの実施態様では、クライアントによって示されたルーティング情報交換プロトコル(BGPのバージョンなど)のそれぞれのプロトコル処理エンジンは、VRごとに(例えば、上で説明した種類の補助タスクオフローダを使用して)設定され得、プロトコルのセッションは、様々なクライアント施設のルーティング情報を転送するために、VRのプロトコル処理エンジンとDRISの間で開始され得る。所与のクライアント施設(OAHQ、OADC、OABO、またはOAPOSなど)で発信されるネットワークパケットの内容は、いくつかのVR2572及びプライベートファイババックボーンリンク2570を介して、例えば、ルートは、図示の実施形態では、DRISからVRで取得された動的ルーティング情報のセットを使用して識別されたルートに沿って、別のクライアント施設に送信され得る。
【0152】
図25に示すクライアント施設間でトラフィックが代わりに送信される組織Aは、図示の実施形態では、プロバイダネットワークのバックボーンリンクを使用して構築されたそのプライベートWANにプロバイダネットワークリソース2521を容易に接続することも可能であり得る。例えば、組織Aのマネージャの管理者は、クライアント側WAN管理インタフェース/ツール2550を使用して、1つまたは複数のクライアント施設と、プロバイダネットワークの仮想化コンピューティングサービスで確立された組織Aの隔離された仮想ネットワークとの間の接続を要求してもよい。このような要求に応じて、クライアント用に設定されたVRのうちの1つで構成設定が変更されてもよく、または新しいVRが設定されてもよく、様々な実施形態において、変更されたVRまたは新しいVRを使用して、要求された接続が有効化されてもよい。プロバイダネットワークは、図示の実施形態における国/地域2510Dなどの追加の国にデータセンタ(及びそのようなデータセンタに接続されたバックボーンリンク)を有してもよく、組織Aは現在、いかなる施設や設備を有していなくてもよい。組織Aがそのような国/地域に拡張する場合、プロバイダネットワークのバックボーンネットワークを使用して設定されたプライベートWANを拡張するには、プログラムによるインタラクションがわずか数回必要なだけであり得る。WANサービスを使用して構成された既存のプライベートWANに追加の施設を追加する場合(他のクライアント施設がすでにWANサービスに接続されている地域、または別の地域にある場合いずれも)、クライアントは、以前にプログラムインタフェースを介して他の施設について提供されたものと同じ種類の新しい施設に関する情報を単に提供すればよい。その後、追加の施設でVRと指定されたDRISとの間の接続が確立されてもよく、様々な実施形態では、追加の施設に関連するルーティング情報が、静的なルートの手動設定を必要とせずに、クライアントのVANにすでに使用されている一部またはすべてのVR間で伝播され得る。
【0153】
様々な実施形態において、WANサービスのクライアントは、プライベートファイババックボーン経由、例えばクライアント側のWAN管理インタフェース2550経由で、地理的に異なる地域のクライアントの施設間を流れるネットワークトラフィックの様々なメトリクス(例えば、単位時間当たりに転送される総バイト数、帯域幅使用の傾向、測定された待ち時間、パケットドロップレートなど)を取得してもよい。いくつかの実施形態では、クライアントは、メトリクスが提示される好ましい粒度を、例えば、(a)地域レベルの粒度(地域のペアにおけるクライアント施設間を流れるすべてのトラフィックに対するメトリクスが集約される)、(b)クライアント施設レベルの粒度(クライアント施設の異なるペアに対してメトリクスが個別に提示される)、または(c)隔離されたネットワークレベルの粒度(メトリクスが各IVNペアに対して、ならびにIVNとクライアント施設ネットワークの組み合わせごとに個別に提示される)、を含む粒度のセットから選択してもよい。少なくともいくつかの実施形態では、統合インタフェースを使用して、地域内のトラフィックメトリクスだけでなく、地域間のトラフィックメトリクスも提示してもよい。
【0154】
WANサービスのクライアントは、いくつかの実施形態では、そのアプリケーションに関する様々な種類の例外イベントを管理するためにサービスを利用してもよく、例えば、機能停止または他のネットワーク問題が発生した場合に、ある地域から別の地域にいくつかのアプリケーションのワークロードをフェイルオーバし得る。WANサービスは、例えば、プログラムインタフェースを介して、クライアントから、所与の地理的地域にあるクライアントの施設のネットワークエンドポイントの第1のセットに向けられたトラフィックに対する1つまたは複数の迂回基準(例えば、障害、ネットワーク速度低下などの検出)の表示を取得し得る。WANサービスは、様々な実施形態において、バックボーンネットワークを利用する異なるクライアント施設との間のトラフィックに関連するネットワークパフォーマンスデータを監視し、クライアントの明示された基準に基づいてトラフィックを再ルーティングまたは迂回し得る。例えば、迂回基準が満たされたとの判定に応じて、元の宛先または第1の宛先が2510Aなどの第1の地域内のエンドポイントであるいくつかのネットワークパケットが、適切なピアリングされたVRを使用して、代わりに2510Bまたは2510Cなどの別の地域にあるエンドポイントのフェイルオーバセットまたはバックアップセットに配信されてもよい。様々な実施形態では、異なるクライアントの迂回基準またはフェイルオーバ基準をクライアントのWANメタデータの一部として格納してもよい。
【0155】
いくつかの実施形態によれば、クライアントは、WANサービス2502を介して送信されるパケットの少なくともいくつかに対するカスタム処理またはアクションを要求してもよい。例えば、規制または組織のポリシーにより、ある国または地域内のエンドポイントのセットから別の国または地域にパケットが送信されるときに、監査レコードを生成して保存する必要がある場合がある。クライアントは、プログラムインタフェースを使用して、実行されるカスタムアクション及びアクションが実行される条件を示し得、WANサービスは、図示の実施形態に従ってアクションが実行されることを保証し得る。いくつかの実施形態では、例えば、前述したものと同様のオフロードデバイスをそのようなカスタムアクションに使用してもよい。
【0156】
いくつかの実施形態では、プログラムインタフェースを使用して、WANサービスのクライアントは、第1の地理的地域内の第1の1つまたは複数のクライアント施設のセットと、第2の地理的地域の第2の1つまたは複数の施設のセットとの間の、プロバイダネットワークのプライベートファイババックボーンを介して流れるネットワークトラフィックの目標帯域幅制限の表示を提供してもよい。WANサービスは、制限に達した場合に、例えば、ネットワークパケットを適切なVRでドロップさせることによって、そのような制限が確実に適用されるようにし得る。いくつかの実施形態では、クライアントは、プログラムインタフェースを介して帯域幅制限の増加を動的に要求してもよい。このような増加要求に応じて、WAN制御プレーンは、増加をサポートまたは維持できる十分なリソース(例えば、クライアントの地域間トラフィックに使用される様々なリンクでの十分な未使用の帯域幅)がバックボーンにあることを確認して、新しい目標帯域幅制限が許容可能であることを確認する表示をプログラムインタフェースを介して提供することができる。少なくともいくつかの実施形態では、WANサービスは、クライアントからの追加の帯域幅に対する潜在的な要求を予期して、そのクライアントに対して追加のバックボーンファイバリンクを定期的かつ積極的にプロビジョニングし得、その結果、より高い帯域幅が必要なときにクライアントが長時間待つ必要がなくなる。
【0157】
様々な実施形態において、所与のクライアント施設のペア間のトラフィックに対して、プロバイダネットワークのプライベートバックボーンを介して複数の経路が利用可能であってもよい。例えば、プロバイダネットワークの他のサービス(仮想化コンピューティングサービス、様々なデータベースサービスなど)に関する可用性及びパフォーマンス上の理由から、プロバイダネットワークによって、様々な国または地域にある独自のデータセンタ間に複数のファイバリンクのセットがプロビジョニングされてもよく、そのようなファイバリンクは、WANサービスクライアントのトラフィックをルーティングするための代替オプションとなってもよい。WANサービスクライアントが、クライアント施設のペア間のトラフィックのパフォーマンス目標(例えば、待ち時間目標)を指定する少なくともいくつかの実施形態では、クライアント施設のペアに使用されるVRは、クライアントの施設間のトラフィックに使用できるバックボーンリンクのいくつかの異なる代替セットから得られた現在または最近のパフォーマンスメトリクスを使用して、クライアントのパフォーマンス目標を満たすことができる特定のバックボーンリンクのセットを動的に選択してもよい。次に、少なくともいくつかのパケットは、選択されたリンクのセットを使用してクライアント施設間で送信され得る。いくつかの実施形態では、クライアントは、例えば、
図18及び
図20の文脈で前述したものと同様の構成設定を使用して、指定された施設または地域に関する動的ルーティング情報を転送するためのルールを提供し得る。
図1から
図23の文脈で前述した仮想ルータの様々な特徴及び機能が、いくつかの実施形態では、プロバイダネットワークのWANサービスによって、またはプロバイダネットワークのWANサービスのために利用され得ることに留意されたい。
【0158】
WANサービスの例示的なグラフィカルインタフェース
図26は、少なくともいくつかの実施形態による、クライアント指定の位置間のトラフィックに対するWANサービス品質メトリクスを提供するために使用され得る例示的なウェブベースのインタフェースを示す。図示されるように、
図25のサービス2502と機能的に同様のWANサービスによって実装されているウェブベースのインタフェース2602は、潜在的なクライアントの施設が位置する都市/地域のリストを提供するように要求される導入メッセージ地域2604を含み得る。このインタラクションは、いくつかの実施形態では、潜在的なクライアントがWANサービスの使用に同意する前に開始されてもよく、その結果、WANサービスは、クライアントの位置間のバックボーン接続を提供できるかどうかを判定でき、及び/またはその結果、潜在的なクライアントが地域間のトラフィックのWANサービスの品質メトリクスを確認できる。図示の実施形態では、潜在的なクライアントは、施設が、それぞれ国Aの州A、国B、及び国Cの州C内に位置する、都市A、都市B、及び都市Cに位置していることを示している。クライアント施設の位置がテーブル2606に入力された後、クライアントは送信ボタン2608を使用して情報をWANサービスに送信してもよい。
【0159】
クライアント施設位置情報の送信に応答して、WANサービスは、図示の実施形態においてクライアント施設が位置する地域間でプロバイダネットワークのバックボーンネットワークを介して送信されるトラフィックに対するサービス品質メトリクスのセットを提示してもよい。メトリクス-1、メトリクス-2、メトリクス-3、メトリクス-4、メトリクス-5、及びメトリクス-6など、クライアント施設の位置のペア間のトラフィックフローの各方向のいくつかのメトリクスは、ウェブベースのインタフェース2602を介してクライアントに提示され得る。このようなメトリクスには、例えば、位置間のパケット送信の待ち時間、転送バイト数/秒または転送バイト数/時間、パケットドロップレートなどが含まれ得る。いくつかの実施形態では、いくつかのメトリクスの公称値または期待値が、最近のある時間間隔にわたって取得された実際の測定値とともに提供され得る。一実施形態では、最初にクライアントに施設の位置を尋ねる代わりに、国/地域の様々な組み合わせに対するそのようなメトリクスを示すテーブル2610を、WANサービスに使える位置についてクライアントに知らせる方法としてWANサービスによって提示され得る。
【0160】
図26に示される実施形態では、WANサービスは、潜在的なクライアントがクライアント施設間のプロバイダネットワークバックボーンリンクを介してトラフィックをルーティングするためにWANサービスを使用したい場合に設定されるべき仮想ルータに関する推奨メッセージ2612を提示してもよい。表2614は、VRの確立が推奨されるプロバイダネットワークで定義された地域(地域-国A-1、地域-国B-1、地域-国C-2など)のリストと、プロバイダのネットワークで定義された地域とクライアントの施設の間のマッピングを示している。少なくともいくつかの実施形態では、プロバイダネットワークで定義された地域の少なくともいくつかが、政府が認識した境界によって定義された個々の国または州に正確に対応しない場合があることに留意されたい。例えば、地域は、データセンタの位置に基づいて、内部管理目的でプロバイダネットワークによって定義される場合があり、所与のプロバイダネットワークで定義された地域には、完全な州/国ではなく、州/国の一部が含まれる場合がある。プロバイダネットワークからリソース(VRなど)を要求する場合、少なくともいくつかの実施形態では、クライアントは、図示の実施形態においてリソースが確立または作成されるプロバイダネットワークで定義された地域を指定する必要がある場合がある。例えば、プロバイダネットワークで定義された地域は、リソースを要求するためのAPIまたはコマンドのパラメータによって示されてもよい。図示の実施形態では、VRをどのように構成すべきかなどの次のステップに関する指示を、ウェブベースのインタフェース2602を介してクライアントに提供してもよい。例えば、クライアントには、クライアントの施設内に設定されたネットワークの動的ルーティング情報ソースに関する構成情報、動的ルーティング情報の交換に使用されるプロトコル、及び/またはクライアントのトラフィックに対する任意のカスタムアクションもしくは補足動作(監査ログレコードの作成など)は、クライアントがWANサービスを利用したい場合には、クライアントが提供する必要がある、ということを通知される場合がある。
【0161】
図27は、少なくともいくつかの実施形態による、クライアント指定の位置間を流れるトラフィックに対する状態情報を提示するために使用され得る例示的なウェブベースのインタフェースを示す。ウェブベースのインタフェース2702において、メッセージ2704は、クライアントのワイドエリアネットワークの様々な部分についての状態情報(健全性または可用性情報、及びいずれかの方向で測定されたトラフィックレートを含む)が提示される粒度をクライアントがどのように変更してもよいかを示す。いくつかの実施形態では、クライアントは、他の粒度オプションの中でも、地域レベル、個々の施設のレベル(
図27の実施例に示すように)、または施設内及びプロバイダネットワーク内の個々の隔離されたネットワークのレベルでさえ集約された情報から選択してもよい。グラフ2710では、施設P1(都市A)と施設P2(都市B)、施設P1と施設P3(都市C)、及び施設P2と施設P3の間のプロバイダバックボーンベースの接続についての健全性統計情報(「状態:OK」)及びトラフィックの両方向の最新のトラフィックレートが示されており、3つの施設には仮想ルータVR-1、VR-2、VR-3がそれぞれ設定されている。いくつかの実施形態では、ズームイン/アウト制御要素2711を使用して粒度を変更してもよい。例えば、クライアントがズームアウトして、いくつかの異なる地域(それぞれが1つまたは複数のクライアントの施設を含む)が見えるようになる場合、表示される情報の粒度は、地域レベルの粒度に自動的に変更され得る。クライアントは、図示の実施形態では、グラフ2710内のVRまたは施設間に示されるコネクタをクリックすることによって粒度を変更してもよい。
【0162】
ウェブベースのインタフェース2702を使用してそれらのWANの状態情報を表示することに加えて、クライアントは、図示の実施形態ではウェブベースのインタフェース2702のテーブル2714を使用してクライアント施設間の目標データ転送レートを表示及び/または変更してもよい。様々な施設間(例えば、P1からP2、P2からP1など)または様々な地域間のいずれかの方向の現在の要求されたデータ転送レートは、表2714の「現在の制限」列に示され得る。「新しい制限」列は、図示の実施形態では任意の施設のペアのWANサービスによってサポートされる目標データ転送レートを変更するために使用され得る。いくつかの実施形態では、クライアントは、アプリケーショントラフィック需要の予想される増加に基づいて制限を引き上げることを望む場合がある。クライアントは、要求された帯域幅制限に基づいてWANサービスによってクライアントが課金される実施形態では、目標制限を下げることを望む場合がある。少なくともいくつかの実施形態では、
図26及び
図27に示される情報以外の他の種類の情報がWANサービスクライアントに提供されてもよい。
【0163】
WANサービスを利用した例示的なカスタム処理
いくつかの実施形態では、上述したように、クライアントは、指定されたカスタム処理アクションが、クライアントに代わってWANサービスを介して送信されるトラフィックの少なくとも一部に対して実行されることを要求してもよい。
図28は、少なくともいくつかの実施形態による、指定された位置間を流れるトラフィックに対する必須の仲介手段が、WANサービスのクライアントに代わって構成され得る例示的なシナリオを示す。図示の例では、VR2825A及び2825Bは、地域Aのクライアント施設P1と地域Bのクライアント施設P2の間でトラフィックをルーティングするように構成されている。
【0164】
クライアントの要求に応じて、監査エンジン2871を含む必須仲介手段2835を、クライアントの地域間トラフィックに対して(すなわち、地域Aと地域Bとの間で送信されるパケットに対して)構成され得る。図示の実施形態では、クライアントによって提供されるカスタムアクション仕様に基づいて、監査エンジン2871は、地域間で送信される一部またはすべてのパケットを検査し、監査ログに対応するレコードを生成及び格納してもよい。いくつかの実施形態では、VRのルーティングプレーンノードによってカスタムアクションを実行する必要がないように、前述した種類のオフロードデバイスで必須の仲介手段を確立してもよい。他の実施形態では、VRからワークロードをオフロードするために利用されない別のコンピューティングデバイスが使用されてもよい。少なくとも1つの実施形態では、クライアントは、クライアントのトラフィックに対するカスタムアクションを実行するために使用される実行可能コードを提供してもよく、実行可能コードは、WANサービスによって1つまたは複数のデバイスに展開され得る。いくつかの実施形態では、複数のクライアント要求のカスタムアクションは、例えば、それぞれの処理エンジン(監査エンジン2871など)を使用して、またはすべてのアクションを実行するように構成された単一の処理エンジンを使用して、地域間トラフィックに対して実行され得る。
【0165】
いくつかの実施形態では、プロバイダネットワークWANサービスは、いくつかのクライアント施設間のトラフィックのプライマリパスとして構成され得る一方、トラフィックのセカンダリパスは、プロバイダネットワークの外部のリソースを使用して構成され得る。したがって、2つのタイプのWANリンク、つまり、プロバイダネットワークプライベートバックボーンリンク(プライマリWANリンクとして使用される)、及び外部WANリンク(例えば、
図24に示されるものと同様のリースされたファイバ回線)が使用され得る。いくつかの実施形態では、クライアントの地域間トラフィックは、例えばクライアントによって指定された分割条件に基づいて、2つのタイプのWANリンク間で分散され得る。例えば、クライアントは、トラフィックの60%がプロバイダネットワークのバックボーンリンク上を流れ、残りの40%がリースされたファイバ回線経由で送信されるように指定してもよい。このような一実施形態では、クライアントのトラフィック分割プリファレンスは、VRがバックボーンリンクを介して送信されないトラフィック部分をどのように指示すべきかに関する情報とともに、WANサービスに提供され得る。VRは、トラフィックの要求された部分を外部WANリンクに送信するように構成されてもよい(例えば、パケットフローの60%がバックボーン経由で送信され、40%がVRからクライアントによって指定されたWAN機器に送信され、リースされたファイバ回線経由で送信される)。別のアプローチでは、プロバイダネットワークのバックボーンリンクがデフォルトで使用され、WANサービスによって報告された障害が発生した場合、またはパフォーマンスメトリクスがWANサービスで指定された閾値に達したのに応じて、クライアントのトラフィックが外部ファイバ回線に切り替えられ得る。いくつかの実施形態では、サービスを受けるクライアントは、リースされたファイバWANのパフォーマンスメトリクスにアクセスするために使用できる構成情報をWANサービスに提供してもよく、統合ツールまたはインタフェース(
図27に示されるインタフェースと同様)を使用して、両方のタイプのWANに関するパフォーマンスメトリクスと健全性状態をクライアントに提供してもよい。
【0166】
WANサービスとのプログラムによる例示的なインタラクション
図29は、少なくともいくつかの実施形態による、クライアント施設間のトラフィックのためのプライベートプロバイダネットワークバックボーンネットワークリンクの使用に関するプログラムによるインタラクションのセットの実施例を示す。図示の実施形態では、
図5のWANサービス2502と機能的に同様のWANサービス2912が、プログラムインタフェース2977のセットを実装してもよく、これは、クライアント2910が、所望のWAN構成に関する要求及びメッセージを送信するために使用され、対応する応答を受信してもよい。プログラムインタフェース2977は、例えば、
図26及び
図27に示されるものと同様のウェブベースのコンソール、コマンドラインツール、API、及び/またはグラフィカルユーザインタフェースを含み得る。いくつかの実施形態では、WANサービスは、前述した種類のより一般的なパケット処理サービス(PPS)のサブコンポーネントとして実装してもよく、PPSプログラムインタフェースを
図29に示すインタラクションに使用してもよい。
【0167】
クライアント2910(または、WANサービス2912の使用を開始するかどうかをまだ決定していない潜在的なクライアント)は、図示の実施形態では、プロバイダネットワークのプライベートファイババックボーンを介したネットワーク接続がその間で所望されるクライアント施設のセットについて、1つまたは複数のClientPremisesInfoメッセージ2914で情報を送信してもよい。いくつかの実施形態では、施設情報は、個々の施設の位置情報(例えば、都市、州、国)のみを含み得る。他の実施形態では、例えば、クライアントがすでにWANサービスを使用することを決定している場合、所望の帯域幅及び/または待ち時間、施設に関する動的ルーティング情報の交換に使用されるプロトコル(複数可)、施設のクライアント管理ルータまたはSD-WAN機器などの動的ルーティング情報ソースのIPアドレスなど、より詳細な情報がClientPremisesInfoメッセージに含まれてもよい。それに応答して、いくつかの実施形態では、WANサービスはWANServiceInfoForPremisesメッセージ2915を送信してもよい。WANServiceInfoForPremisesメッセージは、例えば、施設に対してデータセンタに最も近いプロバイダネットワーク間のプライベートバックボーントラフィックのパフォーマンス情報(例えば、利用可能な公称帯域幅、最近の時間間隔で測定されたデータ転送レート、待ち時間、パケットエラーレートなど)を提供してもよい。いくつかの実施形態では、WANServiceInfoForPremisesメッセージは、必要とされる場合がある仮想ルータの数、及びクライアント施設と仮想ルータとの間のマッピング(例えば、ネットワークを推奨される仮想ルータのそれぞれにプログラムでアタッチすべき特定のクライアント施設)に関する推奨を含み得る。
【0168】
図29に示される実施形態では、クライアント2910は、例えば、WANサービスによって推奨される仮想ルータのセットを作成するために、プログラムインタフェース2977を介して1つまたは複数のEstablishVirtualRouters要求2921を送信してもよい。これに応じて、仮想ルータは、例えば、前述したように、プロバイダネットワークの仮想化コンピューティングサービスのコンピューティングインスタンスを使用して、仮想ルータに関連するメタデータがプロバイダネットワークのパケット処理サービス(PPS)で保存/管理されることにより確立され得る。VRsEstablishedメッセージ2923は、いくつかの実施形態では、VRSが確立され、プログラムによってクライアント施設のネットワークにアタッチされた後、クライアントに送り返され得る。少なくともいくつかの実施形態では、VRの高速パスノード及び例外パスノードを割り当てる/割り付けることに加えて、プロトコル処理エンジン(例えば、クライアントによって示された特定のプロトコル用)を含む補助タスクオフローダも、PPSによってVRに対して構成され得る。そして動的ルーティング情報交換のセッションは、VRプロトコル処理エンジンとクライアント施設の動的ルーティング情報ソースの間で開始され得る。VRとクライアント施設ネットワークとのアタッチメントに加えて、少なくともいくつかの実施形態では、動的ルーティングが有効になっているピアリングアタッチメント(
図18の文脈で説明されたアタッチメントと同様)が、VRの様々なペア間で確立され得る。一実施形態では、別個のプログラム要求がクライアント2910によって送信されて、VRを作成し、その後、VRをクライアント施設ネットワークならびに他のVRにアタッチしてもよい。別の実施形態では、クライアントはVRを作成したり、アタッチメントを要求したりする必要がない場合がある。代わりに、WANサービスは、クライアント施設ネットワークに関してクライアントから提供された情報に基づいて、VRを自動的に設定及び構成してもよい。いくつかの実施形態では、例えば、プログラムインタフェース2977を介して示されるクライアントプリファレンスに基づいて、VRと1つまたは複数のクライアント施設ネットワークとの間にVPNトンネルを設定してもよい。他の実施形態では、専用のプライベート物理リンク(直接接続リンク)が、1つまたは複数のクライアント施設とそれに対応するVRとの間の通信のために設定され得る。
【0169】
いくつかの実施形態では、クライアント2910は、VR間及び/またはVRとクライアント施設の動的ルーティング情報ソースとの間で送信されるルーティング情報の種類を制御するためのルールを提供してもよい。このようなルールは、
図22のRoutingInfoTransferConfigSettingsメッセージ2225に含まれるものと同様の情報を含み得るDynamicRoutingConfigSettingsメッセージ2925を介して示してもよい。使用される特定のバージョンまたはバリアントのプロトコル(例えば、eBGP、iBGP、MP-BGPなどの様々な種類のBGPのいずれか)、アウトバウンドのアドバタイズされたルートのフィルタリング、インバウンドアドバタイズメントのフィルタリングの設定、宛先への次のホップを選択するために様々なBGP属性に割り当てられる相対優先度、プロトコル処理エンジンのIPアドレスに使用されるCIDRブロック、プロトコル処理エンジンに割り当てられる自律システム識別子などを含む、様々な構成設定のいずれかを指定してもよい。指定された設定及び/またはルールは、WANサービスのクライアントWANメタデータストアに保存され、ConfigSettingsAppliedメッセージ2927がクライアントに送信される前に、クライアントのWAN構成に適用され得る。
【0170】
クライアントは、例えば、図示の実施形態では、1つまたは複数のTrafficDiversionConfigInfoメッセージ2931をWANサービスに使用して、WANのフェイルオーバ関連設定を提供してもよい。TrafficDiversionConfigInfoメッセージは、通常は1つまたは複数のクライアント施設内のあるネットワークエンドポイントのセットに向けられたトラフィックの1つまたは複数の迂回基準を示してもよい。迂回基準は、例えば、ネットワークエンドポイントのセットへの1つまたは複数のリンクに障害が発生したこと、またはエンドポイントのセットにパケットを配信する待ち時間が閾値を超えたことの検出を含み得る。TrafficDiversionConfigInfoは、基準が満たされた場合にトラフィックを迂回する必要がある、別の地域の顧客施設などの代替エンドポイントを示してもよい。いくつかの実施形態では、トラフィック迂回構成情報が格納され、DiversionInfoSavedメッセージ2934がクライアントに送信され得る。提供された情報に従って、様々な実施形態では、クライアントのWAN用に構成されたVRは、迂回基準は満たされているときに、ある地域内のネットワークエンドポイントのあるセット(パケットの最初の宛先)から別の地域内のネットワークエンドポイントの別のセットにパケットを迂回してもよい。
【0171】
いくつかの実施形態では、クライアントは、プロバイダネットワークのプライベートファイババックボーンを介して、例えば監査エンジンまたは
図28の文脈で説明したものと同様の他の仲介手段で、クライアントに代わって送信される少なくともいくつかのパケットに対してカスタムアクションが実行されることを要求してもよい。そのようなアクションが実行されるパケットのセットを選択するためのルール、及び所望のアクション自体の記述子(例えば、ソースコード形式または実行可能コード形式)は、図示の実施形態では、クライアント2910によって、1つまたは複数のConfigureCustomActionsForInterregionTrafficメッセージ2937で提供され得る。カスタムアクションを実行するために必要な構成操作は、WANサービス(VR用に構成されたオフロードデバイスで監査エンジンまたは他の仲介エンジンをインスタンス化するなど)によって完了され得、CustomActionsEnabledメッセージ2940がクライアントに送信され得る。
【0172】
クライアント2910は、例えば、SetWANTrafficLimitsメッセージ2943を使用して、WANのパフォーマンス目標を設定及び/または変更してもよい。クライアントがトラフィックレートの増加を望む場合、WANサービスは、いくつかの実施形態では、クライアントにWANTrafficLimitsSet応答2947を送信する前に、増加をサポートするために十分な容量がプライベートファイババックボーンネットワークで利用可能であることを検証してもよい。
【0173】
クライアント2910は、図示の実施形態では、ShowWANMetrics要求2951を送信することによって、バックボーンベースのプライベートWANのパフォーマンスメトリクス、可用性メトリクス、及び/または健全性状態の更新を要求してもよい。これに応答して、要求されたメトリクスのセットは、1つまたは複数のMetricsSet応答2954を介してクライアントに提示され得る。メトリクスには、例えば、データ転送レート、パケット遅延、パケットドロップ/ロスレート、稼働時間などが含まれてもよく、これらは、クライアントによって選択されたいくつかの粒度(地域間の粒度、施設間の粒度、隔離されたネットワークごとの粒度など)のいずれかで提供される。
【0174】
少なくとも1つの実施形態によれば、クライアント2910は、それらのクライアント施設ネットワークと、プロバイダネットワークの仮想化コンピューティングサービスにおいてクライアントに代わって設定された1つまたは複数の隔離された仮想ネットワーク(IVN)との間の接続を可能にすることを望む場合がある。このような実施形態では、EnableConnectivityWithIVN要求2957をWANサービスに送信してもよい。これに応じて、クライアントのWANの適切なVR(例えば、IVNアタッチメントが作成され得る)及び/または指定されたIVNで1つまたは複数の構成変更が行われ、IVNとクライアントの施設の間でトラフィックがルーティングされ得るようになる。そして、IVNConnectivityEnabledメッセージ2960がクライアントに送信され得る。WANに追加する追加のクライアント施設ネットワーク(ClientPremisesInfoメッセージに示される)または追加のIVN(EnableConnectivityWithIVNメッセージに示される)に関する情報がクライアントによって提供されると、追加のネットワークに関するルーティング情報が、クライアントが静的ルートを提供したり追加の構成操作を実行したりすることを必要とせずに、クライアントのプライベートWANに設定されたVR間で自動的に伝播され得る。いくつかの実施形態では、
図29に示されるもの以外のプログラムによるインタラクションが、WANサービス2912によってサポートされ得る。
【0175】
WANサービスの実装方法
図30は、少なくともいくつかの実施形態による、プライベートファイババックボーンを介してクライアント施設間でトラフィックを送信するプロバイダネットワークの広域ネットワーキングサービスで実行され得る動作の態様を示す流れ図である。要素3001に示すように、プロバイダネットワークのプライベートファイババックボーンネットワークを使用して、動的ルーティングを有効にして、その施設間トラフィックが送信されるクライアントの様々な施設に関する情報は、例えば
図25のWANサービス2502と機能的に同様のWANサービスのプログラムインタフェースを介して決定または取得され得る。プロバイダネットワークは、WANサービス自体以外に、前述した種類の仮想化コンピューティングサービス(VCS)及びパケット処理サービス(PPS)など、ネットワークでアクセス可能な様々なサービスを実装する場合がある。情報には、例えば、図示の実施形態では、施設の位置、施設のネットワークとの間でパケットを送信するために使用できる動的ルーティング情報の交換に使用されるプロトコル、クライアント所有のルータ、SD-WAN機器などのクライアント施設ネットワークの動的ルーティング情報ソースのアドレス、などが含まれ得る。
【0176】
オプションとして、いくつかの実施形態では、クライアントの施設の近くに位置するプロバイダネットワークデータセンタ間の(プロバイダネットワークの内部トラフィックの、及び/または他のWANサービスクライアントのトラフィックに関して集約されたメトリクスに基づく)予想または測定されたバックボーンベースのデータ転送レート、そのようなデータセンタ間のパケット転送待ち時間、パケット損失レートなど、クライアント施設の位置に関連する少なくともいくつかのWANサービス品質情報がクライアントに提供されてもよい(要素3004)。いくつかの実施形態では、プロバイダネットワークは、そのデータセンタを地域グループに編成し、異なる地域にある選択されたデータセンタ間を流れるトラフィックのメトリクスを取得し、そのメトリクスを使用してWANサービス品質メトリクスを生成し、提供してもよい。施設間のバックボーンベースの接続(クライアントのプライベートWANとも呼ばれる)を可能にするために、クライアントから承認を得てもよい。いくつかの実施形態では、承認は、クライアントがプライベートファイババックボーンを使用して接続される施設についての情報を提供するのと同じメッセージ/要求でクライアントによって提供されてもよい。
【0177】
図示の実施形態では、プロバイダネットワークリソースを使用して(例えば、VCSのコンピューティングインスタンス及び/またはPPSの制御プレーンコンポーネントを使用して)、仮想ルータ(VR)のセットがクライアントのプライベートWAN用に構成され得る(要素3007)。所与のVRは、図示の実施形態において、1つまたは複数のクライアント施設に関して近接度基準を満たすプロバイダネットワークリソースを使用して設定され得る。例えば、クライアント施設が国の州S1にある場合、データセンタがより遠くにある別のプロバイダネットワークによって定義された地域R2よりも優先して、S1または近隣の州の少なくともいくつかのデータセンタを含むプロバイダネットワークで定義された地域R1にVRを設定してもよい。接続は、様々な実施形態において、例えば、少なくともペアのVR間、ならびに個々のVRと近隣のクライアント施設ネットワークとの間で、前述した種類のプログラムによるアタッチメントを使用して確立され得る。
【0178】
いくつかの実施形態では、それぞれのプロトコル処理エンジン(例えば、BGP処理エンジン)は、クライアント施設ネットワークに関する受信された動的ルーティング情報についてVRのそれぞれに対してインスタンス化または構成され得る(要素3010)。クライアント施設の一部またはすべてが、クライアント所有またはクライアント管理のハードウェアルータ及び/またはSD-WAN機器などの動的ルーティング情報ソースを含む実施形態では、クライアント用に構成された少なくとも1つのVRと動的ルーティング情報ソースのそれぞれとの間で接続が確立され得る。例えば、VR用に構成されたプロトコル処理エンジンとクライアント施設の動的ルーティング情報ソースとの間でBGPセッションを確立してもよい。いくつかの実施形態では、補助タスクオフローダをVRのプロトコル処理エンジンに使用してもよい。
【0179】
所与のクライアント施設ネットワークに関するルーティング情報は、VRのプロトコル処理エンジンで取得してもよい(要素3013)。情報は、例えばいくつかの実施形態ではクライアントによって示されたプロトコル転送構成設定に従って、クライアントに代わって設定された他のVRに伝播されてもよい。様々な実施形態において、所与のクライアント施設ネットワークに関するルーティング情報は、1つまたは複数のVRを介して、別のクライアント施設ネットワークにあるクライアント施設ルータまたはSD-WAN機器に伝播され得る。
【0180】
取得され、クライアントのプライベートWANのVR間で伝播されたルーティング情報は、様々な実施形態において、プロバイダネットワークのプライベートファイババックボーンを介してクライアント施設間で少なくともいくつかのネットワークパケットを転送するために使用され得る(要素3016)。
【0181】
様々な実施形態において、
図10、
図17、
図23及び/または
図30に示される動作の一部は、図に示されているものとは異なる順序で実施されてもよいし、順次ではなく並行して実行されてもよいことに留意されたい。さらに、
図10、
図17、
図23及び/または
図30に示される動作の一部は、1つまたは複数の実施態様では必要ない場合がある。
【0182】
例示的なコンピュータシステム
少なくともいくつかの実施形態では、本明細書で説明される種類の技術(例えば、パケット処理サービス、補助タスクオフローダ、ワイドエリアネットワーキングサービス、またはプロバイダネットワークの他のサービスの様々な機能)を実装するサーバは、1つまたは複数のコンピュータアクセス可能媒体を含む、またはそれらにアクセスするように構成された、汎用コンピュータシステムを含み得る。
図31は、そのような汎用コンピューティングデバイス9000を例示する。例示される実施形態では、コンピューティングデバイス9000は、入力/出力(I/O)インタフェース9030を介して、システムメモリ9020(不揮発性及び揮発性メモリモジュールの両方を含み得る)に連結される、1つまたは複数のプロセッサ9010を含む。コンピューティングデバイス9000は、I/Oインタフェース9030に連結されるネットワークインタフェース9040をさらに含む。
【0183】
様々な実施形態において、コンピューティングデバイス9000は、1つのプロセッサ9010を含むユニプロセッサシステム、またはいくつかのプロセッサ9010(例えば、2つ、4つ、8つ、または別の好適な数)を含むマルチプロセッサシステムであってもよい。プロセッサ9010は、命令を実行することが可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ9010は、x86、PowerPC、SPARC、ARM、もしくはMIPS ISA、または任意の他の好適なISAなどの様々な命令セットアーキテクチャ(ISA)のうちのいずれかを実装する、汎用または組込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ9010の各々は、同じISAを一般的に実装し得るが、必ずしも実装しなくてもよい。一部の実施態様では、グラフィックス処理ユニット(GPU)及び/またはフィールドプログラマブルゲートアレイ(FPGA)は、従来のプロセッサの代わりに、またはそれらに加えて使用され得る。
【0184】
システムメモリ9020は、プロセッサ(複数可)9010によってアクセス可能な命令及びデータを格納するように構成され得る。少なくともいくつかの実施形態では、システムメモリ9020は、揮発性及び不揮発性部分の両方を含み得、他の実施形態では、揮発性メモリのみが使用され得る。様々な実施形態では、システムメモリ9020の揮発性部分は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。システムメモリの(例えば、1つまたは複数のNVDIMMを含み得る)不揮発性部分に関しては、いくつかの実施形態では、NANDフラッシュデバイスを含むフラッシュベースのメモリデバイスが使用され得る。少なくともいくつかの実施形態では、システムメモリの不揮発性部分は、スーパーキャパシタまたは他の蓄電デバイス(例えば、バッテリ)などの電源を含み得る。様々な実施形態では、メモリスタベースの抵抗ランダムアクセスメモリ(ReRAM)、3次元NAND技術、強誘電RAM、磁気抵抗RAM(MRAM)、または様々なタイプの相変化メモリ(PCM)のうちのいずれかが、少なくともシステムメモリの不揮発性部分に対して使用され得る。例示される実施形態では、上述のそれらの方法、技術、及びデータなどの1つまたは複数の所望の機能を実装するプログラム命令及びデータは、コード9025及びデータ9026として、システムメモリ9020内に格納される。
【0185】
一実施形態において、I/Oインタフェース9030は、ネットワークインタフェース9040、または様々なタイプの永続的及び/または揮発性記憶装置などの他の周辺インタフェースを含む、プロセッサ9010、システムメモリ9020、及びデバイス内の任意の周辺デバイス間のI/Oトラフィックを調整するように構成されてもよい。いくつかの実施形態では、I/Oインタフェース9030は、あるコンポーネント(例えば、システムメモリ9020)からのデータ信号を、別のコンポーネント(例えば、プロセッサ9010)による使用に適した形式に転換するために、任意の必要なプロトコル、タイミング、または他のデータ変換を実行し得る。いくつかの実施形態では、I/Oインタフェース9030は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス規格、またはユニバーサルシリアルバス(USB)規格のバリアントなど、様々なタイプの周辺バスを通じてアタッチされるデバイスに対するサポートを含み得る。いくつかの実施形態では、I/Oインタフェース9030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の別々のコンポーネントに分割され得る。また、いくつかの実施形態では、システムメモリ9020へのインタフェースなどのI/Oインタフェース9030の機能性のうちのいくつかまたはすべては、プロセッサ9010に直接組み込まれ得る。
【0186】
ネットワークインタフェース9040は、データが、コンピューティングデバイス9000と、例えば、
図1~
図30に例示されるような他のコンピュータシステムまたはデバイスなどの、ネットワーク(1つまたは複数)9050にアタッチされる他のデバイス9060との間で交換されることを可能にするように構成され得る。様々な実施形態では、ネットワークインタフェース9040は、例えば、イーサネットネットワークのタイプなどの任意の適切な有線または無線の一般データネットワークを介した通信をサポートし得る。さらに、ネットワークインタフェース9040は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの電気通信/テレフォニネットワークを介した、ファイバチャネルSANなどのストレージエリアネットワークを介した、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートし得る。
【0187】
いくつかの実施形態では、システムメモリ9020は、
図1~
図30の文脈で論じた方法及び装置を実装するために使用されるプログラム命令及びデータの少なくともサブセットを格納するように構成されている、コンピュータアクセス可能媒体の一実施形態を示し得る。しかしながら、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能媒体において、受信、送信、または格納されてもよい。一般的に言えば、コンピュータアクセス可能媒体は、I/Oインタフェース9030を介してコンピューティングデバイス9000に連結される、磁気媒体または光媒体、例えば、ディスクまたはDVD/CDなどの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ9020または別のタイプのメモリとして、コンピューティングデバイス9000のいくつかの実施形態に含まれても良い、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性媒体を含んでもよい。いくつかの実施形態では、複数の非一時的なコンピュータ可読記憶媒体は、1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、上述の方法及び技術の少なくともサブセットを実装するプログラム命令を集合的に格納し得る。コンピュータアクセス可能媒体は、ネットワークインタフェース9040を介して実装され得るような、ネットワーク及び/または無線リンクなどの通信媒体を介して伝送される伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号をさらに含み得る。
図31に示されるような複数のコンピューティングデバイスのうちの一部またはすべては、様々な実施形態では、記載される機能性を実装するために使用され得て、例えば、様々な異なるデバイス及びサーバ上で実行するソフトウェアコンポーネントが、機能性を提供するために協働し得る。いくつかの実施形態では、記載される機能性の一部は、汎用コンピュータシステムを使用して実装されることに加えて、またはその代わりに、記憶装置、ネットワーク装置、または特殊目的コンピュータシステムを使用して実装され得る。「コンピューティングデバイス」という用語は、本明細書で使用される場合、少なくともすべてのこれらのタイプのデバイスを指し、これらのタイプのデバイスに限定されない。
【0188】
本開示の実施形態は、以下の条項を鑑みて説明することができる。
条項1。システムであって、
1つまたは複数のコンピューティングデバイスを含み、
前記1つまたは複数のコンピューティングデバイスは、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
仮想化コンピューティングサービスを含むプロバイダネットワークの、広域ネットワーキングサービスの1つまたは複数のプログラムインタフェースを介して、(a)第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、前記プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設、及び(b)少なくとも前記第1の施設及び前記第2の施設に関する動的ルーティング情報を取得するために使用される特定のプロトコル、の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のプロバイダネットワークデータセンタにおいて、前記仮想化コンピューティングサービスの少なくとも第1のリソースのセットを使用している第1の仮想ルータと、前記第2の施設に対する前記近接度基準を満たす第2のプロバイダネットワークデータセンタにおいて、少なくとも第2のリソースのセットを使用している第2の仮想ルータとを構成させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、ルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
命令を含み、
前記ルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータに関連付けられたプロトコル処理エンジンによって前記第2の動的ルーティング情報ソースから取得され、前記プロトコル処理エンジンは、前記特定のプロトコルのメッセージを処理するように構成されている、
前記システム。
【0189】
条項2。前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記プライベートファイババックボーンを介して前記第1の地理的地域と前記第2の地理的地域との間を流れるネットワークトラフィックの1つまたは複数のメトリクスを、前記1つまたは複数のプログラムインタフェースを介して提示されるようにさせる
さらなる命令を含む、条項1に記載のシステム。
【0190】
条項3。前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記1つまたは複数のプログラムインタフェースを介して、(a)地域レベルの粒度、(b)施設レベルの粒度、または(c)隔離されたネットワークレベルの粒度、を含む粒度のセットから選択される、前記1つまたは複数のメトリクスが提示される特定の粒度の表示を取得させ、前記1つまたは複数のメトリクスは、前記特定の粒度で提示される、
条項2に記載のシステム。
【0191】
条項4。前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記1つまたは複数のプログラムインタフェースを介して、前記第2の地理的地域内の第1のネットワークエンドポイントのセットに向けられたトラフィックの迂回基準の表示を取得させ、
迂回基準が満たされたと判定させ、
前記迂回基準が満たされたとの判定に応答して、前記第1の地理的地域で発信された特定のネットワークパケットが、前記第1の仮想ルータを介して第3の地理的地域のネットワークエンドポイントに配信されるようにさせる
さらなる命令を含み、
前記特定のネットワークパケットの初期宛先アドレスは、前記第1のセットのネットワークエンドポイントのアドレスである、
条項1~2のいずれか1項に記載のシステム。
【0192】
条項5。前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記1つまたは複数のプログラムインタフェースを介して、追加の施設の表示であって、前記追加の施設と前記複数のクライアント施設の1つまたは複数の施設との間のネットワークトラフィックは前記プライベートファイババックボーンを介して送信される前記追加の施設の表示を取得させ、
前記追加の施設に関連するルーティング情報を、前記追加の施設への静的ルートを指定することを必要とせずに、前記第1の仮想ルータ及び前記第2の仮想ルータを含む1つまたは複数の仮想ルータに伝播させる
さらなる命令を含む、条項1~2または4のいずれか1項に記載のシステム。
【0193】
条項6。1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数の施設の表示を取得することと、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立することと、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にすることと、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにすることと、
を含み、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
コンピュータ実装方法。
【0194】
条項7。前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域と第2の地理的地域との間で送信される少なくともいくつかのネットワークパケットに関して実行されるカスタムアクションの表示を取得することと、
特定のネットワークパケットに対して前記カスタムアクションを実行することと、
をさらに含む、条項6に記載のコンピュータ実装方法。
【0195】
条項8。前記カスタムアクションが、監査ログレコードを格納することを含む、条項7に記載のコンピュータ実装方法。
【0196】
条項9。前記第1の施設とプロバイダネットワークの仮想化コンピューティングサービスの隔離された仮想ネットワークとの間の接続を可能にするために、プログラムインタフェースを介して要求を取得することと、
前記第1の施設と前記隔離された仮想ネットワークとの間の前記接続を可能にするために、前記第1の仮想ルータの構成を変更することと、
をさらに含む、条項6~7のいずれか1項に記載のコンピュータ実装方法。
【0197】
条項10。前記第1のルーティング情報のセットの前記一部が、ボーダーゲートウェイプロトコル(BGP)のバージョンのセッションにおいて取得される、条項6~7または9のいずれか1項に記載のコンピュータ実装方法。
【0198】
条項11。前記第1の仮想ルータと前記第1の動的ルーティング情報ソースとの間の接続を確立することが、1つまたは複数の仮想プライベートネットワーク(VPN)トンネルを確立することを含む、条項6~7または9~10のいずれか1項に記載のコンピュータ実装方法。
【0199】
条項12。前記第1の仮想ルータと前記第1の動的ルーティング情報ソースとの間の接続が、専用の物理リンクを使用して確立される、条項6~7または9~11のいずれか1項に記載のコンピュータ実装方法。
【0200】
条項13。前記第2の動的ルーティング情報ソースが、ソフトウェア定義ワイドエリアネットワーキング(SD-WAN)機器を含み、前記コンピュータ実装方法はさらに、
前記1つまたは複数のプログラムインタフェースを介して、前記SD-WAN機器のネットワーク構成情報を取得することをさらに含み、
前記第2の仮想ルータと前記第2の動的ルーティング情報ソースとの間の接続を可能にすることは、前記ネットワーク構成情報を利用することを含む、
条項6~7または9~12のいずれか1項に記載のコンピュータ実装方法。
【0201】
条項14。前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域内の第1の施設のセットと、前記第2の地理的地域の第2の施設のセットとの間の、前記プライベートファイババックボーンを介して流れるネットワークトラフィックの目標帯域幅制限の表示を取得することと、
前記1つまたは複数のプログラムインタフェースを介して、前記プライベートファイババックボーンにトラフィックが前記目標帯域幅制限で流れるのを可能にするのに十分なリソースがあることを示す表示を提供することと、
をさらに含む、条項6~7または9~13のいずれか一項に記載のコンピュータ実装方法。
【0202】
条項15。1つまたは複数のプログラムインタフェースを介して、(a)前記複数の施設間でトラフィックをルーティングするための仮想ルータの推奨数、及び(b)前記複数の施設の個々の施設と前記個々の施設からの接続が確立される仮想ルータとの間の推奨マッピング、の表示を行わせること
をさらに含む、条項6~7または9~14のいずれか1項に記載のコンピュータ実装方法。
【0203】
条項16。1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数の施設の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
プログラム命令を格納しており、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
1つまたは複数の非一時的コンピュータアクセス可能記憶媒体。
【0204】
条項17。条項16に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体であって、前記第1の仮想ルータが、高速パスノードと例外パスノードとを含み、前記高速パスノードは、(a)前記例外パスノードからの1つまたは複数のルーティングアクションを取得し、(b)前記ルーティングアクションを実装するように構成され、前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体は、1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサにさらに、
前記第1の仮想ルータの1つまたは複数のノードにリンクされたオフロードデバイスにルーティング情報交換プロトコル処理エンジンを構成させるさらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットの前記一部は前記ルーティング情報交換プロトコル処理エンジンで処理される、
前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【0205】
条項18。前記第1のルーティング情報の前記一部が、ボーダーゲートウェイプロトコル(BGP)セッションを介して前記第2の動的ルーティング情報ソースから取得される、条項16~17のいずれか1項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【0206】
条項19。前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第1の施設と前記第2の施設との間のトラフィックのパフォーマンス目標を取得させ、
前記第1の施設と前記第2の施設との間でトラフィックを送信するために使用できる前記プライベートファイババックボーンの複数のリンクのそれぞれのパフォーマンスメトリクスを取得させ、
前記それぞれのパフォーマンスメトリクス及び前記パフォーマンス目標に少なくとも部分的に基づいて、前記第1の施設で発信される1つまたは複数のネットワークパケットを前記第2の施設に送信するために、前記複数のリンクのうちの特定のリンクを選択させる
さらなるプログラム命令を格納している、条項16~18のいずれか1項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【0207】
条項20。前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第2の施設に関係するルーティング情報を転送するための1つまたは複数のルールを取得させる
さらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットは、前記1つまたは複数のルールに従って前記第1の仮想ルータに提供される、
条項16~19のいずれか1項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【0208】
結論
様々な実施形態は、命令の受信、送信、もしくは記憶、及び/またはコンピュータアクセス可能媒体に関する前述の説明に従って実装されたデータをさらに含み得る。概して、コンピュータアクセス可能媒体は、磁気メディアまたは光学式メディア、例えば、ディスクまたはDVD/CD-ROM、RAM(例えばSDRAM、DDR、RDRAM、SRAMなど)、ROMなどの揮発性メディアもしくは不揮発性メディアなどの記憶メディアまたはメモリメディアと、ネットワーク及び/または無線リンクなどの通信媒体を介して伝えられる電気信号、電磁信号、またはデジタル信号などの送信メディアまたは送信信号と、を含んでもよい。
【0209】
本明細書で図に例示され、説明される様々な方法は、本方法の例となる実施形態を表す。本方法は、ソフトウェア、ハードウェア、またはこれらの組み合わせで実装され得る。方法の順序は変更されても良く、また、様々な構成要素が追加、順序変更、省略、修正などされてもよい。
【0210】
本開示の利点を有する当業者に明白であるように、種々の変形及び変更を行ってもよい。すべてのそのような変形及び変更を含むことを意図しており、したがって、上記説明が限定的な意味ではなく、例示的であると考えるべきである。
【手続補正書】
【提出日】2024-01-24
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
1つまたは複数のコンピューティングデバイスを含み、
前記1つまたは複数のコンピューティングデバイスは、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
命令を含み、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
前記システム。
【請求項2】
前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記プライベートファイババックボーンを介して前記第1の地理的地域と前記第2の地理的地域との間を流れるネットワークトラフィックの1つまたは複数のメトリクスを、前記1つまたは複数のプログラムインタフェースを介して提示されるようにさせる
さらなる命令を含む、請求項1に記載のシステム。
【請求項3】
前記1つまたは複数のコンピューティングデバイスが、前記1つまたは複数のコンピューティングデバイス上か前記1つまたは複数のコンピューティングデバイス全体で実行されると、前記1つまたは複数のコンピューティングデバイスに、
前記1つまたは複数のプログラムインタフェースを介して、追加の施設の表示であって、前記追加の施設と前記複数
の施設の1つまたは複数の施設との間のネットワークトラフィックは前記プライベートファイババックボーンを介して送信される前記追加の施設の表示を取得させ、
前記追加の施設に関連するルーティング情報を、前記追加の施設への静的ルートを指定することを必要とせずに、前記第1の仮想ルータ及び前記第2の仮想ルータを含む1つまたは複数の仮想ルータに伝播させる
さらなる命令を含む、請求項1~2のいずれか1項に記載のシステム。
【請求項4】
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数の施設の表示を取得することと、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立することと、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にすることと、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにすることと、
を含み、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
コンピュータ実装方法。
【請求項5】
前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域と第2の地理的地域との間で送信される少なくともいくつかのネットワークパケットに関して実行されるカスタムアクションの表示を取得することと、
特定のネットワークパケットに対して前記カスタムアクションを実行することと、
をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第1の施設とプロバイダネットワークの仮想化コンピューティングサービスの隔離された仮想ネットワークとの間の接続を可能にするために、プログラムインタフェースを介して要求を取得することと、
前記第1の施設と前記隔離された仮想ネットワークとの間の前記接続を可能にするために、前記第1の仮想ルータの構成を変更することと、
をさらに含む、請求項4~5のいずれか1項に記載のコンピュータ実装方法。
【請求項7】
前記第1のルーティング情報のセットの前記一部が、ボーダーゲートウェイプロトコル(BGP)のバージョンのセッションにおいて取得される、請求項4~6のいずれか1項に記載のコンピュータ実装方法。
【請求項8】
前記第1の仮想ルータと前記第1の動的ルーティング情報ソースとの間の接続を確立することが、1つまたは複数の仮想プライベートネットワーク(VPN)トンネルを確立することを含む、請求項4~7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記第2の動的ルーティング情報ソースが、ソフトウェア定義ワイドエリアネットワーキング(SD-WAN)機器を含み、前記コンピュータ実装方法はさらに、
前記1つまたは複数のプログラムインタフェースを介して、前記SD-WAN機器のネットワーク構成情報を取得することを含み、
前記第2の仮想ルータと前記第2の動的ルーティング情報ソースとの間の接続を可能にすることは、前記ネットワーク構成情報を利用することを含む、
請求項4~8のいずれか1項に記載のコンピュータ実装方法。
【請求項10】
前記1つまたは複数のプログラムインタフェースを介して、前記第1の地理的地域内の第1の施設のセットと、前記第2の地理的地域の第2の施設のセットとの間の、前記プライベートファイババックボーンを介して流れるネットワークトラフィックの目標帯域幅制限の表示を取得することと、
前記1つまたは複数のプログラムインタフェースを介して、前記プライベートファイババックボーンにトラフィックが前記目標帯域幅制限で流れるのを可能にするのに十分なリソースがあることを示す表示を提供することと、
をさらに含む、請求項4~9のいずれか1項に記載のコンピュータ実装方法。
【請求項11】
1つまたは複数のプログラムインタフェースを介して、(a)前記複数の施設間でトラフィックをルーティングするための仮想ルータの推奨数、及び(b)前記複数の施設の個々の施設と前記個々の施設からの接続が確立される仮想ルータとの間の推奨マッピング、の表示を行わせること
をさらに含む、請求項4~10のいずれか1項に記載のコンピュータ実装方法。
【請求項12】
1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
1つまたは複数のプログラムインタフェースを介して、第1の地理的地域の第1の施設と第2の地理的地域の第2の施設とを含む、プロバイダネットワークのプライベートファイババックボーンを介してネットワークトラフィックがその間でルーティングされる複数のクライアント施設の表示を取得させ、
前記第1の施設に対する近接度基準を満たす第1のリソースのセットを使用して第1の仮想ルータを確立し、前記第2の施設に対する前記近接度基準を満たす第2のリソースのセットを使用して第2の仮想ルータを確立させ、
(a)前記第1の仮想ルータと前記第2の仮想ルータ、(b)前記第1の仮想ルータと前記第1の施設にある第1の動的ルーティング情報ソース、及び(c)前記第2の仮想ルータと前記第2の施設にある第2の動的ルーティング情報ソースの間の接続を可能にさせ、
前記第1の施設で発信された少なくとも1つのネットワークパケットの内容を、第1のルーティング情報のセットを使用して、前記プライベートファイババックボーンを介して前記第2の施設に転送されるようにさせる
プログラム命令を格納しており、
前記第1のルーティング情報のセットの少なくとも一部は、前記第2の仮想ルータによって前記第2の動的ルーティング情報ソースから取得される、
1つまたは複数の非一時的コンピュータアクセス可能記憶媒体。
【請求項13】
請求項12に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体であって、前記第1の仮想ルータが、高速パスノードと例外パスノードとを含み、前記高速パスノードは、(a)前記例外パスノードからの1つまたは複数のルーティングアクションを取得し、(b)前記ルーティングアクションを実装するように構成され、前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体は、1つまたは複数のプロセッサ上か1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサにさらに、
前記第1の仮想ルータの1つまたは複数のノードにリンクされたオフロードデバイスにルーティング情報交換プロトコル処理エンジンを構成させるさらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットの前記一部は前記ルーティング情報交換プロトコル処理エンジンで処理される、
前記1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【請求項14】
前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第1の施設と前記第2の施設との間のトラフィックのパフォーマンス目標を取得させ、
前記第1の施設と前記第2の施設との間でトラフィックを送信するために使用できる前記プライベートファイババックボーンの複数のリンクのそれぞれのパフォーマンスメトリクスを取得させ、
前記それぞれのパフォーマンスメトリクス及び前記パフォーマンス目標に少なくとも部分的に基づいて、前記第1の施設で発信される1つまたは複数のネットワークパケットを前記第2の施設に送信するために、前記複数のリンクのうちの特定のリンクを選択させる
さらなるプログラム命令を格納している、請求項12~13のいずれか1項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【請求項15】
前記1つまたは複数のプロセッサ上か前記1つまたは複数のプロセッサ全体で実行されると、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプログラムインタフェースを介して、前記第2の施設に関係するルーティング情報を転送するための1つまたは複数のルールを取得させる
さらなるプログラム命令を格納しており、
前記第1のルーティング情報のセットは、前記1つまたは複数のルールに従って前記第1の仮想ルータに提供される、
請求項12~14のいずれか一項に記載の1つまたは複数の非一時的なコンピュータアクセス可能記憶媒体。
【国際調査報告】