(58)【調査した分野】(Int.Cl.,DB名)
前記要求される情報が存在しない場合、前記ノードを所有する関係者のIDを含む前記ノードの識別情報を含めるように前記情報要求パケットのヘッダ情報を更新すること、および
前記情報要求を、前記情報要求パケットを送信した前記隣接ノード以外の他の少なくとも1つのノードに転送することをさらに含む、請求項1に記載の方法。
パスに関して受信された各情報要求パケットのヘッダを調べて、前記情報要求パケットを送信した前記隣接ノード以外の第2の隣接ノードが前記パスに存在するかどうかを判定すること、および
前記第2の隣接ノードが前記パスに存在する場合、前記情報要求パケットを無視することをさらに含む、請求項1または2に記載の方法。
前記第1のパス、および前記少なくとも1つの第2のパスは、最短のパスが前記第1のパスとして選択され、次に短いパスが前記第2のパスとして選択されるように、少なくとも前記パスの長さに基づいて選択される、請求項9に記載の方法。
要求される情報を包含するm個のパケットを送信するのに不十分な数のパスしか存在しない場合、前記ノードから前記要求側ノードに、前記要求される情報を送信することができないことに関して通知を送信することをさらに含む、請求項9に記載の方法。
前記第1のパス、および前記少なくとも1つの第2のパスは、最短のパスが前記第1のパスとして選択され、次に短いパスが前記第2のパスとして選択されるように、少なくとも前記パスの長さに基づいて選択される、請求項12に記載の方法。
前記要求側ノードによる、前記連盟型連合ネットワークに関するネットワーク横断時間の2倍と等しい期間にわたって前記情報要求パケットに応答して送信された確認応答を収集すること、
前記要求側ノードによる、前記確認応答を送信したノードからのレディ・パケットを受信した後、前記要求側ノードに隣接する任意のノードに停止パケットを送信すること、
前記少なくとも1つの隣接ノードによる、前記情報要求パケットに関する停止パケットを受信すること、
前記隣接ノードによる、前記停止パケットを受信したことに応答して、前記情報要求パケットを前記送信することを停止すること、および
前記送信することを停止した前記隣接ノードにより、前記停止パケットを、前記停止パケットを送信した隣接ノード以外の各隣接ノードに転送することをさらに含む、請求項15に記載の方法。
パスに関して受信された各情報要求パケットのヘッダを調べて、前記受信側ノード、または前記要求側ノードの前記隣接ノードが前記パスに存在するかどうか、あるいは前記情報要求パケットを送信した前記隣接ノード以外の第2の隣接ノードが前記パスに存在するかどうかを判定すること、および
前記判定が肯定的である場合、前記情報要求パケットを無視することをさらに含む、請
求項15または16に記載の方法。
前記第1のパス、および前記少なくとも1つの第2のパスは、最短のパスが前記第1のパスとして選択され、次に短いパスが前記第2のパスとして選択されるように、少なくとも前記パスの長さに基づいて選択される、請求項18に記載の方法。
【発明を実施するための形態】
【0014】
本発明の例示的な限定的でない実施形態が、後段で詳細に説明される。特定の構成が、明確な理解をもたらすように説明されるが、開示される構成は、単に例示のために与えられるに過ぎないことを理解されたい。本発明の趣旨および範囲を逸脱することなく、他の構成が使用されてもよいことが、当業者には認識されよう。
【0015】
図1は、複数の関係者がネットワークの形成に参加し、任意の一時点でネットワーク内に存在する様々な数のノードを所有する連盟型連合ネットワーク(または連盟型コンピュータ・ネットワーク)の例を示す。連盟型連合ネットワークは、存在するノードの数、およびそれらのノード間の相互接続の点で様々な形態をとることが可能であり、このため、
図1は、本発明による少なくとも1つの実施形態を説明するそのようなネットワークの例として使用されている。例示されるネットワークは、5(五)つの関係者(または所有者)、すなわち、A、B、C、D、およびEを含む。連盟型連合ネットワークにおけるノードは、ノードが情報交換のために協働する構造化されていないマルチホップ・オーバーレイ・ネットワークを形成する。各ノードは、データが、例えば、リレーショナル・データとして記憶され得る、少なくとも1つのストレージ・システム(例えば、コンピュータ、サーバ、ネットワーク・エリア・ストレージなど)上に記憶されたデータに対する接続をもたらす。少なくとも1つの実施形態において、そのデータのロケーションは、その他のノードには知られていない。
【0016】
少なくとも1つの実施形態において、各関係者は、いずれのデータが他のいずれの関係者と共有され得るかについての個別のペアに関するポリシーを有する。このことの例が、関係者Aと共有される関係者Bのデータが、ポリシーによって明示的に許されるのでない限り、関係者Cに可視であってはならないことである。そのような実施形態において、各関係者は、連盟型連合ネットワークに関するあらかじめ合意された規則に従い、メッセージを意図的に傍受することはしないが、その関係者が所有するノードを通過する情報は読み取るので、誠実ではあるが、好奇心が強い。各ノードは、例えば、互いに接続されたノードの間のネットワーク通信、および本開示で説明される例示的な方法を実行するソフトウェアを実行しているプロセッサを使用して連盟型連合ネットワークのために確立されたポリシーに従って動作する。
【0017】
図2に示される少なくとも1つの実施形態において、互いに直接に隣接ノードではない2つのノード間の情報通信のプライバシを、例えば、
図1に例示されるとおり、それらのノード間で利用可能な複数の通信パスが存在する場合に、保つための方法が提供される。ノード(または要求側ノード)が、連盟型連合ネットワークに情報を求めるクエリ(または要求)を送信することによって、連盟型連合ネットワーク内に存在する他のノードに記憶されている可能性がある情報を要求する(305)。例えば、
図3に示されるとおり、ノード410が、情報を要求して、隣接ノード412、414、416のそれぞれに情報要求パケットを送信する。ノード410の代わりに、ノード410以外の例示される連盟型連合ネットワーク内の別のノードが要求側ノードとなることを妨げる制限は、全く存在しない。
【0018】
要求側ノードの少なくとも1つの隣接ノードが、その情報要求パケットを受信する(310)。
図4に示されるとおり、これらの中間ノードのそれぞれが、そのクエリ・パケットを、そのノードが受信したクエリの出所であるノード以外の隣接ノード(または受信側ノード)422、424、426、428に再ブロードキャストする。少なくとも1つのオプションの実施形態において、各ノードは、情報要求を受信したノードについての識別情報を、各クエリ・パケットのヘッダに追加する(315)。少なくとも1つのさらなる実施形態において、この識別情報は、受信側ノードを所有する関係者のIDと、情報要求を送信した少なくとも1つの隣接ノードのIDのうちの少なくともいずれかを含み、このIDは、さらなる実施形態において、情報要求パケットが要求側ノードからたどったパスに関するルーティング情報をもたらす。この再ブロードキャストは、受信側ノードが、自らが要求される情報を有する、または自らが2つのノードに接続されていない(このことの例が、
図4で関係者Cによって所有されるノード448)と判定するのでない限り、ネットワークにわたって続けられる。
【0019】
受信側ノードは、受信側ノードにおいてその情報の検索を行って、要求される情報がそのノードに存在するかどうかを判定する(325)。少なくとも1つの実施形態において、この検索は、受信側ノードと通信状態にあるストレージ・システム上に記憶されたリレーショナル・データベースの検索である。
【0020】
図2に示されるとおり、少なくとも1つの実施形態において、要求される情報が存在する場合(330)、受信側ノードは、要求される情報を要求側ノードに提供する(335〜350)。少なくとも1つの実施形態において、要求される情報がないか調べることは、固有の情報要求ごとに1回、実行され、ノードは、将来、そのパケットが受信されるたびに、そのパケットを、調べることを実行することなしに転送する(停止パケットが受信されているのでない限り)。受信側ノードは、情報要求パケットの中に存在するヘッダ情報を使用して確認応答を要求側ノードに送信して、確認応答を、要求側ノードに返すようにルーティングする(335)。受信側ノードは、要求される情報を、mが、要求される情報を再構築するのに受信される必要があるパケットの最小数であるk以上である、m個のパケットに線形ネットワーク・コーディングする(340)。少なくとも1つの実施形態において、受信側ノードは、その情報を、線形ネットワーク・コーディングを介してm個の符号化されたパケットを生成するのに使用されるk個の部分に分割する。受信側ノードは、受信側ノードおよび要求側ノードに対するいずれの第三者も、その第三者によって制御されるノードを、異なるk−1個を超えるパケットが通過するようにさせることがないように、受信側ノードと要求側ノードとの間の複数のパスを選択する(345)。受信側ノードは、m個のパケットを、それらの選択されたパスに分散させて送信する(350)。少なくとも1つの実施形態において、選択されるパスの数は、n以下であり、nは、少なくとも1つの実施形態において、受信側ノードが、受信側ノードのデータで応答するのに知る必要があるパスの最小数である。少なくとも1つの実施形態において、そのm個のパスは、それらのパスのうちのいくつかが他の少なくとも1つの選択されたパスと完全に重なり合って、または部分的に重なり合って選択される。少なくとも1つの実施形態においてk変数、m変数、およびn変数は、連盟型連合ネットワークに関して事前設定される(または所定である)。代替の実施形態において、少なくとも1つの変数は、受信側ノードによって送信される確認応答の内容に基づいて、受信側ノードと要求側ノードとの間で場当たり的に設定される。例が、受信側ノードが、その変数の値を確認応答の中に含めることである。さらなる代替の実施形態において、少なくとも1つの変数は、連盟型連合ネットワークの確立、または既存のポリシーの一環として、2つの関係者間の通信に関して所定である。
【0021】
少なくとも1つの実施形態において、要求される情報が存在しない場合、受信側ノードは、その情報要求パケットを、存在する場合、少なくとも1つの隣接ノードに転送する。さらなる実施形態において、要求される情報がそのノードに存在しない場合、そのノードは、そのノードを所有する関係者のIDを含むそのノードの識別情報と、そのノードに情報要求パケットを送信した少なくとも1つの隣接ノードの識別情報の少なくともいずれかを含めるように情報要求パケットのヘッダ情報を更新する。そのノードは、情報要求パケットを、少なくとも2つの隣接ノードが存在するものと想定して転送されている情報要求パケットを送信した隣接ノード以外の他の少なくとも1つのノードに転送する。
【0022】
例示の目的で、
図5を使用して、ノード442は、要求側ノード410によって送信された情報要求を満足させる情報を有する受信側ノードである。ノード442は、関係者Cによって所有される一方で、ノード410は、関係者Aによって所有される。
図5に点線(C−A−E−C−E−A)、短い破線(C−D−A−C−A)、および長い破線(C−B−B−A−C−A)によって表されるとおり、この2つのノードの間に少なくとも3つのパスが存在する。この例示の場合、kは2であり、mは3であり、nは3である。この3つのパスは、少なくとも1つの実施形態において、受信側ノードによって発見されるパスの最小数である、n要件を満足させる。各パケットは、異なるパスに沿って送信され、関係者Bは、長い破線パス上にBが所有するノードからの1つだけのパケットを見ることになり、関係者Dは、短い破線パス上にDが所有するノードからの1つだけのパケットを見ることになり、関係者Eは、点線パス上にEが所有するノードからの1つだけのパケットを見ることになる。このため、連盟型連合ネットワーク内の他の任意の1つの第三者によってせいぜいk−1(すなわち、2−1=1)個のパケットしか見られないという要件が、満足させられる。少なくとも2つのパケットが、ノード442とノード410との間で連盟型連合ネットワークを通過するものと想定すると、ノード410は、それらのパケットを分解して、要求される情報を獲得することができる。
【0023】
図6に示されるさらなる実施形態において、要求側ノード410が、情報要求に応答して送信された確認応答を収集する(または受信する)(610)。少なくとも1つの実施形態において、要求側ノード410は、連盟型連合ネットワークに関するネットワーク横断時間の2倍と等しい期間にわたって情報要求に応答して送信された確認応答を収集し、確認応答が全く受信されなかった場合、要求側ノード410は、要求される情報が連盟型連合ネットワーク内で入手可能でないと判定する。確認応答を送信した任意の1つまたは複数のノードからレディ・パケットを受信した後、要求側ノード410は、要求側ノード410に隣接する任意のノード412、414、416に停止パケットを送信する(615)。その少なくとも1つの隣接ノード(例えば、ノード412)が、情報要求に関する停止パケットを受信する(620)。その少なくとも1つの隣接ノードは、停止パケットを受信したことに応答して、元の情報要求を送信することを停止する(625)。その少なくとも1つの隣接ノードは、停止要求を送信した隣接ノード以外の任意の隣接ノードに停止パケットを転送する(630)(例えば、ノード412からノード422に、またはノード416からノード426、428に)。
【0024】
さらなる実施形態において、各ノードは、そのノードが受信した情報要求パケットのパスのすべてをメモリの中に記憶する。ノードは、要求側ノードから現在のノードまで情報要求が通過したパスに関して、受信された各情報要求パケットのヘッダを調べる。少なくとも1つの実施形態において、そのパスが現在のノードを包含する場合、ループが存在し、現在のノードは、その情報要求パケットを無視する。少なくとも1つの実施形態において、そのパスが、その情報要求パケットを現在のノードに転送した隣接ノード以外の第2の隣接ノードを包含する場合、そのパスは、役立たないパスであり、現在のノードは、その情報要求パケットを無視する。さらなる実施形態において、前述の2つの実施形態の条件のいずれかが満たされた場合、現在のノードは、その情報要求パケットを無視する。その情報要求パケットが無視されないとき、現在のノードは、このパスをストレージに追加し、その情報要求パケットを、その情報要求パケットがヘッダの中で識別していない隣接ノードに転送する。
【0025】
さらなる実施形態において、受信側ノードは、受信側ノードが受信した情報要求パケットのすべてのパスをメモリの中に記憶する。受信側ノードが、
図7に示される少なくとも1つの実施形態において、その記憶されたパス情報を使用してパスを選択する。受信側ノードが、連盟型連合ネットワーク内に存在する各第三者に関してカウンタをk−1に設定する(710)。受信側ノードが、情報要求に関する記憶されたパスに少なくとも部分的に基づいて、受信側ノードと要求側ノードとの間の第1のパスを選択する(715)。受信側ノードが、第1のパス上に存在する各第三者に関してカウンタを、第1のパスを介して送信されるべきパケットの数だけ減らす(720)。受信側ノードが、その情報要求に関して記憶されているパスに少なくとも部分的に基づいて、受信側ノードと要求側ノードとの間の少なくとも第2のパスを選択する(725)。受信側ノードは、その少なくとも1つの第2のパス上に存在する各第三者に関してカウンタを、その少なくとも1つの第2のパスを介して送信されるべきパケットの数だけ減らす(730)。少なくとも1つの実施形態において選択されるパスの数は、nである一方で、別の実施形態において、選択されるパスの数は、n未満である。さらなる実施形態において、それらのパスは、最短のパスが第1のパスとして選択され、次に短いパスが第2のパスとして選択されるように、少なくともパスの長さに基づいて選択される。この段落における実施形態のさらなる実施形態において、第三者カウンタが0を下回ると、受信側ノードは、最後に選択されたパスに取って代わる異なるパスを選択する一方で、別の実施形態では、受信側ノードは、最後に選択されたパスだけでないパスを置き換える。代替の実施形態において、受信側ノードは、再帰的プロセスと連携して各第三者に関するカウンタを使用して、要求側ノードに到達するようにm個のパケットのそれぞれを送信するパスを選択する。
【0026】
代替の実施形態において、それらのパケットは、各パケットがパスに割り当てられるまで、受信側ノードによってパスに割り当てられ、またはi番目のパケットに関してパスが全く利用可能でない場合、受信側ノードは、さかのぼって、(i−1)番目のパケットに関するパス割当てを取り消す。受信側ノードは、(i−1)番目のパケットを、割り当てられたセットから割り当てられていないセットに移動し、カウンタを1だけ増やし、前の割当て中に除去されたパスを戻す。受信側ノードは、受信側ノードのパスを、次に短いパスに割り当て直し、カウンタを更新し、それに相応してパスを移動する。少なくとも1つの実施形態において、受信側ノードは、実現可能なソリューションが見出されるまで選択プロセスを繰り返す、または割り当てられたパスにおいてさらにさかのぼる。受信側ノードが、それ以上さかのぼることができない場合、またはアルゴリズムが或る所定の時間内に終わらない場合、あるいはその両方の場合、受信側ノードは、失敗を宣言し、さらなる実施形態において、受信側ノードは、要求される情報が送信されないことを要求側ノードに通知する。
【0027】
以上の説明に基づいて、少なくとも1つの実施形態において、連盟型連合ネットワーク内の個別のノードの動作は、前述した方法実施形態から抽出され得ることが当業者には理解されよう。後段の説明は、連盟型連合ネットワーク内の個々のノードの動作に関するさらなる実施形態を与える。
【0028】
図8に示されるさらなる実施形態において、この方法は、連盟型連合ネットワークにおいて情報を要求すること、および受信することに関する要求側ノードの動作を含む。要求側ノードは、情報を求める要求を、他の少なくとも2つの関係者によって所有される複数のノードを有する連盟型連合ネットワークに送信する(810)。要求側ノードが、連盟型連合ネットワークに関するネットワーク横断時間の2倍と等しい期間にわたって情報要求に応答して送信された、連盟型連合ネットワーク内の別のノードが要求される情報を有することを表す確認応答を収集する(815)。少なくとも1つの実施形態において、応答期間内に確認応答が全く受信されなかった場合、要求側ノードは、要求される情報が連盟型連合ネットワーク内で入手可能でないことを知る。
【0029】
要求側ノードが、確認応答をそれまでに送信している任意の1つまたは複数のノードからレディ・パケットを受信した後、要求側ノードに隣接する任意のノードに停止パケットを送信する(820)。代替の実施形態において、要求側ノードは、要求側ノードが、確認応答を送信したすべてのノードからレディ・パケットを受信するまで、待つ。
【0030】
要求側ノードが、要求側ノードに確認応答を送信したノードから少なくともk個の線形ネットワーク・コーディングされたパケットを受信して、連盟型連合ネットワーク内の他のいずれの関係者も、異なるk−1個を超えるパケットを受信することがないようにする(825)。要求側ノードが、その少なくともk個の線形ネットワーク・コーディングされたパケットから情報を再構築する(830)。
【0031】
図9は、要求側ノード以外の連盟型連合ネットワーク内のノードの動作の例示的な方法を示す。そのノードが、連盟型連合ネットワーク内の少なくとも1つの隣接ノードから少なくとも1つの情報要求を受信する(910)。
図4におけるこのことの例が、ノード424がノード414から情報要求パケットを受信することである。そのノードが、そのノードにおいてその情報の検索を行って、要求される情報がそのノードに存在するかどうかを判定する(915)。少なくとも1つの実施形態において、この検索は、受信側ノードと通信状態にあるストレージ・システム上に記憶されたリレーショナル・データベースの検索である。
【0032】
図9に示されるとおり、少なくとも1つの実施形態において、要求される情報が存在する場合(920)、(受信側)ノードが、要求される情報を要求側ノードに提供する(925〜940)。少なくとも1つの実施形態において、要求される情報がないか調べることは、固有の情報要求ごとに1回、実行され、ノードは、将来、そのパケットが受信されるたびに、そのパケットを、調べることを実行することなしに転送する(停止パケットが受信されているのでない限り)。そのノードが、情報要求パケットの中に存在するヘッダ情報を使用して、要求側ノードに確認応答を送信して、その確認応答を要求側ノードに返すようにルーティングする(925)。そのノードが、要求される情報を、mが、要求される情報を再構築するのに受信される必要があるパケットの最小数であるk以上である、m個のパケットに線形ネットワーク・コーディングする(930)。少なくとも1つの実施形態において、そのノードが、その情報を、線形ネットワーク・コーディングを介してm個の符号化されたパケットを生成するのに使用されるk個の部分に分割する。そのノードが、そのノードおよび要求側ノードに対するいずれの第三者も、その第三者によって制御される任意の1つまたは複数のノードを、異なるk−1個を超えるパケットが通過するようにさせることがないように、そのノードと要求側ノードとの間の複数のパスを選択する(935)。そのノードが、m個のパケットを、それらの選択されたパスに分散させて送信する(940)。少なくとも1つの実施形態において、選択されるパスの数は、選択されるパスの数は、n以下であり、nは、少なくとも1つの実施形態において、受信側ノードが、受信側ノードのデータで応答できるには、知る必要があるパスの最小数である。少なくとも1つの実施形態において、そのm個のパスは、それらのパスのうちのいくつかが他の少なくとも1つの選択されたパスと完全に重なり合って、または部分的に重なり合って選択される。少なくとも1つの実施形態においてk変数、m変数、およびn変数は、連盟型連合ネットワークに関して事前設定される(または所定である)。代替の実施形態において、少なくとも1つの変数は、受信側ノードによって送信される確認応答の内容に基づいて、受信側ノードと要求側ノードとの間で場当たり的に設定される。例が、受信側ノードが、その変数の値を確認応答の中に含めることである。さらなる代替の実施形態において、少なくとも1つの変数は、連盟型連合ネットワークの確立、または既存のポリシーの一環として、2つの関係者間の通信に関して所定である。
【0033】
少なくとも1つの実施形態において、要求される情報が存在しない場合、受信側ノードは、その情報要求パケットを、存在する場合、少なくとも1つの隣接ノードに転送する(945)。さらなる実施形態において、要求される情報がそのノードに存在しない場合、そのノードは、そのノードを所有する関係者のIDを含むそのノードの識別情報と、そのノードに情報要求パケットを送信した少なくとも1つの隣接ノードの識別情報の少なくともいずれかを含めるように情報要求パケットのヘッダ情報を更新する。そのノードは、情報要求パケットを、少なくとも2つの隣接ノードが存在するものと想定して転送されている情報要求パケットを送信した隣接ノード以外の他の少なくとも1つのノードに転送する。
【0034】
さらなる実施形態において、停止パケットが要求側ノードによって送信された場合、この方法は、そのノードによって実行されるべきステップをさらに含む。そのノードが、隣接ノードからその情報要求に関する停止パケットを受信する。そのノードは、その情報要求が再び受信された場合、他のノードにその情報要求パケットを送信することを停止する。そのノードは、その停止パケットを、少なくとも2つの隣接ノードが存在するものと想定して、そのノードに停止パケットを送信した隣接ノード以外の各隣接ノードに転送する。代替の実施形態において、停止パケットが2度目に受信された場合、そのノードは、その2番目の、つまり、後の停止パケットを無視する。
【0035】
さらなる実施形態において、受信側ノードが、そのノードによって受信された情報要求に関するパスの数をカウントし、このことは、例えば、受信された情報要求パケットのパスがそのノードのメモリの中に記憶されるのと実質的に同時に行われても、記憶されるのに先立って行われても、記憶された後に行われてもよい。少なくとも1つの実施形態において、パスの数がnであるとき、例えば、その情報要求パケットが再び受信された場合、そのノードは、その情報要求パケットを隣接ノードに送信することを停止し、またはカウンタがnとなった情報要求パケットを送信しない。さらなる実施形態において、ノードが要求側ノードに確認応答を送信し、そのノードによってn個のパスが収集されると、受信側ノードが、レディ通知を要求側ノードに送信する。
【0036】
受信側ノードが、要求側ノードにm個のパケットを送信するパスをどのように選択するかの例は、
図7に示され、前段で説明される。
図7に示される実施形態のさらなる実施形態において、要求される情報を包含する異なるk−1個を超えるパケットを見る第三者は存在しないが、要求される情報を送信するのに不十分な数のパスしか存在しないため、受信側ノードが要求される情報を送信することができない場合、受信側ノードが、要求側ノードに通知を送信する。
【0037】
パスを選択するための代替の方法が、
図10に示される。受信側ノードが、受信側ノードと要求側ノードとの間の連盟型連合ネットワークのためのパスを取り出し、それらのパスは、リンク状態フラッディング・メッセージから導き出された連盟型連合ネットワークのためのトポロジに基づく。少なくとも1つの実施形態において、それらのパスは、連盟型連合ネットワーク上に存在するノードによってアクセス可能である中央データベースの中に記憶され、中央データベースは、連盟型連合ネットワークのトポロジを記憶する。少なくとも1つのさらなる実施形態において、中央データベースは、連盟型連合ネットワーク内のノードのうちの1つにおいて保持される。さらなる代替の実施形態において、各ノードが、そのノードに接続されたメモリまたはストレージ・デバイス、あるいはその両方の中に記憶されたそのノード独自のパス・データベースを保持する。
【0038】
そのノードが、連盟型連合ネットワーク内に存在する他の各第三者に関してカウンタをk−1に設定する(1010)。そのノードが、情報要求に関する記憶されたパスに少なくとも部分的に基づいて、そのノードと要求側ノードとの間の第1のパスを選択する(1015)。そのノードが、第1のパス上に存在する各第三者に関してカウンタを、第1のパスを介して送信されるべきパケットの数だけ減らす(1020)。そのノードが、情報要求に関する記憶されたパスに少なくとも部分的に基づいて、そのノードと要求側ノードとの間の少なくとも1つの第2のパスを選択する(1025)。そのノードが、その少なくとも1つの第2のパス上に存在する各第三者に関してカウンタを、その少なくとも1つの第2のパスを介して送信されるべきパケットの数だけ減らす(1030)。少なくとも1つの実施形態において選択されるパスの数は、nである一方で、別の実施形態において、選択されるパスの数は、n未満である。さらなる実施形態において、それらのパスは、少なくとも初期には、最短のパスが第1のパスとして選択され、次に短いパスが第2のパスとして選択されるように、少なくともパスの長さに基づいて選択される。この段落における実施形態のさらなる実施形態において、第三者カウンタが0を下回ると、そのノードは、最後に選択されたパスに取って代わる異なるパスを選択する一方で、別の実施形態では、そのノードは、最後に選択されたパスだけでないパスを置き換える。前述の実施形態のさらなる実施形態において、利用可能なパスがもはや存在しない場合、そのノードは、要求される情報が送信されないことを要求側ノードに通知し、そのノードは、そのノードと要求側ノードとの間の利用可能なパスに変化があるまで待つ必要があり、または異なる方法が使用される必要があり、あるいはその両方である。
【0039】
前述の実施形態における受信側ノードに、受信側ノードから要求側ノードに情報パケットを送信するのに使用されるべきパスを選択させることの代替の実施形態において、中央プロセッサが、受信側ノードのためにパス、および各パスを介して送信すべきパケットの数の選択を行うのに使用される。さらなる実施形態において、中央プロセッサは、中央パス・データベースと通信状態にある。
【0040】
カウンタを使用して、第三者によって所有されるノードを通過する異なるパケットの数を制限する前述の実施形態の代替の実施形態において、第三者に関するカウンタは、第三者と、受信側ノードを所有する関係者との間で、第三者およびその関係者のそれぞれのノードを通る情報の転送に関して、第三者が、第三者のノードを通過するパケットを盗聴することを制限するポリシーが整えられている場合、第三者に関するカウンタはなくされる。
【0041】
パス選択の例が、長方形のボックスがパケットを表し、円がノードを表す
図11〜14に関連して後段の説明で与えられる。パケットがパス上のノードを通る場合、そのパケットは、そのノードを所有する関係者によって観察される。少なくとも1つの実施形態において、m個のパケットの総計の送信費用が最小限に抑えられることが可能である一方で、第三者のいずれも、k−1個を超えるパケットを観察することができないように、合計n個の発見されたパスから各パケットのためのパスが見出される。
【0042】
図11は、情報がaとbに一緒に包含される線形ネットワーク・コーディングの例示を与える。送信元ノードsが、aとbの異なるm個の独立した線形組合せを生成し、それらの組合せ(および係数)を異なるパス(すなわち、「a+b」、「a+2b」、および「a+3b」)上で送信する。宛先ノードtが、m個のコーディングされたパケットのうちのk個を収集する限り、宛先ノードkは、aおよびbを回復する(または再構築する)ことができる。m値およびk値は、少なくとも1つの実施形態において調整され得る。
【0043】
図12は、m個のパケットがどのように、例示される4つの第三者A、B、C、Dを有するm個のパスにわたって分散され得るかを示す。
【0044】
図13は、n=10(3つのパスだけしか図示されないものの)、m=6、k=3であり、4つの第三者A、B、C、Dが存在する例を示す。以下の表は、各関係者に関するカウンタを示す。初期カウンタは、kから1が引かれると、各第三者に関して2に設定される。最短のパスは、関係者AおよびBがノードを所有する中央パスであり、したがって、AのカウンタおよびBのカウンタは、そのパスをたどる2つのパケット(すなわち、パケット1および2)に関して2だけ減らされる。次に短いパスが、パケット3および4のために選択され、パケット3および4は、関係者Dによって所有されるノードを通過し、関係者Dのカウンタは、2だけ減らされる。次に短いパスが、パケット5および6のために選択され、パケット5および6は、関係者Cによって所有されるノードを通過し、関係者Cのカウンタは、2だけ減らされる。
【0045】
【表1】
kの値が4または5であった場合、最短パスに沿って送信された3つ、または4つのパケットが存在した可能性があり、残りのパケットは、関係者A、B、およびDのいずれも、それぞれ、異なる4つ、または5つのパケットを見ることを回避しながら、次に短いパスに沿って送信される。この変形形態は、同一の数のパケットがどのように、選択された経路のそれぞれを介して伝送されなくてもよいかの例である。さらなる実施形態において、パスのすべてが選択された後、各パスが、パスのセットから取り除かれて、残りのパスを介してk個のパケットが依然として送信されているかどうかが判定され、送信されていない場合、カウンタ要件を満足させながら、パスのセットを経由するパケットの数を調整する。
【0046】
図14は、n=5(3つのパスだけしか図示されないものの)、m=3、k=2であり、4つの第三者A、B、C、Dが存在する例を示す。以下の表は、各関係者に関するカウンタを示す。初期カウンタは、kから1が引かれると、各第三者に関して1に設定される。最短のパスは、関係者AおよびBがノードを所有する中央パスであり、したがって、AのカウンタおよびBのカウンタは、そのパスをたどる1つだけのパケット(すなわち、パケット1)に関して1だけ減らされる。次に短いパスが、パケット2のために選択され、パケット2は、関係者Cによって所有されるノードを通過し、関係者Cのカウンタは、1だけ減らされる。
【0047】
【表2】
関係者Dによって所有されるノードのうちの1つが、代わりに関係者Cによって所有されていたとした場合、パケット3を送信するのに利用可能なパスが存在しないことになる。代替の実施形態において、この方法は、パケット1および2をそれでも送信することになる。というのは、両方のパケットがノードtによって受信されたとすると、ノードtは、k個のパケットが受信されていることになるため、その2つのパケットから情報を再構築することができるからである。
【0048】
図15Aおよび
図15Bは、受信側ノードから要求側ノードにm個のパケットを送信するために使用すべきパスを選択するように互いに連携して機能する2つの例示的なアルゴリズムを示す。
【0049】
本発明の様々な実施形態の説明は、例示のために提示されてきたが、網羅的であることも、開示される実施形態に限定されることも意図していない。説明される実施形態の範囲および趣旨を逸脱することなく、多くの変形形態および変更形態が当業者には明白となろう。本明細書で使用される用語は、実施形態の原理、実際的な応用、または市場で見られる技術に優る技術的改良を最もよく説明するように、あるいは当業者が、本明細書で開示される実施形態を理解することを可能にするように選ばれている。
【0050】
当業者には理解されるとおり、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、完全にハードウェア実施形態の形態をとることも、本明細書で「回路」、「モジュール」、または「システム」とすべて一般的に呼ばれるソフトウェア態様(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)とハードウェア態様を組み合わせた実施形態の形態をとることも可能である。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている1つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態をとってもよい。
【0051】
1つまたは複数のコンピュータ可読媒体の任意の組合せが利用されることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であることが可能である。コンピュータ可読記憶媒体は、例えば、電子システム、電子装置、または電子デバイス、磁気システム、磁気装置、または磁気デバイス、光学システム、光学装置、または光学デバイス、電磁システム、電磁装置、または電磁デバイス、赤外線システム、赤外線装置、または赤外線デバイス、または半導体システム、半導体装置、または半導体デバイス、あるいは以上の任意の適切な組合せであり得るが、以上には限定されない。コンピュータ可読記憶媒体の1つまたは複数の具体的な例(網羅的でないリスト)には、以下、すなわち、1つまたは複数の結線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、または以上の任意の適切な組合せが含まれる。本明細書の脈絡で、コンピュータ可読記憶媒体は、命令実行システム、命令実行装置、または命令実行デバイスによって、またはそれらに関連して使用するためのプログラムを包含する、または記憶することが可能な任意の実体のある媒体であり得る。
【0052】
コンピュータ可読媒体上に具現化されたプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、RFなど、または以上の任意の適切な組合せを含むが、以上には限定されない任意の適切な媒体を使用して送信され得る。
【0053】
コンピュータ可読信号媒体には、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードが実現されている伝搬されるデータ信号が含まれる。そのような伝搬される信号は、電磁気、光、または電磁気と光の任意の適切な組合せを含む、様々な形態のいずれをとることも可能である。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、命令実行装置、または命令実行デバイスによって、またはそれらに関連して使用するためのプログラムを通信する、伝搬する、またはトランスポートすることができる任意のコンピュータ可読媒体であり得る。
【0054】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似したプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれることが可能である。このプログラム・コードは、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして実行されても、部分的には、ユーザのコンピュータ上で、部分的には、遠隔コンピュータ上で実行されても、または完全に遠隔コンピュータもしくは遠隔サーバの上で実行されてもよい。完全に遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されることが可能であり、あるいは接続は、外部のコンピュータに対して行われることが可能である(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)。
【0055】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図、あるいはその両方を参照して前段で説明される。流れ図またはブロック図、あるいはその両方の各ブロック、ならびに流れ図またはブロック図、あるいはその両方のブロックの組合せは、コンピュータ・プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに供給されて、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図、あるいはその両方のブロックまたは複数のブロックに明記される機能または動作を実施するための手段をもたらすようになることが可能である。
【0056】
また、これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスを、特定の様態で機能するように導くことができるコンピュータ可読媒体の中に記憶されていることも可能であり、したがって、そのコンピュータ可読媒体の中に記憶された命令が、流れ図またはブロック図、あるいはその両方のブロックまたは複数のブロックに明記される機能または動作を実施する命令を含む製造品をもたらす。
【0057】
また、これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、そのコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスの上で一連の動作上のステップが実行されるようにして、そのコンピュータまたは他のプログラマブル装置の上で実行される命令が、流れ図またはブロック図、あるいはその両方のブロックまたは複数のブロックに明記される機能または動作を実施するためのプロセスをもたらすようになることも可能である。
【0058】
次に
図17を参照すると、本発明の少なくとも1つの実施形態を実施するための代表的なハードウェア環境が示されている。この概略図は、本発明の少なくとも1つの実施形態による情報処理/コンピュータ・システムのハードウェア構成を示す。このシステムは、少なくとも1つのプロセッサまたは中央処理装置(CPU)10を備える。CPU10は、システム・バス12で、ランダム・アクセス・メモリ(RAM)14、読取り専用メモリ(ROM)16、および入出力(I/O)アダプタ18などの様々なデバイスと互いに接続される。入出力アドレス18は、ディスク・ユニットおよびテープ・ドライブ13などの周辺デバイス、またはシステムによって読取り可能である他のプログラマブル記憶デバイスに接続され得る。システムは、プログラマブル記憶デバイス上の本発明の命令を読み取り、それらの命令に従って、本発明の少なくとも1つの実施形態の方法を実行することができる。システムは、キーボード15、マウス17、スピーカ24、マイクロフォン22、またはタッチスクリーン・デバイス(図示せず)などの他のユーザ・インターフェース・デバイス、あるいはそのすべてをバス12に接続して、ユーザ入力を集めるユーザ・インターフェース・アダプタ19をさらに含む。さらに、通信アダプタ20が、バス12をデータ処理ネットワーク25に接続し、ディスプレイ・アダプタ21が、バス12を、例えば、モニタ、プリンタ、またはトランスミッタなどの出力デバイスとして実現され得るディスプレイ・デバイス23に接続する。
【0059】
連盟型連合ネットワークにおいて堅牢なプライバシ保護データ配信をもたらすためのプロセス・ソフトウェアは、CD、DVDなどの記憶媒体をロードすることを介してクライアント・コンピュータ、サーバ・コンピュータ、およびプロキシ・コンピュータに直接に手作業でロードすることによって展開され得るものと理解されるが、プロセス・ソフトウェアは、プロセス・ソフトウェアを中央サーバまたはグループの中央サーバに送信することによってコンピュータ・システムに自動的に、または半自動的に展開されることも可能である。その場合、プロセス・ソフトウェアは、プロセス・ソフトウェアを実行するクライアント・コンピュータにダウンロードされる。代替として、プロセス・ソフトウェアは、電子メールを介してクライアント・システムに直接に送信される。その場合、プロセス・ソフトウェアは、プロセス・ソフトウェアを切り離してディレクトリに入れるプログラムを実行する電子メール上のボタンによって切り離されてディレクトリに入れられる、またはディレクトリにロードされる。別の代替は、プロセス・ソフトウェアを、クライアント・コンピュータ・ハードドライブ上のディレクトリに直接に送ることである。プロキシ・サーバが存在する場合、プロセスは、プロキシ・サーバ・コードを選択し、いずれのコンピュータ上にプロキシ・サーバのコードを置くかを決定し、プロキシ・サーバ・コードを送信し、その後、そのプロキシ・コンピュータにプロキシ・サーバ・コードをインストールする。プロセス・ソフトウェアは、プロキシ・サーバに送信され、次に、プロキシ・サーバ上に記憶される。
【0060】
図18は、プロセス・ソフトウェアの展開のための方法(100)を示す。最初にすることは、プロセス・ソフトウェアが実行された際に、サーバまたは複数のサーバの上に常駐するプログラムが存在するかどうかを判定することである(101)。存在する場合、それらの実行ファイルを包含するサーバが識別される(209)。そのサーバまたはそれらのサーバのためのプロセス・ソフトウェアは、FTPもしくは何らかの他のプロトコルを介してサーバのストレージに直接に、または共有されるファイル・システムの使用を介してコピーすることによって転送される(210)。次に、プロセス・ソフトウェアが、サーバにインストールされる(211)。
【0061】
次に、プロセス・ソフトウェアが、ユーザに、サーバまたは複数のサーバの上のプロセス・ソフトウェアにアクセスさせることによってプロセス・ソフトウェアが展開されるべきかどうかの判定が行われる(102)。ユーザが、サーバ上のプロセス・ソフトウェアにアクセスすることになる場合、プロセス・ソフトウェアを記憶するサーバ・アドレスが識別される(103)。
【0062】
プロキシ・サーバが構築されて(200)、プロセス・ソフトウェアを記憶すべきかどうかの判定が行われる。プロキシ・サーバは、ウェブブラウザなどのクライアント・アプリケーションと本物のサーバとの間に配置されるサーバである。プロキシ・サーバは、本物のサーバに対するすべての要求をインターセプトして、プロキシ・サーバ自らがそれらの要求を満たすことができるかどうかを調べる。要求を満たすことができない場合、プロキシ・サーバは、その要求を本物のサーバに転送する。プロキシ・サーバの2つの主要な利点は、パフォーマンスを向上させること、および要求を選別することである。プロキシ・サーバが要求される場合、プロキシ・サーバがインストールされる(201)。プロセス・ソフトウェアは、FTPなどのプロトコルを介してサーバに送信される、またはファイル共有を介してソース・ファイルからサーバ・ファイルに直接にコピーされる(202)。別の実施形態は、プロセス・ソフトウェアを包含していたサーバにトランザクションを送信し、サーバにそのトランザクションを処理させ、次に、プロセス・ソフトウェアを受信して、サーバのファイル・システムにコピーすることである。プロセス・ソフトウェアがサーバに記憶されると、ユーザが、ユーザのクライアント・コンピュータを介して、サーバ上のプロセス・ソフトウェアにアクセスして、ユーザのクライアント・コンピュータ・ファイル・システムにコピーする(203)。別の実施形態は、サーバに、プロセス・ソフトウェアを各クライアントに自動的にコピーさせ、次に、各クライアント・コンピュータにおいてプロセス・ソフトウェアのためのインストール・プログラムを実行することである。ユーザが、ユーザのクライアント・コンピュータにプロセス・ソフトウェアをインストールするプログラムを実行し(212)、その後、プロセスを終了する(108)。
【0063】
電子メールを介してユーザにプロセス・ソフトウェアを送信することによってプロセス・ソフトウェアが展開されるべきかどうかの判定が行われる(104)。プロセス・ソフトウェアが展開されるユーザのセットが、ユーザ・クライアント・コンピュータのアドレスと一緒に識別される(105)。プロセス・ソフトウェアが、電子メールを介してユーザのクライアント・コンピュータのそれぞれに送信される。次に、ユーザが、電子メールを受信し(205)、次に、電子メールからプロセス・ソフトウェアを切り離して、ユーザのクライアント・コンピュータのディレクトリに入れる(206)。ユーザが、ユーザのクライアント・コンピュータにプロセス・ソフトウェアをインストールし(212)、その後、プロセスを終了する(108)。
【0064】
最後に、プロセス・ソフトウェアがユーザのクライアント・コンピュータ上のユーザ・ディレクトリに直接に送信されるかどうかの判定が行われる(106)。直接に送信される場合、ユーザ・ディレクトリが識別される(107)。プロセス・ソフトウェアは、ユーザのクライアント・コンピュータ・ディレクトリに直接に転送される(207)。このことは、ファイル・システム・ディレクトリを共有し、次に、送信者のファイル・システムから受信側ユーザのファイル・システムにコピーすること、または代替として、ファイル転送プロトコル(FTP)などの転送プロトコルを使用することなどの、ただし、これらには限定されない、いくつかの様態で行われ得る。
【0065】
ユーザが、プロセス・ソフトウェアをインストールに備えてクライアント・ファイル・システム上のディレクトリにアクセスする(208)。ユーザが、ユーザのクライアント・コンピュータにプロセス・ソフトウェアをインストールするプログラムを実行し(212)、その後、プロセスを終了する(108)。
【0066】
連盟型連合ネットワークにおいて堅牢なプライバシ保護データ配信をもたらすための方法を有するプロセス・ソフトウェアは、アプリケーション、オペレーティング・システム、およびネットワーク・オペレーティング・システム・ソフトウェアと共存するようにプロセス・ソフトウェアを提供し、次に、プロセス・ソフトウェアを、プロセス・ソフトウェアが機能する環境におけるクライアントおよびサーバにインストールすることによって、クライアント環境、サーバ環境、およびネットワーク環境に組み込まれる。
【0067】
最初のステップは、プロセス・ソフトウェアによって要求される、またはプロセス・ソフトウェアと連携して機能する、プロセス・ソフトウェアが展開されるネットワーク・オペレーティング・システムを含むクライアントおよびサーバの上のソフトウェアを識別することである。このソフトウェアには、ネットワーキング・フィーチャを追加することによって基本オペレーティング・システムを強化するソフトウェアであるネットワーク・オペレーティング・システムが含まれる。
【0068】
次に、ソフトウェア・アプリケーションおよびバージョン番号が識別され、プロセス・ソフトウェアと一緒に機能することが試験されているソフトウェア・アプリケーションおよびバージョン番号のリストと比較される。欠落している、または正しいバージョンと合致しないソフトウェア・アプリケーションは、正しいバージョン番号でアップグレードされる。プロセス・ソフトウェアからソフトウェア・アプリケーションにパラメータを送るプログラム命令が調べられて、それらのパラメータ・リストが、プロセス・ソフトウェアによって要求されるパラメータ・リストと合致することが確実にされる。逆に、ソフトウェア・アプリケーションによってプロセス・ソフトウェアに送られたパラメータが調べられて、それらのパラメータが、プロセス・ソフトウェアによって要求されるパラメータと合致することが確実にされる。ネットワーク・オペレーティング・システムを含むクライアント・オペレーティング・システムおよびサーバ・オペレーティング・システムが識別されて、プロセス・ソフトウェアと一緒に機能することが試験されているオペレーティング・システム、バージョン番号、およびネットワーク・ソフトウェアのリストと比較される。試験されたオペレーティング・システムおよびバージョン番号のリストと合致しないオペレーティング・システム、バージョン番号、およびネットワーク・ソフトウェアは、要求されるレベルまでクライアントおよびサーバの上でアップグレードされる。
【0069】
プロセス・ソフトウェアが展開されるべき場合に、ソフトウェアが、プロセス・ソフトウェアと一緒に機能することが試験されている正しいバージョン・レベルにあることを確実にした後、組込みは、クライアントおよびサーバにプロセス・ソフトウェアをインストールすることによって完了される。
【0070】
図19は、プロセス・ソフトウェアを組み込むための方法を示す(220)。最初にすることは、サーバまたは複数のサーバの上で実行されるプロセス・ソフトウェア・プログラムが存在するかどうかを判定することである(221)。存在しない場合、組込みは、227に進む。存在する場合、サーバ・アドレスが識別される(222)。それらのサーバが、オペレーティング・システム(OS)、アプリケーション、およびネットワーク・オペレーティング・システム(NOS)を、プロセス・ソフトウェアと一緒に機能することが試験されているそれらのソフトウェアのバージョン番号と一緒に含むソフトウェアを包含するかどうかを確かめるように、それらのサーバが調べられる(223)。また、それらのサーバが調べられて、プロセス・ソフトウェアによって要求されるソフトウェアで欠けているものがないかどうかも判定される(223)。
【0071】
バージョン番号が、プロセス・ソフトウェアと一緒に試験されているOS、アプリケーション、およびNOSのバージョン番号と合致するかどうかの判定が行われる(224)。バージョンのすべてが合致し、要求されるソフトウェアで欠けているものがない場合、組込みは、227に進む。
【0072】
バージョン番号のうちの1つまたは複数が合致しない場合、合致しないバージョンは、サーバまたは複数のサーバ上で正しいバージョンで更新される(225)。さらに、要求されるソフトウェアで欠けているものがある場合、そのソフトウェアが、サーバまたは複数のサーバ上で更新される(225)。サーバ組込みは、プロセス・ソフトウェアをインストールすることで完了する(226)。
【0073】
221、224、または226に続いて、クライアント上で実行されるプロセス・ソフトウェアのプログラムが存在するかどうかが判定される(227)。クライアント上で実行されるプロセス・ソフトウェア・プログラムが存在しない場合、組込みは、230に進み、終了する。存在する場合、クライアント・アドレスが識別される(228)。
【0074】
それらのクライアントが、オペレーティング・システム(OS)、アプリケーション、およびネットワーク・オペレーティング・システム(NOS)を、プロセス・ソフトウェアと一緒に試験されているそれらのソフトウェアのバージョン番号と一緒に含むソフトウェアを包含するかどうかを確かめるように、クライアントが調べられる(229)。また、それらのクライアントが調べられて、プロセス・ソフトウェアによって要求されるソフトウェアで欠けているものがないかどうかも判定される(229)。
【0075】
バージョン番号が、プロセス・ソフトウェアと一緒に試験されているOS、アプリケーション、およびNOSのバージョン番号と合致するかどうかの判定が行われる(231)。バージョンのすべてが合致し、要求されるソフトウェアで欠けているものがない場合、組込みは、230に進み、終了する。
【0076】
バージョン番号のうちの1つまたは複数が合致しない場合、合致しないバージョンは、クライアント上で正しいバージョンで更新される(232)。さらに、要求されるソフトウェアで欠けているものがある場合、そのソフトウェアが、クライアント上で更新される(232)。クライアント組込みは、クライアントにプロセス・ソフトウェアをインストールすることで完了する(233)。組込みは、230に進み、終了する。
【0077】
連盟型連合ネットワークにおいて堅牢なプライバシ保護データ配信をもたらすためのプロセス・ソフトウェアは、共有され、複数の顧客に柔軟性のある、自動化された様態で同時にサービスを提供する。プロセス・ソフトウェアは、標準化され、ほとんどカスタマイズを要求せず、スケーラブルであり、利用時払い(pay-as-you-go)モデルでオンデマンドで能力を提供する。
【0078】
プロセス・ソフトウェアは、1つまたは複数のサーバからアクセス可能な共有されるファイル・システム上に記憶され得る。プロセス・ソフトウェアは、アクセスされたサーバ上のCPUユニットを使用するデータおよびサーバ処理要求を包含するトランザクションを介して実行される。CPUユニットは、サーバの中央プロセッサ上の分数、秒数、時間数などの時間の単位数である。さらに、アクセスされたサーバは、CPUユニットを要求する要求を他のサーバに行うことが可能である。CPUユニットは、使用量の1つの測定を表す例に過ぎない。使用量の他の測定には、ネットワーク帯域幅、メモリ使用量、パケット転送、完了したトランザクションなどが含まれるが、以上には限定されない。
【0079】
複数の顧客が、同一のプロセス・ソフトウェア・アプリケーションを使用するが、顧客のトランザクションは、一意の顧客、およびその顧客のためのサービスのタイプを識別する、トランザクションに含められたパラメータで区別される。各顧客に関するサービスのために使用されたCPUユニットおよび使用量の他の測定が、記録される。1つのサーバに対するトランザクションの数が、そのサーバのパフォーマンスに影響を及ぼしはじめる数に達すると、容量を増やすように、かつ作業負荷を分担するように他のサーバにアクセスが行われる。同様に、ネットワーク帯域幅、メモリ使用量、ストレージ使用量などの使用の他の測定が、パフォーマンスに影響を及ぼすように容量に近づくと、作業負荷を分担するようにさらなるネットワーク帯域幅、メモリ使用量、およびストレージなどが追加される。
【0080】
各サービスおよび各顧客に関して使用された使用量の測定は、プロセス・ソフトウェアの共有された実行を提供するサーバのネットワーク内のどこであれ、処理された各サービスに関する顧客ごとの使用量の測定を合計する収集サーバに送信される。使用単位の合計された測定に、単位費用が周期的に掛けられて、結果の合計プロセス・ソフトウェア・アプリケーション・サービス費用が、顧客に送信され、またはサービス・プロバイダに後に支払い額の送金をする顧客によってアクセスされるウェブサイト上で示され、あるいはその両方が行われる。
【0081】
別の実施形態において、サービス・プロバイダが、銀行または金融機関における顧客口座から直接に支払いを要求する。
【0082】
別の実施形態において、サービス・プロバイダが、プロセス・ソフトウェア・アプリケーションを使用する顧客の顧客でもある場合、サービス・プロバイダに対して負う支払い額は、サービス・プロバイダが負う支払い額と照合されて、支払い額の振込みが最小限に抑えられる。
【0083】
図20は、オンデマンド・プロセスのための方法を示す(240)。一意の顧客識別子、要求されるサービス・タイプ、ならびにサービスのタイプをさらに指定するサービス・パラメータを包含するトランザクションが、作成される(241)。次に、そのトランザクションが、メイン・サーバに送信される(242)。オンデマンド環境において、メイン・サーバは、最初、唯一のサーバであることが可能であり、その後、容量が消費されるにつれ、他のサーバがオンデマンド環境に追加される。
【0084】
オンデマンド環境におけるサーバ中央処理装置(CPU)容量のクエリが行われる(243)。トランザクションのCPU要件が推定され、次に、オンデマンド環境におけるサーバの利用可能なCPU容量が、トランザクションCPU要件と比較されて、いずれかのサーバにおいてトランザクションを処理するのに十分なCPUが利用可能であるかどうかが調べられる(244)。十分なサーバCPU利用可能容量が存在しない場合、さらなるサーバCPU容量がトランザクションを処理するように割り振られる(248)。既に十分な利用可能なCPU容量が存在していた場合、トランザクションは、選択されたサーバに送信される(245)。
【0085】
トランザクションを実行する前に、残りのオンデマンド環境が調べられて、その環境が、トランザクションを処理するための十分な利用可能な容量を有するかどうかの判定が行われる。この環境容量は、ネットワーク帯域幅、プロセッサ・メモリ、ストレージなどの、ただし、以上には限定されないものから成る(246)。十分な利用可能な容量が存在しない場合、容量が、オンデマンド環境に追加される(247)。次に、トランザクションを処理するのに要求されるソフトウェアにアクセスが行われ、メモリにロードされ、その後、トランザクションが実行される(249)。
【0086】
使用量測定が記録される(250)。使用量測定は、トランザクションを処理するのに使用されるオンデマンド環境における機能の部分から成る。ネットワーク帯域幅、プロセッサ・メモリ、ストレージ、およびCPUサイクルなどの、ただし、以上には限定されない機能の使用量が、記録されるものである。それらの使用量は、合計され、単位費用が掛けられ、その後、要求側顧客に対する料金として記録される(251)。
【0087】
顧客が、オンデマンド費用がウェブサイトに掲示されることを要求した場合(252)、それらの費用は、掲示される(253)。顧客が、オンデマンド費用が、電子メールを介して顧客アドレスに送信されることを要求した場合(254)、それらの費用は、送信される(255)。顧客が、オンデマンド費用が顧客口座から直接に支払われることを要求した場合、支払いは、顧客口座から直接に受け取られる(257)。最後のステップは、オンデマンド・プロセスを終了することである。
【0088】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施例のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図における各ブロックは、明記された論理機能を実施するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部分を表すことが可能である。また、一部の代替の実施例において、ブロックの中に記載される機能は、図に記載される順序を外れて実行されてもよいことにも留意されたい。関与する機能に依存して、例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、またはそれらのブロックが、ときとして、逆の順序で実行されてもよい。
【0089】
本明細書で使用される用語は、特定の実施形態を説明することだけを目的としており、本発明を限定することは意図していない。本明細書で使用される「或る」および「その」という単数形は、文脈が明らかにそうでないことを示すのでない限り、複数形も含むことを意図している。基本語(root terms)である、「含む」または「有する」、あるいはその両方は、本明細書で使用される場合、記載される特徴、完全体(integers)、ステップ、動作、要素、または構成要素、あるいはそのすべてを明示するが、他の少なくとも1つの特徴、完全体、ステップ、動作、要素、構成要素、または以上のグループ、あるいはそのすべての存在または追加を除外しないことがさらに理解されよう。
【0090】
添付の特許請求の範囲におけるすべての手段プラス機能要素(means plusfunction elements)の対応する構造、材料、動作、および均等物は、特に主張される他の主張される要素との組合せで機能を実行するための任意の構造または材料を含むことが意図される。本発明の説明は、例示および説明のために提示されているが、網羅的であることも、開示される形態における本発明に限定されることも意図していない。本発明の範囲および趣旨を逸脱することなく、多くの変形形態および変更形態が、当業者には明白となろう。実施形態は、本発明の原理、実際的な応用を最もうまく説明するため、および当業者が、企図される特定の用途に適した様々な変形とともに様々な実施形態に関して本発明を理解することを可能にするために選ばれ、説明されている。