(57)【要約】  ネットワークデータをデータストアにオフロードするためのシステム、方法、及びデバイス。システムは、ルーティングチップハードウェアと、ルーティングチップハードウェアと通信する非同期オブジェクトマネージャとを含む。非同期オブジェクトマネージャは、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能である。命令は、１以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。命令は、複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することを含む。命令は、１以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。命令は、１以上の依存関係が解決されているかを判定することを含む。命令は、１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、複数のオブジェクトの１以上をアプリケーションに提供することを含む。【選択図】  図７
2021535693.tif 000002
【特許請求の範囲】
【請求項１】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な非同期オブジェクトマネージャとを備えるシステムであって、
前記命令は、
１以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することと、
前記１以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記１以上の依存関係が解決されているかを判定することと、
前記１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの１以上を前記アプリケーションに提供することと、
を含むことを特徴とするシステム。
【請求項２】
前記非同期オブジェクトマネージャは、状態マシンを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記非同期オブジェクトマネージャは、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記１以上のプロデューサは、アプリケーション、プロセス、スレッド、又は機能の１以上を含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記命令は、更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージを前記ルーティングチップハードウェアに提供することを含むことを特徴とする請求項１に記載のシステム。
【請求項６】
更に、前記非同期オブジェクトマネージャ及び前記ルーティングチップハードウェアと通信するデータプレーンアダプテーションレイヤ（ＤＰＡＬ）を備え、前記非同期オブジェクトマネージャのための前記命令は、更に、
第１の場所から最終的な宛先に送信されるメッセージのためのルートを作成するためのメッセージを前記ＤＰＡＬから受信することと、
前記メッセージのためのルートを作成することと、
前記ＤＰＡＬへのルートを提供することと、
を含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記命令は、更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第１のルートがオフラインであるという指示情報を受信することと、
前記第１のルートに関連する第１のインターフェーズリンクを識別することと、
前記第１のルートに関連付ける置換用インターフェーズリンクを識別することと、
前記ルーティングチップハードウェアに、前記第１のルートが、前記第１のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記非同期オブジェクトマネージャは、第１のプロデューサが、ネクストホップの第２のプロデューサに直接メッセージを提供する代わりに、前記非同期オブジェクトマネージャにメッセージを提供する手段を提供することを特徴とする請求項１に記載のシステム。
【請求項９】
前記非同期オブジェクトマネージャは、スイッチ又はルータ上で動作する互換性を有することを特徴とする請求項１に記載のシステム。
【請求項１０】
前記命令は、更に、
１以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、
前記１以上の依存関係に基づいて前記削除シーケンスを並べ替えることと、
を含むことを特徴とする請求項１に記載のシステム。
【請求項１１】
非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な１以上のプロセッサであって、
前記命令は、
１以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することと、
前記１以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記１以上の依存関係が解決されているかを判定することと、
前記１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの１以上を前記アプリケーションに提供することと、
を含む１以上のプロセッサ。
【請求項１２】
前記命令は、更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含むことを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１３】
前記命令は、更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第１のルートがオフラインであるという指示情報を受信することと、
前記第１のルートに関連する第１のインターフェーズリンクを識別することと、
前記第１のルートに関連付ける置換用インターフェーズリンクを識別することと、
ルーティングチップハードウェアに、前記第１のルートが、前記第１のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１４】
前記命令は、更に、第１のプロデューサが、ネクストホップの第２のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供することを含むことを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１５】
前記１以上のプロセッサのための命令は、スイッチ又はルータ上で動作する互換性を有することを特徴とする請求項１１に記載の１以上のプロセッサ。
【請求項１６】
ネットワーク環境においてデータストレージをオフロードする方法であって、
１以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することと、
前記１以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記１以上の依存関係が解決されているかを判定することと、
前記１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの１以上を前記アプリケーションに提供することと、
を含むことを特徴とする方法。
【請求項１７】
更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記非同期オブジェクトマネージャは、状態マシンを含み、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤに位置することを特徴とする請求項１６に記載の方法。
【請求項１９】
更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第１のルートがオフラインであるという指示情報を受信することと、
前記第１のルートに関連する第１のインターフェーズリンクを識別することと、
前記第１のルートに関連付ける置換用インターフェーズリンクを識別することと、
ルーティングチップハードウェアに、前記第１のルートが、前記第１のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
更に、
１以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、
前記１以上の依存関係に基づいて前記削除シーケンスを並べ替えることと、
を含むことを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本出願は、２０１８年８月２３日に出願された米国仮特許出願第６２／７２２，００３号「DATABASE SYSTEMS METHODS AND DEVICES」に対する優先権を主張するものであり、この文献は、次の例外を除き、これに限定されるものではないが、以下に具体的に記載される部分を含む全体が参照により本明細書に援用される。前記出願の何れかの部分が本出願と矛盾する場合、本出願の内容が前記出願に優先される。
【０００２】
本開示は、コンピューティングネットワークに関し、特に、ネットワーク環境における情報回復コンフリクトの解決に関する。
【背景技術】
【０００３】
ネットワークコンピューティングとは、複数のコンピュータ又はノードが連携し、ネットワークを介して相互に通信するための手段である。これには、ワイドエリアネットワーク（wide area network：ＷＡＮ）とローカルエリアネットワーク（local area network：ＬＡＮ）とがある。ワイドエリアネットワークとローカルエリアネットワークは、何れも、コンピュータ間の相互接続を可能にする。ローカルエリアネットワークは、通常、家庭、ビジネス、学校等、より小規模でローカライズされたネットワークに使用される。ワイドエリアネットワークは、都市等の広域をカバーし、異なる国のコンピュータを接続することもできる。通常、ローカルエリアネットワークは、ワイドエリアネットワークよりも高速で安全であるが、ワイドエリアネットワークを使用すると広範囲の接続が可能になる。通常、ローカルエリアネットワークは、展開されている組織内で所有、制御、及び管理され、一方、ワイドエリアネットワークでは、通常、パブリックインターネット経由又は電気通信プロバイダによって確立されたプライベート接続を介して、構成要素である２以上のローカルエリアネットワークを接続する必要がある。
【０００４】
ローカルエリアネットワークとワイドエリアネットワークによって、コンピュータを相互に接続し、データやその他の情報を転送できる。ローカルエリアネットワーク及びワイドエリアネットワークの何れにおいても、ある演算インスタンスから別の演算インスタンスにデータを渡すパスを判定する手段が必要である。これは、ルーティングとも呼ばれる。ルーティングとは、ネットワーク内で、複数のネットワーク間で、又は複数のネットワークに亘って、トラフィックのパスを選択するプロセスである。ルーティングプロセスは、通常、様々なネットワーク宛先へのルートの記録を保持するルーティングテーブルに基づいて、転送を指示する。ルーティングテーブルは、管理者が指定してもよく、ネットワークトラフィックを監視して学習してもよく、ルーティングプロトコルの支援を受けて構築してもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
幾つかのネットワークルーティング動作は、複数の異なるプロデューサによって生成された情報オブジェクトの送信を含む。これらのオブジェクトは、受信側アプリケーションがオブジェクトを適切に処理できるように、特定の順序で送信する必要がある場合がある。しかしながら、複数の異なるプロデューサが存在する場合、オブジェクトを正しい順序で送信することが難しい場合がある。具体的には、分散型ネットワークオペレーティングシステム（network operating system：ＮＯＳ）においては、転送情報オブジェクトが異なるプロデューサによって生成される。転送オブジェクトは、互いに依存する傾向があり、プログラミングフローは、これらの依存関係を考慮する必要がある。オブジェクトは、ハーモナイズされ、基礎となるデータプレーンに規則的にプログラムされる必要がある。従来の手法の１つとして、異なるプロデューサを互いに同期させ、複数のプロデューサに亘ってオブジェクトを正しい順序でプッシュダウンする手法がある。この手法には、多くの欠点がある。この手法では、プロセス間の同期が緊密になり、緊密にカップリングされた分散ＮＯＳが作成される傾向がある。ＮＯＳが異なるマシンに亘って分散されている場合や、ＮＯＳのコンポーネントがクラウドベースのネットワーク環境で動作している場合には、緊密な同期によって多くの問題が発生する可能性がある。
【課題を解決するための手段】
【０００６】
以上の観点から、ここでは、ネットワークコンピューティング動作を改善し、非同期オブジェクトマネージャがネットワーク環境で情報オブジェクトを受信し、並べ替えるためのシステム、方法、及びデバイスを開示する。
【０００７】
本開示の非限定的及び非包括的な実施形態は、以下の図を参照して説明され、これらの図において、同一の参照符号は、特段の指定がない限り、全ての図を通して同一の部分を指す。以下の説明及び添付の図面を参照することにより、本開示の利点がより明瞭に理解される。
【図面の簡単な説明】
【０００８】
【図１】インターネットを介して通信するネットワーク化されたデバイスのシステムの概略図である。
【図２】非同期オブジェクトマネージャによって管理可能な複数の依存関係を有するオブジェクト階層の概略図である。
【図３】非同期的にオブジェクトを受信する順序の一例の概略図である。
【図４】非同期オブジェクトマネージャによって受信されたオブジェクトの並べ替えの一例の概略図である。
【図５】削除シーケンスの並べ替えの一例の概略図である。
【図６】ネットワーキングデバイスによって実現される通信の概略図である。
【図７】ハードウェアと、ハードウェア動作のための命令を提供するソフトウェアスタックとを含む例示的なネットワーキングデバイスの概略図である。
【図８】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
【図９】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
【図１０】コンピュータネットワークを介して送信されるオブジェクトを受信し及び並べ替える方法の概略的フローチャートである。
【図１１】ネットワークコンピューティング環境におけるネットワーキングデバイスの動作を改善するための方法の概略的フローチャートである。
【図１２】例示的な演算デバイスの構成要素を示す概略図である。
【発明を実施するための形態】
【０００９】
ここでは、ネットワークコンピューティング環境における情報ルーティングを改善するためのシステム、方法、及びデバイスを開示する。本開示の一実施形態は、異なる制御プレーン情報のライフサイクルを追跡するように構成された非同期オブジェクトマネージャである。非同期オブジェクトマネージャは、ネットワークルーティング環境に配置でき、スイッチ又はルータ等のネットワーキングデバイスの動作を制御するためのソフトウェアスタックに含めることができる。
【００１０】
コンピュータネットワーク環境では、スイッチ又はルータ等のネットワーキングデバイスを使用して、１つの宛先から最終的な宛先に情報を送信できる。一実施形態では、データパッケージ及びメッセージは、個人の自宅内のコンピュータ等の第１の場所で生成してもよい。データパッケージ及びメッセージは、個人がウェブブラウザとインタラクトし、インターネットを介してアクセス可能なリモートサーバに情報を要求し又は情報を提供することによって生成できる。例えば、データパッケージ及びメッセージは、インターネットに接続されたウェブページ上でアクセス可能なフォームに個人が入力した情報であってもよい。データパッケージ及びメッセージは、個人のコンピュータから地理的に非常に離れた場所にあるリモートサーバに送信する必要がある場合がある。個人の自宅のルータとリモートサーバの間では、直接通信が行われていない可能性が高い。したがって、データパッケージ及びメッセージは、リモートサーバの最終的な宛先に到達するまでに、異なるネットワーキングデバイスを「ホッピング」して移動する必要がある。個人の自宅のルータは、インターネットに接続された複数の異なるデバイスを介してデータパッケージ及びメッセージを送信し、データパッケージ及びメッセージがリモートサーバの最終宛先に到達するまでのルートを判定する必要がある。
【００１１】
第１の場所から最終的な宛先への最良のパスを判定し、データパッケージ及びメッセージを次の宛先に転送するプロセスは、スイッチ又はルータ等のネットワーキングデバイスによって実行される重要な機能である。ここでは、ネットワーキングデバイスの動作を改善するためのシステム、方法、及びデバイスを開示する。本開示の一実施形態は、スイッチ又はルータのルーティングチップハードウェア上で動作するソフトウェアスタックに含まれる。ソフトウェアスタックの一部は、ここで説明する非同期オブジェクトマネージャである。非同期オブジェクトマネージャは、ネットワークルーティング環境で多くの利点を実現する。まず、非同期オブジェクトマネージャによって実行される動作のために、メッセージのプロデューサが互いに対話する必要がなくなり、これに代えて、非同期オブジェクトマネージャによって組織化されるメッセージを送信できる。更に、非同期オブジェクトマネージャは、異なるオブジェクト間の関係（relationships）と依存関係（dependencies）を表現する手段を提供する。更に、非同期オブジェクトマネージャ内の状態マシンは、非同期オブジェクトマネージャが、ソフトウェアスタックの異なる部分に命令を発行する前に、全ての必要なオブジェクトが到着するのを待機することを可能にする。
【００１２】
一実施形態では、非同期オブジェクトマネージャは、ルータ又はスイッチ等のネットワーキングデバイス内のルーティングチップハードウェアの上に位置し、これを管理するソフトウェアである。特に、非同期オブジェクトマネージャは、ルータ又はスイッチにおいて、ソフトウェア言語を変更することなく使用できる。一実施形態では、他のソフトウェアスタックと組み合わせて非同期オブジェクトマネージャを使用することによって、スイッチをルータに又はその逆に変換できる。
【００１３】
非同期オブジェクトマネージャは、コンピュータネットワークから情報を収集し、ルーティングチップハードウェアによってプログラム可能な形式で情報を整理（digest）する。非同期オブジェクトマネージャは、ルーティングチップハードウェアによってパッケージ転送機能を実行させる。非同期オブジェクトマネージャは、ネットワーキングデバイス上で動作するソフトウェアスタックの最下位レイヤである。非同期オブジェクトマネージャは、基礎となるルーティングチップハードウェアとのインタラクション及びアプリケーションプログラムインタフェース（ＡＰＩ）とのインタラクションを担う。
【００１４】
非同期オブジェクトマネージャは、データプレーンアダプテーションレイヤ（data plane adaptation layer：ＤＰＡＬ）と連携して動作してもよい。ＤＰＡＬは、複数のクライアントを有することがあり、異なるクライアントからの異なる情報を待つ必要がある場合がある。オブジェクトが特定の順序で配置されていない限り、ＤＰＡＬはその機能を実行できない。一実施形態では、非同期オブジェクトマネージャの主なタスクは、オブジェクトがＤＰＡＬによって処理されるようにオブジェクトを並べ替えることである。非同期オブジェクトマネージャは、ＤＰＡＬのコンテキスト外で使用でき、レイヤ３ネットワークの最上位にレイヤ化されたセグメントを構築するためのＶＰＮソフトウェア等として適用できる。
【００１５】
一実施形態では、非同期オブジェクトマネージャは、状態マシンである。非同期オブジェクトマネージャは、定義済みパラメータの条件内で特定の状態を構築するように設計されている。非同期オブジェクトマネージャは、情報パッケージを管理するのではなく、プログラミング情報を搬送するメッセージを再編成するように構成してもよい。一例では、非同期オブジェクトマネージャは、例えば、インターフェーズ（interphase）ＡをインターフェーズＢに転送する必要があることを、基礎となるルーティングチップハードウェアに伝えるように構成される。
【００１６】
一実施形態では、非同期オブジェクトマネージャは、ＤＰＡＬとインタラクトし、メッセージを第１の場所から最終的な宛先に転送するためのルートをＤＰＡＬに提供する。一例では、ＤＰＡＬは、複数の通信チャネルを介してメッセージを受信できる。ＤＰＡＬは、非同期オブジェクトマネージャにクエリを発し、メッセージを送信するルートを要求できる。非同期オブジェクトマネージャは、ルートを作成し、ルートを記録し、ＤＰＡＬへのルートを提供する。非同期オブジェクトマネージャは、異なるオブジェクト間の関係を表現するという点で他に類のないものである。非同期オブジェクトマネージャ内部に組み込まれた状態マシンを使用することにより、非同期オブジェクトマネージャは、ＤＰＡＬへのルートを発行し又はオブジェクトに変更を加える前に、全てのオブジェクトの到着を待機することができる。非同期オブジェクトマネージャを使用することにより、オブジェクトプロデューサが互いに通信する必要がなくなる。
【００１７】
本開示の理解を深めるために、多数のネットワーキング演算デバイス及びプロトコルの幾つかを説明する。
【００１８】
ＢＧＰインスタンスは、ネットワーク内で情報をルーティングするためのデバイスである。ＢＧＰインスタンスは、ルートリフレクタ機器（route reflector appliance）の形式で実現してもよい。ＢＧＰインスタンスは、スイッチ、ルータ、又はスイッチ上のＢＧＰスピーカで実行してもよい。高レベルでは、ＢＧＰインスタンスは、プレフィックスについて学習した全てのパスを最適パスコントローラ（best path controller）に送信する。最適パスコントローラは、これらのパスの中から最適パスのセットを応答する。最適パスコントローラは、任意のパスのネクストホップ及び属性を変更することが許可されている。最適パスを受信すると、ＢＧＰインスタンスは、ローカルルーティング情報ベース（Routing Information Base：ＲＩＢ）を更新し、最適パスをネイバ（neighbors）にアドバタイズ（advertise）する。
【００１９】
スイッチ（スイッチングハブ、ブリッジングハブ、又はＭＡＣブリッジとも呼ばれる。）は、ネットワークを作成する。殆どの内部ネットワークは、建物又はキャンパス内のコンピュータ、プリンタ、電話機、カメラ、照明、及びサーバを接続するためにスイッチを使用する。スイッチは、ネットワークに接続されたデバイスが相互に効率的に通信できるようにするコントローラとして機能する。スイッチは、パケットスイッチングを使用してコンピュータネットワーク上のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。ネットワークスイッチは、ハードウェアアドレスを使用して、開放型システム間相互接続（Open Systems Interconnection：ＯＳＩ）モデルのデータリンクレイヤ（レイヤ２）でデータを処理及び転送するマルチポートネットワークブリッジである。一部のスイッチは、ルーティング機能を追加で組み込むことにより、ネットワークレイヤ（レイヤ３）でデータを処理することもできる。このようなスイッチは、一般にレイヤ３スイッチ又はマルチレイヤスイッチと呼ばれている。
【００２０】
ルータは、ネットワークを接続する。スイッチ及びルータは、類似する機能を実行するが、ネットワーク上で実行する機能はそれぞれ異なる。ルータは、コンピュータネットワーク間でデータパケットを転送するネットワークデバイスである。ルータは、インターネット上でトラフィックダイレクティング機能（traffic directing function）を実行する。ウェブページ、電子メール、又はその他の形式の情報等、インターネットを介して送信されるデータは、データパケットの形式で送信される。パケットは、通常、インターネットワーク（例えばインターネット）を構成するネットワークを介してあるルータから別のルータに転送されて、最終的に宛先ノードに到達する。ルータは、異なるネットワークからの複数のデータラインに接続されている。データパケットがラインの１つに到着すると、ルータは、パケット内のネットワークアドレス情報を読み取り、最終的な宛先を判定する。次に、ルータは、ルータのルーティングテーブル又はルーティングポリシの情報を使用して、行程上の次のネットワークにパケットを送信する。ＢＧＰスピーカは、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）がイネーブルにされているルータである。
【００２１】
ルーティングテーブル又はルーティング情報ベース（ＲＩＢ）は、ルータ又はネットワークコンピュータに格納されているデータテーブルであり、特定のネットワーク宛先へのルートをリストするものである。ルーティングテーブルには、距離、重み等のルートのメトリックが含まれる場合がある。ルーティングテーブルには、それが格納されているルータの直近のネットワークのトポロジに関する情報が含まれる。ルーティングテーブルの構築は、ルーティングプロトコルの主要な目的である。スタティックルートは、非自動手段によってルーティングテーブルに作成されるエントリであり、何らかのネットワークトポロジディスカバリ手順の結果ではなく、固定されている。ルーティングテーブルは、ネットワークＩＤ、メトリック、及びネクストホップのフィールドを含む、少なくとも３つの情報フィールドを含むことができる。ネットワークＩＤは、宛先サブネットである。メトリックは、パケットが送信されるパスのルーティングメトリックである。ルートは、メトリックが最小のゲートウェイの方向に進む。ネクストホップとは、パケットが最終宛先に送信されるまでの過程における次のステーションのアドレスである。ルーティングテーブルは、更に、ルートに関連付けられたサービス品質、ルートに関連付けられたフィルタリング基準リストへのリンク、イーサネットカードのインタフェース等を含むことができる。
【００２２】
ルーティングテーブルの概念を説明する目的のために、ルーティングテーブルは、パッケージを送達するために使用される地図に見立てることができる。ルーティングテーブルは、パッケージを最終的な宛先に配信するために使用される地図に似ている。ノードがネットワーク上の別のノードにデータを送信する必要がある場合、ノードはまずデータの送信先を認識する必要がある。ノードが宛先ノードに直接接続できない場合、ノードは、宛先ノードへの適切なルートに沿って他のノードにデータを送信する必要がある。殆どのノードは、どのルートが機能するかを判断することを試みることはない。これに代えて、ノードは、ＬＡＮ内のゲートウェイにＩＰパケットを送信し、ゲートウェイが、データを正しい宛先にどのようにルーティングするかを決定する。各ゲートウェイは、様々なデータパッケージを配信する方法を追跡する必要があり、そのためにルーティングテーブルを使用する。ルーティングテーブルは、地図のようにパスを追跡し、これらのパスを使用してトラフィックをどのように転送するかを判定するためのデータベースである。ゲートウェイは、情報を要求する他のノードとルーティングテーブルの内容を共有することもできる。
【００２３】
ホップバイホップ（hop-by-hop）ルーティングの場合、各ルーティングテーブルには、全ての到達可能な宛先について、その宛先へのパスに沿った次のデバイスのアドレス、すなわち、ネクストホップがリストされる。ルーティングテーブルが一貫していると仮定すれば、パケットを宛先のネクストホップにリレーするアルゴリズムは、ネットワーク内の任意の場所にデータを配信するのに十分である。ホップバイホップは、ＩＰインターネットワークレイヤ及び開放型システム間相互接続（ＯＳＩ）モデルの特徴の一つである。
【００２４】
開放型システム間相互接続（ＯＳＩ）モデルは、基礎となる内部構造及び技術に関係なく、コンピューティングシステムの通信機能を特徴付け、標準化する概念モデルである。ＯＳＩモデルの目標は、多様な通信システムと標準通信プロトコルとの相互運用性である。ＯＳＩモデルは、通信システムを複数の抽象レイヤに分割する。レイヤは、上位のレイヤにサービスを提供し、下位のレイヤからサービスを提供される。例えば、ネットワークに亘って無エラー通信（error-free communication）を提供するレイヤは、上位のアプリケーションが必要とするパスを提供すると共に、次の下位レイヤを呼び出して、そのパスの内容を構成するパケットを送受信する。同じレイヤにある２つのインスタンスは、そのレイヤで水平接続によって接続されているものとして可視化される。通信プロトコルは、あるホストのエンティティが、別のホストの同じレイヤの対応するエンティティとインタラクションすることを可能にする。ＯＳＩモデルのようなサービス定義は、（Ｎ−１）レイヤによって（Ｎ）レイヤに提供される機能を抽象的に記述し、ここで、Ｎは、ローカルホストで動作するプロトコルレイヤの１つである。
【００２５】
ルート制御は、インターネット接続性の向上、帯域幅コストの削減、及びネットワーク間の全体的な動作の削減を目的としたネットワーク管理の一種である。一部のルート制御サービスは、ハードウェアベース及びソフトウェアベースの一連の製品及びサービスを含み、これらは、連携して全体的なインターネットパフォーマンスを向上させ、利用可能なインターネット帯域幅を最小限のコストで微調整（finetune）する。ネットワーク又は自律システムが複数のプロバイダからインターネット帯域幅を調達するシナリオでは、ルート制御を成功させることができる。ルート制御は、データ伝送のための最適なルートの選択を援助できる。
【００２６】
一部のネットワーク通信システムは、数千の処理ノードを有する大規模な企業レベルのネットワークである。数千もの処理ノードが複数のインターネットサービスプロバイダ（Internet Service Provider：ＩＳＰ）からの帯域幅を共有し、大量のインターネットトラフィックを処理できる。このようなシステムは、非常に複雑になる可能性があり、許容できるインターネットパフォーマンスを得るために適切に構成する必要がある。システムが最適なデータ伝送のために適切に構成されていないと、インターネットアクセスの速度が低下し、システムの帯域幅消費及びトラフィックが増大する可能性がある。この問題に対し、一連のサービスを実装することによって、これらの懸念を排除又は軽減できる。この一連のサービスは、ルーティング制御とも呼ばれる。
【００２７】
ルーティング制御メカニズムの一実施形態は、ハードウェアとソフトウェアとから構成される。ルーティング制御メカニズムは、インターネットサービスプロバイダ（ＩＳＰ）との接続を介して全ての発信トラフィック（outgoing traffic）を監視する。ルーティング制御メカニズムは、データの効率的な伝送のための最適パスの選択を支援する。ルーティング制御メカニズムは、全てのＩＳＰの性能及び効率を計算し、適用可能な領域において最適に動作したＩＳＰのみを選択できる。ルート制御デバイスは、コスト、パフォーマンス、及び帯域幅に関する定義済みのパラメータに従って構成できる。
【００２８】
データ伝送のための最適パスを判定するための公知のアルゴリズムは、ボーダゲートウェイプロトコル（Border Gateway Protocol：ＢＧＰ）と呼ばれる。ＢＧＰは、インターネット上の自律システムのルーティング情報を提供するパスベクトル（path-vector）プロトコルである。ＢＧＰが正しく構成されていないと、サーバの利用可能性及び安全性に問題が発生する可能性がある。更に、攻撃者は、ＢＧＰルート情報を変更することにより、トラフィックの大規模なブロックをリダイレクトして、トラフィックが目的の宛先に到達する前に、トラフィックを特定のルータに到達させることができる。ＢＧＰ最適パスアルゴリズムを実装することによって、トラフィック転送用のインターネットプロトコル（Internet Protocol：ＩＰ）ルーティングテーブルにインストールする最適パスを判定できる。ＢＧＰルータは、同じ宛先への複数のパスを受信するように構成できる。
【００２９】
ＢＧＰ最適パスアルゴリズムは、最初の有効なパスを現在の最適パスとして割り当てる。ＢＧＰ最適パスアルゴリズムは、ＢＧＰが有効パスのリストの最後に到達するまで、リスト内の次のパスと最適パスを比較する。このリストは、最適パスを判定するために使用される規則を提供する。例えば、リストは、重みが最も高いパスの優先、ローカル優先度がないパスの優先、ネットワーク又はアグリゲーションＢＧＰによってローカルに発生したパスの優先、最短パスの優先、最小のマルチエグジットディスクリミネータ（multi-exit discriminator）を有するパスの優先等の指示情報を含むことができる。ＢＧＰ最適パス選択プロセスは、カスタマイズできる。
【００３０】
ＢＧＰルーティングのコンテキストでは、各ルーティングドメインは、自律システム（autonomous system：ＡＳ）と呼ばれる。ＢＧＰは、２つのルーティングドメインを接続するためのインターネット経由のパスの選択を支援する。ＢＧＰは、通常、最短ＡＳパスと呼ばれる、最小数の自律システムを通過するルートを選択する。一実施形態では、一旦ＢＧＰが有効にされると、ルータは、ＢＧＰネイバからインターネットルートのリストをプルし、ここで、ＢＧＰネイバは、ＩＳＰであってもよい。次に、ＢＧＰは、リストを精査して、最も短いＡＳパスを有するルートを発見する。これらのルートは、ルータのルーティングテーブルに入力してもよい。通常、ルータは、ＡＳへの最短パスを選択する。ＢＧＰは、パス属性を使用して、トラフィックを特定のネットワークにどのようにルーティングするかを判定する。
【００３１】
本開示に基づく原理の理解を深めるために、以下では、図示の実施形態を参照し、特定の表現を用いてこれを説明する。但し、これは、本開示の範囲を限定することを意図するものではない。ここに例示する本開示の特徴の任意の変更及び更なる修正、並びにここに例示する本開示の原理の任意の追加的な適用は、当業者が本開示に基づいて容易に想到できるものであり、特許請求の範囲に含まれる。
【００３２】
ネットワークコンピューティング環境におけるオブジェクトのライフサイクルを追跡するための構造、システム、及び方法を開示及び説明する前に、本開示は、ここに開示される特定の構造、構成、プロセスステップ、及び材料に限定されず、そのような構造、構成、プロセスステップ、及び材料を変更してもよいことを明記する。また、本開示の範囲は、特許請求の範囲及びその均等物によってのみ制限されるものであるため、ここで使用される用語は、特定の実施形態を説明する目的でのみ使用され、限定を意図しないことは当然である。
【００３３】
本開示の主題を記述し特許請求する際には、以下に記載する定義に従って、以下の用語を使用する。
【００３４】
本明細書及び特許請求の範囲において使用する、単数形（冠詞「ａ」、「ａｎ」、及び「ｔｈｅ」）は、文脈における特段の指定がない限り、複数の指示対象を含む。
【００３５】
ここで使用する語句「備える」、「有する」、「含む」、「特徴とする」、及びこれらの文法的等価物は、記載されていない追加的な要素又は方法工程を除外しない非排他的又はオープンな用語である。
【００３６】
ここで使用する語句「〜からなる」及びその文法的等価物は、請求項に記載されていない任意の要素又は工程を除外する。
【００３７】
ここで使用される語句「実質的に〜からなる」及びその文法的等価物は、特許請求の範囲を、特定された材料又は工程、並びに特許請求された開示の基本的かつ新規な特性又は特徴に実質的に影響しない材料又は工程に限定する。
【００３８】
以下の説明は、図面を参照し、図１は、デバイスをインターネットに接続するためのシステム１００の概略図である。システム１００は、スイッチ１０６によって接続された複数のローカルエリアネットワーク１１０を含む。複数のローカルエリアネットワーク１１０のそれぞれは、ルータ１１２によって、公衆インターネットを介して互いに接続可能である。図１に示す例示的なシステム１００は、２つのローカルエリアネットワーク１１０を有する。但し、公衆インターネットを介して、より多くのローカルエリアネットワーク１１０を互いに接続してもよい。各ローカルエリアネットワーク１１０は、スイッチ１０６によって互いに接続された複数の演算デバイス１０８を含む。複数の演算デバイス１０８は、例えば、デスクトップコンピュータ、ラップトップ、プリンタ、サーバ等を含むことができる。ローカルエリアネットワーク１１０は、ルータ１１２によって、公衆インターネットを介して他のネットワークと通信できる。ルータ１１２は、複数のネットワークを互いに接続する。ルータ１１２は、インターネットサービスプロバイダ１０２に接続されている。インターネットサービスプロバイダ１０２は、１以上のネットワークサービスプロバイダ１０４に接続されている。ネットワークサービスプロバイダ１０４は、図１に示すように、他のローカルネットワークサービスプロバイダ１０４と通信を行う。
【００３９】
スイッチ１０６は、パケットスイッチング（packet switching）を使用してローカルエリアネットワーク１１０内のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。スイッチ１０６は、例えば、プリンタを宛先として、コンピュータからデータを受信するように構成できる。スイッチ１０６は、データを受信し、データを処理し、データをプリンタに送信できる。スイッチ１０６は、レイヤ１スイッチ、レイヤ２スイッチ、レイヤ３スイッチ、レイヤ４スイッチ、レイヤ７スイッチ等であってもよい。レイヤ１ネットワークデバイスは、データを転送するが、デバイスを通過するトラフィックは管理しない。レイヤ１ネットワークデバイスの例は、イーサネットハブである。レイヤ２ネットワークデバイスは、ハードウェアアドレスを使用してデータリンクレイヤ（レイヤ２）でデータを処理及び転送するマルチポートデバイスである。レイヤ３スイッチは、通常ルータによって実行される機能の一部又は全てを実行できる。但し、一部のネットワークスイッチは、単一タイプの物理ネットワーク、通常は、イーサネットをサポートするように制限されており、一方、ルータは、異なるポート上の異なる種類の物理ネットワークをサポートする場合がある。
【００４０】
ルータ１１２は、コンピュータネットワーク間でデータパケットを転送するネットワーキングデバイスである。図１に示す例示的なシステム１００において、ルータ１１２は、ローカルエリアネットワーク１１０間でデータパケットを転送する。但し、ルータ１１２は、必ずしもローカルエリアネットワーク１１０間のデータパケットの転送に適用される必要はなく、ワイドエリアネットワーク等の間のデータパケットの転送に使用してもよい。ルータ１１２は、インターネット上でトラフィックダイレクション機能（traffic direction function）を実行する。ルータ１１２は、銅ケーブル、光ファイバ、又は無線伝送等の異なるタイプの物理レイヤ接続のためのインタフェースを有してもよい。ルータ１１２は、異なるネットワークレイヤ伝送規格をサポートできる。各ネットワークインタフェースを使用することによって、データパケットをある伝送システムから別の伝送システムに転送できる。また、ルータ１１２は、それぞれが異なるネットワークプレフィックスを有する、サブネットと呼ばれるコンピュータデバイスの２以上の論理グループを接続するために使用してもよい。図１に示すように、ルータ１１２は、企業内、企業とインターネットとの間、又はインターネットサービスプロバイダのネットワーク間の接続を提供できる。幾つかのルータ１１２は、様々なインターネットサービスプロバイダを相互接続するように構成してもよく、大規模な企業ネットワーク内で使用してもよい。より小さいルータ１１２は、一般に、ホームネットワーク及びオフィスネットワークのインターネットへの接続を提供する。図１に示すルータ１１２は、エッジルータ、サブスクライバエッジルータ、プロバイダ間ボーダルータ、コアルータ、インターネットバックボーン、ポート転送、音声／データ／ファックス／ビデオ処理ルータ等のネットワーク伝送に適した任意のルータを表すことができる。
【００４１】
インターネットサービスプロバイダ（ＩＳＰ）１０２は、インターネットへのアクセス、利用、又は参加のためのサービスを提供する組織である。ＩＳＰ１０２は、商用、コミュニティ所有、非営利、又は個人所有等の様々な形態で組織化できる。ＩＳＰ１０２によって一般的に提供されるインターネットサービスは、インターネットアクセス、インターネット中継、ドメイン名登録、ウェブホスティング、ユースネットサービス、及びコロケーションを含む。図１に示すＩＳＰ１０２は、ホスティングＩＳＰ、中継ＩＳＰ、仮想ＩＳＰ、無料ＩＳＰ、無線ＩＳＰ等の任意の適切なＩＳＰを表すことができる。
【００４２】
ネットワークサービスプロバイダ（ＮＳＰ）１０４は、インターネットサービスプロバイダへの直接のインターネットバックボーンアクセスを提供することによって、帯域幅又はネットワークアクセスを提供する組織である。ネットワークサービスプロバイダは、ネットワークアクセスポイント（network access point：ＮＡＰ）へのアクセスを提供できる。ネットワークサービスプロバイダ１０４は、バックボーンプロバイダ又はインターネットプロバイダとも呼ばれる。ネットワークサービスプロバイダ１０４は、電気通信業者、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、及び高速インターネットアクセスを提供するケーブルテレビ運営業者を含むことができる。また、ネットワークサービスプロバイダ１０４は、情報技術業者を含むこともできる。
【００４３】
図１に示すシステム１００は、単なる例示であり、ネットワークと演算デバイスとの間でデータを伝送するために多くの異なる構成及びシステムを構築できる。ネットワーク形成は、カスタマイズ可能性（customizability）が高いため、コンピュータ間又はネットワーク間でデータを伝送するための最良のルートを判定する際にも、カスタマイズ可能性をより高めることが望まれている。以上の観点から、ここでは、コンピュータ又は特定の企業の特定のグループ化に良好に適合する最適パスアルゴリズムを判定する際に、カスタマイズ可能性をより高めるために、最適パス計算を外部デバイスにオフロードするためのシステム、方法、及びデバイスを開示する。
【００４４】
図２は、ここで説明する非同期オブジェクトマネージャによって管理される環境における、３タイプのオブジェクトＡ、Ｂ、及びＣを含むオブジェクト構造２００の概略図である。タイプＡ、タイプＢ、及びタイプＣのオブジェクトインスタンスは、キーによって識別される。オブジェクトタイプＡは、キーＡ１で表される。タイプＢのオブジェクトは、キーＢ１及びキーＢ２によって表される。オブジェクトタイプＣは、キーＣ１及びキーＣ２によって表される。矢印は、オブジェクト間の依存関係を表す。キーＡ１を有するオブジェクトタイプＡは、キーＢ１及びキーＢ２を有するオブジェクトタイプＢの両方に依存する。キーＢ１を有するオブジェクトタイプＢは、キーＣ１を有するオブジェクトタイプＣに依存する。キーＢ２を有するオブジェクトタイプＢは、キーＣ２を有するオブジェクトタイプＣに依存する。
【００４５】
例示的な具体例では、タイプＡ及びタイプＢのオブジェクトは、１つのプロデューサによって生成され、タイプＣのオブジェクトは、別のプロデューサによって生成されるものとする。これらのオブジェクトの情報は、Ｃ、次にＢ、次にＡの順にデータプレーンにプログラムできる。但し、プロデューサはこれらのオブジェクトを非同期的にプッシュするため、オブジェクトが順序どおりに到着しない可能性がある。
【００４６】
ここで説明する非同期オブジェクトマネージャを使用することによって、上記の具体例に示す順序付け要件を解決できる。一実施形態では、全てのオブジェクトは、オブジェクトが受信された順序で非同期オブジェクトマネージャに追加される。非同期オブジェクトマネージャは、特定のオブジェクトの依存関係が解決されているかを検出する。非同期オブジェクトマネージャは、依存関係が解決されていることを判定すると、アプリケーションが提供するコールバックを呼び出し、更なるアクションのためにオブジェクトとそのアプリケーションの状態を渡す。
【００４７】
この具体例では、オブジェクトの実際の到着順序は、Ｂ（Ｂ１）、Ａ（Ａ１）、Ｂ（Ｂ２）、Ｃ（Ｃ１）、及びＣ（Ｃ２）である。これを図３に示す。非同期オブジェクトマネージャはこの順序を変更し、適切な順序でアプリケーションのコールバックを開始する。オブジェクトの順序は、具体例毎に異なっていてもよい。オブジェクトの順序の例は、Ｃ（Ｃ１）、Ｃ（Ｃ２）、Ｂ（Ｂ１）、Ｂ（Ｂ２）、Ａ（Ａ１）である。これを図４に示す。
【００４８】
同様に、プロデューサからの削除シーケンスは、Ｃ（Ｃ１）、Ｃ（Ｃ２）、Ｂ（Ｂ１）、Ｂ（Ｂ２）、Ａ（Ａ１）のようになる。非同期オブジェクトマネージャは、削除シーケンスをＡ（Ａ１）、Ｂ（Ｂ１）、Ｂ（Ｂ２）、Ｃ（Ｃ１）、Ｃ（Ｃ２）のように並べ替える。これを図５に示す。
【００４９】
依存関係は、非同期オブジェクトマネージャのシステム空間内のオブジェクトを識別する固有キーに従って定義できる。依存関係は、子オブジェクトが採用する親オブジェクトのキーを示してもよい。例えば、ルートオブジェクトに「ｎｅｘｔｈｏｐＩＤ」というフィールドがあり、ｎｅｘｔｈｏｐＩＤがＮｅｘｔＨｏｐオブジェクトのキーであるとする。ルータオブジェクトが非同期オブジェクトマネージャに追加されると、独立した依存関係リストにｎｅｘｔｈｏｐＩＤが含まれる。これにより、依存するＮｅｘｔＨｏｐオブジェクトが一意的に識別される。
【００５０】
図６は、ＢＧＰインスタンス６１０によって実現される通信の概略図である。一実施形態では、システムに関連する情報を格納するＢＧＰインスタンスに対してローカルなデータストア６０２がある。データストア６０２は、１以上のルータ又はスイッチの最適パス情報を格納するデータベースであってもよい。データストア６０２は、更に、ＣＰＵ使用率、温度、ファン速度等のシステム状態情報、及びＬＥＤ又は他のデバイス等の周辺機器の状態情報を格納してもよい。データストア６０２は、監視エージェントにとって有用な様々な情報を格納してもよい。データストア６０２内の情報は、そのような情報を必要とする可能性がある別のコントローラ又はデバイスにストリーミングできる。データストア６０２は、データベースインデックスを含むことができ、複数のホストを含むことができる。複数のホストのそれぞれは、プロセッサ及びキャッシュメモリを含むことができる。図６に示す実施形態では、データストア６０２は、データベースホスト１、データベースホスト２、データベースホスト３、…データベースホストｎを含む。
【００５１】
データストア６０２は、プロデューサ６０４、プロデューサコンシューマ６０６、及びコンシューマ６０８と通信する。プロデューサ６０４は、コンシューマ６０６によって消費される情報を生成するプロセスである。転送情報ベース（forwarding information base：ＦＩＢ）（７１０）は、ルート及びネクストホップを生成する。ＦＩＢによって生成されるネクストホップは、インタフェースマネージャによって生成されるインタフェースに依存する。
【００５２】
図７は、ネットワーキングデバイス７０２の概略図である。ネットワーキングデバイス７０２は、スイッチ１０６又はルータ１１２であってもよい。ネットワーキングデバイス７０２は、ハードウェア７０４、非同期オブジェクトマネージャ７０６、データプレーンアダプテーションレイヤ（data plane adaptation layer：ＤＰＡＬ）７０８、転送情報ベース（ＦＩＢ）７１０、ルーティング情報ベース（ＲＩＢ）７１２、構成エージェント、及びボーダゲートウェイプロトコル（ＢＧＰ）７１６のうちの１以上を含む。ネットワーキングデバイス７０２は、ここに例示しない追加の構成要素を有してもよいことは当然である。
【００５３】
ネットワーキングデバイス７０２のソフトウェア部分は、図４に示すソフトウェアスタック４１４に含まれてもよい。このソフトウェアスタック４１４は、ハードウェアと協働して、スイッチ又はルータ等のネットワーキングデバイス７０２の動作を実行する。一実施形態では、ネットワーキングデバイス７０２のソフトウェア部分は、ＢＧＰインスタンス内のローカルには位置せず、これに代えてクラウドストレージにオフロードされる。ソフトウェアスタック４１４は、クラウドストレージにオフロードされ、ネットワーキングデバイス７０２上にローカルにコピーしてもよい。
【００５４】
一実施形態では、非同期オブジェクトマネージャ７０６は、異なる制御プレーン情報（例えば、図２〜図５ではオブジェクトとして表されている。）のライフサイクルを追跡するための１以上のアプリケーションプログラムインタフェースを提供する。非同期オブジェクトマネージャ７０６は、更に、オブジェクト間の依存関係を追跡する。非同期オブジェクトマネージャ７０６は、最下位レイヤに配置され、異なるプロデューサから非同期的に流れてくるシーケンス及び順序情報を支援する。
【００５５】
一実施形態では、非同期オブジェクトマネージャ７０６は、オブジェクトを並べ替えるための状態マシンを実装する。一実施形態では、異なるプロデューサからのオブジェクトが必要な順序で到着しない場合、状態マシンは、親オブジェクトが作成されるまで、従属オブジェクトの作成又は更新を保留する。同様に、状態マシンは、依存しているオブジェクトが更新又は削除されるまで、オブジェクトの削除を保留する。非同期オブジェクトマネージャ７０６は、グラフに似たデータ構造を使用してオブジェクトを編成し、依存関係グラフの上又は下にオブジェクトを作成、更新、及び／又は削除する効果を再帰的に波及させることができる。これは、図２〜図５に示されている。
【００５６】
非同期オブジェクトマネージャ７０６は、宣言型言語からなるフレームワークを含む。宣言型言語は、異なる種類のオブジェクト間の依存関係を表現する。宣言型言語を使用して、様々なオブジェクトタイプのスキーマを定義できる。更に、宣言型言語は、オブジェクトのキーを構成する属性や、オブジェクトの依存関係を識別するその他の属性と共に使用できる。一実施形態では、スキーマを定義した後、コードジェネレータを実行して、異なるオブジェクトのコードを生成できる。生成されたコードは、オブジェクトを表現するためのプログラミング言語構成体、オブジェクトを追加又は削除するためのＡＰＩ、キー及び従属キーを抽出するためのコードの自動生成、又はオブジェクト状態観察ＡＰＩのうちの１以上をカバーする。
【００５７】
更に、一実施形態では、非同期オブジェクトマネージャ７０６のフレームワークは、複数のスレッドがデータプレーンをプログラムすることを可能にすることによって、最下位レイヤのマルチスレッドアーキテクチャを可能にする。作業配分は、様々な方法で行うことができる。１つの方法は、１以上のデータプレーンデバイス（通常、ＡＳＩＣチップ）のためのデータプレーンプログラミングのケアを各スレッドに管理させることを含む。この方法では、プロデューサからの作業が１以上のワーカスレッド（worker thread）に亘って均等に分散されるため、処理が単純である。更に、各ワーカスレッドは、非同期オブジェクトマネージャ７０６フレームワークのインスタンスを有し、プロデューサからの情報を保持し、割り当てられたデバイスをプログラムする。
【００５８】
別の方法は、同一デバイス上のデータプレーンテーブルの選択されたセットに対するプログラミングを各スレッドに実行させることを含む。この方法は、より複雑であり、ワーカスレッドを１以上のフィーチャオブジェクト（feature object）にマッピングする必要がある。ディストリビュータースレッドは、フィーチャオブジェクトをそれぞれのワーカスレッドに分配する役割を果たすことができる。ここで、オブジェクト間の関係が複数のスレッドにまたがる場合がある。非同期オブジェクトマネージャ７０６は、スレッド間のオブジェクト依存関係を追跡するための拡張機能を必要とする場合がある。同期は、スレッド間でのメッセージの受け渡しによって実現される。非同期オブジェクトマネージャ７０６は、オブジェクトが一度だけ削除され、そのオブジェクトに依存するオブジェクトが他のスレッド内に存在しないことを保証できる。
【００５９】
転送情報ベース（ＦＩＢ）７１０は、転送テーブルと呼ばれることもある。ＦＩＢは、入力インタフェースがオブジェクトを転送するべき適切な出力ネットワークインタフェースを識別するように構成される。ＦＩＢは、媒体アクセス制御（media access control：ＭＡＣ）アドレスをポートにマッピングするダイナミックテーブルである。
【００６０】
ルーティング情報ベース（ＲＩＢ）７１２は、ルーティングテーブルとも呼ばれる。ＲＩＢは、ネットワーキングデバイス７０２に格納されたデータテーブルであり、特定のネットワーク宛先へのルートをリストし、場合によっては、ルートに関連するメトリック（距離）をリストする。ＲＩＢ７１２は、ネットワーキングデバイス７０２の周囲のネットワークのトポロジに関する情報を含む。ルーティングテーブルの構築は、ボーダゲートウェイプロトコル（ＢＧＰ）７１６等のルーティングプロトコルの主な目的である。
【００６１】
図８は、デバイス８１０のノード８０４と、クラウドネットワーク８２８に格納されたコントローラロジック８１２との間の通信を行うシステム８００の概略図である。コントローラロジック８１２は、非同期オブジェクトマネージャの動作のためのロジックを含むことができる。デバイス８１０は、ここで説明するように、スイッチ１０６又はルータ１１２であってもよい。ノード８０４は、構成エージェント８０６及び監視／遠隔測定（monitoring/telemetry）エージェント８０８を含む。デバイス８１０は、データストア８０２を含む。データストア８０２は、ノード８０４と共にローカルに格納してもよく、デバイス８１０に格納して複数のノードがアクセスできるようにしてもよく、クラウドストレージにオフロードしてもよく、又は外部に格納して複数のデバイス８０２がアクセスできるようにしてもよい。構成エージェント８０６は、コントローラロジック８１２の形式で命令を受信する。コントローラロジック８１２は、クラウドネットワーク上のクラウドベースのストレージに格納され、デバイス８１０がネットワークを介してアクセスできるようにされている。構成エージェント８０６は、監視／遠隔測定エージェント８０８に命令を出す。監視／遠隔測定エージェント８０８は、データストア８０２から情報を受信する。データストア８０２は、図に示すように、アプリケーション１、アプリケーション２、…アプリケーションＮの複数のアプリケーションに関する情報を格納できる。
【００６２】
図９は、マルチノードデータストアのアーキテクチャ９００の概略図である。ここに例示するアーキテクチャ９００は、別個のブロックＮｏｄｅ１及びＮｏｄｅＮとして示される２つのノードを含む。なお、本開示の異なる実施形態及び具体例に適した任意の数のノードが存在し得ることは当然である。Ｎｏｄｅ１は、内部ファブリック９２６と通信するデュプリケータエージェント９１０を含み、内部ファブリック９２６は、ＮｏｄｅＮのレプリケータエージェント９０４との通信を提供する。Ｎｏｄｅ１の構成エージェント９０６は、クラウド９２８ネットワークと通信し、このネットワークは、データストア９０２のためのコントローラロジック９１２を含む。各ノードは、データストア９０２のコピーを含む。データストア９０２内の情報は、アプリケーション１、アプリケーション２、…アプリケーションＮの複数のアプリケーションがアクセス及び使用できる。ＮｏｄｅＮの監視／遠隔測定エージェント９０８は、データストア９０２及びクラウド９２８ネットワークと通信する。Ｎｏｄｅ１の構成エージェント９０６は、クラウド９２８ネットワークを介してＮｏｄｅＮの監視／遠隔測定エージェント９０８と通信できる。
【００６３】
図１０は、ネットワーキングデバイスで送信されるデータを非同期的に受信し並び替える方法１０００の概略的ブロック図である。方法１０００は、ここで説明する非同期オブジェクトマネージャ７０６又は任意の適切な演算デバイスによって実行できる。
【００６４】
方法１０００が開始されると、演算デバイスは、１００２において、１以上のプロデューサから複数のオブジェクトを非同期的に受信する。オブジェクトには、例えば、ルート、ネクストホップ、等コストマルチパスグループ、インタフェース、ＡＣＬ、ＡＣＥ、ＱｏＳクラス、サブインタフェース、仮想ローカルエリアネットワーク等が含まれる。続いて、方法１０００の１００４において、演算デバイスは、複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別する。続いて、方法１０００の１００６において、演算デバイスは、１以上の依存関係に基づいて複数のオブジェクトを並べ替える。続いて、方法１０００の１００８において、演算デバイスは、１以上の依存関係が解決されたかを判定する。方法１０００は、１０１０において、１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、複数のオブジェクトの１以上をアプリケーションに提供することを含む。
【００６５】
図１１は、ネットワーキングデバイスの動作を改善するための方法１１００の概略的ブロック図である。方法１１００は、ここで説明する非同期オブジェクトマネージャ７０６又は任意の適切な演算デバイスによって実行できる。
【００６６】
方法１１００が開始されると、演算デバイスは、１１０２において、ネットワークデバイスに既知の複数のルートの状態を保存する。方法１１００は、１１０４において、第１のルートがオフラインであるという指示情報を受信することを含む。続いて、方法１１００の１１０６において、演算デバイスは、第１のルートに関連する第１のインターフェーズリンク（interphase link）を識別する。続いて、方法１１００の１１０８において、演算デバイスは、第１のルートに関連する置換用インターフェーズリンクを識別する。この識別は、ボーダゲートウェイプロトコル（ＢＧＰ）アルゴリズムを実行して２つの場所の間の最適パスを判定することによって実行してもよい。続いて、方法１１００の１１１０において、演算デバイスは、第１のルートが第１のインターフェーズリンクではなく置換用インターフェーズリンクで処理されるべきであるという指示情報をネットワーキングデバイスのルーティングチップハードウェアに提供する。
【００６７】
図１２は、例示的な演算デバイス１２００のブロック図である。演算デバイス１２００を使用して、ここで説明するような様々な手順を実行できる。一実施形態では、演算デバイス１２００は、非同期オブジェクトマネージャの機能を実行するように機能でき、１以上のアプリケーションプログラムを実行できる。演算デバイス１２００は、デスクトップコンピュータ、インダッシュコンピュータ、車両制御システム、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ等の多種多様な演算デバイスの何れであってもよい。
【００６８】
演算デバイス１２００は、１以上のプロセッサ１２０２と、１以上のメモリデバイス１２０４と、１以上のインタフェース１２０６と、１以上の大容量ストレージデバイス１２０８と、１以上の入出力（Ｉ／Ｏ）デバイス１２１０と、表示デバイス１２３０とを含み、これらは、全てバス１２１２に接続されている。プロセッサ１２０２は、メモリデバイス１２０４及び／又は大容量ストレージデバイス１２０８に格納された命令を実行する１以上のプロセッサ又はコントローラを含む。また、プロセッサ１２０２は、キャッシュメモリ等の種々のタイプのコンピュータ可読媒体を含むことができる。
【００６９】
メモリデバイス１２０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（random access memory：ＲＡＭ）１２１４）及び／又は不揮発性メモリ（例えば、読出専用メモリ（read-only memory：ＲＯＭ）１２１６）等の種々のコンピュータ可読媒体を含む。また、メモリデバイス１２０４は、フラッシュメモリ等の書換可能ＲＯＭを含むことができる。
【００７０】
大容量ストレージデバイス１２０８は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ（フラッシュメモリ等）等の種々のコンピュータ可読媒体を含む。図１２に示すように、具体的な大容量ストレージデバイスは、ハードディスクドライブ１２２４である。大容量ストレージデバイス１２０８には、種々のコンピュータ可読媒体からの読出及び／又は種々のコンピュータ可読媒体への書込を可能にするために、種々のドライブを含めることもできる。大容量ストレージデバイス１２０８は、リムーバブルメディア１２２６及び／又は非リムーバブルメディアを含む。
【００７１】
入出力（Ｉ／Ｏ）デバイス１２１０は、データ及び／又は他の情報を演算デバイスに入力し又は演算デバイス１２００から取り出すことを可能にする様々なデバイスを含む。Ｉ／Ｏデバイス１２１０には、カーソル制御デバイス、キーボード、キーパッド、マイクロホン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム等が含まれる。
【００７２】
表示デバイス１２３０は、演算デバイス１２００の１人以上のユーザに情報を表示できる任意のタイプのデバイスを含む。表示デバイス１２３０としては、例えば、モニタ、表示端末、映像投影デバイス等が挙げられる。
【００７３】
インタフェース１２０６は、演算デバイス１２００が他のシステム、デバイス、又はコンピューティング環境とインタラクションすることを可能にする様々なインタフェースを含む。インタフェース１２０６は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェース１２２０を含むことができる。他のインタフェースは、ユーザインタフェース１２１８及び周辺デバイスインタフェース１２２２を含む。また、インタフェース１２０６は、１以上のユーザインタフェース要素１２１８を含むことができる。更に、インタフェース１２０６は、プリンタ、ポインティングデバイス（マウス、トラックパッド、又は当業者に現在知られている任意の適切なユーザインタフェース、又は今後開発される任意の適切なユーザインタフェース）、キーボード等のためのインタフェース等、１以上の周辺インタフェースを含んでもよい。
【００７４】
バス１２１２は、プロセッサ１２０２、メモリデバイス１２０４、インタフェース１２０６、大容量ストレージデバイス１２０８、及びＩ／Ｏデバイス１２１０が互いに、及びバス１２１２に接続された他のデバイス又はコンポーネントと通信することを可能にする。バス１２１２は、システムバス、ＰＣＩバス、ＩＥＥＥバス、ＵＳＢバス等の幾つかのタイプのバス構造のうちの１以上を表す。
【００７５】
ここでは、説明のため、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、このようなプログラム及び構成要素は、演算デバイス１２００の異なる記憶構成要素内に様々な時点で存在してもよく、プロセッサ１２０２によって実行される。これに代えて、ここに記載のシステム及び手順は、ハードウェアで実現してもよく、ハードウェア、ソフトウェア、及び／又はファームウェアの組み合わせで実現してもよい。例えば、ここに記載のシステム及び手順の１以上を実行するように１以上の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）をプログラムできる。
【００７６】
上記の記述は、例示及び説明を目的としている。本開示は、ここに説明する詳細な形式に排他的に限定されない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【００７７】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【実施例】
【００７８】
以下の実施例は、更なる実施形態に関する。
【００７９】
実施例１は、システムである。システムは、ルーティングチップハードウェアと、ルーティングチップハードウェアと通信する非同期オブジェクトマネージャとを含む。非同期オブジェクトマネージャは、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能である。命令は、１以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。命令は、複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することを含む。命令は、１以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。命令は、１以上の依存関係が解決されているかを判定することを含む。命令は、１以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、複数のオブジェクトの１以上をアプリケーションに提供することを含む。
【００８０】
実施例２は、非同期オブジェクトマネージャは、状態マシンを含む、実施例１に記載のシステムである。
【００８１】
実施例３は、非同期オブジェクトマネージャは、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤである、実施例１又は２に記載のシステムである。
【００８２】
実施例４は、１以上のプロデューサは、アプリケーション、プロセス、スレッド、又は機能の１以上を含む、実施例１〜３の何れかに記載のシステムである。
【００８３】
実施例５は、命令は、更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例１〜４の何れかに記載のシステムである。
【００８４】
実施例６は、更に、非同期オブジェクトマネージャ及びルーティングチップハードウェアと通信するデータプレーンアダプテーションレイヤ（ＤＰＡＬ）を備え、非同期オブジェクトマネージャのための命令は、第１の場所から最終的な宛先に送信されるメッセージのためのルートを作成するためのメッセージをＤＰＡＬから受信することと、メッセージのためのルートを作成することと、ＤＰＡＬへのルートを提供することと、を含む、実施例１〜５の何れかに記載のシステムである。
【００８５】
実施例７は、ここでは、命令は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第１のルートがオフラインであるという指示情報を受信することと、第１のルートに関連する第１のインターフェーズリンクを識別することと、第１のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第１のルートが、第１のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例１〜６の何れかに記載のシステムである。
【００８６】
実施例８は、非同期オブジェクトマネージャは、第１のプロデューサが、ネクストホップの第２のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供する、実施例１〜７の何れかに記載のシステムである。
【００８７】
実施例９は、非同期オブジェクトマネージャは、スイッチ又はルータ上で動作する互換性を有する、実施例１〜８の何れかに記載のシステムである。
【００８８】
実施例１０は、命令は、更に、１以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、１以上の依存関係に基づいて削除シーケンスを並べ替えることと、を含む、実施例１〜９の何れかに記載のシステムである。
【００８９】
実施例１１は、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な１以上のプロセッサである。命令は、１以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。命令は、複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することを含む。命令は、１以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。命令は、１以上の依存関係が解決されたかを判定することを含む。命令は、１以上の依存関係が解決されているとの判定に応答して、アプリケーションをコールバックし、複数のオブジェクトの１以上をアプリケーションに提供することを含む。
【００９０】
実施例１２は、命令は、更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例１１に記載の１以上のプロセッサである。
【００９１】
実施例１３は、命令は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第１のルートがオフラインであるという指示情報を受信することと、第１のルートに関連する第１のインターフェーズリンクを識別することと、第１のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第１のルートが、第１のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例１１〜１２の何れかに記載の１以上のプロセッサである。
【００９２】
実施例１４は、命令は、更に、第１のプロデューサが、ネクストホップの第２のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供することを含む、実施例１１〜１３の何れかに記載の１以上のプロセッサである。
【００９３】
実施例１５は、１以上のプロセッサのための命令は、スイッチ又はルータ上で動作する互換性を有する、実施例１１〜１４の何れかに記載の１以上のプロセッサである。
【００９４】
実施例１６は、方法である。方法は、１以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。方法は、複数のオブジェクトのうちの２以上のオブジェクト間の１以上の依存関係を識別することを含む。方法は、１以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。方法は、１以上の依存関係が解決されたかを判定することを含む。方法は、１以上の依存関係が解決されているとの判定に応答して、アプリケーションをコールバックし、複数のオブジェクトのうちの１以上をアプリケーションに提供することを含む。
【００９５】
実施例１７は、更に、第１のルートが第１のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例１６に記載の方法である。
【００９６】
実施例１８は、非同期オブジェクトマネージャは、状態マシンを含み、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤに位置する、実施例１６〜１７の何れかに記載の方法である。
【００９７】
実施例１９は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第１のルートがオフラインであるという指示情報を受信することと、第１のルートに関連する第１のインターフェーズリンクを識別することと、第１のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第１のルートが、第１のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例１６〜１８の何れかに記載の方法である。
【００９８】
実施例２０は、更に、１以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、１以上の依存関係に基づいて削除シーケンスを並べ替えることと、を含む、実施例１６〜１９の何れかに記載の方法である。
【００９９】
なお、上述の構成、実施例、及び実施形態の任意の特徴は、ここに開示する構成、実施例、及び実施形態の何れかから得られる特徴の組み合わせを含む単一の実施形態において組み合わせることができる。
【０１００】
ここに開示する種々の特徴は、当技術分野における重要な利点及び進歩を提供する。以下の特許請求の範囲は、これらの特徴の幾つかの例示である。
【０１０１】
本開示の前述の詳細な説明では、開示を合理化する目的で、開示の様々な特徴を１つの実施形態にまとめている。この開示方法は、特許請求された開示が各請求項において明示的に記載されている特徴よりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。すなわち、本発明の態様の特徴は、先に開示した単一の実施形態の全ての特徴よりも少ない。
【０１０２】
上記の構成は、本開示の原理の適用の単なる例示である。当業者は、本開示の思想及び範囲から逸脱することなく、多くの変更及び代替の構成を想到でき、特許請求の範囲は、このような修正及び構成を網羅することを意図している。
【０１０３】
したがって、本開示を図面に示し、上に詳細に説明しているが、ここに記載されている原理及び概念から逸脱することなく、サイズ、材料、形状、形態、機能、動作、組み立て、及び使用のバリエーションを含むと共に、これらに限定されない多数の変更を想到できることは、当業者にとって明らかである。
【０１０４】
更に、ここに記載される機能は、適切な場合、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントのうちの１以上において実行できる。例えば、１以上の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）をプログラムして、ここに記載のシステム及び手順の１以上を実行できる。説明及び特許請求の範囲を通して、特定のシステム構成要素を指すために、特定の用語を使用している。構成要素は、異なる名称で呼ぶことができることは、当業者にとって明らかである。本文書は、名称が異なるが機能が同じコンポーネントを区別することを意図していない。
【０１０５】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【０１０６】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【図１】
2021535693.tif 000003
【図２】
2021535693.tif 000004
【図３】
2021535693.tif 000005
【図４】
2021535693.tif 000006
【図５】
2021535693.tif 000007
【図６】
2021535693.tif 000008
【図７】
2021535693.tif 000009
【図８】
2021535693.tif 000010
【図９】
2021535693.tif 000011
【図１０】
2021535693.tif 000012
【図１１】
2021535693.tif 000013
【図１２】
2021535693.tif 000014
【国際調査報告】
2021535693.tif 000015