JP6539341B2 - プログラマティックインターフェースに従ったルータ情報の提供 - Google Patents

プログラマティックインターフェースに従ったルータ情報の提供 Download PDF

Info

Publication number
JP6539341B2
JP6539341B2 JP2017515027A JP2017515027A JP6539341B2 JP 6539341 B2 JP6539341 B2 JP 6539341B2 JP 2017515027 A JP2017515027 A JP 2017515027A JP 2017515027 A JP2017515027 A JP 2017515027A JP 6539341 B2 JP6539341 B2 JP 6539341B2
Authority
JP
Japan
Prior art keywords
request
routers
requests
router
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017515027A
Other languages
English (en)
Other versions
JP2017524314A (ja
Inventor
オウェイス,マルワン・サラ・エル−ディン
カレン,パトリック・ブリガム
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2017524314A publication Critical patent/JP2017524314A/ja
Application granted granted Critical
Publication of JP6539341B2 publication Critical patent/JP6539341B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Description

コモディティハードウェア用の仮想化技術の到来は、多様なニーズを有する多くのカスタマーのための大規模なコンピューティングリソースの管理に関して利益をもたらし、様々なコンピューティングリソースが多数のカスタマーにより効率的且つ安全に共有されることを可能にしてきた。例えば、仮想化技術は、単一の物理的なコンピューティングマシンが、当該単一の物理的なコンピューティングマシンによりホストされる1つまたは複数の仮想マシンを各ユーザに提供することにより、多数のユーザ間で共有されることを可能にし得る。各仮想マシンは、ユーザに、自身が所与のハードウェアコンピューティングリソースの唯一のオペレータ及びアドミニストレータであるという幻想を提供し、さらに、様々な仮想マシン間のアプリケーション分離及び安全性を提供する、別個の論理的なコンピューティングシステムとして作動するソフトウェアシミュレーションである。別の実施例として、仮想化技術は、多数のデータ記憶デバイスを介して分散され得る仮想化されたデータストアを各ユーザに提供することにより、データ記憶ハードウェアが多数のユーザ間で共有されることを可能にし得る。このような各仮想化されたデータストアは、ユーザに、自身がデータ記憶リソースの唯一のオペレータ及びアドミニストレータであるという幻想を提供する、別個の論理的なデータストアとして作動するものである。
仮想化技術は、様々なサービスまたはリソースを、ネットワーク接続を介してカスタマーに提供するプロバイダネットワークを生じさせた。データ、トランザクション、及びプロバイダネットワークとの他の対話の量が増えるにつれて、プロバイダネットワークのカスタマーにとっての様々な接続要件もまた増加する。一部のカスタマーは、(例えば、インターネットを介する)公衆に利用可能な接続を利用するよりもむしろ、プロバイダネットワークへの私的または直接的な接続の利用を望む場合がある。このように、これらのカスタマーとプロバイダネットワークとの間の接続は、パフォーマンスのため、及び、プロバイダネットワークリソースの利用の増加のために、最適化されることがある。しかし、プロバイダネットワークは、ネットワーキングインフラストラクチャを適合させるので、カスタマーは、自身の私的な接続を修正または変更しなければならない場合がある。プロバイダネットワークを最新にしておく一部として、カスタマーは、自身の私的な接続を利用し続けるために、基礎を成すプロバイダネットワークインフラストラクチャについての情報を取得する必要がある場合がある。
いくつかの実施形態に従った、特定のルータについてのルータ情報を取得するために、プロバイダネットワークと、プラットフォーム独立であるプログラマティックインターフェースとへの接続を提供するように、いくつかのルータを実行するプロバイダネットワークの図である。 いくつかの実施形態に従った、ルータプログラマティックインターフェースを実行する、ルータデータサービスのブロック図である。 いくつかの実施形態に従った、特定のルータに対する要求にサービスする要求ワーカーのブロック図である。 様々な実施形態に従った、クライアントデバイスとルータデータサービスとの間の対話を示す図である。 様々な実施形態に従った、クライアントデバイスとルータデータサービスとの間の対話を示す図である。 いくつかの実施形態に従った、プログラマティックルータインターフェースを実行するための様々な方法及び技法を示す高レベルのフローチャートである。 様々な実施形態に従った、プライオリティスキームに従ってサービスされるルータ情報に対する要求を選択するための様々な方法及び技法を示す高レベルのフローチャートである。 いくつかの実施形態に従った、プロバイダネットワークにおけるルータに対し、ルータ情報に対する要求をスロットリングするための様々な方法及び技法を示す高レベルのフローチャートである。 いくつかの実施形態に従った、クライアントに提供するために、リトリーブされたルータ情報を選択するための様々な方法及び技法を示す高レベルのフローチャートである。 いくつかの実施形態に従った、例示的なコンピューティングシステムを示すブロック図である。
実施形態が、いくつかの実施形態及び説明的な図面のための実施例として本明細書において説明されるが、こうした実施形態が、説明される実施形態または図面に限定されないことを当業者は認識するであろう。図面及びそれに対する詳細な説明は、開示される特定の形態に実施形態を限定することを意図するものではなく、むしろ、その意図は、添付の特許請求の範囲により規定される趣旨及び範囲内にある、全ての修正形態、等価物及び代案を対象とすることであると理解すべきである。本明細書において使用される見出しは、組織的な目的のためのものに過ぎず、明細書の範囲または特許請求の範囲を限定するのに使用されることを意味するものでない。本出願全体を通して使用されるように、「may」という単語は、強制的な意味(すなわち、mustを意味するもの)ではなく、許容的な意味(すなわち、可能性を有することを意味するもの)において使用される。同様に、「include」、「including」及び「includes」という単語は、含むが、これに限定されない、ということを意味する。
いくつかの実施形態に従って、本明細書において説明されるシステム及び方法は、プログラマティックインターフェースに従ってルータ情報を提供することを実行してよい。プロバイダネットワークは、クライアント、オペレータ、または他のカスタマーに、1つまたは複数のコンピューティングリソースへのアクセス及び/またはその制御を供給してよい。これらのリソースは、ネットワークを介して通信のために構成される、様々なタイプのコンピューティングシステムまたはデバイスを含んでよい。例えば、いくつかの実施形態において、プロバイダネットワークは、クライアント、ユーザ、または他のタイプのカスタマーに、リザーブドコンピュートインスタンスの形(例えば、ユーザに、自身が所与のハードウェアコンピューティングリソースの唯一のオペレータ及びアドミニストレータであるという幻想を提供する、別個の論理的なコンピューティングシステムとして作動する仮想マシン)で、仮想のコンピューティングリソースを提供してよい。プロバイダネットワーククライアントは、様々な機能、サービス、技法、及び/またはアプリケーションを実施するように、1つまたは複数のコンピュートリソース(コンピュートインスタンスなど)をリザーブしてもよく(すなわち、購入または買ってよく)、または、他のリソースを利用してもよい。
しかし、プロバイダネットワークは、プロバイダネットワークにより提供される様々なサービスへのアクセスを提供するために、多くの異なる構成要素、システム、またはデバイスを実行する場合がある。様々な実施形態において、大量の異種のルータが、プロバイダネットワークへのアクセスを提供するために実行され得る。しかし、アクセスを提供する一部として、一部のクライアントは、特定のルータに基づいてプロバイダ情報への接続を構成しなければならない場合がある。それゆえ、特定のルータについての情報が、プロバイダネットワークへの接続を適切且つ効率的に管理または操作するために、有用及び/または必要である場合がある。例えば、或る接続が接続問題を経験している場合、接続が確立されている特定のルータについての一定のルータ情報が、トラブルシューティングをするために、及び、修正動作を識別するために有用であり得る。しかし、異なるルータが、ルータ情報を取得するための異なるタイプのインターフェースを実行するので、必要とされる接続を構成、管理または操作するのに必要とされる情報を取得することは、プロバイダネットワークのクライアントにとって困難な場合がある。プログラマティックインターフェースは、クライアントが、プロバイダネットワークにおける特定のルータのインターフェースがどのように実行されるかを理解する必要なく、ルータデータサービスからルータ情報を取得することを可能とし得る。
図1は、いくつかの実施形態に従った、特定のルータについてのルータ情報を取得するために、プロバイダネットワークと、プラットフォーム独立であるプログラマティックインターフェースとへの接続を提供するように、いくつかのルータを実行するプロバイダネットワークの図である。プロバイダネットワーク100は、インターネット及び/または他のネットワークを介してクライアント130にアクセス可能な、1つまたは複数のネットワークベースのサービス(様々なタイプのクラウドベースのコンピューティングまたはストレージなど)を提供するように、企業または公共部門組織などのエンティティによってセットアップされてよい。プロバイダネットワーク100は、プロバイダネットワーク100により提供されるインフラストラクチャ及びサービスを実行及び分散するのに必要とされる、一連の物理的及び/または仮想化されたコンピュータサーバ、記憶デバイス、ネットワーキング機器等などの様々なリソースプールをホストする非常に多くのデータセンターを含んでよい。クライアント130は、それぞれのルータ102を介してプロバイダネットワークにアクセスするように構成されてよい。いくつかの実施形態において、ルータ102は、プロバイダネットワーク100のためのエッジルータであってもよい。
プロバイダネットワーク100は、プロバイダネットワーク100の異なる構成要素間のネットワーキングリンク及び外部ネットワーク(例えばインターネット)を確立するのに必要な、ハードウェア(例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等)及びソフトウェア(例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェア等)を含んでよい。いくつかの実施形態において、プロバイダネットワーク100は、オーバーレイネットワークを提供するように、インターネップロトコル(IP)トンネリング技術を用いてよい。このオーバーレイネットワークを介して、カプセル化されたパケットが、トンネルを使用してプロバイダネットワーク100を通過し得る。しかし、いくつかの実施形態において、クライアント130は、私的または物理的な接続を介して、基礎を成すネットワークにアクセスしてもよい。図1において、クライアント130a、130b、130c、及び130dは、確立された私的な接続(幅広の矢印により示される)を介してプロバイダネットワークにアクセスしてよい。ルータ102は、これらの私的または物理的な接続を促進してよい。例えば、クライアント130aは、ルータ102aを介して接続する。クライアント130b及び130cは、ルータ102cを介してプロバイダネットワーク100に接続されるルータ102bを介して接続する。クライアント130dは、それぞれ2つの異なるルータ102d及び102eを介して接続してよい。先の記述が、クライアントとルータとの間で成され得る接続の様々な組み合わせを限定することを意図するものでないことに留意されたい。
クライアント130は、プロバイダネットワーク100への接続を管理、操作または構成するように構成可能な任意のタイプのクライアントを包含してよい。例えば、所与のクライアントは、それぞれの接続を構成し、当該接続をテストし、及び、当該接続を開始または終了することを可能とし得る、様々なツール、スクリプト、または他のモジュールを実行してよい。接続を管理する一部として、クライアント130はまた、特定のルータについてのルータ情報を取得してもよい。このように、クライアント130bは、プラットフォーム独立であるプログラマティックインターフェース112に従ってフォーマットされ得るルータデータサービス110に、ルータ情報に対する要求を送信することにより、ルータ102cについての情報を取得してよい。ルータデータサービス110は、ルータのための特定のインターフェースに従ってルータ102cを照会してよく、要求された情報をクライアント130bに提供してよい。
ルータデータサービスに要求をサブミットするために、所与のクライアント130は、適切なバージョンのウェブブラウザを含んでよく、あるいは、プラグインモジュール、または、ウェブブラウザにより提供される実行環境への、もしくはその内部での拡張として実行されるように構成される他のタイプのコードモジュールを含んでよい。あるいは、クライアント130は、特定のルータについての様々なルータ情報を取得するようにルータデータサービス110を使用し得る、ルータマネジメントまたは情報クライアント(もしくはそのユーザインターフェース)などのアプリケーションを包含してよい。いくつかの実施形態において、例えばアプリケーションは、全てのタイプのネットワークベースのデータのための全体のブラウザサポートを必ずしも実行することなく、ネットワークベースのサービス要求を発生及び処理するために、(例えば、適切なバージョンのHypertext Transfer Protocol(HTTP)用の)十分なプロトコルサポートを含んでよい。いくつかの実施形態において、クライアント130は、Representational State Transfer(REST)式のネットワークベースのサービスアーキテクチャ、ドキュメントもしくはメッセージベースの、ネットワークベースのサービスアーキテクチャ、または別の適切なネットワークベースのサービスアーキテクチャに従って、ネットワークベースのサービス要求を発生させるように構成されてよい。
図示されないが、いくつかの実施形態において、クライアント130は、プロバイダネットワークへの公衆接続であってよい外部ネットワークを介して、ネットワークベースのサービス要求をルータデータサービス110へ伝達してよい。様々な実施形態において、外部ネットワークは、クライアント130とルータデータサービス110との間のネットワークベースの通信を確立するのに必要な、ネットワーキングハードウェアとプロトコルとの任意の適切な組合せを包含してよい。例えば、ネットワークは、インターネットを集合的に実行する、様々な電気通信ネットワーク及びサービスプロバイダを全般に包含してよい。ネットワークはさらに、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)などの私的なネットワークと、公衆または私的な無線ネットワークとを含んでよい。いくつかの実施形態において、クライアント130は、公衆インターネットではなく私的なネットワークを使用してルータデータサービス110と通信してよいことが留意される。
プロバイダネットワークの一部のクライアントは、内部クライアント140であってよい。内部クライアント140は、それらが、プロバイダネットワーク100内に供給されてよく、また、プロバイダネットワーク100により提供されるサービスまたはリソースの1つまたは複数を実行してよいということを除いて、外部クライアント130と同様に動作してよい。例えば、内部クライアント140aは、内部ネットワーク構成またはマッピングサービスの一部として実行されてよく、それゆえ、マッピングサービスが管理する接続の一部を実行し得るルータ102のための情報を取得することを必要としてよい。それゆえ、内部クライアントは、プログラマティックインターフェース112を介してルータ情報を取得するように、ルータデータサービス110とも通信してよい。
先の説明は、限定的であることを意図するものでなく、プロバイダネットワーク、クライアント、及びルータの実施例として提供されたに過ぎないことに留意されたい。クライアントまたはルータの数または構成などの、構成要素の数または構成は、多くの様々なやり方で実行されてよい。様々な他の構成要素は、プラットフォーム独立のルータのプログラマティックインターフェースに従って、ルータ情報と対話してよく、またはルータ情報を提供してよい。
本明細書は、次に、プロバイダネットワークの一部として実行されるルータのためのルータ情報を提供するためにプログラマティックインターフェースを実行し得るルータデータサービスの一般的な概要を含む。その後、ルータデータサービスを実行する一部として用いられ得る様々な構成要素/モジュール、または、構成要素/モジュールの構成を含め、ルータデータサービスの様々な実施例が述べられる。プラットフォーム独立のプログラマティックインターフェースに従ってルータ情報の提供を実行するためのいくつかの異なる方法及び技法が次いで述べられ、そのうちのいくつかが、添付のフローチャートに示される。最後に、様々な構成要素、モジュール、システム、デバイス、及び/またはノードを実行し得る例示的なコンピューティングシステムの説明が提供される。様々な実施例が本明細書全体を通して提供される。
図2は、いくつかの実施形態に従った、プログラマティックインターフェースを実行するルータデータサービスのブロック図である。ルータデータサービス200は、種々のサーバ、ノード、または他のコンピューティングシステムもしくはデバイス(図10に関して下記で説明されるコンピューティングシステム1000など)間で実行されてよい。所与の構成要素の1つまたは複数の例が存在し得る場合、本明細書におけるそうした構成要素に対する言及は、単数形または複数形のいずれかで成される場合があることが留意される。しかし、いずれの形の使用も、もう一方を排除することを意図するものでない。
図1に関して上述したように、プロバイダネットワークに対して外部のクライアント202及び内部のクライアント204は、プロバイダネットワークと通信し、及び、プロバイダネットワークにおいて作動するように、ルータ240を使用してよい。ルータ240の設定及び他の情報は、影響を与えてよく、またはクライアントにより構成可能であってよく、それゆえ、外部クライアント(複数可)202及び内部クライアント(複数可)204は、特定のルータのための特定のルータ情報を取得するようにルータデータサービス200と通信してよい。様々な実施形態において、ルータデータサービスは、フロントエンド210を実行してよい。フロントエンド210は、ルータデータサービス200に送信される要求を、受信、パース、対処、誘導、または、処理するように構成されてよい。いくつかの実施形態において、フロントエンド210は、プラットフォーム独立のプログラマティックインターフェースに従ってフォーマットされた要求をパースまたは理解し、また、これらの要求を、当該要求に対処するようにルータデータサービス200の適切な構成要素に誘導するように構成されてよい。例えば、フロントエンド210は、ルータ240bに対する要求を受信してよい。フロントエンド210は、いくつかの実施形態において、ルータ240bに対する要求を維持するルータキュー220bに要求を送信するように構成されてよい。いくつかの実施形態において、単一の要求は、ルータ240a、240b及び240cなどの多数のルータから情報を集めるためのものであってもよい。フロントエンド210はまた、(例えば、アクセス信用証明またはアクセスリストに基づいて)特定の要求を実施するように、クライアントの識別または認証に対処するなどの様々な他のサービス機能を実行してもよい。いくつかの実施形態において、フロントエンド210は、ルータデータサービス210の様々な使用または他のパフォーマンスメトリクスを収集してよく、それらを、ストレージに、または別のシステム構成要素もしくはデバイスに、分析のために提供してよい。
様々な実施形態において、ルータデータサービス200は、それぞれルータ240a、240b、240c及び204dに対応する、ルータキュー220a、220b、220c及び220dなどの、ルータ固有のキューを実行してよい。ルータキュー220は、ルータデータに対するペンディング要求を維持するように、1つまたは複数のコンピューティングノード、システムまたはデバイス上で実行されてよい。少なくともいくつかの実施形態において、ルータキュー220は、図3に関して下記で述べられるプライオリティキュー310などのプライオリティキューであってよい。少なくともいくつかの実施形態において、それぞれのワーカー230は、ルータキュー220から要求を、ルータ240に対して変換及び送信されるために引き出すことに対処してよい。いくつかの実施形態において、下記で図3において説明するように、ワーカー230は、どの要求を引き出すかを選択し、受信要求をスロットルし、要求を、ルータ情報に対する要求の新たなバージョンに変換し、要求をルータ240に送信するように構成されてよい。しかし、いくつかの実施形態において、ワーカー230は、要求の選択及び/または要求のスロットルなどの、これらの機能のうちのいくつかのみを実施してもよく、他の構成要素が要求を変換及び送信してもよい。ワーカー230は、ワーカープール(複数可)242からの、特定のルータ240のための作業を実施するために供給されてよい。ワーカープール(複数可)242は、ルータ240のいずれかに対する要求にサービスするように構成されるワーカーの単一のプールであってよく、または、ルータのそれぞれのためのワーカーの様々な個別のプールであってもよい。或るワーカー230が故障すると、または利用可能でなくなると、ワーカープール(複数可)242におけるワーカーが、故障したワーカー240に代わるように、新たなワーカーを選出するように構成されてよい。図2に示すように、ワーカーは、特定のルータにサービスするように少なくとも構成されてよく、したがって、ワーカー230aはルータ240aにサービスし、ワーカー230bはルータ240bにサービスし、ワーカー230cはルータ240cにサービスし、及び、ワーカー230dはルータ240dにサービスする。
少なくともいくつかの実施形態において、ルータデータサービス200は、プロバイダネットワークルータ全体のためのスロットリングを分析、判定、調整、及び/または実施するように、スロットリング管理モジュール260を実行してよい。例として、スロットリング管理モジュール260は、ルータ240に送信される変換された要求の数を追跡するように、及び、受信要求の全体的な比率を判定するように構成されてよい。判定された比率、及びプロバイダネットワークのステータスについての他の情報(例えば、プロバイダネットワークのトラフィックレベルについての履歴情報)に基づいて、スロットリング管理モジュール260は、いくつかの実施形態において、ワーカー230で実施するために特定のスロットリング閾値を判定してよく、実施するためにワーカーにスロットリング閾値を送信してよい。下記で述べられる図8は、いくつかの実施形態において、スロットリング管理モジュール260が実行し得るスロットリングを判定及び実施するための、多くの異なる技法を提供する。
ルータ240への要求の結果は、いくつかの実施形態において、結果キュー250において記憶されてよい。ルータデータサービス200は、要求されたルータ情報を含むクエリ結果を維持するために、結果キュー250を実行してよい。フロントエンド210または別の構成要素は、クライアント202及び204に結果を提供するために、これらのクエリ結果を選択的に取得してよい。下記で述べられる図9は、結果キュー250から結果を選択するために実行されてよい技法の様々な実施例を提供する。いくつかの実施形態において、ルータデータサービス200はまた、永続データストア、結果ストレージ270においていくつかの結果を記憶するように構成されてよい。結果ストレージ270は、周期的または頻繁に取得される健全性及び他の情報を維持してよい。いくつかの実施形態において、ルータ情報に対するいくつかの要求は、結果ストレージ270にアクセスし、また、そこでデータストアのいくつかを取得することによるサービスであってよい。
図3は、いくつかの実施形態に従った、特定のルータに対する要求にサービスする要求ワーカーのブロック図である。要求ワーカー300は、プライオリティキュー310において維持された要求を、サービスのために変換されるために、選択する。要求の変換されたバージンは、ルータ360に送信されてよい。結果が、その後、結果キュー250及び/または結果ストレージ270に提供されてよい。要求ワーカー300は、1つまたは複数のコンピューティングノード、システム、またはデバイス(例えば、図10に関して下記で説明されるコンピューティングシステム1000)上で実行されてよい。示される様々な構成要素は、ハードウェア及び/またはソフトウェア構成要素において構成されてよい。
プライオリティキュー310は、(上記の図2において説明された)フロントエンド210または別の構成要素もしくはデバイスによりプライオリティキュー310に誘導される様々なルータ固有の要求を維持する。要求312a、312b、312c、312d、312e及び312fは、サービスのために選択されるまで、プライオリティキュー310において維持されてよい。要求ワーカー300は、様々な実施形態において、要求選択モジュール320を実行してよい。要求選択モジュール320は、プライオリティキュー310における要求を評価してよく、サービスのために選択された要求を引き出してよい(304)。例えば、いくつかの実施形態において、要求選択モジュール320は、要求312のためのプライオリティスコアの表示を判定または受信してよい。これらのプライオリティスコアに少なくとも部分的に基づいて、要求選択モジュール320は、より高い、またはほぼ最高のプライオリティスコアを有するこれらの要求312をサービスのために選択してよい。要求選択モジュール320は、多数の要求312を、単一または減少された数の、要求の変換されたバージョンに最適化または結合することを含め、図6及び図7に関して下記で説明される要求選択のための様々な技法を実行してよい。
様々な実施形態において、要求ワーカー300は、スロットル制御330を実行してよい。スロットル制御330は、ルータ360に送信されてよい要求に対して、様々なスロットリング閾値または技法を実施してよい。いくつかの実施形態において、スロットル制御330は、スロットリング管理260に、追跡に対する要求を報告してよく、また、スロットリング334を構成するために、スロットリング閾値及び他の情報または命令をスロットリング管理構成要素から受信してよい。スロットル制御330は、例えば、ルータ360に対する要求の比率を監視してよく、ルータ360への全ての要求、プライオリティの低い要求などの特定のタイプの要求、または、特定のクライアントからの要求をスロットリングしてよい。スロットル制御330は、いくつかの実施形態において、図8に関して下記で述べられる様々なスロットリング技法を実行してよい。
様々な実施形態において、要求ワーカー300は、報告モジュール340を実行してよい。報告モジュール340は、受信されたクエリ結果に対処するように、また、1つまたは複数の位置で、取得されたルータ情報を記憶するように構成されてよい。例えば、報告モジュール340は、取得されたルータデータが、結果ストレージ270において記憶される(344)健全性またはステータス情報であり得るかを判定してよい。一方で、他の受信されたクエリ結果について、報告モジュール340は、取得されたルータ情報が特定の要求にサービスするためのものであるかを判定するように、また、結果キュー250において要求ルータ情報を記憶する(342)ように構成されてよい。いくつかの実施形態において、報告モジュール340は、新たに受信された要求のデータが結果キュー250において記憶されるかを判定するように構成されてよい。
様々な実施形態において、要求ワーカー354は、ルータ固有の要求変換モジュール350を実行してよい。ルータ固有の要求変換モジュール350は、プログラマティックインターフェースに従ってフォーマットされた要求312を、ルータ360に固有のプログラマティックインターフェースに変換するように構成されてよい。ルータ固有の要求変換モジュール350は、変換を実施するために、要求ワーカー300にアクセス可能な1つまたは複数のライブラリまたは知識ベースにアクセスしてよい。ルータ固有の要求変換モジュール350は、その後、データのための変換された要求を送信してよく(352)、また、要求されたデータ354を受信してよい。いくつかの実施形態において、ルータ固有の要求変換モジュール350は、要求されたデータ354を、プログラマティックインターフェースと互換性のあるフォーマットに再び変換するように構成されてもよい。
図4は、様々な実施形態に従った、クライアントデバイスとルータデータサービスとの間の対話を示す図である。クライアント400は、ルータ430を利用するプロバイダネットワークの任意の種類のクライアントであってよい。様々な実施形態におけるクライアント400は、内部クライアント204などの内部クライアント、または、外部クライアント202などの外部クライアントであってよい。クライアント400は、様々な実施形態においてプラットフォーム独立であってもよいルータデータサービスAPIを介して、ルータデータサービス200と対話してよい。例えば、クライアント400は、ルータデータサービスAPI402に従ってフォーマットされたルータ430からのルータデータに対する要求または情報を送信してよく(432)、当該要求はフロントエンド210で受信される。フロントエンド210は、ルータ430のための適切なルータキュー410において要求を評価してよく、また要求をキューに入れてよい(434)。ワーカー420は、ルータ430に対するペンディング要求を評価するように、ルータキュー410をポーリングしてよい。ワーカー420は、ペンディング要求のためのプライオリティスキームに従って要求を選択してよく(436)、また、ルータキュー410から要求を受信または引き出してよい(438)。
ワーカー410は、要求を、ルータ430のためにルータ固有のAPI422に従ってフォーマットされる要求のバージョンに変換してよい。1つの要求が示されているが、要求は多数の要求のためのものであってもよく、それゆえ、要求の多数のバージョンが、固有のルータAPI422に従って発生及び送信されてよいことに留意されたい。いくつかの実施形態において、要求は、インターフェース(APIである必要はない)の任意のバージョンに変換されてよい。いったん変換されると、要求の新たなバージョンは、要求されたデータを取得するために、ルータ430に送信されてよい(440)。ルータ430は、要求をサービスしてよく(440)、また、ルータ固有のAPI422に従ってやはりフォーマットされてよいルータデータ422を返送してよい。ワーカー420は、その後、リトリーブされたルータデータを結果キュー250へキューに入れてよい(444)。いくつかの実施形態において、多数のルータからの結果は、多数のルータからの情報に対する単一の要求への応答として、集約及び送信されてよい。フロントエンド210は、その後、リトリーブされるルータデータを結果キュー250から選択してよく(446)、ルータデータを受信してよい(448)。フロントエンド210は、その後、要求されたルータデータをクライアント400に提供してよい(450)。
図5は、様々な実施形態に従った、クライアントデバイスとルータデータサービスとの間の対話を示す図である。上記で述べられた図4のように、ルータデータサービス200は、クライアント要求に対処するようにフロントエンド210を実行してよい。例えば、ルータデータに対するクライアント要求502は、ルータデータサービスAPI402を介してフォーマットされてよく、フロントエンド210で受信されてよい。上記で述べたように、いくつかのルータデータまたは情報は、結果ストレージ270(または結果キュー250)などの永続データストアにおいて維持されてよい。この実施例において、要求されたルータデータ502は、結果ストレージ270において維持される。データに対する要求は、結果ストレージ270からデータをリトリーブするように送信されてよく(504)、結果ストレージ270は、要求されたデータを返送してよい(506)。フロントエンド210は、いくつかの実施形態において、結果ストレージ270からのデータが依然として有効かどうかを判定してよい。データが依然として有効である場合、フロントエンド210は、ルータデータをクライアント500に提供してよい(508)。有効でない場合、フロントエンド210は、メッセージに対処する様々な要求及び上記の図4に示した技法を実施してよい。
図5に示した別の実施例において、クライアント500は、ルータデータに対する要求をフロントエンド210に送信する(510)。この要求は、しかし、(例えば、ルータデータサービスAPI402に関して)不適当にフォーマットされるか、または無効であることがある。この結果、無効な要求メッセージ412がクライアント500に返送されてよく、このメッセージは、(例えば、応答がエラーコードを含み得る、といった)無効についての理由を示してよい。
図1〜図5に関して上記で述べたプログラマティックインターフェースに従ってルータ情報の提供を実行する実施例が、特定のプロバイダネットワークに関して与えられた。プロバイダネットワークの様々な他のタイプまたは構成が、これらの技法を実行してもよい。例えばプログラマティックインターフェースが実行されるルータデータサービスの他のアーキテクチャまたは構成は、例として、ネットワークエンティティレジストリを実行してよい。例えば、全てのルータに対する要求の単一のグループまたはキューが維持されてよく、要求は、変換、送信、及び他の処理のために、当該単一のグループから引き出されてよい。図6は、いくつかの実施形態に従った、プログラマティックインターフェースに従ってルータ情報を提供するための様々な方法及び技法を示す高レベルのフローチャートである。これらの技法は、図1〜図5に関して上記で述べたようなプロバイダネットワークの様々な構成要素または他のプロバイダネットワーク構成要素を使用して実行されてよい。
610で示すように、要求は、様々な実施形態において、プロバイダネットワークの特定の1つまたは複数のルータのための特定のルータ情報に対して、プロバイダネットワークのクライアントから受信されてよい。要求は、少なくともいくつかの実施形態において、プログラマティックインターフェース(API)に従ってフォーマットされてよい。プログラマティックインターフェースは、多数の異なるタイプのルータからのルータ情報に対する要求またはクエリをサポートしてよい。これらの異なるタイプのルータのそれぞれは、例えば、特定のルータタイプに固有の異なるプログラマティックインターフェースに従って、別々にアクセスされるように構成されてよい。例えば、ルータタイプのための異なる特定のインターフェース(例えば、API)は、同一の情報(例えば、ルータ上の特定のリンクについてのリンクステータス)を取得するように、異なるキーワードを必要としてよく、または使用してよい。その一方で、プラットフォーム独立であるルータ情報のためのプログラマティックインターフェースは、1つのルータタイプに誘導されようと、または別のタイプに誘導されようと、要求のための同一のフォーマット(例えば、リンクステータスを確認するための同一のキーワード)を可能にしてよい。
様々な異なるタイプのルータ情報が、いくつかの実施形態において、要求されてよい。例えば、リンクステータス、ボーダ・ゲートウェイ・プロトコル(BGP)ステータス、アドレス解決プロトコル(ARP)ステータス、仮想のローカルエリアネットワーク(VLAN)タギング、エラー、受信される経路、広告される経路、または、クライアントが影響に対して処置を取り得る任意の他のルータ情報である。少なくともいくつかの実施形態において、クライアントは、プロバイダネットワークへの私的な接続を有してよい。それゆえ、ルータ情報に対する要求は、私的な接続を構成及び/または操作するのに有用なあらゆる情報を含んでよい。クライアントがまた、プロバイダネットワークに対して内部であってもよいことに留意されたい。
いったん受信されると、620で示すように、要求は、当該要求が適正かどうかを判定するために評価されてよい。適正な要求は、様々なフォーマッティング、キーワード、データフィールド、または他のプログラマティックインターフェースに特有の要件に適合し得る。少なくともいくつかの実施形態において、適正な要求はまた、クライアントが、特定の要求をするための許可またはアクセス権を有するかどうかに関して評価されてもよい。例えば、内部クライアントが、より大きなアクセス権を有する場合があり、それゆえ外部クライアントよりも広範囲な、プログラマティックインターフェースの要求の範囲を利用する場合がある。620からの否定的出口によって示すように、エラー応答は、不適正な要求を送信したクライアントに送信されてよい(622)。エラー応答は、要求に関連する特定の問題(例えば、多すぎるフラグの設定または許可されていないアクセス)を示してよく、または、エラー応答は、要求を単に拒否してもよい。エラー応答それ自体は、様々な実施形態において、プログラマティックインターフェースに従ってフォーマットされてよい。
630で示すように、また、特定のルータ情報が既に要求されたかどうかが判定されてもよい。例えば、いくつかのルータ情報は、周期的または頻繁に、プロバイダネットワークにおけるルータから集められてよい。このルータ情報は、一元的に記憶または位置されてよく、その結果、異なるプロバイダネットワークサービスまたは構成要素は、ルータからのデータを要求することなく、データにアクセスすることを可能とし得る。データは、記憶されてもよく、また、失効ポイントを示してもよい。その失効ポイントの後、データはもはや有効であり得ない。例として、いくつかの実施形態において、ルータから取得されるルータ健全性情報は、後続のアクセスのために永続ストレージにおいて記憶されてよい。特定のルータ情報が、既に、または前もってリトリーブされている場合、630からの肯定的出口によって示されるように、特定のルータ情報が、(例えば、前もってリトリーブされたルータ情報を維持する永続データストアから)取得されてよい。
特定の情報が前もってリトリーブされていない(または、前もってリトリーブされたが、もはや有効でない)場合、要求は、640で示すように、特定のルータのためのルータ情報に対する他のペンディング要求と共に維持されてよい。例として、いくつかの実施形態において、特定のルータに対する要求は、キュー(例えば、プライオリティキュー)内に、または、ペンディング要求をそこからサービスのために後に選択し得る、ルータのための他のデータ構造内に、維持または挿入されてよい。しかし、他の実施形態において、要求はまた、他のルータに対する要求と共に維持されてもよく、それゆえ、先の実施例は、限定的であることを意図しない。
要求はその後、様々な実施形態において、650で示すように、要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされるように提供されてよい。プライオリティスキームは、簡単に規定されてよく、粗野な優先順位付けを提供する。例えば、内部クライアントからの要求は、いくつかの実施形態において、プライオリティが高いと考えられてよく、(外部クライアントからの要求が内部クライアント要求の前に受信された場合であっても)外部クライアントからの要求の前に処理するために選択されてよい。反対に、外部クライアントからの要求は、いくつかの実施形態において、内部クライアントからの要求の後に完了されてよい。細分化されたプライオリティスキームは、要求のために判定される、可変のプライオリティスコアまたは値を可能とし得る。それらは広範囲に及んでよく、例えば、外部クライアントからの要求を、各クライアントからの特定のタイプの要求に依存する内部クライアントからの要求の前に、選択させてよい。下記で述べられる図7は、プライオリティスキームに従って要求を選択する更なる実施例を提供する。少なくともいくつかの実施形態において、多数の要求が選択されてよく、要求の単一の変換されたバージョンに結合されてよい。例えば、多数の要求はそれぞれが、同一のルータ情報を要求してもよく、または、要求のためのそれぞれのルータ情報は、単一の変換された要求を特定のルータに送信することによって取得されてもよい。いくつかの実施形態において、ルータのためのプログラマティックインターフェースが1つのタイプのルータから別のタイプへ変化する場合があるで、これらの最適化は、特定のルータに固有のものであってよい。
いったん選択されると、要求は、様々な実施形態において、660で示すように、特定のルータのためのプログラマティックインターフェースに従って、特定の情報に対する要求のバージョンに変換されてよい。例として「GET BGP_STATUS」プラットフォーム独立の要求は、特定のルータのための「ACCESS BGP‐STATUS」ルータ固有の要求に変換されてよい。要求を変換することは、そのうちのいくつかが同一であってもなくてもよい転換されたキーワード、及び、ルータのための特定のプログラマティックインターフェースに適合するのに十分な、他のデータ、シンボル、または構造を有する変換されたバージョンの様々なフィールドをポピュレートすることを含んでよい。
670で示すように、いったん変換されると、要求のバージョンが、特定の情報を取得するために特定のルータに送信されてよい。例として、各ルータは、API要求のためだけに割り当てられる特定のインターフェースを維持してよい。このように、要求は、特定のルータでAPI要求として処理されるために、特定のインターフェースに送信されてよい。
680で示すように、特定のルータ情報は、様々な実施形態において、プログラマティックインターフェースに従って、クライアントにその後に提供されてよい。特定のルータから受信されるルータ情報及び/または他のクエリ結果は、様々なやり方で対処されてよい。いくつかの実施形態において、取得されたルータ情報は、それが取得されたときにクライアントに送信されてよい。いくつかの実施形態において、特定の情報は、図9に関して以下で説明されるように、キューなどのデータ構造において記憶されてよく、要求しているクライアントに選択的または知的に送信されてよい。
図7は、様々な実施形態に従った、プライオリティスキームに従ってサービスされるルータ情報に対する要求を選択するための様々な方法及び技法を示す高レベルのフローチャートである。重要な機能、クライアント(例えば、内部クライアント/プロバイダネットワークのサービス)、または事象のための情報を提供する一定の要求が検出され、迅速に処理される(または、サービスされる、はるかに多くの数の重要性の低い要求を待機させ続けない)ことを確実にするように、上述のように様々なプライオリティスキームが実行されてよい。710で示すように、それぞれのプライオリティ値が、様々な実施形態において、プライオリティスキームに従ってルータに対し要求をペンディングするために判定されてよい。例えば、フロントエンド構成要素(例えば、図2に関して上記で説明されたフロントエンド210)、または要求に対処する他のインターフェースは、例えば、ソース(外部または内部クライアント)、要求のタイプ(緊急の要求または周期的な健全性のチェック)、要求される特定のルータ情報、要求される情報の量、または、要求もしくは要求を提出するクライアントを説明する任意の他の情報に基づいて、特定の要求のプライオリティを、マークし、格付けし、採点し、または、示してよい。同様に、要求は、(例えば、図2におけるワーカー230によって)選択のために評価される際に採点されてもよい。
プライオリティ値を判定することに加えて、いくつかの実施形態において、720で示すように、それぞれのペンディング時間が判定されてよい。タイムスタンプまたは他の標識が、要求が受信されたときとして参照ポイントを提供するように要求に含まれてよく、ペンディング時間が算出されることを可能とする。いくつかの実施形態において、ペンディング時間は、暗に示されてもよく、または、他の要求に関連して内在的に説明されてもよい。例えば、いくつかの実施形態において、要求は、プライオリティキューにおいて維持されてよい。例として、キューはそれ自体が、特定の要求が受信されたときを、当該要求が維持される順番によって示してよい。
候補要求は、様々な実施形態において、730で示すように、最高と判定されたプライオリティ値により選択されてよい。例として、3つの要求が、ペンディング要求の中で最高のプライオリティスコアであり得る同一のプライオリティスコア8を有する場合、当該3つの要求が候補要求として識別されてよい。しかし、スコアが最高の、単一の要求がある場合、そうした単一の要求が、(740で示すようなペンディング時間のいずれの比較も実施することなく)サービスのために選択されてよい。同点またはほぼ同じプライオリティ値の(それゆえ候補要求として選択される)多数の要求について、最長のペンディング時間を有する要求が、740で示すように、サービスのための要求として選択されてよい。例えば、プライオリティキューの最前列に最も近い候補要求は、同一または類似のプライオリティ値を有する他の候補要求よりも先に選択されてよい。
図8は、いくつかの実施形態に従った、プロバイダネットワークにおけるルータに、ルータ情報に対する要求をスロットリングするための様々な方法及び技法を示す、高レベルのフローチャートである。プロバイダネットワークにおけるルータに要求をスロットリングすることは、受信ルータ要求の様々な観点に関して実行されてよい。ルータ固有の観点、クライアント固有の観点、または、さらにはネットワーク全体の観点が、ルータ要求をルータでサービスするレートの、粗野な制御及び細分化された制御の両方を実行するのに利用されてよい。このように、ルータは、効率的または最適な容量でルーティング機能を実施することを可能とし得る。
810で示すように、プロバイダネットワークにおけるルータに送信される、ルータ情報に対する変換された要求は、様々な実施形態において、監視されてよい。例えば、要求の様々なレートまたは総数が、収集され、算出され、または判定されてよい。いくつかの実施形態において、集中された構成要素が、プロバイダネットワークにおけるルータ全てに対する受信要求の数を追跡してよい(例えば、図2におけるスロットリング管理モジュール260)。それゆえ、ルータに対する要求のネットワーク全体の観点が評価されてよい。しかし、いくつかの実施形態において、個々の構成要素(例えば、ワーカー230)が、同様に、特定のルータに送信される要求を監視または追跡してもよい。
いくつかの実施形態において、820で示すように、要求がクライアント固有の閾値を超えるかどうかが判定されてよい。例えば、クライアント固有の閾値は、特定のクライアントによる不正な挙動または要求を制限または防止するために送信されてよい。それゆえ、プロバイダネットワークにおける特定のルータまたはルータのいくつか/全てのいずれかでの、クライアントに対する要求が、追跡及び評価されてよい。(例えば、特定の時間期間内の)要求の特定のレートまたは要求の総数が判定されてよい。クライアントからの要求のレートまたは総数がクライアント固有の閾値を超える場合、820からの肯定的出口により示すように、クライアントからの要求は、830で示すように、スロットリングされてよい。例として、その後に受信される要求は、プライオリティ値がより低いものであってよく、または、時間の特定の期間にわたり検討のために一時中断されてよい。いくつかの実施形態において、要求をスロットリングすることは、要求を維持するルータキューまたは他の構造から、一定の要求をバウンスまたはドロップすることを含んでよい。
いくつかの実施形態において、840で示すように、要求がルータ固有の閾値を超えるかどうかが判定されてよい。例えば、ルータ固有の閾値は、特定のルータが圧倒されて、当該特定のルータの他の機能(例えば、ルーティング)の実施を妨げるのを制限または防止するように送信されてよい。それゆえ、プロバイダネットワークにおける特定のルータで受信される要求が、追跡及び評価されてよい。(例えば、特定の時間期間内の)要求の特定のレートまたは要求の総数が判定されてよい。特定のルータに対する要求のレートまたは総数がルータ固有の閾値を超える場合、840からの肯定的出口により示すように、特定のルータに対する要求が、850で示すように、スロットリングされてよい。例えば、その後に受信された要求はプライオリティ値がより低いものであってよく、または、時間の特定の期間にわたり検討のために一時中断されてよい。いくつかの実施形態において、プライオリティの低い要求は検討から遅延されてよく、他方、プライオリティのより高い要求は、スロットリング遅延をほとんど経験しなくてよい。要求をスロットリングすることは、要求を維持するルータキューまたは他の構造から、一定の要求をバウンスまたはドロップすることを含んでよい。
いくつかの実施形態において、860で示すように、要求がネットワーク全体の閾値を超えるかどうかが判定されてよい。例えば、ネットワーク全体の閾値が、プロバイダネットワークのルータが全体として圧倒されて、ルータでのトラフィック輻輳に起因するプロバイダネットワークのパフォーマンスを妨害するのを制限または防止するように送信されてよい。それゆえ、プロバイダネットワークにおける特定のルータで受信される要求が、追跡及び評価されてよい。(例えば、特定の時間内の)要求の特定のレートまたは要求の総数が、ルータで送信/処理される要求のために判定されてよい。プロバイダネットワークに対する要求のレートまたは総数がネットワーク全体の閾値を超える場合、860からの肯定的出口により示すように、プロバイダネットワークにおけるルータの全てに対する要求が、870に示すように、スロットリングされてよい。例として、その後に受信された要求は、プライオリティ値がより低いものであってよく、または、時間の特定の期間にわたり検討のために一時中断されてよい。いくつかの実施形態において、プライオリティの低い要求は検討から遅延されてよく、他方で、プライオリティのより高い要求は、スロットリング遅延をほとんど経験しなくてよい。要求をスロットリングすることは、要求を維持するルータキューまたは他の構造から、一定の要求をバウンスまたはドロップすることを含んでよい。いくつかの実施形態において、特定のルータのための異なる個々の閾値が、判定及び実施されてよい。例えば、いくつかのルータは、ルータ情報のためのより高い要求負荷を経験する場合がある。これらのルータは、他のルータよりも低い(それゆえより厳密な)、実施されるスロットリング閾値を備えてもよく、またはこれを有してもよい。このように、一定のネットワーク追跡リソースを保護するために、または、全体としてネットワークのルータのパフォーマンスに影響を与える、圧倒されるルータの普及または影響を防止するために、プロバイダネットワークにとって問題となる、または重要なルータが対象とされてよい。
図9は、いくつかの実施形態に従った、クライアントに提供するようにリトリーブされたルータ情報を選択するための方法及び技法を示す高レベルのフローチャートである。上述のように、ルータ情報に対する要求は、プロバイダネットワークのルータを圧倒して、それらそれぞれのルーティング機能のパフォーマンスを妨げないように、また、情報に対するプライオリティの高い要求をサービスするように、様々なプライオリティスキーム及びスロットリング技法の使用に従ったサービスされてよい。同様に、要求の結果をクライアントに提供することは、要求される情報に関するプライオリティまたは必要性がより高いものである要求が、結果をより早く受信するように、達成されてよい。この柔軟性を実現することは、様々なやり方で達成されてよい。例えば、要求の様々なプライオリティのための別々のキューが、クエリの結果のために維持されてよく、その結果、より高いプライオリティキューにおける要求された情報が、迅速に処理されて、要求するクライアントに送信されてよい。
別の実施例において、要求の結果は共に記憶または維持されてよいが、やはり、クライアントに選択的に提供されてよい。これらの結果は、受信された要求を維持することと共に上記で述べられたように、結果のための順序及び結果のためのプライオリティにおいてそれぞれの位置を提供するプライオリティキューまたは他のデータ構造において維持されてよい。いくつかの実施形態において、910で示すように、特定のルータ情報を含むクエリ結果は、ルータデータに対する要求をサービスするためのプライオリティスキームに従って共に維持されるクエリ結果の集まりから選択されてよい。少なくともいくつかの実施形態において、プライオリティスキームは、処理のために要求を選択するのに使用されるものと同一であってよい。例えば、サービスのために迅速に選択される、プライオリティの高い要求は、要求するクライアントに提供されるために、やはり迅速に選択されてよい。ペンディング時間もまた、図7に関して上記で述べられたように、使用されてよい。例えば、2つのクエリ結果が同一のプライオリティ値を有する場合があり、それゆえ、ペンディングしている時間が、最も長く「待機している」クエリ結果におけるルータ情報を送信するのに使用されてよい。いくつかの実施形態において、いくつかのクエリ結果が、プライオリティのより高い要求の代わりに永続的に遅延されないことを確実にするように、様々なメカニズムが実行されてよい。例えば、特定のメカニズムは、時間の一定の閾値を超えたペンディングしている時間を有するクエリ結果のプライオリティ値を増加させてよい。結果のキューはまた、いくつかの実施形態において、個々のルータからの情報を記憶するために、また、単一の応答をクライアントに送信する前に当該情報を共に統合するために、使用されてよい。
920で示すように、いったん選択されると、識別されたクエリ結果が取得されてよい。例えば、クエリ結果を記憶もしくはホストする記憶デバイスまたは他の構成要素への要求が、クエリ結果をリトリーブするために送信されてよい。いったんリトリーブされると、930で示すように、要求されたクエリ結果が含まれたルータ情報は、要求を送信したプログラマティックインターフェースに従って、フォーマット及び送信される。
本明細書において説明される方法は、様々な実施形態において、ハードウェア及びソフトウェアの任意の組合せによって実行されてよい。例えば、一実施形態において、方法は、プロセッサに結合されるコンピュータ可読の記憶媒体上に記憶されるプログラム命令を実行する1つまたは複数のプロセッサを含むコンピュータシステム(例えば、図10におけるようなコンピュータシステム)によって実行されてよい。プログラム命令は、本明細書において説明される機能(例えば、本明細書において説明されるルータデータサービスを実行する様々なサーバ及び他の構成要素の機能)を実行するように構成されてよい。図面に示され、且つ、本明細書において説明される様々な方法は、方法の例示的な実施形態を表す。いずれの方法の順番も変更されてよく、様々な要素が、追加、順序変更、結合、省略、修正等がされてよい。
本開示の実施形態は、次の条項を考慮して説明され得る。
1.プロバイダネットワークであって、
それぞれが、前記プロバイダネットワークへのそれぞれの1つまたは複数の私的な接続を提供するように構成される、複数のルータであって、前記複数のルータの少なくともいくつかが、前記複数のルータの少なくともいくつかの他の1つとは異なる、前記複数のルータと、
前記プロバイダネットワークのためのルータデータサービスを共に実行する、複数のコンピュートノードと、
前記ルータデータサービスであって、
前記プロバイダネットワークのクライアントから、前記複数のルータの特定された1つまたは複数のルータのためのルータ情報に対する要求を受信するように、前記要求が、プログラマティックインターフェースに従ってフォーマットされるものであり、
前記要求を、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に維持するように、
前記複数のルータに対する要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされる前記要求を選択するように、
サービスされる前記要求の前記選択に応答して、
前記ルータ情報に対する前記要求を、前記要求の1つまたは複数のバージョンに変換するように、前記要求の前記1つまたは複数が、前記特定された1つまたは複数のルータのためのそれぞれの1つまたは複数のインターフェースに従ってフォーマットされるものであり、
前記ルータ情報を取得するために、前記要求の前記1つまたは複数のバージョンを、前記特定された1つまたは複数のルータに送信するように、
前記プログラマティックインターフェースに従って、前記ルータ情報を前記クライアントに提供するように、構成される、前記ルータデータサービスとを含む、
前記プロバイダネットワーク。
2.条項1に記載のプロバイダネットワークであって、
複数の異なるクライアントが、前記複数のルータの異なる1つから、ルータ情報に対する複数の要求を送信し、前記ルータデータサービスが、前記複数の要求のそれぞれのために、前記受信すること、前記維持すること、前記選択すること、及び、前記送信することを実施するようにさらに構成され、その結果、前記複数の要求の複数の変換されたバージョンが、前記複数のルータの前記異なる1つに送信され、
前記複数のコンピュートノードが、前記複数のルータへ要求をサービスするために、サービススロットリングマネージャ及び複数のワーカーを実行し、
前記サービススロットリングマネージャが、
前記複数のルータの前記異なる1つに送信される、前記複数の要求の前記複数の変換されたバージョンを監視するように、
前記監視することに少なくとも部分的に基づいて、スロットリング要求閾値を判定するように、
前記スロットリング要求閾値を前記複数のワーカーへ送信するように、構成され、
前記複数のワーカーが、
前記スロットリング要求閾値が超過されないように、その後に受信された要求の変換されたバージョンの、前記複数のルータへの送信をスロットリングするように構成される、
前記プロバイダネットワーク。
3.条項1に記載のプロバイダネットワークであって、さらに、
前記複数のルータのための前もってリトリーブされたルータ情報を維持するように構成される、永続データストアを含み、
前記ルータデータサービスが、さらに、
前記クライアントから、前記特定された1つまたは複数のルータのための他のルータ情報に対する別の要求を受信するように、前記他の要求が前記プログラマティックインターフェースに従ってフォーマットされるものであり、
前記他のルータ情報が、前記永続データストアで、前記前もってリトリーブされたルータ情報において維持されると判定するように、
前記永続データストアにおいて維持される前記他のルータ情報が有効であると判定することに応答して、前記永続データストアで、前記前もってリトリーブされたルータ情報において維持される前記他のルータ情報を、前記クライアントへ送信するように、構成される、
前記プロバイダネットワーク。
4.条項1に記載のプロバイダネットワークであって、前記要求が、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に、プライオリティキューにおいて維持される、前記プロバイダネットワーク。
5.プロバイダネットワークのクライアントから、前記プロバイダネットワークの特定された1つまたは複数のルータからのルータ情報に対する要求を受信することであって、前記要求が、プログラマティックインターフェースに従ってフォーマットされ、前記特定された1つまたは複数のルータが、前記プロバイダネットワークの一部として実行される複数のルータの1つまたは複数であり、前記複数のルータの少なくともいくつかが、前記複数のルータの少なくともいくつかの他のものとは異なる、前記受信することと、
前記ルータ情報を取得するために、前記ルータ情報に対する前記要求の1つまたは複数のバージョンを、前記特定された1つまたは複数のルータに送信することであって、前記要求の前記1つまたは複数のバージョンが、前記特定された1つまたは複数のルータのためのそれぞれの1つまたは複数のインターフェースに従ってフォーマットされる、前記送信することと、
前記プログラマティックインターフェースに従って、前記ルータ情報を前記クライアントに提供することとを、
1つまたは複数のコンピューティングデバイスにより実施することを含む、方法。
6.条項5に記載の方法であって、さらに、
前記要求を、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に維持することと、
前記複数のルータに対する要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされる前記要求を選択することと、を含み、
前記要求の前記1つまたは複数のバージョンの前記送信が、前記要求を選択することに応答して実施される、前記方法。
7.条項6に記載の方法であって、複数の異なるクライアントが、前記複数のルータの異なる1つからルータデータに対する複数の要求を送信し、前記受信すること、前記維持すること、前記選択すること、及び、前記送信することが、前記複数の要求の複数の変換されたバージョンが、前記複数のルータの前記異なる1つに送信されるように、前記複数の要求のそれぞれに対して実施され、前記方法がさらに、
前記複数のルータの前記異なる1つに送信される前記複数の要求の前記複数の変換されたバージョンを監視することと、
前記監視することに少なくとも部分的に基づいて、スロットリング要求閾値が超過されると判定することと、
前記スロットリング要求閾値が超過されると判定することに応答して、前記複数のルータの少なくとも1つに送信される、その後に受信された要求の変換されたバージョンをスロットリングすることと、を含む、前記方法。
8.条項7に記載の方法であって、前記スロットリング要求閾値が、前記複数のクライアントの特定のクライアントに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記特定のクライアントに固有の前記閾値が超過されないように、前記特定のクライアントから受信された要求をスロットリングすることを含む、前記方法。
9.条項7に記載の方法であって、前記スロットリング要求閾値が、前記プロバイダネットワークに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記プロバイダネットワークに固有の前記閾値が超過されないように、前記複数のルータのそれぞれで要求をスロットリングすることを含む、前記方法。
10.条項6に記載の方法であって、サービスされる前記要求を前記選択することが、
前記プライオリティスキームに従って、前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのプライオリティ値を判定することと、
前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのペンディング時間を判定することと、
前記要求、及び、最高のそれぞれのプライオリティ値を有する前記複数の他のペンディング要求のそれぞれの中から、1つまたは複数のペンディング要求を、候補要求として識別することと、
前記1つまたは複数の候補要求の中から、最長のそれぞれのペンディング時間を有する候補要求を選択することであって、前記選択された候補要求が前記要求である、前記選択することと、を含む、前記方法。
11.条項5に記載の方法であって、前記クライアントが、前記プロバイダネットワークに対して外部のクライアントであり、前記要求が、前記他のペンディング要求の1つまたは複数が選択された後に選択され、前記1つまたは複数の他のペンディング要求が、前記プロバイダネットワークに対して内部のクライアントから受信される、前記方法。
12.条項5に記載の方法であって、前記クライアントが、前記プロバイダネットワークに対して内部のクライアントであり、前記要求が、前記他のペンディング要求の1つまたは複数が選択される前に選択され、前記1つまたは複数の他のペンディング要求が、前記プロバイダネットワークに対して外部のクライアントから受信される、前記方法。
13.条項5に記載の方法であって、前記クライアントから、前記特定された1つまたは複数のルータからの他のルータ情報に対する別の要求が受信され、当該要求が、前記プログラマティックインターフェースに従ってフォーマットされるものであり、前記方法がさらに、
前記他のルータ情報が、前もってリトリーブされ、且つ、有効であると判定することと、
前記判定することに応答して、前記他のルータ情報を前記クライアントに提供することと、を含む、前記方法。
14.条項5に記載の方法であって、前記ルータ情報を前記クライアントに前記提供することが、
前記複数のルータに対する要求をサービスするための前記プライオリティスキームに従って、前記ルータ情報を含むクエリ結果を選択することであって、前記クエリ結果が、それぞれのルータ情報を含む複数の他のクエリ結果と共に維持される、前記選択することと、
前記選択されたクエリ結果を取得することと、
前記ルータ情報を前記クライアントへ送信することと、を含む、前記方法。
15.プログラム命令を記憶する非一時的なコンピュータ可読の記憶媒体であって、当該プログラム命令が、複数のコンピューティングデバイスによって実行される場合、前記複数のコンピューティングデバイスに、
プロバイダネットワークのクライアントから、前記プロバイダネットワークの特定された1つまたは複数のルータからのルータ情報に対する要求を受信することであって、前記要求がプログラマティックインターフェースに従ってフォーマットされ、前記特定された1つまたは複数のルータが、前記プロバイダネットワークの一部として実行される複数のルータの1つまたは複数であり、前記複数のルータの少なくともいくつかが、前記複数のルータの少なくともいくつかの他のものとは異なるものである、前記受信することと、
前記ルータ情報に対する前記要求を、前記特定された1つまたは複数のルータのためのそれぞれの1つまたは複数のインターフェースに従ってフォーマットされた前記ルータ情報に対する前記要求の1つまたは複数のバージョンに変換することと、
前記ルータ情報を取得するために、前記要求の前記1つまたは複数のバージョンを、前記特定された1つまたは複数のルータに送信することと、
前記プログラマティックインターフェースに従って、前記ルータ情報を前記クライアントに提供することと、を実行させる、前記非一時的なコンピュータ可読の記憶媒体。
16.条項15に記載の前記非一時的なコンピュータ可読の記憶媒体であって、前記プログラム命令がさらに、前記1つまたは複数のコンピューティングデバイスに、
前記要求を、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に維持すること、
前記複数のルータに対する要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされる前記要求を選択すること、
をさらに実行させ、
前記要求を前記変換すること、及び、前記要求の前記1つまたは複数のバージョンの前記送信することすることが、サービスされる前記要求を選択することに応答して実施される、
前記非一時的なコンピュータ可読の記憶媒体。
17.条項16に記載の前記非一時的なコンピュータ可読の記憶媒体であって、複数の異なるクライアントが、前記複数のルータの異なる1つからルータデータに対する複数の要求を送信し、前記受信すること、前記維持すること、前記選択すること、前記変換すること、及び、前記送信することが、前記複数の要求の複数の変換されたバージョンが前記複数のルータの前記異なる1つに送信されるように、前記複数の要求のそれぞれに対して実施され、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記複数のルータの前記異なる1つに送信される前記複数の要求の前記複数の変換されたバージョンを監視することと、
前記監視することに少なくとも部分的に基づいて、スロットリング要求閾値が超過されると判定することと、
前記スロットリング要求閾値が超過されると判定することに応答して、前記複数のルータの少なくとも1つに送信される、その後に受信された要求の変換されたバージョンをスロットリングすることと、
を実行させる、前記非一時的なコンピュータ可読の記憶媒体。
18.条項17に記載の前記非一時的なコンピュータ可読の記憶媒体であって、前記スロットリング要求閾値が、前記複数のルータの特定のルータに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記特定のルータに固有の前記閾値が超過されないように、前記特定のルータのために受信される要求をスロットリングすることを含む、前記非一時的なコンピュータ可読の記憶媒体。
19.条項16に記載の前記非一時的なコンピュータ可読の記憶媒体であって、サービスされる前記要求を前記選択することにおいて、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記プライオリティスキームに従って、前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのプライオリティ値を判定することと、
前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのペンディング時間を判定することと、
前記要求、及び、最高のそれぞれのプライオリティ値を有する前記複数の他のペンディング要求のそれぞれの中から、1つまたは複数のペンディング要求を候補要求として識別することと、
前記1つまたは複数の候補要求の中から、最長のそれぞれのペンディング時間を有する候補要求を選択することと、をさらに実行させ、
前記選択された候補要求が前記要求である、前記非一時的なコンピュータ可読の記憶媒体。
20.条項15に記載の前記非一時的なコンピュータ可読の記憶媒体であって、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記クライアントから、前記特定された1つまたは複数のルータからの他のルータ情報に対する別の要求を受信することであって、前記他の要求が、前記プログラマティックインターフェースに従ってフォーマットされるものである、前記受信することと、
前記他の要求が不適正なものであると判定することに応答して、前記プログラマティックインターフェースに従ってフォーマットされた前記クライアントにエラー応答を送信することと、
をさらに実行させる、前記非一時的なコンピュータ可読の記憶媒体。
21.条項15に記載の前記非一時的なコンピュータ可読の記憶媒体であって、前記複数のルータが、前記プロバイダネットワークのためのエッジルータとして実行される、前記非一時的なコンピュータ可読の記憶媒体。
22.条項15に記載の前記非一時的なコンピュータ可読の記憶媒体であって、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記クライアントから、前記特定された1つまたは複数のルータからの他のルータ情報に対する別の要求を受信することであって、前記他の要求が、前記プログラマティックインターフェースに従ってフォーマットされるものである、前記受信することと、
前記他のルータ情報が既にリトリーブされ、且つ、有効でないと判定することと、
前記判定することに応答して、前記他の要求のために、前記維持すること、前記選択すること、前記変換すること、前記送信すること、及び、前記提供することを実施することと、
をさらに実行させる、前記非一時的なコンピュータ可読の記憶媒体。
本明細書において説明されるプログラマティックインターフェースに従ってルータ情報を提供する実施形態は、様々な他のデバイスと対話し得る1つまたは複数のコンピュータシステム上で実行されてよい。図10は、様々な実施形態に従った、例示的なコンピュータシステムを示すブロック図である。例えば、コンピュータシステム1000は、様々な実施形態において、ルータデータサービス、永続データストア、及び/またはクライアントのノードを実行するように構成されてよい。コンピュータシステム1000は、これに限定されるのではないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス、アプリケーションサーバ、記憶デバイス、電話機、携帯電話、または、全般に任意のタイプのコンピューティングデバイスを含む、任意の様々なタイプのデバイスであってよい。
コンピュータシステム1000は、入力/出力(I/O)インターフェース1030を介してシステムメモリ1020に結合される1つまたは複数のプロセッサ1010(そのうちのいずれかは、シングルまたはマルチスレッドとし得る多数のコアを含んでよい)を含む。コンピュータシステム1000はさらに、I/Oインターフェース1030に結合されるネットワークインターフェース1040を含む。様々な実施形態において、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステム、または、いくつかのプロセッサ1010(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであってよい。プロセッサ1010は、命令を実行可能な任意の適切なプロセッサであってよい。例えば、様々な実施形態において、プロセッサ1010は、x86、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の適切なISAなどの、任意の種々の命令セットアーキテクチャ(ISA)を実行する、汎用または埋め込みプロセッサであってよい。マルチプロセッサシステムにおいて、プロセッサ1010のそれぞれは一般に、必須ではないが、同一のISAを実行してよい。コンピュータシステム1000はまた、通信ネットワーク(例えば、インターネット、LAN等)を通じて他のシステム及び/または構成要素と通信するための1つまたは複数のネットワーク通信デバイス(例えば、ネットワークインターフェース1040)を含む。例えば、システム1000上で実行されるクライアントアプリケーションは、単一サーバ上で、または、本明細書において説明されるシステムの構成要素の1つまたは複数を実行するサーバのクラスタ上で実行されるサーバアプリケーションと通信するために、ネットワークインターフェース1040を使用してよい。別の実施例において、コンピュータシステム1000上で実行されるサーバアプリケーションのインスタンスは、他のコンピュータシステム(例えば、コンピュータシステム1090)上で実行され得るサーバアプリケーション(または別のサーバアプリケーション)の別のインスタンスと通信するために、ネットワークインターフェース1040を使用してよい。
示される実施形態において、コンピュータシステム1000はまた、1つまたは複数の永続記憶デバイス1060及び/または1つまたは複数のI/Oデバイス1080を含む。様々な実施形態において、永続記憶デバイス1060は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、他の大量記憶デバイス、または任意の他の永続記憶デバイスに対応してよい。コンピュータシステム1000(または、そこで動作する分散アプリケーションもしくはオペレーティングシステム)は、永続記憶デバイス1060において命令及び/またはデータを要望通りに記憶してよく、当該記憶された命令及び/またはデータを必要に応じてリトリーブしてよい。例えば、いくつかの実施形態において、コンピュータシステム1000は、記憶システムサーバノードをホストしてよく、永続ストレージ1060は、そうしたサーバノードに取り付けられるSSDを含んでよい。
コンピュータシステム1000は、プロセッサ(複数可)1010によりアクセス可能な命令及びデータを記憶するように構成される1つまたは複数のシステムメモリ1020を含む。様々な実施形態において、システムメモリ1020は、任意の適切なメモリ技術(例えば、キャッシュ、スタティックランダムアクセスメモリ(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、シンクロナスダイナミックRAM(SDRAM)、ラムバスRAM、EEPROM、不揮発性/フラッシュタイプメモリ、または、任意の他のタイプのメモリの1つまたは複数)を使用して実行されてよい。システムメモリ1020は、本明細書において説明される方法及び技法を実行するために、プロセッサ(複数可)1010により実行可能なプログラム命令1025を含んでよい。様々な実施形態において、プログラム命令1025は、Java(商標)バイトコードなどの、プラットフォームネイティブバイナリの、任意のインタープリタ型言語において、または、C/C++、Java(商標)等などの任意の他の言語において、または、それらの任意の組合せにおいて、暗号化されてよい。例えば、示される実施形態において、プログラム命令1025は、様々な実施形態において、プロバイダネットワークの機能を実行するように実行可能なプログラム命令を含む。いくつかの実施形態において、プログラム命令1025は、多数の別々のクライアント、サーバノード、及び/または他の構成要素を実行してよい。
いくつかの実施形態において、プログラム命令1025は、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、Windows(商標)等などの任意の様々なオペレーティングシステムであってよいオペレーティングシステム(図示せず)を実行するように実行可能な命令を含んでよい。プログラム命令1025のいずれかまたは全てが、コンピュータプログラム製品として、または、そこに記憶された命令を有する非一時的なコンピュータ可読の記憶媒体を含んでよいソフトウェアとして提供されてよく、命令は、様々な実施形態に従って、処理を実施するようにコンピュータシステム(または他の電子デバイス)をプログラムするために使用されてよい。非一時的なコンピュータ可読の記憶媒体は、マシン(例えば、コンピュータ)により判読可能な形(例えば、ソフトウェア、処理アプリケーション)で情報を記憶する任意のメカニズムを含んでよい。概して、非一時的なコンピュータによりアクセス可能な媒体は、例えば、コンピュータシステム1000にI/Oインターフェース1030を介して結合されるディスクまたはDVD/CD‐ROMといった、磁気または光媒体などのコンピュータ可読の記憶媒体またはメモリ媒体を含んでよい。非一時的なコンピュータ可読の記憶媒体は、コンピュータシステム1000のいくつかの実施形態において、システムメモリ1020または別のタイプのメモリとして含まれてよい、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等のなどの任意の揮発性または不揮発性媒体をさらに含んでよい。他の実施形態において、プログラム命令は、ネットワーク及び/または無線リンクなどの通信媒体を介して伝達される光学、音響学、または他の形の伝搬される信号(例えば、搬送波、赤外線信号、デジタル信号等)を使用して伝えられてよく、例えばネットワークインターフェース1040を介して実行されてよい。
いくつかの実施形態において、システムメモリ1020は、本明細書において説明されるように構成され得るデータストア1045を含んでよい。一般に、システムメモリ1020(例えば、システムメモリ1020内のデータストア1045)、永続ストレージ1060、及び/または遠隔ストレージ1070は、データブロック、データブロックのレプリカ、データブロック及び/またはそれらのステータスと関連するメタデータ、コンフィグレーション情報、及び/または本明細書において説明される方法及び技法を実行する際に利用可能な任意の他の情報を記憶してよい。
一実施形態において、I/Oインターフェース1030は、ネットワークインターフェース1040または他の周辺インターフェースを介することを含め、システムにおいて、プロセッサ1010と、システムメモリ1020と、任意の周辺デバイスとの間のI/Oトラフィックを調整するように構成されてよい。いくつかの実施形態において、I/Oインターフェース1030は、1つの構成要素(例えば、システムメモリ1020)からのデータ信号を、別の構成要素(例えば、プロセッサ1010)による使用にとって適切なフォーマットに変換するように、あらゆる必要なプロトコル、タイミングまたは他のデータ変換を実施してよい。いくつかの実施形態において、I/Oインターフェース1030は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス規格またはユニバーサルシリアルバス(USB)規格の変種などの様々なタイプの周辺バスを通して取付けられるデバイスへのサポートを含んでよい。いくつかの実施形態において、I/Oインターフェース1030の機能は、例えばノースブリッジ及びサウスブリッジなどの、2つまたはそれ以上の別々の構成要素に分割されてよい。また、いくつかの実施形態において、システムメモリ1020へのインターフェースなどの、I/Oインターフェース1030の機能のいくつかまたは全てが、プロセッサ1010に直接組み込まれてもよい。
ネットワークインターフェース1040は、例えば、コンピュータシステム1000と、他のコンピュータシステム1090(1つまたは複数の記憶システムサーバノード、データベースエンジンヘッドノード、及び/または本明細書において説明されるデータベースシステムのクライアントを実行し得るもの)などの、ネットワークに接続される他のデバイスとの間で、データが交換されることを可能にするように構成されてよい。加えて、ネットワークインターフェース1040は、コンピュータシステム1000、様々なI/Oデバイス1050及び/または遠隔ストレージ1070の間の通信を可能にするように構成されてよい。入力/出力デバイス1050は、いくつかの実施形態において、1つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、スキャンデバイス、音声もしくは光学認識デバイス、または、1つまたは複数のコンピュータシステム1000によりデータを入力またはリトリーブするのに適切な任意の他のデバイスを含んでよい。多数の入力/出力デバイス1050は、コンピュータシステム1000内にあってもよく、または、コンピュータシステム1000を含む分散システムの様々なノード上に分散されてもよい。いくつかの実施形態において、同様の入力/出力デバイスが、コンピュータシステム1000とは別個であってもよく、ネットワークインターフェース1040を通じてなどの、有線または無線接続を介して、コンピュータシステム1000を含む分散システムの1つまたは複数のノードと対話してもよい。ネットワークインターフェース1040は、一般に、1つまたは複数の無線ネットワーキングプロトコル(例えば、Wi‐Fi/IEEE 802.11、または別の無線ネットワーキング規格)をサポートしてよい。しかし、様々な実施形態において、ネットワークインターフェース1040は、例えば、他のタイプのイーサネット(登録商標)ネットワークなどの任意の適切な有線または無線の一般的なデータネットワークを介する通信をサポートしてよい。さらに、ネットワークインターフェース1040は、ファイバチャンネルSANなどのストレージエリアネットワークを介して、または、任意の他の適切なタイプのネットワーク及び/またはプロトコルを介して、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/電話通信ネットワークを介する通信をサポートしてよい。様々な実施形態において、コンピュータシステム1000は、図10に示したものよりも多い、より少ない、またはそれとは異なる構成要素(例えば、ディスプレイ、ビデオカード、オーディオカード、周辺デバイス、ATMインターフェース、イーサネットインターフェース、フレームリレーインターフェース等などの他のネットワークインターフェース)を含んでよい。
本明細書において説明される分散システムの実施形態のいずれか、またはそれらの構成要素のいずれかが、1つまたは複数のネットワークベースのサービスとして実行されてもよいことが留意される。例えば、コンピューティングサービス内のコンピュートクラスタは、コンピューティングサービス、及び/または、本明細書において説明される分散コンピューティングシステムを用いる他のタイプのサービスを、ネットワークベースのサービスとしてクライアントに提供してよい。いくつかの実施形態において、ネットワークベースのサービスは、ネットワークを介した連携可能なマシン同士の対話をサポートするように設計されるソフトウェア及び/またはハードウェアシステムによって実行されてよい。ネットワークベースのサービスは、Webサービス記述言語(WSDL)などのマシンにより処理可能なフォーマットにおいて記述されるインターフェースを有してよい。他のシステムが、ネットワークベースのサービスのインターフェースの記述により規定される方法でネットワークベースのサービスと対話してもよい。例えば、ネットワークベースのサービスは、他のシステムが求めることのある様々な動作を規定してよく、また、特定のアプリケーションプログラミングインターフェース(API)を規定してよい。他のシステムは、様々な動作を要求する際、このAPIに適合するように期待され得る。
様々な実施形態において、ネットワークベースのサービスは、ネットワークベースのサービス要求と関連するパラメータ及び/またはデータを含むメッセージの使用を通じて、要求または呼び出されてよい。このようなメッセージは、エクステンシブルマークアップ言語(XML)などの特定のマークアップ言語に従ってフォーマットされてもよく、及び/または、Simple Object Access Protocol(SOAP)などのプロトコルを使用してカプセル化されてもよい。ネットワークベースのサービス要求を実施するために、ネットワークベースのサービスのクライアントは、要求を含むメッセージをアセンブルしてよく、また、ハイパーテキスト転送プロトコル(HTTP)などのインターネットベースのアプリケーション層転送プロトコルを使用して、ネットワークベースのサービスに対応するアドレス指定可能なエンドポイント(例えば、ユニフォームリソースロケータ―(URL))にメッセージを伝達してよい。
いくつかの実施形態において、ネットワークベースのサービスは、メッセージベースの技法よりもむしろ、Representational State Transfer(「RESTful」)技法を使用して実行されてもよい。例えば、RESTful技法に従って実行されるネットワークベースのサービスは、SOAPメッセージ内でカプセル化されるよりもむしろ、PUT、GETまたはDELETEなどのHTTP方法内に含まれるパラメータにより呼び出されてもよい。
上記の実施形態はかなり詳細に説明されたが、上記開示がいったん完全に理解されると当業者に明らかになる、非常に多くの変形及び修正が成されてもよい。以下の特許請求の範囲は、全てのそのような修正及び変更を包含するものと解釈され、従って、上記の説明は、限定的な意味ではなく、説明的な意味で考えられることが意図される。

Claims (15)

  1. プロバイダネットワークのクライアントから、少なくとも前記クライアントの前記プロバイダネットワークへの接続を管理または操作するために、前記プロバイダネットワークの特定された1つまたは複数のルータからのルータ情報に対する要求を受信することであって、前記要求が、プログラマティックインターフェースに従ってフォーマットされ、前記特定された1つまたは複数のルータが、前記プロバイダネットワークの一部として実行される複数のルータの1つまたは複数であり、前記複数のルータの少なくとも1つは、前記複数のルータの少なくとも1つとは別々にアクセスされるように構成される、前記要求を受信することと、
    前記ルータ情報を取得するために、前記ルータ情報に対する前記要求の1つまたは複数のバージョンを、前記特定された1つまたは複数のルータに送信することであって、前記要求の前記1つまたは複数のバージョンが、前記特定された1つまたは複数のルータのためのそれぞれの1つまたは複数のインターフェースに従ってフォーマットされる、前記要求の1つまたは複数のバージョンを送信することと、
    前記プログラマティックインターフェースに従って、前記特定された1つまたは複数のルータから提供された前記ルータ情報を前記クライアントに提供することとを、
    1つまたは複数のコンピューティングデバイスにより実施することを含む、方法。
  2. 請求項1に記載の方法であって、さらに、
    前記要求を、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に維持することと、
    前記複数のルータに対する要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされる前記要求を選択することと、を含み、
    前記要求の前記1つまたは複数のバージョンの前記送信が、前記要求を選択することに応答して実施される、方法。
  3. 請求項2に記載の方法であって、複数の異なるクライアントが、前記複数のルータの異なる1つからルータデータに対する複数の要求を送信し、前記受信すること、前記維持すること、前記選択すること、及び、前記送信することが、前記複数の要求の複数の変換されたバージョンが、前記複数のルータの前記異なる1つに送信されるように、前記複数の要求のそれぞれに対して実施され、前記方法がさらに、
    前記複数のルータの前記異なる1つに送信される前記複数の要求の前記複数の変換されたバージョンを監視することと、
    前記監視することに少なくとも部分的に基づいて、スロットリング要求閾値が超過されると判定することと、
    前記スロットリング要求閾値が超過されると判定することに応答して、前記複数のルータの少なくとも1つに送信される、その後に受信された要求の変換されたバージョンをスロットリングすることと、を含む、方法。
  4. 請求項3に記載の方法であって、前記スロットリング要求閾値が、前記複数のクライアントの特定のクライアントに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記特定のクライアントに固有の前記閾値が超過されないように、前記特定のクライアントから受信された要求をスロットリングすることを含む、方法。
  5. 請求項3または4に記載の方法であって、前記スロットリング要求閾値が、前記プロバイダネットワークに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記プロバイダネットワークに固有の前記閾値が超過されないように、前記複数のルータのそれぞれで要求をスロットリングすることを含む、方法。
  6. 請求項2−5のいずれか一項に記載の方法であって、サービスされる前記要求を前記選択することが、
    前記プライオリティスキームに従って、前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのプライオリティ値を判定することと、
    前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのペンディング時間を判定することと、
    前記要求、及び、最高のそれぞれのプライオリティ値を有する前記複数の他のペンディング要求のそれぞれの中から、1つまたは複数のペンディング要求を、候補要求として識別することと、
    1つまたは複数の前記候補要求の中から、最長のそれぞれのペンディング時間を有する候補要求であって前記要求である候補要求を選択することと、を含む、方法。
  7. 請求項1−6のいずれか一項に記載の方法であって、前記クライアントが、前記プロバイダネットワークに対して内部のクライアントであり、前記要求が、のペンディング要求の1つまたは複数が選択される前に選択され、前記1つまたは複数の他のペンディング要求が、前記プロバイダネットワークに対して外部のクライアントから受信される、方法。
  8. 請求項1−7のいずれか一項に記載の方法であって、前記ルータ情報を前記クライアントに前記提供することが、
    前記複数のルータに対する要求をサービスするためのプライオリティスキームに従って、前記ルータ情報を含むクエリ結果を選択することであって、前記クエリ結果が、それぞれのルータ情報を含む複数の他のクエリ結果と共に維持されるように選択することと、
    前記選択されたクエリ結果を取得することと、
    前記ルータ情報を前記クライアントへ送信することと、を含む、方法。
  9. プログラム命令を記憶する1つまたは複数の非一時的なコンピュータ可読の記憶媒体に結合される、1つまたは複数のプロセッサを含むシステムであって、前記プログラム命令は、複数のコンピューティングデバイスにより実行される場合、前記複数のコンピューティングデバイスに、
    プロバイダネットワークのクライアントから、少なくとも前記クライアントの前記プロバイダネットワークへの接続を管理または操作するために、前記プロバイダネットワークの特定された1つまたは複数のルータからのルータ情報に対する要求を受信させ、前記要求がプログラマティックインターフェースに従ってフォーマットされ、前記特定された1つまたは複数のルータが、前記プロバイダネットワークの一部として実行される複数のルータの1つまたは複数であり、前記複数のルータの少なくとも1つは、前記複数のルータの少なくとも1つとは別々にアクセスされるように構成され
    前記ルータ情報に対する前記要求を、前記特定された1つまたは複数のルータのためのそれぞれの1つまたは複数のインターフェースに従ってフォーマットされた前記ルータ情報に対する前記要求の1つまたは複数のバージョンに変換させ、
    前記ルータ情報を取得するために、前記要求の前記1つまたは複数のバージョンを、前記特定された1つまたは複数のルータに送信させ、
    前記プログラマティックインターフェースに従って、前記特定された1つまたは複数のルータから提供された前記ルータ情報を前記クライアントに提供させる、システム。
  10. 請求項9に記載のシステムであって、前記プログラム命令がさらに、1つまたは複数の前記コンピューティングデバイスに、
    前記要求を、前記特定された1つまたは複数のルータのためのルータ情報に対する複数の他のペンディング要求と共に維持させ、
    前記複数のルータに対する要求をサービスするためのプライオリティスキームに少なくとも部分的に基づいて、サービスされる前記要求を選択させ、
    前記要求を前記変換すること、及び、前記要求の前記1つまたは複数のバージョンを前記送信することが、サービスされる前記要求を選択することに応答して実施される、システム。
  11. 請求項10に記載のシステムであって、前記複数のルータの異なる1つからのルータデータに対する要求が、複数の異なるクライアントから受信され、前記受信すること、前記維持すること、前記選択すること、前記変換すること、及び、前記送信することが、前記複数の要求の複数の変換されたバージョンが前記複数のルータの前記異なる1つに送信されるように、前記複数の要求のそれぞれに対して実施され、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
    前記複数のルータの前記異なる1つに送信される前記複数の要求の前記複数の変換されたバージョンを監視させ、
    前記監視することに少なくとも部分的に基づいて、スロットリング要求閾値が超過されると判定させ、
    前記スロットリング要求閾値が超過されると判定することに応答して、前記複数のルータの少なくとも1つに送信される、その後に受信された要求の変換されたバージョンをスロットリングさせる、システム。
  12. 請求項11に記載のシステムであって、前記スロットリング要求閾値が、前記複数のルータの特定のルータに固有の閾値であり、前記その後に受信された要求の変換されたバージョンを前記スロットリングすることが、前記特定のルータに固有の前記閾値が超過されないように、前記特定のルータのために受信される要求をスロットリングすることを含む、システム。
  13. 請求項10−12のいずれか一項に記載のシステムであって、サービスされる前記要求を前記選択することにおいて、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
    前記プライオリティスキームに従って、前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのプライオリティ値を判定させ、
    前記要求、及び、前記特定された1つまたは複数のルータのためのルータ情報に対する前記複数の他のペンディング要求のそれぞれのための、それぞれのペンディング時間を判定させ、
    前記要求、及び、最高のそれぞれのプライオリティ値を有する前記複数の他のペンディング要求のそれぞれの中から、1つまたは複数のペンディング要求を候補要求として識別させ、
    1つまたは複数の前記候補要求の中から、最長のそれぞれのペンディング時間を有する候補要求であって前記要求である候補要求を選択させる、システム。
  14. 請求項9−13のいずれか一項に記載のシステムであって、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
    前記クライアントから、前記特定された1つまたは複数のルータからの他のルータ情報に対する別の要求を受信させ、前記他の要求が、前記プログラマティックインターフェースに従ってフォーマットされるものであり、
    前記他の要求が不適正なものであると判定することに応答して、前記プログラマティックインターフェースに従ってフォーマットされた前記クライアントにエラー応答を送信させる、
    システム。
  15. 請求項9−14のいずれか一項に記載のシステムであって、前記複数のルータが、前記プロバイダネットワークのためのエッジルータとして実行される、システム。
JP2017515027A 2014-05-29 2015-05-29 プログラマティックインターフェースに従ったルータ情報の提供 Active JP6539341B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/290,680 2014-05-29
US14/290,680 US9059941B1 (en) 2014-05-29 2014-05-29 Providing router information according to a programmatic interface
PCT/US2015/033219 WO2015184282A1 (en) 2014-05-29 2015-05-29 Providing router information according to a programmatic interface

Publications (2)

Publication Number Publication Date
JP2017524314A JP2017524314A (ja) 2017-08-24
JP6539341B2 true JP6539341B2 (ja) 2019-07-03

Family

ID=53279990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017515027A Active JP6539341B2 (ja) 2014-05-29 2015-05-29 プログラマティックインターフェースに従ったルータ情報の提供

Country Status (7)

Country Link
US (1) US9059941B1 (ja)
EP (1) EP3149921B1 (ja)
JP (1) JP6539341B2 (ja)
CN (1) CN106464584B (ja)
AU (1) AU2015266790B2 (ja)
CA (1) CA2950210C (ja)
WO (1) WO2015184282A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10455387B2 (en) 2015-05-13 2019-10-22 CyberReef Solutions Inc. Network-based Machine-to-Machine (M2M) private networking system
US10944850B2 (en) * 2018-10-29 2021-03-09 Wandisco, Inc. Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment
US11218381B2 (en) 2019-10-04 2022-01-04 Cisco Technology, Inc. Service tagging optimization for intent-based networking
US11218380B2 (en) 2019-10-04 2022-01-04 Cisco Technology, Inc. Closed loop automation for intent-based networking
US11088928B2 (en) 2019-10-15 2021-08-10 Cisco Technology, Inc. Service aware conditional path monitoring
US11201799B2 (en) 2019-10-15 2021-12-14 Cisco Technology, Inc. Intelligent selection of vantage points for monitoring subservices based on potential impact to services
US10938661B1 (en) 2019-12-05 2021-03-02 Cisco Technology, Inc. Service heatmap-based telemetry feedback loop
US11228507B2 (en) 2019-12-05 2022-01-18 Cisco Technology, Inc. Baselining service-tagged data from subservices of a service for service assurance
CN114095476B (zh) * 2020-07-02 2022-12-13 荣耀终端有限公司 电子设备查询路由器接口的方法、路由器及通信系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3293719B2 (ja) * 1994-09-30 2002-06-17 富士通株式会社 ネットワーク管理システム
FR2758925B1 (fr) * 1997-01-28 1999-04-23 Sextant Avionique Procede et dispositif de routage generique de messages transmis dans des formats et selon des protocoles differents
US7194554B1 (en) * 1998-12-08 2007-03-20 Nomadix, Inc. Systems and methods for providing dynamic network authorization authentication and accounting
US6810427B1 (en) 1999-04-23 2004-10-26 Nortel Networks Limited Router table manager
US7072946B2 (en) * 2001-05-31 2006-07-04 Juniper Networks, Inc. Network router management interface with API invoked via login stream
US20050182675A1 (en) * 2001-11-30 2005-08-18 Alison Huettner System for converting and delivering multiple subscriber data requests to remote subscribers
US8126722B2 (en) * 2001-12-20 2012-02-28 Verizon Business Global Llc Application infrastructure platform (AIP)
JP3801129B2 (ja) * 2002-10-09 2006-07-26 日本電気株式会社 ルータパラメータ設定システム及びその方法
US8036139B2 (en) * 2002-10-28 2011-10-11 Cisco Technology, Inc. Internal BGP downloader
US7886075B2 (en) 2003-05-16 2011-02-08 Cisco Technology, Inc. Arrangement for retrieving routing information for establishing a bidirectional tunnel between a mobile router and a correspondent router
US20040255028A1 (en) * 2003-05-30 2004-12-16 Lucent Technologies Inc. Functional decomposition of a router to support virtual private network (VPN) services
US7499459B1 (en) 2004-02-05 2009-03-03 Cisco Technology, Inc. Partitioned routing information base
US7925729B2 (en) * 2004-12-07 2011-04-12 Cisco Technology, Inc. Network management
US8478849B2 (en) * 2004-12-07 2013-07-02 Pure Networks LLC. Network administration tool
CN101764696B (zh) * 2009-11-27 2012-06-27 福建星网锐捷网络有限公司 分布式路由交换设备及其实现方法
JP5621510B2 (ja) 2010-10-29 2014-11-12 日本電気株式会社 モバイルルータ情報管理サーバ、モバイルルータ、モバイルルータネットワーク、及びこれらの通信方法
US8724642B2 (en) * 2011-11-29 2014-05-13 Amazon Technologies, Inc. Interfaces to manage direct network peerings
JP2014534789A (ja) * 2011-11-29 2014-12-18 アマゾン・テクノロジーズ・インコーポレーテッド 直接ネットワークピアリングを管理するためのインターフェース
US9215131B2 (en) * 2012-06-29 2015-12-15 Cisco Technology, Inc. Methods for exchanging network management messages using UDP over HTTP protocol
CN103415062B (zh) * 2013-07-17 2016-08-10 北京创毅讯联科技股份有限公司 一种网络连接装置、无线路由器和网络连接方法

Also Published As

Publication number Publication date
JP2017524314A (ja) 2017-08-24
CN106464584B (zh) 2019-12-06
CA2950210A1 (en) 2015-12-03
CN106464584A (zh) 2017-02-22
EP3149921A1 (en) 2017-04-05
WO2015184282A1 (en) 2015-12-03
US9059941B1 (en) 2015-06-16
EP3149921B1 (en) 2022-10-26
AU2015266790B2 (en) 2017-12-14
AU2015266790A1 (en) 2016-12-15
CA2950210C (en) 2020-05-12

Similar Documents

Publication Publication Date Title
JP6539341B2 (ja) プログラマティックインターフェースに従ったルータ情報の提供
US10657061B1 (en) Resource distribution using attributes of versioned hash rings
Han et al. Evaluating blockchains for IoT
US20220058042A1 (en) Intent-based telemetry collection service
US10320891B2 (en) Node selection for message redistribution in an integrated application-aware load balancer incorporated within a distributed-service-application-controlled distributed computer system
US9276864B1 (en) Dynamic network traffic throttling
US9647904B2 (en) Customer-directed networking limits in distributed systems
JP2018088293A (ja) 単一テナント及び複数テナント環境を提供するデータベースシステム
US8838792B2 (en) Identity provider instance discovery
US9350682B1 (en) Compute instance migrations across availability zones of a provider network
CN105683918B (zh) 分布式系统中的集中式联网配置
US20120233315A1 (en) Systems and methods for sizing resources in a cloud-based environment
US9912682B2 (en) Aggregation of network traffic source behavior data across network-based endpoints
JP2007518169A (ja) 準最適な最適とはいえないグリッド環境内におけるアプリケーションの動作の維持
US10567492B1 (en) Methods for load balancing in a federated identity environment and devices thereof
CN112134741A (zh) 分布式系统中的客户导向的联网限制
US9292466B1 (en) Traffic control for prioritized virtual machines
US10341176B2 (en) System and method for network provisioning
US10785056B1 (en) Sharing a subnet of a logically isolated network between client accounts of a provider network
Moreno‐Vozmediano et al. Elastic management of web server clusters on distributed virtual infrastructures
Łaskawiec et al. New solutions for exposing clustered applications deployed in the cloud
US11533308B2 (en) Systems and methods for supporting unauthenticated post requests through a reverse proxy enabled for authentication
US10505792B1 (en) Methods for facilitating network traffic analytics and devices thereof
JP5823919B2 (ja) 分散実行システム、方法、装置およびプログラム
Kimmatkar et al. Applications sharing using binding server for distributed environment

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190607

R150 Certificate of patent or registration of utility model

Ref document number: 6539341

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250