IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルカス インコーポレイテッドの特許一覧

特許7427671ネットワーク環境における非同期オブジェクトマネージャ
<>
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図1
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図2
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図3
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図4
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図5
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図6
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図7
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図8
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図9
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図10
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図11
  • 特許-ネットワーク環境における非同期オブジェクトマネージャ 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-26
(45)【発行日】2024-02-05
(54)【発明の名称】ネットワーク環境における非同期オブジェクトマネージャ
(51)【国際特許分類】
   H04L 45/60 20220101AFI20240129BHJP
【FI】
H04L45/60
【請求項の数】 18
(21)【出願番号】P 2021533395
(86)(22)【出願日】2019-08-23
(65)【公表番号】
(43)【公表日】2021-12-16
(86)【国際出願番号】 US2019047844
(87)【国際公開番号】W WO2020041666
(87)【国際公開日】2020-02-27
【審査請求日】2022-08-04
(31)【優先権主張番号】62/722,003
(32)【優先日】2018-08-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521076948
【氏名又は名称】アルカス インコーポレイテッド
(74)【代理人】
【識別番号】100067736
【弁理士】
【氏名又は名称】小池 晃
(74)【代理人】
【識別番号】100192212
【弁理士】
【氏名又は名称】河野 貴明
(74)【代理人】
【識別番号】100200001
【弁理士】
【氏名又は名称】北原 明彦
(72)【発明者】
【氏名】パイ,ナリナクシュ
(72)【発明者】
【氏名】ラジャラマン,カルヤニ
(72)【発明者】
【氏名】ラグクマール,ビクラム
【審査官】宮島 郁美
(56)【参考文献】
【文献】特開2003-204332(JP,A)
【文献】米国特許出願公開第2017/0222943(US,A1)
【文献】特開2012-151675(JP,A)
【文献】特開平05-167616(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00-12/66,13/00,41/00-49/9057,61/00-65/80,69/00-69/40
(57)【特許請求の範囲】
【請求項1】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な非同期オブジェクトマネージャとを備えるシステムであって、
前記命令は、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記命令は、更に、第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージを前記ルーティングチップハードウェアに提供することを含むことを特徴とするシステム。
【請求項2】
前記非同期オブジェクトマネージャは、状態マシンを含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記非同期オブジェクトマネージャは、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤであることを特徴とする請求項1に記載のシステム。
【請求項4】
前記1以上のプロデューサは、アプリケーション、プロセス、スレッド、又は機能の1以上を含むことを特徴とする請求項1に記載のシステム。
【請求項5】
更に、前記非同期オブジェクトマネージャ及び前記ルーティングチップハードウェアと通信するデータプレーンアダプテーションレイヤ(DPAL)を備え、前記非同期オブジェクトマネージャのための前記命令は、更に、
第1の場所から最終的な宛先に送信されるメッセージのためのルートを作成するためのメッセージを前記DPALから受信することと、
前記メッセージのためのルートを作成することと、
前記DPALへのルートを提供することと、
を含むことを特徴とする請求項1に記載のシステム。
【請求項6】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な非同期オブジェクトマネージャとを備えるシステムであって、
前記命令は、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記命令は、更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第1のルートがオフラインであるという指示情報を受信することと、
前記第1のルートに関連する第1のインターフェーズリンクを識別することと、
前記第1のルートに関連付ける置換用インターフェーズリンクを識別することと、
前記ルーティングチップハードウェアに、前記第1のルートが、前記第1のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とするシステム。
【請求項7】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な非同期オブジェクトマネージャとを備えるシステムであって、
前記命令は、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記非同期オブジェクトマネージャは、第1のプロデューサが、ネクストホップの第2のプロデューサに直接メッセージを提供する代わりに、前記非同期オブジェクトマネージャにメッセージを提供する手段を提供することを特徴とするシステム。
【請求項8】
前記非同期オブジェクトマネージャは、スイッチ又はルータ上で動作する互換性を有することを特徴とする請求項1に記載のシステム。
【請求項9】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な非同期オブジェクトマネージャとを備えるシステムであって、
前記命令は、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記命令は、更に、
1以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、
前記1以上の依存関係に基づいて前記削除シーケンスを並べ替えることと、
を含むことを特徴とするシステム。
【請求項10】
非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な1以上のプロセッサであって、
前記命令は、
ルーティングチップハードウェアに接続された非同期オブジェクトマネージャにより、1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記命令は、更に、第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージを前記ルーティングチップハードウェアに提供することを含むことを特徴とする1以上のプロセッサ。
【請求項11】
前記命令は、更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第1のルートがオフラインであるという指示情報を受信することと、
前記第1のルートに関連する第1のインターフェーズリンクを識別することと、
前記第1のルートに関連付ける置換用インターフェーズリンクを識別することと、
ルーティングチップハードウェアに、前記第1のルートが、前記第1のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とする請求項10に記載の1以上のプロセッサ。
【請求項12】
非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な1以上のプロセッサであって、
前記命令は、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含み、
前記命令は、更に、第1のプロデューサが、ネクストホップの第2のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供することを含むことを特徴とする1以上のプロセッサ。
【請求項13】
前記1以上のプロセッサのための命令は、スイッチ又はルータ上で動作する互換性を有することを特徴とする請求項10に記載の1以上のプロセッサ。
【請求項14】
ネットワーク環境においてデータストレージをオフロードする方法であって、
ルーティングチップハードウェアに接続された非同期オブジェクトマネージャにより、1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージを前記ルーティングチップハードウェアに提供することと、
を含むことを特徴とする方法。
【請求項15】
前記非同期オブジェクトマネージャは、状態マシンを含み、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤに位置することを特徴とする請求項14に記載の方法。
【請求項16】
更に、
前記非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、
第1のルートがオフラインであるという指示情報を受信することと、
前記第1のルートに関連する第1のインターフェーズリンクを識別することと、
前記第1のルートに関連付ける置換用インターフェーズリンクを識別することと、
ルーティングチップハードウェアに、前記第1のルートが、前記第1のインターフェーズリンクではなく前記置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、
を含むことを特徴とする請求項14に記載の方法。
【請求項17】
ネットワーク環境においてデータストレージをオフロードする方法であって、
1以上のプロデューサから複数のオブジェクトを非同期的に受信することと、
前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
1以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、
前記1以上の依存関係に基づいて前記削除シーケンスを並べ替えることと、
を含むことを特徴とする方法。
【請求項18】
ルーティングチップハードウェアと、
前記ルーティングチップハードウェアと通信し、1以上のプロデューサのアプリケーションプログラムインタフェース(API)とインタラクトする非同期オブジェクトマネージャと、
を備えるシステムであって、
前記非同期オブジェクトマネージャは、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能であり、
前記命令は、
前記1以上のプロデューサから複数のオブジェクトを非同期的に受信し、前記1以上のプロデューサの各プロデューサはアプリケーションであり、前記複数のオブジェクトは前記1以上のプロデューサのAPIから受信されることと、
前記非同期オブジェクトマネージャのシステム空間内の前記複数のオブジェクトの各オブジェクトを識別する固有キーにより、前記複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別し、前記1以上の依存関係の各依存関係は、前記複数のオブジェクトの親オブジェクトの固有キーが前記複数のオブジェクトの子オブジェクトにより採用されることを示すことと、
前記1以上の依存関係に基づいて前記複数のオブジェクトを並べ替えることと、
前記1以上の依存関係が解決されているかを判定することと、
前記1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、前記複数のオブジェクトの1以上を前記アプリケーションに提供することと、
を含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、2018年8月23日に出願された米国仮特許出願第62/722,003号「DATABASE SYSTEMS METHODS AND DEVICES」に対する優先権を主張するものであり、この文献は、次の例外を除き、これに限定されるものではないが、以下に具体的に記載される部分を含む全体が参照により本明細書に援用される。前記出願の何れかの部分が本出願と矛盾する場合、本出願の内容が前記出願に優先される。
【0002】
本開示は、コンピューティングネットワークに関し、特に、ネットワーク環境における情報回復コンフリクトの解決に関する。
【背景技術】
【0003】
ネットワークコンピューティングとは、複数のコンピュータ又はノードが連携し、ネットワークを介して相互に通信するための手段である。これには、ワイドエリアネットワーク(wide area network:WAN)とローカルエリアネットワーク(local area network:LAN)とがある。ワイドエリアネットワークとローカルエリアネットワークは、何れも、コンピュータ間の相互接続を可能にする。ローカルエリアネットワークは、通常、家庭、ビジネス、学校等、より小規模でローカライズされたネットワークに使用される。ワイドエリアネットワークは、都市等の広域をカバーし、異なる国のコンピュータを接続することもできる。通常、ローカルエリアネットワークは、ワイドエリアネットワークよりも高速で安全であるが、ワイドエリアネットワークを使用すると広範囲の接続が可能になる。通常、ローカルエリアネットワークは、展開されている組織内で所有、制御、及び管理され、一方、ワイドエリアネットワークでは、通常、パブリックインターネット経由又は電気通信プロバイダによって確立されたプライベート接続を介して、構成要素である2以上のローカルエリアネットワークを接続する必要がある。
【0004】
ローカルエリアネットワークとワイドエリアネットワークによって、コンピュータを相互に接続し、データやその他の情報を転送できる。ローカルエリアネットワーク及びワイドエリアネットワークの何れにおいても、ある演算インスタンスから別の演算インスタンスにデータを渡すパスを判定する手段が必要である。これは、ルーティングとも呼ばれる。ルーティングとは、ネットワーク内で、複数のネットワーク間で、又は複数のネットワークに亘って、トラフィックのパスを選択するプロセスである。ルーティングプロセスは、通常、様々なネットワーク宛先へのルートの記録を保持するルーティングテーブルに基づいて、転送を指示する。ルーティングテーブルは、管理者が指定してもよく、ネットワークトラフィックを監視して学習してもよく、ルーティングプロトコルの支援を受けて構築してもよい。
【発明の概要】
【発明が解決しようとする課題】
【0005】
幾つかのネットワークルーティング動作は、複数の異なるプロデューサによって生成された情報オブジェクトの送信を含む。これらのオブジェクトは、受信側アプリケーションがオブジェクトを適切に処理できるように、特定の順序で送信する必要がある場合がある。しかしながら、複数の異なるプロデューサが存在する場合、オブジェクトを正しい順序で送信することが難しい場合がある。具体的には、分散型ネットワークオペレーティングシステム(network operating system:NOS)においては、転送情報オブジェクトが異なるプロデューサによって生成される。転送オブジェクトは、互いに依存する傾向があり、プログラミングフローは、これらの依存関係を考慮する必要がある。オブジェクトは、ハーモナイズされ、基礎となるデータプレーンに規則的にプログラムされる必要がある。従来の手法の1つとして、異なるプロデューサを互いに同期させ、複数のプロデューサに亘ってオブジェクトを正しい順序でプッシュダウンする手法がある。この手法には、多くの欠点がある。この手法では、プロセス間の同期が緊密になり、緊密にカップリングされた分散NOSが作成される傾向がある。NOSが異なるマシンに亘って分散されている場合や、NOSのコンポーネントがクラウドベースのネットワーク環境で動作している場合には、緊密な同期によって多くの問題が発生する可能性がある。
【課題を解決するための手段】
【0006】
以上の観点から、ここでは、ネットワークコンピューティング動作を改善し、非同期オブジェクトマネージャがネットワーク環境で情報オブジェクトを受信し、並べ替えるためのシステム、方法、及びデバイスを開示する。
【0007】
本開示の非限定的及び非包括的な実施形態は、以下の図を参照して説明され、これらの図において、同一の参照符号は、特段の指定がない限り、全ての図を通して同一の部分を指す。以下の説明及び添付の図面を参照することにより、本開示の利点がより明瞭に理解される。
【図面の簡単な説明】
【0008】
図1】インターネットを介して通信するネットワーク化されたデバイスのシステムの概略図である。
図2】非同期オブジェクトマネージャによって管理可能な複数の依存関係を有するオブジェクト階層の概略図である。
図3】非同期的にオブジェクトを受信する順序の一例の概略図である。
図4】非同期オブジェクトマネージャによって受信されたオブジェクトの並べ替えの一例の概略図である。
図5】削除シーケンスの並べ替えの一例の概略図である。
図6】ネットワーキングデバイスによって実現される通信の概略図である。
図7】ハードウェアと、ハードウェア動作のための命令を提供するソフトウェアスタックとを含む例示的なネットワーキングデバイスの概略図である。
図8】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
図9】デバイスのコントローラロジックをクラウドネットワークにオフロードするためのシステムの概略図である。
図10】コンピュータネットワークを介して送信されるオブジェクトを受信し及び並べ替える方法の概略的フローチャートである。
図11】ネットワークコンピューティング環境におけるネットワーキングデバイスの動作を改善するための方法の概略的フローチャートである。
図12】例示的な演算デバイスの構成要素を示す概略図である。
【発明を実施するための形態】
【0009】
ここでは、ネットワークコンピューティング環境における情報ルーティングを改善するためのシステム、方法、及びデバイスを開示する。本開示の一実施形態は、異なる制御プレーン情報のライフサイクルを追跡するように構成された非同期オブジェクトマネージャである。非同期オブジェクトマネージャは、ネットワークルーティング環境に配置でき、スイッチ又はルータ等のネットワーキングデバイスの動作を制御するためのソフトウェアスタックに含めることができる。
【0010】
コンピュータネットワーク環境では、スイッチ又はルータ等のネットワーキングデバイスを使用して、1つの宛先から最終的な宛先に情報を送信できる。一実施形態では、データパッケージ及びメッセージは、個人の自宅内のコンピュータ等の第1の場所で生成してもよい。データパッケージ及びメッセージは、個人がウェブブラウザとインタラクトし、インターネットを介してアクセス可能なリモートサーバに情報を要求し又は情報を提供することによって生成できる。例えば、データパッケージ及びメッセージは、インターネットに接続されたウェブページ上でアクセス可能なフォームに個人が入力した情報であってもよい。データパッケージ及びメッセージは、個人のコンピュータから地理的に非常に離れた場所にあるリモートサーバに送信する必要がある場合がある。個人の自宅のルータとリモートサーバの間では、直接通信が行われていない可能性が高い。したがって、データパッケージ及びメッセージは、リモートサーバの最終的な宛先に到達するまでに、異なるネットワーキングデバイスを「ホッピング」して移動する必要がある。個人の自宅のルータは、インターネットに接続された複数の異なるデバイスを介してデータパッケージ及びメッセージを送信し、データパッケージ及びメッセージがリモートサーバの最終宛先に到達するまでのルートを判定する必要がある。
【0011】
第1の場所から最終的な宛先への最良のパスを判定し、データパッケージ及びメッセージを次の宛先に転送するプロセスは、スイッチ又はルータ等のネットワーキングデバイスによって実行される重要な機能である。ここでは、ネットワーキングデバイスの動作を改善するためのシステム、方法、及びデバイスを開示する。本開示の一実施形態は、スイッチ又はルータのルーティングチップハードウェア上で動作するソフトウェアスタックに含まれる。ソフトウェアスタックの一部は、ここで説明する非同期オブジェクトマネージャである。非同期オブジェクトマネージャは、ネットワークルーティング環境で多くの利点を実現する。まず、非同期オブジェクトマネージャによって実行される動作のために、メッセージのプロデューサが互いに対話する必要がなくなり、これに代えて、非同期オブジェクトマネージャによって組織化されるメッセージを送信できる。更に、非同期オブジェクトマネージャは、異なるオブジェクト間の関係(relationships)と依存関係(dependencies)を表現する手段を提供する。更に、非同期オブジェクトマネージャ内の状態マシンは、非同期オブジェクトマネージャが、ソフトウェアスタックの異なる部分に命令を発行する前に、全ての必要なオブジェクトが到着するのを待機することを可能にする。
【0012】
一実施形態では、非同期オブジェクトマネージャは、ルータ又はスイッチ等のネットワーキングデバイス内のルーティングチップハードウェアの上に位置し、これを管理するソフトウェアである。特に、非同期オブジェクトマネージャは、ルータ又はスイッチにおいて、ソフトウェア言語を変更することなく使用できる。一実施形態では、他のソフトウェアスタックと組み合わせて非同期オブジェクトマネージャを使用することによって、スイッチをルータに又はその逆に変換できる。
【0013】
非同期オブジェクトマネージャは、コンピュータネットワークから情報を収集し、ルーティングチップハードウェアによってプログラム可能な形式で情報を整理(digest)する。非同期オブジェクトマネージャは、ルーティングチップハードウェアによってパッケージ転送機能を実行させる。非同期オブジェクトマネージャは、ネットワーキングデバイス上で動作するソフトウェアスタックの最下位レイヤである。非同期オブジェクトマネージャは、基礎となるルーティングチップハードウェアとのインタラクション及びアプリケーションプログラムインタフェース(API)とのインタラクションを担う。
【0014】
非同期オブジェクトマネージャは、データプレーンアダプテーションレイヤ(data plane adaptation layer:DPAL)と連携して動作してもよい。DPALは、複数のクライアントを有することがあり、異なるクライアントからの異なる情報を待つ必要がある場合がある。オブジェクトが特定の順序で配置されていない限り、DPALはその機能を実行できない。一実施形態では、非同期オブジェクトマネージャの主なタスクは、オブジェクトがDPALによって処理されるようにオブジェクトを並べ替えることである。非同期オブジェクトマネージャは、DPALのコンテキスト外で使用でき、レイヤ3ネットワークの最上位にレイヤ化されたセグメントを構築するためのVPNソフトウェア等として適用できる。
【0015】
一実施形態では、非同期オブジェクトマネージャは、状態マシンである。非同期オブジェクトマネージャは、定義済みパラメータの条件内で特定の状態を構築するように設計されている。非同期オブジェクトマネージャは、情報パッケージを管理するのではなく、プログラミング情報を搬送するメッセージを再編成するように構成してもよい。一例では、非同期オブジェクトマネージャは、例えば、インターフェーズ(interphase)AをインターフェーズBに転送する必要があることを、基礎となるルーティングチップハードウェアに伝えるように構成される。
【0016】
一実施形態では、非同期オブジェクトマネージャは、DPALとインタラクトし、メッセージを第1の場所から最終的な宛先に転送するためのルートをDPALに提供する。一例では、DPALは、複数の通信チャネルを介してメッセージを受信できる。DPALは、非同期オブジェクトマネージャにクエリを発し、メッセージを送信するルートを要求できる。非同期オブジェクトマネージャは、ルートを作成し、ルートを記録し、DPALへのルートを提供する。非同期オブジェクトマネージャは、異なるオブジェクト間の関係を表現するという点で他に類のないものである。非同期オブジェクトマネージャ内部に組み込まれた状態マシンを使用することにより、非同期オブジェクトマネージャは、DPALへのルートを発行し又はオブジェクトに変更を加える前に、全てのオブジェクトの到着を待機することができる。非同期オブジェクトマネージャを使用することにより、オブジェクトプロデューサが互いに通信する必要がなくなる。
【0017】
本開示の理解を深めるために、多数のネットワーキング演算デバイス及びプロトコルの幾つかを説明する。
【0018】
BGPインスタンスは、ネットワーク内で情報をルーティングするためのデバイスである。BGPインスタンスは、ルートリフレクタ機器(route reflector appliance)の形式で実現してもよい。BGPインスタンスは、スイッチ、ルータ、又はスイッチ上のBGPスピーカで実行してもよい。高レベルでは、BGPインスタンスは、プレフィックスについて学習した全てのパスを最適パスコントローラ(best path controller)に送信する。最適パスコントローラは、これらのパスの中から最適パスのセットを応答する。最適パスコントローラは、任意のパスのネクストホップ及び属性を変更することが許可されている。最適パスを受信すると、BGPインスタンスは、ローカルルーティング情報ベース(Routing Information Base:RIB)を更新し、最適パスをネイバ(neighbors)にアドバタイズ(advertise)する。
【0019】
スイッチ(スイッチングハブ、ブリッジングハブ、又はMACブリッジとも呼ばれる。)は、ネットワークを作成する。殆どの内部ネットワークは、建物又はキャンパス内のコンピュータ、プリンタ、電話機、カメラ、照明、及びサーバを接続するためにスイッチを使用する。スイッチは、ネットワークに接続されたデバイスが相互に効率的に通信できるようにするコントローラとして機能する。スイッチは、パケットスイッチングを使用してコンピュータネットワーク上のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。ネットワークスイッチは、ハードウェアアドレスを使用して、開放型システム間相互接続(Open Systems Interconnection:OSI)モデルのデータリンクレイヤ(レイヤ2)でデータを処理及び転送するマルチポートネットワークブリッジである。一部のスイッチは、ルーティング機能を追加で組み込むことにより、ネットワークレイヤ(レイヤ3)でデータを処理することもできる。このようなスイッチは、一般にレイヤ3スイッチ又はマルチレイヤスイッチと呼ばれている。
【0020】
ルータは、ネットワークを接続する。スイッチ及びルータは、類似する機能を実行するが、ネットワーク上で実行する機能はそれぞれ異なる。ルータは、コンピュータネットワーク間でデータパケットを転送するネットワークデバイスである。ルータは、インターネット上でトラフィックダイレクティング機能(traffic directing function)を実行する。ウェブページ、電子メール、又はその他の形式の情報等、インターネットを介して送信されるデータは、データパケットの形式で送信される。パケットは、通常、インターネットワーク(例えばインターネット)を構成するネットワークを介してあるルータから別のルータに転送されて、最終的に宛先ノードに到達する。ルータは、異なるネットワークからの複数のデータラインに接続されている。データパケットがラインの1つに到着すると、ルータは、パケット内のネットワークアドレス情報を読み取り、最終的な宛先を判定する。次に、ルータは、ルータのルーティングテーブル又はルーティングポリシの情報を使用して、行程上の次のネットワークにパケットを送信する。BGPスピーカは、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)がイネーブルにされているルータである。
【0021】
ルーティングテーブル又はルーティング情報ベース(RIB)は、ルータ又はネットワークコンピュータに格納されているデータテーブルであり、特定のネットワーク宛先へのルートをリストするものである。ルーティングテーブルには、距離、重み等のルートのメトリックが含まれる場合がある。ルーティングテーブルには、それが格納されているルータの直近のネットワークのトポロジに関する情報が含まれる。ルーティングテーブルの構築は、ルーティングプロトコルの主要な目的である。スタティックルートは、非自動手段によってルーティングテーブルに作成されるエントリであり、何らかのネットワークトポロジディスカバリ手順の結果ではなく、固定されている。ルーティングテーブルは、ネットワークID、メトリック、及びネクストホップのフィールドを含む、少なくとも3つの情報フィールドを含むことができる。ネットワークIDは、宛先サブネットである。メトリックは、パケットが送信されるパスのルーティングメトリックである。ルートは、メトリックが最小のゲートウェイの方向に進む。ネクストホップとは、パケットが最終宛先に送信されるまでの過程における次のステーションのアドレスである。ルーティングテーブルは、更に、ルートに関連付けられたサービス品質、ルートに関連付けられたフィルタリング基準リストへのリンク、イーサネットカードのインタフェース等を含むことができる。
【0022】
ルーティングテーブルの概念を説明する目的のために、ルーティングテーブルは、パッケージを送達するために使用される地図に見立てることができる。ルーティングテーブルは、パッケージを最終的な宛先に配信するために使用される地図に似ている。ノードがネットワーク上の別のノードにデータを送信する必要がある場合、ノードはまずデータの送信先を認識する必要がある。ノードが宛先ノードに直接接続できない場合、ノードは、宛先ノードへの適切なルートに沿って他のノードにデータを送信する必要がある。殆どのノードは、どのルートが機能するかを判断することを試みることはない。これに代えて、ノードは、LAN内のゲートウェイにIPパケットを送信し、ゲートウェイが、データを正しい宛先にどのようにルーティングするかを決定する。各ゲートウェイは、様々なデータパッケージを配信する方法を追跡する必要があり、そのためにルーティングテーブルを使用する。ルーティングテーブルは、地図のようにパスを追跡し、これらのパスを使用してトラフィックをどのように転送するかを判定するためのデータベースである。ゲートウェイは、情報を要求する他のノードとルーティングテーブルの内容を共有することもできる。
【0023】
ホップバイホップ(hop-by-hop)ルーティングの場合、各ルーティングテーブルには、全ての到達可能な宛先について、その宛先へのパスに沿った次のデバイスのアドレス、すなわち、ネクストホップがリストされる。ルーティングテーブルが一貫していると仮定すれば、パケットを宛先のネクストホップにリレーするアルゴリズムは、ネットワーク内の任意の場所にデータを配信するのに十分である。ホップバイホップは、IPインターネットワークレイヤ及び開放型システム間相互接続(OSI)モデルの特徴の一つである。
【0024】
開放型システム間相互接続(OSI)モデルは、基礎となる内部構造及び技術に関係なく、コンピューティングシステムの通信機能を特徴付け、標準化する概念モデルである。OSIモデルの目標は、多様な通信システムと標準通信プロトコルとの相互運用性である。OSIモデルは、通信システムを複数の抽象レイヤに分割する。レイヤは、上位のレイヤにサービスを提供し、下位のレイヤからサービスを提供される。例えば、ネットワークに亘って無エラー通信(error-free communication)を提供するレイヤは、上位のアプリケーションが必要とするパスを提供すると共に、次の下位レイヤを呼び出して、そのパスの内容を構成するパケットを送受信する。同じレイヤにある2つのインスタンスは、そのレイヤで水平接続によって接続されているものとして可視化される。通信プロトコルは、あるホストのエンティティが、別のホストの同じレイヤの対応するエンティティとインタラクションすることを可能にする。OSIモデルのようなサービス定義は、(N-1)レイヤによって(N)レイヤに提供される機能を抽象的に記述し、ここで、Nは、ローカルホストで動作するプロトコルレイヤの1つである。
【0025】
ルート制御は、インターネット接続性の向上、帯域幅コストの削減、及びネットワーク間の全体的な動作の削減を目的としたネットワーク管理の一種である。一部のルート制御サービスは、ハードウェアベース及びソフトウェアベースの一連の製品及びサービスを含み、これらは、連携して全体的なインターネットパフォーマンスを向上させ、利用可能なインターネット帯域幅を最小限のコストで微調整(finetune)する。ネットワーク又は自律システムが複数のプロバイダからインターネット帯域幅を調達するシナリオでは、ルート制御を成功させることができる。ルート制御は、データ伝送のための最適なルートの選択を援助できる。
【0026】
一部のネットワーク通信システムは、数千の処理ノードを有する大規模な企業レベルのネットワークである。数千もの処理ノードが複数のインターネットサービスプロバイダ(Internet Service Provider:ISP)からの帯域幅を共有し、大量のインターネットトラフィックを処理できる。このようなシステムは、非常に複雑になる可能性があり、許容できるインターネットパフォーマンスを得るために適切に構成する必要がある。システムが最適なデータ伝送のために適切に構成されていないと、インターネットアクセスの速度が低下し、システムの帯域幅消費及びトラフィックが増大する可能性がある。この問題に対し、一連のサービスを実装することによって、これらの懸念を排除又は軽減できる。この一連のサービスは、ルーティング制御とも呼ばれる。
【0027】
ルーティング制御メカニズムの一実施形態は、ハードウェアとソフトウェアとから構成される。ルーティング制御メカニズムは、インターネットサービスプロバイダ(ISP)との接続を介して全ての発信トラフィック(outgoing traffic)を監視する。ルーティング制御メカニズムは、データの効率的な伝送のための最適パスの選択を支援する。ルーティング制御メカニズムは、全てのISPの性能及び効率を計算し、適用可能な領域において最適に動作したISPのみを選択できる。ルート制御デバイスは、コスト、パフォーマンス、及び帯域幅に関する定義済みのパラメータに従って構成できる。
【0028】
データ伝送のための最適パスを判定するための公知のアルゴリズムは、ボーダゲートウェイプロトコル(Border Gateway Protocol:BGP)と呼ばれる。BGPは、インターネット上の自律システムのルーティング情報を提供するパスベクトル(path-vector)プロトコルである。BGPが正しく構成されていないと、サーバの利用可能性及び安全性に問題が発生する可能性がある。更に、攻撃者は、BGPルート情報を変更することにより、トラフィックの大規模なブロックをリダイレクトして、トラフィックが目的の宛先に到達する前に、トラフィックを特定のルータに到達させることができる。BGP最適パスアルゴリズムを実装することによって、トラフィック転送用のインターネットプロトコル(Internet Protocol:IP)ルーティングテーブルにインストールする最適パスを判定できる。BGPルータは、同じ宛先への複数のパスを受信するように構成できる。
【0029】
BGP最適パスアルゴリズムは、最初の有効なパスを現在の最適パスとして割り当てる。BGP最適パスアルゴリズムは、BGPが有効パスのリストの最後に到達するまで、リスト内の次のパスと最適パスを比較する。このリストは、最適パスを判定するために使用される規則を提供する。例えば、リストは、重みが最も高いパスの優先、ローカル優先度がないパスの優先、ネットワーク又はアグリゲーションBGPによってローカルに発生したパスの優先、最短パスの優先、最小のマルチエグジットディスクリミネータ(multi-exit discriminator)を有するパスの優先等の指示情報を含むことができる。BGP最適パス選択プロセスは、カスタマイズできる。
【0030】
BGPルーティングのコンテキストでは、各ルーティングドメインは、自律システム(autonomous system:AS)と呼ばれる。BGPは、2つのルーティングドメインを接続するためのインターネット経由のパスの選択を支援する。BGPは、通常、最短ASパスと呼ばれる、最小数の自律システムを通過するルートを選択する。一実施形態では、一旦BGPが有効にされると、ルータは、BGPネイバからインターネットルートのリストをプルし、ここで、BGPネイバは、ISPであってもよい。次に、BGPは、リストを精査して、最も短いASパスを有するルートを発見する。これらのルートは、ルータのルーティングテーブルに入力してもよい。通常、ルータは、ASへの最短パスを選択する。BGPは、パス属性を使用して、トラフィックを特定のネットワークにどのようにルーティングするかを判定する。
【0031】
本開示に基づく原理の理解を深めるために、以下では、図示の実施形態を参照し、特定の表現を用いてこれを説明する。但し、これは、本開示の範囲を限定することを意図するものではない。ここに例示する本開示の特徴の任意の変更及び更なる修正、並びにここに例示する本開示の原理の任意の追加的な適用は、当業者が本開示に基づいて容易に想到できるものであり、特許請求の範囲に含まれる。
【0032】
ネットワークコンピューティング環境におけるオブジェクトのライフサイクルを追跡するための構造、システム、及び方法を開示及び説明する前に、本開示は、ここに開示される特定の構造、構成、プロセスステップ、及び材料に限定されず、そのような構造、構成、プロセスステップ、及び材料を変更してもよいことを明記する。また、本開示の範囲は、特許請求の範囲及びその均等物によってのみ制限されるものであるため、ここで使用される用語は、特定の実施形態を説明する目的でのみ使用され、限定を意図しないことは当然である。
【0033】
本開示の主題を記述し特許請求する際には、以下に記載する定義に従って、以下の用語を使用する。
【0034】
本明細書及び特許請求の範囲において使用する、単数形(冠詞「a」、「an」、及び「the」)は、文脈における特段の指定がない限り、複数の指示対象を含む。
【0035】
ここで使用する語句「備える」、「有する」、「含む」、「特徴とする」、及びこれらの文法的等価物は、記載されていない追加的な要素又は方法工程を除外しない非排他的又はオープンな用語である。
【0036】
ここで使用する語句「~からなる」及びその文法的等価物は、請求項に記載されていない任意の要素又は工程を除外する。
【0037】
ここで使用される語句「実質的に~からなる」及びその文法的等価物は、特許請求の範囲を、特定された材料又は工程、並びに特許請求された開示の基本的かつ新規な特性又は特徴に実質的に影響しない材料又は工程に限定する。
【0038】
以下の説明は、図面を参照し、図1は、デバイスをインターネットに接続するためのシステム100の概略図である。システム100は、スイッチ106によって接続された複数のローカルエリアネットワーク110を含む。複数のローカルエリアネットワーク110のそれぞれは、ルータ112によって、公衆インターネットを介して互いに接続可能である。図1に示す例示的なシステム100は、2つのローカルエリアネットワーク110を有する。但し、公衆インターネットを介して、より多くのローカルエリアネットワーク110を互いに接続してもよい。各ローカルエリアネットワーク110は、スイッチ106によって互いに接続された複数の演算デバイス108を含む。複数の演算デバイス108は、例えば、デスクトップコンピュータ、ラップトップ、プリンタ、サーバ等を含むことができる。ローカルエリアネットワーク110は、ルータ112によって、公衆インターネットを介して他のネットワークと通信できる。ルータ112は、複数のネットワークを互いに接続する。ルータ112は、インターネットサービスプロバイダ102に接続されている。インターネットサービスプロバイダ102は、1以上のネットワークサービスプロバイダ104に接続されている。ネットワークサービスプロバイダ104は、図1に示すように、他のローカルネットワークサービスプロバイダ104と通信を行う。
【0039】
スイッチ106は、パケットスイッチング(packet switching)を使用してローカルエリアネットワーク110内のデバイスを接続し、これによりデータが受信され、処理され、宛先デバイスに転送される。スイッチ106は、例えば、プリンタを宛先として、コンピュータからデータを受信するように構成できる。スイッチ106は、データを受信し、データを処理し、データをプリンタに送信できる。スイッチ106は、レイヤ1スイッチ、レイヤ2スイッチ、レイヤ3スイッチ、レイヤ4スイッチ、レイヤ7スイッチ等であってもよい。レイヤ1ネットワークデバイスは、データを転送するが、デバイスを通過するトラフィックは管理しない。レイヤ1ネットワークデバイスの例は、イーサネットハブである。レイヤ2ネットワークデバイスは、ハードウェアアドレスを使用してデータリンクレイヤ(レイヤ2)でデータを処理及び転送するマルチポートデバイスである。レイヤ3スイッチは、通常ルータによって実行される機能の一部又は全てを実行できる。但し、一部のネットワークスイッチは、単一タイプの物理ネットワーク、通常は、イーサネットをサポートするように制限されており、一方、ルータは、異なるポート上の異なる種類の物理ネットワークをサポートする場合がある。
【0040】
ルータ112は、コンピュータネットワーク間でデータパケットを転送するネットワーキングデバイスである。図1に示す例示的なシステム100において、ルータ112は、ローカルエリアネットワーク110間でデータパケットを転送する。但し、ルータ112は、必ずしもローカルエリアネットワーク110間のデータパケットの転送に適用される必要はなく、ワイドエリアネットワーク等の間のデータパケットの転送に使用してもよい。ルータ112は、インターネット上でトラフィックダイレクション機能(traffic direction function)を実行する。ルータ112は、銅ケーブル、光ファイバ、又は無線伝送等の異なるタイプの物理レイヤ接続のためのインタフェースを有してもよい。ルータ112は、異なるネットワークレイヤ伝送規格をサポートできる。各ネットワークインタフェースを使用することによって、データパケットをある伝送システムから別の伝送システムに転送できる。また、ルータ112は、それぞれが異なるネットワークプレフィックスを有する、サブネットと呼ばれるコンピュータデバイスの2以上の論理グループを接続するために使用してもよい。図1に示すように、ルータ112は、企業内、企業とインターネットとの間、又はインターネットサービスプロバイダのネットワーク間の接続を提供できる。幾つかのルータ112は、様々なインターネットサービスプロバイダを相互接続するように構成してもよく、大規模な企業ネットワーク内で使用してもよい。より小さいルータ112は、一般に、ホームネットワーク及びオフィスネットワークのインターネットへの接続を提供する。図1に示すルータ112は、エッジルータ、サブスクライバエッジルータ、プロバイダ間ボーダルータ、コアルータ、インターネットバックボーン、ポート転送、音声/データ/ファックス/ビデオ処理ルータ等のネットワーク伝送に適した任意のルータを表すことができる。
【0041】
インターネットサービスプロバイダ(ISP)102は、インターネットへのアクセス、利用、又は参加のためのサービスを提供する組織である。ISP102は、商用、コミュニティ所有、非営利、又は個人所有等の様々な形態で組織化できる。ISP102によって一般的に提供されるインターネットサービスは、インターネットアクセス、インターネット中継、ドメイン名登録、ウェブホスティング、ユースネットサービス、及びコロケーションを含む。図1に示すISP102は、ホスティングISP、中継ISP、仮想ISP、無料ISP、無線ISP等の任意の適切なISPを表すことができる。
【0042】
ネットワークサービスプロバイダ(NSP)104は、インターネットサービスプロバイダへの直接のインターネットバックボーンアクセスを提供することによって、帯域幅又はネットワークアクセスを提供する組織である。ネットワークサービスプロバイダは、ネットワークアクセスポイント(network access point:NAP)へのアクセスを提供できる。ネットワークサービスプロバイダ104は、バックボーンプロバイダ又はインターネットプロバイダとも呼ばれる。ネットワークサービスプロバイダ104は、電気通信業者、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、及び高速インターネットアクセスを提供するケーブルテレビ運営業者を含むことができる。また、ネットワークサービスプロバイダ104は、情報技術業者を含むこともできる。
【0043】
図1に示すシステム100は、単なる例示であり、ネットワークと演算デバイスとの間でデータを伝送するために多くの異なる構成及びシステムを構築できる。ネットワーク形成は、カスタマイズ可能性(customizability)が高いため、コンピュータ間又はネットワーク間でデータを伝送するための最良のルートを判定する際にも、カスタマイズ可能性をより高めることが望まれている。以上の観点から、ここでは、コンピュータ又は特定の企業の特定のグループ化に良好に適合する最適パスアルゴリズムを判定する際に、カスタマイズ可能性をより高めるために、最適パス計算を外部デバイスにオフロードするためのシステム、方法、及びデバイスを開示する。
【0044】
図2は、ここで説明する非同期オブジェクトマネージャによって管理される環境における、3タイプのオブジェクトA、B、及びCを含むオブジェクト構造200の概略図である。タイプA、タイプB、及びタイプCのオブジェクトインスタンスは、キーによって識別される。オブジェクトタイプAは、キーA1で表される。タイプBのオブジェクトは、キーB1及びキーB2によって表される。オブジェクトタイプCは、キーC1及びキーC2によって表される。矢印は、オブジェクト間の依存関係を表す。キーA1を有するオブジェクトタイプAは、キーB1及びキーB2を有するオブジェクトタイプBの両方に依存する。キーB1を有するオブジェクトタイプBは、キーC1を有するオブジェクトタイプCに依存する。キーB2を有するオブジェクトタイプBは、キーC2を有するオブジェクトタイプCに依存する。
【0045】
例示的な具体例では、タイプA及びタイプBのオブジェクトは、1つのプロデューサによって生成され、タイプCのオブジェクトは、別のプロデューサによって生成されるものとする。これらのオブジェクトの情報は、C、次にB、次にAの順にデータプレーンにプログラムできる。但し、プロデューサはこれらのオブジェクトを非同期的にプッシュするため、オブジェクトが順序どおりに到着しない可能性がある。
【0046】
ここで説明する非同期オブジェクトマネージャを使用することによって、上記の具体例に示す順序付け要件を解決できる。一実施形態では、全てのオブジェクトは、オブジェクトが受信された順序で非同期オブジェクトマネージャに追加される。非同期オブジェクトマネージャは、特定のオブジェクトの依存関係が解決されているかを検出する。非同期オブジェクトマネージャは、依存関係が解決されていることを判定すると、アプリケーションが提供するコールバックを呼び出し、更なるアクションのためにオブジェクトとそのアプリケーションの状態を渡す。
【0047】
この具体例では、オブジェクトの実際の到着順序は、B(B1)、A(A1)、B(B2)、C(C1)、及びC(C2)である。これを図3に示す。非同期オブジェクトマネージャはこの順序を変更し、適切な順序でアプリケーションのコールバックを開始する。オブジェクトの順序は、具体例毎に異なっていてもよい。オブジェクトの順序の例は、C(C1)、C(C2)、B(B1)、B(B2)、A(A1)である。これを図4に示す。
【0048】
同様に、プロデューサからの削除シーケンスは、C(C1)、C(C2)、B(B1)、B(B2)、A(A1)のようになる。非同期オブジェクトマネージャは、削除シーケンスをA(A1)、B(B1)、B(B2)、C(C1)、C(C2)のように並べ替える。これを図5に示す。
【0049】
依存関係は、非同期オブジェクトマネージャのシステム空間内のオブジェクトを識別する固有キーに従って定義できる。依存関係は、子オブジェクトが採用する親オブジェクトのキーを示してもよい。例えば、ルートオブジェクトに「nexthopID」というフィールドがあり、nexthopIDがNextHopオブジェクトのキーであるとする。ルータオブジェクトが非同期オブジェクトマネージャに追加されると、独立した依存関係リストにnexthopIDが含まれる。これにより、依存するNextHopオブジェクトが一意的に識別される。
【0050】
図6は、BGPインスタンス610によって実現される通信の概略図である。一実施形態では、システムに関連する情報を格納するBGPインスタンスに対してローカルなデータストア602がある。データストア602は、1以上のルータ又はスイッチの最適パス情報を格納するデータベースであってもよい。データストア602は、更に、CPU使用率、温度、ファン速度等のシステム状態情報、及びLED又は他のデバイス等の周辺機器の状態情報を格納してもよい。データストア602は、監視エージェントにとって有用な様々な情報を格納してもよい。データストア602内の情報は、そのような情報を必要とする可能性がある別のコントローラ又はデバイスにストリーミングできる。データストア602は、データベースインデックスを含むことができ、複数のホストを含むことができる。複数のホストのそれぞれは、プロセッサ及びキャッシュメモリを含むことができる。図6に示す実施形態では、データストア602は、データベースホスト1、データベースホスト2、データベースホスト3、…データベースホストnを含む。
【0051】
データストア602は、プロデューサ604、プロデューサコンシューマ606、及びコンシューマ608と通信する。プロデューサ604は、コンシューマ606によって消費される情報を生成するプロセスである。転送情報ベース(forwarding information base:FIB)(710)は、ルート及びネクストホップを生成する。FIBによって生成されるネクストホップは、インタフェースマネージャによって生成されるインタフェースに依存する。
【0052】
図7は、ネットワーキングデバイス702の概略図である。ネットワーキングデバイス702は、スイッチ106又はルータ112であってもよい。ネットワーキングデバイス702は、ハードウェア704、非同期オブジェクトマネージャ706、データプレーンアダプテーションレイヤ(data plane adaptation layer:DPAL)708、転送情報ベース(FIB)710、ルーティング情報ベース(RIB)712、構成エージェント、及びボーダゲートウェイプロトコル(BGP)716のうちの1以上を含む。ネットワーキングデバイス702は、ここに例示しない追加の構成要素を有してもよいことは当然である。
【0053】
ネットワーキングデバイス702のソフトウェア部分は、図4に示すソフトウェアスタック414に含まれてもよい。このソフトウェアスタック414は、ハードウェアと協働して、スイッチ又はルータ等のネットワーキングデバイス702の動作を実行する。一実施形態では、ネットワーキングデバイス702のソフトウェア部分は、BGPインスタンス内のローカルには位置せず、これに代えてクラウドストレージにオフロードされる。ソフトウェアスタック414は、クラウドストレージにオフロードされ、ネットワーキングデバイス702上にローカルにコピーしてもよい。
【0054】
一実施形態では、非同期オブジェクトマネージャ706は、異なる制御プレーン情報(例えば、図2図5ではオブジェクトとして表されている。)のライフサイクルを追跡するための1以上のアプリケーションプログラムインタフェースを提供する。非同期オブジェクトマネージャ706は、更に、オブジェクト間の依存関係を追跡する。非同期オブジェクトマネージャ706は、最下位レイヤに配置され、異なるプロデューサから非同期的に流れてくるシーケンス及び順序情報を支援する。
【0055】
一実施形態では、非同期オブジェクトマネージャ706は、オブジェクトを並べ替えるための状態マシンを実装する。一実施形態では、異なるプロデューサからのオブジェクトが必要な順序で到着しない場合、状態マシンは、親オブジェクトが作成されるまで、従属オブジェクトの作成又は更新を保留する。同様に、状態マシンは、依存しているオブジェクトが更新又は削除されるまで、オブジェクトの削除を保留する。非同期オブジェクトマネージャ706は、グラフに似たデータ構造を使用してオブジェクトを編成し、依存関係グラフの上又は下にオブジェクトを作成、更新、及び/又は削除する効果を再帰的に波及させることができる。これは、図2図5に示されている。
【0056】
非同期オブジェクトマネージャ706は、宣言型言語からなるフレームワークを含む。宣言型言語は、異なる種類のオブジェクト間の依存関係を表現する。宣言型言語を使用して、様々なオブジェクトタイプのスキーマを定義できる。更に、宣言型言語は、オブジェクトのキーを構成する属性や、オブジェクトの依存関係を識別するその他の属性と共に使用できる。一実施形態では、スキーマを定義した後、コードジェネレータを実行して、異なるオブジェクトのコードを生成できる。生成されたコードは、オブジェクトを表現するためのプログラミング言語構成体、オブジェクトを追加又は削除するためのAPI、キー及び従属キーを抽出するためのコードの自動生成、又はオブジェクト状態観察APIのうちの1以上をカバーする。
【0057】
更に、一実施形態では、非同期オブジェクトマネージャ706のフレームワークは、複数のスレッドがデータプレーンをプログラムすることを可能にすることによって、最下位レイヤのマルチスレッドアーキテクチャを可能にする。作業配分は、様々な方法で行うことができる。1つの方法は、1以上のデータプレーンデバイス(通常、ASICチップ)のためのデータプレーンプログラミングのケアを各スレッドに管理させることを含む。この方法では、プロデューサからの作業が1以上のワーカスレッド(worker thread)に亘って均等に分散されるため、処理が単純である。更に、各ワーカスレッドは、非同期オブジェクトマネージャ706フレームワークのインスタンスを有し、プロデューサからの情報を保持し、割り当てられたデバイスをプログラムする。
【0058】
別の方法は、同一デバイス上のデータプレーンテーブルの選択されたセットに対するプログラミングを各スレッドに実行させることを含む。この方法は、より複雑であり、ワーカスレッドを1以上のフィーチャオブジェクト(feature object)にマッピングする必要がある。ディストリビュータースレッドは、フィーチャオブジェクトをそれぞれのワーカスレッドに分配する役割を果たすことができる。ここで、オブジェクト間の関係が複数のスレッドにまたがる場合がある。非同期オブジェクトマネージャ706は、スレッド間のオブジェクト依存関係を追跡するための拡張機能を必要とする場合がある。同期は、スレッド間でのメッセージの受け渡しによって実現される。非同期オブジェクトマネージャ706は、オブジェクトが一度だけ削除され、そのオブジェクトに依存するオブジェクトが他のスレッド内に存在しないことを保証できる。
【0059】
転送情報ベース(FIB)710は、転送テーブルと呼ばれることもある。FIBは、入力インタフェースがオブジェクトを転送するべき適切な出力ネットワークインタフェースを識別するように構成される。FIBは、媒体アクセス制御(media access control:MAC)アドレスをポートにマッピングするダイナミックテーブルである。
【0060】
ルーティング情報ベース(RIB)712は、ルーティングテーブルとも呼ばれる。RIBは、ネットワーキングデバイス702に格納されたデータテーブルであり、特定のネットワーク宛先へのルートをリストし、場合によっては、ルートに関連するメトリック(距離)をリストする。RIB712は、ネットワーキングデバイス702の周囲のネットワークのトポロジに関する情報を含む。ルーティングテーブルの構築は、ボーダゲートウェイプロトコル(BGP)716等のルーティングプロトコルの主な目的である。
【0061】
図8は、デバイス810のノード804と、クラウドネットワーク828に格納されたコントローラロジック812との間の通信を行うシステム800の概略図である。コントローラロジック812は、非同期オブジェクトマネージャの動作のためのロジックを含むことができる。デバイス810は、ここで説明するように、スイッチ106又はルータ112であってもよい。ノード804は、構成エージェント806及び監視/遠隔測定(monitoring/telemetry)エージェント808を含む。デバイス810は、データストア802を含む。データストア802は、ノード804と共にローカルに格納してもよく、デバイス810に格納して複数のノードがアクセスできるようにしてもよく、クラウドストレージにオフロードしてもよく、又は外部に格納して複数のデバイス802がアクセスできるようにしてもよい。構成エージェント806は、コントローラロジック812の形式で命令を受信する。コントローラロジック812は、クラウドネットワーク上のクラウドベースのストレージに格納され、デバイス810がネットワークを介してアクセスできるようにされている。構成エージェント806は、監視/遠隔測定エージェント808に命令を出す。監視/遠隔測定エージェント808は、データストア802から情報を受信する。データストア802は、図に示すように、アプリケーション1、アプリケーション2、…アプリケーションNの複数のアプリケーションに関する情報を格納できる。
【0062】
図9は、マルチノードデータストアのアーキテクチャ900の概略図である。ここに例示するアーキテクチャ900は、別個のブロックNode1及びNodeNとして示される2つのノードを含む。なお、本開示の異なる実施形態及び具体例に適した任意の数のノードが存在し得ることは当然である。Node1は、内部ファブリック926と通信するデュプリケータエージェント910を含み、内部ファブリック926は、NodeNのレプリケータエージェント904との通信を提供する。Node1の構成エージェント906は、クラウド928ネットワークと通信し、このネットワークは、データストア902のためのコントローラロジック912を含む。各ノードは、データストア902のコピーを含む。データストア902内の情報は、アプリケーション1、アプリケーション2、…アプリケーションNの複数のアプリケーションがアクセス及び使用できる。NodeNの監視/遠隔測定エージェント908は、データストア902及びクラウド928ネットワークと通信する。Node1の構成エージェント906は、クラウド928ネットワークを介してNodeNの監視/遠隔測定エージェント908と通信できる。
【0063】
図10は、ネットワーキングデバイスで送信されるデータを非同期的に受信し並び替える方法1000の概略的ブロック図である。方法1000は、ここで説明する非同期オブジェクトマネージャ706又は任意の適切な演算デバイスによって実行できる。
【0064】
方法1000が開始されると、演算デバイスは、1002において、1以上のプロデューサから複数のオブジェクトを非同期的に受信する。オブジェクトには、例えば、ルート、ネクストホップ、等コストマルチパスグループ、インタフェース、ACL、ACE、QoSクラス、サブインタフェース、仮想ローカルエリアネットワーク等が含まれる。続いて、方法1000の1004において、演算デバイスは、複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別する。続いて、方法1000の1006において、演算デバイスは、1以上の依存関係に基づいて複数のオブジェクトを並べ替える。続いて、方法1000の1008において、演算デバイスは、1以上の依存関係が解決されたかを判定する。方法1000は、1010において、1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、複数のオブジェクトの1以上をアプリケーションに提供することを含む。
【0065】
図11は、ネットワーキングデバイスの動作を改善するための方法1100の概略的ブロック図である。方法1100は、ここで説明する非同期オブジェクトマネージャ706又は任意の適切な演算デバイスによって実行できる。
【0066】
方法1100が開始されると、演算デバイスは、1102において、ネットワークデバイスに既知の複数のルートの状態を保存する。方法1100は、1104において、第1のルートがオフラインであるという指示情報を受信することを含む。続いて、方法1100の1106において、演算デバイスは、第1のルートに関連する第1のインターフェーズリンク(interphase link)を識別する。続いて、方法1100の1108において、演算デバイスは、第1のルートに関連する置換用インターフェーズリンクを識別する。この識別は、ボーダゲートウェイプロトコル(BGP)アルゴリズムを実行して2つの場所の間の最適パスを判定することによって実行してもよい。続いて、方法1100の1110において、演算デバイスは、第1のルートが第1のインターフェーズリンクではなく置換用インターフェーズリンクで処理されるべきであるという指示情報をネットワーキングデバイスのルーティングチップハードウェアに提供する。
【0067】
図12は、例示的な演算デバイス1200のブロック図である。演算デバイス1200を使用して、ここで説明するような様々な手順を実行できる。一実施形態では、演算デバイス1200は、非同期オブジェクトマネージャの機能を実行するように機能でき、1以上のアプリケーションプログラムを実行できる。演算デバイス1200は、デスクトップコンピュータ、インダッシュコンピュータ、車両制御システム、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ等の多種多様な演算デバイスの何れであってもよい。
【0068】
演算デバイス1200は、1以上のプロセッサ1202と、1以上のメモリデバイス1204と、1以上のインタフェース1206と、1以上の大容量ストレージデバイス1208と、1以上の入出力(I/O)デバイス1210と、表示デバイス1230とを含み、これらは、全てバス1212に接続されている。プロセッサ1202は、メモリデバイス1204及び/又は大容量ストレージデバイス1208に格納された命令を実行する1以上のプロセッサ又はコントローラを含む。また、プロセッサ1202は、キャッシュメモリ等の種々のタイプのコンピュータ可読媒体を含むことができる。
【0069】
メモリデバイス1204は、揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory:RAM)1214)及び/又は不揮発性メモリ(例えば、読出専用メモリ(read-only memory:ROM)1216)等の種々のコンピュータ可読媒体を含む。また、メモリデバイス1204は、フラッシュメモリ等の書換可能ROMを含むことができる。
【0070】
大容量ストレージデバイス1208は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ(フラッシュメモリ等)等の種々のコンピュータ可読媒体を含む。図12に示すように、具体的な大容量ストレージデバイスは、ハードディスクドライブ1224である。大容量ストレージデバイス1208には、種々のコンピュータ可読媒体からの読出及び/又は種々のコンピュータ可読媒体への書込を可能にするために、種々のドライブを含めることもできる。大容量ストレージデバイス1208は、リムーバブルメディア1226及び/又は非リムーバブルメディアを含む。
【0071】
入出力(I/O)デバイス1210は、データ及び/又は他の情報を演算デバイスに入力し又は演算デバイス1200から取り出すことを可能にする様々なデバイスを含む。I/Oデバイス1210には、カーソル制御デバイス、キーボード、キーパッド、マイクロホン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム等が含まれる。
【0072】
表示デバイス1230は、演算デバイス1200の1人以上のユーザに情報を表示できる任意のタイプのデバイスを含む。表示デバイス1230としては、例えば、モニタ、表示端末、映像投影デバイス等が挙げられる。
【0073】
インタフェース1206は、演算デバイス1200が他のシステム、デバイス、又はコンピューティング環境とインタラクションすることを可能にする様々なインタフェースを含む。インタフェース1206は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェース1220を含むことができる。他のインタフェースは、ユーザインタフェース1218及び周辺デバイスインタフェース1222を含む。また、インタフェース1206は、1以上のユーザインタフェース要素1218を含むことができる。更に、インタフェース1206は、プリンタ、ポインティングデバイス(マウス、トラックパッド、又は当業者に現在知られている任意の適切なユーザインタフェース、又は今後開発される任意の適切なユーザインタフェース)、キーボード等のためのインタフェース等、1以上の周辺インタフェースを含んでもよい。
【0074】
バス1212は、プロセッサ1202、メモリデバイス1204、インタフェース1206、大容量ストレージデバイス1208、及びI/Oデバイス1210が互いに、及びバス1212に接続された他のデバイス又はコンポーネントと通信することを可能にする。バス1212は、システムバス、PCIバス、IEEEバス、USBバス等の幾つかのタイプのバス構造のうちの1以上を表す。
【0075】
ここでは、説明のため、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、このようなプログラム及び構成要素は、演算デバイス1200の異なる記憶構成要素内に様々な時点で存在してもよく、プロセッサ1202によって実行される。これに代えて、ここに記載のシステム及び手順は、ハードウェアで実現してもよく、ハードウェア、ソフトウェア、及び/又はファームウェアの組み合わせで実現してもよい。例えば、ここに記載のシステム及び手順の1以上を実行するように1以上の特定用途向け集積回路(application specific integrated circuit:ASIC)をプログラムできる。
【0076】
上記の記述は、例示及び説明を目的としている。本開示は、ここに説明する詳細な形式に排他的に限定されない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【0077】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
【実施例
【0078】
以下の実施例は、更なる実施形態に関する。
【0079】
実施例1は、システムである。システムは、ルーティングチップハードウェアと、ルーティングチップハードウェアと通信する非同期オブジェクトマネージャとを含む。非同期オブジェクトマネージャは、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能である。命令は、1以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。命令は、複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することを含む。命令は、1以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。命令は、1以上の依存関係が解決されているかを判定することを含む。命令は、1以上の依存関係が解決されているとの判定に応じて、アプリケーションをコールバックし、複数のオブジェクトの1以上をアプリケーションに提供することを含む。
【0080】
実施例2は、非同期オブジェクトマネージャは、状態マシンを含む、実施例1に記載のシステムである。
【0081】
実施例3は、非同期オブジェクトマネージャは、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤである、実施例1又は2に記載のシステムである。
【0082】
実施例4は、1以上のプロデューサは、アプリケーション、プロセス、スレッド、又は機能の1以上を含む、実施例1~3の何れかに記載のシステムである。
【0083】
実施例5は、命令は、更に、第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例1~4の何れかに記載のシステムである。
【0084】
実施例6は、更に、非同期オブジェクトマネージャ及びルーティングチップハードウェアと通信するデータプレーンアダプテーションレイヤ(DPAL)を備え、非同期オブジェクトマネージャのための命令は、第1の場所から最終的な宛先に送信されるメッセージのためのルートを作成するためのメッセージをDPALから受信することと、メッセージのためのルートを作成することと、DPALへのルートを提供することと、を含む、実施例1~5の何れかに記載のシステムである。
【0085】
実施例7は、ここでは、命令は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第1のルートがオフラインであるという指示情報を受信することと、第1のルートに関連する第1のインターフェーズリンクを識別することと、第1のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第1のルートが、第1のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例1~6の何れかに記載のシステムである。
【0086】
実施例8は、非同期オブジェクトマネージャは、第1のプロデューサが、ネクストホップの第2のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供する、実施例1~7の何れかに記載のシステムである。
【0087】
実施例9は、非同期オブジェクトマネージャは、スイッチ又はルータ上で動作する互換性を有する、実施例1~8の何れかに記載のシステムである。
【0088】
実施例10は、命令は、更に、1以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、1以上の依存関係に基づいて削除シーケンスを並べ替えることと、を含む、実施例1~9の何れかに記載のシステムである。
【0089】
実施例11は、非一時的コンピュータ可読記憶媒体に格納された命令を実行するように構成可能な1以上のプロセッサである。命令は、1以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。命令は、複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することを含む。命令は、1以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。命令は、1以上の依存関係が解決されたかを判定することを含む。命令は、1以上の依存関係が解決されているとの判定に応答して、アプリケーションをコールバックし、複数のオブジェクトの1以上をアプリケーションに提供することを含む。
【0090】
実施例12は、命令は、更に、第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例11に記載の1以上のプロセッサである。
【0091】
実施例13は、命令は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第1のルートがオフラインであるという指示情報を受信することと、第1のルートに関連する第1のインターフェーズリンクを識別することと、第1のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第1のルートが、第1のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例11~12の何れかに記載の1以上のプロセッサである。
【0092】
実施例14は、命令は、更に、第1のプロデューサが、ネクストホップの第2のプロデューサに直接メッセージを提供する代わりに、非同期オブジェクトマネージャにメッセージを提供する手段を提供することを含む、実施例11~13の何れかに記載の1以上のプロセッサである。
【0093】
実施例15は、1以上のプロセッサのための命令は、スイッチ又はルータ上で動作する互換性を有する、実施例11~14の何れかに記載の1以上のプロセッサである。
【0094】
実施例16は、方法である。方法は、1以上のプロデューサから複数のオブジェクトを非同期的に受信することを含む。方法は、複数のオブジェクトのうちの2以上のオブジェクト間の1以上の依存関係を識別することを含む。方法は、1以上の依存関係に基づいて複数のオブジェクトを並べ替えることを含む。方法は、1以上の依存関係が解決されたかを判定することを含む。方法は、1以上の依存関係が解決されているとの判定に応答して、アプリケーションをコールバックし、複数のオブジェクトのうちの1以上をアプリケーションに提供することを含む。
【0095】
実施例17は、更に、第1のルートが第1のインターフェーズリンクを介して処理される必要があることを示すメッセージをルーティングチップハードウェアに提供することを含む、実施例16に記載の方法である。
【0096】
実施例18は、非同期オブジェクトマネージャは、状態マシンを含み、ネットワーキングデバイスの動作を管理するためのソフトウェアスタックの最下位レイヤに位置する、実施例16~17の何れかに記載の方法である。
【0097】
実施例19は、更に、非同期オブジェクトマネージャにとって既知の複数のルートの状態を保存することと、第1のルートがオフラインであるという指示情報を受信することと、第1のルートに関連する第1のインターフェーズリンクを識別することと、第1のルートに関連付ける置換用インターフェーズリンクを識別することと、ルーティングチップハードウェアに、第1のルートが、第1のインターフェーズリンクではなく置換用インターフェーズリンクで処理される必要があるという指示情報を提供することと、を含む、実施例16~18の何れかに記載の方法である。
【0098】
実施例20は、更に、1以上のプロデューサから複数のオブジェクトの削除シーケンスを受信することと、1以上の依存関係に基づいて削除シーケンスを並べ替えることと、を含む、実施例16~19の何れかに記載の方法である。
【0099】
なお、上述の構成、実施例、及び実施形態の任意の特徴は、ここに開示する構成、実施例、及び実施形態の何れかから得られる特徴の組み合わせを含む単一の実施形態において組み合わせることができる。
【0100】
ここに開示する種々の特徴は、当技術分野における重要な利点及び進歩を提供する。以下の特許請求の範囲は、これらの特徴の幾つかの例示である。
【0101】
本開示の前述の詳細な説明では、開示を合理化する目的で、開示の様々な特徴を1つの実施形態にまとめている。この開示方法は、特許請求された開示が各請求項において明示的に記載されている特徴よりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。すなわち、本発明の態様の特徴は、先に開示した単一の実施形態の全ての特徴よりも少ない。
【0102】
上記の構成は、本開示の原理の適用の単なる例示である。当業者は、本開示の思想及び範囲から逸脱することなく、多くの変更及び代替の構成を想到でき、特許請求の範囲は、このような修正及び構成を網羅することを意図している。
【0103】
したがって、本開示を図面に示し、上に詳細に説明しているが、ここに記載されている原理及び概念から逸脱することなく、サイズ、材料、形状、形態、機能、動作、組み立て、及び使用のバリエーションを含むと共に、これらに限定されない多数の変更を想到できることは、当業者にとって明らかである。
【0104】
更に、ここに記載される機能は、適切な場合、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントのうちの1以上において実行できる。例えば、1以上の特定用途向け集積回路(application specific integrated circuit:ASIC)又はフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)をプログラムして、ここに記載のシステム及び手順の1以上を実行できる。説明及び特許請求の範囲を通して、特定のシステム構成要素を指すために、特定の用語を使用している。構成要素は、異なる名称で呼ぶことができることは、当業者にとって明らかである。本文書は、名称が異なるが機能が同じコンポーネントを区別することを意図していない。
【0105】
上記の記述は、例示及び説明を目的としている。これは、本発明を開示された詳細な形式に排他的に限定することを意図するものではない。上記の教示を参照することにより、多くの変更及び変形が可能である。更に、前述の変形例の何れか又は全ては、任意に組み合わせることができ、本開示の更なる組み合わせ例を形成できる。
【0106】
更に、本開示の具体的な実施例を説明及び図示しているが、本開示は、そのように説明及び図示された部分の具体的な形態又は配置に限定されるものではない。本開示の範囲は、本願の特許請求の範囲によって定義され、あるいは、将来に提出される特許請求の範囲、本願に基づく別出願、及びこれらの均等物があれば、これらによって定義される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12