特許第5770256号(P5770256)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インテル・コーポレーションの特許一覧

特許5770256群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法
<>
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000004
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000005
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000006
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000007
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000008
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000009
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000010
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000011
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000012
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000013
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000014
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000015
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000016
  • 特許5770256-群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5770256
(24)【登録日】2015年7月3日
(45)【発行日】2015年8月26日
(54)【発明の名称】群知能を利用する大規模分散型システムにおける情報ルーティングのために枠組みを利用するシステムおよび方法
(51)【国際特許分類】
   H04L 12/721 20130101AFI20150806BHJP
【FI】
   H04L12/721 Z
【請求項の数】20
【全頁数】35
(21)【出願番号】特願2013-257390(P2013-257390)
(22)【出願日】2013年12月12日
(62)【分割の表示】特願2012-539862(P2012-539862)の分割
【原出願日】2009年12月18日
(65)【公開番号】特開2014-96812(P2014-96812A)
(43)【公開日】2014年5月22日
【審査請求日】2013年12月13日
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ワン、ウェンディ、シー.
(72)【発明者】
【氏名】ザオ、メイヤン
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 特開2003−087265(JP,A)
【文献】 特表2007−515871(JP,A)
【文献】 特開2006−180490(JP,A)
【文献】 特開2009−284448(JP,A)
【文献】 国際公開第2009/130918(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/26,12/50−12/955
(57)【特許請求の範囲】
【請求項1】
情報/サービスおよび対応する機能パラメータを提供するノードのリストを有し、ネットワークで利用可能な情報/サービスに対応する情報を受信すると自動更新される情報ルーティングテーブルを利用して、所望の情報/サービスのタイプを提供する少なくとも1つのプロバイダノードを前記ネットワーク上で発見する段階と、
前記情報ルーティングテーブルの前記ノードのリストから、前記所望の情報/サービスのタイプを提供するプロバイダノードを1つ、一部には前記プロバイダノードの確率尺度に基づいて選択する段階と、
前記選択されたプロバイダノードに接続して、前記情報/サービスのタイプにアクセスする段階と
を備え、
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率である、方法。
【請求項2】
前記選択する段階はさらに、前記プロバイダノードの評価係数に一部基づいて行われる請求項1に記載の方法。
【請求項3】
前記ネットワーク上の情報/サービスに対応する情報は、前記情報/サービスのタイプを提供するノードに関する情報の要求、および/または、前記情報/サービスのタイプを提供するノードに関する、要求していないが受信された情報に応じて受信される請求項1または請求項2に記載の方法。
【請求項4】
前記ネットワーク上で利用可能な情報/サービスに対応して受信した情報を選択的に転送する段階をさらに備え、前記転送は、ルーティングテーブルのルーティング情報および需要尺度と、前記情報の新しさとに基づいて行われ
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項1から請求項3のいずれか1つに記載の方法。
【請求項5】
提供された情報/サービスのタイプに対応するネットワーク上の複数のノードに情報を送信する段階を備え、
前記情報は、前記情報/サービスのタイプを提供したノードのアドレスと、メッセージ生成時間コードと、機能パラメータと、ホッピングカウントと、転送フラグとを含み、
前記情報を送信する段階は、情報/サービスのタイプに関するクエリ、前記情報/サービスのタイプの利用可能性の変更、前記情報/サービスのタイプを提供する前記ノードの機能の変更、および、定期的な間隔プッシュ要件に応じて行われ、
前記送信された情報を受信するノードは、情報/サービスおよび対応するプロバイダノードのリストを含むテーブルを自動更新し、各エントリは、前記対応するプロバイダノードに関連付けられた機能パラメータおよび評価係数を含む方法。
【請求項6】
前記ネットワーク上の他のノードに関するルーティングテーブルの確率尺度またはノードの需要尺度、前記ホッピングカウントに基づく前記情報の新しさ、および、前記転送フラグの少なくとも1つに一部基づいて、前記ネットワーク上の前記他のノードに前記情報を選択的に転送する段階をさらに備え、
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率であり、
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項5に記載の方法。
【請求項7】
選択的な転送は、さらに、情報/サービスおよび対応するプロバイダノードのリストと、さらに、前記情報/サービスのタイプに興味のあるノードのリストとを含む前記テーブルの情報に一部基づいて行われる請求項6に記載の方法。
【請求項8】
コンピュータに、
情報/サービスおよび対応する機能パラメータを提供するノードのリストを有し、ネットワークで利用可能な情報/サービスに対応する情報を受信すると自動更新される情報ルーティングテーブルを利用して、所望の情報/サービスのタイプを提供する少なくとも1つのプロバイダノードを前記ネットワーク上で発見する段階と、
前記情報ルーティングテーブルの前記ノードのリストから、前記所望の情報/サービスのタイプを提供するプロバイダノードを1つ、一部には前記プロバイダノードの確率尺度に基づいて選択する段階と、
前記選択されたプロバイダノードに接続して、前記情報/サービスのタイプにアクセスする段階と
を実行させ
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率である、プログラム。
【請求項9】
前記選択する段階はさらに、前記プロバイダノードの評価係数に一部基づいて行われる請求項8に記載のプログラム。
【請求項10】
前記ネットワーク上の情報/サービスに対応する情報は、前記情報/サービスのタイプを提供するノードに関する情報の要求、および/または、前記情報/サービスのタイプを提供するノードに関する、要求していないが受信された情報に応じて受信される請求項8または請求項9に記載のプログラム。
【請求項11】
前記ネットワーク上で利用可能な情報/サービスに対応して受信した情報を選択的に転送する段階をさらに実行させ、前記転送は、ルーティングテーブルのルーティング情報および需要尺度と、前記情報の新しさとに基づいて行われ
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項8から請求項10のいずれか1つに記載のプログラム。
【請求項12】
コンピュータに、
提供された情報/サービスのタイプに対応するネットワーク上の複数のノードに情報を送信する段階を実行させるためのプログラムであって、
前記情報は、前記情報/サービスのタイプを提供したノードのアドレスと、メッセージ生成時間コードと、機能パラメータと、ホッピングカウントと、転送フラグとを含み、
前記情報を送信する段階は、情報/サービスのタイプに関するクエリ、前記情報/サービスのタイプの利用可能性の変更、前記情報/サービスのタイプを提供する前記ノードの機能の変更、および、定期的な間隔プッシュ要件に応じて行われ、
前記送信された情報を受信するノードは、情報/サービスおよび対応するプロバイダノードのリストを含むテーブルを自動更新し、各エントリは、前記対応するプロバイダノードに関連付けられた機能パラメータおよび評価係数を含む、プログラム。
【請求項13】
前記ネットワーク上の他のノードに関するルーティングテーブルの確率尺度またはノードの需要尺度、前記ホッピングカウントに基づく前記情報の新しさ、および、前記転送フラグの少なくとも1つに一部基づいて前記ネットワーク上の前記他のノードに前記情報を選択的に転送する段階をさらに実行させ、
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率であり、
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項12に記載のプログラム。
【請求項14】
選択的な転送は、さらに、情報/サービスおよび対応するプロバイダノードのリストと、さらに、前記情報/サービスのタイプに興味のあるノードのリストとを含む前記テーブルの情報に一部基づいて行われる請求項13に記載のプログラム。
【請求項15】
情報/サービスおよび対応する機能パラメータを提供するノードのリストを有し、ネットワークで利用可能な情報/サービスに対応する情報を受信すると自動更新される情報ルーティングテーブルを利用して、所望の情報/サービスのタイプを提供する少なくとも1つのプロバイダノードを前記ネットワーク上で発見する手段と、
前記情報ルーティングテーブルの前記ノードのリストから、前記所望の情報/サービスのタイプを提供するプロバイダノードを1つ、一部には前記プロバイダノードの確率尺度に基づいて選択する手段と、
前記選択されたプロバイダノードに接続して、前記情報/サービスのタイプにアクセスする手段と
を備え、
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率である、ネットワーク上の消費ノード。
【請求項16】
前記選択する手段は、前記プロバイダノードの評価係数に一部基づいて前記プロバイダノードを選択する請求項15に記載の消費ノード。
【請求項17】
前記ネットワーク上の情報/サービスに対応する情報は、前記情報/サービスのタイプを提供するノードに関する情報の要求、および/または、前記情報/サービスのタイプを提供するノードに関する、要求していないが受信された情報に応じて受信される請求項15または請求項16に記載の消費ノード。
【請求項18】
前記ネットワーク上で利用可能な情報/サービスに対応して受信した情報を選択的に転送する手段をさらに備え、前記転送は、ルーティングテーブルのルーティング情報および需要尺度と、前記情報の新しさとに基づいて行われ
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項15から請求項17のいずれか1つに記載の消費ノード。
【請求項19】
提供された情報/サービスのタイプに対応するネットワーク上の複数のノードに情報を送信する手段を備え、
前記情報は、前記情報/サービスのタイプを提供したノードのアドレスと、メッセージ生成時間コードと、機能パラメータと、ホッピングカウントと、転送フラグとを含み、
前記情報を送信する段階は、情報/サービスのタイプに関するクエリ、前記情報/サービスのタイプの利用可能性の変更、前記情報/サービスのタイプを提供する前記ノードの機能の変更、および、定期的な間隔プッシュ要件に応じて行われ、
前記送信された情報を受信するノードは、情報/サービスおよび対応するプロバイダノードのリストを含むテーブルを自動更新し、各エントリは、前記対応するプロバイダノードに関連付けられた機能パラメータおよび評価係数を含む、ネットワーク上のプロバイダノード。
【請求項20】
前記ネットワーク上の他のノードに関するルーティングテーブルの確率尺度またはノードの需要尺度、前記ホッピングカウントに基づく前記情報の新しさ、および、前記転送フラグの少なくとも1つに一部基づいて前記ネットワーク上の前記他のノードに前記情報を選択的に転送する段階をさらに実行させ、
前記確率尺度は、情報/サービスのタイプを提供するために特定のプロバイダノードが選択される確率であり、
前記需要尺度は、時間窓において特定のノードがパケットの宛先ノードに設定される頻度の尺度である、請求項19に記載のプロバイダノード。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一実施形態は概して、ネットワークにおける情報ルーティング(つまり、ノードに、迅速に必要な情報を発見させて、ノードに、関連者(関連機器)に迅速に分散する技術)に係り、より詳しくは、特にクラウドコンピューティングアプリケーションにおける、群知能の枠組みの定義、および、ネットワークにおいて情報をルーティングするように定義された枠組みの利用に係る。
【背景技術】
【0002】
新たな「インターネット時代」には、ネットワークのリソースとなりうるもの(例えば利用可能なサービスおよび情報)は至る所に存在している。例えば、サーバクラウドコンピューティングアプリケーションでは、多数のデータセンター/サーバが協働して、クライアントにデータ格納/サービス/計算力を提供する。ネットワーク条件、ネットワークの振る舞い、およびアプリケーションの変化によって、リソース利用可能性は動的になる。データセンター/サーバを自動管理することで、クライアントのサービス要求ワークロード、信頼性、ロバストネス、およびパフォーマンス要件に対して迅速に応える必要がある。また、サーバ/クライアントセンターが提供するサービス/情報は、均質ではなく、リッチで多岐にわたる。サーバ/データセンターおよびクライアントが、これら多岐にわたる情報を効果的に管理して、動的な情報利用状況についていくことは容易ではない。ピアノード同士が協働して、サービスを提供したり消費したりするようなクライアント・クラウドコンピューティングアプリケーションでは、複数のクライアントマシンが起動したり停止したり、という動作を予測不可能に行う、という複雑性も加わる。従って、リソース管理システムは、各ノードの動的状況を把握して、ネットワークの残りのメンバーを更新するべく、かなり迅速に動く必要がある。
【0003】
群知能を利用する技術については既に様々な研究がなされており、特に蟻の行動に基づく技術(ant-based technology)は、ネットワーク分散処理に纏わる課題の解決に多用されている。既存のネットワーク情報/リソース管理システムでは、集中型の手動モードを利用して、大規模ネットワークにおける情報/リソース分散/取得のサポートを試みる。このようなシステムでは、1つまたは一式のサーバがネットワークリソースを管理して、サーバは、常にクライアントが利用可能な状態を保つ努力をする必要がある。ネットワークが大型化を続ける昨今、ネットワークの動力学に遅れないで反応することは、益々難しくなってきている。
【0004】
(1)Gianni Di Caro氏、Marco Dorigo氏著の「蟻ネット:通信ネットワークの、分散された間接的なインタラクション(スティグメリ:Stigmergetic)による制御」人口知能研究ジャーナル(Journal of Artificial Intelligence Research)、9(1998)、317−365ページ、および(2)Ruud Shoonderwoerd氏、Owen Holland氏、Janet Bruten氏、Leon Rothkrantz氏著の「電話通信ネットワークにおける蟻の行動を利用した負荷の均等化」、適応行動学論文誌(Adaptive Behavior)、5巻、2号、1996で、蟻の行動に基づくルーティングプロトコルを利用すると、大規模なネットワークにおいて効率的にルーティングを大まかにサポートすることができることが証明されている。
【0005】
現在、群知能を利用したプロトコルに関する文献としては、Tao Jiang氏およびJohn S.Baras氏による「MANETにおける蟻の行動を応用した適応的な信頼できる証拠の分散(Ant-Based Adaptive Trust Evidence Distribution in MANET)」、第24回伝播コンピューティングシステム研究発表会報告書(ICDCSW'04)2004がある。この文献(以下「Jiang氏等」と称する)は、蟻の行動に基づく情報配信を提供する。この文献の著者たちは、蟻と見立てたエージェントを利用して、証明書(信頼できる証拠である)を暫定的なモバイルネットワーク(MANET)から取得している。Jiang氏等の教示は、ルーティングテーブルによるルーティングではなくて、ノードが必要とする情報を直接探すためのシステムを教示している。ルーティングテーブルは、特定の情報を探すためのキーワードを利用する情報ルーティングテーブルで置き換えられている。探すべき唯一の情報は、対象となる実体が索引となっている証明書である。
【0006】
本発明の特徴および利点は、以下の本発明の詳細な記載から明らかになる。
【図面の簡単な説明】
【0007】
図1】本発明の一実施形態における、蟻の行動に基づく情報分散ネットワークを提供するためのネットワークノードで見つかる基本コンポーネントのブロック図である。
図2】本発明の一実施形態における、特定の機能パラメータを持つ情報またはサービスを提供するノードを特定するための情報ルーティングテーブルを例示する。
図3】確率に関する情報を割り当てるためのビンの代表的な利用例を示す。
図4】確率に関する情報を割り当てるためのビンの代表的な利用例を示す。
図5】確率に関する情報を割り当てるためのビンの代表的な利用例を示す。
図6】確率に関する情報を割り当てるためのビンの代表的な利用例を示す。
図7】本発明の一実施形態における、ネットワーク上のクエリ蟻とクエリ応答蟻との間の通信を示すネットワーク上のノード例のブロック図である。
図8】本発明の一実施形態における、ネットワーク全体のノードに対する情報/サービスの伝播を促すための追加情報を示す情報ルーティングテーブルの一例である。
図9】本発明の一実施形態における、サービス/情報提供ノードによる、ネットワーク全体のノードに対する情報の伝播方法を示すフロー図である。
図10A】本発明の一実施形態における、確率と需要(popularity)尺度を示す追加エレメントを有するルーティングテーブルを表している。
図10B】本発明の一実施形態における、確率と需要(popularity)尺度を示す追加エレメントを有するルーティングテーブルを表している。
図11A】本発明の一実施形態における、情報/サービス提供ノードを探すべく、クエリ蟻をネットワーク全体に伝播させる方法を示すフロー図である。
図11B】本発明の一実施形態における、情報/サービス提供ノードを探すべく、クエリ蟻をネットワーク全体に伝播させる方法を示すフロー図である。
図12】本発明の一実施形態において、ルーティングテーブルで各ノードの確率尺度の利用および需要尺度の利用に基づいて、ネットワークののどにクエリ蟻を伝播させる様子を示すグラフである。
【発明を実施するための形態】
【0008】
本発明の一実施形態は、群知能を利用して、データ格納/コンピューティングリソースを必要としているクライアントと、必要なデータ格納/コンピューティングリソースを提供することのできるデータセンターとを1つにまとめることで、ネットワークでクラウドコンピューティングを可能とするシステムおよび方法である。Jiang氏等のプロトコルには幾つか課題があり、これを本発明の実施形態が解決している。Jiang氏等の技術では、証明書という1種類の情報しかサポートされていない。Jiang氏等の解決法は、特定の課題にしか利用できないが、本発明の実施形態では、複数の種類の情報にも対処できる柔軟な枠組みを提供している。さらに、本発明の実施形態では、Jiang氏等のプロトコルが実現していない、接続情報、ルーティングテーブル更新、および、古くなった情報等の他のデータ源を用いた情報テーブルの管理が提供される。
【0009】
本発明の明細書における「一実施形態」といった言い回しは、その実施形態との関連で記載される特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれていることを示している。従って「一実施形態」といった言い回しは、明細書の随所に利用されていようとも、これらは必ずしも同じ実施形態のことを言っている場合ばかりではない。
【0010】
説明の便宜上、特定の構成および詳細を述べて、本発明の完全な理解を促している。しかし当業者には明らかなように、本発明の実施形態は、記載されている特定の詳細がなくとも実施可能な場合がある。さらに、公知な特徴は省いたり簡略化して描いたりすることで、本発明を不当に曖昧にしないようにしている箇所もある。記載中には様々な例示を行う。これらは本発明の特定の実施形態を記載しているにすぎない。本発明の範囲はこれら例示に限定はされない。
【0011】
既存の集中型の手動の情報分散/取得システムでは、大規模ネットワークにおける情報/リソース伝播/取得をサポートしたり、ユーザのロバストネスおよび信頼性要件に応えたりすることができない。本発明の実施形態は、蟻の行動に基づく方法を利用して、情報の発信および取得をサポートするために情報ルーティングテーブルを構築、維持、および利用する。これにより、ロバストネスの内在性および不良に強い性質といった利点が得られる。蟻の行動に基づくルーティングの本質により、ここに記載するプロトコルでは、複数の宛先が自然にサポートされるようになる。従って、機器の不良または悪意ある攻撃によって1つの宛先が不能になった場合でも、まだ別の宛先が複数選択可能である。自動ネットワーク負荷の均等化、および、トラフィックの混雑回避も行うことができるようになる。複数の宛先を確保すること、および、宛先選択を確率論的に行うことにより、異なる宛先の選択が可能となり、ネットワークの随所へトラフィックを伝播することができるようになる。このような構想により、トラフィックの混雑を回避できる。情報/サービスのダイバーシティも提供される。情報ルーティングテーブルは柔軟性に富み、多岐にわたる種類の情報を収容することができる。大規模分散ネットワークをサポートすることもできる。ネットワークの動力学の変化に効果的についていくことができるようになる。実施形態では、人口蟻の行う有効利用(exploitation)、探索(exploration)動作を組み合わせることで、ネットワークの変化に迅速に対応できる情報ルーティングテーブル更新メカニズムを記載している。蟻は、さらなる情報および高速サービスを受けるために、需要の高い(popular)ノードを利用する。どれが需要の高いノードかは、一定の時間窓においてパケットの最終目的ノードとして選択された回数を計測することにより判断することができる。また蟻エージェントは、ネットワークの変化を迅速に見つけるために、ネットワークをランダムに探索もする。
【0012】
本発明の実施形態は、大規模な動的な分散型システムにおける情報発信をサポートするための枠組みを提唱する。ここで提唱されるメカニズムは、クラウドコンピューティング、クライアントクラウドコンピューティング等の複数の分野に応用することができる。情報/サービスを交換、消費、および提供する際に多数のノードを利用するような用途にはいずれであっても、ここで開示する枠組みを利用することができる。
【0013】
本文献は、群知能に基づくコンピューティングに関してこれまで知られていなかった様々な新規なコンポーネントおよび特徴を開示する。分散型システムの多岐にわたる情報の管理をサポートする枠組みを開示する。また、情報を整理したり情報の発信を促したりするために、確率論的情報ルーティングテーブルを開示する。さらに、ネットワークから情報を取得するために利用される情報ルーティングテーブルが開示される。蟻エージェント、ノードメッセージ交換、ルーティングテーブル更新、および古くなるメカニズム(aging mechanism)を含む、記載される情報ルーティングテーブルの高速更新および管理のためのメカニズムも開示される。
【0014】
実施形態によって、ネットワークが数千のノードを有することができ、ネットワークが非常にダイナミックなトポロジーを有することができ(例えばノードがネットワークに対する退出を迅速に行うことができる)、情報の配信および取得の制御に中央ポイントが不要であり、ネットワークのノードが、数多くの異なる種類の情報を提供することができ、複数のノードが同じ種類の情報またはサービスを提供することができ、また、情報/サービス利用が非常にダイナミックになる(つまり、変化が迅速になる)、といった特性がネットワークおよびサービスに提供される。加えて、本発明の実施形態による解決法は、有効性:新しい情報の更新を消費者に対して迅速に提供することができる、ロバストネス:ダイナミックなネットワーク変化に対する回復力が高い、効率性:情報ルーティングテーブルおよび情報ルーティングテーブルの管理により、各ノードおよびネットワークに対するオーバヘッドが比較的低くなる、といった要件を満たす。
【0015】
図1は、本発明の一実施形態における、記載される情報ルーティング枠組みをサポートする各ノード100に含まれている基本コンポーネントのブロック図である。一実施形態では、ルーティングテーブル101は、ノードアドレスを用いて、ネットワークの他のノードに到達するための情報を提供する。ここでは、ルーティングテーブルの利用が必要となる低レベルルーティングメカニズムがネットワークノードに存在することが想定されている。情報ルーティングテーブル103は、ここに開示する情報ルーティング枠組みの中核であり、本発明の実施形態における、群知能を利用する知性情報ルーティングを可能とする。情報ルーティングテーブル103は、データ利用可能性情報を提供する。サービス消費エージェント105は、情報ルーティングテーブルを利用して、所望のサービスおよびデータをネットワークから見つけたり、プルしたりする。サービス提供エージェント107は、ネットワークにサービスを提供し、自身のサービスを、他のノードの情報ルーティングテーブルのエントリという形態で広告する。これらコンポーネントについては後で詳述する。
【0016】
一実施形態では、サービス消費エージェントおよびサービス提供エージェントは、「蟻」エージェント110と称されるものを利用することができる。エージェントを「蟻」と称する理由は、あたかも蟻が野原でするように、ネットワークを航行する性向がみられるからである。蟻は、適応性に富み、分権的であり、ロバストに課題を解決する社会的昆虫である。野原を探索した蟻は、自分の通った場所を示すためにフェロモンを残す。蟻同士は、環境への変更(例えばフェロモン)によって個体間が行う間接的な通信(スティグメリ(stigmery)と称される)によって通信を行う。蟻は、このスティグメリによって2地点間の最短経路を見つけることができる。
【0017】
蟻は、フェロモン濃度に比例した確率で経路を選択する。フェロモン濃度の高い経路にいる蟻同士は、同じ領域を調査している(有効利用)。他の経路を利用する蟻は、新たな領域を探索している(探索)。
【0018】
一実施形態では、情報ルーティングテーブル(IRT)を、ネットワークを航行した蟻エージェントが残した情報のためのレポジトリとして利用する枠組みを提供する。つまり、IRTは、実際の蟻が残すフェロモンに等しい情報を含む。ノードは、クエリ蟻113を使って、必要なサービスまたは情報を探すためのネットワークに探索蟻を放すことができる。クエリB蟻115は、応答を送るために利用されてよい。情報蟻111は、サービスまたは情報を提供するノードが、自身が利用可能であることをアナウンスするために利用されてよい。
【0019】
大規模ネットワークでは、各種類の情報/サービスが複数のノードにより提供されてよく、各ノードは、多数の種類の情報/サービスを提供することができる。図2は、情報ルーティングテーブル103の一実施形態の詳細を示している。情報ルーティングテーブルの特徴は、確率値を割り当てて、複数の提供ノードのランクとして示されている。図2では、情報ルーティングテーブル103が、現在のノードが興味を持っている情報/サービスの種類(T)210というエントリを含んでいる。Tは、情報ルーティングテーブルの情報/サービスの種類をインデックスする。各情報/サービスのタイプT210について、最後のアクセスタイムスタンプ211を利用して、このサービスタイプに最後にアクセスしたときを記録する。タイムスタンプによって、まだ現在のノードがTに興味をもっているかを判断することができる。各情報/サービスタイプTについて、情報ルーティングテーブルは、Tと、以下のような提供ノードの記述を提供する。
:(提供ノードのアドレス215)。
C(x,T):(提供ノードの機能パラメータ217のセット)。ノードの機能を定量化するメトリックはすべてここで定義されてよい(例えば、計算力/メモリサイズおよび今利用可能な、計算力/メモリサイズ、待ち時間、コスト、セキュリティレベル等)。
Rep{X、T}:プロバイダの評価223により、過去の処理経験に基づいて、情報/サービス提供ノードの信頼度の尺度が提供される。パラメータは、移動時間窓における比率として計算されてよい(例えば、ある時間窓において成功した過去の処理数を過去の総処理数で除算して算出する)。加えて、信頼できるノード間の隣接するノード同士がこの情報を共有することで、より多くの情報を提供するようにしてもよい。これにより、利用したことがないノードであっても、プロバイダは評価を迅速に割り当てることができる。新たな情報/サービス提供ノードについてプロバイダの評価は、0.5またはその他の予め定められた格付けとすることができる。
最終更新タイムスタンプ:最終更新タイムスタンプ219は、このエントリが最後に更新されたときを記録する。最終更新タイムスタンプにより、現在のノードは、このエントリを廃れた(obsolete)情報で更新することがなくなる。
Pr{x,T}:必要な情報/サービスを探す際に、同じ情報/サービスを提供する全てのノードからノードxを選択する確率221である。
【0020】
Pr{x,T}は、以下の要件を満たす。
【数1】
ここでX={x,x,…,x}は、情報タイプTを提供するノードセットである。この確率は、ノードの機能、プリバイダの評価、最終更新/エントリアクセス情報等の関数として計算される。IRTが情報/サービスタイプTを提供する全てのノードの情報を含むのではなく、代わりに、通信待ち時間、コスト、プロバイダの評価およびその他のメトリックに基づいて、IRに記録するノードのサブセットを選択するようにしてもよい。この方法によると、IRTおよび検索動作を短くして、情報/タイプTを高速に、信頼性高く、安価且つ安全に提供することのできるノードのみを記録することができるようになる。高い機能、プロバイダの評価を有するノード、または、より最近更新されたノードは、通常、より高い確率値を有する。確率エントリ計算は、アプリケーション固有であって、変化してよい。確率計算方法の一例を示すが、これはあくまで例示である。
【0021】
例示として、以下のメトリックを利用して、潜在的なサービスプロバイダセンターの評価方法を記述する、とする。メトリックとは、(1)サーバの処理能力、(2)メモリ/格納能力、(3)プロバイダの評価、(4)サービス提供ノードからサービス消費ノードまで移動するパケットの移動期間、(5)時間値T:エントリが最後に更新された時間である。言及したもののうち最初の4つのメトリックに対応する統計値は、ノードによって、T秒間の移動時間窓で得られた。実施形態では、4を超える数のメトリックがあっても、同じ方法を利用することができ、これに関して説明する。
【0022】
まず、各メトリックを、最終的な確率値に組み合わせる前に処理する。以下の処理は、時間値Tを除いて、全てのメトリックを処理するために利用することができる。
【0023】
先ず、最小と最大との間の間隔をNビンで除算する。第2に、各ビンに、そのビンの嗜好度を示す値を割り当てる。例えば、処理能力に焦点を当てると、高い処理能力を有するビンが、低い処理能力のビンよりも高い値を割り当てられる。
【0024】
メトリック値の処理に関しては、以下の記述を利用する。後述するように、情報蟻またはその他の手段がプッシュする情報により、過去T秒間に観察された最大サーバ処理能力がPmaxであり、Pminは、最小サーバ処理能力を示す。Pbin=(Pmax−Pmin)/N_P_間隔であり、ここでN_P_間隔は、処理能力を、PminからPmaxまでの均一のサイズのN_P_間隔のバケットに分割する10その他の数である。PminからPmaxまでの間隔も、様々なサイズのバケットに分割することができる。Mmaxは、過去T秒間に観察された最大格納サイズであり、Mminは、最小格納サイズである。Mbin=(Mmax−Mmin)/N_M_間隔であり、ここでN_M_間隔は、格納力を、MminからMmaxまでの均一のサイズ(または可変サイズ)のN_M_間隔のバケットに分割する10その他の数である。
【0025】
maxは、過去T秒間に観察されたパケットが移動する最大移動期間であり、Mminは、最小移動期間である。Tbin=(Tmax−Tmin)/N_T_間隔であり、ここでN_T_間隔は、移動期間を、TminからTmaxまでの均一のサイズ(または可変サイズ)のN_T_間隔のバケットに分割する10その他の数である。Repmaxは、過去T秒間に観察された様々な情報/サービスプロバイダについての、プロバイダの最大評価であり、Mminは、プロバイダの最小評価である。
【0026】
Repbin=(Repmax−Repmin)/N_Rep_間隔であり、ここでN_Rep_間隔は、プロバイダの評価を、RepminからRepmaxまでの均一のサイズ(または可変サイズ)のN_Rep_間隔のバケットに分割する10その他の数である。図3では、各ビンにビン番号を割り当てている。各ビンに値が割り当てられている。処理能力、格納サイズ、および評価については、以下の関数を利用して銘々の各便に値が割り当てられている。関数とは、ビン値=(ビン数×ビンの幅)/(N_P_間隔またはN_M_間隔またはN_Rep_間隔×ビンの幅)であり、p>0であり、p=1および2のときのビン値が図4に示されている。
【0027】
期間(またはその他の、小さな数が望ましいメトリック)については、ビン値の割り当てが以下のようになる。つまり、ビン値=1−(ビン数)/(N_T_間隔)であり、p>0であり、p=1および2のときのビン値は図5に示されている。p>0の場合、より多いビン数のほうが良いとされる傾向にある(時間においてはより少ないビン数のほうが良いとされる)。一実施形態では、以下の方法を利用して全てのメトリックを1つに組み合わせることができる。
【0028】
値=(α*処理能力のビン値+α*格納サイズのビン値+α*プロバイダの評価のビン値+α*期間のビンの値)*exp(−β*(現在の時間−T))であり、α全部の合計=1となる。αの正確な値は、その特定のメトリックの重要度に依存する。例えば、時間に感度を有する用途のノードでは、αを0.5に設定し、α=0.05、α=0.05、およびα=0.4とする。他方で、βは、古くなっていくときの確率の低下を制御している(エントリが最近更新されたものではない場合)。図6は、βの値が、exp(−β*(現在の時間−T))の値に及ぼす影響を捉えている。βの値が大きくなるにつれて、exp(−β*(現在の時間−T))の値はより速く降下していることが分かるだろう。
【0029】
いよいよ最終的な確率値を求めることができる。あくまで例として、ここではサービスタイプTについて、5つのエントリがあると仮定して、5つの値を、値_1、値_2、値_3、値_4、および値_5とする。n番目のエントリの最終的な確率は、以下のようにして求められる。Prob_n=値_n/(値_1+値_2+値_3+値_4+値_5)。実施形態によっては、ある値に重みを乗せる、といった、他の確率計算方法を利用することもできる。
【0030】
ノードがある情報/サービスタイプTを必要とするとき、そのノードは、サービスTを提供するノードの情報ルーティングテーブルのエントリを確かめる。ノードのパフォーマンスメトリック要件を満たすエントリがない場合、サービスクエリは失敗する。ノードは、後述するように情報クエリプロセスを起動して、ネットワーク上で情報/サービスを積極的に探し始めてよい。あるアプリケーションについてノードのパフォーマンスメトリック要件を満たすエントリが情報ルーティングテーブルに少なくとも1つある場合、以下の処理を実行して、パフォーマンスメトリック要件を満たすノードの確率を正規化することができる。この処理により、情報/サービス提供ノードを、同じサービスを提供する全ての適格なノードから選択することができる。情報/サービスTのクエリが生成されるといつでも、最初に、情報ルーティングテーブル内の、情報/サービスT用のL_アクセス_時間_Tを更新する。次に、パフォーマンスメトリック要件を満たすこれらのエントリの確率を、以下のようにして正規化する必要がある。
【0031】
現在のサービス要求のパフォーマンスメトリック要件を満たす全ての提供ノードを、セットX'⊆Xとなり、X={x、x、…、x}は、情報タイプTを提供するノードセットである。従って、xが現在のサービス要求のパフォーマンスメトリック要件を満たす場合に限って、各ノードxについてx⊆X'iとなる。従って、各ノードxの確率x∈X' は以下のように正規化することができる。
【数2】
【0032】
サービス提供ノードは、Pr(x,Tnormalizedを直接利用するか、または、Pr(x,Tnormalizedの関数を利用することでランダムに選択することができる。乱数生成器またはその他の方法によって、計算された正規化確率を利用してノードをランダムに選択することができる。例えば、乱数生成器は、ゼロと1との間の数を生成する。2つのノードaおよびbのみが、それぞれ例えば確率0.25および0.75で存在している場合、且つ、計算された乱数が0.6に戻った場合には、乱数が0.25と1.0との間に位置することになるので、ノードbを選択する。生成された乱数が0.15であれば、ノードaを選択する。このように、ノードの確率は、範囲0.0から1.0の間で分割される。次いでサービス要求を選択されたノードに送信することができる。実際の選択基準はアプリケーションによる。現在のノードにサービス提供するノードは1または複数選択することができてよい。厳格なランク付けとは異なり、確率を利用する方法は、同じ少数のランクの高い提供ノードに全てのノードがサービスを受けるために殺到することによるトラフィックの混雑を回避することができる。
【0033】
一実施形態では、ノードの情報ルーティングテーブルを更新するために幾つかの更新メカニズムが提供される。後述する更新メカニズムでは、群知能パラダイムを利用することで、効果的にネットワークの情報利用を伝播させて更新することができる。「人工蟻エージェント」がこの目的を達成するために利用されてよい。例えばクエリ蟻エージェントを利用して、ネットワークから情報を引き出す(プルする)ことができる。情報蟻エージェントは、新たな情報/サービスを積極的に推進(プッシュ)したり、情報/サービスを必要としているノードに情報/サービスの更新を行ったりするために利用することができる。
【0034】
加えて、情報ルーティングテーブル更新は、(1)情報/サービスを提供するノードからのサービス応答メッセージ、および/または、(2)より低い層のルーティングテーブルからの更新情報、(3)情報ルーティングテーブルエントリが古くなること、によってトリガされてよい。
【0035】
図7は、本発明の一実施形態における、ネットワーク上のクエリ蟻とクエリB応答蟻との間の通信を示すネットワーク上のノード例のブロック図である。サービス提供ノード710は、サービス要求701に応じて応答メッセージ703を送信することができる。この応答メッセージ703がネットワーク730を通るとき、要求を発したノード720に戻る間に遭遇する、各ノード上の情報ルーティングテーブル723の情報更新をトリガ(703a)することができる。中間ノード740は、サービス提供ノードの新たに利用可能なサービスを記録するために、既存のテーブルエントリを更新したり、新たなエントリを作成したりすることができる。加えて、同じ情報/サービスを提供する現在のノードの情報ルーティングテーブルの全てのエントリの確率値を更新して、確率値を再計算して新たな更新を反映するようにする。
【0036】
ルーティングテーブル721は、ネットワーク接続またはトポロジーに変更があったときに更新される。ノードが到達不可能になった場合には、ノードのルーティングテーブルから除去してよい。到達不可能なノードは、情報/サービスを提供することができない。従い、ノードをルーティングテーブルから除去すると、自動的に情報ルーティングテーブル723からも除去される。到達不可能なノードに関するエントリは、情報ルーティングテーブル723から削除して、同じ情報/サービスを提供する全ての残りのノードの確率値を再計算する。
【0037】
情報ルーティングテーブル723の古いエントリは、廃れて現在のネットワーク/デバイス条件を反映していないことがある。加えて、一定の期間アクセスされなかった情報/サービスタイプは、その情報/サービスタイプの興味レベルが低いことの反映である。確率エントリ更新関数は、更新タイムスタンプを考慮に入れているので、これら古いエントリの確率エントリは、古くなっていくに連れて降下していく。確率エントリが低い閾値に達すると、廃れたり、または、重要ではなくなったり、興味がなくなったりしたということなので、情報ルーティングテーブルから除去されてよい。同じ情報/サービスタイプの残りのエントリの確率値を、これら変更を反映するように再計算する。加えて、情報/サービスタイプが長期的にアクセスされず、アクセスタイムスタンプを反映している閾値を超えると、全情報/サービスタイプを情報ルーティングテーブルから除去してよい。そして、この情報/サービスタイプは、ノードには興味のないものになったと想定される。
【0038】
ネットワークを経由してノードに情報を伝播する方法は色々ある。ノードのルーティングテーブルの新たなエントリの一部を以下に説明する。大規模ネットワークで情報/サービスを見つけることを助ける情報ルーティングテーブルについては上述した通りである。本発明の一実施形態では、追加のエントリを情報ルーティングテーブルに加えて、ネットワークを介したノードへの情報/サービスの伝播を促進する。
【0039】
図8は、各既存の情報タイプまたは新たな情報タイプTについての4つの追加フィールドである、(1)サービスについて質問するソースノード801、(2)クエリ蟻生成時間807、(3)パフォーマンスメトリック要件803、および、(4)クエリ蟻到着時間805という4つを追加した情報ルーティングテーブルの一例を示す。ソースノード質問サービス801は、クエリ蟻(後述する)の送信元であるノードアドレスである。クエリ蟻生成時間は、情報ルーティングテーブルに、最新の情報を確実に含めさせる目的に利用される。あるノードに到着した、同じクエリを含み同じノードからの新たなクエリ蟻が、より最近の生成時間である場合には、この新たなクエリ蟻の情報で、既存のエントリを更新する。次にクエリ蟻を次の新たなノードに送る。他方で、新たに到着したクエリ蟻が古い場合には、このクエリ蟻は破棄して次のノードには送らない。パフォーマンスメトリック要件803は、ソースノードを満たすために必要なキャパシティ要件およびプロバイダの評価を記す。クエリ蟻到着時間805は、クエリ蟻を受信した時間を格納する。現在の時間とクエリ蟻到着時間との間の差異を比較して、時間制限を越えて古くなったエントリは、情報ルーティングテーブルから削除することができる。
【0040】
情報蟻は、新たなエントリ801、803、805、および807を利用して、情報/サービス利用更新を送信するノードを決定することができる。
【0041】
情報蟻エージェントは、ネットワークの他のノードに提供することができる情報/サービスを迅速に伝播するためにノードにより利用される。各ノードでは、情報蟻エージェントをネットワークに送り、(1)ネットワークに新たに参加したデバイスによって追加された新たな情報/サービス、(2)負荷の変更として生じた機能パラメータの主要な変化(必要が満たされたときのキャパシティ増加、または、より新たなサービス要求が受信されたときのキャパシティ減少)、および、(3)デバイス/ノードが適切に遮断されたときの、情報/サービスの削除、といった処理に対応する情報を伝播させることができる。一部の実施形態では、情報蟻は、定期的な間隔で送信されて、ネットワーク上の情報を最新に保つことができる。
【0042】
一実施形態では、情報蟻エージェントは、情報(D,S,T):{S‖T‖iCTime‖D‖PM{S,T}‖hop‖D_タイプ_フラグ}というフォーマットを有している。こここで、Dは、情報蟻が赴く宛先ノードであり、Sは、情報/サービスが利用可能なソースノードアドレスであり、Tは、ノードが提供する情報タイプであり、iCTimeは、Sと情報タイプTとに関する情報蟻の生成時間を記録しており、Sは、ノードが生成する各情報タイプについて別個のiCTimeを維持する。タイプTの情報を更新するための1つのバッチの情報蟻は、同じiCTimeで生成される。新たな更新が生成されるたびに、iCTime値を、該更新が生成された現在時間に更新する。PM{S,T}は、機能パラメータ、ソースノードSで提供される情報タイプTのプロバイダの評価を含む。hopは、情報蟻が今まで移動した距離を特定するホップカウント値であり、初期値hop=0である。D_タイプ_フラグは、情報蟻の宛先Dが設定される方法を特定している。一実施形態では、D_タイプ_フラグは、以下のように設定されてよい。
【0043】
宛先Dは、情報ルーティングテーブルを利用してD_タイプ_フラグ=Sに設定される。これは、宛先Dが過去に情報タイプTについて積極的にクエリしたことを示唆しており、おそらくは、将来もこの情報タイプの更新を受け取りたいと思っていることを示唆している。
【0044】
宛先Dを、ルーティングテーブルを利用して設定すると、D_タイプ_フラグ=Pとなる。これは、宛先Dが、その需要尺度に基づいて選択されたことを示唆しており、この場合い、情報タイプTには興味がある場合もあろうし、ない場合もある。従ってこのようにして選択された宛先は、後のホッピングにて、情報蟻を、情報更新を実際に必要とするノードにリダイレクトすることができる。
【0045】
一実施形態では、図9に示すプロセスを利用して、ネットワーク上に情報を伝播することができる。ノードが、情報タイプTを提供することを開始したり停止したり、情報タイプTの提供に関してノードの機能パラメータが大幅に変更されたりすると、ノードは、ブロック901で情報蟻を送信することで、この情報の伝播を開始する。
【0046】
ブロック903で、上述したような、情報(D,S,T)、情報(D,S,T)、…、情報(D,S,T)というフォーマットのN個の情報蟻を生成するが、ここで、D,D,Dは、宛先ノードを示す。なお、ネットワークの混雑度についての推定、どのくらい更新が差し迫って必要か、情報タイプに対する興味レベル等に基づいて、各ノードはNについて異なる値を利用することができることを理解されたい。宛先ノードは、ブロック905で以下のように選択されてよい。いずれかの情報ルーティングテーブルが、パフォーマンスメトリックパラメータがソースノードの要件を満たす、またはこれを超えるような情報タイプTについての質問を行うソースノードを含んでいる場合、これらソースノードを宛先アドレスに設定して、D_タイプ_フラグ=Sとする。Nを超える数のソースノードが情報ルーティングテーブルにある場合には、N個の最も需要のあるソースノードを、ルーティングテーブルの需要尺度を利用して選択して、D_タイプ_フラグ=Sとすることができる。情報ルーティングテーブルにある、この情報タイプに興味を持つソースノードの数がこれより少ない場合には、残りの情報蟻を、まだルーティングテーブルで選択されていない最も需要のあるノードに送信して、D_タイプ_フラグ=Pとして、ソースまたは中間ノードの情報ルーティングテーブルで特定されているように、これらのノードが特にこの情報を要求しなかったことを示す。情報ルーティングテーブルで情報が発見されなかった場合、宛先ノードを、需要尺度に従って、ルーティングテーブルのN個の最も需要のある宛先に設定してよい。ルーティングテーブルにあるテーブル数がNより少ない場合には、情報蟻の数を減らしたり、情報蟻を重複するアドレスに送信したりすることができる。重複するアドレスに送信する場合には、情報蟻は、後述するように中間ノードによるルーティングおよび再ルーティングにおけるいくらかのランダムネスのせいで、ネットワークの別の箇所を通って伝播される場合もあることを理解されたい。従って情報は最終的に、重複を禁止されている場合よりも多くのノードに到達することになる。
【0047】
ひとたび宛先ノードが情報パケット:情報(D,S,T)に設定されると、ブロック907で、ルーティングテーブルを利用して情報蟻をルーティングすることができる。各ホッピングで、情報蟻の受信ノードは、複数のアクションのいずれかを行うことができる。一例では、ノードlが通信ルートにより宛先ノードnに直接接続されない場合には、情報は、少なくとも1つの中間ノードmを経由する必要がある。中間ノードmは、ノードlのルーティングテーブルで特定される。
【0048】
一実施形態では、中間ノードは、一定の基準に基づいて、情報蟻の最終的な宛先アドレスを変更することができる。情報蟻の宛先アドレスは、D_タイプ_フラグ=Pの場合に変更されてよい。D_タイプ_フラグ=Pである情報(D,S,T)の情報蟻を受信すると、受信ノードは、自信の情報ルーティングテーブルを確かめる。C{S,T}およびRep{S,T}を満たすパフォーマンスメトリック要件を有する情報タイプTについて質問するソースノードが存在する場合には、宛先Dが、新たなソースノードにスイッチされ、D_タイプ_フラグ=Sとしてよい。複数のソースノードが存在している場合には、最も需要のあるソースノードを宛先として選択してよい。同じ需要尺度を有する複数のソースノードについては、宛先をランダムに選択してよい。そして、中間ノードのルーティングテーブルを利用して情報蟻を宛先ノードに転送する。
【0049】
受信ノードは、各{S,T}対について格納されているiCTimeと、受信したiCTime値とを比較して、情報蟻が新しいかを判断する(ブロック909)。受信したiCTime値が保持しているiCTime値以下であるとブロック909で判断されると、情報蟻を破棄する(ブロック921)。さもなくば、保持されているiCTimeを、受信した値に更新して、蟻(情報)情報処理を続ける。
【0050】
必要に応じて、新たなエントリ、または、情報ルーティングテーブルの既存のエントリの情報タイプTに対する更新を、情報蟻に含まれている情報を使って行う(ブロック911)。次に情報タイプTについての確率値を再計算して、情報ルーティングテーブルのエントリに適用する。ブロック913で受信ノードが宛先ノードであると判断された場合には、更新は完了して、情報蟻を「キル(kill)」して、例えば更なる送信は行わない(ブロック915)。さもなくばD_タイプ_フラグをチェックして、蟻が需要尺度に従ってルーティングされたと示されているか(例えば、D_タイプ_フラグがPに等しいか)を判断する(ブロック923)。
【0051】
ブロック923でD_タイプ_フラグがPに等しいと判断された場合には、適宜上述したように、情報蟻の宛先アドレスを変更して、D_タイプ_フラグをSに設定する(ブロック925)。ホッピングカウントをブロック917で増分して、ホッピングカウントが最大閾値を超えているかを判断する(ブロック919)。ホッピングカウントが最大閾値を超えている場合には、蟻をキルして、転送は行わない(ブロック921)。ホッピングカウントが超えていない場合には、情報蟻を、ルーティングテーブルを利用して次のホッピングへとルーティングして(ブロック907)、宛先ノードに到達して、ホッピングカウントが最大閾値を越えるまで処理を続ける。ホッピングカウントを超えると、蟻をキルして(ブロック921)、転送は行わない。
【0052】
ネットワークエージェント内のパラメータ数は、初期値に設定されており、後で、ネットワークのパフォーマンスに基づいて修正してよい。例えば、転送によりネットワークトラフィックの数が多くなりすぎた場合にはN(各情報更新について生成される情報蟻の数)を低減させて、ノードがタイムリーに蟻を受信していない場合には、増加させることができる。合理的な初期値は、Log(n)であり、nは、一部のネットワークでは、そのネットワークで到達可能なノード数である。最適なNの値は、ネットワークの混雑度についての推定、どのくらい更新が差し迫って必要か、情報タイプに対する興味レベル等に基づいて決められてよい。HOP_MAX(情報蟻が移動するノード数)は、ネットワークリソースに過度な負担をかけずに、より効果的に情報を伝播できるよう修正することができる。初期値は、ルーティングテーブルにより決定される、一番遠いノード(つまりネットワークの直径またはその一部)に到達するためのホッピング数であってよい。
【0053】
上述した公表/サブスクライブまたはプル/プッシュという配信プロトコルにより、ネットワーク上のノードが、消費を希望する情報をサブスクライブできるようになる。ノードのサブスクリプション情報は、他のノードの情報ルーティングテーブルのエントリ同様に、ネットワーク上で利用可能である。従って、データまたはサービスが利用可能な場合、生成者は、データを効果的にサブスクライバに配信することができる。情報の生成者に積極的にネットワークのデータ利用情報をプッシュさせ、蟻エージェントを利用して情報クエリおよび発見を高速化することができる。本発明の実施形態は、蟻の行動を利用するメカニズムをノードで利用して、ネットワークに提供する利用可能情報/サービスを積極的且つ迅速にプッシュすることができる。情報蟻は、他のノードの情報ルーティングテーブルエントリを直接更新する。
【0054】
この蟻の行動を利用する伝播によって、最近クエリを提供したノードへと情報蟻を積極的にリダイレクトすることで、最も情報を必要としているノードに情報宣伝を到達させることができる。情報/サービスを多く消費しているが、ソースノードの近隣にはないノードの情報発見は、クエリ蟻が移動した任意のノードの情報ルーティングテーブルに記録されている最近のクエリに基づいて、情報蟻の宛先を継続して調節しなおすことにより効率的に行うことができる。
【0055】
情報ルーティングテーブルにクエリエントリが見つからない場合、需要尺度に基づいて最も需要のあるノードを情報蟻の宛先として選択することで、ネットワークにおける情報蟻の配信の範囲を増加させることができる。
【0056】
一実施形態では、利用可能なリソースを探すために、日和見的にクエリ蟻を生成して転送することができる。情報蟻は、クエリ蟻を受信すると送信することができる。需要尺度をより低いレベルのルーティングテーブルに追加すると、クエリ蟻が、需要のあるノードに移動する確率を上げることができる。このフィーチャによると、クエリが需要のあるノードにより速く到達するので、情報クエリの効果および効率を高めることができる。ノードの需要は、ノードがある時間窓においてパケットの宛先ノードに設定される頻度を調べることで計測することができる。筆者は、需要のあるノードでは、情報の交換がより頻繁に行われると信じている。従って、需要のあるノードは、より多くの情報を提供することができ、情報がより頻繁に更新される。
【0057】
共通のルーティングテーブルは、宛先ノードでインデックス化されて、各宛先ノードに到達する次のホッピングを特定する。蟻の行動を利用するルーティングアルゴリズムでは、各ノードにおけるルーティングテーブルには、各宛先ノードの複数のルートが記されていてよい。
【0058】
図10Aは、一般的なルーティングテーブルを表す。なお、追加のエントリは、ルーティングテーブルを利用せねばならないレガシーコードが混乱しないように、追加テーブル等の別個のテーブルに格納したり、または、ルーティングテーブルに適切な索引とともに格納されたりしてよい。各エントリについて、宛先ノードに到達する方法に関する情報がある。ルーティングテーブル情報には、宛先ノード1001、パケットを任意の宛先について転送できる次のホッピングノード1003、任意の宛先について数多くの選択肢のなかから次のホッピングノードを選択する確率1005、エントリのタイムスタンプ等が含まれてよい。同じ宛先ノードへと繋がる、次のホッピングノードの全ての確率エントリを合計すると、1になるべきである。ルーティングプロトコルによっては、実際のルーティングテーブルが、図10Aに示す以上の情報のサブセットを含みうるものもある。当業者であれば、元のエントリを修正せずに、ここで記載するようなルーティングテーブルに対する追加エントリに変更を加えることで、ネットワークまたはノードルーティングプロトコルが向上する場合もあることを理解する。
【0059】
図10Bは、元のルーティングテーブルに対する追加のエントリとして、需要尺度を示す。一実施形態では、ルーティングテーブルは、宛先の需要尺度として、追加のエントリ1007を含んでいる。需要尺度は、そのノードがパケットの最終宛先として選ばれた頻度の関数として導出することができる。筆者は、需要のあるノードは宛先として選ばれる傾向が高いので、情報/サービスTの情報ルーティングテーブルにより多い情報を含む傾向があることを観察している。より最新の情報である確率も高い。従って、クエリ蟻がこれらのノードを高い確率で訪れる場合には、より有用な情報に出会う確率も高くなる。これら需要のあるノードをクエリ蟻が訪れるよう影響を与えるために、一実施形態では、各宛先ノードについて追加のエントリをルーティングテーブルに追加する、という方法をとる。この新しいエントリが、その宛先ノードの需要尺度である。一例における需要尺度が、Counter(k,Q)1007であり、これは、最近の時間窓のサイズQで、ノードkがパケットの最終宛先として選ばれた回数をカウントしたものである。なお、他の需要尺度を利用することもできる。
【0060】
図10Bに戻ると、テーブルエントリPr{A,k}1011は、宛先ノードkに到達するために次のホッピングノードAを選択する確率を示している。クエリ蟻は、情報/サービスを必要とするノードにより送り出されるが、情報ルーティングテーブルに情報/サービスの需要を満たすだけの十分な情報がない。一実施形態では、クエリ蟻は、以下のフォーマットを利用する。クエリ{D,S,T}:{D‖S‖CTime‖T‖PM{S,T}‖ホッピング‖許可‖フラグ}。ここでDは、情報タイプTを提供する宛先ノード実体またはアドレスであり、Sは、そのクエリを生成したソースノード実体またはアドレスであり、CTimeは、Sに関連するクエリ蟻生成時間である。1つのバッチのクエリ蟻は、1つの同じCTimeを利用して生成される。新たなクエリが生成されるたびに、CTimeをそのノードの現在の時間に更新する。Tは、要求されている情報/サービスを記述する情報タイプであり、PM{S,T}は、ソースノードSが必要としている情報タイプTのプロバイダの評価、機能パラメータを含んでおり、"ホッピング"は、クエリ蟻が今まで訪れたノードの数を特定するホッピングカウント値であり、開始時にはホッピング=0である。"許可"は、このクエリ蟻の受信ノードが、Sの代わりに情報提供ノードに直接接続要求を出すことをノードSが許可するか否かを示しており、"フラグ"は、このクエリ蟻の受信ノードが、クエリ蟻の宛先ノード実体/アドレスを変更することをノードSが許可するか否かを示している。一実施形態では、ノードが情報/サービスタイプTがネットワークに提供されている位置を見つける必要がある場合には、図11A図11Bに示すプロトコルを利用することができる。ソースノードが、ネットワーク上の別のノードからの情報/サービスに対する需要を発見した場合には、ソースノードは、ブロック1101で、情報/サービス提供ノード発見プロセスを開始する。
【0061】
先ず、ブロック1103で、ソースノードの情報ルーティングテーブルが、パフォーマンスメトリック要件を満たすタイプTの情報/サービスのエントリを含むかを判断する。判断結果が肯定的である場合には、処理はブロック1121に進み、以降の処理の詳細は後述する。判断結果が否定的である場合には、ソースノードは、ネットワーク上のノードからの情報を必要とするので、必要情報を要求するためにクエリ蟻を送信する準備をする。N個のクエリ蟻を送信する(ブロック1105)。N個の蟻は、クエリ(D,S,T)、クエリ(D,S,T)、…、クエリ(D,S,T)というクエリプロトコルを利用して生成することができ、ここで、D、D、…、Dは、需要尺度によるソースノードのルーティングテーブルにおけるN個の最も需要のある宛先である(1007)。ルーティングテーブルにある宛先がN個未満である場合には、クエリ蟻の数を減らしてもよいし、クエリ蟻を重複するアドレスに送信することもできるが、これに関しては情報蟻に関して上述した通りである。情報蟻およびクエリ蟻について蟻の数を減らす、または、重複するアドレスへ赴かせる、という判断は、ユーザの好み次第で、同じであっても異なっていてもよい。
【0062】
ブロック1107で、次のホッピング宛先ノードを特定するためにソースノードのルーティングテーブルを利用する。次に、ルーティングテーブルに基づいてクエリ蟻を次のノードに送り、ホッピングカウントを1増分する。クエリ蟻は、最終宛先(要求されている情報またはサービスを提供しているノード)に到達するまでに、中間ノードを通る場合がある。クエリ蟻を受けると、中間ノードは、クエリ蟻を次のホッピングに送るために必要な処理の一環として、"ホッピング"と"CTime値"とを確かめる。
【0063】
次のホッピングまたは中間ノードでは、この中間ノードの情報ルーティングテーブルが、クエリ蟻が要求しているパフォーマンスメトリック要件を満たす、要求されている情報を含んでいないかを判断する(ブロック1109)。含んでいない場合には、中間ノードは、ホッピング>HOP_MAXである場合、または、CTimeが古い場合、または、中間ノードが最終宛先である場合に、クエリ蟻を破棄する(ブロック1115)。これは、クエリ蟻が古すぎたり、廃れた情報を搬送したりしていることを示唆しているからである。従って、より古い、または廃れたクエリ蟻は、無限に(ad infinitum)ネットワークを伝播しないことになる。クエリ蟻をブロック1117で破棄して、一部の実施形態では、情報を送り返して、ソースノードにクエリ蟻を破棄したことを通知してもよい。
【0064】
ブロック1115で、クエリ蟻がまだ新しい(fresh)であると判断されると、現在のノードでこのクエリ蟻にさらなる処理を加えて転送して、ソースノードの代わりに、情報/サービスを探させてよい(ブロック1119)。クエリされているサービスが中間ノードの情報ルーティングテーブルに見つからない場合には、中間ノードは、クエリ蟻のホッピングカウント値を調べる。もし、ホッピング<HOP_MAXである場合には、ホッピングを1増分して、クエリ蟻を次のホッピングに渡す(ブロック1107)。
【0065】
一実施形態では、例えば各k番目のホッピングで、クエリ蟻内の宛先ノードアドレスを変更することができる。kの初期値は、そのネットワークの同系性を示す度合い(degrees of relatedness)の調査結果に基づいて、6または7に設定されていてよい。kの値は、ネットワークの直径の関数に設定することもできる。クエリ蟻内の"フラグ"は、中間ノードが宛先アドレスの修正を許可されているかを示している。修正された宛先アドレスは、中間ノードのルーティングテーブルにおけるノードの需要を示す値に基づいて変更することができる。宛先アドレスを、より需要のある、より頻繁にアクセスされるノードに変更することで、クエリを、必要とされている情報を含む可能性の高いノードに伝播させることができるようになる。クエリ蟻の宛先は、以下の手順を踏んで変更されてよい。クエリ蟻の宛先アドレスは、フラグ=真である場合に、k番目のホッピングごとに変更することができる。クエリ蟻のクエリ{D,S,T}を受けとると、受信ノードは、ホッピングがkの倍数であるかを判断する。フラグ=真であり、"ホッピング"がkの倍数である場合には、受信ノードは、確率尺度Pを計算して、確率Pのクエリ蟻の宛先ノードを、受信ノードのルーティングテーブルにおいて最も需要のある宛先ノードで置き換える、という決断を下すことができる。同じ需要尺度を有するノードが複数見つかる場合には、一実施形態では、1つの宛先をランダムに選択することができる。当業者であれば、ランダムに選択するアルゴリズムを複数思いつく。他の選択基準を利用して、同じ需要尺度である場合、他の選択基準を利用して宛先を選択することもできる。例えば一実施形態では、ノードリストにおいて、より低い(または高い)インデックスを有するノードを選択することもできるし、他の区別方法を利用することもできる。
【0066】
図12は、図10Aおよび図10Bに示すように、ルーティングテーブルの各ノードの確率尺度、および、需要尺度を利用して、クエリ蟻をネットワークの各ノードに伝播させる際のグラフを示す。クエリ蟻の宛先を潜在的に変えることにより、クエリ蟻にネットワークのより大きな領域を探索させることができる。一実施形態では、確率尺度を求める公式は、以下の関数とすることができる。P←f(ホッピング、カウンタ(X,Q))、カウンタ(X,Q)は、選択された宛先ノードの需要尺度である。従って、確率尺度は、P=(1−exp(−γ*ホッピング))*(カウンタ(X,Q))/ルーティングテーブルの全てのカウンタの合計(X,Q)値)として計算することができる。
【0067】
ソースノード付近のノードでは、(1−exp(−γ*ホッピング))の値が小さいので、Pも低い。ソースノード付近のノードは、同様の需要尺度を有する可能性が高いと考えられる。従って、これらの中間ノードが、宛先ノードを付近のノードに変更することを許されている場合、クエリ蟻も同様の場所にルーティングされる可能性が高い。
【0068】
図11Aから図11Bを再度参照すると、一実施形態では、到着するクエリ蟻の情報を含んでいる中間ノードが、クエリの"許可"フィールドで、情報/サービスを提供するノードを有するソースノードに接続するサービス要求を開始することを許可する、として定義されている場合がある。中間ノードの情報ルーティングテーブルが必要な情報またはサービスを含む、とクエリのパフォーマンスメトリック要件が特定している場合(ブロック1109参照)、中間ノードが接続要求を開始することができるかを判断する(ブロック1111)。場合によっては、セキュアな接続が必要とされ、"許可"フラグがFALSEであることもある。"許可"が下りていない場合、クエリB蟻(情報を戻す蟻)を生成して、中間ノードからコピーした、情報ルーティングテーブルの必要な情報エントリとともに、ソースノードに戻して(ブロック1113)、ソースノードが自身の情報ルーティングテーブルを更新して、自身で接続要求を行うことができるようにする。
【0069】
一実施形態では、クエリB蟻のフォーマットは、クエリB(D,S,T):{D‖S‖CTime‖T‖X_内容}であり、Dは、サービス/情報タイプTを提供する、選択されたノードであり、Sは、情報/サービスを含むソースノードアドレスであり、X_内容は、現在のノードの情報ルーティングテーブルのエントリの内容であり、CTimeは、このメッセージが応答している対応するクエリ蟻の生成時間である。クエリB蟻メッセージで戻されるノードアドレスDは、確率尺度Pr(D,Tnormalizedを利用して、情報ルーティングテーブルにリストされている情報タイプTを提供する数多くの宛先ノードDからランダムに選択されてよい。宛先ノードDへのルーティングは、受信ノード(または現在のノード)のルーティングテーブルを利用して行う。
【0070】
中間ノードが接続要求を開始することを許可されている場合、図11Bに示すように処理をブロック1121に進めることができる。1を超える数のノードがパフォーマンスメトリック要件に合致している場合には、上述したように情報ルーティングテーブルの確率情報を利用して、可能性のあるノードのうち1つだけをサービス要求の宛先として選択する。従って、サービス要求それぞれは、確率係数に基づいて、それぞれ異なる利用可能なノードに接続することとなる。これにより、サービス要求に対して同じノードばかりを選択してしまいオーバロードが生じる、というようなことがなくなる。サービス要求は、選択されたノードに送られる(ブロック1123)。
【0071】
サービス要求を受信するノード(宛先ノード)は、応答メッセージを送信してよく、これは、ノードの通常の(レガシー)ルーティングテーブルを介してルーティングされる(ブロック1125)。一実施形態では、応答メッセージは通常のルーティングテーブルプロトコルを介してネットワーク内をルーティングされるので、情報/サービスがローカル情報ルーティングテーブルに存在していない場合には、各中間ノードの情報ルーティングテーブルを更新するか、または、新たなエントリを追加する(ブロック1127)。
【0072】
一実施形態では、要求を発しているノードが、情報/サービスの宛先ノードが到達不可能であると知り(例えば、応答を受信しない場合、または別のノードにより、要求を発しているノードに対して、宛先ノードがオフラインであると通知された場合等)ルーティングテーブルからそのノードを消去すると、要求を発しているノードは、エントリを完全に除去してしまうのではなくて、到達不可能なノードの情報ルーティングテーブルエントリの確率を少量、または閾値未満に下げるようにすることもできる。この場合、到達不可能なノードが短期間だけオフラインであるような場合(例えばメンテナンスのため等で)、前は到達不可能だったノードがオンラインに戻り、情報蟻を受けとり始めると、情報ルーティングテーブルの確率は徐々に上がる。需要のあるノードまたは付近のノードについては、多くの情報蟻が迅速に受けとられ始めるので、確率を前のレベルに上げる。到達不可能なノードの確率を調節した後で、要求を発するノードは、情報ルーティングテーブルで更新された確率値に基づいて情報/サービスのノードを選択する。到達不可能なノードが長時間オフラインである場合には、オンラインに戻るまで、または、古い情報を有しているためにこのエントリを削除するまでは、このノードの確率はゼロに近づく。ノードがオフラインになった場合、ルーティングテーブルのエントリが削除されていたとしても、情報ルーティングテーブルの情報は維持するほうが望ましいが、これは、オンラインに戻った際に、このノードが需要のあるノードであったり、特に高いパフォーマンスノードになったりする可能性があるからである。
【0073】
一実施形態では、ソースノードSがクエリB蟻またはサービス応答メッセージを、時間窓t中にどのノードからも受け取らない場合、Sは、別のクエリ蟻のバッチを生成してもよい。クエリ蟻生成時間CTimeは、ノードの現在の時間に変更することができる。ノードが、クエリ蟻の複数のバッチを送信した後の時間窓t中に、いずれのクエリB蟻またはサービス応答メッセージも受け取らない場合には(t≧t)、情報クエリプロトコルを中止することができる。
【0074】
一実施形態では、クエリ蟻について2つの時間制限t、tを設けている。これらの時間制限は、最初は初期値に設定されていてよい。例えば、別のクエリ蟻のバッチを送信するまで応答を待つ時間である時間制限tは、最初700msに設定されていてよい。この値は、筆者がTCP RTTネットワークに対して実証研究を行った結果、得られた値である。時間制限tは、ノードが、クエリ手順を完全にキャンセルするまで、一連のクエリ蟻から応答を待つ期間である。この期間の値は、この情報ルーティングシステムを用いて利用可能なサービスを探すアプリケーションに依存している。アプリケーションで、サービスを探す際に1分の遅延を許容することができる場合には、この期間の値を、1分に設定することができる。最小でも、アプリケーションは、ネットワークの一定の量をカバーするために、2以上のクエリ蟻バッチを許容するべきであろう。この場合、tの初期値である700msに鑑みると、t=1500msまたは2200msが、妥当な値であると思われる。
【0075】
実施形態では、ネットワークまたはノードの管理者が、ネットワークパフォーマンスに関する実証的なデータ、または、シミュレーション研究に基づいて、幾つかの変数の初期値を変更することができてよい。
【0076】
各情報クエリで生成されるクエリ蟻の数であるNの値は、必要とされている緊急度、ネットワークトラフィックの負荷等に基づいて決定されてよい。いつクエリ蟻が、データキューではなくて優先的なキューを利用することが許されるか、の条件についても、場合に応じて変更してよい。
【0077】
ネットワークリソースに過度な負担をかけずに情報を効果的に発見するためにクエリ蟻が移動するホッピングの最大数であるHOP_MAXの値も変更可能である。
【0078】
"許可フラグ"は、受信ノードによる接続要求の開始を制御しているが、これも変更可能である。情報転送を開始させるためにハンドシェークを開始することのできる受信ノード量は、"許可フラグ"を真または偽に選択的に設定することで変更することができる。一実施形態では、クエリ蟻で迅速に(つまり少量のホッピングカウントで)発見される受信ノードには、宛先ノードへのハンドシェークの開始が許可されていてよい。一方で、より古い蟻が(つまり大量のホッピングカウントで)発見するノードには、他のノードが既にハンドシェークを開始してしまっている可能性が高いので、ハンドシェークの開始を許可しない。
【0079】
蟻を新たにする、またはキルするまで、システムに伝播させるための時間窓t、tは、検索範囲の広がりとオーバヘッドの低減との間のトレードオフに基づいて変化させてよい。
【0080】
一実施形態では、本発明は、群知能を利用してネットワーク上で情報をルーティングするシステムであって、ネットワーク上の複数のノードであって、各ノードは当該ノードの少なくとも1つの処理ユニットに連結されているメモリにルーティングテーブルを格納している、複数のノードと、複数のノードのうちの、ネットワーク上の第2のノードに、情報および/またはサービスの少なくとも一方を提供する少なくとも1つのプロバイダノードと、複数のノードのうちの、プロバイダノードの情報および/またはサービスを消費する少なくとも1つの消費ノードと、複数のノードのうちの複数の中間ノードと、を備え、ネットワーク上のノード間の通信は、直接ノード間通信、または、少なくとも1つの中間ノードを介した通信のいずれかであり、ノード間の通信の実際のルートは、各ノードに常駐しているルーティングテーブルにより駆動される。
【0081】
ネットワーク内の各プロバイダノードおよび消費ノードはさらに、ネットワーク上のノードが提供するサービスおよび情報タイプTを特定する情報と、ネットワーク上のノードが提供するサービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む情報ルーティングテーブルと、一のノードのルーティングテーブルに対応するルーティングテーブル拡張であって、ルーティングテーブルは標準ネットワークプロトコルを利用し、ルーティングテーブル拡張は、需要尺度またはルーティングテーブルの一のノードが現在のノードと宛先ノードとの間の通信経路にある確率尺度のうち少なくとも一方を含む、ルーティングテーブル拡張とを有する。
【0082】
各プロバイダノードはさらに、情報蟻とも称される情報パケットをネットワーク上の受信ノードに送信して、プロバイダノードが提供する情報/サービスTの利用可能性をアナウンスするサービス提供エージェントを有し、ネットワーク上の受信ノードが情報蟻を受信すると、受信ノードは、(1)情報/サービスT、プロバイダノードのアドレス、情報/サービスTの機能に対応する情報を特定するエントリの情報ルーティングテーブルへの追加、(2)情報ルーティングテーブルの、情報/サービスT、プロバイダノードのアドレス、情報/サービスTの機能に対応する情報を特定する既存のエントリの更新、の一方を行い、情報蟻の受信により、さらに、受信された情報蟻をネットワーク上の別の受信ノードに選択的に転送させ、転送は、一部には情報蟻の新しさと、受信ノードが宛先ノードであるか、とに基づいて行われ、受信ノードはさらに、新たなエントリの追加後、または、情報ルーティングテーブルの既存のエントリの更新後に、サービス/情報Tを提供する各プロバイダノードを情報ルーティングテーブルから選択する確率を更新する。
【0083】
各消費ノードはさらに、受信ノードに対してクエリ蟻を生成して送信する第1のサービス消費エージェントであって、各クエリ蟻は、選択された情報/サービスTに関する情報の要求をもってネットワークを伝播して、複数の中間ノードは、一部にはルーティングテーブルの需要尺度または確率尺度に基づいて受信したクエリ蟻を他のノードに選択的に転送する第1のサービス消費エージェントと、受信ノードが要求されている情報を有する場合、受信したクエリ蟻に対する応答を生成して送信する第2のサービス消費エージェントとを有する。
【0084】
一部の実施形態では、いずれのノードもが、プロバイダノードおよび消費ノードになることができる。また、ネットワークのいずれのノードもが、そのノードが情報/サービスTを提供している側か、消費する側か、に関わらず、情報蟻、クエリ蟻、または、クエリ応答蟻を転送する中間ノードとなることができる。
【0085】
一部の実施形態では、情報ルーティングテーブルは、情報ルーティングテーブルの各情報/サービスタイプTエントリについて、各ノードxがTの1人のプロバイダに対応しているようなノードxのリストを含んでよく、Tに対応するエントリは、さらに、機能パラメータ、プロバイダの評価、最終更新タイムスタンプ、ノードxを選択する確率、および、最終アクセスタイムスタンプを含む。一部の場合には、プロバイダの評価を利用せず、代わりに、需要、確率または機能係数を利用して、情報/サービスまたは情報の転送のためにどのノードにアクセスするかを決定することもできる。一部の実施形態では、これらエレメントの組み合わせを利用して決定を行ってもよい。ルーティングテーブルおよび情報ルーティングテーブルの両方における情報の組み合わせを利用して、情報蟻およびクエリ蟻の宛先を設定することもできる。
【0086】
一部の実施形態では、受信した情報蟻の選択的な転送は、宛先ノードアドレスが変更された場合に行われてよく、情報蟻のD_タイプ_フラグがPに等しい場合のみに許可されてよい。一部の実施形態では、宛先ノードアドレスの変更は、ルーティング中のk番目のホッピングごとに限定されていてよい。
【0087】
一部の実施形態では、プロバイダノードは、オフラインまたは停止状態からオンライン状態に復帰したことに呼応して、または、機能パラメータの変更に応じて、新たに追加、削除された情報/サービスを含む、プロバイダノードが提供する情報/サービスの利用可能状態をアナウンスするために、情報蟻の送信を自動開始するよう設定されている。プロバイダノードは、所定の間隔で情報蟻を送信することができてよい。
【0088】
一部の実施形態では、消費ノードは、情報ルーティングテーブルの、必要な機能を提供するプロバイダノードのリストから、プロバイダノードを選択することができてよい。2以上のプロバイダノードが必要な機能を提供している場合、最も需要のあるノードを過度に利用しないように、確率係数を利用して選択を行うことができる。プロバイダノードが情報ルーティングテーブルにない場合には、消費ノードは、要求されている情報/サービスの利用可能性のあるプロバイダノードを探すために、ネットワーク全体にN個のクエリ蟻を送信してよい。応答が所定の期間受け取られない場合には、さらにN個のクエリ蟻を送信することができる。
【0089】
当業者であれば、上述した特徴を様々に組み合わせて、ネットワーク上に提供する情報/サービスに関する情報を伝播させ、所望の情報/サービスに対応するプロバイダノードに関する情報を格納して、且つ、ネットワーク上で利用可能な情報/サービスに関する情報を所望する他の消費ノードに関する情報を格納することで、情報伝播を最大化して、時折あまり需要のないノードも利用することで、プロバイダノードの帯域幅を向上させることができることを容易に理解する。
【0090】
ここに記載する技術は、特定のハードウェアまたはソフトウェア構成に限定されず、いずれのコンピューティング、消費者エレクトロニクス、または処理環境でも利用可能である。技術は、ハードウェア、ソフトウェア、またはこれら2つの組み合わせで実装することができる。
【0091】
シミュレーションでは、プログラムコードは、ハードウェア記述言語、または、本質的に設計されるハードウェアを実行することが予期されるモデルを提供する別の機能記述言語で表すことができる。プログラムコードは、アセンブリ言語または機械言語であってよく、または、コンパイル可能な、および/または、解釈可能なデータであってよい。さらに、当技術分野では、ソフトウェアが、様々な形態で特定のアクションをとったり結果を生じたりする、と表現することがある。このような表現は、プロセッサにあるアクションをとらせたり、結果を生成させたりする処理システムによるプログラム実行を記述する簡略化された表現であるにすぎない。
【0092】
各プログラムは、処理システムと通信するために、高レベルのプロシージャまたはオブジェクト指向プログラミング言語で実装されてよい。しかし、プログラムは、それが適切である場合、アセンブリ言語または機械言語で実装することもできる。いずれにしても、言語はコンパイルまたは解釈可能であってよい。
【0093】
プログラム命令を利用して、命令をプログラミングされた汎用または専用処理システムに、ここで記載する処理を実行させることができる。または、処理を実行するためのハードワイヤ論理を含む特定のハードウェアコンポーネントが処理を実行してもよいし、プログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの組み合わせが処理を実行してもよい。ここに記載する方法は、処理システムその他の電子デバイスを、これら方法を実行させるようプログラミングするために利用することができる命令を格納した機械アクセス可能媒体を含んでよい。
【0094】
プログラムコードまたは命令は、例えば揮発性および/または不揮発性メモリに格納されていてよく、これらメモリには、格納媒体、および/または、関連する機械可読または機械アクセス可能媒体(固体メモリ、ハードドライブ、フロッピー(登録商標)ディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、DVD等)が含まれてよく、さらには、機械アクセス可能生物学的状態保存ストレージ等の、よりエキゾティックな媒体(exotic medium)が含まれてよい。機械可読媒体は、情報を、機械が読み取れる形で格納、送信、または受信する任意のメカニズムを含んでよく、媒体には、プログラムコードが符号化された電子、光、音響、または他の形態の伝播信号または搬送波がアンテナ、光ファイバ、通信インタフェース等を介して通る有形の媒体が含まれてよい。プログラムコードは、パケット、シリアルデータ、パラレルデータ、伝播信号等の形態で送信されてよく、圧縮または暗号化された形態で利用することもできる。
【0095】
プログラムコードは、それぞれプロセッサ、プロセッサが読み取れる揮発性および/または不揮発性メモリ、少なくとも1つの入力デバイスおよび/または1以上の出力デバイスを含む、移動型または固定型のコンピュータ、携帯情報端末、セットトップボックス、セルラーフォンおよびページャ、消費者エレクトロニクスデバイス(DVDプレーヤ、パーソナルビデオレコーダ、パーソナルビデオプレーヤ、衛星レシーバ、ステレオレシーバ、ケーブルTVレシーバを含む)その他の電子デバイス等のプログラミング可能マシン上で実装されるプログラムで実装されてよい。プログラムコードは、入力デバイスにより入力されるデータに適用されて、上述した実施形態を実行させ、出力情報を生成させることができる。出力情報は1以上の出力デバイスに適用されてよい。当業者であれば、開示されている主題の実施形態が、マルチプロセッサまたはマルチコアプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、および、実質的にどんなデバイスにも埋め込むことのできる広汎性または小型のコンピュータまたはプロセッサを含む様々なコンピュータシステム構成で実施可能であることを理解するであろう。開示されている主題の実施形態は、さらに、タスクまたは部分を、それぞれ通信ネットワークで繋がれた各遠隔処理デバイスが処理することのできる分散型のコンピューティング環境で実施することもできる。
【0096】
各オペレーションは一例の処理として記載されている場合もあるが、オペレーションのなかには、実際には並列、コンカレント、および/または、分散型環境で実行されるものもあり、単一または複数のプロセッサマシンがアクセスできるローカルおよび/または遠隔格納されたプログラムコードで実施されるものもある。加えて、一部の実施形態では、オペレーションの順序を入れ替えたり、エレメントのサブセットを変更したりすることもできる。プログラムコードは、エンベデッドコントローラにより、またはこれと協働して利用されてもよい。
【0097】
本発明を例である実施形態を参照して説明してきたが、本記載は限定的な意味合いはない。例示した実施形態の様々な変形例、および、本発明の他の実施形態も、当業者には明らかであり、これらも本発明の範囲内に含むことが意図されている。
[項目1]
群知能を利用してネットワーク上で情報をルーティングするシステムであって、
上記ネットワーク上の複数のノードであって、各ノードは当該ノードの少なくとも1つの処理ユニットに連結されているメモリにルーティングテーブルを格納している、複数のノードと、
上記複数のノードのうちの、上記ネットワーク上の第2のノードに、情報および/またはサービスの少なくとも一方を提供する少なくとも1つのプロバイダノードと、
上記複数のノードのうちの、プロバイダノードの情報および/またはサービスを消費する少なくとも1つの消費ノードと、
上記複数のノードのうちの複数の中間ノードと、
を備え、
上記ネットワーク上のノード間の通信は、直接ノード間通信、または、少なくとも1つの中間ノードを介した通信のいずれかであり、ノード間の通信の実際のルートは、各ノードに常駐している上記ルーティングテーブルにより駆動され、
各プロバイダノードおよび消費ノードはさらに、
上記ネットワーク上のノードが提供するサービスおよび情報タイプTを特定する情報と、上記ネットワーク上のノードが提供する上記サービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む情報ルーティングテーブルと、
一のノードの上記ルーティングテーブルに対応するルーティングテーブル拡張であって、上記ルーティングテーブルは標準ネットワークプロトコルを利用し、上記ルーティングテーブル拡張は、需要尺度または上記ルーティングテーブルの一のノードが現在のノードと宛先ノードとの間の通信経路にある確率尺度のうち少なくとも一方を含む、ルーティングテーブル拡張とを有し、
各プロバイダノードはさらに、
情報蟻とも称される情報パケットを上記ネットワーク上の受信ノードに送信して、上記プロバイダノードが提供する情報/サービスTの利用可能性をアナウンスするサービス提供エージェントを有し、
上記ネットワーク上の受信ノードが上記情報蟻を受信すると、上記受信ノードは、(1)上記情報/サービスT、上記プロバイダノードのアドレス、上記情報/サービスTの機能に対応する情報を特定するエントリの上記情報ルーティングテーブルへの追加、(2)上記情報ルーティングテーブルの、上記情報/サービスT、上記プロバイダノードのアドレス、上記情報/サービスTの機能に対応する情報を特定する既存のエントリの更新、の一方を行い、
上記情報蟻の受信により、さらに、受信された上記情報蟻を上記ネットワーク上の別の受信ノードに選択的に転送させ、上記転送は、一部には上記情報蟻の新しさと、上記受信ノードが宛先ノードであるか、とに基づいて行われ、上記受信ノードはさらに、新たなエントリの追加後、または、上記情報ルーティングテーブルの既存のエントリの更新後に、上記サービス/情報Tを提供する各プロバイダノードを上記情報ルーティングテーブルから選択する確率を更新し、
各消費ノードはさらに、
受信ノードに対してクエリ蟻を生成して送信する第1のサービス消費エージェントであって、各クエリ蟻は、選択された情報/サービスTに関する情報の要求をもって上記ネットワークを伝播して、上記複数の中間ノードは、一部にはルーティングテーブルの需要尺度または確率尺度に基づいて上記受信したクエリ蟻を他のノードに選択的に転送する第1のサービス消費エージェントと、
上記受信ノードが上記要求されている情報を有する場合、受信したクエリ蟻に対する応答を生成して送信する第2のサービス消費エージェントと
を有するシステム。
[項目2]
一のノードは消費ノードおよびプロバイダノードの両方となり、上記第2のサービス消費エージェントはさらに上記サービス提供エージェントを有する項目1に記載のシステム。
[項目3]
一のノードは、プロバイダノードおよび消費ノードの両方となる項目1に記載のシステム。
[項目4]
上記情報ルーティングテーブルは、上記情報ルーティングテーブルの各情報/サービスタイプTエントリについて、各ノードxがTの一のプロバイダに対応しているノードxのリストを含み、Tに対応するエントリは、機能パラメータ、プロバイダの評価、最終更新タイムスタンプ、ノードxを選択する確率、および、最終アクセスタイムスタンプを含み、
情報蟻およびクエリ蟻の宛先の設定は、上記ルーティングテーブルおよび上記ルーティングテーブル拡張、並びに、上記情報ルーティングテーブルを利用して決定される項目1に記載のシステム。
[項目5]
受信した上記情報蟻またはクエリ蟻の選択的な転送は、当該蟻を次の宛先にルーティングする前に、上記情報蟻の宛先ノードのアドレスを変更することで行われる項目1に記載のシステム。
[項目6]
上記宛先ノードのアドレスは、上記クエリ蟻とともに送信される1以上のフラグの値に基づいて、上記クエリ蟻のk番目のホッピングごとに変更される項目5に記載のシステム。
[項目7]
上記プロバイダノードはさらに、オフラインまたは停止状態からオンライン状態に復帰すると、上記プロバイダノードが提供する情報/サービスの利用可能性をアナウンスするために情報蟻の送信を自動開始する項目1に記載のシステム。
[項目8]
上記プロバイダノードはさらに、所定の間隔で、上記プロバイダノードが提供する情報/サービスの利用可能性をアナウンスするために情報蟻の送信を自動開始する項目7に記載のシステム。
[項目9]
消費ノードは、所望の情報/サービスTを提供するノードのリストからプロバイダノードを選択して、上記リストは、各ノードについて対応する確率係数とともに上記情報ルーティングテーブルに含まれており、エントリが存在しない場合には、情報/サービスTのプロバイダノードを探すために上記ネットワークにN個のクエリ蟻を送信する項目1に記載のシステム。
[項目10]
上記消費ノードはさらに、プロバイダノードの上記確率係数とともに、上記プロバイダノードを選択するために利用される乱数を生成する項目9に記載のシステム。
[項目11]
群知能を利用してネットワーク上で情報をルーティングするシステムであって、
プロバイダノード、消費ノード、中間ノードを有する、上記ネットワーク上の複数のノードであって、一のノードは、プロバイダノード、消費者ノード、および中間ノードの任意の組み合わせであり、各ノードは当該ノードの少なくとも1つの処理ユニットに連結されているメモリにルーティングテーブルを格納している、複数のノードと、
上記複数のノードのうちの、上記ネットワーク上の第2のノードに、情報および/またはサービスの少なくとも一方を提供する少なくとも1つのプロバイダノードと、
上記複数のノードのうちの、プロバイダノードの情報および/またはサービスを消費する少なくとも1つの消費ノードと
を備え、
各プロバイダノードおよび消費ノードはさらに、
上記ネットワーク上のプロバイダノードから利用可能な情報/サービスに対応して受信した情報をセーブする手段であって、上記情報/サービスに興味のある他のノード、上記利用可能な情報/サービスに対応する上記プロバイダノードの機能、および、選択された情報/サービスのために消費ノードが特定のプロバイダノードを選択する確率を特定することを含む手段と、
上記受信した情報の転送先である、上記ネットワーク上のノードを、一部には、送信元のノードのルーティングテーブルの需要尺度と、上記情報の新しさと、上記受信した情報をセーブする手段が特定する上記情報/サービスに興味のある他のノードの要求および格納されている嗜好とに基づいて選択する手段とを有するシステム。
[項目12]
上記受信した情報をセーブする手段は、情報ルーティングテーブルを含み、
上記情報ルーティングテーブルは、上記情報ルーティングテーブルの各情報/サービスタイプTエントリについて、各ノードxがTの一のプロバイダに対応しているノードxのリストを含み、Tに対応するエントリは、機能パラメータ、プロバイダの評価、最終更新タイムスタンプ、ノードxを選択する確率、および、最終アクセスタイムスタンプを含み、
情報の転送先の設定は、上記ルーティングテーブルおよび上記情報ルーティングテーブルを両方とも利用して決定される項目11に記載のシステム。
[項目13]
上記受信した情報の転送先である、上記ネットワーク上のノードを選択する手段は、宛先の修正が許可されているかを判断して、許可されている場合には、一部には、上記ルーティングテーブルで特定されるノードの需要尺度と、上記情報の新しさと、上記情報ルーティングテーブルで特定される上記情報/サービスに興味のある他のノードの要求および格納されている嗜好とに基づいてノードの宛先のアドレスを選択的に修正する論理を含む項目12に記載のシステム。
[項目14]
上記ノードの宛先のアドレスは、上記情報とともに送信される1以上のフラグの値に基づいて、受信された上記情報の上記ネットワークでのk番目のホッピングごとに変更することを許可されている項目13に記載のシステム。
[項目15]
ネットワーク上の消費ノードであって、
メモリに連結されている少なくとも1つのプロセッサユニットと、
標準ネットワークプロトコルを利用し、上記メモリに格納されているルーティングテーブルであって、上記ルーティングテーブルの一のノードが、上記消費ノードと宛先ノードとの間の通信経路にある確率尺度または需要尺度のうち少なくとも一方を含むルーティングテーブルと、
上記ネットワーク上のプロバイダノードが提供するサービスおよび情報タイプTを特定する情報と、上記ネットワーク上のノードが提供する上記サービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む、上記メモリに格納されている情報ルーティングテーブルと、
受信ノードに対してクエリ蟻を生成して送信する第1のサービス消費エージェントであって、各クエリ蟻は、選択された情報/サービスTに関する情報の要求をもって上記ネットワークを伝播して、上記ネットワーク上の複数の中間ノードは、一部にはルーティングテーブルの需要尺度と確率尺度とに基づいて上記受信したクエリ蟻を他のノードに選択的に転送する、第1のサービス消費エージェントと、
上記ノードが受信ノードであり、上記要求されている情報を有する場合、受信したクエリ蟻に対して応答を生成して送信する第2のサービス消費エージェントと
を備える消費ノード。
[項目16]
上記消費ノードは消費ノードおよびプロバイダノードの両方となり、上記第2のサービス消費エージェントはさらにサービス提供エージェントを有する項目15に記載のシステム。
[項目17]
情報/サービスTを、Tの要求に応じて提供するプロバイダノードにさらに接続して、接続のための上記プロバイダノードの選択には、上記情報ルーティングテーブルに格納されている情報に基づいて行われ、上記情報には、要求されているパフォーマンス要件、上記プロバイダノードを選択する確率、プロバイダノードの評価、およびプロバイダノードの機能パラメータが含まれる項目15に記載の消費ノード。
[項目18]
第2の消費ノードからTについてクエリ蟻を受信すると、情報/サービスTを提供するプロバイダノードに上記第2の消費ノードを接続し、接続のための上記プロバイダノードの選択は、上記情報ルーティングテーブルに格納されている情報に基づいて行われ、上記情報には、要求されているパフォーマンス要件、上記プロバイダノードを選択する確率、プロバイダノードの評価、およびプロバイダノードの機能パラメータが含まれ、上記接続の許可は、上記クエリ蟻の許可フラグに基づいて行われる項目15に記載の消費ノード。
[項目19]
上記情報ルーティングテーブルが上記要求されている情報を有さない場合には、受信したクエリ蟻を上記ネットワーク上の他のノードに選択的に転送し、上記情報ルーティングテーブルが上記要求されている情報を有する場合には、上記要求されている情報を含む情報応答蟻を、上記クエリ蟻を送信したノードに送信する項目15に記載の消費ノード。
[項目20]
1以上のプロバイダノードが送信する情報蟻を受信すると、上記情報ルーティングテーブルの情報/サービスTを提供および要求するノードに関する情報を更新する項目15に記載の消費ノード。
[項目21]
提供された情報/サービスTに対応する情報を有するプロバイダノードが送信した情報蟻を受信すると、上記情報ルーティングテーブルを更新する論理をさらに備える項目15に記載の消費ノード。
[項目22]
古い、廃れた(obsolete)受信情報およびクエリ蟻を破棄する論理をさらに備える項目21に記載の消費ノード。
[項目23]
ネットワーク上のプロバイダノードであって、
メモリに連結されている少なくとも1つのプロセッサユニットと、
標準ネットワークプロトコルを利用し、上記メモリに格納されているルーティングテーブルであって、上記ルーティングテーブルの一のノードが、消費ノードと宛先ノードとの間の通信経路にある確率尺度または需要尺度のうち少なくとも一方を含むルーティングテーブルと、
上記ネットワーク上のプロバイダノードが提供するサービスおよび情報タイプTを特定する情報と、上記ネットワーク上のノードが提供する上記サービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む、上記メモリに格納されている情報ルーティングテーブルと、
情報蟻とも称される情報パケットを上記ネットワーク上の受信ノードに送信して、上記プロバイダノードが提供する情報/サービスTの利用可能性をアナウンスするサービス提供エージェントと
を備え、
上記ネットワーク上の受信ノードが上記情報蟻を受信すると、上記受信ノードは、(1)上記情報/サービスT、上記プロバイダノードのアドレス、上記情報/サービスTの機能に対応する情報を特定するエントリを上記情報ルーティングテーブルに追加して、(2)上記情報ルーティングテーブルの、上記情報/サービスT、上記プロバイダノードのアドレス、上記情報/サービスTの機能に対応する情報を特定する既存のエントリを更新し、
上記情報蟻の受信により、さらに、受信された上記情報蟻を上記ネットワーク上の別の受信ノードに選択的に転送させ、上記転送は、一部には上記情報蟻の新しさと、上記受信ノードが宛先ノードであるか、とに基づいて行われ、上記受信ノードはさらに、新たなエントリの追加後、または、上記情報ルーティングテーブルの既存のエントリの更新後に、上記サービス/情報Tを提供する各プロバイダノードを上記情報ルーティングテーブルから選択する確率を更新するプロバイダノード。
[項目24]
上記プロバイダノードは受信ノードを備え、さらに、他の情報/サービスTに関して他のプロバイダノードから受信した情報を記録して、上記他の情報/サービスTに関して受信した情報を、上記ネットワーク上の他の受信ノードに選択的に転送する項目23に記載のプロバイダノード。
[項目25]
上記プロバイダノードは、上記ネットワーク上の第2のプロバイダノードから別の情報/サービスTを消費する消費ノードを備える項目23に記載のプロバイダノード。
[項目26]
情報/サービスTをネットワーク上の消費ノードに提供する、上記ネットワーク上のプロバイダノードから、情報/サービスTに対応する情報蟻を、(a)上記プロバイダノードまたは上記プロバイダノードに対応する新たな情報/サービスが、オンラインになること、(b)上記プロバイダノードの機能パラメータの変更、(c)上記プロバイダノードがオフラインになる、または、上記情報/サービスが停止されることに起因して、上記プロバイダノードから情報/サービスが利用不可能になること、または、(d)自動定期プッシュ要件のうち少なくとも1つに呼応してプッシュする段階と、
上記ネットワーク上のノードにクエリ蟻を送信する段階、および上記ネットワーク上のノードからクエリ応答蟻を受信する段階を有し、消費ノードが上記ネットワーク上で利用可能な情報/サービスに対応する情報をプルする段階と、
上記クエリ応答蟻、および、上記ネットワークを伝播する情報蟻から受信した情報で、情報ルーティングテーブルを更新する段階と、
一部には上記情報ルーティングテーブルと、ルーティングテーブルの需要尺度とに基づいて、情報蟻、クエリ蟻、および、クエリ応答蟻を上記ネットワークに選択的に転送する段階と、
消費ノードからサービス要求を受信した後に、プロバイダノードが送信する応答メッセージに含まれる情報により、中間ノードおよび消費ノードの上記情報ルーティングテーブルを更新する段階と
を備える方法。
[項目27]
上記情報ルーティングテーブルは、上記ネットワーク上のプロバイダノードが提供するサービスおよび情報タイプTを特定する情報と、上記ネットワーク上のノードが提供する上記サービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む項目26に記載の方法。
[項目28]
上記ルーティングテーブルは標準ネットワークプロトコルを利用し、上記ルーティングテーブルの一のノードが、上記消費ノードと宛先ノードとの間の通信経路にある確率尺度または需要尺度のうち少なくとも一方を含む項目27に記載の方法。
[項目29]
プッシュされた情報蟻の宛先アドレスを新たな宛先アドレスに選択的に変更する段階をさらに備え、
上記新たな宛先アドレスは、消費ノードの興味およびノードの需要の少なくとも一方に基づいて選択される項目26に記載の方法。
[項目30]
古い、廃れた受信情報およびクエリ蟻を破棄する段階をさらに備える項目26に記載の方法。
[項目31]
上記情報ルーティングテーブルを更新する段階は、
上記受信されたクエリ応答蟻および情報蟻に関連付けられている上記情報/サービスTに対応するノードに関連付けられている確率を更新する段階と、
別のノードからのサービス要求に応じてプロバイダノードが送信する応答メッセージに関連付けられている上記情報/サービスTに対応するノードに関連付けられている確率を更新する段階と
を有する項目26に記載の方法。
[項目32]
情報/サービスおよび対応する機能パラメータを提供するノードのリストを有し、ネットワークで利用可能な情報/サービスに対応する情報を受信すると自動更新される情報ルーティングテーブルを利用して、所望の情報/サービスTを提供する少なくとも1つのプロバイダノードを上記ネットワーク上で発見する段階と、
上記情報ルーティングテーブルの上記ノードのリストから、上記所望の情報/サービスTを提供するプロバイダノードを1つ、一部には上記プロバイダノードの確率尺度に基づいて選択する段階と、
上記選択されたプロバイダノードに接続して、上記情報/サービスTにアクセスする段階と
を備える方法。
[項目33]
上記選択する段階はさらに、上記プロバイダノードの評価係数に一部基づいて行われる項目32に記載の方法。
[項目34]
上記ネットワーク上の情報/サービスに対応する情報は、上記情報/サービスTを提供するノードに関する情報の要求、および/または、上記情報/サービスTを提供するノードに関する、要求していないが受信された情報に応じて受信される項目32に記載の方法。
[項目35]
上記ネットワーク上で利用可能な情報/サービスに対応して受信した情報を選択的に転送する段階をさらに備え、上記転送は、ルーティングテーブルのルーティング情報および需要尺度と、上記情報の新しさとに基づいて行われる項目32に記載の方法。
[項目36]
提供された情報/サービスTに対応するネットワーク上の複数のノードに情報を送信する段階を備え、
上記情報は、上記情報/サービスTを提供したノードのアドレスと、メッセージ生成時間コードと、機能パラメータと、ホッピングカウントと、転送フラグとを含み、
上記情報を送信する段階は、情報/サービスTに関するクエリ、上記情報/サービスTの利用可能性の変更、上記情報/サービスTを提供する上記ノードの機能の変更、および、定期的な間隔プッシュ要件に応じて行われ、
上記送信された情報を受信するノードは、情報/サービスおよび対応するプロバイダノードのリストを含むテーブルを自動更新し、各エントリは、上記対応するプロバイダノードに関連付けられた機能パラメータおよび評価係数を含む方法。
[項目37]
上記ネットワーク上の他のノードに関するルーティングテーブルの確率尺度またはノード需要尺度、上記ホッピングカウントに基づく上記情報の新しさ、および、上記転送フラグの少なくとも1つに一部基づいて、上記ネットワーク上の上記他のノードに上記情報を選択的に転送する段階をさらに備える項目36に記載の方法。
[項目38]
選択的な転送は、さらに、情報/サービスおよび対応するプロバイダノードのリストと、さらに、上記情報/サービスTに興味のあるノードのリストとを含む上記テーブルの情報に一部基づいて行われる項目37に記載の方法。
[項目39]
命令を格納するコンピュータ可読格納媒体であって、上記命令は機械に実行されると、上記機械に、
情報/サービスTをネットワーク上の消費ノードに提供する、上記ネットワーク上のプロバイダノードから、情報/サービスTに対応する情報蟻を、(a)上記プロバイダノードまたは上記プロバイダノードに対応する新たな情報/サービスが、オンラインになること、(b)上記プロバイダノードの機能パラメータの変更、(c)上記プロバイダノードがオフラインになる、または、上記情報/サービスが停止されることに起因して、上記プロバイダノードから情報/サービスが利用不可能になること、または、(d)自動定期プッシュ要件のうち少なくとも1つに呼応してプッシュする段階と、
上記ネットワーク上のノードにクエリ蟻を送信する段階、および上記ネットワーク上のノードからクエリ応答蟻を受信する段階を有し、消費ノードが上記ネットワーク上で利用可能な情報/サービスに対応する情報をプルする段階と、
上記クエリ応答蟻、および、上記ネットワークを伝播する情報蟻から受信した情報で、情報ルーティングテーブルを更新する段階と、
一部には上記情報ルーティングテーブルと、ルーティングテーブルの需要尺度とに基づいて、情報蟻、クエリ蟻、および、クエリ応答蟻を上記ネットワークに選択的に転送する段階と、
消費ノードからサービス要求を受信した後に、プロバイダノードが送信する応答メッセージに含まれる情報により、中間ノードおよび消費ノードの上記情報ルーティングテーブルを更新する段階と
を実行させるコンピュータ可読格納媒体。
[項目40]
上記情報ルーティングテーブルは、上記ネットワーク上のプロバイダノードが提供するサービスおよび情報タイプTを特定する情報と、上記ネットワーク上のノードが提供する上記サービスおよび情報に興味を持つ他のノードのリストと、サービス/情報Tを提供する特定のプロバイダノードを選択する確率とを含む項目39に記載のコンピュータ可読格納媒体。
[項目41]
上記ルーティングテーブルは標準ネットワークプロトコルを利用し、上記ルーティングテーブルの一のノードが、上記消費ノードと宛先ノードとの間の通信経路にある確率尺度または需要尺度のうち少なくとも一方を含む項目40に記載のコンピュータ可読格納媒体。
[項目42]
プッシュされた情報蟻の宛先アドレスを新たな宛先アドレスに選択的に変更する命令をさらに備え、
上記新たな宛先アドレスは、消費ノードの興味およびノードの需要の少なくとも一方に基づいて選択される項目39に記載のコンピュータ可読格納媒体。
[項目43]
古い、廃れた受信情報およびクエリ蟻を破棄する命令をさらに備える項目39に記載のコンピュータ可読格納媒体。
[項目44]
情報ルーティングテーブルを更新する段階は、
上記受信されたクエリ蟻、クエリ応答蟻、および情報蟻に関連付けられている上記情報/サービスTに対応するノードに関連付けられている確率を更新する命令と、
別のノードからのサービス要求に応じてプロバイダノードが送信して受信された応答メッセージに関連付けられている上記情報/サービスTに対応するノードに関連付けられている確率を更新する命令と
をさらに有する項目39に記載のコンピュータ可読格納媒体。
[項目45]
命令を格納するコンピュータ可読格納媒体であって、上記命令は機械により実行されると、上記機械に、
情報/サービスおよび対応する機能パラメータを提供するノードのリストを有し、ネットワークで利用可能な情報/サービスに対応する情報を受信すると自動更新される情報ルーティングテーブルを利用して、所望の情報/サービスTを提供する少なくとも1つのプロバイダノードを上記ネットワーク上で発見する段階と、
上記情報ルーティングテーブルの上記ノードのリストから、上記所望の情報/サービスTを提供するプロバイダノードを1つ、一部には上記プロバイダノードの確率尺度に基づいて選択する段階と、
上記選択されたプロバイダノードに接続して、上記情報/サービスTにアクセスする段階と
を実行させるコンピュータ可読格納媒体。
[項目46]
上記選択する段階はさらに、上記プロバイダノードの評価係数に一部基づいて行われる項目45に記載のコンピュータ可読格納媒体。
[項目47]
上記ネットワーク上の情報/サービスに対応する情報は、上記情報/サービスTを提供するノードに関する情報の要求、および/または、上記情報/サービスTを提供するノードに関する、要求していないが受信された情報に応じて受信される項目45に記載のコンピュータ可読格納媒体。
[項目48]
上記ネットワーク上で利用可能な情報/サービスに対応して受信した情報を選択的に転送する命令をさらに備え、上記転送は、ルーティングテーブルのルーティング情報および需要尺度と、上記情報の新しさとに基づいて行われる項目45に記載のコンピュータ可読格納媒体。
[項目49]
命令を格納するコンピュータ可読格納媒体であって、上記命令は機械により実行されると、上記機械に、
提供された情報/サービスTに対応するネットワーク上の複数のノードに情報を送信する段階を実行させるコンピュータ可読格納媒体であって、
上記情報は、上記情報/サービスTを提供したノードのアドレスと、メッセージ生成時間コードと、機能パラメータと、ホッピングカウントと、転送フラグとを含み、
上記情報を送信する段階は、情報/サービスTに関するクエリ、上記情報/サービスTの利用可能性の変更、上記情報/サービスTを提供する上記ノードの機能の変更、および、定期的な間隔プッシュ要件に応じて行われ、
上記送信された情報を受信するノードは、情報/サービスおよび対応するプロバイダノードのリストを含むテーブルを自動更新し、各エントリは、上記対応するプロバイダノードに関連付けられた機能パラメータおよび評価係数を含むコンピュータ可読格納媒体。
[項目50]
上記ネットワーク上の他のノードに関するルーティングテーブルの確率尺度またはノード需要尺度、上記ホッピングカウントに基づく上記情報の新しさ、および、上記転送フラグの少なくとも1つに一部基づいて上記ネットワーク上の上記他のノードに上記情報を選択的に転送する命令をさらに備える項目49に記載のコンピュータ可読格納媒体。
[項目51]
選択的な転送は、さらに、情報/サービスおよび対応するプロバイダノードのリストと、さらに、上記情報/サービスTに興味のあるノードのリストとを含む上記テーブルの情報に一部基づいて行われる項目50に記載のコンピュータ可読格納媒体。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11A
図11B
図12